From 416ea656b9aa6a7daa9092402134c16edfcb3946 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Fri, 8 Mar 2019 03:35:27 +0800 Subject: [PATCH 001/233] docs: correct links --- packages/docs/docs/theme/option-api.md | 2 +- packages/docs/docs/zh/theme/option-api.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/docs/docs/theme/option-api.md b/packages/docs/docs/theme/option-api.md index 57ac02cd..a4e7d044 100755 --- a/packages/docs/docs/theme/option-api.md +++ b/packages/docs/docs/theme/option-api.md @@ -4,7 +4,7 @@ metaTitle: Configuration | Theme # Theme Configuration -As with plugins, the theme configuration file `themeEntry` should export a `plain JavaScript object`(`#1`). If the plugin needs to take options, it can be a function that exports a plain object(`#2`). The function will be called with the `siteConfig.themeConfig` as the first argument, along with [ctx](./context-api.md) which provides some compile-time metadata. +As with plugins, the theme configuration file `themeEntry` should export a `plain JavaScript object`(`#1`). If the plugin needs to take options, it can be a function that exports a plain object(`#2`). The function will be called with the `siteConfig.themeConfig` as the first argument, along with [ctx](../plugin/context-api.md) which provides some compile-time metadata. ``` js // #1 diff --git a/packages/docs/docs/zh/theme/option-api.md b/packages/docs/docs/zh/theme/option-api.md index 3fb8ccd3..532da920 100755 --- a/packages/docs/docs/zh/theme/option-api.md +++ b/packages/docs/docs/zh/theme/option-api.md @@ -4,7 +4,7 @@ metaTitle: Configuration | Theme # 主题的配置 -和插件几乎一样,主题的配置文件 `themeEntry` 应该导出一个普通的 JavaScript 对象(`#1`),它也可以是一个返回对象的函数(`#2`),这个函数接受用户在 `siteConfig.themeConfig` 为第一个参数、包含编译期上下文的 [ctx](./context-api.md) 对象作为第二个参数。 +和插件几乎一样,主题的配置文件 `themeEntry` 应该导出一个普通的 JavaScript 对象(`#1`),它也可以是一个返回对象的函数(`#2`),这个函数接受用户在 `siteConfig.themeConfig` 为第一个参数、包含编译期上下文的 [ctx](../plugin/context-api.md) 对象作为第二个参数。 ``` js // #1 From a23e0afeeed6e8aa01ab9ccdfd5d41281128e921 Mon Sep 17 00:00:00 2001 From: jinjun1994 Date: Sat, 9 Mar 2019 18:44:45 +0800 Subject: [PATCH 002/233] docs: update plugin-google-analytics.md (#1416) --- .../docs/docs/zh/plugin/official/plugin-google-analytics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs/docs/zh/plugin/official/plugin-google-analytics.md b/packages/docs/docs/zh/plugin/official/plugin-google-analytics.md index 5fd6f582..24063ac5 100644 --- a/packages/docs/docs/zh/plugin/official/plugin-google-analytics.md +++ b/packages/docs/docs/zh/plugin/official/plugin-google-analytics.md @@ -36,4 +36,4 @@ module.exports = { - 类型: `string` - 默认值: `undefined` -Google Analytics ID。 +提供 Google Analytics ID 以启用集成。 From f2d5bf62d355f7fc75d0676ec36db152fb2a0b97 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sat, 9 Mar 2019 18:55:40 +0800 Subject: [PATCH 003/233] refactor($core): log once for each plugin. --- packages/@vuepress/core/lib/node/plugin-api/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/@vuepress/core/lib/node/plugin-api/index.js b/packages/@vuepress/core/lib/node/plugin-api/index.js index 5a9da13a..1606286f 100644 --- a/packages/@vuepress/core/lib/node/plugin-api/index.js +++ b/packages/@vuepress/core/lib/node/plugin-api/index.js @@ -22,6 +22,7 @@ module.exports = class PluginAPI { this.options = {} this._pluginContext = context this._pluginQueue = [] + this._loggedPlugins = [] this._initialized = false this._pluginResolver = getPluginResolver() this.initializeOptions(PLUGIN_OPTION_MAP) @@ -214,8 +215,11 @@ module.exports = class PluginAPI { beforeDevServer, afterDevServer }) { - const isInternalPlugin = pluginName.startsWith('@vuepress/internal-') - logger[isInternalPlugin ? 'debug' : 'tip'](pluginLog(pluginName, shortcut)) + if (!this._loggedPlugins.includes(pluginName)) { + const isInternalPlugin = pluginName.startsWith('@vuepress/internal-') + logger[isInternalPlugin ? 'debug' : 'tip'](pluginLog(pluginName, shortcut)) + this._loggedPlugins.push(pluginName) + } this .registerOption(PLUGIN_OPTION_MAP.READY.key, ready, pluginName) From d1ea2daf5e419ea8658c6783e5d14af407332b5b Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 10 Mar 2019 03:11:58 +0800 Subject: [PATCH 004/233] chore: add minimal dev & build script --- package.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ca677c54..88ad1a05 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,10 @@ "bootstrap": "yarn && lerna bootstrap && yarn tsc", "boot": "node scripts/bootstrap.js", "remote-version": "node scripts/remote-version.js", - "dev": "yarn tsc && yarn workspace docs dev", - "build": "yarn tsc && yarn workspace docs build", + "dev": "yarn tsc && yarn dev:docs", + "dev:docs": "yarn workspace docs dev", + "build": "yarn tsc && yarn build:docs", + "build:docs": "yarn workspace docs build", "view-info": "yarn tsc && yarn workspace docs view-info", "show-help": "yarn workspace docs show-help", "dev:blog": "yarn tsc && yarn workspace blog dev", From e5f51de925f6f2d2f0f9fc393b8859376107901a Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 10 Mar 2019 03:13:22 +0800 Subject: [PATCH 005/233] feat($cli): --no-clear-screen flag (close: #1421) --- packages/@vuepress/core/lib/node/dev/index.js | 3 ++- .../@vuepress/core/lib/node/webpack/DevLogPlugin.js | 11 ++++++++--- packages/docs/docs/api/cli.md | 5 ++++- packages/docs/docs/zh/api/cli.md | 3 +++ packages/vuepress/lib/registerCoreCommands.js | 1 + 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/@vuepress/core/lib/node/dev/index.js b/packages/@vuepress/core/lib/node/dev/index.js index 3087a520..d8d1cdbb 100644 --- a/packages/@vuepress/core/lib/node/dev/index.js +++ b/packages/@vuepress/core/lib/node/dev/index.js @@ -176,7 +176,8 @@ module.exports = class DevProcess extends EventEmitter { .use(DevLogPlugin, [{ port: this.port, displayHost: this.displayHost, - publicPath: this.context.base + publicPath: this.context.base, + clearScreen: this.context.options.clearScreen }]) config = config.toConfig() diff --git a/packages/@vuepress/core/lib/node/webpack/DevLogPlugin.js b/packages/@vuepress/core/lib/node/webpack/DevLogPlugin.js index b51927e6..fd563125 100644 --- a/packages/@vuepress/core/lib/node/webpack/DevLogPlugin.js +++ b/packages/@vuepress/core/lib/node/webpack/DevLogPlugin.js @@ -17,10 +17,13 @@ module.exports = class DevLogPlugin { apply (compiler) { let isFirst = true + const { displayHost, port, publicPath, clearScreen: shouldClearScreen = true } = this.options + compiler.hooks.done.tap('vuepress-log', stats => { - clearScreen() + if (shouldClearScreen) { + clearScreen() + } - const { displayHost, port, publicPath } = this.options const time = new Date().toTimeString().match(/^[\d:]+/)[0] const displayUrl = `http://${displayHost}:${port}${publicPath}` @@ -40,7 +43,9 @@ module.exports = class DevLogPlugin { logger.developer(`It took a total of ${chalk.cyan(`${duration}ms`)} to run the ${chalk.cyan('vuepress dev')} for the first time.`) } }) - compiler.hooks.invalid.tap('vuepress-log', clearScreen) + if (shouldClearScreen) { + compiler.hooks.invalid.tap('vuepress-log', clearScreen) + } } } diff --git a/packages/docs/docs/api/cli.md b/packages/docs/docs/api/cli.md index 8841bc2c..d9d6b13a 100644 --- a/packages/docs/docs/api/cli.md +++ b/packages/docs/docs/api/cli.md @@ -17,7 +17,7 @@ See [port](../config/README.md#port). See [temp](../config/README.md#temp). ### -c, --cache [cache] -### -no--cache [cache] +### -no--cache See [cache](../config/README.md#cache). ### --debug @@ -36,6 +36,9 @@ See [host](../config/README.md#host). ### --open Open browser when ready. +### --no-clear-screen +do not clear screen when dev server is ready. + ## eject Copy the default theme into `.vuepress/theme` for customization. diff --git a/packages/docs/docs/zh/api/cli.md b/packages/docs/docs/zh/api/cli.md index 1355aa48..f7f2436d 100644 --- a/packages/docs/docs/zh/api/cli.md +++ b/packages/docs/docs/zh/api/cli.md @@ -36,6 +36,9 @@ vuepress targetDir [options] ### --open 当服务端准备就绪时自动打开浏览器。 +### --no-clear-screen +当 dev server 就绪时不清除屏幕。 + ## eject 将默认主题复制到 `.vuepress/theme` 目录,以供自定义。 diff --git a/packages/vuepress/lib/registerCoreCommands.js b/packages/vuepress/lib/registerCoreCommands.js index 8f9c54ba..edca5b21 100644 --- a/packages/vuepress/lib/registerCoreCommands.js +++ b/packages/vuepress/lib/registerCoreCommands.js @@ -20,6 +20,7 @@ module.exports = function (cli, options) { .option('-c, --cache [cache]', 'set the directory of cache') .option('--host ', 'use specified host (default: 0.0.0.0)') .option('--no-cache', 'clean the cache before build') + .option('--no-clear-screen', 'do not clear screen when dev server is ready') .option('--debug', 'start development server in debug mode') .option('--silent', 'start development server in silent mode') .option('--open', 'open browser when ready') From 9d0151483b330f7931d46ed9ad4c501e7e47d289 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 10 Mar 2019 04:29:08 +0800 Subject: [PATCH 006/233] fix($core): cannot render another page with pageKey (close: #1173) Error: Unknown Custom Element - --- packages/@vuepress/core/lib/client/components/Content.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/client/components/Content.js b/packages/@vuepress/core/lib/client/components/Content.js index c2ed88d4..c0ffc38a 100644 --- a/packages/@vuepress/core/lib/client/components/Content.js +++ b/packages/@vuepress/core/lib/client/components/Content.js @@ -1,4 +1,5 @@ -import { isPageExists } from '../util' +import Vue from 'vue' +import { isPageExists, getPageAsyncComponent } from '../util' export default { props: { @@ -11,6 +12,7 @@ export default { render (h) { const pageKey = this.pageKey || this.$parent.$page.key if (isPageExists(pageKey)) { + Vue.component(pageKey, getPageAsyncComponent(pageKey)) return h(pageKey) } return h('') From 0306574b1f852e3284a65c62d2c85a1e0fefe97a Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 10 Mar 2019 04:41:33 +0800 Subject: [PATCH 007/233] fix($core): global components cannot be used as layouts (close: #1321) --- .../@vuepress/core/lib/client/components/GlobalLayout.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/client/components/GlobalLayout.vue b/packages/@vuepress/core/lib/client/components/GlobalLayout.vue index e137bb3c..deced74e 100644 --- a/packages/@vuepress/core/lib/client/components/GlobalLayout.vue +++ b/packages/@vuepress/core/lib/client/components/GlobalLayout.vue @@ -3,11 +3,16 @@ - - diff --git a/packages/@vuepress/plugin-i18n-ui/package.json b/packages/@vuepress/plugin-i18n-ui/package.json deleted file mode 100644 index c1d0160d..00000000 --- a/packages/@vuepress/plugin-i18n-ui/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "@vuepress/plugin-i18n-ui", - "version": "1.0.0-alpha.44", - "description": "i18n-ui plugin for vuepress", - "main": "index.js", - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/vuejs/vuepress.git", - "directory": "packages/@vuepress/plugin-i18n-ui" - }, - "keywords": [ - "documentation", - "vue", - "vuepress", - "generator" - ], - "author": "ULIVZ ", - "license": "MIT", - "bugs": { - "url": "https://github.com/vuejs/vuepress/issues" - }, - "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/plugin-i18n-ui#readme" -} diff --git a/packages/docs/docs/.vuepress/config.js b/packages/docs/docs/.vuepress/config.js index 8846bdee..37ab4d78 100755 --- a/packages/docs/docs/.vuepress/config.js +++ b/packages/docs/docs/.vuepress/config.js @@ -65,7 +65,6 @@ module.exports = ctx => ({ } }, plugins: [ - ['@vuepress/i18n-ui', !ctx.isProd], ['@vuepress/back-to-top', true], ['@vuepress/pwa', { serviceWorker: true, diff --git a/packages/docs/docs/miscellaneous/design-concepts.md b/packages/docs/docs/miscellaneous/design-concepts.md index 1dc40d85..3e2588cb 100644 --- a/packages/docs/docs/miscellaneous/design-concepts.md +++ b/packages/docs/docs/miscellaneous/design-concepts.md @@ -166,9 +166,9 @@ Since all plugins with the same name can be applied ONLY once by default, users // theme/index.js module.exports = { plugins: [ - '@vuepress/i18n-ui', - { route: '/i18n-page/' } - ] + 'vuepress-plugin-xxx', + { name: 'foo' } + ] } ``` @@ -176,13 +176,13 @@ module.exports = { // .vuepress/config.js module.exports = { plugins: [ - '@vuepress/i18n-ui', - { route: '/i18n/' } + 'vuepress-plugin-xxx', + { name: 'bar' } ] } ``` -Then the final route of i18n UI is `/i18n/`. +Then the final value of `name` option will be `bar`. ## Others diff --git a/packages/docs/docs/plugin/README.md b/packages/docs/docs/plugin/README.md index 19fd6bd3..09d6378d 100644 --- a/packages/docs/docs/plugin/README.md +++ b/packages/docs/docs/plugin/README.md @@ -4,8 +4,7 @@ Plugins usually add global-level functionality to VuePress. There is no strictly 1. Extend the page's metadata generated at compile time. e.g. [@vuepress/plugin-last-updated](./official/plugin-last-updated.md); 2. Generate extra files before or after compilation. e.g. [@vuepress/plugin-pwa](./official/plugin-pwa.md); -3. Add extra pages. e.g. [@vuepress/plugin-i18n-ui](./official/plugin-i18n-ui.md); -4. Inject global UI. e.g. [@vuepress/plugin-back-to-top](./official/plugin-back-to-top.md); -5. Exntend command of CLI,如 [vuepress-plugin-export](https://github.com/ulivz/vuepress-plugin-export)。 +3. Inject global UI. e.g. [@vuepress/plugin-back-to-top](./official/plugin-back-to-top.md); +4. Exntend command of CLI,如 [vuepress-plugin-export](https://github.com/ulivz/vuepress-plugin-export)。 ![Architecture of VuePress](/architecture.png) diff --git a/packages/docs/docs/plugin/official/plugin-i18n-ui.md b/packages/docs/docs/plugin/official/plugin-i18n-ui.md deleted file mode 100644 index b24b2140..00000000 --- a/packages/docs/docs/plugin/official/plugin-i18n-ui.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: i18n-ui -metaTitle: I18n-UI Plugin | VuePress ---- - -# [@vuepress/plugin-i18n-ui](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-i18n-ui) - -> i18n-ui plugin - -## Install - -```bash -yarn add -D @vuepress/plugin-i18n-ui@next -# OR npm install -D @vuepress/plugin-i18n-ui@next -``` - -## Usage - -```javascript -module.exports = { - plugins: ['@vuepress/i18n-ui'] -} -``` - -## Options - -### route - -- Type: `string` -- Default: `/i18n/` - -Path to the i18n ui page. diff --git a/packages/docs/docs/zh/miscellaneous/design-concepts.md b/packages/docs/docs/zh/miscellaneous/design-concepts.md index 4261f596..33cde8b8 100644 --- a/packages/docs/docs/zh/miscellaneous/design-concepts.md +++ b/packages/docs/docs/zh/miscellaneous/design-concepts.md @@ -167,9 +167,9 @@ $accentColor = #f00 // theme/index.js module.exports = { plugins: [ - '@vuepress/i18n-ui', - { route: '/i18n-page/' } - ] + 'vuepress-plugin-xxx', + { name: 'foo' } + ] } ``` @@ -177,13 +177,13 @@ module.exports = { // .vuepress/config.js module.exports = { plugins: [ - '@vuepress/i18n-ui', - { route: '/i18n/' } + 'vuepress-plugin-xxx', + { name: 'bar' } ] } ``` -i18n UI 最终的路由将是 `/i18n/`. +name 的最终值将是 `bar`. ## 其他 diff --git a/packages/docs/docs/zh/plugin/README.md b/packages/docs/docs/zh/plugin/README.md index 132213dc..2110e466 100644 --- a/packages/docs/docs/zh/plugin/README.md +++ b/packages/docs/docs/zh/plugin/README.md @@ -4,8 +4,7 @@ 1. 拓展在编译期生成的页面元数据,如:[@vuepress/plugin-last-updated](./official/plugin-last-updated.md); 2. 在编译前后生成额外的文件,如:[@vuepress/plugin-pwa](./official/plugin-pwa.md); -3. 增加额外的页面,如:[@vuepress/plugin-i18n-ui](./official/plugin-i18n-ui.md); -4. 注入全局的 UI, 如:[@vuepress/plugin-back-to-top](./official/plugin-back-to-top.md); -5. 拓展 CLI 的指令,如 [vuepress-plugin-export](https://github.com/ulivz/vuepress-plugin-export)。 +3. 注入全局的 UI, 如:[@vuepress/plugin-back-to-top](./official/plugin-back-to-top.md); +4. 拓展 CLI 的指令,如 [vuepress-plugin-export](https://github.com/ulivz/vuepress-plugin-export)。 ![Architecture of VuePress](/architecture.png) diff --git a/packages/docs/docs/zh/plugin/official/plugin-i18n-ui.md b/packages/docs/docs/zh/plugin/official/plugin-i18n-ui.md deleted file mode 100644 index c0afa516..00000000 --- a/packages/docs/docs/zh/plugin/official/plugin-i18n-ui.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: i18n-ui -metaTitle: I18n-UI 插件 | VuePress ---- - -# [@vuepress/plugin-i18n-ui](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-i18n-ui) - -> i18n-ui 插件。 - -## 安装 - -```bash -yarn add -D @vuepress/plugin-i18n-ui@next -# OR npm install -D @vuepress/plugin-i18n-ui@next -``` - -## 使用 - -```javascript -module.exports = { - plugins: ['@vuepress/i18n-ui'] -} -``` - -## 选项 - -### route - -- 类型: `string` -- 默认值: `/i18n/` - -i18n ui页面的路径。 diff --git a/packages/docs/package.json b/packages/docs/package.json index 06416234..9e293a66 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -27,7 +27,6 @@ "devDependencies": { "@vuepress/plugin-back-to-top": "^1.0.0-alpha.44", "@vuepress/plugin-google-analytics": "^1.0.0-alpha.44", - "@vuepress/plugin-i18n-ui": "^1.0.0-alpha.44", "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.44", "@vuepress/plugin-pwa": "^1.0.0-alpha.44", "@vuepress/theme-vue": "^1.0.0-alpha.44", From 72d74888e692c803423db193200c5463f03889af Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Thu, 14 Mar 2019 02:02:13 +0800 Subject: [PATCH 029/233] docs: add refs to custom container (#1441) --- packages/docs/docs/guide/markdown.md | 10 ++++-- packages/docs/docs/zh/guide/markdown.md | 42 ++++++++++++++----------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/packages/docs/docs/guide/markdown.md b/packages/docs/docs/guide/markdown.md index ce92d165..f6ab0cb9 100644 --- a/packages/docs/docs/guide/markdown.md +++ b/packages/docs/docs/guide/markdown.md @@ -121,7 +121,7 @@ or Rendering of TOC can be configured using the [`markdown.toc`](../config/README.md#markdown-toc) option, or as props of [TOC component](./using-vue.md#toc), like ``. -## Custom Containers +## Custom Containers **Input** @@ -165,6 +165,10 @@ Danger zone, do not proceed Danger zone, do not proceed ::: +**Also see:** + +- [@vuepress/plugin-container](../plugin/official/plugin-container.md) + ## Syntax Highlighting in Code Blocks VuePress uses [Prism](https://prismjs.com/) to highlight language syntax in markdown code blocks, using coloured text. Prism supports a wide variety of programming languages. All you need to do is append a valid language alias to the beginning backticks for the code block: @@ -291,7 +295,7 @@ module.exports = { } -## Import Code Snippets +## Import Code Snippets You can import code snippets from existing files via following syntax: @@ -316,7 +320,7 @@ It also supports [line highlighting](#line-highlighting-in-code-blocks): <<< @/../@vuepress/markdown/__tests__/fragments/snippet.js{2} ::: tip - Since the import of the code snippets will be executed before webpack compilation, you can't use the path alias in webpack. The default value of `@` is `process.cwd()`. +Since the import of the code snippets will be executed before webpack compilation, you can't use the path alias in webpack. The default value of `@` is `process.cwd()`. ::: diff --git a/packages/docs/docs/zh/guide/markdown.md b/packages/docs/docs/zh/guide/markdown.md index 11ae8f01..68307ace 100644 --- a/packages/docs/docs/zh/guide/markdown.md +++ b/packages/docs/docs/zh/guide/markdown.md @@ -69,7 +69,7 @@ lang: en-US ## GitHub 风格的表格 -**Input** +**输入** ``` | Tables | Are | Cool | @@ -79,7 +79,7 @@ lang: en-US | zebra stripes | are neat | $1 | ``` -**Output** +**输出** | Tables | Are | Cool | | ------------- |:-------------:| -----:| @@ -89,19 +89,19 @@ lang: en-US ## Emoji -**Input** +**输入** ``` :tada: :100: ``` -**Output** +**输出** :tada: :100: ## 目录 -**Input** +**输入** ```md [[toc]] @@ -113,15 +113,15 @@ lang: en-US ``` -**Output** +**输出** [[toc]] 目录(Table of Contents)的渲染可以通过 [`markdown.toc`](../config/README.md#markdown-toc) 选项来配置,也可以在 [TOC 组件](./using-vue.md#toc)中直接传入,如 ``。 -## 自定义容器 +## 自定义容器 -**Input** +**输入** ``` ::: tip @@ -137,7 +137,7 @@ This is a dangerous warning ::: ``` -**Output** +**输出** ::: tip This is a tip @@ -163,11 +163,15 @@ Danger zone, do not proceed Danger zone, do not proceed ::: +**参考:** + +- [@vuepress/plugin-container](../plugin/official/plugin-container.md) + ## 代码块中的语法高亮 VuePress 使用了 [Prism](https://prismjs.com/) 来为 markdown 中的代码块实现语法高亮。Prism 支持大量的编程语言,你需要做的只是在代码块的开始倒勾中附加一个有效的语言别名: -**Input** +**输入** ```` ``` js @@ -178,7 +182,7 @@ export default { ``` ```` -**Output** +**输出** ``` js export default { @@ -187,7 +191,7 @@ export default { } ``` -**Input** +**输入** ```` ``` html @@ -202,7 +206,7 @@ export default { ``` ```` -**Output** +**输出** ``` html
    @@ -220,7 +224,7 @@ export default { ## 代码块中的行高亮 -**Input** +**输入** ```` ``` js {4} @@ -234,7 +238,7 @@ export default { ``` ```` -**Output** +**输出** ``` js{4} export default { @@ -290,7 +294,7 @@ module.exports = { } -## 导入代码段 +## 导入代码段 你可以通过下述的语法导入已经存在的文件中的代码段: @@ -304,18 +308,18 @@ module.exports = { <<< @/filepath{highlightLines} ``` -**Input** +**输入** ``` <<< @/../@vuepress/markdown/__tests__/fragments/snippet.js{2} ``` -**Output** +**输出** <<< @/../@vuepress/markdown/__tests__/fragments/snippet.js{2} ::: tip 注意 - 由于代码段的导入将在 webpack 编译之前执行,因此你无法使用 webpack 中的路径别名,此处的 `@` 默认值是 `process.cwd()`。 +由于代码段的导入将在 webpack 编译之前执行,因此你无法使用 webpack 中的路径别名,此处的 `@` 默认值是 `process.cwd()`。 ::: ## 进阶配置 From c174f0d6c015aadd4cb8aee535cd2f560a0f43b3 Mon Sep 17 00:00:00 2001 From: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com> Date: Thu, 14 Mar 2019 12:37:31 +0530 Subject: [PATCH 030/233] fix($plugin-pwa): fix a typo in `opacity` (#1444) --- packages/@vuepress/plugin-pwa/lib/SWUpdatePopup.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/plugin-pwa/lib/SWUpdatePopup.vue b/packages/@vuepress/plugin-pwa/lib/SWUpdatePopup.vue index b2e30bdc..f8f62914 100644 --- a/packages/@vuepress/plugin-pwa/lib/SWUpdatePopup.vue +++ b/packages/@vuepress/plugin-pwa/lib/SWUpdatePopup.vue @@ -99,7 +99,7 @@ export default { } .sw-update-popup-enter, .sw-update-popup-leave-to { - opacit: 0; + opacity: 0; transform: translate(0, 50%) scale(0.5); } From ef82c4715e2491c5f51cbf7d0523bf28c131095b Mon Sep 17 00:00:00 2001 From: Rahul Kadyan Date: Fri, 15 Mar 2019 07:14:56 +0530 Subject: [PATCH 031/233] fix($core): do not register component in render function (#1449) --- packages/@vuepress/core/lib/client/components/Content.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/@vuepress/core/lib/client/components/Content.js b/packages/@vuepress/core/lib/client/components/Content.js index 12d70968..3acd9013 100644 --- a/packages/@vuepress/core/lib/client/components/Content.js +++ b/packages/@vuepress/core/lib/client/components/Content.js @@ -13,8 +13,7 @@ export default { const pageKey = this.pageKey || this.$parent.$page.key const pageComponent = getPageAsyncComponent(pageKey) if (pageComponent) { - Vue.component(pageKey, pageComponent) - return h(pageKey) + return h(pageComponent) } return h('') } From b3257a94f3f0cccde6e9f326d104dde396b7cbe2 Mon Sep 17 00:00:00 2001 From: Asif Mehedi Date: Fri, 15 Mar 2019 03:24:22 -0400 Subject: [PATCH 032/233] docs: fix a broken link (#1448) --- packages/docs/docs/miscellaneous/design-concepts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs/docs/miscellaneous/design-concepts.md b/packages/docs/docs/miscellaneous/design-concepts.md index 3e2588cb..b79de5ff 100644 --- a/packages/docs/docs/miscellaneous/design-concepts.md +++ b/packages/docs/docs/miscellaneous/design-concepts.md @@ -16,7 +16,7 @@ VuePress 1.0 has been rewritten extensively, and the most important one is the i ### Decoupling -With plugins, we can implement many of the core functions with plugins, and you can see many built-in plugins [here](https://github.com/vuejs/vuepress/tree/master/packages/%40vuepress/core/lib/internal-plugins) that cover many of the core functions of VuePress, which used to blend in all parts of the code base, but now they're clear at a glance. +With plugins, we can implement many of the core functions with plugins, and you can see many built-in plugins [here](https://github.com/vuejs/vuepress/tree/master/packages/%40vuepress/core/lib/node/internal-plugins) that cover many of the core functions of VuePress, which used to blend in all parts of the code base, but now they're clear at a glance. ### Configuration management From 9caada022175babcdf9e50a8197e2bfdc5ce27ce Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Fri, 15 Mar 2019 23:31:14 +0800 Subject: [PATCH 033/233] chore: fix lint (#1451) --- packages/@vuepress/core/lib/client/components/Content.js | 1 - packages/@vuepress/markdown/lib/highlight.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/@vuepress/core/lib/client/components/Content.js b/packages/@vuepress/core/lib/client/components/Content.js index 3acd9013..d682de4c 100644 --- a/packages/@vuepress/core/lib/client/components/Content.js +++ b/packages/@vuepress/core/lib/client/components/Content.js @@ -1,4 +1,3 @@ -import Vue from 'vue' import { getPageAsyncComponent } from '../util' export default { diff --git a/packages/@vuepress/markdown/lib/highlight.js b/packages/@vuepress/markdown/lib/highlight.js index b1a47190..9f1689a9 100644 --- a/packages/@vuepress/markdown/lib/highlight.js +++ b/packages/@vuepress/markdown/lib/highlight.js @@ -42,7 +42,7 @@ module.exports = (str, lang) => { if (lang === 'styl') { lang = 'stylus' } - + if (!prism.languages[lang]) { try { loadLanguages([lang]) From 8f42d19d4390b3a85d5dd4ff1313d6dc03c1cdd1 Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Sun, 17 Mar 2019 22:32:36 +0800 Subject: [PATCH 034/233] docs: refactor official plugins (#1442) --- .../docs/docs/plugin/official/plugin-clean-urls.md | 11 ++++++++++- .../docs/docs/plugin/official/plugin-container.md | 2 +- .../docs/docs/plugin/official/plugin-nprogress.md | 2 +- .../docs/docs/zh/plugin/official/plugin-clean-urls.md | 11 ++++++++++- .../docs/docs/zh/plugin/official/plugin-container.md | 2 +- .../docs/docs/zh/plugin/official/plugin-nprogress.md | 2 +- 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/packages/docs/docs/plugin/official/plugin-clean-urls.md b/packages/docs/docs/plugin/official/plugin-clean-urls.md index 10e94941..45bca6da 100644 --- a/packages/docs/docs/plugin/official/plugin-clean-urls.md +++ b/packages/docs/docs/plugin/official/plugin-clean-urls.md @@ -5,7 +5,7 @@ metaTitle: A plugin of automatically generating clean urls | VuePress # [@vuepress/plugin-clean-urls](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-clean-urls) -> A plugin of automatically generating clean urls +> A plugin for automatically generating clean urls. ## Install @@ -22,6 +22,15 @@ module.exports = { } ``` +::: warning +This plugin will always work on your dev server, but VuePress **does not have the right** to modify server identification. If you want your URLs to follow a certain pattern (e.g. `/routing` instead of `/routing.html` or `routing/`), you should make sure that your server would treat it as an HTML. This means that you may need to configure your server specifically. + +References: + +- For Netify users: [https://www.netlify.com/docs/redirects/#trailing-slash](https://www.netlify.com/docs/redirects/#trailing-slash). +- For Surge users: [https://surge.sh/help/using-clean-urls-automatically](https://surge.sh/help/using-clean-urls-automatically). +::: + ## Options ### normalSuffix diff --git a/packages/docs/docs/plugin/official/plugin-container.md b/packages/docs/docs/plugin/official/plugin-container.md index 1bf15da2..0ee876ef 100644 --- a/packages/docs/docs/plugin/official/plugin-container.md +++ b/packages/docs/docs/plugin/official/plugin-container.md @@ -5,7 +5,7 @@ metaTitle: A plugin for registering markdown containers | VuePress # [@vuepress/plugin-container](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-container) -> A plugin for registering markdown containers +> A plugin for registering markdown containers, based on [markdown-it-container](https://github.com/markdown-it/markdown-it-container). ## Install diff --git a/packages/docs/docs/plugin/official/plugin-nprogress.md b/packages/docs/docs/plugin/official/plugin-nprogress.md index e193259f..b6717456 100644 --- a/packages/docs/docs/plugin/official/plugin-nprogress.md +++ b/packages/docs/docs/plugin/official/plugin-nprogress.md @@ -5,7 +5,7 @@ metaTitle: Nprogress Plugin | VuePress # [@vuepress/plugin-nprogress](https://github.com/vuejs/vuepress/tree/master/packages/%40vuepress/plugin-nprogress) -> Nprogress plugin +> A progress bar plugin based on [nprogress](https://github.com/rstacruz/nprogress). ## Install diff --git a/packages/docs/docs/zh/plugin/official/plugin-clean-urls.md b/packages/docs/docs/zh/plugin/official/plugin-clean-urls.md index 985273f8..e416dd84 100644 --- a/packages/docs/docs/zh/plugin/official/plugin-clean-urls.md +++ b/packages/docs/docs/zh/plugin/official/plugin-clean-urls.md @@ -5,7 +5,7 @@ metaTitle: 自动生成简洁链接的插件 | VuePress # [@vuepress/plugin-clean-urls](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-clean-urls) -> 自动生成简洁链接的插件 +> 用于自动生成简洁链接的插件。 ## 安装 @@ -22,6 +22,15 @@ module.exports = { } ``` +::: warning 注意 +这个插件在 dev 服务器上总是生效的,但 VuePress **并没有能力**去修改服务器识别链接的方式。如果你希望你的网站地址符合某种特殊的模式(比如使用 `/routing` 而不是 `/routing.html` 或者 `routing/`),你需要确保你的服务器会将这些地址认为是 HTML。这可能意味着你需要对你的服务器进行特殊的配置。 + +参考资料: + +- Netify 用户: [https://www.netlify.com/docs/redirects/#trailing-slash](https://www.netlify.com/docs/redirects/#trailing-slash). +- Surge 用户: [https://surge.sh/help/using-clean-urls-automatically](https://surge.sh/help/using-clean-urls-automatically). +::: + ## 选项 ### normalSuffix diff --git a/packages/docs/docs/zh/plugin/official/plugin-container.md b/packages/docs/docs/zh/plugin/official/plugin-container.md index fcf47117..200aeffb 100644 --- a/packages/docs/docs/zh/plugin/official/plugin-container.md +++ b/packages/docs/docs/zh/plugin/official/plugin-container.md @@ -5,7 +5,7 @@ metaTitle: Markdown 容器插件 | VuePress # [@vuepress/plugin-container](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-container) -> Markdown 容器插件 +> 用于注册 Markdown 容器的插件,基于 [markdown-it-container](https://github.com/markdown-it/markdown-it-container)。 ## 安装 diff --git a/packages/docs/docs/zh/plugin/official/plugin-nprogress.md b/packages/docs/docs/zh/plugin/official/plugin-nprogress.md index 7ed3243a..6f33b1a8 100644 --- a/packages/docs/docs/zh/plugin/official/plugin-nprogress.md +++ b/packages/docs/docs/zh/plugin/official/plugin-nprogress.md @@ -5,7 +5,7 @@ metaTitle: Nprogress 插件 | VuePress # [@vuepress/plugin-nprogress](https://github.com/vuejs/vuepress/tree/master/packages/%40vuepress/plugin-nprogress) -> Nprogress plugin +> 一个基于 [nprogress](https://github.com/rstacruz/nprogress) 的进度条插件。 ## 安装 From ec7c1ea9fe9821d2045c62fcb170f0cab4dde763 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 17 Mar 2019 23:12:20 +0800 Subject: [PATCH 035/233] chore: remove outdated code --- packages/@vuepress/core/lib/node/App.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/packages/@vuepress/core/lib/node/App.js b/packages/@vuepress/core/lib/node/App.js index e853e22e..87f78438 100755 --- a/packages/@vuepress/core/lib/node/App.js +++ b/packages/@vuepress/core/lib/node/App.js @@ -26,13 +26,6 @@ const createTemp = require('./createTemp') */ module.exports = class App { - static getInstance (...args) { - if (!App._instance) { - App._instance = new App(...args) - } - return App._instance - } - /** * Instantiate the app context with a new API * From 01ef457a5ef56a313842c9ed7a7dbc68e09e9c02 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 18 Mar 2019 00:29:35 +0800 Subject: [PATCH 036/233] docs: update GA --- packages/docs/docs/config/README.md | 11 ----------- .../docs/plugin/official/plugin-google-analytics.md | 4 ++++ packages/docs/docs/zh/config/README.md | 11 ----------- .../zh/plugin/official/plugin-google-analytics.md | 4 ++++ 4 files changed, 8 insertions(+), 22 deletions(-) diff --git a/packages/docs/docs/config/README.md b/packages/docs/docs/config/README.md index f09a0d38..fb8d6bfa 100644 --- a/packages/docs/docs/config/README.md +++ b/packages/docs/docs/config/README.md @@ -80,17 +80,6 @@ Specify the temporary directory for client. Specify the output directory for `vuepress build`. If a relative path is specified, it will be resolved based on `process.cwd()`. -### ga - -- Type: `string` -- Default: `undefined` - -Provide the Google Analytics ID to enable integration. - -::: tip -Please be aware of [GDPR (2018 reform of EU data protection rules)](https://ec.europa.eu/commission/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules_en) and consider setting Google Analytics to [anonymize IPs](https://support.google.com/analytics/answer/2763052?hl=en) where appropriate and/or needed. -::: - ### locales - Type: `{ [path: string]: Object }` diff --git a/packages/docs/docs/plugin/official/plugin-google-analytics.md b/packages/docs/docs/plugin/official/plugin-google-analytics.md index 7dc951e1..94f52e14 100644 --- a/packages/docs/docs/plugin/official/plugin-google-analytics.md +++ b/packages/docs/docs/plugin/official/plugin-google-analytics.md @@ -30,6 +30,10 @@ module.exports = { } ``` +::: tip +Please be aware of [GDPR (2018 reform of EU data protection rules)](https://ec.europa.eu/commission/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules_en) and consider setting Google Analytics to [anonymize IPs](https://support.google.com/analytics/answer/2763052?hl=en) where appropriate and/or needed. +::: + ## Options ### ga diff --git a/packages/docs/docs/zh/config/README.md b/packages/docs/docs/zh/config/README.md index 319a3e2d..816feb3c 100644 --- a/packages/docs/docs/zh/config/README.md +++ b/packages/docs/docs/zh/config/README.md @@ -78,17 +78,6 @@ module.exports = { 指定 `vuepress build` 的输出目录。如果传入的是相对路径,则会基于 `process.cwd()` 进行解析。 -### ga - -- 类型: `string` -- 默认值: `undefined` - -提供一个 Google Analytics ID 来使 GA 生效。 - -::: tip 提示 -请留意 [GDPR (2018年欧盟数据保护规则改革)](https://ec.europa.eu/commission/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules_en), 在合适或者需要的情况下,考虑将 Google Analytics 设置为[匿名化的 IP](https://support.google.com/analytics/answer/2763052?hl=zh-Hans)。 -::: - ### locales - 类型: `{ [path: string]: Object }` diff --git a/packages/docs/docs/zh/plugin/official/plugin-google-analytics.md b/packages/docs/docs/zh/plugin/official/plugin-google-analytics.md index 24063ac5..f04ec79b 100644 --- a/packages/docs/docs/zh/plugin/official/plugin-google-analytics.md +++ b/packages/docs/docs/zh/plugin/official/plugin-google-analytics.md @@ -29,6 +29,10 @@ module.exports = { } ``` +::: tip 提示 +请留意 [GDPR (2018年欧盟数据保护规则改革)](https://ec.europa.eu/commission/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules_en), 在合适或者需要的情况下,考虑将 Google Analytics 设置为[匿名化的 IP](https://support.google.com/analytics/answer/2763052?hl=zh-Hans)。 +::: + ## 选项 ### ga From 880cb2f52f40150a841741512ab2324171b1933e Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Mon, 18 Mar 2019 21:22:32 +0800 Subject: [PATCH 037/233] rfc: plugin-git-log (#1406) --- rfcs/002.plugin-git-log.md | 126 +++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 rfcs/002.plugin-git-log.md diff --git a/rfcs/002.plugin-git-log.md b/rfcs/002.plugin-git-log.md new file mode 100644 index 00000000..c2a49898 --- /dev/null +++ b/rfcs/002.plugin-git-log.md @@ -0,0 +1,126 @@ +- Start Date: 2019-03-06 +- RFC PR: (leave this empty) +- VuePress Issue: (leave this empty) + +# Summary + +A new official plugin `@vuepress/plugin-git-log` featured with more computed properties to be mixed in. + +# Basic example + +1. Apply the plugin `@vuepress/git-log`. +2. It will provide a computed property `$git`, with following attributes: + - **$git.updated:** the last updating time for this page + - **$git.created:** the first creating time for this page + - **$git.author:** the author for this page + - **$git.contributors:** contributors for this page + - **$git.commits:** detailed informations of commits to this page + +# Motivation + +Although last-updated works well, git-log provides more information. Such plugin will provide remarkable convenience to users, because it automatically generates some necessary meta information. + +# Detailed design + +## Computed Properties + +We will get all computed properties through a command line like this: + +```bash +git log --format="%h %at %ct %an" +``` + +Passing the result to client, we will get a `$git.commits` like this: + +```json +[{ + "hash": "aabbccd", + "authorTime": 11111111, + "commitTime": 22222222, + "author": "fooooooo" +}, { + "hash": "ffeeddc", + "authorTime": 33333333, + "commitTime": 44444444, + "author": "baaaaaar" +}] +``` + +And other computed properties can be derived from this. + +## Options + +### formatTime + +A function to format unix time. It may have two arguments: `time` and `lang`. The default value will be: + +```js +function formatTime (timestamp, lang) { + return new Date(timestamp).toLocaleString(lang) +} +``` + +### additionalProps + +Aside from some properties listed above, we can add some custom properties throuth this option: + +```js +module.exports = { + plugins: [ + ['@vuepress/git-log', { + additionalProps: { + subject: '%s', + authorEmail: '%ae', + } + }] + ] +} +``` + +### additionalArgs + +A string or an array of strings to include all the additional args. The default value will be `'--no-merge'`. + +### onlyFirstAndLastCommit + +If set to `true`, this plugin will only look for the first and last commit, which may save lots of time. The default value is `false`. + +However, setting this option to also means you will have no access to **\$git.contributors** and **$git.commits**. + +# Drawbacks + +- It will replace existing plugin `@vuepress/plugin-last-updated`, which may lead to a breaking change (also see [adoption-strategy](#adoption-strategy)). +- It will cost more time to get all the detailed informations on a large git project than in the past with default options (because `onlyFirstAndLastCommit` is `false`). + +# Alternatives + +Publish multiple packages like `@vuepress/plugin-last-updated`. But in that case, we may need lots of command lines, which may seriously affect performance. + +# Adoption strategy + +We will deprecate `@vuepress/plugin-last-updated` after several months. Before then, we will automatically import `@vuepress/plugin-git-log` in `@vuepress/plugin-last-updated` and support both functionality. + +```js +// server +module.exports = { + plugins: ['@vuepress/last-updated'] + // show deprecation warnging +} +``` +```js +// client +export default { + created () { + console.log(this.$lastUpdated) // show deprecation warnging + console.log(this.$git.updated) + } +} +``` + +# How we teach this + +Through official plugin documentation (i.e. `/plugin/official/plugin-git-log.html`). + +# Unresolved questions + +N/A From 7fc90471e727c5dc1eda91b71f7934bfb0a2880a Mon Sep 17 00:00:00 2001 From: Antoine Leblanc Date: Wed, 20 Mar 2019 16:17:23 +0100 Subject: [PATCH 038/233] docs: fix github brand name usage (#1465) --- packages/docs/docs/config/README.md | 4 ++-- packages/docs/docs/guide/deploy.md | 6 +++--- packages/docs/docs/zh/config/README.md | 6 +++--- packages/docs/docs/zh/guide/deploy.md | 20 ++++++++++---------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/docs/docs/config/README.md b/packages/docs/docs/config/README.md index fb8d6bfa..0dfe76dc 100644 --- a/packages/docs/docs/config/README.md +++ b/packages/docs/docs/config/README.md @@ -21,7 +21,7 @@ The `base` is automatically prepended to all the URLs that start with `/` in oth **Also see:** - [Base URL](../guide/assets.md#base-url) -- [Deploy Guide > Github Pages](../guide/deploy.md#github-pages) +- [Deploy Guide > GitHub Pages](../guide/deploy.md#github-pages) ### title @@ -71,7 +71,7 @@ Specify the port to use for the dev server. - Type: `number` - Default: `@vuepress/core/.temp` -Specify the temporary directory for client. +Specify the temporary directory for client. ### dest diff --git a/packages/docs/docs/guide/deploy.md b/packages/docs/docs/guide/deploy.md index 5608e16d..0ba55dbb 100644 --- a/packages/docs/docs/guide/deploy.md +++ b/packages/docs/docs/guide/deploy.md @@ -56,7 +56,7 @@ cd - You can also run the above script in your CI setup to enable automatic deployment on each push. ::: -### Github Pages and Travis CI +### GitHub Pages and Travis CI 1. Set correct `base` in `docs/.vuepress/config.js`. @@ -66,7 +66,7 @@ You can also run the above script in your CI setup to enable automatic deploymen 2. Create a file named `.travis.yml` in the root of your project. -3. Use Github Pages deploy provider template and follow the [travis documentation](https://docs.travis-ci.com/user/deployment/pages/). +3. Use GitHub Pages deploy provider template and follow the [travis documentation](https://docs.travis-ci.com/user/deployment/pages/). ``` yaml language: node_js @@ -168,7 +168,7 @@ You can also deploy to a [custom domain](http://surge.sh/help/adding-a-custom-do 2. Create a Heroku account [here](https://signup.heroku.com). 3. Run `heroku login` and fill in your Heroku credentials: - + ``` bash heroku login ``` diff --git a/packages/docs/docs/zh/config/README.md b/packages/docs/docs/zh/config/README.md index 816feb3c..21956e7a 100644 --- a/packages/docs/docs/zh/config/README.md +++ b/packages/docs/docs/zh/config/README.md @@ -12,14 +12,14 @@ sidebar: auto - 类型: `string` - 默认值: `/` -部署站点的基础路径,如果你想让你的网站部署到一个子路径下,你将需要设置它。如 Github pages,如果你想将你的网站部署到 `https://foo.github.io/bar/`,那么 `base` 应该被设置成 `"/bar/"`,它的值应当总是以斜杠开始,并以斜杠结束。 +部署站点的基础路径,如果你想让你的网站部署到一个子路径下,你将需要设置它。如 GitHub pages,如果你想将你的网站部署到 `https://foo.github.io/bar/`,那么 `base` 应该被设置成 `"/bar/"`,它的值应当总是以斜杠开始,并以斜杠结束。 `base` 将会自动地作为前缀插入到所有以 `/` 开始的其他选项的链接中,所以你只需要指定一次。 **参考:** - [Base URL](../guide/assets.md#基础路径) -- [部署指南 > Github Pages](../guide/deploy.md#github-pages) +- [部署指南 > GitHub Pages](../guide/deploy.md#github-pages) ### title @@ -131,7 +131,7 @@ $codeBgColor = #282c34 ### index.styl -VuePress 提供了一种添加额外样式的简便方法。你可以创建一个 `.vuepress/styles/index.styl` 文件。这是一个 [Stylus](http://stylus-lang.com/) 文件,但你也可以使用正常的 CSS 语法。 +VuePress 提供了一种添加额外样式的简便方法。你可以创建一个 `.vuepress/styles/index.styl` 文件。这是一个 [Stylus](http://stylus-lang.com/) 文件,但你也可以使用正常的 CSS 语法。 ```stylus .content { diff --git a/packages/docs/docs/zh/guide/deploy.md b/packages/docs/docs/zh/guide/deploy.md index 0d26e086..4b2e283a 100644 --- a/packages/docs/docs/zh/guide/deploy.md +++ b/packages/docs/docs/zh/guide/deploy.md @@ -56,16 +56,16 @@ cd - 你可以在你的持续集成的设置中,设置在每次 push 代码时自动运行上述脚本。 ::: -### Github Pages and Travis CI +### GitHub Pages and Travis CI 1. 在 `docs/.vuepress/config.js` 中设置正确的 `base`。 如果你打算发布到 `https://.github.io/`,则可以省略这一步,因为 `base` 默认即是 `"/"`。 - + 如果你打算发布到 `https://.github.io//`(也就是说你的仓库在 `https://github.com//`),则将 `base` 设置为 `"//"`。 - + 2. 在项目的根目录创建一个名为 `.travis.yml` 的文件; -3. 使用 Github Pages 部署提供程序模板并遵循 [Travis 文档](https://docs.travis-ci.com/user/deployment/pages/)。 +3. 使用 GitHub Pages 部署提供程序模板并遵循 [Travis 文档](https://docs.travis-ci.com/user/deployment/pages/)。 ``` yaml language: node_js @@ -88,9 +88,9 @@ deploy: 1. 在 `docs/.vuepress/config.js` 中设置正确的 `base`。 如果你打算发布到 `https://.gitlab.io/`,则可以省略这一步,因为 `base` 默认即是 `"/"`。 - + 如果你打算发布到 `https://.gitlab.io//`(也就是说你的仓库在 `https://gitlab.com//`),则将 `base` 设置为 `"//"`。 - + 2. 在 `.vuepress/config.js` 中将 `dest` 设置为 `public`。 3. 在你项目的根目录下创建一个名为 `.gitlab-ci.yml` 的文件,无论何时你提交了更改,它都会帮助你自动构建和部署: @@ -114,7 +114,7 @@ pages: ## Netlify -1. 在 Netlify 中, 创建一个新的 Github 项目,使用以下设置: +1. 在 Netlify 中, 创建一个新的 GitHub 项目,使用以下设置: - **Build Command:** `npm run build:docs` 或者 `yarn build:docs` - **Publish directory:** `docs/.vuepress/dist` @@ -181,7 +181,7 @@ pages: ``` 这里是你项目的配置,请参考 [heroku-buildpack-static](https://github.com/heroku/heroku-buildpack-static) 了解更多。 - + 5. 配置 Heroku 的 git 远程仓库: ``` bash @@ -196,9 +196,9 @@ heroku apps:create example # 为静态网站设置构建包 heroku buildpacks:set https://github.com/heroku/heroku-buildpack-static.git ``` - + 6. 部署你的网站: - + ``` bash # 发布网站 git push heroku master From 521dddd4eafecfb625f5f8d08233a79c3e0799f1 Mon Sep 17 00:00:00 2001 From: Kyle Shaver Date: Sun, 24 Mar 2019 06:43:25 -0700 Subject: [PATCH 039/233] fix($theme-default): nav url change bug (close: #865) (#1475) --- .../clientRootMixin.js | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/@vuepress/plugin-active-header-links/clientRootMixin.js b/packages/@vuepress/plugin-active-header-links/clientRootMixin.js index 20ec55e6..7e841c11 100644 --- a/packages/@vuepress/plugin-active-header-links/clientRootMixin.js +++ b/packages/@vuepress/plugin-active-header-links/clientRootMixin.js @@ -23,6 +23,13 @@ export default { document.body.scrollTop ) + const scrollHeight = Math.max( + document.documentElement.scrollHeight, + document.body.scrollHeight + ) + + const bottomY = window.innerHeight + scrollTop + for (let i = 0; i < anchors.length; i++) { const anchor = anchors[i] const nextAnchor = anchors[i + 1] @@ -31,9 +38,19 @@ export default { || (scrollTop >= anchor.parentElement.offsetTop + 10 && (!nextAnchor || scrollTop < nextAnchor.parentElement.offsetTop - 10)) - if (isActive && decodeURIComponent(this.$route.hash) !== decodeURIComponent(anchor.hash)) { + const routeHash = decodeURIComponent(this.$route.hash) + if (isActive && routeHash !== decodeURIComponent(anchor.hash)) { + let activeAnchor = anchor + // check if anchor is at the bottom of the page to keep $route.hash consistent + if (bottomY === scrollHeight) { + for (let j = i + 1; j < anchors.length; j++) { + if (routeHash === decodeURIComponent(anchors[j].hash)) { + activeAnchor = anchors[j] + } + } + } this.$vuepress.$set('disableScrollBehavior', true) - this.$router.replace(decodeURIComponent(anchor.hash), () => { + this.$router.replace(decodeURIComponent(activeAnchor.hash), () => { // execute after scrollBehavior handler. this.$nextTick(() => { this.$vuepress.$set('disableScrollBehavior', false) From ec9842798581280922ff560b58a9e14c9b3fbc3e Mon Sep 17 00:00:00 2001 From: Haoshen Zhong <42088872+ChungZH@users.noreply.github.com> Date: Sun, 24 Mar 2019 21:47:20 +0800 Subject: [PATCH 040/233] chore: fix links of plugin's README (#1473) --- packages/@vuepress/plugin-active-header-links/README.md | 2 +- packages/@vuepress/plugin-back-to-top/README.md | 2 +- packages/@vuepress/plugin-blog/README.md | 2 +- packages/@vuepress/plugin-clean-urls/README.md | 2 +- packages/@vuepress/plugin-container/README.md | 2 +- packages/@vuepress/plugin-google-analytics/README.md | 2 +- packages/@vuepress/plugin-last-updated/README.md | 2 +- packages/@vuepress/plugin-medium-zoom/README.md | 2 +- packages/@vuepress/plugin-pagination/README.md | 2 +- packages/@vuepress/plugin-pwa/README.md | 2 +- packages/@vuepress/plugin-search/README.md | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/@vuepress/plugin-active-header-links/README.md b/packages/@vuepress/plugin-active-header-links/README.md index 44293e9d..8201c2a3 100644 --- a/packages/@vuepress/plugin-active-header-links/README.md +++ b/packages/@vuepress/plugin-active-header-links/README.md @@ -2,4 +2,4 @@ > active-header-links plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-active-header-links.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-active-header-links.html). diff --git a/packages/@vuepress/plugin-back-to-top/README.md b/packages/@vuepress/plugin-back-to-top/README.md index bfce48ba..a0ca6c3d 100644 --- a/packages/@vuepress/plugin-back-to-top/README.md +++ b/packages/@vuepress/plugin-back-to-top/README.md @@ -2,4 +2,4 @@ > Back-to-top plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-back-to-top.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-back-to-top.html). diff --git a/packages/@vuepress/plugin-blog/README.md b/packages/@vuepress/plugin-blog/README.md index 267ebcd5..1864f5b4 100644 --- a/packages/@vuepress/plugin-blog/README.md +++ b/packages/@vuepress/plugin-blog/README.md @@ -2,7 +2,7 @@ > blog plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-blog.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-blog.html). diff --git a/packages/@vuepress/plugin-clean-urls/README.md b/packages/@vuepress/plugin-clean-urls/README.md index f9bfc3df..422ca95d 100644 --- a/packages/@vuepress/plugin-clean-urls/README.md +++ b/packages/@vuepress/plugin-clean-urls/README.md @@ -2,4 +2,4 @@ > clean urls plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-clean-urls.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-clean-urls.html). diff --git a/packages/@vuepress/plugin-container/README.md b/packages/@vuepress/plugin-container/README.md index fc0b2211..a7910b2d 100644 --- a/packages/@vuepress/plugin-container/README.md +++ b/packages/@vuepress/plugin-container/README.md @@ -2,4 +2,4 @@ > markdown container plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-container.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-container.html). diff --git a/packages/@vuepress/plugin-google-analytics/README.md b/packages/@vuepress/plugin-google-analytics/README.md index bdf4f502..0a453e0d 100644 --- a/packages/@vuepress/plugin-google-analytics/README.md +++ b/packages/@vuepress/plugin-google-analytics/README.md @@ -2,4 +2,4 @@ > Google analytics plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-google-analytics.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-google-analytics.html). diff --git a/packages/@vuepress/plugin-last-updated/README.md b/packages/@vuepress/plugin-last-updated/README.md index 5f08ad1f..f17d98f6 100644 --- a/packages/@vuepress/plugin-last-updated/README.md +++ b/packages/@vuepress/plugin-last-updated/README.md @@ -2,4 +2,4 @@ > last-updated plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-last-updated.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-last-updated.html). diff --git a/packages/@vuepress/plugin-medium-zoom/README.md b/packages/@vuepress/plugin-medium-zoom/README.md index 1c701234..4a7bcddd 100644 --- a/packages/@vuepress/plugin-medium-zoom/README.md +++ b/packages/@vuepress/plugin-medium-zoom/README.md @@ -2,4 +2,4 @@ > medium-zoom plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-medium-zoom.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-medium-zoom.html). diff --git a/packages/@vuepress/plugin-pagination/README.md b/packages/@vuepress/plugin-pagination/README.md index a817b661..02746bc4 100644 --- a/packages/@vuepress/plugin-pagination/README.md +++ b/packages/@vuepress/plugin-pagination/README.md @@ -2,4 +2,4 @@ > pagination plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-pagination.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-pagination.html). diff --git a/packages/@vuepress/plugin-pwa/README.md b/packages/@vuepress/plugin-pwa/README.md index d29abf68..8ddbddef 100644 --- a/packages/@vuepress/plugin-pwa/README.md +++ b/packages/@vuepress/plugin-pwa/README.md @@ -2,4 +2,4 @@ > PWA plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-pwa.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-pwa.html). diff --git a/packages/@vuepress/plugin-search/README.md b/packages/@vuepress/plugin-search/README.md index 93c8b2c0..9dbe27de 100644 --- a/packages/@vuepress/plugin-search/README.md +++ b/packages/@vuepress/plugin-search/README.md @@ -2,5 +2,5 @@ > header-based search plugin for vuepress -See [documentation](https://vuepress.vuejs.org/plugin/official/plugin-search.html). +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-search.html). From 759195de7fc7caf1e5a50c80d449b2c5dfa45cd5 Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Wed, 27 Mar 2019 00:41:50 +0800 Subject: [PATCH 041/233] docs: add `dest` option (#1479) --- packages/docs/docs/api/cli.md | 5 ++++- packages/docs/docs/zh/api/cli.md | 7 +++++-- packages/vuepress/lib/registerCoreCommands.js | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/docs/docs/api/cli.md b/packages/docs/docs/api/cli.md index d9d6b13a..76154de4 100644 --- a/packages/docs/docs/api/cli.md +++ b/packages/docs/docs/api/cli.md @@ -16,10 +16,13 @@ See [port](../config/README.md#port). ### -t, --temp `` See [temp](../config/README.md#temp). -### -c, --cache [cache] +### -c, --cache `[cache]` ### -no--cache See [cache](../config/README.md#cache). +### --dest `` +See [dest](../config/README.md#dest). + ### --debug Start development server in debug mode. diff --git a/packages/docs/docs/zh/api/cli.md b/packages/docs/docs/zh/api/cli.md index f7f2436d..18eaf7e2 100644 --- a/packages/docs/docs/zh/api/cli.md +++ b/packages/docs/docs/zh/api/cli.md @@ -16,10 +16,13 @@ vuepress targetDir [options] ### -t, --temp `` 查看 [temp](../config/README.md#temp)。 -### -c, --cache [cache] -### -no--cache [cache] +### -c, --cache `[cache]` +### -no--cache 查看 [cache](../config/README.md#cache)。 +### --dest `` +查看 [dest](../config/README.md#dest)。 + ### --debug 以调试模式启动开发服务器。 diff --git a/packages/vuepress/lib/registerCoreCommands.js b/packages/vuepress/lib/registerCoreCommands.js index edca5b21..ee0a78fd 100644 --- a/packages/vuepress/lib/registerCoreCommands.js +++ b/packages/vuepress/lib/registerCoreCommands.js @@ -44,6 +44,7 @@ module.exports = function (cli, options) { .option('-d, --dest ', 'specify build output dir (default: .vuepress/dist)') .option('-t, --temp ', 'set the directory of the temporary file') .option('-c, --cache [cache]', 'set the directory of cache') + .option('--dest ', 'the output directory for build process') .option('--no-cache', 'clean the cache before build') .option('--debug', 'build in development mode for debugging') .option('--silent', 'build static site in silent mode') From d34e0389a5d673421a2b0567972995bf7587517f Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Wed, 27 Mar 2019 22:29:51 +0800 Subject: [PATCH 042/233] fix($core): do not use stylus in outbound link --- .../core/lib/client/components/OutboundLink.vue | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/@vuepress/core/lib/client/components/OutboundLink.vue b/packages/@vuepress/core/lib/client/components/OutboundLink.vue index 65a7ab6f..4acbb9af 100644 --- a/packages/@vuepress/core/lib/client/components/OutboundLink.vue +++ b/packages/@vuepress/core/lib/client/components/OutboundLink.vue @@ -5,11 +5,12 @@ - From 8a11d1455d7ba1a01e5fb73e858eebc39770eb6e Mon Sep 17 00:00:00 2001 From: Kyle Shaver Date: Wed, 27 Mar 2019 07:39:50 -0700 Subject: [PATCH 043/233] fix($plugin-active-header-links): side navigation edge case bug (#1477) --- .../@vuepress/plugin-active-header-links/clientRootMixin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vuepress/plugin-active-header-links/clientRootMixin.js b/packages/@vuepress/plugin-active-header-links/clientRootMixin.js index 7e841c11..06710dd2 100644 --- a/packages/@vuepress/plugin-active-header-links/clientRootMixin.js +++ b/packages/@vuepress/plugin-active-header-links/clientRootMixin.js @@ -40,12 +40,12 @@ export default { const routeHash = decodeURIComponent(this.$route.hash) if (isActive && routeHash !== decodeURIComponent(anchor.hash)) { - let activeAnchor = anchor + const activeAnchor = anchor // check if anchor is at the bottom of the page to keep $route.hash consistent if (bottomY === scrollHeight) { for (let j = i + 1; j < anchors.length; j++) { if (routeHash === decodeURIComponent(anchors[j].hash)) { - activeAnchor = anchors[j] + return } } } From 7848a309f732123f318c86865e4e2616069b8132 Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Thu, 28 Mar 2019 00:15:31 +0800 Subject: [PATCH 044/233] chore: remove plugin-clean-urls (#1464) @vuepress/plugin-clean-urls was moved to https://github.com/vuepress/vuepress-plugin-clean-urls --- .../@vuepress/plugin-clean-urls/.npmignore | 3 - .../@vuepress/plugin-clean-urls/README.md | 5 -- packages/@vuepress/plugin-clean-urls/index.js | 22 ------- .../@vuepress/plugin-clean-urls/package.json | 26 -------- packages/docs/docs/guide/markdown.md | 2 +- .../docs/plugin/official/plugin-clean-urls.md | 60 ------------------- packages/docs/docs/zh/guide/markdown.md | 2 +- .../zh/plugin/official/plugin-clean-urls.md | 60 ------------------- 8 files changed, 2 insertions(+), 178 deletions(-) delete mode 100644 packages/@vuepress/plugin-clean-urls/.npmignore delete mode 100644 packages/@vuepress/plugin-clean-urls/README.md delete mode 100644 packages/@vuepress/plugin-clean-urls/index.js delete mode 100644 packages/@vuepress/plugin-clean-urls/package.json delete mode 100644 packages/docs/docs/plugin/official/plugin-clean-urls.md delete mode 100644 packages/docs/docs/zh/plugin/official/plugin-clean-urls.md diff --git a/packages/@vuepress/plugin-clean-urls/.npmignore b/packages/@vuepress/plugin-clean-urls/.npmignore deleted file mode 100644 index 13c38ea3..00000000 --- a/packages/@vuepress/plugin-clean-urls/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -__tests__ -__mocks__ -.temp diff --git a/packages/@vuepress/plugin-clean-urls/README.md b/packages/@vuepress/plugin-clean-urls/README.md deleted file mode 100644 index 422ca95d..00000000 --- a/packages/@vuepress/plugin-clean-urls/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# @vuepress/plugin-clean-urls - -> clean urls plugin for vuepress - -See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-clean-urls.html). diff --git a/packages/@vuepress/plugin-clean-urls/index.js b/packages/@vuepress/plugin-clean-urls/index.js deleted file mode 100644 index d09d0754..00000000 --- a/packages/@vuepress/plugin-clean-urls/index.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = (options = {}, context) => { - const { - normalSuffix = '', - indexSuffix = '/' - } = options - - return { - extendPageData (page) { - const { regularPath, frontmatter = {}} = page - if (frontmatter.permalink) return - if (regularPath.endsWith('.html')) { - // normal path - // e.g. foo/bar.md -> foo/bar.html - page.path = regularPath.slice(0, -5) + normalSuffix - } else if (regularPath.endsWith('/')) { - // index path - // e.g. foo/index.md -> foo/ - page.path = regularPath.slice(0, -1) + indexSuffix - } - } - } -} diff --git a/packages/@vuepress/plugin-clean-urls/package.json b/packages/@vuepress/plugin-clean-urls/package.json deleted file mode 100644 index 1291e5f8..00000000 --- a/packages/@vuepress/plugin-clean-urls/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "@vuepress/plugin-clean-urls", - "version": "1.0.0-alpha.44", - "description": "clean urls plugin for vuepress", - "main": "index.js", - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/vuejs/vuepress.git", - "directory": "packages/@vuepress/plugin-clean-urls" - }, - "keywords": [ - "documentation", - "vue", - "vuepress", - "generator" - ], - "author": "Shigma <1700011071@pku.edu.cn>", - "license": "MIT", - "bugs": { - "url": "https://github.com/vuejs/vuepress/issues" - }, - "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/plugin-clean-urls#readme" -} diff --git a/packages/docs/docs/guide/markdown.md b/packages/docs/docs/guide/markdown.md index f6ab0cb9..e2567b11 100644 --- a/packages/docs/docs/guide/markdown.md +++ b/packages/docs/docs/guide/markdown.md @@ -37,7 +37,7 @@ And providing you are in `foo/one.md`: ### Redirection for URLs -VuePress supports redirecting to clean links. If a link `/foo` is not found, VuePress will look for a existing `/foo/` or `/foo.html`. Conversely, when one of `/foo/` or `/foo.html` is not found, VuePress will also try the other. With this feature, we can customize your website's urls with the official plugin [@vuepress/plugin-clean-urls](../plugin/official/plugin-clean-urls.md). +VuePress supports redirecting to clean links. If a link `/foo` is not found, VuePress will look for a existing `/foo/` or `/foo.html`. Conversely, when one of `/foo/` or `/foo.html` is not found, VuePress will also try the other. With this feature, we can customize your website's urls with the official plugin [vuepress-plugin-clean-urls](https://vuepress.github.io/plugins/clean-urls/). ::: tip Regardless of whether the permalink and clean-urls plugins are used, your relative path should be defined by the current file structure. In the above example, even though you set the path of `/foo/one.md` to `/foo/one/`, you should still access `/foo/two.md` via `./two.md`. diff --git a/packages/docs/docs/plugin/official/plugin-clean-urls.md b/packages/docs/docs/plugin/official/plugin-clean-urls.md deleted file mode 100644 index 45bca6da..00000000 --- a/packages/docs/docs/plugin/official/plugin-clean-urls.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: clean-urls -metaTitle: A plugin of automatically generating clean urls | VuePress ---- - -# [@vuepress/plugin-clean-urls](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-clean-urls) - -> A plugin for automatically generating clean urls. - -## Install - -```bash -yarn add -D @vuepress/plugin-clean-urls@next -# OR npm install -D @vuepress/plugin-clean-urls@next -``` - -## Usage - -```javascript -module.exports = { - plugins: ['@vuepress/clean-urls'] -} -``` - -::: warning -This plugin will always work on your dev server, but VuePress **does not have the right** to modify server identification. If you want your URLs to follow a certain pattern (e.g. `/routing` instead of `/routing.html` or `routing/`), you should make sure that your server would treat it as an HTML. This means that you may need to configure your server specifically. - -References: - -- For Netify users: [https://www.netlify.com/docs/redirects/#trailing-slash](https://www.netlify.com/docs/redirects/#trailing-slash). -- For Surge users: [https://surge.sh/help/using-clean-urls-automatically](https://surge.sh/help/using-clean-urls-automatically). -::: - -## Options - -### normalSuffix - -- Type: `string` -- Default: `''` - -The suffix for normal pages. For example, `foo/bar.md` will become: - -- `foo/bar.html` by default (without this plugin) -- `foo/bar/` (with `normalSuffix` set to `'/'`) -- `foo/bar` (with `normalSuffix` set to `''`) - -### indexSuffix - -- Type: `string` -- Default: `'/'` - -The suffix for index pages. For example, `foo/index.md` will become: - -- `foo/` by default (without this plugin) -- `foo` (with `indexSuffix` set to `''`) -- `foo/index.html` (with `indexSuffix` set to `'/index.html'`) - -::: tip -An index page is a page with a file name of index.md or readme.md (case insensitive). -::: diff --git a/packages/docs/docs/zh/guide/markdown.md b/packages/docs/docs/zh/guide/markdown.md index 68307ace..d3810f77 100644 --- a/packages/docs/docs/zh/guide/markdown.md +++ b/packages/docs/docs/zh/guide/markdown.md @@ -37,7 +37,7 @@ ### 链接的重定向 -VuePress 支持重定向到干净链接。如果一个链接 `/foo` 找不到,VuePress 会自行寻找一个可用的 `/foo/` 或 `/foo.html`。反过来,当 `/foo/` 或 `/foo.html` 中的一个找不到时,VuePress 也会尝试寻找另一个。借助这种特性,我们可以通过官方插件 [@vuepress/plugin-clean-urls](../plugin/official/plugin-clean-urls.md) 定制你的网站路径。 +VuePress 支持重定向到干净链接。如果一个链接 `/foo` 找不到,VuePress 会自行寻找一个可用的 `/foo/` 或 `/foo.html`。反过来,当 `/foo/` 或 `/foo.html` 中的一个找不到时,VuePress 也会尝试寻找另一个。借助这种特性,我们可以通过官方插件 [vuepress-plugin-clean-urls](https://vuepress.github.io/plugins/clean-urls/) 定制你的网站路径。 ::: tip 注意 无论是否使用了 permalink 和 clean-urls 插件,你的相对路径都应该依赖于当前的文件结构来定义。在上面的例子中,即使你将 `/foo/one.md` 的路径设为了 `/foo/one/`,你依然应该通过 `./two.md` 来访问 `/foo/two.md`。 diff --git a/packages/docs/docs/zh/plugin/official/plugin-clean-urls.md b/packages/docs/docs/zh/plugin/official/plugin-clean-urls.md deleted file mode 100644 index e416dd84..00000000 --- a/packages/docs/docs/zh/plugin/official/plugin-clean-urls.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: clean-urls -metaTitle: 自动生成简洁链接的插件 | VuePress ---- - -# [@vuepress/plugin-clean-urls](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-clean-urls) - -> 用于自动生成简洁链接的插件。 - -## 安装 - -```bash -yarn add -D @vuepress/plugin-clean-urls@next -# OR npm install -D @vuepress/plugin-clean-urls@next -``` - -## 使用 - -```javascript -module.exports = { - plugins: ['@vuepress/clean-urls'] -} -``` - -::: warning 注意 -这个插件在 dev 服务器上总是生效的,但 VuePress **并没有能力**去修改服务器识别链接的方式。如果你希望你的网站地址符合某种特殊的模式(比如使用 `/routing` 而不是 `/routing.html` 或者 `routing/`),你需要确保你的服务器会将这些地址认为是 HTML。这可能意味着你需要对你的服务器进行特殊的配置。 - -参考资料: - -- Netify 用户: [https://www.netlify.com/docs/redirects/#trailing-slash](https://www.netlify.com/docs/redirects/#trailing-slash). -- Surge 用户: [https://surge.sh/help/using-clean-urls-automatically](https://surge.sh/help/using-clean-urls-automatically). -::: - -## 选项 - -### normalSuffix - -- 类型: `string` -- 默认值: `''` - -普通页面的链接后缀。举个例子,`foo/bar.md` 会自动变成: - -- `foo/bar.html` 在默认情况下(未安装本插件时) -- `foo/bar/`(当 `normalSuffix` 被设为 `'/'` 时) -- `foo/bar`(当 `normalSuffix` 被设为 `''` 时) - -### indexSuffix - -- 类型: `string` -- 默认值: `'/'` - -索引页面的链接后缀。举个例子,`foo/index.md` 会自动变成: - -- `foo/` 在默认情况下(未安装本插件时) -- `foo`(当 `indexSuffix` 被设为 `''` 时) -- `foo/index.html`(当 `indexSuffix` 被设为 `'/index.html'` 时) - -::: tip -索引页面是指文件名为 index.md 或者 readme.md 的页面(不区分大小写)。 -::: From 944ebe4acbe6fb21368cf1b28bf10e63ced7f9eb Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Thu, 28 Mar 2019 00:47:46 +0800 Subject: [PATCH 045/233] fix($markdown-loader): always use `/` instead of `\` in `relPath` (#1484) --- packages/@vuepress/markdown-loader/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/markdown-loader/index.js b/packages/@vuepress/markdown-loader/index.js index 552ad652..196d9344 100644 --- a/packages/@vuepress/markdown-loader/index.js +++ b/packages/@vuepress/markdown-loader/index.js @@ -65,7 +65,7 @@ module.exports = function (src) { } = markdown.render(content, { loader, frontmatter: data, - relPath: path.relative(sourceDir, file) + relPath: path.relative(sourceDir, file).replace(/\\/g, '/') }) // check if relative links are valid From d7b8dafd8b73033a8af93ca1a3f57903bd74346b Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Thu, 28 Mar 2019 01:05:56 +0800 Subject: [PATCH 046/233] feat($core): export version (#1486) const { version } = require('vuepress') --- packages/@vuepress/core/lib/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/@vuepress/core/lib/index.js b/packages/@vuepress/core/lib/index.js index add8f2fd..85afa961 100644 --- a/packages/@vuepress/core/lib/index.js +++ b/packages/@vuepress/core/lib/index.js @@ -1,6 +1,7 @@ 'use strict' const App = require('./node/App') +const { version } = require('../package') const { logger } = require('@vuepress/shared-utils') function createApp (options) { @@ -20,6 +21,7 @@ async function build (options) { return app.build() } +exports.version = version exports.createApp = createApp exports.dev = dev exports.build = build From cc193d5cc1c29a0ff802ca6bf13fdf6887047604 Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Thu, 28 Mar 2019 01:09:21 +0800 Subject: [PATCH 047/233] refactor($markdown): use `relativePath` instead of `relPath` (#1485) --- packages/@vuepress/core/lib/node/Page.js | 2 +- packages/@vuepress/markdown-loader/index.js | 2 +- packages/@vuepress/markdown/index.js | 2 +- packages/@vuepress/markdown/lib/link.js | 10 +++++----- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/@vuepress/core/lib/node/Page.js b/packages/@vuepress/core/lib/node/Page.js index db3a6af2..5172dbd7 100644 --- a/packages/@vuepress/core/lib/node/Page.js +++ b/packages/@vuepress/core/lib/node/Page.js @@ -124,7 +124,7 @@ module.exports = class Page { if (excerpt) { const { html } = markdown.render(excerpt, { frontmatter: this.frontmatter, - relPath: this.relativePath + relativePath: this.relativePath }) this.excerpt = html } diff --git a/packages/@vuepress/markdown-loader/index.js b/packages/@vuepress/markdown-loader/index.js index 196d9344..5d19d6d1 100644 --- a/packages/@vuepress/markdown-loader/index.js +++ b/packages/@vuepress/markdown-loader/index.js @@ -65,7 +65,7 @@ module.exports = function (src) { } = markdown.render(content, { loader, frontmatter: data, - relPath: path.relative(sourceDir, file).replace(/\\/g, '/') + relativePath: path.relative(sourceDir, file).replace(/\\/g, '/') }) // check if relative links are valid diff --git a/packages/@vuepress/markdown/index.js b/packages/@vuepress/markdown/index.js index fdb0481f..f3b4a38c 100644 --- a/packages/@vuepress/markdown/index.js +++ b/packages/@vuepress/markdown/index.js @@ -123,7 +123,7 @@ module.exports = (markdown = {}) => { const parse = md.parse const cache = new LRUCache({ max: 1000 }) md.parse = (src, env) => { - const key = hash(src + env.relPath) + const key = hash(src + env.relativePath) const cached = cache.get(key) if (cached) { return cached diff --git a/packages/@vuepress/markdown/lib/link.js b/packages/@vuepress/markdown/lib/link.js index 6e8d2a04..48551b4e 100644 --- a/packages/@vuepress/markdown/lib/link.js +++ b/packages/@vuepress/markdown/lib/link.js @@ -11,7 +11,7 @@ module.exports = (md, externalAttrs) => { let hasOpenExternalLink = false md.renderer.rules.link_open = (tokens, idx, options, env, self) => { - const { relPath } = env + const { relativePath } = env const token = tokens[idx] const hrefIndex = token.attrIndex('href') if (hrefIndex >= 0) { @@ -28,13 +28,13 @@ module.exports = (md, externalAttrs) => { } } else if (isSourceLink) { hasOpenRouterLink = true - tokens[idx] = toRouterLink(token, link, relPath) + tokens[idx] = toRouterLink(token, link, relativePath) } } return self.renderToken(tokens, idx, options) } - function toRouterLink (token, link, relPath) { + function toRouterLink (token, link, relativePath) { link[0] = 'to' let to = link[1] @@ -44,8 +44,8 @@ module.exports = (md, externalAttrs) => { // relative path usage. if (!to.startsWith('/')) { - to = relPath - ? url.resolve('/' + relPath, to) + to = relativePath + ? url.resolve('/' + relativePath, to) : ensureBeginningDotSlash(to) } From 19e05697a64acf367b26f8c634a24bd3e82475ff Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Sun, 31 Mar 2019 01:36:12 +0800 Subject: [PATCH 048/233] feat($core): functional siteConfig.evergreen (#1489) --- packages/@vuepress/core/lib/node/webpack/createBaseConfig.js | 5 ++++- packages/docs/docs/config/README.md | 2 +- packages/docs/docs/zh/config/README.md | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js b/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js index 1bbd5caf..f90ba6ff 100644 --- a/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js +++ b/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js @@ -127,7 +127,10 @@ module.exports = function createBaseConfig (context, isServer) { .loader('pug-plain-loader') .end() - if (!siteConfig.evergreen) { + const evergreen = typeof siteConfig.evergreen === 'function' + ? siteConfig.evergreen() + : siteConfig.evergreen + if (!evergreen) { const libDir = path.join(__dirname, '..') config.module .rule('js') diff --git a/packages/docs/docs/config/README.md b/packages/docs/docs/config/README.md index 0dfe76dc..88600862 100644 --- a/packages/docs/docs/config/README.md +++ b/packages/docs/docs/config/README.md @@ -356,7 +356,7 @@ module.exports = { ### evergreen -- Type: `boolean` +- Type: `boolean | Function` - Default: `false` Set to `true` if you are only targeting evergreen browsers. This will disable ES5 transpilation and polyfills for IE, and result in faster builds and smaller files. diff --git a/packages/docs/docs/zh/config/README.md b/packages/docs/docs/zh/config/README.md index 21956e7a..20f863a3 100644 --- a/packages/docs/docs/zh/config/README.md +++ b/packages/docs/docs/zh/config/README.md @@ -348,7 +348,7 @@ module.exports = { ### evergreen -- 类型: `boolean` +- 类型: `boolean | Function` - 默认值: `false` 如果你的对象只有那些 “常青树” 浏览器,你可以将其设置成 `true`,这将会禁止 ESNext 到 ES5 的转译以及对 IE 的 polyfills,同时会带来更快的构建速度和更小的文件体积。 From c88f9830eecd086e876255aec3a144b5d7345c0d Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Sun, 31 Mar 2019 01:38:57 +0800 Subject: [PATCH 049/233] chore: remove plugin-container (#1462) --- packages/@vuepress/core/lib/node/App.js | 4 +- packages/@vuepress/core/package.json | 2 +- .../@vuepress/plugin-container/.npmignore | 3 - packages/@vuepress/plugin-container/README.md | 5 -- .../__snapshots__/index.spec.js.snap | 48 ----------- .../__tests__/fragments/danger.md | 3 - .../__tests__/fragments/markdown-slots.md | 10 --- .../__tests__/fragments/tip-override.md | 3 - .../__tests__/fragments/tip.md | 3 - .../__tests__/fragments/v-pre.md | 3 - .../__tests__/fragments/warning.md | 3 - .../plugin-container/__tests__/index.spec.js | 36 --------- packages/@vuepress/plugin-container/index.js | 50 ------------ .../@vuepress/plugin-container/package.json | 32 -------- packages/@vuepress/theme-default/index.js | 21 ++++- packages/@vuepress/theme-default/package.json | 4 +- packages/docs/docs/.vuepress/config.js | 4 +- packages/docs/docs/guide/markdown.md | 2 +- .../docs/plugin/official/plugin-container.md | 80 ------------------- packages/docs/docs/zh/guide/markdown.md | 2 +- .../zh/plugin/official/plugin-container.md | 80 ------------------- .../docs/zh/theme/default-theme-config.md | 2 +- packages/docs/docs/zh/theme/using-a-theme.md | 2 +- yarn.lock | 7 ++ 24 files changed, 36 insertions(+), 373 deletions(-) delete mode 100644 packages/@vuepress/plugin-container/.npmignore delete mode 100644 packages/@vuepress/plugin-container/README.md delete mode 100644 packages/@vuepress/plugin-container/__tests__/__snapshots__/index.spec.js.snap delete mode 100644 packages/@vuepress/plugin-container/__tests__/fragments/danger.md delete mode 100644 packages/@vuepress/plugin-container/__tests__/fragments/markdown-slots.md delete mode 100644 packages/@vuepress/plugin-container/__tests__/fragments/tip-override.md delete mode 100644 packages/@vuepress/plugin-container/__tests__/fragments/tip.md delete mode 100644 packages/@vuepress/plugin-container/__tests__/fragments/v-pre.md delete mode 100644 packages/@vuepress/plugin-container/__tests__/fragments/warning.md delete mode 100644 packages/@vuepress/plugin-container/__tests__/index.spec.js delete mode 100644 packages/@vuepress/plugin-container/index.js delete mode 100644 packages/@vuepress/plugin-container/package.json delete mode 100644 packages/docs/docs/plugin/official/plugin-container.md delete mode 100644 packages/docs/docs/zh/plugin/official/plugin-container.md diff --git a/packages/@vuepress/core/lib/node/App.js b/packages/@vuepress/core/lib/node/App.js index 87f78438..8684b652 100755 --- a/packages/@vuepress/core/lib/node/App.js +++ b/packages/@vuepress/core/lib/node/App.js @@ -149,12 +149,12 @@ module.exports = class App { .use(require('./internal-plugins/transformModule')) .use(require('./internal-plugins/dataBlock')) .use(require('./internal-plugins/frontmatterBlock')) - .use('@vuepress/container', { + .use('container', { type: 'slot', before: info => `' }) - .use('@vuepress/container', { + .use('container', { type: 'v-pre', before: '
    ', after: '
    ' diff --git a/packages/@vuepress/core/package.json b/packages/@vuepress/core/package.json index 168125b1..a8b8fccb 100644 --- a/packages/@vuepress/core/package.json +++ b/packages/@vuepress/core/package.json @@ -33,7 +33,6 @@ "@vue/babel-preset-app": "^3.1.1", "@vuepress/markdown": "^1.0.0-alpha.44", "@vuepress/markdown-loader": "^1.0.0-alpha.44", - "@vuepress/plugin-container": "^1.0.0-alpha.44", "@vuepress/plugin-last-updated": "^1.0.0-alpha.44", "@vuepress/plugin-register-components": "^1.0.0-alpha.44", "@vuepress/shared-utils": "^1.0.0-alpha.44", @@ -60,6 +59,7 @@ "vue-server-renderer": "^2.5.16", "vue-template-compiler": "^2.5.16", "vuepress-html-webpack-plugin": "^3.2.0", + "vuepress-plugin-container": "^2.0.0", "webpack": "^4.8.1", "webpack-chain": "^4.6.0", "webpack-dev-server": "^3.1.14", diff --git a/packages/@vuepress/plugin-container/.npmignore b/packages/@vuepress/plugin-container/.npmignore deleted file mode 100644 index 13c38ea3..00000000 --- a/packages/@vuepress/plugin-container/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -__tests__ -__mocks__ -.temp diff --git a/packages/@vuepress/plugin-container/README.md b/packages/@vuepress/plugin-container/README.md deleted file mode 100644 index a7910b2d..00000000 --- a/packages/@vuepress/plugin-container/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# @vuepress/plugin-container - -> markdown container plugin for vuepress - -See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-container.html). diff --git a/packages/@vuepress/plugin-container/__tests__/__snapshots__/index.spec.js.snap b/packages/@vuepress/plugin-container/__tests__/__snapshots__/index.spec.js.snap deleted file mode 100644 index f67ad8f0..00000000 --- a/packages/@vuepress/plugin-container/__tests__/__snapshots__/index.spec.js.snap +++ /dev/null @@ -1,48 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`containers danger.md 1`] = ` -
    -

    DANGER

    -

    I am a danger

    -
    -`; - -exports[`containers markdown-slots.md 1`] = ` - -
      -
    • A Paragraph
    • -
    • Another Paragraph
    • -
    - -`; - -exports[`containers tip.md 1`] = ` -
    -

    TIP

    -

    I am a tip

    -
    -`; - -exports[`containers tip-override.md 1`] = ` -
    -

    提示

    -

    I am a tip

    -
    -`; - -exports[`containers v-pre.md 1`] = ` -
    -

    I am a v-pre

    -
    -`; - -exports[`containers warning.md 1`] = ` -
    -

    WARNING

    -

    I am a warning

    -
    -`; diff --git a/packages/@vuepress/plugin-container/__tests__/fragments/danger.md b/packages/@vuepress/plugin-container/__tests__/fragments/danger.md deleted file mode 100644 index 2f2aa62c..00000000 --- a/packages/@vuepress/plugin-container/__tests__/fragments/danger.md +++ /dev/null @@ -1,3 +0,0 @@ -::: danger -I am a danger -::: diff --git a/packages/@vuepress/plugin-container/__tests__/fragments/markdown-slots.md b/packages/@vuepress/plugin-container/__tests__/fragments/markdown-slots.md deleted file mode 100644 index c6c60ab8..00000000 --- a/packages/@vuepress/plugin-container/__tests__/fragments/markdown-slots.md +++ /dev/null @@ -1,10 +0,0 @@ -::: slot header -# Here might be a page title -::: - -- A Paragraph -- Another Paragraph - -::: slot footer -Here's some contact info -::: diff --git a/packages/@vuepress/plugin-container/__tests__/fragments/tip-override.md b/packages/@vuepress/plugin-container/__tests__/fragments/tip-override.md deleted file mode 100644 index 2ba47c38..00000000 --- a/packages/@vuepress/plugin-container/__tests__/fragments/tip-override.md +++ /dev/null @@ -1,3 +0,0 @@ -::: tip 提示 -I am a tip -::: diff --git a/packages/@vuepress/plugin-container/__tests__/fragments/tip.md b/packages/@vuepress/plugin-container/__tests__/fragments/tip.md deleted file mode 100644 index e9b82b19..00000000 --- a/packages/@vuepress/plugin-container/__tests__/fragments/tip.md +++ /dev/null @@ -1,3 +0,0 @@ -::: tip -I am a tip -::: diff --git a/packages/@vuepress/plugin-container/__tests__/fragments/v-pre.md b/packages/@vuepress/plugin-container/__tests__/fragments/v-pre.md deleted file mode 100644 index f1694023..00000000 --- a/packages/@vuepress/plugin-container/__tests__/fragments/v-pre.md +++ /dev/null @@ -1,3 +0,0 @@ -::: v-pre -I am a v-pre -::: diff --git a/packages/@vuepress/plugin-container/__tests__/fragments/warning.md b/packages/@vuepress/plugin-container/__tests__/fragments/warning.md deleted file mode 100644 index 37aa641b..00000000 --- a/packages/@vuepress/plugin-container/__tests__/fragments/warning.md +++ /dev/null @@ -1,3 +0,0 @@ -::: warning -I am a warning -::: diff --git a/packages/@vuepress/plugin-container/__tests__/index.spec.js b/packages/@vuepress/plugin-container/__tests__/index.spec.js deleted file mode 100644 index b1efaa99..00000000 --- a/packages/@vuepress/plugin-container/__tests__/index.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -const { createApp } = require('@vuepress/core') -const { getFragments } = require('@vuepress/test-utils') -import containerPlugin from '..' - -describe('containers', async () => { - let app - - beforeAll(async () => { - app = createApp() - app.options.siteConfig = { - plugins: [ - [containerPlugin, { type: 'tip' }], - [containerPlugin, { type: 'warning' }], - [containerPlugin, { type: 'danger' }], - [containerPlugin, { - type: 'slot', - before: info => `' - }], - [containerPlugin, { - type: 'v-pre', - before: '
    ', - after: '
    ' - }] - ] - } - return app.process() - }) - - getFragments(__dirname).forEach(({ name, content: input }) => { - test(name, () => { - const { html } = app.markdown.render(input) - expect(html).toMatchSnapshot() - }) - }) -}) diff --git a/packages/@vuepress/plugin-container/index.js b/packages/@vuepress/plugin-container/index.js deleted file mode 100644 index 6d995b4b..00000000 --- a/packages/@vuepress/plugin-container/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const container = require('markdown-it-container') - -function call (target, ...args) { - if (typeof target === 'function') { - return target(...args) - } else { - return target - } -} - -module.exports = (options, context) => ({ - name: require('./package').name, - - multiple: true, - - extendMarkdown (md) { - const { - validate, - marker, - before, - after, - type = '', - defaultTitle = type.toUpperCase() - } = options - if (!type) return - - let { render } = options - if (!render) { - if (before !== undefined && after !== undefined) { - render = (tokens, index) => { - const info = tokens[index].info.trim().slice(type.length).trim() - return tokens[index].nesting === 1 ? call(before, info) : call(after, info) - } - } else { - render = (tokens, index) => { - const token = tokens[index] - let title = token.info.trim().slice(type.length).trim() || defaultTitle - if (title) title = `

    ${title}

    ` - if (token.nesting === 1) { - return `
    ${title}\n` - } else { - return `
    \n` - } - } - } - } - - md.use(container, type, { render, validate, marker }) - } -}) diff --git a/packages/@vuepress/plugin-container/package.json b/packages/@vuepress/plugin-container/package.json deleted file mode 100644 index f1489705..00000000 --- a/packages/@vuepress/plugin-container/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "@vuepress/plugin-container", - "version": "1.0.0-alpha.44", - "description": "markdown container plugin for vuepress", - "main": "index.js", - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/vuejs/vuepress.git", - "directory": "packages/@vuepress/plugin-container" - }, - "keywords": [ - "documentation", - "vue", - "vuepress", - "generator" - ], - "dependencies": { - "markdown-it-container": "^2.0.0" - }, - "devDependencies": { - "@vuepress/test-utils": "^1.0.0-alpha.44" - }, - "author": "Shigma <1700011071@pku.edu.cn>", - "license": "MIT", - "bugs": { - "url": "https://github.com/vuejs/vuepress/issues" - }, - "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/plugin-container#readme" -} diff --git a/packages/@vuepress/theme-default/index.js b/packages/@vuepress/theme-default/index.js index 0bf3d1e8..f6caeda7 100644 --- a/packages/@vuepress/theme-default/index.js +++ b/packages/@vuepress/theme-default/index.js @@ -21,8 +21,23 @@ module.exports = (options, ctx) => ({ '@vuepress/active-header-links', '@vuepress/search', '@vuepress/plugin-nprogress', - ['@vuepress/container', { type: 'tip' }], - ['@vuepress/container', { type: 'warning' }], - ['@vuepress/container', { type: 'danger' }] + ['container', { + type: 'tip', + defaultTitle: { + '/zh/': '提示' + } + }], + ['container', { + type: 'warning', + defaultTitle: { + '/zh/': '注意' + } + }], + ['container', { + type: 'danger', + defaultTitle: { + '/zh/': '警告' + } + }] ] }) diff --git a/packages/@vuepress/theme-default/package.json b/packages/@vuepress/theme-default/package.json index 18690752..316a57e3 100644 --- a/packages/@vuepress/theme-default/package.json +++ b/packages/@vuepress/theme-default/package.json @@ -31,11 +31,11 @@ "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/theme-default#readme", "dependencies": { "@vuepress/plugin-active-header-links": "^1.0.0-alpha.44", - "@vuepress/plugin-container": "^1.0.0-alpha.44", "@vuepress/plugin-nprogress": "^1.0.0-alpha.44", "@vuepress/plugin-search": "^1.0.0-alpha.44", "docsearch.js": "^2.5.2", "stylus": "^0.54.5", - "stylus-loader": "^3.0.2" + "stylus-loader": "^3.0.2", + "vuepress-plugin-container": "^2.0.0" } } diff --git a/packages/docs/docs/.vuepress/config.js b/packages/docs/docs/.vuepress/config.js index 37ab4d78..63158b8e 100755 --- a/packages/docs/docs/.vuepress/config.js +++ b/packages/docs/docs/.vuepress/config.js @@ -74,12 +74,12 @@ module.exports = ctx => ({ ['@vuepress/google-analytics', { ga: 'UA-128189152-1' }], - ['@vuepress/container', { + ['container', { type: 'vue', before: '
    ',
           after: '
    ', }], - ['@vuepress/container', { + ['container', { type: 'upgrade', before: info => ``, after: '', diff --git a/packages/docs/docs/guide/markdown.md b/packages/docs/docs/guide/markdown.md index e2567b11..6a32f0d1 100644 --- a/packages/docs/docs/guide/markdown.md +++ b/packages/docs/docs/guide/markdown.md @@ -167,7 +167,7 @@ Danger zone, do not proceed **Also see:** -- [@vuepress/plugin-container](../plugin/official/plugin-container.md) +- [vuepress-plugin-container](https://vuepress.github.io/plugins/container/) ## Syntax Highlighting in Code Blocks diff --git a/packages/docs/docs/plugin/official/plugin-container.md b/packages/docs/docs/plugin/official/plugin-container.md deleted file mode 100644 index 0ee876ef..00000000 --- a/packages/docs/docs/plugin/official/plugin-container.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: container -metaTitle: A plugin for registering markdown containers | VuePress ---- - -# [@vuepress/plugin-container](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-container) - -> A plugin for registering markdown containers, based on [markdown-it-container](https://github.com/markdown-it/markdown-it-container). - -## Install - -```bash -yarn add -D @vuepress/plugin-container@next -# OR npm install -D @vuepress/plugin-container@next -``` - -## Usage - -```javascript -module.exports = { - plugins: ['@vuepress/container'] -} -``` - -## Options - -### type - -- Type: `string` -- This is a required option. - -The type for the container. For example, if `type` is set to `foo`, only the following syntax will be parsed as a container: - -```md -::: foo bar -write something here ~ -::: -``` - -### defaultTitle - -- Type: `string` -- Default: the upper case of `type` - -The default title for the container. If no title is provided, `defaultTitle` will be shown as the title of the container. - -### before - -- Type: `string | Function` -- Default: `undefined` - -String to be placed before the block. If specified as a function, an argument `info` will be passed to it. (In the example above, `info` will be `bar`.) If specified, it will override `defaultTitle`. - -### after - -- Type: `string | Function` -- Default: `undefined` - -String to be placed after the block. If specified as a function, an argument `info` will be passed to it. (In the example above, `info` will be `bar`.) If specified, it will override `defaultTitle`. - -### validate - -- Type: `Function` -- Default: `undefined` - -A function to validate tail after opening marker, should return `true` on success. - -### render - -- Type: `Function` -- Default: `undefined` - -The renderer function for opening/closing tokens. If specified, it will override `before`, `after` and `defaultTitle`. - -### marker - -- Type: `string` -- Default: `':'` - -The character to use as a delimiter. diff --git a/packages/docs/docs/zh/guide/markdown.md b/packages/docs/docs/zh/guide/markdown.md index d3810f77..f3047871 100644 --- a/packages/docs/docs/zh/guide/markdown.md +++ b/packages/docs/docs/zh/guide/markdown.md @@ -165,7 +165,7 @@ Danger zone, do not proceed **参考:** -- [@vuepress/plugin-container](../plugin/official/plugin-container.md) +- [vuepress-plugin-container](https://vuepress.github.io/plugins/container/) ## 代码块中的语法高亮 diff --git a/packages/docs/docs/zh/plugin/official/plugin-container.md b/packages/docs/docs/zh/plugin/official/plugin-container.md deleted file mode 100644 index 200aeffb..00000000 --- a/packages/docs/docs/zh/plugin/official/plugin-container.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: container -metaTitle: Markdown 容器插件 | VuePress ---- - -# [@vuepress/plugin-container](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-container) - -> 用于注册 Markdown 容器的插件,基于 [markdown-it-container](https://github.com/markdown-it/markdown-it-container)。 - -## 安装 - -```bash -yarn add -D @vuepress/plugin-container@next -# OR npm install -D @vuepress/plugin-container@next -``` - -## 使用 - -```javascript -module.exports = { - plugins: ['@vuepress/container'] -} -``` - -## 选项 - -### type - -- 类型: `string` -- 这是一个必需的选项 - -容器的类型。举个例子,如果 `type` 被设置为 `foo`,则仅有下面的语法会被视为对应的容器: - -```md -::: foo bar -随便写点啥 ~ -::: -``` - -### defaultTitle - -- 类型: `string` -- 默认值: `type` 的大写形式 - -容器的默认标题。如果没有提供标题,则会使用 `defaultTitle` 作为容器的标题。 - -### before - -- 类型: `string | Function` -- 默认值: `undefined` - -要插入在容器前的 HTML。如果设置为一个函数,将传入当前的 `info` 作为第一个参数。(在上面的例子中,`info` 的值为 `bar`。)如果设置了这个值,它将覆盖 `defaultTitle` 的效果。 - -### after - -- 类型: `string | Function` -- 默认值: `undefined` - -要插入在容器后的 HTML。如果设置为一个函数,将传入当前的 `info` 作为第一个参数。(在上面的例子中,`info` 的值为 `bar`。)如果设置了这个值,它将覆盖 `defaultTitle` 的效果。 - -### validate - -- 类型: `Function` -- 默认值: `undefined` - -一个用于判定容器是否结束的函数。当认定容器范围结束时应返回一个 `true`。 - -### render - -- 类型: `Function` -- 默认值: `undefined` - -容器开头和结束 token 的渲染函数。如果设置了这个值,它将覆盖 `before`, `after` 和 `defaultTitle` 的效果。 - -### marker - -- 类型: `string` -- 默认值: `':'` - -用于分隔符的字符。 diff --git a/packages/docs/docs/zh/theme/default-theme-config.md b/packages/docs/docs/zh/theme/default-theme-config.md index b31f2567..8516cf5f 100644 --- a/packages/docs/docs/zh/theme/default-theme-config.md +++ b/packages/docs/docs/zh/theme/default-theme-config.md @@ -1,6 +1,6 @@ # 默认主题配置 -::: tip 提示 +::: tip 本页所列的选项仅对默认主题生效。如果你在使用一个自定义主题,选项可能会有不同。 ::: diff --git a/packages/docs/docs/zh/theme/using-a-theme.md b/packages/docs/docs/zh/theme/using-a-theme.md index 2c4f729d..e6b7f3c5 100644 --- a/packages/docs/docs/zh/theme/using-a-theme.md +++ b/packages/docs/docs/zh/theme/using-a-theme.md @@ -46,6 +46,6 @@ module.exports = { } ``` -::: warning 注意 +::: warning 以 `@vuepress/theme-` 开头的主题是官方维护的主题。 ::: diff --git a/yarn.lock b/yarn.lock index c9ecbad5..8ede5424 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9567,6 +9567,13 @@ vuepress-html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" +vuepress-plugin-container@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/vuepress-plugin-container/-/vuepress-plugin-container-2.0.1.tgz#b20ef97dd91f137c8be119460927c5ffd64e0f77" + integrity sha512-SMlWJl0uZYkqAxD2RUZmIrANZWKgiZdM64K7WmdyHyQPYI+NUj3ugi5D+zDn62BoO9NfQTiskEIa2u619SRweA== + dependencies: + markdown-it-container "^2.0.0" + vuepress-plugin-flowchart@^1.4.2: version "1.4.3" resolved "https://registry.yarnpkg.com/vuepress-plugin-flowchart/-/vuepress-plugin-flowchart-1.4.3.tgz#1692807257c9ba02f764ced0caf930c627f65bdb" From 61c5954aa506cf1603b1846463ab738f5e5b2108 Mon Sep 17 00:00:00 2001 From: Anton Wilhelm Date: Sat, 30 Mar 2019 18:39:43 +0100 Subject: [PATCH 050/233] chore: update issue template (#1492) --- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 576eb21b..92cf6ab4 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -19,4 +19,4 @@ about: Suggest an idea for this project #### How should this be implemented in your opinion? -#### Are you willing to work on this yourself?** +#### Are you willing to work on this yourself? From 9e07b1e09034b298fd7f7d71cacf0a6f46f3c639 Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Sun, 31 Mar 2019 01:56:34 +0800 Subject: [PATCH 051/233] feat($core): support array as plugin options (#1493) --- packages/@vuepress/core/lib/node/plugin-api/util.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/node/plugin-api/util.js b/packages/@vuepress/core/lib/node/plugin-api/util.js index af2ede44..a0d7be90 100644 --- a/packages/@vuepress/core/lib/node/plugin-api/util.js +++ b/packages/@vuepress/core/lib/node/plugin-api/util.js @@ -22,7 +22,7 @@ exports.flattenPlugin = function ( pluginContext, self ) { - const { valid, warnMsg } = assertTypes(pluginOptions, [Object, Boolean]) + const { valid, warnMsg } = assertTypes(pluginOptions, [Object, Array, Boolean]) if (!valid) { if (pluginOptions !== undefined) { logger.warn( From 699492ad571a2e40ac279781307b234f94acce6a Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 31 Mar 2019 23:42:21 +0800 Subject: [PATCH 052/233] fix($core): should default host be 0.0.0.0 ref: https://github.com/CompuIves/codesandbox-client/pull/1652 --- packages/@vuepress/core/lib/node/dev/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/node/dev/index.js b/packages/@vuepress/core/lib/node/dev/index.js index 9f2cf270..ccd1ec5f 100644 --- a/packages/@vuepress/core/lib/node/dev/index.js +++ b/packages/@vuepress/core/lib/node/dev/index.js @@ -266,7 +266,7 @@ module.exports = class DevProcess extends EventEmitter { */ function resolveHost (host) { - const defaultHost = 'localhost' + const defaultHost = '0.0.0.0' host = host || defaultHost const displayHost = host === defaultHost ? 'localhost' From fc99d59f643fb185fda10131331e261364cd951e Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 31 Mar 2019 23:43:13 +0800 Subject: [PATCH 053/233] feat($core): allow dynamic routeBase at runtime Setting it via window.__VUEPRESS_ROUTE_BASE__ at enhance app file. --- packages/@vuepress/core/lib/client/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/client/app.js b/packages/@vuepress/core/lib/client/app.js index bcccec17..e89cb21a 100644 --- a/packages/@vuepress/core/lib/client/app.js +++ b/packages/@vuepress/core/lib/client/app.js @@ -62,7 +62,7 @@ Vue.prototype.$withBase = function (path) { export function createApp (isServer) { const router = new Router({ - base: siteData.base, + base: window.__VUEPRESS_ROUTE_BASE__ || siteData.base, mode: 'history', fallback: false, routes, From 816cacd0e370589669e740b5c639c364c42b5668 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 31 Mar 2019 23:52:49 +0800 Subject: [PATCH 054/233] v1.0.0-alpha.45 --- lerna.json | 2 +- packages/@vuepress/core/package.json | 12 ++++++------ packages/@vuepress/markdown-loader/package.json | 4 ++-- packages/@vuepress/markdown/package.json | 6 +++--- .../plugin-active-header-links/package.json | 2 +- packages/@vuepress/plugin-back-to-top/package.json | 2 +- packages/@vuepress/plugin-blog/package.json | 2 +- .../@vuepress/plugin-google-analytics/package.json | 2 +- .../@vuepress/plugin-last-updated/package.json | 2 +- packages/@vuepress/plugin-medium-zoom/package.json | 2 +- packages/@vuepress/plugin-nprogress/package.json | 2 +- packages/@vuepress/plugin-pagination/package.json | 2 +- packages/@vuepress/plugin-pwa/package.json | 4 ++-- .../plugin-register-components/package.json | 4 ++-- packages/@vuepress/plugin-search/package.json | 2 +- packages/@vuepress/shared-utils/package.json | 2 +- packages/@vuepress/test-utils/package.json | 6 +++--- packages/@vuepress/theme-blog/package.json | 10 +++++----- packages/@vuepress/theme-default/package.json | 8 ++++---- packages/@vuepress/theme-vue/package.json | 4 ++-- packages/blog/package.json | 6 +++--- packages/docs/package.json | 14 +++++++------- packages/vuepress/package.json | 6 +++--- 23 files changed, 53 insertions(+), 53 deletions(-) diff --git a/lerna.json b/lerna.json index 1a047011..a7e0899f 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,5 @@ "lerna": "2.5.1", "npmClient": "yarn", "useWorkspaces": true, - "version": "1.0.0-alpha.44" + "version": "1.0.0-alpha.45" } diff --git a/packages/@vuepress/core/package.json b/packages/@vuepress/core/package.json index a8b8fccb..c63e8de7 100644 --- a/packages/@vuepress/core/package.json +++ b/packages/@vuepress/core/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/core", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "Minimalistic doc generator with Vue component based layout system", "main": "lib/index.js", "repository": { @@ -31,11 +31,11 @@ "dependencies": { "@babel/core": "^7.0.0", "@vue/babel-preset-app": "^3.1.1", - "@vuepress/markdown": "^1.0.0-alpha.44", - "@vuepress/markdown-loader": "^1.0.0-alpha.44", - "@vuepress/plugin-last-updated": "^1.0.0-alpha.44", - "@vuepress/plugin-register-components": "^1.0.0-alpha.44", - "@vuepress/shared-utils": "^1.0.0-alpha.44", + "@vuepress/markdown": "^1.0.0-alpha.45", + "@vuepress/markdown-loader": "^1.0.0-alpha.45", + "@vuepress/plugin-last-updated": "^1.0.0-alpha.45", + "@vuepress/plugin-register-components": "^1.0.0-alpha.45", + "@vuepress/shared-utils": "^1.0.0-alpha.45", "autoprefixer": "^7.1.2", "babel-loader": "^8.0.4", "cache-loader": "^1.2.2", diff --git a/packages/@vuepress/markdown-loader/package.json b/packages/@vuepress/markdown-loader/package.json index a9b8de66..feb2db05 100644 --- a/packages/@vuepress/markdown-loader/package.json +++ b/packages/@vuepress/markdown-loader/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/markdown-loader", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "markdown-loader for vuepress", "main": "index.js", "publishConfig": { @@ -18,7 +18,7 @@ "generator" ], "dependencies": { - "@vuepress/markdown": "^1.0.0-alpha.44", + "@vuepress/markdown": "^1.0.0-alpha.45", "loader-utils": "^1.1.0", "lru-cache": "^5.1.1" }, diff --git a/packages/@vuepress/markdown/package.json b/packages/@vuepress/markdown/package.json index 362a46a9..1288a56c 100644 --- a/packages/@vuepress/markdown/package.json +++ b/packages/@vuepress/markdown/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/markdown", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "markdown for vuepress", "main": "index.js", "publishConfig": { @@ -19,7 +19,7 @@ "markdown" ], "dependencies": { - "@vuepress/shared-utils": "^1.0.0-alpha.44", + "@vuepress/shared-utils": "^1.0.0-alpha.45", "lru-cache": "^5.1.1", "markdown-it": "^8.4.1", "markdown-it-anchor": "^5.0.2", @@ -28,7 +28,7 @@ "prismjs": "^1.13.0" }, "devDependencies": { - "@vuepress/test-utils": "^1.0.0-alpha.44" + "@vuepress/test-utils": "^1.0.0-alpha.45" }, "author": "Evan You", "maintainers": [ diff --git a/packages/@vuepress/plugin-active-header-links/package.json b/packages/@vuepress/plugin-active-header-links/package.json index 4457b4d6..c2d0913c 100644 --- a/packages/@vuepress/plugin-active-header-links/package.json +++ b/packages/@vuepress/plugin-active-header-links/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-active-header-links", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "active-header-links plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-back-to-top/package.json b/packages/@vuepress/plugin-back-to-top/package.json index ff1d0f6c..33a63553 100644 --- a/packages/@vuepress/plugin-back-to-top/package.json +++ b/packages/@vuepress/plugin-back-to-top/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-back-to-top", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "back-to-top plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-blog/package.json b/packages/@vuepress/plugin-blog/package.json index 5cbc1584..3ada2389 100644 --- a/packages/@vuepress/plugin-blog/package.json +++ b/packages/@vuepress/plugin-blog/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-blog", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "blog plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-google-analytics/package.json b/packages/@vuepress/plugin-google-analytics/package.json index a46d25ad..ac7b140b 100644 --- a/packages/@vuepress/plugin-google-analytics/package.json +++ b/packages/@vuepress/plugin-google-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-google-analytics", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "google-analytics plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-last-updated/package.json b/packages/@vuepress/plugin-last-updated/package.json index 5f817ed9..5719b0a7 100644 --- a/packages/@vuepress/plugin-last-updated/package.json +++ b/packages/@vuepress/plugin-last-updated/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-last-updated", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "last-updated plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-medium-zoom/package.json b/packages/@vuepress/plugin-medium-zoom/package.json index 82abc816..af1c6e8f 100644 --- a/packages/@vuepress/plugin-medium-zoom/package.json +++ b/packages/@vuepress/plugin-medium-zoom/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-medium-zoom", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "medium-zoom plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-nprogress/package.json b/packages/@vuepress/plugin-nprogress/package.json index 159870c3..ef9b73e3 100644 --- a/packages/@vuepress/plugin-nprogress/package.json +++ b/packages/@vuepress/plugin-nprogress/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-nprogress", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "nprogress plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-pagination/package.json b/packages/@vuepress/plugin-pagination/package.json index d911a543..c28394fc 100644 --- a/packages/@vuepress/plugin-pagination/package.json +++ b/packages/@vuepress/plugin-pagination/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-pagination", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "pagination plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-pwa/package.json b/packages/@vuepress/plugin-pwa/package.json index cc60ccf9..29df7cf7 100644 --- a/packages/@vuepress/plugin-pwa/package.json +++ b/packages/@vuepress/plugin-pwa/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-pwa", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "pwa plugin for vuepress", "main": "index.js", "publishConfig": { @@ -18,7 +18,7 @@ "generator" ], "dependencies": { - "@vuepress/shared-utils": "^1.0.0-alpha.44", + "@vuepress/shared-utils": "^1.0.0-alpha.45", "register-service-worker": "^1.5.2", "workbox-build": "^3.1.0" }, diff --git a/packages/@vuepress/plugin-register-components/package.json b/packages/@vuepress/plugin-register-components/package.json index ef6cfa74..9e4d1162 100644 --- a/packages/@vuepress/plugin-register-components/package.json +++ b/packages/@vuepress/plugin-register-components/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-register-components", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "register-global-components plugin for vuepress", "main": "index.js", "publishConfig": { @@ -24,6 +24,6 @@ }, "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/plugin-register-components#readme", "dependencies": { - "@vuepress/shared-utils": "^1.0.0-alpha.44" + "@vuepress/shared-utils": "^1.0.0-alpha.45" } } diff --git a/packages/@vuepress/plugin-search/package.json b/packages/@vuepress/plugin-search/package.json index 71995ff3..583dd938 100644 --- a/packages/@vuepress/plugin-search/package.json +++ b/packages/@vuepress/plugin-search/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-search", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "search plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/shared-utils/package.json b/packages/@vuepress/shared-utils/package.json index a66f3e41..cff5c48f 100644 --- a/packages/@vuepress/shared-utils/package.json +++ b/packages/@vuepress/shared-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/shared-utils", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "shared-utils for vuepress", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@vuepress/test-utils/package.json b/packages/@vuepress/test-utils/package.json index 8f7ebc95..3837da22 100644 --- a/packages/@vuepress/test-utils/package.json +++ b/packages/@vuepress/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/test-utils", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "test-utils for vuepress", "main": "index.js", "publishConfig": { @@ -22,8 +22,8 @@ "@babel/preset-env": "^7.0.0", "@types/jest": "^24.0.9", "@vue/test-utils": "^1.0.0-beta.29", - "@vuepress/core": "^1.0.0-alpha.44", - "@vuepress/shared-utils": "^1.0.0-alpha.44", + "@vuepress/core": "^1.0.0-alpha.45", + "@vuepress/shared-utils": "^1.0.0-alpha.45", "babel-jest": "^24.1.0", "execa": "^0.10.0", "jest": "^24.1.0", diff --git a/packages/@vuepress/theme-blog/package.json b/packages/@vuepress/theme-blog/package.json index fdff5b25..7b896e2b 100644 --- a/packages/@vuepress/theme-blog/package.json +++ b/packages/@vuepress/theme-blog/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@vuepress/theme-blog", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "theme-blog for vuepress", "main": "index.js", "publishConfig": { @@ -19,10 +19,10 @@ "generator" ], "dependencies": { - "@vuepress/plugin-blog": "^1.0.0-alpha.44", - "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.44", - "@vuepress/plugin-pagination": "^1.0.0-alpha.44", - "@vuepress/plugin-search": "^1.0.0-alpha.44" + "@vuepress/plugin-blog": "^1.0.0-alpha.45", + "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.45", + "@vuepress/plugin-pagination": "^1.0.0-alpha.45", + "@vuepress/plugin-search": "^1.0.0-alpha.45" }, "author": "ULIVZ ", "license": "MIT", diff --git a/packages/@vuepress/theme-default/package.json b/packages/@vuepress/theme-default/package.json index 316a57e3..c96162c5 100644 --- a/packages/@vuepress/theme-default/package.json +++ b/packages/@vuepress/theme-default/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/theme-default", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "Default theme for VuePress", "main": "index.js", "publishConfig": { @@ -30,9 +30,9 @@ }, "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/theme-default#readme", "dependencies": { - "@vuepress/plugin-active-header-links": "^1.0.0-alpha.44", - "@vuepress/plugin-nprogress": "^1.0.0-alpha.44", - "@vuepress/plugin-search": "^1.0.0-alpha.44", + "@vuepress/plugin-active-header-links": "^1.0.0-alpha.45", + "@vuepress/plugin-nprogress": "^1.0.0-alpha.45", + "@vuepress/plugin-search": "^1.0.0-alpha.45", "docsearch.js": "^2.5.2", "stylus": "^0.54.5", "stylus-loader": "^3.0.2", diff --git a/packages/@vuepress/theme-vue/package.json b/packages/@vuepress/theme-vue/package.json index cad2ac10..593a2ad6 100644 --- a/packages/@vuepress/theme-vue/package.json +++ b/packages/@vuepress/theme-vue/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/theme-vue", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "VuePress theme for official Vue projects", "main": "index.js", "publishConfig": { @@ -30,6 +30,6 @@ }, "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/theme-vue#readme", "dependencies": { - "@vuepress/theme-default": "^1.0.0-alpha.44" + "@vuepress/theme-default": "^1.0.0-alpha.45" } } diff --git a/packages/blog/package.json b/packages/blog/package.json index e8eb5e74..f07c9bc6 100644 --- a/packages/blog/package.json +++ b/packages/blog/package.json @@ -2,13 +2,13 @@ "private": true, "name": "blog", "description": "blog of VuePress", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "scripts": { "dev": "vuepress dev source --temp .temp", "build": "vuepress build source --temp .temp" }, "dependencies": { - "@vuepress/theme-blog": "^1.0.0-alpha.44", - "vuepress": "^1.0.0-alpha.44" + "@vuepress/theme-blog": "^1.0.0-alpha.45", + "vuepress": "^1.0.0-alpha.45" } } diff --git a/packages/docs/package.json b/packages/docs/package.json index 9e293a66..1b9ebb8d 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "name": "docs", "description": "docs of VuePress", "scripts": { @@ -25,13 +25,13 @@ }, "homepage": "https://github.com/vuejs/vuepress#readme", "devDependencies": { - "@vuepress/plugin-back-to-top": "^1.0.0-alpha.44", - "@vuepress/plugin-google-analytics": "^1.0.0-alpha.44", - "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.44", - "@vuepress/plugin-pwa": "^1.0.0-alpha.44", - "@vuepress/theme-vue": "^1.0.0-alpha.44", + "@vuepress/plugin-back-to-top": "^1.0.0-alpha.45", + "@vuepress/plugin-google-analytics": "^1.0.0-alpha.45", + "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.45", + "@vuepress/plugin-pwa": "^1.0.0-alpha.45", + "@vuepress/theme-vue": "^1.0.0-alpha.45", "vue-toasted": "^1.1.25", - "vuepress": "^1.0.0-alpha.44", + "vuepress": "^1.0.0-alpha.45", "vuepress-plugin-flowchart": "^1.4.2" } } diff --git a/packages/vuepress/package.json b/packages/vuepress/package.json index 674a0fea..f74608c2 100644 --- a/packages/vuepress/package.json +++ b/packages/vuepress/package.json @@ -1,6 +1,6 @@ { "name": "vuepress", - "version": "1.0.0-alpha.44", + "version": "1.0.0-alpha.45", "description": "Minimalistic doc generator with Vue component based layout system", "main": "index.js", "repository": { @@ -29,8 +29,8 @@ }, "homepage": "https://github.com/vuejs/vuepress#readme", "dependencies": { - "@vuepress/core": "^1.0.0-alpha.44", - "@vuepress/theme-default": "^1.0.0-alpha.44", + "@vuepress/core": "^1.0.0-alpha.45", + "@vuepress/theme-default": "^1.0.0-alpha.45", "cac": "^6.3.9" }, "engines": { From cb84c5c4d95bf1e30a8b5ad03f0c130a1435c53f Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 1 Apr 2019 00:20:06 +0800 Subject: [PATCH 055/233] chore: 1.0.0-alpha.45 changelog --- CHANGELOG.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5183dbd..e047e06c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,38 @@ + +# [1.0.0-alpha.45](https://github.com/vuejs/vuepress/compare/v1.0.0-alpha.44...v1.0.0-alpha.45) (2019-03-31) + + +### Bug Fixes + +* **$core:** do not register component in render function ([#1449](https://github.com/vuejs/vuepress/issues/1449)) ([ef82c47](https://github.com/vuejs/vuepress/commit/ef82c47)) +* **$core:** do not use stylus in outbound link ([d34e038](https://github.com/vuejs/vuepress/commit/d34e038)) +* **$core:** should default host be 0.0.0.0 ([699492a](https://github.com/vuejs/vuepress/commit/699492a)) +* **$markdown:** treat styl as stylus language ([#1433](https://github.com/vuejs/vuepress/issues/1433)) ([f44e2db](https://github.com/vuejs/vuepress/commit/f44e2db)) +* **$markdown-loader:** always use `/` instead of `\` in `relPath` ([#1484](https://github.com/vuejs/vuepress/issues/1484)) ([944ebe4](https://github.com/vuejs/vuepress/commit/944ebe4)) +* **$plugin-active-header-links:** side navigation edge case bug ([#1477](https://github.com/vuejs/vuepress/issues/1477)) ([8a11d14](https://github.com/vuejs/vuepress/commit/8a11d14)) +* **$plugin-blog:** inconsistent paths of tag and category pages with index page ([#1420](https://github.com/vuejs/vuepress/issues/1420)) ([5c0e62f](https://github.com/vuejs/vuepress/commit/5c0e62f)) +* **$plugin-pwa:** fix a typo in `opacity` ([#1444](https://github.com/vuejs/vuepress/issues/1444)) ([c174f0d](https://github.com/vuejs/vuepress/commit/c174f0d)) +* **$theme-default:** fix wrong editLink (close: [#1115](https://github.com/vuejs/vuepress/issues/1115), [#1125](https://github.com/vuejs/vuepress/issues/1125)) ([#1419](https://github.com/vuejs/vuepress/issues/1419)) ([3b14375](https://github.com/vuejs/vuepress/commit/3b14375)) +* **$theme-default:** nav url change bug (close: [#865](https://github.com/vuejs/vuepress/issues/865)) ([#1475](https://github.com/vuejs/vuepress/issues/1475)) ([521dddd](https://github.com/vuejs/vuepress/commit/521dddd)) + + +### Features + +* **$core:** allow dynamic routeBase at runtime ([fc99d59](https://github.com/vuejs/vuepress/commit/fc99d59)) +* **$core:** decode page path for better readablility ([#1438](https://github.com/vuejs/vuepress/issues/1438)) ([93b2ca1](https://github.com/vuejs/vuepress/commit/93b2ca1)) +* **$core:** export version ([#1486](https://github.com/vuejs/vuepress/issues/1486)) ([d7b8daf](https://github.com/vuejs/vuepress/commit/d7b8daf)) +* **$core:** functional siteConfig.evergreen ([#1489](https://github.com/vuejs/vuepress/issues/1489)) ([19e0569](https://github.com/vuejs/vuepress/commit/19e0569)) +* **$core:** support array as plugin options ([#1493](https://github.com/vuejs/vuepress/issues/1493)) ([9e07b1e](https://github.com/vuejs/vuepress/commit/9e07b1e)) +* **$markdown:** markdown plugin (close: [#585](https://github.com/vuejs/vuepress/issues/585)) ([#1422](https://github.com/vuejs/vuepress/issues/1422)) ([9734a58](https://github.com/vuejs/vuepress/commit/9734a58)) +* **$plugin-register-components:** custom name registration (close: [#656](https://github.com/vuejs/vuepress/issues/656)) ([#1418](https://github.com/vuejs/vuepress/issues/1418)) ([9c6a00b](https://github.com/vuejs/vuepress/commit/9c6a00b)) + + +### Breaking Changes + +* Depreated [@vuepress/plugin-container](https://www.npmjs.com/package/@vuepress/plugin-container) and moved it to [vuepress-plugin-container](https://www.npmjs.com/package/vuepress-plugin-container). +* Depreated [@vuepress/plugin-clean-urls](https://www.npmjs.com/package/@vuepress/plugin-clean-urls) and moved it to [vuepress-plugin-clean-urls](https://www.npmjs.com/package/vuepress-plugin-clean-urls). + + # [1.0.0-alpha.44](https://github.com/vuejs/vuepress/compare/v1.0.0-alpha.43...v1.0.0-alpha.44) (2019-03-10) From 5e12b4929f3a9ab45bf7ca6c7b800649420e1024 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 1 Apr 2019 00:45:05 +0800 Subject: [PATCH 056/233] fix($core): regression of introducing dynamic routerBase (close: #1498) Also renaming __VUEPRESS_ROUTE_BASE__ to __VUEPRESS_ROUTER_BASE__ --- packages/@vuepress/core/lib/client/app.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/client/app.js b/packages/@vuepress/core/lib/client/app.js index e89cb21a..236e1f76 100644 --- a/packages/@vuepress/core/lib/client/app.js +++ b/packages/@vuepress/core/lib/client/app.js @@ -61,8 +61,12 @@ Vue.prototype.$withBase = function (path) { } export function createApp (isServer) { + const routerBase = typeof window !== 'undefined' + ? window.__VUEPRESS_ROUTER_BASE__ + : (siteData.routerBase || siteData.base) + const router = new Router({ - base: window.__VUEPRESS_ROUTE_BASE__ || siteData.base, + base: routerBase, mode: 'history', fallback: false, routes, From b9da618d0a0be358ac2967ab5623d4902ff44aea Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 1 Apr 2019 00:48:44 +0800 Subject: [PATCH 057/233] v1.0.0-alpha.46 --- lerna.json | 2 +- packages/@vuepress/core/package.json | 12 ++++++------ packages/@vuepress/markdown-loader/package.json | 4 ++-- packages/@vuepress/markdown/package.json | 6 +++--- .../plugin-active-header-links/package.json | 2 +- packages/@vuepress/plugin-back-to-top/package.json | 2 +- packages/@vuepress/plugin-blog/package.json | 2 +- .../@vuepress/plugin-google-analytics/package.json | 2 +- .../@vuepress/plugin-last-updated/package.json | 2 +- packages/@vuepress/plugin-medium-zoom/package.json | 2 +- packages/@vuepress/plugin-nprogress/package.json | 2 +- packages/@vuepress/plugin-pagination/package.json | 2 +- packages/@vuepress/plugin-pwa/package.json | 4 ++-- .../plugin-register-components/package.json | 4 ++-- packages/@vuepress/plugin-search/package.json | 2 +- packages/@vuepress/shared-utils/package.json | 2 +- packages/@vuepress/test-utils/package.json | 6 +++--- packages/@vuepress/theme-blog/package.json | 10 +++++----- packages/@vuepress/theme-default/package.json | 8 ++++---- packages/@vuepress/theme-vue/package.json | 4 ++-- packages/blog/package.json | 6 +++--- packages/docs/package.json | 14 +++++++------- packages/vuepress/package.json | 6 +++--- 23 files changed, 53 insertions(+), 53 deletions(-) diff --git a/lerna.json b/lerna.json index a7e0899f..a0dd2828 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,5 @@ "lerna": "2.5.1", "npmClient": "yarn", "useWorkspaces": true, - "version": "1.0.0-alpha.45" + "version": "1.0.0-alpha.46" } diff --git a/packages/@vuepress/core/package.json b/packages/@vuepress/core/package.json index c63e8de7..1caa60f3 100644 --- a/packages/@vuepress/core/package.json +++ b/packages/@vuepress/core/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/core", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "Minimalistic doc generator with Vue component based layout system", "main": "lib/index.js", "repository": { @@ -31,11 +31,11 @@ "dependencies": { "@babel/core": "^7.0.0", "@vue/babel-preset-app": "^3.1.1", - "@vuepress/markdown": "^1.0.0-alpha.45", - "@vuepress/markdown-loader": "^1.0.0-alpha.45", - "@vuepress/plugin-last-updated": "^1.0.0-alpha.45", - "@vuepress/plugin-register-components": "^1.0.0-alpha.45", - "@vuepress/shared-utils": "^1.0.0-alpha.45", + "@vuepress/markdown": "^1.0.0-alpha.46", + "@vuepress/markdown-loader": "^1.0.0-alpha.46", + "@vuepress/plugin-last-updated": "^1.0.0-alpha.46", + "@vuepress/plugin-register-components": "^1.0.0-alpha.46", + "@vuepress/shared-utils": "^1.0.0-alpha.46", "autoprefixer": "^7.1.2", "babel-loader": "^8.0.4", "cache-loader": "^1.2.2", diff --git a/packages/@vuepress/markdown-loader/package.json b/packages/@vuepress/markdown-loader/package.json index feb2db05..654e11b0 100644 --- a/packages/@vuepress/markdown-loader/package.json +++ b/packages/@vuepress/markdown-loader/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/markdown-loader", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "markdown-loader for vuepress", "main": "index.js", "publishConfig": { @@ -18,7 +18,7 @@ "generator" ], "dependencies": { - "@vuepress/markdown": "^1.0.0-alpha.45", + "@vuepress/markdown": "^1.0.0-alpha.46", "loader-utils": "^1.1.0", "lru-cache": "^5.1.1" }, diff --git a/packages/@vuepress/markdown/package.json b/packages/@vuepress/markdown/package.json index 1288a56c..a2c3959a 100644 --- a/packages/@vuepress/markdown/package.json +++ b/packages/@vuepress/markdown/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/markdown", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "markdown for vuepress", "main": "index.js", "publishConfig": { @@ -19,7 +19,7 @@ "markdown" ], "dependencies": { - "@vuepress/shared-utils": "^1.0.0-alpha.45", + "@vuepress/shared-utils": "^1.0.0-alpha.46", "lru-cache": "^5.1.1", "markdown-it": "^8.4.1", "markdown-it-anchor": "^5.0.2", @@ -28,7 +28,7 @@ "prismjs": "^1.13.0" }, "devDependencies": { - "@vuepress/test-utils": "^1.0.0-alpha.45" + "@vuepress/test-utils": "^1.0.0-alpha.46" }, "author": "Evan You", "maintainers": [ diff --git a/packages/@vuepress/plugin-active-header-links/package.json b/packages/@vuepress/plugin-active-header-links/package.json index c2d0913c..106a7e77 100644 --- a/packages/@vuepress/plugin-active-header-links/package.json +++ b/packages/@vuepress/plugin-active-header-links/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-active-header-links", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "active-header-links plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-back-to-top/package.json b/packages/@vuepress/plugin-back-to-top/package.json index 33a63553..9fb649a5 100644 --- a/packages/@vuepress/plugin-back-to-top/package.json +++ b/packages/@vuepress/plugin-back-to-top/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-back-to-top", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "back-to-top plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-blog/package.json b/packages/@vuepress/plugin-blog/package.json index 3ada2389..8b0e5e43 100644 --- a/packages/@vuepress/plugin-blog/package.json +++ b/packages/@vuepress/plugin-blog/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-blog", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "blog plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-google-analytics/package.json b/packages/@vuepress/plugin-google-analytics/package.json index ac7b140b..717808f6 100644 --- a/packages/@vuepress/plugin-google-analytics/package.json +++ b/packages/@vuepress/plugin-google-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-google-analytics", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "google-analytics plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-last-updated/package.json b/packages/@vuepress/plugin-last-updated/package.json index 5719b0a7..3aff6f67 100644 --- a/packages/@vuepress/plugin-last-updated/package.json +++ b/packages/@vuepress/plugin-last-updated/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-last-updated", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "last-updated plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-medium-zoom/package.json b/packages/@vuepress/plugin-medium-zoom/package.json index af1c6e8f..8c2f2bbf 100644 --- a/packages/@vuepress/plugin-medium-zoom/package.json +++ b/packages/@vuepress/plugin-medium-zoom/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-medium-zoom", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "medium-zoom plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-nprogress/package.json b/packages/@vuepress/plugin-nprogress/package.json index ef9b73e3..cf633437 100644 --- a/packages/@vuepress/plugin-nprogress/package.json +++ b/packages/@vuepress/plugin-nprogress/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-nprogress", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "nprogress plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-pagination/package.json b/packages/@vuepress/plugin-pagination/package.json index c28394fc..24bc57c0 100644 --- a/packages/@vuepress/plugin-pagination/package.json +++ b/packages/@vuepress/plugin-pagination/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-pagination", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "pagination plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-pwa/package.json b/packages/@vuepress/plugin-pwa/package.json index 29df7cf7..9408bfe1 100644 --- a/packages/@vuepress/plugin-pwa/package.json +++ b/packages/@vuepress/plugin-pwa/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-pwa", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "pwa plugin for vuepress", "main": "index.js", "publishConfig": { @@ -18,7 +18,7 @@ "generator" ], "dependencies": { - "@vuepress/shared-utils": "^1.0.0-alpha.45", + "@vuepress/shared-utils": "^1.0.0-alpha.46", "register-service-worker": "^1.5.2", "workbox-build": "^3.1.0" }, diff --git a/packages/@vuepress/plugin-register-components/package.json b/packages/@vuepress/plugin-register-components/package.json index 9e4d1162..bcd8c22e 100644 --- a/packages/@vuepress/plugin-register-components/package.json +++ b/packages/@vuepress/plugin-register-components/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-register-components", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "register-global-components plugin for vuepress", "main": "index.js", "publishConfig": { @@ -24,6 +24,6 @@ }, "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/plugin-register-components#readme", "dependencies": { - "@vuepress/shared-utils": "^1.0.0-alpha.45" + "@vuepress/shared-utils": "^1.0.0-alpha.46" } } diff --git a/packages/@vuepress/plugin-search/package.json b/packages/@vuepress/plugin-search/package.json index 583dd938..43cecd03 100644 --- a/packages/@vuepress/plugin-search/package.json +++ b/packages/@vuepress/plugin-search/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-search", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "search plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/shared-utils/package.json b/packages/@vuepress/shared-utils/package.json index cff5c48f..2862b5af 100644 --- a/packages/@vuepress/shared-utils/package.json +++ b/packages/@vuepress/shared-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/shared-utils", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "shared-utils for vuepress", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@vuepress/test-utils/package.json b/packages/@vuepress/test-utils/package.json index 3837da22..13c40e68 100644 --- a/packages/@vuepress/test-utils/package.json +++ b/packages/@vuepress/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/test-utils", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "test-utils for vuepress", "main": "index.js", "publishConfig": { @@ -22,8 +22,8 @@ "@babel/preset-env": "^7.0.0", "@types/jest": "^24.0.9", "@vue/test-utils": "^1.0.0-beta.29", - "@vuepress/core": "^1.0.0-alpha.45", - "@vuepress/shared-utils": "^1.0.0-alpha.45", + "@vuepress/core": "^1.0.0-alpha.46", + "@vuepress/shared-utils": "^1.0.0-alpha.46", "babel-jest": "^24.1.0", "execa": "^0.10.0", "jest": "^24.1.0", diff --git a/packages/@vuepress/theme-blog/package.json b/packages/@vuepress/theme-blog/package.json index 7b896e2b..03834424 100644 --- a/packages/@vuepress/theme-blog/package.json +++ b/packages/@vuepress/theme-blog/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@vuepress/theme-blog", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "theme-blog for vuepress", "main": "index.js", "publishConfig": { @@ -19,10 +19,10 @@ "generator" ], "dependencies": { - "@vuepress/plugin-blog": "^1.0.0-alpha.45", - "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.45", - "@vuepress/plugin-pagination": "^1.0.0-alpha.45", - "@vuepress/plugin-search": "^1.0.0-alpha.45" + "@vuepress/plugin-blog": "^1.0.0-alpha.46", + "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.46", + "@vuepress/plugin-pagination": "^1.0.0-alpha.46", + "@vuepress/plugin-search": "^1.0.0-alpha.46" }, "author": "ULIVZ ", "license": "MIT", diff --git a/packages/@vuepress/theme-default/package.json b/packages/@vuepress/theme-default/package.json index c96162c5..68fd8848 100644 --- a/packages/@vuepress/theme-default/package.json +++ b/packages/@vuepress/theme-default/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/theme-default", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "Default theme for VuePress", "main": "index.js", "publishConfig": { @@ -30,9 +30,9 @@ }, "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/theme-default#readme", "dependencies": { - "@vuepress/plugin-active-header-links": "^1.0.0-alpha.45", - "@vuepress/plugin-nprogress": "^1.0.0-alpha.45", - "@vuepress/plugin-search": "^1.0.0-alpha.45", + "@vuepress/plugin-active-header-links": "^1.0.0-alpha.46", + "@vuepress/plugin-nprogress": "^1.0.0-alpha.46", + "@vuepress/plugin-search": "^1.0.0-alpha.46", "docsearch.js": "^2.5.2", "stylus": "^0.54.5", "stylus-loader": "^3.0.2", diff --git a/packages/@vuepress/theme-vue/package.json b/packages/@vuepress/theme-vue/package.json index 593a2ad6..249cc994 100644 --- a/packages/@vuepress/theme-vue/package.json +++ b/packages/@vuepress/theme-vue/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/theme-vue", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "VuePress theme for official Vue projects", "main": "index.js", "publishConfig": { @@ -30,6 +30,6 @@ }, "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/theme-vue#readme", "dependencies": { - "@vuepress/theme-default": "^1.0.0-alpha.45" + "@vuepress/theme-default": "^1.0.0-alpha.46" } } diff --git a/packages/blog/package.json b/packages/blog/package.json index f07c9bc6..34540a2d 100644 --- a/packages/blog/package.json +++ b/packages/blog/package.json @@ -2,13 +2,13 @@ "private": true, "name": "blog", "description": "blog of VuePress", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "scripts": { "dev": "vuepress dev source --temp .temp", "build": "vuepress build source --temp .temp" }, "dependencies": { - "@vuepress/theme-blog": "^1.0.0-alpha.45", - "vuepress": "^1.0.0-alpha.45" + "@vuepress/theme-blog": "^1.0.0-alpha.46", + "vuepress": "^1.0.0-alpha.46" } } diff --git a/packages/docs/package.json b/packages/docs/package.json index 1b9ebb8d..21389459 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "name": "docs", "description": "docs of VuePress", "scripts": { @@ -25,13 +25,13 @@ }, "homepage": "https://github.com/vuejs/vuepress#readme", "devDependencies": { - "@vuepress/plugin-back-to-top": "^1.0.0-alpha.45", - "@vuepress/plugin-google-analytics": "^1.0.0-alpha.45", - "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.45", - "@vuepress/plugin-pwa": "^1.0.0-alpha.45", - "@vuepress/theme-vue": "^1.0.0-alpha.45", + "@vuepress/plugin-back-to-top": "^1.0.0-alpha.46", + "@vuepress/plugin-google-analytics": "^1.0.0-alpha.46", + "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.46", + "@vuepress/plugin-pwa": "^1.0.0-alpha.46", + "@vuepress/theme-vue": "^1.0.0-alpha.46", "vue-toasted": "^1.1.25", - "vuepress": "^1.0.0-alpha.45", + "vuepress": "^1.0.0-alpha.46", "vuepress-plugin-flowchart": "^1.4.2" } } diff --git a/packages/vuepress/package.json b/packages/vuepress/package.json index f74608c2..f510b2fb 100644 --- a/packages/vuepress/package.json +++ b/packages/vuepress/package.json @@ -1,6 +1,6 @@ { "name": "vuepress", - "version": "1.0.0-alpha.45", + "version": "1.0.0-alpha.46", "description": "Minimalistic doc generator with Vue component based layout system", "main": "index.js", "repository": { @@ -29,8 +29,8 @@ }, "homepage": "https://github.com/vuejs/vuepress#readme", "dependencies": { - "@vuepress/core": "^1.0.0-alpha.45", - "@vuepress/theme-default": "^1.0.0-alpha.45", + "@vuepress/core": "^1.0.0-alpha.46", + "@vuepress/theme-default": "^1.0.0-alpha.46", "cac": "^6.3.9" }, "engines": { From 2ced5b1aa60416c5085e193899b1ca08b12b61cf Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 1 Apr 2019 00:50:51 +0800 Subject: [PATCH 058/233] chore: 1.0.0-alpha.46 changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e047e06c..6c4193fc 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +### Bug Fixes + +* **$core:** regression of introducing dynamic `routerBase` (close: [#1498](https://github.com/vuejs/vuepress/issues/1498)) ([5e12b49](https://github.com/vuejs/vuepress/commit/5e12b49)) + + + # [1.0.0-alpha.45](https://github.com/vuejs/vuepress/compare/v1.0.0-alpha.44...v1.0.0-alpha.45) (2019-03-31) From dc524128647a5f8f576bbf4bdbfcb4cc291fec4a Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 1 Apr 2019 00:54:33 +0800 Subject: [PATCH 059/233] ci: update CI setup --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 88094174..d2cebd28 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -34,4 +34,4 @@ jobs: key: v1-dependencies-{{ checksum "package.json" }} # run tests! - - run: yarn lint && yarn test + - run: yarn build && yarn lint && yarn test From 47c02ce824c5acb687844c8ecbe23367835e5547 Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Tue, 2 Apr 2019 23:54:33 +0800 Subject: [PATCH 060/233] $theme-default: support options.activeHeaderLinks (close: #1488) (#1508) --- packages/@vuepress/theme-default/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/theme-default/index.js b/packages/@vuepress/theme-default/index.js index f6caeda7..01de7b12 100644 --- a/packages/@vuepress/theme-default/index.js +++ b/packages/@vuepress/theme-default/index.js @@ -18,7 +18,7 @@ module.exports = (options, ctx) => ({ }, plugins: [ - '@vuepress/active-header-links', + ['@vuepress/active-header-links', options.activeHeaderLinks], '@vuepress/search', '@vuepress/plugin-nprogress', ['container', { From 9fba54931c80bab6b0ab7a446ca97687342baf7d Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Wed, 3 Apr 2019 00:03:18 +0800 Subject: [PATCH 061/233] fix($core): routerBase will always get '/' (close: #1503) --- packages/@vuepress/core/lib/client/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/client/app.js b/packages/@vuepress/core/lib/client/app.js index 236e1f76..b29717a9 100644 --- a/packages/@vuepress/core/lib/client/app.js +++ b/packages/@vuepress/core/lib/client/app.js @@ -61,7 +61,7 @@ Vue.prototype.$withBase = function (path) { } export function createApp (isServer) { - const routerBase = typeof window !== 'undefined' + const routerBase = typeof window !== 'undefined' && window.__VUEPRESS_ROUTER_BASE__ ? window.__VUEPRESS_ROUTER_BASE__ : (siteData.routerBase || siteData.base) From 5876001e02f64c3101ca5b03b78eb26696bdbd8f Mon Sep 17 00:00:00 2001 From: Sergiu Marton Date: Wed, 3 Apr 2019 18:49:00 +0300 Subject: [PATCH 062/233] docs: fix typo (#1510) --- packages/docs/docs/plugin/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs/docs/plugin/README.md b/packages/docs/docs/plugin/README.md index 09d6378d..6c16067f 100644 --- a/packages/docs/docs/plugin/README.md +++ b/packages/docs/docs/plugin/README.md @@ -5,6 +5,6 @@ Plugins usually add global-level functionality to VuePress. There is no strictly 1. Extend the page's metadata generated at compile time. e.g. [@vuepress/plugin-last-updated](./official/plugin-last-updated.md); 2. Generate extra files before or after compilation. e.g. [@vuepress/plugin-pwa](./official/plugin-pwa.md); 3. Inject global UI. e.g. [@vuepress/plugin-back-to-top](./official/plugin-back-to-top.md); -4. Exntend command of CLI,如 [vuepress-plugin-export](https://github.com/ulivz/vuepress-plugin-export)。 +4. Extend the CLI with custom commands. e.g. [vuepress-plugin-export](https://github.com/ulivz/vuepress-plugin-export). ![Architecture of VuePress](/architecture.png) From dabf506022978ecf5101ff49cc9de1776a552ab5 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 7 Apr 2019 00:45:06 +0800 Subject: [PATCH 063/233] fix($core): `Index.styl` is not injected at the end of the style bundle (close: #1523) BTW, A theme cannot require the theme's styles at the layout but need use `Index.styl` instead. --- .../core/lib/node/internal-plugins/palette/index.js | 11 +++++++++-- .../core/lib/node/internal-plugins/style/index.js | 13 +++++++++++-- packages/@vuepress/theme-default/layouts/404.vue | 2 -- packages/@vuepress/theme-default/layouts/Layout.vue | 1 - .../theme-default/styles/{theme.styl => index.styl} | 0 5 files changed, 20 insertions(+), 7 deletions(-) rename packages/@vuepress/theme-default/styles/{theme.styl => index.styl} (100%) diff --git a/packages/@vuepress/core/lib/node/internal-plugins/palette/index.js b/packages/@vuepress/core/lib/node/internal-plugins/palette/index.js index 7327c4e0..49d162ec 100644 --- a/packages/@vuepress/core/lib/node/internal-plugins/palette/index.js +++ b/packages/@vuepress/core/lib/node/internal-plugins/palette/index.js @@ -31,15 +31,22 @@ module.exports = (options, ctx) => ({ ? `@import(${JSON.stringify(userPalette.replace(/[\\]+/g, '/'))})` : '' + const nullComment = '// null' + // user's palette can override theme's palette. - let paletteContent = themePaletteContent + userPaletteContent + let paletteContent = '// Theme\'s Palette\n' + + (themePaletteContent || nullComment) + + '\n\n// User\'s Palette\n' + + (userPaletteContent || nullComment) if (ctx.themeAPI.existsParentTheme) { const parentThemePalette = path.resolve(ctx.themeAPI.parentTheme.path, 'styles/palette.styl') const parentThemePaletteContent = fs.existsSync(parentThemePalette) ? `@import(${JSON.stringify(parentThemePalette.replace(/[\\]+/g, '/'))})` : '' - paletteContent = parentThemePaletteContent + paletteContent + paletteContent = '// Parent Theme\'s Palette\n' + + (parentThemePaletteContent || nullComment) + + '\n\n' + paletteContent } await writeTemp('palette.styl', paletteContent) diff --git a/packages/@vuepress/core/lib/node/internal-plugins/style/index.js b/packages/@vuepress/core/lib/node/internal-plugins/style/index.js index 2055be69..b8a54871 100644 --- a/packages/@vuepress/core/lib/node/internal-plugins/style/index.js +++ b/packages/@vuepress/core/lib/node/internal-plugins/style/index.js @@ -30,14 +30,23 @@ module.exports = (options, ctx) => ({ ? `@import(${JSON.stringify(userStyle.replace(/[\\]+/g, '/'))})` : '' - let styleContent = themeStyleContent + userStyleContent + const nullComment = '// null' + + // user's styles can override theme's styles. + let styleContent = '// Theme\'s Styles\n' + + (themeStyleContent || nullComment) + + '\n\n// User\'s Styles\n' + + (userStyleContent || nullComment) if (themeAPI.existsParentTheme) { const parentThemeStyle = path.resolve(themeAPI.parentTheme.path, 'styles/index.styl') const parentThemeStyleContent = fs.existsSync(parentThemeStyle) ? `@import(${JSON.stringify(parentThemeStyle.replace(/[\\]+/g, '/'))})` : '' - styleContent = parentThemeStyleContent + styleContent + + styleContent = '// Parent Theme\'s Styles\n' + + (parentThemeStyleContent || nullComment) + + '\n\n' + styleContent } await writeTemp('style.styl', styleContent) diff --git a/packages/@vuepress/theme-default/layouts/404.vue b/packages/@vuepress/theme-default/layouts/404.vue index 4eef36d3..6aefe797 100644 --- a/packages/@vuepress/theme-default/layouts/404.vue +++ b/packages/@vuepress/theme-default/layouts/404.vue @@ -24,5 +24,3 @@ export default { } } - - diff --git a/packages/@vuepress/theme-default/layouts/Layout.vue b/packages/@vuepress/theme-default/layouts/Layout.vue index d1960a3e..93aab9e0 100644 --- a/packages/@vuepress/theme-default/layouts/Layout.vue +++ b/packages/@vuepress/theme-default/layouts/Layout.vue @@ -147,4 +147,3 @@ export default { - diff --git a/packages/@vuepress/theme-default/styles/theme.styl b/packages/@vuepress/theme-default/styles/index.styl similarity index 100% rename from packages/@vuepress/theme-default/styles/theme.styl rename to packages/@vuepress/theme-default/styles/index.styl From 5c307c99b940bfd8081e53e814fb8e415051dcf1 Mon Sep 17 00:00:00 2001 From: Nick Evans Date: Sat, 6 Apr 2019 11:51:37 -0500 Subject: [PATCH 064/233] fix($markdown): Snippets should allow spaces in file path (closes #1505) (#1517) --- .../__tests__/__snapshots__/snippet.spec.js.snap | 10 ++++++++++ .../fragments/code-snippet-with-space-in-path.md | 1 + .../__tests__/fragments/snippet with spaces.js | 3 +++ packages/@vuepress/markdown/__tests__/snippet.spec.js | 6 ++++++ packages/@vuepress/markdown/lib/snippet.js | 2 +- 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 packages/@vuepress/markdown/__tests__/fragments/code-snippet-with-space-in-path.md create mode 100644 packages/@vuepress/markdown/__tests__/fragments/snippet with spaces.js diff --git a/packages/@vuepress/markdown/__tests__/__snapshots__/snippet.spec.js.snap b/packages/@vuepress/markdown/__tests__/__snapshots__/snippet.spec.js.snap index 1514907d..d62e8722 100644 --- a/packages/@vuepress/markdown/__tests__/__snapshots__/snippet.spec.js.snap +++ b/packages/@vuepress/markdown/__tests__/__snapshots__/snippet.spec.js.snap @@ -1,5 +1,15 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`snippet import snipets when the file has a space in the file path 1`] = ` +
    +
     
    +
     
    +
     

    +
    export default function () { +// .. +} +`; + exports[`snippet import snippet 1`] = `
    export default function () {
       // ..
    diff --git a/packages/@vuepress/markdown/__tests__/fragments/code-snippet-with-space-in-path.md b/packages/@vuepress/markdown/__tests__/fragments/code-snippet-with-space-in-path.md
    new file mode 100644
    index 00000000..659cb258
    --- /dev/null
    +++ b/packages/@vuepress/markdown/__tests__/fragments/code-snippet-with-space-in-path.md
    @@ -0,0 +1 @@
    +<<< @/packages/@vuepress/markdown/__tests__/fragments/snippet with spaces.js {1-3}
    diff --git a/packages/@vuepress/markdown/__tests__/fragments/snippet with spaces.js b/packages/@vuepress/markdown/__tests__/fragments/snippet with spaces.js
    new file mode 100644
    index 00000000..575039d1
    --- /dev/null
    +++ b/packages/@vuepress/markdown/__tests__/fragments/snippet with spaces.js	
    @@ -0,0 +1,3 @@
    +export default function () {
    +  // ..
    +}
    diff --git a/packages/@vuepress/markdown/__tests__/snippet.spec.js b/packages/@vuepress/markdown/__tests__/snippet.spec.js
    index bd3a23cf..4a2c65f8 100644
    --- a/packages/@vuepress/markdown/__tests__/snippet.spec.js
    +++ b/packages/@vuepress/markdown/__tests__/snippet.spec.js
    @@ -24,4 +24,10 @@ describe('snippet', () => {
         const output = mdH.render(input)
         expect(output).toMatchSnapshot()
       })
    +
    +  test('import snipets when the file has a space in the file path', () => {
    +    const input = getFragment(__dirname, 'code-snippet-with-space-in-path.md')
    +    const output = mdH.render(input)
    +    expect(output).toMatchSnapshot()
    +  })
     })
    diff --git a/packages/@vuepress/markdown/lib/snippet.js b/packages/@vuepress/markdown/lib/snippet.js
    index b0b88f18..7713da90 100644
    --- a/packages/@vuepress/markdown/lib/snippet.js
    +++ b/packages/@vuepress/markdown/lib/snippet.js
    @@ -44,7 +44,7 @@ module.exports = function snippet (md, options = {}) {
         const start = pos + 3
         const end = state.skipSpacesBack(max, pos)
         const rawPath = state.src.slice(start, end).trim().replace(/^@/, root)
    -    const filename = rawPath.split(/[{\s]/).shift()
    +    const filename = rawPath.split(/{/).shift().trim()
         const meta = rawPath.replace(filename, '')
     
         state.line = startLine + 1
    
    From 74887c50da1001df27b9ece1d8f10cb611ac4728 Mon Sep 17 00:00:00 2001
    From: Shigma <33423008+Shigma@users.noreply.github.com>
    Date: Sun, 7 Apr 2019 00:55:49 +0800
    Subject: [PATCH 065/233] feat($core): assert return type for functional plugin
     (#1516)
    
    ---
     packages/@vuepress/core/lib/node/plugin-api/util.js | 8 ++++++++
     1 file changed, 8 insertions(+)
    
    diff --git a/packages/@vuepress/core/lib/node/plugin-api/util.js b/packages/@vuepress/core/lib/node/plugin-api/util.js
    index a0d7be90..b3c17a50 100644
    --- a/packages/@vuepress/core/lib/node/plugin-api/util.js
    +++ b/packages/@vuepress/core/lib/node/plugin-api/util.js
    @@ -43,6 +43,14 @@ exports.flattenPlugin = function (
         // 'Object.create' here is to give each plugin a separate context,
         // but also own the inheritance context.
         config = config(pluginOptions, Object.create(pluginContext), self)
    +    const { valid, warnMsg } = assertTypes(config, [Object])
    +    if (!valid) {
    +      logger.warn(
    +        `[${chalk.gray(shortcut)}] `
    +        + `Invalid value for plugin: ${warnMsg}`
    +      )
    +      config = {}
    +    }
       }
     
       // respect name in local plugin config
    
    From 6da9a5f112fae442ca26b14374d18ca560769053 Mon Sep 17 00:00:00 2001
    From: ULIVZ <472590061@qq.com>
    Date: Sun, 7 Apr 2019 01:08:05 +0800
    Subject: [PATCH 066/233] feat($core): emit warning if the source directory
     doesn't exist (close: #1521)
    
    ---
     packages/@vuepress/core/lib/node/App.js | 3 +++
     1 file changed, 3 insertions(+)
    
    diff --git a/packages/@vuepress/core/lib/node/App.js b/packages/@vuepress/core/lib/node/App.js
    index 8684b652..e1897bae 100755
    --- a/packages/@vuepress/core/lib/node/App.js
    +++ b/packages/@vuepress/core/lib/node/App.js
    @@ -41,6 +41,9 @@ module.exports = class App {
         this.options = options
         this.sourceDir = this.options.sourceDir || path.join(__dirname, 'docs.fallback')
         logger.debug('sourceDir', this.sourceDir)
    +    if (!fs.existsSync(this.sourceDir)) {
    +      logger.warn(`Source directory doesn't exist: ${chalk.yellow(this.sourceDir)}`)
    +    }
     
         const { tempPath, writeTemp } = createTemp(options.temp)
         this.tempPath = tempPath
    
    From 9420ca92332f21ef81e2f9046286111983810b59 Mon Sep 17 00:00:00 2001
    From: ULIVZ <472590061@qq.com>
    Date: Sun, 7 Apr 2019 01:29:01 +0800
    Subject: [PATCH 067/233] chore: bump to
     optimize-css-assets-webpack-plugin@5.0.1
    
    ---
     .../lib/node/webpack/createClientConfig.js    |   3 +-
     packages/@vuepress/core/package.json          |   3 +-
     yarn.lock                                     | 560 +++++++++++++++++-
     3 files changed, 542 insertions(+), 24 deletions(-)
    
    diff --git a/packages/@vuepress/core/lib/node/webpack/createClientConfig.js b/packages/@vuepress/core/lib/node/webpack/createClientConfig.js
    index d6a8262c..c4aaae75 100644
    --- a/packages/@vuepress/core/lib/node/webpack/createClientConfig.js
    +++ b/packages/@vuepress/core/lib/node/webpack/createClientConfig.js
    @@ -7,6 +7,7 @@
     module.exports = function createClientConfig (ctx) {
       const { env } = require('@vuepress/shared-utils')
       const createBaseConfig = require('./createBaseConfig')
    +  const safeParser = require('postcss-safe-parser')
     
       const config = createBaseConfig(ctx)
     
    @@ -49,7 +50,7 @@ module.exports = function createClientConfig (ctx) {
           .use(require('optimize-css-assets-webpack-plugin'), [{
             canPrint: false,
             cssProcessorOptions: {
    -          safe: true,
    +          parser: safeParser,
               autoprefixer: { disable: true },
               mergeLonghand: false
             }
    diff --git a/packages/@vuepress/core/package.json b/packages/@vuepress/core/package.json
    index 1caa60f3..7a4ace48 100644
    --- a/packages/@vuepress/core/package.json
    +++ b/packages/@vuepress/core/package.json
    @@ -48,9 +48,10 @@
         "js-yaml": "^3.11.0",
         "lru-cache": "^5.1.1",
         "mini-css-extract-plugin": "0.4.4",
    -    "optimize-css-assets-webpack-plugin": "^4.0.0",
    +    "optimize-css-assets-webpack-plugin": "^5.0.1",
         "portfinder": "^1.0.13",
         "postcss-loader": "^2.1.5",
    +    "postcss-safe-parser": "^4.0.1",
         "toml": "^2.3.3",
         "url-loader": "^1.0.1",
         "vue": "^2.5.16",
    diff --git a/yarn.lock b/yarn.lock
    index 8ede5424..5d7d6520 100644
    --- a/yarn.lock
    +++ b/yarn.lock
    @@ -1347,6 +1347,10 @@
       version "10.12.29"
       resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.29.tgz#c2c8d2d27bb55649fbafe8ea1731658421f38acf"
     
    +"@types/q@^1.5.1":
    +  version "1.5.2"
    +  resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
    +
     "@types/semver@^5.5.0":
       version "5.5.0"
       resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45"
    @@ -1706,7 +1710,7 @@ algoliasearch@^3.24.5:
         semver "^5.1.0"
         tunnel-agent "^0.6.0"
     
    -alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
    +alphanum-sort@^1.0.0, alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
     
    @@ -2122,7 +2126,7 @@ bonjour@^3.5.0:
         multicast-dns "^6.0.1"
         multicast-dns-service-types "^1.1.0"
     
    -boolbase@~1.0.0:
    +boolbase@^1.0.0, boolbase@~1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
     
    @@ -2229,6 +2233,14 @@ browserslist@^2.11.3:
         caniuse-lite "^1.0.30000792"
         electron-to-chromium "^1.3.30"
     
    +browserslist@^4.0.0:
    +  version "4.5.4"
    +  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.5.4.tgz#166c4ecef3b51737a42436ea8002aeea466ea2c7"
    +  dependencies:
    +    caniuse-lite "^1.0.30000955"
    +    electron-to-chromium "^1.3.122"
    +    node-releases "^1.1.13"
    +
     browserslist@^4.3.4:
       version "4.4.2"
       resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.2.tgz#6ea8a74d6464bb0bd549105f659b41197d8f0ba2"
    @@ -2434,10 +2446,23 @@ caniuse-api@^1.5.2:
         lodash.memoize "^4.1.2"
         lodash.uniq "^4.5.0"
     
    +caniuse-api@^3.0.0:
    +  version "3.0.0"
    +  resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
    +  dependencies:
    +    browserslist "^4.0.0"
    +    caniuse-lite "^1.0.0"
    +    lodash.memoize "^4.1.2"
    +    lodash.uniq "^4.5.0"
    +
     caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
       version "1.0.30000939"
       resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000939.tgz#8cb54a9868fe040fbf2e2441408c68b7008912e8"
     
    +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000955:
    +  version "1.0.30000957"
    +  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz#fb1026bf184d7d62c685205358c3b24b9e29f7b3"
    +
     caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30000939:
       version "1.0.30000939"
       resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000939.tgz#b9ab7ac9e861bf78840b80c5dfbc471a5cd7e679"
    @@ -2594,6 +2619,14 @@ co@^4.6.0:
       version "4.6.0"
       resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
     
    +coa@^2.0.2:
    +  version "2.0.2"
    +  resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
    +  dependencies:
    +    "@types/q" "^1.5.1"
    +    chalk "^2.4.1"
    +    q "^1.1.2"
    +
     coa@~1.0.1:
       version "1.0.4"
       resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
    @@ -2611,7 +2644,7 @@ collection-visit@^1.0.0:
         map-visit "^1.0.0"
         object-visit "^1.0.0"
     
    -color-convert@^1.3.0, color-convert@^1.9.0:
    +color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.1:
       version "1.9.3"
       resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
       dependencies:
    @@ -2631,6 +2664,13 @@ color-string@^0.3.0:
       dependencies:
         color-name "^1.0.0"
     
    +color-string@^1.5.2:
    +  version "1.5.3"
    +  resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
    +  dependencies:
    +    color-name "^1.0.0"
    +    simple-swizzle "^0.2.2"
    +
     color@^0.11.0:
       version "0.11.4"
       resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
    @@ -2639,6 +2679,13 @@ color@^0.11.0:
         color-convert "^1.3.0"
         color-string "^0.3.0"
     
    +color@^3.0.0:
    +  version "3.1.0"
    +  resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc"
    +  dependencies:
    +    color-convert "^1.9.1"
    +    color-string "^1.5.2"
    +
     colormin@^1.0.5:
       version "1.1.2"
       resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
    @@ -3055,6 +3102,15 @@ cosmiconfig@^4.0.0:
         parse-json "^4.0.0"
         require-from-string "^2.0.1"
     
    +cosmiconfig@^5.0.0:
    +  version "5.2.0"
    +  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.0.tgz#45038e4d28a7fe787203aede9c25bca4a08b12c8"
    +  dependencies:
    +    import-fresh "^2.0.0"
    +    is-directory "^0.3.1"
    +    js-yaml "^3.13.0"
    +    parse-json "^4.0.0"
    +
     cosmiconfig@^5.0.2, cosmiconfig@^5.1.0:
       version "5.1.0"
       resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.1.0.tgz#6c5c35e97f37f985061cdf653f114784231185cf"
    @@ -3127,10 +3183,17 @@ crypto-browserify@^3.11.0:
         randombytes "^2.0.0"
         randomfill "^1.0.3"
     
    -css-color-names@0.0.4:
    +css-color-names@0.0.4, css-color-names@^0.0.4:
       version "0.0.4"
       resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
     
    +css-declaration-sorter@^4.0.1:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
    +  dependencies:
    +    postcss "^7.0.1"
    +    timsort "^0.3.0"
    +
     css-loader@^0.28.11:
       version "0.28.11"
       resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7"
    @@ -3154,6 +3217,10 @@ css-parse@1.7.x:
       version "1.7.0"
       resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b"
     
    +css-select-base-adapter@^0.1.1:
    +  version "0.1.1"
    +  resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
    +
     css-select@^1.1.0:
       version "1.2.0"
       resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
    @@ -3163,6 +3230,15 @@ css-select@^1.1.0:
         domutils "1.5.1"
         nth-check "~1.0.1"
     
    +css-select@^2.0.0:
    +  version "2.0.2"
    +  resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede"
    +  dependencies:
    +    boolbase "^1.0.0"
    +    css-what "^2.1.2"
    +    domutils "^1.7.0"
    +    nth-check "^1.0.2"
    +
     css-selector-tokenizer@^0.7.0:
       version "0.7.1"
       resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d"
    @@ -3171,7 +3247,29 @@ css-selector-tokenizer@^0.7.0:
         fastparse "^1.1.1"
         regexpu-core "^1.0.0"
     
    -css-what@2.1:
    +css-tree@1.0.0-alpha.28:
    +  version "1.0.0-alpha.28"
    +  resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f"
    +  dependencies:
    +    mdn-data "~1.1.0"
    +    source-map "^0.5.3"
    +
    +css-tree@1.0.0-alpha.29:
    +  version "1.0.0-alpha.29"
    +  resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
    +  dependencies:
    +    mdn-data "~1.1.0"
    +    source-map "^0.5.3"
    +
    +css-unit-converter@^1.1.1:
    +  version "1.1.1"
    +  resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
    +
    +css-url-regex@^1.1.0:
    +  version "1.1.0"
    +  resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec"
    +
    +css-what@2.1, css-what@^2.1.2:
       version "2.1.3"
       resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
     
    @@ -3192,6 +3290,59 @@ cssesc@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
     
    +cssnano-preset-default@^4.0.7:
    +  version "4.0.7"
    +  resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
    +  dependencies:
    +    css-declaration-sorter "^4.0.1"
    +    cssnano-util-raw-cache "^4.0.1"
    +    postcss "^7.0.0"
    +    postcss-calc "^7.0.1"
    +    postcss-colormin "^4.0.3"
    +    postcss-convert-values "^4.0.1"
    +    postcss-discard-comments "^4.0.2"
    +    postcss-discard-duplicates "^4.0.2"
    +    postcss-discard-empty "^4.0.1"
    +    postcss-discard-overridden "^4.0.1"
    +    postcss-merge-longhand "^4.0.11"
    +    postcss-merge-rules "^4.0.3"
    +    postcss-minify-font-values "^4.0.2"
    +    postcss-minify-gradients "^4.0.2"
    +    postcss-minify-params "^4.0.2"
    +    postcss-minify-selectors "^4.0.2"
    +    postcss-normalize-charset "^4.0.1"
    +    postcss-normalize-display-values "^4.0.2"
    +    postcss-normalize-positions "^4.0.2"
    +    postcss-normalize-repeat-style "^4.0.2"
    +    postcss-normalize-string "^4.0.2"
    +    postcss-normalize-timing-functions "^4.0.2"
    +    postcss-normalize-unicode "^4.0.1"
    +    postcss-normalize-url "^4.0.1"
    +    postcss-normalize-whitespace "^4.0.2"
    +    postcss-ordered-values "^4.1.2"
    +    postcss-reduce-initial "^4.0.3"
    +    postcss-reduce-transforms "^4.0.2"
    +    postcss-svgo "^4.0.2"
    +    postcss-unique-selectors "^4.0.1"
    +
    +cssnano-util-get-arguments@^4.0.0:
    +  version "4.0.0"
    +  resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
    +
    +cssnano-util-get-match@^4.0.0:
    +  version "4.0.0"
    +  resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
    +
    +cssnano-util-raw-cache@^4.0.1:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
    +  dependencies:
    +    postcss "^7.0.0"
    +
    +cssnano-util-same-parent@^4.0.0:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
    +
     cssnano@^3.10.0:
       version "3.10.0"
       resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
    @@ -3229,6 +3380,21 @@ cssnano@^3.10.0:
         postcss-value-parser "^3.2.3"
         postcss-zindex "^2.0.1"
     
    +cssnano@^4.1.0:
    +  version "4.1.10"
    +  resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
    +  dependencies:
    +    cosmiconfig "^5.0.0"
    +    cssnano-preset-default "^4.0.7"
    +    is-resolvable "^1.0.0"
    +    postcss "^7.0.0"
    +
    +csso@^3.5.1:
    +  version "3.5.1"
    +  resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
    +  dependencies:
    +    css-tree "1.0.0-alpha.29"
    +
     csso@~2.3.1:
       version "2.3.2"
       resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
    @@ -3384,7 +3550,7 @@ defaults@^1.0.3:
       dependencies:
         clone "^1.0.2"
     
    -define-properties@^1.1.2:
    +define-properties@^1.1.2, define-properties@^1.1.3:
       version "1.1.3"
       resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
       dependencies:
    @@ -3586,7 +3752,7 @@ domutils@1.5.1:
         dom-serializer "0"
         domelementtype "1"
     
    -domutils@^1.5.1:
    +domutils@^1.5.1, domutils@^1.7.0:
       version "1.7.0"
       resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
       dependencies:
    @@ -3599,7 +3765,7 @@ dot-prop@^3.0.0:
       dependencies:
         is-obj "^1.0.0"
     
    -dot-prop@^4.2.0:
    +dot-prop@^4.1.1, dot-prop@^4.2.0:
       version "4.2.0"
       resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
       dependencies:
    @@ -3644,6 +3810,10 @@ electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.113, electron-to-chromium
       version "1.3.113"
       resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz#b1ccf619df7295aea17bc6951dc689632629e4a9"
     
    +electron-to-chromium@^1.3.122:
    +  version "1.3.124"
    +  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz#861fc0148748a11b3e5ccebdf8b795ff513fa11f"
    +
     elegant-spinner@^1.0.1:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
    @@ -3715,7 +3885,7 @@ error-ex@^1.2.0, error-ex@^1.3.1:
       dependencies:
         is-arrayish "^0.2.1"
     
    -es-abstract@^1.5.1:
    +es-abstract@^1.12.0, es-abstract@^1.5.1:
       version "1.13.0"
       resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
       dependencies:
    @@ -4679,7 +4849,7 @@ has-values@^1.0.0:
         is-number "^3.0.0"
         kind-of "^4.0.0"
     
    -has@^1.0.1, has@^1.0.3:
    +has@^1.0.0, has@^1.0.1, has@^1.0.3:
       version "1.0.3"
       resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
       dependencies:
    @@ -4707,6 +4877,10 @@ he@1.2.x, he@^1.1.0:
       version "1.2.0"
       resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
     
    +hex-color-regex@^1.1.0:
    +  version "1.1.0"
    +  resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
    +
     hmac-drbg@^1.0.0:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
    @@ -4739,6 +4913,14 @@ hpack.js@^2.1.6:
         readable-stream "^2.0.1"
         wbuf "^1.1.0"
     
    +hsl-regex@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
    +
    +hsla-regex@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
    +
     html-comment-regex@^1.1.0:
       version "1.1.2"
       resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
    @@ -5071,6 +5253,10 @@ is-arrayish@^0.2.1:
       version "0.2.1"
       resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
     
    +is-arrayish@^0.3.1:
    +  version "0.3.2"
    +  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
    +
     is-binary-path@^1.0.0:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
    @@ -5097,6 +5283,17 @@ is-ci@^2.0.0:
       dependencies:
         ci-info "^2.0.0"
     
    +is-color-stop@^1.0.0:
    +  version "1.1.0"
    +  resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
    +  dependencies:
    +    css-color-names "^0.0.4"
    +    hex-color-regex "^1.1.0"
    +    hsl-regex "^1.0.0"
    +    hsla-regex "^1.0.0"
    +    rgb-regex "^1.0.1"
    +    rgba-regex "^1.0.0"
    +
     is-data-descriptor@^0.1.4:
       version "0.1.4"
       resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
    @@ -5259,6 +5456,12 @@ is-svg@^2.0.0:
       dependencies:
         html-comment-regex "^1.1.0"
     
    +is-svg@^3.0.0:
    +  version "3.0.0"
    +  resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
    +  dependencies:
    +    html-comment-regex "^1.1.0"
    +
     is-symbol@^1.0.2:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
    @@ -5753,6 +5956,13 @@ js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
         argparse "^1.0.7"
         esprima "^4.0.0"
     
    +js-yaml@^3.13.0:
    +  version "3.13.1"
    +  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
    +  dependencies:
    +    argparse "^1.0.7"
    +    esprima "^4.0.0"
    +
     js-yaml@~3.7.0:
       version "3.7.0"
       resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
    @@ -6317,6 +6527,10 @@ md5.js@^1.3.4:
         inherits "^2.0.1"
         safe-buffer "^5.1.2"
     
    +mdn-data@~1.1.0:
    +  version "1.1.4"
    +  resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
    +
     mdurl@^1.0.1:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
    @@ -6750,6 +6964,12 @@ node-pre-gyp@^0.10.0:
         semver "^5.3.0"
         tar "^4"
     
    +node-releases@^1.1.13:
    +  version "1.1.13"
    +  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.13.tgz#8c03296b5ae60c08e2ff4f8f22ae45bd2f210083"
    +  dependencies:
    +    semver "^5.3.0"
    +
     node-releases@^1.1.8:
       version "1.1.9"
       resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.9.tgz#70d0985ec4bf7de9f08fc481f5dae111889ca482"
    @@ -6811,7 +7031,7 @@ normalize-url@^1.4.0:
         query-string "^4.1.0"
         sort-keys "^1.0.0"
     
    -normalize-url@^3.3.0:
    +normalize-url@^3.0.0, normalize-url@^3.3.0:
       version "3.3.0"
       resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
     
    @@ -6900,7 +7120,7 @@ nprogress@^0.2.0:
       version "0.2.0"
       resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1"
     
    -nth-check@~1.0.1:
    +nth-check@^1.0.2, nth-check@~1.0.1:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
       dependencies:
    @@ -6966,6 +7186,15 @@ object.pick@^1.3.0:
       dependencies:
         isobject "^3.0.1"
     
    +object.values@^1.1.0:
    +  version "1.1.0"
    +  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
    +  dependencies:
    +    define-properties "^1.1.3"
    +    es-abstract "^1.12.0"
    +    function-bind "^1.1.1"
    +    has "^1.0.3"
    +
     obuf@^1.0.0, obuf@^1.1.2:
       version "1.1.2"
       resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
    @@ -7009,11 +7238,11 @@ optimist@^0.6.1:
         minimist "~0.0.1"
         wordwrap "~0.0.2"
     
    -optimize-css-assets-webpack-plugin@^4.0.0:
    -  version "4.0.3"
    -  resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.3.tgz#4f714e276b279700892c4a6202b7e22812d6f683"
    +optimize-css-assets-webpack-plugin@^5.0.1:
    +  version "5.0.1"
    +  resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159"
       dependencies:
    -    cssnano "^3.10.0"
    +    cssnano "^4.1.0"
         last-call-webpack-plugin "^3.0.0"
     
     optionator@^0.8.1, optionator@^0.8.2:
    @@ -7387,6 +7616,15 @@ postcss-calc@^5.2.0:
         postcss-message-helpers "^2.0.0"
         reduce-css-calc "^1.2.6"
     
    +postcss-calc@^7.0.1:
    +  version "7.0.1"
    +  resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436"
    +  dependencies:
    +    css-unit-converter "^1.1.1"
    +    postcss "^7.0.5"
    +    postcss-selector-parser "^5.0.0-rc.4"
    +    postcss-value-parser "^3.3.1"
    +
     postcss-colormin@^2.1.8:
       version "2.2.2"
       resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
    @@ -7395,6 +7633,16 @@ postcss-colormin@^2.1.8:
         postcss "^5.0.13"
         postcss-value-parser "^3.2.3"
     
    +postcss-colormin@^4.0.3:
    +  version "4.0.3"
    +  resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
    +  dependencies:
    +    browserslist "^4.0.0"
    +    color "^3.0.0"
    +    has "^1.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
     postcss-convert-values@^2.3.4:
       version "2.6.1"
       resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
    @@ -7402,30 +7650,61 @@ postcss-convert-values@^2.3.4:
         postcss "^5.0.11"
         postcss-value-parser "^3.1.2"
     
    +postcss-convert-values@^4.0.1:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
    +  dependencies:
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
     postcss-discard-comments@^2.0.4:
       version "2.0.4"
       resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
       dependencies:
         postcss "^5.0.14"
     
    +postcss-discard-comments@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
    +  dependencies:
    +    postcss "^7.0.0"
    +
     postcss-discard-duplicates@^2.0.1:
       version "2.1.0"
       resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
       dependencies:
         postcss "^5.0.4"
     
    +postcss-discard-duplicates@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
    +  dependencies:
    +    postcss "^7.0.0"
    +
     postcss-discard-empty@^2.0.1:
       version "2.1.0"
       resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
       dependencies:
         postcss "^5.0.14"
     
    +postcss-discard-empty@^4.0.1:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
    +  dependencies:
    +    postcss "^7.0.0"
    +
     postcss-discard-overridden@^0.1.1:
       version "0.1.1"
       resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
       dependencies:
         postcss "^5.0.16"
     
    +postcss-discard-overridden@^4.0.1:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
    +  dependencies:
    +    postcss "^7.0.0"
    +
     postcss-discard-unused@^2.2.1:
       version "2.2.3"
       resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
    @@ -7469,6 +7748,15 @@ postcss-merge-longhand@^2.0.1:
       dependencies:
         postcss "^5.0.4"
     
    +postcss-merge-longhand@^4.0.11:
    +  version "4.0.11"
    +  resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
    +  dependencies:
    +    css-color-names "0.0.4"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +    stylehacks "^4.0.0"
    +
     postcss-merge-rules@^2.0.3:
       version "2.1.2"
       resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
    @@ -7479,6 +7767,17 @@ postcss-merge-rules@^2.0.3:
         postcss-selector-parser "^2.2.2"
         vendors "^1.0.0"
     
    +postcss-merge-rules@^4.0.3:
    +  version "4.0.3"
    +  resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
    +  dependencies:
    +    browserslist "^4.0.0"
    +    caniuse-api "^3.0.0"
    +    cssnano-util-same-parent "^4.0.0"
    +    postcss "^7.0.0"
    +    postcss-selector-parser "^3.0.0"
    +    vendors "^1.0.0"
    +
     postcss-message-helpers@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
    @@ -7491,6 +7790,13 @@ postcss-minify-font-values@^1.0.2:
         postcss "^5.0.4"
         postcss-value-parser "^3.0.2"
     
    +postcss-minify-font-values@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
    +  dependencies:
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
     postcss-minify-gradients@^1.0.1:
       version "1.0.5"
       resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
    @@ -7498,6 +7804,15 @@ postcss-minify-gradients@^1.0.1:
         postcss "^5.0.12"
         postcss-value-parser "^3.3.0"
     
    +postcss-minify-gradients@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
    +  dependencies:
    +    cssnano-util-get-arguments "^4.0.0"
    +    is-color-stop "^1.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
     postcss-minify-params@^1.0.4:
       version "1.2.2"
       resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
    @@ -7507,6 +7822,17 @@ postcss-minify-params@^1.0.4:
         postcss-value-parser "^3.0.2"
         uniqs "^2.0.0"
     
    +postcss-minify-params@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
    +  dependencies:
    +    alphanum-sort "^1.0.0"
    +    browserslist "^4.0.0"
    +    cssnano-util-get-arguments "^4.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +    uniqs "^2.0.0"
    +
     postcss-minify-selectors@^2.0.4:
       version "2.1.1"
       resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
    @@ -7516,6 +7842,15 @@ postcss-minify-selectors@^2.0.4:
         postcss "^5.0.14"
         postcss-selector-parser "^2.0.0"
     
    +postcss-minify-selectors@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
    +  dependencies:
    +    alphanum-sort "^1.0.0"
    +    has "^1.0.0"
    +    postcss "^7.0.0"
    +    postcss-selector-parser "^3.0.0"
    +
     postcss-modules-extract-imports@^1.2.0:
       version "1.2.1"
       resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a"
    @@ -7549,6 +7884,62 @@ postcss-normalize-charset@^1.1.0:
       dependencies:
         postcss "^5.0.5"
     
    +postcss-normalize-charset@^4.0.1:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
    +  dependencies:
    +    postcss "^7.0.0"
    +
    +postcss-normalize-display-values@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
    +  dependencies:
    +    cssnano-util-get-match "^4.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
    +postcss-normalize-positions@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
    +  dependencies:
    +    cssnano-util-get-arguments "^4.0.0"
    +    has "^1.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
    +postcss-normalize-repeat-style@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
    +  dependencies:
    +    cssnano-util-get-arguments "^4.0.0"
    +    cssnano-util-get-match "^4.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
    +postcss-normalize-string@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
    +  dependencies:
    +    has "^1.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
    +postcss-normalize-timing-functions@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
    +  dependencies:
    +    cssnano-util-get-match "^4.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
    +postcss-normalize-unicode@^4.0.1:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
    +  dependencies:
    +    browserslist "^4.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
     postcss-normalize-url@^3.0.7:
       version "3.0.8"
       resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
    @@ -7558,6 +7949,22 @@ postcss-normalize-url@^3.0.7:
         postcss "^5.0.14"
         postcss-value-parser "^3.2.3"
     
    +postcss-normalize-url@^4.0.1:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
    +  dependencies:
    +    is-absolute-url "^2.0.0"
    +    normalize-url "^3.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
    +postcss-normalize-whitespace@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
    +  dependencies:
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
     postcss-ordered-values@^2.1.0:
       version "2.2.3"
       resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
    @@ -7565,6 +7972,14 @@ postcss-ordered-values@^2.1.0:
         postcss "^5.0.4"
         postcss-value-parser "^3.0.1"
     
    +postcss-ordered-values@^4.1.2:
    +  version "4.1.2"
    +  resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
    +  dependencies:
    +    cssnano-util-get-arguments "^4.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
     postcss-reduce-idents@^2.2.2:
       version "2.4.0"
       resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
    @@ -7578,6 +7993,15 @@ postcss-reduce-initial@^1.0.0:
       dependencies:
         postcss "^5.0.4"
     
    +postcss-reduce-initial@^4.0.3:
    +  version "4.0.3"
    +  resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
    +  dependencies:
    +    browserslist "^4.0.0"
    +    caniuse-api "^3.0.0"
    +    has "^1.0.0"
    +    postcss "^7.0.0"
    +
     postcss-reduce-transforms@^1.0.3:
       version "1.0.4"
       resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
    @@ -7586,6 +8010,21 @@ postcss-reduce-transforms@^1.0.3:
         postcss "^5.0.8"
         postcss-value-parser "^3.0.1"
     
    +postcss-reduce-transforms@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
    +  dependencies:
    +    cssnano-util-get-match "^4.0.0"
    +    has "^1.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +
    +postcss-safe-parser@^4.0.1:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea"
    +  dependencies:
    +    postcss "^7.0.0"
    +
     postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
       version "2.2.3"
       resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
    @@ -7594,7 +8033,15 @@ postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
         indexes-of "^1.0.1"
         uniq "^1.0.1"
     
    -postcss-selector-parser@^5.0.0:
    +postcss-selector-parser@^3.0.0:
    +  version "3.1.1"
    +  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
    +  dependencies:
    +    dot-prop "^4.1.1"
    +    indexes-of "^1.0.1"
    +    uniq "^1.0.1"
    +
    +postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4:
       version "5.0.0"
       resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
       dependencies:
    @@ -7611,6 +8058,15 @@ postcss-svgo@^2.1.1:
         postcss-value-parser "^3.2.3"
         svgo "^0.7.0"
     
    +postcss-svgo@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
    +  dependencies:
    +    is-svg "^3.0.0"
    +    postcss "^7.0.0"
    +    postcss-value-parser "^3.0.0"
    +    svgo "^1.0.0"
    +
     postcss-unique-selectors@^2.0.2:
       version "2.0.2"
       resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
    @@ -7619,7 +8075,15 @@ postcss-unique-selectors@^2.0.2:
         postcss "^5.0.4"
         uniqs "^2.0.0"
     
    -postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
    +postcss-unique-selectors@^4.0.1:
    +  version "4.0.1"
    +  resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
    +  dependencies:
    +    alphanum-sort "^1.0.0"
    +    postcss "^7.0.0"
    +    uniqs "^2.0.0"
    +
    +postcss-value-parser@^3.0.0, postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0, 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"
     
    @@ -7648,7 +8112,7 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.17:
         source-map "^0.6.1"
         supports-color "^5.4.0"
     
    -postcss@^7.0.14:
    +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.5:
       version "7.0.14"
       resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5"
       dependencies:
    @@ -8275,6 +8739,14 @@ retry@^0.10.0:
       version "0.10.1"
       resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
     
    +rgb-regex@^1.0.1:
    +  version "1.0.1"
    +  resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
    +
    +rgba-regex@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
    +
     rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2:
       version "2.6.3"
       resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
    @@ -8354,7 +8826,7 @@ sax@0.5.x:
       version "0.5.8"
       resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1"
     
    -sax@^1.2.4, sax@~1.2.1:
    +sax@^1.2.4, sax@~1.2.1, sax@~1.2.4:
       version "1.2.4"
       resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
     
    @@ -8508,6 +8980,12 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
       version "3.0.2"
       resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
     
    +simple-swizzle@^0.2.2:
    +  version "0.2.2"
    +  resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
    +  dependencies:
    +    is-arrayish "^0.3.1"
    +
     sisteransi@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c"
    @@ -8743,6 +9221,10 @@ ssri@^6.0.0, ssri@^6.0.1:
       dependencies:
         figgy-pudding "^3.5.1"
     
    +stable@^0.1.8:
    +  version "0.1.8"
    +  resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
    +
     stack-utils@^1.0.1:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8"
    @@ -8919,6 +9401,14 @@ strong-log-transformer@^2.0.0:
         minimist "^1.2.0"
         through "^2.3.4"
     
    +stylehacks@^4.0.0:
    +  version "4.0.3"
    +  resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
    +  dependencies:
    +    browserslist "^4.0.0"
    +    postcss "^7.0.0"
    +    postcss-selector-parser "^3.0.0"
    +
     stylus-loader@^3.0.2:
       version "3.0.2"
       resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6"
    @@ -8976,6 +9466,25 @@ svgo@^0.7.0:
         sax "~1.2.1"
         whet.extend "~0.9.9"
     
    +svgo@^1.0.0:
    +  version "1.2.1"
    +  resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.1.tgz#3fedde75a4016193e1c2608b5fdef6f3e4a9fd99"
    +  dependencies:
    +    chalk "^2.4.1"
    +    coa "^2.0.2"
    +    css-select "^2.0.0"
    +    css-select-base-adapter "^0.1.1"
    +    css-tree "1.0.0-alpha.28"
    +    css-url-regex "^1.1.0"
    +    csso "^3.5.1"
    +    js-yaml "^3.13.0"
    +    mkdirp "~0.5.1"
    +    object.values "^1.1.0"
    +    sax "~1.2.4"
    +    stable "^0.1.8"
    +    unquote "~1.1.1"
    +    util.promisify "~1.0.0"
    +
     symbol-observable@^1.1.0:
       version "1.2.0"
       resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
    @@ -9115,6 +9624,10 @@ timers-browserify@^2.0.4:
       dependencies:
         setimmediate "^1.0.4"
     
    +timsort@^0.3.0:
    +  version "0.3.0"
    +  resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
    +
     tiny-emitter@^2.0.0:
       version "2.1.0"
       resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
    @@ -9347,6 +9860,10 @@ unpipe@1.0.0, unpipe@~1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
     
    +unquote@~1.1.1:
    +  version "1.1.1"
    +  resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
    +
     unset-value@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
    @@ -9406,7 +9923,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
     
    -util.promisify@1.0.0, util.promisify@^1.0.0:
    +util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
       dependencies:
    @@ -9570,7 +10087,6 @@ vuepress-html-webpack-plugin@^3.2.0:
     vuepress-plugin-container@^2.0.0:
       version "2.0.1"
       resolved "https://registry.yarnpkg.com/vuepress-plugin-container/-/vuepress-plugin-container-2.0.1.tgz#b20ef97dd91f137c8be119460927c5ffd64e0f77"
    -  integrity sha512-SMlWJl0uZYkqAxD2RUZmIrANZWKgiZdM64K7WmdyHyQPYI+NUj3ugi5D+zDn62BoO9NfQTiskEIa2u619SRweA==
       dependencies:
         markdown-it-container "^2.0.0"
     
    
    From 46406148f630fa1f83ff93ab1a7ceff122e9a86c Mon Sep 17 00:00:00 2001
    From: ULIVZ <472590061@qq.com>
    Date: Sun, 7 Apr 2019 01:33:10 +0800
    Subject: [PATCH 068/233] feat($plugin-pwa): allow using local workbox files
     (close: #539)
    
    ---
     packages/@vuepress/plugin-pwa/index.js              | 3 ++-
     packages/docs/docs/plugin/official/plugin-pwa.md    | 8 ++++++++
     packages/docs/docs/zh/plugin/official/plugin-pwa.md | 8 ++++++++
     3 files changed, 18 insertions(+), 1 deletion(-)
    
    diff --git a/packages/@vuepress/plugin-pwa/index.js b/packages/@vuepress/plugin-pwa/index.js
    index 748f1752..0bbf49e3 100644
    --- a/packages/@vuepress/plugin-pwa/index.js
    +++ b/packages/@vuepress/plugin-pwa/index.js
    @@ -40,7 +40,8 @@ module.exports = (options, context) => ({
           await wbb.generateSW({
             swDest: swFilePath,
             globDirectory: outDir,
    -        globPatterns: ['**\/*.{js,css,html,png,jpg,jpeg,gif,svg,woff,woff2,eot,ttf,otf}']
    +        globPatterns: ['**\/*.{js,css,html,png,jpg,jpeg,gif,svg,woff,woff2,eot,ttf,otf}'],
    +        ...(options.generateSWConfig || {})
           })
           await fs.writeFile(
             swFilePath,
    diff --git a/packages/docs/docs/plugin/official/plugin-pwa.md b/packages/docs/docs/plugin/official/plugin-pwa.md
    index ecee4ca1..0e532c11 100644
    --- a/packages/docs/docs/plugin/official/plugin-pwa.md
    +++ b/packages/docs/docs/plugin/official/plugin-pwa.md
    @@ -45,6 +45,14 @@ The `serviceWorker` option only handles the service worker. To make your site fu
     Also, only enable this if you are able to deploy your site with SSL, since service worker can only be registered under HTTPs URLs.
     :::
     
    +### generateSWConfig
    +
    +- Type: `object`
    +- Default: `{}`
    +
    +[generateSW config](https://developers.google.com/web/tools/workbox/modules/workbox-build#full_generatesw_config) of workbox-build.
    +
    +
     ### updatePopup
     
     - Type: `boolean|object`
    diff --git a/packages/docs/docs/zh/plugin/official/plugin-pwa.md b/packages/docs/docs/zh/plugin/official/plugin-pwa.md
    index 14b514d5..6823f641 100644
    --- a/packages/docs/docs/zh/plugin/official/plugin-pwa.md
    +++ b/packages/docs/docs/zh/plugin/official/plugin-pwa.md
    @@ -44,6 +44,14 @@ module.exports = {
     此外,只有您能够使用 SSL 部署您的站点时才能启用此功能,因为 service worker 只能在 HTTPs 的 URL 下注册。
     :::
     
    +### generateSWConfig
    +
    +- 类型: `object`
    +- 默认值: `{}`
    +
    +workbox-build 的 [generateSW config](https://developers.google.com/web/tools/workbox/modules/workbox-build#full_generatesw_config)。
    +
    +
     ### updatePopup
     
     - 类型: `boolean|popupConfig`
    
    From 78ce258b22f399eac7e16aa87bf06373f752e477 Mon Sep 17 00:00:00 2001
    From: ULIVZ <472590061@qq.com>
    Date: Sun, 7 Apr 2019 01:37:49 +0800
    Subject: [PATCH 069/233] v1.0.0-alpha.47
    
    ---
     lerna.json                                         |  2 +-
     packages/@vuepress/core/package.json               | 12 ++++++------
     packages/@vuepress/markdown-loader/package.json    |  4 ++--
     packages/@vuepress/markdown/package.json           |  6 +++---
     .../plugin-active-header-links/package.json        |  2 +-
     packages/@vuepress/plugin-back-to-top/package.json |  2 +-
     packages/@vuepress/plugin-blog/package.json        |  2 +-
     .../@vuepress/plugin-google-analytics/package.json |  2 +-
     .../@vuepress/plugin-last-updated/package.json     |  2 +-
     packages/@vuepress/plugin-medium-zoom/package.json |  2 +-
     packages/@vuepress/plugin-nprogress/package.json   |  2 +-
     packages/@vuepress/plugin-pagination/package.json  |  2 +-
     packages/@vuepress/plugin-pwa/package.json         |  4 ++--
     .../plugin-register-components/package.json        |  4 ++--
     packages/@vuepress/plugin-search/package.json      |  2 +-
     packages/@vuepress/shared-utils/package.json       |  2 +-
     packages/@vuepress/test-utils/package.json         |  6 +++---
     packages/@vuepress/theme-blog/package.json         | 10 +++++-----
     packages/@vuepress/theme-default/package.json      |  8 ++++----
     packages/@vuepress/theme-vue/package.json          |  4 ++--
     packages/blog/package.json                         |  6 +++---
     packages/docs/package.json                         | 14 +++++++-------
     packages/vuepress/package.json                     |  6 +++---
     23 files changed, 53 insertions(+), 53 deletions(-)
    
    diff --git a/lerna.json b/lerna.json
    index a0dd2828..7c6d8823 100644
    --- a/lerna.json
    +++ b/lerna.json
    @@ -2,5 +2,5 @@
       "lerna": "2.5.1",
       "npmClient": "yarn",
       "useWorkspaces": true,
    -  "version": "1.0.0-alpha.46"
    +  "version": "1.0.0-alpha.47"
     }
    diff --git a/packages/@vuepress/core/package.json b/packages/@vuepress/core/package.json
    index 7a4ace48..3f9ca0c3 100644
    --- a/packages/@vuepress/core/package.json
    +++ b/packages/@vuepress/core/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/core",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "Minimalistic doc generator with Vue component based layout system",
       "main": "lib/index.js",
       "repository": {
    @@ -31,11 +31,11 @@
       "dependencies": {
         "@babel/core": "^7.0.0",
         "@vue/babel-preset-app": "^3.1.1",
    -    "@vuepress/markdown": "^1.0.0-alpha.46",
    -    "@vuepress/markdown-loader": "^1.0.0-alpha.46",
    -    "@vuepress/plugin-last-updated": "^1.0.0-alpha.46",
    -    "@vuepress/plugin-register-components": "^1.0.0-alpha.46",
    -    "@vuepress/shared-utils": "^1.0.0-alpha.46",
    +    "@vuepress/markdown": "^1.0.0-alpha.47",
    +    "@vuepress/markdown-loader": "^1.0.0-alpha.47",
    +    "@vuepress/plugin-last-updated": "^1.0.0-alpha.47",
    +    "@vuepress/plugin-register-components": "^1.0.0-alpha.47",
    +    "@vuepress/shared-utils": "^1.0.0-alpha.47",
         "autoprefixer": "^7.1.2",
         "babel-loader": "^8.0.4",
         "cache-loader": "^1.2.2",
    diff --git a/packages/@vuepress/markdown-loader/package.json b/packages/@vuepress/markdown-loader/package.json
    index 654e11b0..6d308fcd 100644
    --- a/packages/@vuepress/markdown-loader/package.json
    +++ b/packages/@vuepress/markdown-loader/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/markdown-loader",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "markdown-loader for vuepress",
       "main": "index.js",
       "publishConfig": {
    @@ -18,7 +18,7 @@
         "generator"
       ],
       "dependencies": {
    -    "@vuepress/markdown": "^1.0.0-alpha.46",
    +    "@vuepress/markdown": "^1.0.0-alpha.47",
         "loader-utils": "^1.1.0",
         "lru-cache": "^5.1.1"
       },
    diff --git a/packages/@vuepress/markdown/package.json b/packages/@vuepress/markdown/package.json
    index a2c3959a..3dfe2c50 100644
    --- a/packages/@vuepress/markdown/package.json
    +++ b/packages/@vuepress/markdown/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/markdown",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "markdown for vuepress",
       "main": "index.js",
       "publishConfig": {
    @@ -19,7 +19,7 @@
         "markdown"
       ],
       "dependencies": {
    -    "@vuepress/shared-utils": "^1.0.0-alpha.46",
    +    "@vuepress/shared-utils": "^1.0.0-alpha.47",
         "lru-cache": "^5.1.1",
         "markdown-it": "^8.4.1",
         "markdown-it-anchor": "^5.0.2",
    @@ -28,7 +28,7 @@
         "prismjs": "^1.13.0"
       },
       "devDependencies": {
    -    "@vuepress/test-utils": "^1.0.0-alpha.46"
    +    "@vuepress/test-utils": "^1.0.0-alpha.47"
       },
       "author": "Evan You",
       "maintainers": [
    diff --git a/packages/@vuepress/plugin-active-header-links/package.json b/packages/@vuepress/plugin-active-header-links/package.json
    index 106a7e77..ea417774 100644
    --- a/packages/@vuepress/plugin-active-header-links/package.json
    +++ b/packages/@vuepress/plugin-active-header-links/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-active-header-links",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "active-header-links plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    diff --git a/packages/@vuepress/plugin-back-to-top/package.json b/packages/@vuepress/plugin-back-to-top/package.json
    index 9fb649a5..f0613eee 100644
    --- a/packages/@vuepress/plugin-back-to-top/package.json
    +++ b/packages/@vuepress/plugin-back-to-top/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-back-to-top",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "back-to-top plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    diff --git a/packages/@vuepress/plugin-blog/package.json b/packages/@vuepress/plugin-blog/package.json
    index 8b0e5e43..bd3029dc 100644
    --- a/packages/@vuepress/plugin-blog/package.json
    +++ b/packages/@vuepress/plugin-blog/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-blog",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "blog plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    diff --git a/packages/@vuepress/plugin-google-analytics/package.json b/packages/@vuepress/plugin-google-analytics/package.json
    index 717808f6..4de2df27 100644
    --- a/packages/@vuepress/plugin-google-analytics/package.json
    +++ b/packages/@vuepress/plugin-google-analytics/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-google-analytics",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "google-analytics plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    diff --git a/packages/@vuepress/plugin-last-updated/package.json b/packages/@vuepress/plugin-last-updated/package.json
    index 3aff6f67..97985644 100644
    --- a/packages/@vuepress/plugin-last-updated/package.json
    +++ b/packages/@vuepress/plugin-last-updated/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-last-updated",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "last-updated plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    diff --git a/packages/@vuepress/plugin-medium-zoom/package.json b/packages/@vuepress/plugin-medium-zoom/package.json
    index 8c2f2bbf..70beef65 100644
    --- a/packages/@vuepress/plugin-medium-zoom/package.json
    +++ b/packages/@vuepress/plugin-medium-zoom/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-medium-zoom",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "medium-zoom plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    diff --git a/packages/@vuepress/plugin-nprogress/package.json b/packages/@vuepress/plugin-nprogress/package.json
    index cf633437..735ca48c 100644
    --- a/packages/@vuepress/plugin-nprogress/package.json
    +++ b/packages/@vuepress/plugin-nprogress/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-nprogress",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "nprogress plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    diff --git a/packages/@vuepress/plugin-pagination/package.json b/packages/@vuepress/plugin-pagination/package.json
    index 24bc57c0..e55ffc8a 100644
    --- a/packages/@vuepress/plugin-pagination/package.json
    +++ b/packages/@vuepress/plugin-pagination/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-pagination",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "pagination plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    diff --git a/packages/@vuepress/plugin-pwa/package.json b/packages/@vuepress/plugin-pwa/package.json
    index 9408bfe1..489a42a0 100644
    --- a/packages/@vuepress/plugin-pwa/package.json
    +++ b/packages/@vuepress/plugin-pwa/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-pwa",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "pwa plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    @@ -18,7 +18,7 @@
         "generator"
       ],
       "dependencies": {
    -    "@vuepress/shared-utils": "^1.0.0-alpha.46",
    +    "@vuepress/shared-utils": "^1.0.0-alpha.47",
         "register-service-worker": "^1.5.2",
         "workbox-build": "^3.1.0"
       },
    diff --git a/packages/@vuepress/plugin-register-components/package.json b/packages/@vuepress/plugin-register-components/package.json
    index bcd8c22e..afbbb421 100644
    --- a/packages/@vuepress/plugin-register-components/package.json
    +++ b/packages/@vuepress/plugin-register-components/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-register-components",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "register-global-components plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    @@ -24,6 +24,6 @@
       },
       "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/plugin-register-components#readme",
       "dependencies": {
    -    "@vuepress/shared-utils": "^1.0.0-alpha.46"
    +    "@vuepress/shared-utils": "^1.0.0-alpha.47"
       }
     }
    diff --git a/packages/@vuepress/plugin-search/package.json b/packages/@vuepress/plugin-search/package.json
    index 43cecd03..19aeedb6 100644
    --- a/packages/@vuepress/plugin-search/package.json
    +++ b/packages/@vuepress/plugin-search/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/plugin-search",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "search plugin for vuepress",
       "main": "index.js",
       "publishConfig": {
    diff --git a/packages/@vuepress/shared-utils/package.json b/packages/@vuepress/shared-utils/package.json
    index 2862b5af..cc801a63 100644
    --- a/packages/@vuepress/shared-utils/package.json
    +++ b/packages/@vuepress/shared-utils/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/shared-utils",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "shared-utils for vuepress",
       "main": "lib/index.js",
       "types": "types/index.d.ts",
    diff --git a/packages/@vuepress/test-utils/package.json b/packages/@vuepress/test-utils/package.json
    index 13c40e68..d66fb686 100644
    --- a/packages/@vuepress/test-utils/package.json
    +++ b/packages/@vuepress/test-utils/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/test-utils",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "test-utils for vuepress",
       "main": "index.js",
       "publishConfig": {
    @@ -22,8 +22,8 @@
         "@babel/preset-env": "^7.0.0",
         "@types/jest": "^24.0.9",
         "@vue/test-utils": "^1.0.0-beta.29",
    -    "@vuepress/core": "^1.0.0-alpha.46",
    -    "@vuepress/shared-utils": "^1.0.0-alpha.46",
    +    "@vuepress/core": "^1.0.0-alpha.47",
    +    "@vuepress/shared-utils": "^1.0.0-alpha.47",
         "babel-jest": "^24.1.0",
         "execa": "^0.10.0",
         "jest": "^24.1.0",
    diff --git a/packages/@vuepress/theme-blog/package.json b/packages/@vuepress/theme-blog/package.json
    index 03834424..7a192b0e 100644
    --- a/packages/@vuepress/theme-blog/package.json
    +++ b/packages/@vuepress/theme-blog/package.json
    @@ -1,7 +1,7 @@
     {
       "private": true,
       "name": "@vuepress/theme-blog",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "theme-blog for vuepress",
       "main": "index.js",
       "publishConfig": {
    @@ -19,10 +19,10 @@
         "generator"
       ],
       "dependencies": {
    -    "@vuepress/plugin-blog": "^1.0.0-alpha.46",
    -    "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.46",
    -    "@vuepress/plugin-pagination": "^1.0.0-alpha.46",
    -    "@vuepress/plugin-search": "^1.0.0-alpha.46"
    +    "@vuepress/plugin-blog": "^1.0.0-alpha.47",
    +    "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.47",
    +    "@vuepress/plugin-pagination": "^1.0.0-alpha.47",
    +    "@vuepress/plugin-search": "^1.0.0-alpha.47"
       },
       "author": "ULIVZ ",
       "license": "MIT",
    diff --git a/packages/@vuepress/theme-default/package.json b/packages/@vuepress/theme-default/package.json
    index 68fd8848..192634b9 100644
    --- a/packages/@vuepress/theme-default/package.json
    +++ b/packages/@vuepress/theme-default/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/theme-default",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "Default theme for VuePress",
       "main": "index.js",
       "publishConfig": {
    @@ -30,9 +30,9 @@
       },
       "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/theme-default#readme",
       "dependencies": {
    -    "@vuepress/plugin-active-header-links": "^1.0.0-alpha.46",
    -    "@vuepress/plugin-nprogress": "^1.0.0-alpha.46",
    -    "@vuepress/plugin-search": "^1.0.0-alpha.46",
    +    "@vuepress/plugin-active-header-links": "^1.0.0-alpha.47",
    +    "@vuepress/plugin-nprogress": "^1.0.0-alpha.47",
    +    "@vuepress/plugin-search": "^1.0.0-alpha.47",
         "docsearch.js": "^2.5.2",
         "stylus": "^0.54.5",
         "stylus-loader": "^3.0.2",
    diff --git a/packages/@vuepress/theme-vue/package.json b/packages/@vuepress/theme-vue/package.json
    index 249cc994..92825eb4 100644
    --- a/packages/@vuepress/theme-vue/package.json
    +++ b/packages/@vuepress/theme-vue/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@vuepress/theme-vue",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "VuePress theme for official Vue projects",
       "main": "index.js",
       "publishConfig": {
    @@ -30,6 +30,6 @@
       },
       "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/theme-vue#readme",
       "dependencies": {
    -    "@vuepress/theme-default": "^1.0.0-alpha.46"
    +    "@vuepress/theme-default": "^1.0.0-alpha.47"
       }
     }
    diff --git a/packages/blog/package.json b/packages/blog/package.json
    index 34540a2d..f53f4085 100644
    --- a/packages/blog/package.json
    +++ b/packages/blog/package.json
    @@ -2,13 +2,13 @@
       "private": true,
       "name": "blog",
       "description": "blog of VuePress",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "scripts": {
         "dev": "vuepress dev source --temp .temp",
         "build": "vuepress build source --temp .temp"
       },
       "dependencies": {
    -    "@vuepress/theme-blog": "^1.0.0-alpha.46",
    -    "vuepress": "^1.0.0-alpha.46"
    +    "@vuepress/theme-blog": "^1.0.0-alpha.47",
    +    "vuepress": "^1.0.0-alpha.47"
       }
     }
    diff --git a/packages/docs/package.json b/packages/docs/package.json
    index 21389459..aed8f4c1 100644
    --- a/packages/docs/package.json
    +++ b/packages/docs/package.json
    @@ -1,6 +1,6 @@
     {
       "private": true,
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "name": "docs",
       "description": "docs of VuePress",
       "scripts": {
    @@ -25,13 +25,13 @@
       },
       "homepage": "https://github.com/vuejs/vuepress#readme",
       "devDependencies": {
    -    "@vuepress/plugin-back-to-top": "^1.0.0-alpha.46",
    -    "@vuepress/plugin-google-analytics": "^1.0.0-alpha.46",
    -    "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.46",
    -    "@vuepress/plugin-pwa": "^1.0.0-alpha.46",
    -    "@vuepress/theme-vue": "^1.0.0-alpha.46",
    +    "@vuepress/plugin-back-to-top": "^1.0.0-alpha.47",
    +    "@vuepress/plugin-google-analytics": "^1.0.0-alpha.47",
    +    "@vuepress/plugin-medium-zoom": "^1.0.0-alpha.47",
    +    "@vuepress/plugin-pwa": "^1.0.0-alpha.47",
    +    "@vuepress/theme-vue": "^1.0.0-alpha.47",
         "vue-toasted": "^1.1.25",
    -    "vuepress": "^1.0.0-alpha.46",
    +    "vuepress": "^1.0.0-alpha.47",
         "vuepress-plugin-flowchart": "^1.4.2"
       }
     }
    diff --git a/packages/vuepress/package.json b/packages/vuepress/package.json
    index f510b2fb..60c0bd11 100644
    --- a/packages/vuepress/package.json
    +++ b/packages/vuepress/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "vuepress",
    -  "version": "1.0.0-alpha.46",
    +  "version": "1.0.0-alpha.47",
       "description": "Minimalistic doc generator with Vue component based layout system",
       "main": "index.js",
       "repository": {
    @@ -29,8 +29,8 @@
       },
       "homepage": "https://github.com/vuejs/vuepress#readme",
       "dependencies": {
    -    "@vuepress/core": "^1.0.0-alpha.46",
    -    "@vuepress/theme-default": "^1.0.0-alpha.46",
    +    "@vuepress/core": "^1.0.0-alpha.47",
    +    "@vuepress/theme-default": "^1.0.0-alpha.47",
         "cac": "^6.3.9"
       },
       "engines": {
    
    From edc3733669c33c5a527430110aa0368d9d4f8a50 Mon Sep 17 00:00:00 2001
    From: ULIVZ <472590061@qq.com>
    Date: Sun, 7 Apr 2019 01:49:07 +0800
    Subject: [PATCH 070/233] chore: 1.0.0-alpha.47 changelog
    
    ---
     CHANGELOG.md | 28 ++++++++++++++++++++++++++++
     1 file changed, 28 insertions(+)
    
    diff --git a/CHANGELOG.md b/CHANGELOG.md
    index 6c4193fc..891bf80a 100755
    --- a/CHANGELOG.md
    +++ b/CHANGELOG.md
    @@ -1,3 +1,31 @@
    +
    +# [](https://github.com/vuejs/vuepress/compare/v1.0.0-alpha.47...v) (2019-04-06)
    +
    +
    +
    +
    +# [1.0.0-alpha.47](https://github.com/vuejs/vuepress/compare/v1.0.0-alpha.46...v1.0.0-alpha.47) (2019-04-06)
    +
    +
    +### Bug Fixes
    +
    +* **$core:** `index.styl` is not injected at the end of the style bundle (close: [#1523](https://github.com/vuejs/vuepress/issues/1523)) ([dabf506](https://github.com/vuejs/vuepress/commit/dabf506))
    +* **$core:** `routerBase` will always get '/' (close: [#1503](https://github.com/vuejs/vuepress/issues/1503)) ([9fba549](https://github.com/vuejs/vuepress/commit/9fba549))
    +* **$markdown:** Snippets should allow spaces in file path (closes [#1505](https://github.com/vuejs/vuepress/issues/1505)) ([#1517](https://github.com/vuejs/vuepress/issues/1517)) ([5c307c9](https://github.com/vuejs/vuepress/commit/5c307c9))
    +
    +
    +### Features
    +
    +* **$core:** assert return type for functional plugin ([#1516](https://github.com/vuejs/vuepress/issues/1516)) ([74887c5](https://github.com/vuejs/vuepress/commit/74887c5))
    +* **$core:** emit warning if the source directory doesn't exist (close: [#1521](https://github.com/vuejs/vuepress/issues/1521)) ([6da9a5f](https://github.com/vuejs/vuepress/commit/6da9a5f))
    +* **$plugin-pwa:** allow using local workbox files (close: [#539](https://github.com/vuejs/vuepress/issues/539)) ([4640614](https://github.com/vuejs/vuepress/commit/4640614))
    +
    +
    +
    +
    +# [1.0.0-alpha.46](https://github.com/vuejs/vuepress/compare/v1.0.0-alpha.45...v1.0.0-alpha.46) (2019-04-01)
    +
    +
     ### Bug Fixes
     
     * **$core:** regression of introducing dynamic `routerBase` (close: [#1498](https://github.com/vuejs/vuepress/issues/1498)) ([5e12b49](https://github.com/vuejs/vuepress/commit/5e12b49))
    
    From 23b0ce3efc69df06d3d2ac70c987348b3c06078a Mon Sep 17 00:00:00 2001
    From: ULIVZ <472590061@qq.com>
    Date: Sun, 7 Apr 2019 01:50:23 +0800
    Subject: [PATCH 071/233] chore: changelog
    
    ---
     CHANGELOG.md | 5 -----
     1 file changed, 5 deletions(-)
    
    diff --git a/CHANGELOG.md b/CHANGELOG.md
    index 891bf80a..6468b70a 100755
    --- a/CHANGELOG.md
    +++ b/CHANGELOG.md
    @@ -1,8 +1,3 @@
    -
    -# [](https://github.com/vuejs/vuepress/compare/v1.0.0-alpha.47...v) (2019-04-06)
    -
    -
    -
     
     # [1.0.0-alpha.47](https://github.com/vuejs/vuepress/compare/v1.0.0-alpha.46...v1.0.0-alpha.47) (2019-04-06)
     
    
    From fb324d54c78e9177d1747b9e5fa39302cd0bc8e9 Mon Sep 17 00:00:00 2001
    From: ULIVZ <472590061@qq.com>
    Date: Sun, 14 Apr 2019 00:06:27 +0800
    Subject: [PATCH 072/233] fix($core): webpack externals (ref: #451)
    
    ---
     packages/@vuepress/core/lib/node/webpack/createServerConfig.js | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/packages/@vuepress/core/lib/node/webpack/createServerConfig.js b/packages/@vuepress/core/lib/node/webpack/createServerConfig.js
    index 7a43691d..c8b3db63 100644
    --- a/packages/@vuepress/core/lib/node/webpack/createServerConfig.js
    +++ b/packages/@vuepress/core/lib/node/webpack/createServerConfig.js
    @@ -16,7 +16,7 @@ module.exports = function createServerConfig (ctx) {
     
       config
         .target('node')
    -    .externals([/^vue|vue-router$/])
    +    .externals([/^(vue|vue-router)$/])
         .devtool('source-map')
     
       // no need to minimize server build
    
    From 9efc6785b2744541866c02708e7c72c1c33475f6 Mon Sep 17 00:00:00 2001
    From: Rahul Kadyan 
    Date: Sat, 13 Apr 2019 21:44:42 +0530
    Subject: [PATCH 073/233] fix($core): use directory name to compute slug if
     filename is readme or index (close: #1443) (#1535)
    
    ---
     packages/@vuepress/core/lib/node/Page.js | 33 +++++++++++++++++++++---
     1 file changed, 30 insertions(+), 3 deletions(-)
    
    diff --git a/packages/@vuepress/core/lib/node/Page.js b/packages/@vuepress/core/lib/node/Page.js
    index 5172dbd7..27df3b44 100644
    --- a/packages/@vuepress/core/lib/node/Page.js
    +++ b/packages/@vuepress/core/lib/node/Page.js
    @@ -165,7 +165,19 @@ module.exports = class Page {
        */
     
       get slug () {
    -    return slugify(this.strippedFilename)
    +    const strippedFilename = this.strippedFilename
    +
    +    if (/^(index|readme)$/i.test(strippedFilename)) {
    +      const strippedFilename = this.stripFilename(
    +        path.basename(path.dirname(this._filePath || this.regularPath))
    +      )
    +
    +      if (strippedFilename) {
    +        return slugify(strippedFilename)
    +      }
    +    }
    +
    +    return slugify(strippedFilename)
       }
     
       /**
    @@ -179,8 +191,7 @@ module.exports = class Page {
        */
     
       get strippedFilename () {
    -    const match = this.filename.match(DATE_RE)
    -    return match ? match[3] : this.filename
    +    return this.stripFilename(this.filename)
       }
     
       /**
    @@ -194,6 +205,22 @@ module.exports = class Page {
         return inferDate(this.frontmatter, this.filename)
       }
     
    +  /**
    +   * stripped file name.
    +   *
    +   * If filename was yyyy-MM-dd-[title], the date prefix will be stripped.
    +   * If filename was yyyy-MM-[title], the date prefix will be stripped.
    +   *
    +   * @param {string} fileName
    +   * @returns {string}
    +   * @private
    +   */
    +  stripFilename(fileName) {
    +    const match = fileName.match(DATE_RE)
    +    
    +    return match ? match[3] : fileName
    +  }
    +
       /**
        * Convert page's metadata to JSON, note that all fields beginning
        * with an underscore will not be serialized.
    
    From 441f0232c86ecbf526689153219a560ad4ccbe07 Mon Sep 17 00:00:00 2001
    From: Shigma <33423008+Shigma@users.noreply.github.com>
    Date: Mon, 15 Apr 2019 01:22:51 +0800
    Subject: [PATCH 074/233] feat($core): prevent duplicate route (#1525)
    
    ---
     packages/@vuepress/core/lib/node/App.js | 9 ++++++++-
     1 file changed, 8 insertions(+), 1 deletion(-)
    
    diff --git a/packages/@vuepress/core/lib/node/App.js b/packages/@vuepress/core/lib/node/App.js
    index e1897bae..629763ba 100755
    --- a/packages/@vuepress/core/lib/node/App.js
    +++ b/packages/@vuepress/core/lib/node/App.js
    @@ -348,7 +348,14 @@ module.exports = class App {
           computed: new this.ClientComputedMixinConstructor(),
           enhancers: this.pluginAPI.getOption('extendPageData').items
         })
    -    this.pages.push(page)
    +    const index = this.pages.findIndex(({ path }) => path === page.path)
    +    if (index >= 0) {
    +      // Override a page if corresponding path already exists
    +      logger.warn(`Override existing page ${chalk.yellow(page.path)}.`)
    +      this.pages.splice(index, 1, page)
    +    } else {
    +      this.pages.push(page)
    +    }
       }
     
       /**
    
    From f47b5fa0d579f01d28dbe458edc05350fbfc8fbc Mon Sep 17 00:00:00 2001
    From: Charles Villard 
    Date: Sun, 14 Apr 2019 13:44:52 -0400
    Subject: [PATCH 075/233] docs: add tip to explain CSS pre-processor
     installation (#1530)
    
    ---
     packages/docs/docs/config/README.md | 4 ++++
     1 file changed, 4 insertions(+)
    
    diff --git a/packages/docs/docs/config/README.md b/packages/docs/docs/config/README.md
    index 88600862..37785acc 100644
    --- a/packages/docs/docs/config/README.md
    +++ b/packages/docs/docs/config/README.md
    @@ -285,6 +285,10 @@ This option is also included in [Plugin API](../plugin/option-api.md#extendmarkd
     
     ## Build Pipeline
     
    +:::tip Configuring CSS Pre-processors
    +VuePress comes with built-in webpack config for the CSS pre-processors listed below. For more information on installation these or pre-processors without built-in support, see [Using Pre-Processors](../guide/using-vue.md#using-pre-processors) for more information.
    +:::
    +
     ### postcss
     
     - Type: `Object`
    
    From 005dd5b00253deb54063fec9497a6b9b5cd23bce Mon Sep 17 00:00:00 2001
    From: RogerIF 
    Date: Mon, 15 Apr 2019 01:45:49 +0800
    Subject: [PATCH 076/233] chore: fix typo (#1528)
    
    ---
     .../markdown/__tests__/__snapshots__/snippet.spec.js.snap       | 2 +-
     packages/@vuepress/markdown/__tests__/snippet.spec.js           | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/packages/@vuepress/markdown/__tests__/__snapshots__/snippet.spec.js.snap b/packages/@vuepress/markdown/__tests__/__snapshots__/snippet.spec.js.snap
    index d62e8722..65148982 100644
    --- a/packages/@vuepress/markdown/__tests__/__snapshots__/snippet.spec.js.snap
    +++ b/packages/@vuepress/markdown/__tests__/__snapshots__/snippet.spec.js.snap
    @@ -1,6 +1,6 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
    -exports[`snippet import snipets when the file has a space in the file path 1`] = `
    +exports[`snippet import snippets when the file has a space in the file path 1`] = `
     
     
     
    diff --git a/packages/@vuepress/markdown/__tests__/snippet.spec.js b/packages/@vuepress/markdown/__tests__/snippet.spec.js index 4a2c65f8..e8e25ea7 100644 --- a/packages/@vuepress/markdown/__tests__/snippet.spec.js +++ b/packages/@vuepress/markdown/__tests__/snippet.spec.js @@ -25,7 +25,7 @@ describe('snippet', () => { expect(output).toMatchSnapshot() }) - test('import snipets when the file has a space in the file path', () => { + test('import snippets when the file has a space in the file path', () => { const input = getFragment(__dirname, 'code-snippet-with-space-in-path.md') const output = mdH.render(input) expect(output).toMatchSnapshot() From d6040f645812cc252734ced61f047f825710c77b Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 15 Apr 2019 02:03:46 +0800 Subject: [PATCH 077/233] chore: bump jest, babel-jest, jest-serializer-vue, ts-jest --- packages/@vuepress/test-utils/package.json | 8 +- yarn.lock | 723 ++++++++++++++------- 2 files changed, 475 insertions(+), 256 deletions(-) diff --git a/packages/@vuepress/test-utils/package.json b/packages/@vuepress/test-utils/package.json index d66fb686..81a769c2 100644 --- a/packages/@vuepress/test-utils/package.json +++ b/packages/@vuepress/test-utils/package.json @@ -24,11 +24,11 @@ "@vue/test-utils": "^1.0.0-beta.29", "@vuepress/core": "^1.0.0-alpha.47", "@vuepress/shared-utils": "^1.0.0-alpha.47", - "babel-jest": "^24.1.0", + "babel-jest": "^24.7.1", "execa": "^0.10.0", - "jest": "^24.1.0", - "jest-serializer-vue": "^1.0.0", - "ts-jest": "^23.10.5", + "jest": "^24.7.1", + "jest-serializer-vue": "^2.0.2", + "ts-jest": "^24.0.2", "vue": "^2.5.16", "vue-jest": "^4.0.0-beta.1", "vue-template-compiler": "^2.5.16" diff --git a/yarn.lock b/yarn.lock index 5d7d6520..b29d8045 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,6 +248,10 @@ version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c" +"@babel/parser@^7.1.0": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.3.tgz#eb3ac80f64aa101c907d4ce5406360fe75b7895b" + "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" @@ -668,6 +672,147 @@ lodash "^4.17.11" to-fast-properties "^2.0.0" +"@cnakazawa/watch@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@jest/console@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" + dependencies: + "@jest/source-map" "^24.3.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.7.1.tgz#6707f50db238d0c5988860680e2e414df0032024" + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/transform" "^24.7.1" + "@jest/types" "^24.7.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.7.0" + jest-config "^24.7.1" + jest-haste-map "^24.7.1" + jest-message-util "^24.7.1" + jest-regex-util "^24.3.0" + jest-resolve-dependencies "^24.7.1" + jest-runner "^24.7.1" + jest-runtime "^24.7.1" + jest-snapshot "^24.7.1" + jest-util "^24.7.1" + jest-validate "^24.7.0" + jest-watcher "^24.7.1" + micromatch "^3.1.10" + p-each-series "^1.0.0" + pirates "^4.0.1" + realpath-native "^1.1.0" + rimraf "^2.5.4" + strip-ansi "^5.0.0" + +"@jest/environment@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.7.1.tgz#9b9196bc737561f67ac07817d4c5ece772e33135" + dependencies: + "@jest/fake-timers" "^24.7.1" + "@jest/transform" "^24.7.1" + "@jest/types" "^24.7.0" + jest-mock "^24.7.0" + +"@jest/fake-timers@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.7.1.tgz#56e5d09bdec09ee81050eaff2794b26c71d19db2" + dependencies: + "@jest/types" "^24.7.0" + jest-message-util "^24.7.1" + jest-mock "^24.7.0" + +"@jest/reporters@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.7.1.tgz#38ac0b096cd691bbbe3051ddc25988d42e37773a" + dependencies: + "@jest/environment" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/transform" "^24.7.1" + "@jest/types" "^24.7.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-api "^2.1.1" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-source-maps "^3.0.1" + jest-haste-map "^24.7.1" + jest-resolve "^24.7.1" + jest-runtime "^24.7.1" + jest-util "^24.7.1" + jest-worker "^24.6.0" + node-notifier "^5.2.1" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0": + version "24.3.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.7.1.tgz#19eacdb29a114300aed24db651e5d975f08b6bbe" + dependencies: + "@jest/console" "^24.7.1" + "@jest/types" "^24.7.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.7.1.tgz#9c18e428e1ad945fa74f6233a9d35745ca0e63e0" + dependencies: + "@jest/test-result" "^24.7.1" + jest-haste-map "^24.7.1" + jest-runner "^24.7.1" + jest-runtime "^24.7.1" + +"@jest/transform@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.7.1.tgz#872318f125bcfab2de11f53b465ab1aa780789c2" + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.7.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.7.1" + jest-regex-util "^24.3.0" + jest-util "^24.7.1" + micromatch "^3.1.10" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.7.0": + version "24.7.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.7.0.tgz#c4ec8d1828cdf23234d9b4ee31f5482a3f04f48b" + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/yargs" "^12.0.9" + "@lerna/add@3.13.1": version "3.13.1" resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.13.1.tgz#2cd7838857edb3b43ed73e3c21f69a20beb9b702" @@ -1288,6 +1433,35 @@ dependencies: any-observable "^0.3.0" +"@types/babel__core@^7.1.0": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.1.tgz#ce9a9e5d92b7031421e1d0d74ae59f572ba48be6" + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz#328dd1a8fc4cfe3c8458be9477b219ea158fd7b2" + dependencies: + "@babel/types" "^7.3.0" + "@types/escape-html@^0.0.20": version "0.0.20" resolved "https://registry.yarnpkg.com/@types/escape-html/-/escape-html-0.0.20.tgz#cae698714dd61ebee5ab3f2aeb9a34ba1011735a" @@ -1321,6 +1495,10 @@ version "1.0.0" resolved "https://registry.yarnpkg.com/@types/hash-sum/-/hash-sum-1.0.0.tgz#838f4e8627887d42b162d05f3d96ca636c2bc504" +"@types/istanbul-lib-coverage@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz#1eb8c033e98cf4e1a4cedcaf8bcafe8cb7591e85" + "@types/jest-diff@*": version "20.0.1" resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89" @@ -1355,6 +1533,14 @@ version "5.5.0" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45" +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + +"@types/yargs@^12.0.2", "@types/yargs@^12.0.9": + version "12.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" + "@vue/babel-helper-vue-jsx-merge-props@^1.0.0-beta.2": version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0-beta.2.tgz#f3e20d77b89ddb7a4b9b7a75372f05cd3ac22d92" @@ -1967,12 +2153,15 @@ babel-extract-comments@^1.0.0: dependencies: babylon "^6.18.0" -babel-jest@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.1.0.tgz#441e23ef75ded3bd547e300ac3194cef87b55190" +babel-jest@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.7.1.tgz#73902c9ff15a7dfbdc9994b0b17fcefd96042178" dependencies: + "@jest/transform" "^24.7.1" + "@jest/types" "^24.7.0" + "@types/babel__core" "^7.1.0" babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.1.0" + babel-preset-jest "^24.6.0" chalk "^2.4.2" slash "^2.0.0" @@ -1999,9 +2188,11 @@ babel-plugin-istanbul@^5.1.0: istanbul-lib-instrument "^3.0.0" test-exclude "^5.0.0" -babel-plugin-jest-hoist@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.1.0.tgz#dfecc491fb15e2668abbd690a697a8fd1411a7f8" +babel-plugin-jest-hoist@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" + dependencies: + "@types/babel__traverse" "^7.0.6" babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" @@ -2014,12 +2205,12 @@ babel-plugin-transform-object-rest-spread@^6.26.0: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.26.0" -babel-preset-jest@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.1.0.tgz#83bc564fdcd4903641af65ec63f2f5de6b04132e" +babel-preset-jest@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" dependencies: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.1.0" + babel-plugin-jest-hoist "^24.6.0" babel-runtime@^6.26.0: version "6.26.0" @@ -2467,11 +2658,11 @@ caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.300009 version "1.0.30000939" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000939.tgz#b9ab7ac9e861bf78840b80c5dfbc471a5cd7e679" -capture-exit@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" dependencies: - rsvp "^3.3.3" + rsvp "^4.8.4" caseless@~0.12.0: version "0.12.0" @@ -3644,9 +3835,9 @@ diacritics@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1" -diff-sequences@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.0.0.tgz#cdf8e27ed20d8b8d3caccb4e0c0d8fe31a173013" +diff-sequences@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" diffie-hellman@^5.0.0: version "5.0.3" @@ -4090,11 +4281,9 @@ 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.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" - dependencies: - merge "^1.2.0" +exec-sh@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" execa@^0.10.0: version "0.10.0" @@ -4160,15 +4349,16 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.1.0.tgz#88e73301c4c785cde5f16da130ab407bdaf8c0f2" +expect@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.7.1.tgz#d91defbab4e627470a152feaf35b3c31aa1c7c14" dependencies: + "@jest/types" "^24.7.0" ansi-styles "^3.2.0" - jest-get-type "^24.0.0" - jest-matcher-utils "^24.0.0" - jest-message-util "^24.0.0" - jest-regex-util "^24.0.0" + jest-get-type "^24.3.0" + jest-matcher-utils "^24.7.0" + jest-message-util "^24.7.1" + jest-regex-util "^24.3.0" express@^4.16.2: version "4.16.4" @@ -4528,7 +4718,7 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.2.3, fsevents@^1.2.7: +fsevents@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" dependencies: @@ -5526,7 +5716,7 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul-api@^2.0.8: +istanbul-api@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.1.tgz#194b773f6d9cbc99a9258446848b0f988951c4d0" dependencies: @@ -5594,281 +5784,299 @@ 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@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.0.0.tgz#c02c09a8cc9ca93f513166bc773741bd39898ff7" +jest-changed-files@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.7.0.tgz#39d723a11b16ed7b373ac83adc76a69464b0c4fa" dependencies: + "@jest/types" "^24.7.0" execa "^1.0.0" throat "^4.0.0" -jest-cli@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.1.0.tgz#f7cc98995f36e7210cce3cbb12974cbf60940843" +jest-cli@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.7.1.tgz#6093a539073b6f4953145abeeb9709cd621044f1" dependencies: - ansi-escapes "^3.0.0" + "@jest/core" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" chalk "^2.0.1" exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.15" import-local "^2.0.0" is-ci "^2.0.0" - istanbul-api "^2.0.8" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-source-maps "^3.0.1" - jest-changed-files "^24.0.0" - jest-config "^24.1.0" - jest-environment-jsdom "^24.0.0" - jest-get-type "^24.0.0" - jest-haste-map "^24.0.0" - jest-message-util "^24.0.0" - jest-regex-util "^24.0.0" - jest-resolve-dependencies "^24.1.0" - jest-runner "^24.1.0" - jest-runtime "^24.1.0" - jest-snapshot "^24.1.0" - jest-util "^24.0.0" - jest-validate "^24.0.0" - jest-watcher "^24.0.0" - jest-worker "^24.0.0" - micromatch "^3.1.10" - node-notifier "^5.2.1" - p-each-series "^1.0.0" - pirates "^4.0.0" + jest-config "^24.7.1" + jest-util "^24.7.1" + jest-validate "^24.7.0" prompts "^2.0.1" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^2.0.0" - string-length "^2.0.0" - strip-ansi "^5.0.0" - which "^1.2.12" + realpath-native "^1.1.0" yargs "^12.0.2" -jest-config@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.1.0.tgz#6ea6881cfdd299bc86cc144ee36d937c97c3850c" +jest-config@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.7.1.tgz#6c1dd4db82a89710a3cf66bdba97827c9a1cf052" dependencies: "@babel/core" "^7.1.0" - babel-jest "^24.1.0" + "@jest/test-sequencer" "^24.7.1" + "@jest/types" "^24.7.0" + babel-jest "^24.7.1" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^24.0.0" - jest-environment-node "^24.0.0" - jest-get-type "^24.0.0" - jest-jasmine2 "^24.1.0" - jest-regex-util "^24.0.0" - jest-resolve "^24.1.0" - jest-util "^24.0.0" - jest-validate "^24.0.0" + jest-environment-jsdom "^24.7.1" + jest-environment-node "^24.7.1" + jest-get-type "^24.3.0" + jest-jasmine2 "^24.7.1" + jest-regex-util "^24.3.0" + jest-resolve "^24.7.1" + jest-util "^24.7.1" + jest-validate "^24.7.0" micromatch "^3.1.10" - pretty-format "^24.0.0" - realpath-native "^1.0.2" + pretty-format "^24.7.0" + realpath-native "^1.1.0" -jest-diff@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.0.0.tgz#a3e5f573dbac482f7d9513ac9cfa21644d3d6b34" +jest-diff@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.7.0.tgz#5d862899be46249754806f66e5729c07fcb3580f" dependencies: chalk "^2.0.1" - diff-sequences "^24.0.0" - jest-get-type "^24.0.0" - pretty-format "^24.0.0" + diff-sequences "^24.3.0" + jest-get-type "^24.3.0" + pretty-format "^24.7.0" -jest-docblock@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.0.0.tgz#54d77a188743e37f62181a91a01eb9222289f94e" +jest-docblock@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" dependencies: detect-newline "^2.1.0" -jest-each@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.0.0.tgz#10987a06b21c7ffbfb7706c89d24c52ed864be55" +jest-each@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.7.1.tgz#fcc7dda4147c28430ad9fb6dc7211cd17ab54e74" dependencies: + "@jest/types" "^24.7.0" chalk "^2.0.1" - jest-get-type "^24.0.0" - jest-util "^24.0.0" - pretty-format "^24.0.0" + jest-get-type "^24.3.0" + jest-util "^24.7.1" + pretty-format "^24.7.0" -jest-environment-jsdom@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.0.0.tgz#5affa0654d6e44cd798003daa1a8701dbd6e4d11" +jest-environment-jsdom@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.7.1.tgz#a40e004b4458ebeb8a98082df135fd501b9fbbd6" dependencies: - jest-mock "^24.0.0" - jest-util "^24.0.0" + "@jest/environment" "^24.7.1" + "@jest/fake-timers" "^24.7.1" + "@jest/types" "^24.7.0" + jest-mock "^24.7.0" + jest-util "^24.7.1" jsdom "^11.5.1" -jest-environment-node@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.0.0.tgz#330948980656ed8773ce2e04eb597ed91e3c7190" +jest-environment-node@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.7.1.tgz#fa2c047a31522a48038d26ee4f7c8fd9c1ecfe12" dependencies: - jest-mock "^24.0.0" - jest-util "^24.0.0" + "@jest/environment" "^24.7.1" + "@jest/fake-timers" "^24.7.1" + "@jest/types" "^24.7.0" + jest-mock "^24.7.0" + jest-util "^24.7.1" jest-get-type@^22.1.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" -jest-get-type@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.0.0.tgz#36e72930b78e33da59a4f63d44d332188278940b" +jest-get-type@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.3.0.tgz#582cfd1a4f91b5cdad1d43d2932f816d543c65da" -jest-haste-map@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.0.0.tgz#e9ef51b2c9257384b4d6beb83bd48c65b37b5e6e" +jest-haste-map@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.7.1.tgz#772e215cd84080d4bbcb759cfb668ad649a21471" dependencies: + "@jest/types" "^24.7.0" + anymatch "^2.0.0" fb-watchman "^2.0.0" graceful-fs "^4.1.15" invariant "^2.2.4" - jest-serializer "^24.0.0" - jest-util "^24.0.0" - jest-worker "^24.0.0" + jest-serializer "^24.4.0" + jest-util "^24.7.1" + jest-worker "^24.6.0" micromatch "^3.1.10" - sane "^3.0.0" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" -jest-jasmine2@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.1.0.tgz#8377324b967037c440f0a549ee0bbd9912055db6" +jest-jasmine2@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.7.1.tgz#01398686dabe46553716303993f3be62e5d9d818" dependencies: "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" chalk "^2.0.1" co "^4.6.0" - expect "^24.1.0" + expect "^24.7.1" is-generator-fn "^2.0.0" - jest-each "^24.0.0" - jest-matcher-utils "^24.0.0" - jest-message-util "^24.0.0" - jest-snapshot "^24.1.0" - jest-util "^24.0.0" - pretty-format "^24.0.0" + jest-each "^24.7.1" + jest-matcher-utils "^24.7.0" + jest-message-util "^24.7.1" + jest-runtime "^24.7.1" + jest-snapshot "^24.7.1" + jest-util "^24.7.1" + pretty-format "^24.7.0" throat "^4.0.0" -jest-leak-detector@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.0.0.tgz#78280119fd05ee98317daee62cddb3aa537a31c6" +jest-leak-detector@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.7.0.tgz#323ff93ed69be12e898f5b040952f08a94288ff9" dependencies: - pretty-format "^24.0.0" + pretty-format "^24.7.0" -jest-matcher-utils@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.0.0.tgz#fc9c41cfc49b2c3ec14e576f53d519c37729d579" +jest-matcher-utils@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.7.0.tgz#bbee1ff37bc8b2e4afcaabc91617c1526af4bcd4" dependencies: chalk "^2.0.1" - jest-diff "^24.0.0" - jest-get-type "^24.0.0" - pretty-format "^24.0.0" + jest-diff "^24.7.0" + jest-get-type "^24.3.0" + pretty-format "^24.7.0" -jest-message-util@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.0.0.tgz#a07a141433b2c992dbaec68d4cbfe470ba289619" +jest-message-util@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.7.1.tgz#f1dc3a6c195647096a99d0f1dadbc447ae547018" dependencies: "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" + "@types/stack-utils" "^1.0.1" chalk "^2.0.1" micromatch "^3.1.10" slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.0.0.tgz#9a4b53e01d66a0e780f7d857462d063e024c617d" - -jest-regex-util@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.0.0.tgz#4feee8ec4a358f5bee0a654e94eb26163cb9089a" - -jest-resolve-dependencies@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.1.0.tgz#78f738a2ec59ff4d00751d9da56f176e3f589f6c" +jest-mock@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.7.0.tgz#e49ce7262c12d7f5897b0d8af77f6db8e538023b" dependencies: - jest-regex-util "^24.0.0" - jest-snapshot "^24.1.0" + "@jest/types" "^24.7.0" -jest-resolve@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.1.0.tgz#42ff0169b0ea47bfdbd0c52a0067ca7d022c7688" +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + +jest-regex-util@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" + +jest-resolve-dependencies@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.7.1.tgz#cf93bbef26999488a96a2b2012f9fe7375aa378f" dependencies: + "@jest/types" "^24.7.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.7.1" + +jest-resolve@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.7.1.tgz#e4150198299298380a75a9fd55043fa3b9b17fde" + dependencies: + "@jest/types" "^24.7.0" browser-resolve "^1.11.3" chalk "^2.0.1" - realpath-native "^1.0.0" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" -jest-runner@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.1.0.tgz#3686a2bb89ce62800da23d7fdc3da2c32792943b" +jest-runner@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.7.1.tgz#41c8a02a06aa23ea82d8bffd69d7fa98d32f85bf" dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" chalk "^2.4.2" exit "^0.1.2" graceful-fs "^4.1.15" - jest-config "^24.1.0" - jest-docblock "^24.0.0" - jest-haste-map "^24.0.0" - jest-jasmine2 "^24.1.0" - jest-leak-detector "^24.0.0" - jest-message-util "^24.0.0" - jest-runtime "^24.1.0" - jest-util "^24.0.0" - jest-worker "^24.0.0" + jest-config "^24.7.1" + jest-docblock "^24.3.0" + jest-haste-map "^24.7.1" + jest-jasmine2 "^24.7.1" + jest-leak-detector "^24.7.0" + jest-message-util "^24.7.1" + jest-resolve "^24.7.1" + jest-runtime "^24.7.1" + jest-util "^24.7.1" + jest-worker "^24.6.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.1.0.tgz#7c157a2e776609e8cf552f956a5a19ec9c985214" +jest-runtime@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.7.1.tgz#2ffd70b22dd03a5988c0ab9465c85cdf5d25c597" dependencies: - "@babel/core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" + "@jest/console" "^24.7.1" + "@jest/environment" "^24.7.1" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.7.1" + "@jest/types" "^24.7.0" + "@types/yargs" "^12.0.2" chalk "^2.0.1" - convert-source-map "^1.4.0" exit "^0.1.2" - fast-json-stable-stringify "^2.0.0" glob "^7.1.3" graceful-fs "^4.1.15" - jest-config "^24.1.0" - jest-haste-map "^24.0.0" - jest-message-util "^24.0.0" - jest-regex-util "^24.0.0" - jest-resolve "^24.1.0" - jest-snapshot "^24.1.0" - jest-util "^24.0.0" - jest-validate "^24.0.0" - micromatch "^3.1.10" - realpath-native "^1.0.0" + jest-config "^24.7.1" + jest-haste-map "^24.7.1" + jest-message-util "^24.7.1" + jest-mock "^24.7.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.7.1" + jest-snapshot "^24.7.1" + jest-util "^24.7.1" + jest-validate "^24.7.0" + realpath-native "^1.1.0" slash "^2.0.0" strip-bom "^3.0.0" - write-file-atomic "2.4.1" yargs "^12.0.2" -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" +jest-serializer-vue@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/jest-serializer-vue/-/jest-serializer-vue-2.0.2.tgz#b238ef286357ec6b480421bd47145050987d59b3" dependencies: pretty "2.0.0" -jest-serializer@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.0.0.tgz#522c44a332cdd194d8c0531eb06a1ee5afb4256b" +jest-serializer@^24.4.0: + version "24.4.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" -jest-snapshot@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.1.0.tgz#85e22f810357aa5994ab61f236617dc2205f2f5b" +jest-snapshot@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.7.1.tgz#bd5a35f74aedff070975e9e9c90024f082099568" dependencies: "@babel/types" "^7.0.0" + "@jest/types" "^24.7.0" chalk "^2.0.1" - jest-diff "^24.0.0" - jest-matcher-utils "^24.0.0" - jest-message-util "^24.0.0" - jest-resolve "^24.1.0" + expect "^24.7.1" + jest-diff "^24.7.0" + jest-matcher-utils "^24.7.0" + jest-message-util "^24.7.1" + jest-resolve "^24.7.1" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^24.0.0" + pretty-format "^24.7.0" semver "^5.5.0" -jest-util@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.0.0.tgz#fd38fcafd6dedbd0af2944d7a227c0d91b68f7d6" +jest-util@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.7.1.tgz#b4043df57b32a23be27c75a2763d8faf242038ff" dependencies: + "@jest/console" "^24.7.1" + "@jest/fake-timers" "^24.7.1" + "@jest/source-map" "^24.3.0" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" callsites "^3.0.0" chalk "^2.0.1" graceful-fs "^4.1.15" is-ci "^2.0.0" - jest-message-util "^24.0.0" mkdirp "^0.5.1" slash "^2.0.0" source-map "^0.6.0" @@ -5882,38 +6090,42 @@ jest-validate@^23.5.0: leven "^2.1.0" pretty-format "^23.6.0" -jest-validate@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.0.0.tgz#aa8571a46983a6538328fef20406b4a496b6c020" +jest-validate@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.7.0.tgz#70007076f338528ee1b1c8a8258b1b0bb982508d" dependencies: + "@jest/types" "^24.7.0" camelcase "^5.0.0" chalk "^2.0.1" - jest-get-type "^24.0.0" + jest-get-type "^24.3.0" leven "^2.1.0" - pretty-format "^24.0.0" + pretty-format "^24.7.0" -jest-watcher@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.0.0.tgz#20d44244d10b0b7312410aefd256c1c1eef68890" +jest-watcher@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.7.1.tgz#e161363d7f3f4e1ef3d389b7b3a0aad247b673f5" dependencies: + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" + "@types/yargs" "^12.0.9" ansi-escapes "^3.0.0" chalk "^2.0.1" - jest-util "^24.0.0" + jest-util "^24.7.1" string-length "^2.0.0" -jest-worker@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.0.0.tgz#3d3483b077bf04f412f47654a27bba7e947f8b6d" +jest-worker@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" dependencies: merge-stream "^1.0.1" supports-color "^6.1.0" -jest@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.1.0.tgz#b1e1135caefcf2397950ecf7f90e395fde866fd2" +jest@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.7.1.tgz#0d94331cf510c75893ee32f87d7321d5bf8f2501" dependencies: import-local "^2.0.0" - jest-cli "^24.1.0" + jest-cli "^24.7.1" joi@^11.1.1: version "11.4.0" @@ -6607,10 +6819,6 @@ merge2@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" -merge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -7564,7 +7772,7 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" -pirates@^4.0.0: +pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" dependencies: @@ -8150,12 +8358,14 @@ pretty-format@^23.6.0: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.0.0.tgz#cb6599fd73ac088e37ed682f61291e4678f48591" +pretty-format@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.7.0.tgz#d23106bc2edcd776079c2daa5da02bcb12ed0c10" dependencies: + "@jest/types" "^24.7.0" ansi-regex "^4.0.0" ansi-styles "^3.2.0" + react-is "^16.8.4" pretty-time@^1.1.0: version "1.1.0" @@ -8369,6 +8579,10 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-is@^16.8.4: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" + read-cmd-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" @@ -8476,7 +8690,7 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -realpath-native@^1.0.0, realpath-native@^1.0.2: +realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" dependencies: @@ -8760,9 +8974,9 @@ 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" +rsvp@^4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" run-async@^2.2.0: version "2.3.0" @@ -8806,21 +9020,19 @@ safe-regex@^1.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" -sane@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-3.1.0.tgz#995193b7dc1445ef1fe41ddfca2faf9f111854c6" +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" dependencies: + "@cnakazawa/watch" "^1.0.3" anymatch "^2.0.0" - capture-exit "^1.2.0" - exec-sh "^0.2.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" execa "^1.0.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" @@ -9740,6 +9952,20 @@ ts-jest@^23.10.5: semver "^5.5" yargs-parser "10.x" +ts-jest@^24.0.2: + version "24.0.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.0.2.tgz#8dde6cece97c31c03e80e474c749753ffd27194d" + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" + tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" @@ -10102,19 +10328,12 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" -walker@~1.0.5: +walker@^1.0.7, 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" @@ -10303,7 +10522,7 @@ 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, which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@1, which@^1.2.10, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" dependencies: From 5d2fc90016a2c4738b386216f1917db8f57b42d2 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 15 Apr 2019 02:27:02 +0800 Subject: [PATCH 078/233] test: remove mock hack of `require.reesolve` ref: https://github.com/facebook/jest/pull/7687 --- .../__tests__/moduleResolver.spec.ts | 22 +++++++++++-------- .../shared-utils/src/moduleLoader.ts | 14 +++--------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/packages/@vuepress/shared-utils/__tests__/moduleResolver.spec.ts b/packages/@vuepress/shared-utils/__tests__/moduleResolver.spec.ts index 5f3e9dad..a792c3e0 100644 --- a/packages/@vuepress/shared-utils/__tests__/moduleResolver.spec.ts +++ b/packages/@vuepress/shared-utils/__tests__/moduleResolver.spec.ts @@ -21,7 +21,7 @@ function loadMockModule (name: string) { } function resolveMockModule (name: string) { - return path.resolve(__dirname, `${MOCK_RELATIVE}/${name}`) + return require.resolve(path.resolve(__dirname, `${MOCK_RELATIVE}/${name}/`)) } const fixturesDir = path.resolve(__dirname, 'fixtures') @@ -110,12 +110,14 @@ describe('resolvePlugin', () => { expect(resolved.fromDep).toBe(false) }) - test('from dep', () => { + describe('from dep', () => { const asserts = getBaseAsserts('plugin') for (const { input, output } of asserts) { - const [, name] = output - const resolved = resolvePlugin(input) - expect(resolved.entry).toBe(loadMockModule(name)) + test(input, () => { + const [, name] = output + const resolved = resolvePlugin(input) + expect(resolved.entry).toBe(loadMockModule(name)) + }) } }) @@ -137,12 +139,14 @@ describe('resolvePlugin', () => { describe('resolveTheme', () => { const resolveTheme = themeResolver.resolve.bind(themeResolver) - test('from dep', () => { + describe('from dep', () => { const asserts = getBaseAsserts('theme') for (const { input, output } of asserts) { - const [, name] = output - const resolved = resolveTheme(input) - expect(resolved.entry).toBe(resolveMockModule(name)) + test(input, () => { + const [, name] = output + const resolved = resolveTheme(input) + expect(resolved.entry).toBe(resolveMockModule(name)) + }) } }) diff --git a/packages/@vuepress/shared-utils/src/moduleLoader.ts b/packages/@vuepress/shared-utils/src/moduleLoader.ts index b87d1875..911ac963 100644 --- a/packages/@vuepress/shared-utils/src/moduleLoader.ts +++ b/packages/@vuepress/shared-utils/src/moduleLoader.ts @@ -1,8 +1,6 @@ // Midified from https://github.com/vuejs/vue-cli/blob/dev/packages/@0vue/cli-shared-utils/lib/module.js import semver from 'semver' -import path from 'upath' -import fs from 'fs-extra' import env from './env' function resolveFallback (request: string, options: { paths: string[] }) { @@ -40,15 +38,9 @@ const resolve = semver.satisfies(process.version, '>=10.0.0') export function resolveModule (request: string, context: string): string { let resolvedPath - // TODO - // Temporary workaround for jest cannot resolve module path from '__mocks__' - // when using 'require.resolve'. - if (env.isTest && request !== '@vuepress/theme-default') { - resolvedPath = path.resolve(__dirname, '../../../../__mocks__', request) - if (!fs.existsSync(`${resolvedPath}.js`) && !fs.existsSync(`${resolvedPath}/index.js`)) { - throw new Error(`Cannot find module '${request}'`) - } - return resolvedPath + + if (env.isTest) { + return require.resolve(request) } // module.paths is for globally install packages. From 2592af2a262eeb5fd42039fd5e62cf22a3e504a0 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 15 Apr 2019 02:39:28 +0800 Subject: [PATCH 079/233] docs: update --- packages/docs/docs/config/README.md | 5 +++-- packages/docs/docs/zh/config/README.md | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/docs/docs/config/README.md b/packages/docs/docs/config/README.md index 37785acc..5a0a7c6d 100644 --- a/packages/docs/docs/config/README.md +++ b/packages/docs/docs/config/README.md @@ -68,8 +68,9 @@ Specify the port to use for the dev server. ### temp -- Type: `number` -- Default: `@vuepress/core/.temp` +- Type: `string` +- Default: `/path/to/@vuepress/core/.temp` + Specify the temporary directory for client. diff --git a/packages/docs/docs/zh/config/README.md b/packages/docs/docs/zh/config/README.md index 20f863a3..42db142b 100644 --- a/packages/docs/docs/zh/config/README.md +++ b/packages/docs/docs/zh/config/README.md @@ -66,8 +66,8 @@ module.exports = { ### temp -- Type: `number` -- Default: `@vuepress/core/.temp` +- Type: `string` +- Default: `/path/to/@vuepress/core/.temp` 指定客户端文件的临时目录。 From 1b6c4cdcd272e2108922457128e200b58a4c2f61 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 15 Apr 2019 23:32:51 +0800 Subject: [PATCH 080/233] chore: update compatible node version --- packages/docs/docs/README.md | 2 +- packages/docs/docs/zh/README.md | 2 +- packages/vuepress/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/docs/docs/README.md b/packages/docs/docs/README.md index f87e1573..ac3f1029 100644 --- a/packages/docs/docs/README.md +++ b/packages/docs/docs/README.md @@ -43,5 +43,5 @@ vuepress build ``` ::: warning COMPATIBILITY NOTE -VuePress requires Node.js >= 8. +VuePress requires Node.js >= 8.6. ::: diff --git a/packages/docs/docs/zh/README.md b/packages/docs/docs/zh/README.md index ac13b6ab..a4c5edba 100644 --- a/packages/docs/docs/zh/README.md +++ b/packages/docs/docs/zh/README.md @@ -30,5 +30,5 @@ vuepress build . ``` ::: warning 注意 -请确保你的 Node.js 版本 >= 8。 +请确保你的 Node.js 版本 >= 8.6。 ::: diff --git a/packages/vuepress/package.json b/packages/vuepress/package.json index 60c0bd11..9048abe9 100644 --- a/packages/vuepress/package.json +++ b/packages/vuepress/package.json @@ -34,7 +34,7 @@ "cac": "^6.3.9" }, "engines": { - "node": ">=8" + "node": ">=8.6" }, "browserslist": [ ">1%" From 141bd11e4b7e1b4d1bee53a49c232b11a36516cd Mon Sep 17 00:00:00 2001 From: Anton Wilhelm Date: Tue, 16 Apr 2019 17:16:37 +0200 Subject: [PATCH 081/233] feat($theme-default): support external links in sidebar (close: #764)(#1534) --- .../theme-default/components/SidebarLink.vue | 17 ++++++++++++++++- packages/@vuepress/theme-default/util/index.js | 6 ++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/@vuepress/theme-default/components/SidebarLink.vue b/packages/@vuepress/theme-default/components/SidebarLink.vue index 7d128b4a..243ce763 100644 --- a/packages/@vuepress/theme-default/components/SidebarLink.vue +++ b/packages/@vuepress/theme-default/components/SidebarLink.vue @@ -28,7 +28,9 @@ export default { const active = item.type === 'auto' ? selfActive || item.children.some(c => isActive($route, item.basePath + '#' + c.slug)) : selfActive - const link = renderLink(h, item.path, item.title || item.path, active) + const link = item.type === 'external' + ? renderExternal(h, item.path, item.title || item.path) + : renderLink(h, item.path, item.title || item.path, active) const configDepth = $page.frontmatter.sidebarDepth || sidebarDepth @@ -75,6 +77,19 @@ function renderChildren (h, children, path, route, maxDepth, depth = 1) { ]) })) } + +function renderExternal (h, to, text) { + return h('a', { + attrs: { + href: to, + target: '_blank', + rel: 'noopener noreferrer' + }, + class: { + 'sidebar-link': true + } + }, [text, h('OutboundLink')]) +} diff --git a/packages/@vuepress/theme-default/styles/code.styl b/packages/@vuepress/theme-default/styles/code.styl index 0bf5849e..9d3aa9a5 100644 --- a/packages/@vuepress/theme-default/styles/code.styl +++ b/packages/@vuepress/theme-default/styles/code.styl @@ -133,3 +133,5 @@ div[class~="language-bash"]:before div[class~="language-php"]:before content "php" + +@import '~prismjs/themes/prism-tomorrow.css' From abad4c5b3d08ba7e2e2a5b4b86bcbcba7dd639cf Mon Sep 17 00:00:00 2001 From: Drake Costa Date: Sat, 20 Jul 2019 00:13:33 -0700 Subject: [PATCH 181/233] ui: add vector brand icons (#1627) * Add Vector Brand Icons Re-created the VuePress icon in Adobe Illustrator. Here's the raw Illustrator file to tweak as you wish, plus an SVG version which we will be using over at CodeSandbox. * Update vuepress-icon.svg --- art/VuePress-Icon.ai | 1359 +++++++++++++++++++++++++++++++++++++++++ art/vuepress-icon.svg | 46 ++ 2 files changed, 1405 insertions(+) create mode 100644 art/VuePress-Icon.ai create mode 100644 art/vuepress-icon.svg diff --git a/art/VuePress-Icon.ai b/art/VuePress-Icon.ai new file mode 100644 index 00000000..63ec74af --- /dev/null +++ b/art/VuePress-Icon.ai @@ -0,0 +1,1359 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R 62 0 R 148 0 R 221 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + Adobe Illustrator CC 23.0 (Windows) + 2019-05-29T13:53:31-07:00 + 2019-05-29T14:12:32-07:00 + 2019-05-29T14:12:32-07:00 + + + + 228 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADkAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq0WUd8VcHU9DireKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuqMVa5L4jFWvUTxriruR7A4q6snYU+eKupIe4H44q7g3dj9FMVb4DvviruK+AxVbJHyUg bN+yffFVCyufVWjfbGzDwI64qisVdirsVdirsVdirsVdirsVdirsVdiriQMVW+ovzxV3M9lOKurJ /LT5nFXUkPUgfLfFXcD3Y/RirvTXvU/TirYRB2GKt4q7FXYq7FXYq7FXYq7FUsP+j6qV/YmHMfPo fxxVMwajFXYq7FXYq7FXYq7FXYq7FXYq7FVK5l9OIkMFY7KzdOR2Hh3xVUVAFAPxEftGlT92Kt4q 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqgdWjPCK4XrA2/+q2x/GmKom2kDxBhviqrirsVdirs VdirsVdirsVdirsVQerF1sZnRS7qjMqDqSBUAYqiLeUSwRyj9tQfvGKqmKuxV2KuxV2KuxV2KuxV 2KuxVTnubeBeU8qRKf2nYKPxxQSBzSy683+WrWvq6jCSOojJlP8AyTDZA5Ijq48tXijzkHaL5o0v WZ5orD1HEChpJWXinxGgG5rU0PbGMweScOqjkJEeib5NyHYqtljWSNo2+y4Kn5HbFUBpEjBGhf7c bFG+Y2xVMcVdirsVdirsVdirsVdirsVSbVfMkFpK1vEvqzoQJBWgUkBhXx2OUZc4jt1cPU6sYzQ3 KS3XmfUZY2CiNAR2Ff1k5jHUycE9oZD3BNfJl99Z0f0mI9W1kaF1UGgH2k6/5DDMzFPijbtNPk44 Ap9ljc7FXYq4kAVOwHU4qhJ9Y0m3r697BGR2aRQfurkTIDq1SzQHMhj+s/mj5J0ghbq/JkYEokUU r1p4MF4f8NlmOPHyWGeEuRtjF9/zkJ5ViqLOxvLlh3cRxKfp5O3/AAuXDTllxhl3knz7ovm2xM1k 3o3cX+9NjIR6kfuKfaTwYZVPGYsgbZDcTxW8ElxMwSGFGkkc9AqipP3DIJfKmv8A5l+bdUv7mYar dW9rLI7RWsUrxokZYlUohFeI23zYRxxA5NJkUL5WM15qr3dw7StAtebks3JthufpzG1s6hXe4HaG SoV3suaXNVTpHrn5Zad9W8uC6YfvL2RpPfgvwKPwJ+nMnEKD0HZuPhx3/OZdlrsHYq7FUsnH1fUe daJcDl/slAB/hiqZg1GKuxV2KuxV2KuxV2KuxVpvsnFXnOq3JbzDqcR6xvEfoaFP6ZrtQPW6LXf3 pUS22UOGnXkaaRL68gLfupFRkSg2ccqmvuP1ZnaU7EO37OlsQzPMp2TsVdiqV+YNAtdZs/RlJSVK mGYdVb3HceIyE4CQcfUacZY0Xker6dfaVeNaXicJBupG6svZlPcZhyiQd3ncuKWOVSSi/tra9t2g uFDIeh7g+IPY5LHkMDYRjyygbDAdZ0qfTZqN8cDH91L2PsfA5usOcZB5u8waiOQbc1DSde1LRtQi 1DTbhre7hNUkX8QQdiD3By2QBFFyA9Y8yfndY61+W95bKv1XX7rjaXFsKlTHJUySxn+RkUrQ7gnv 1OPHDUvJmZbPEmmzIYM08pwmDShKwo1wxf8A2I2X9Vc1esnc67nR9oZLyV3J5bRy3V1Dawiss7rF GPFnIUficxQHCiDIgDq+i7G0js7KC0i/u7eNYk+SAD+GZYFPXQiIxAHRWwsnYq7FUDrEZa09VR8U BD/R0b8MVRNtIJIgcVVcVdirsVdirsVdirsVY9qv5geTNLleG91aBJoyVkiQmV1I6hliDkH2yYxy PIIMg88ufNnl3WPNs0mjzmRZoF9bkroWdP2grgGnEAZiazCY0S6ntGN1IJjzzAdYq6VfCx12yuCQ sbv6MjGp+GWgFAO5bj1zI08ql73O0GSp13vTsz3eOxV2KuxVLde0Cw1qyNtdLRxUwzgfHGx7j+I7 5GUQQ0Z8EcsaLxjzDomoaHfG1u12O8My/YkXxX+I7ZiygQXnM+CWKVFJLpIbiFoZlDxuKFTjGRib DVDIYmxzYHr2jTac/qJWS0Y0V+49mzbYNQJjzd7pdUMo/pJK02XuW1HzmmSJPtyMFX5saDATQtEi ALL0mEJBBHCmyRqFA9gKZpZGzby058UiT1Zl+Vem/X/NcczLWGwRp2Pbl9lB97V+jJ4xu5vZuPiy 3/N3e4Ze9I7FXYq7FWnRXRkYVVgQw9jiqX6Y7RySW7n4oyV+gdDiqY4q7FXYq7FXYq7FWJfmtrd7 o3kXUbyyYx3DelbrKvVBPKsTMCOho+x7HLMQuQRLk+YuWbFoR/ly/wDqPmCznL8I2cRybVqH2A+l qZh62HFjPk0amHFAvYuWaB0ijcs4UOjcXU8lYUNCNwd6jJRNG2UJGJBD1PR7369pVpecSpniR2U9 QSNx9BzZg29NGVgFGYWTsVdirsVQGt6JYazYPZXqco23Rxs6N2ZT2IwSjbVmwxyR4ZPDvNfljUvL t6YbgF7aQn6tdAfC4/gw7jMaUKea1OmlilR5d7HpjHLG0cgDo4IZTuCDiDW4ceMiDYYN5h0GSxLX FtV7Q9R1ZPn7e+bHDn4tjzd7pNaMmx+r71DypD6+rLIRVLdTIfCvRf11w6iVR97LtDJw4j57M3aX NdTztvaPyX0n6v5fn1J1pJfy0QnvFDVRT/ZlsuxjZ6HsrFWMy/nfoehZN2jsVdirsVdiqW3SmHUk mA+GZaMf8pafwxVMVNVBxVvFXYq7FXYq7FWPfmFpTar5I1uxReUslpK8C+MsS+pF/wAOgyUDRQXy ikgZFYdGAI+nNk0NrOIZY5yOQiZX4jqeJrTIZI3EjyYzFgh7Pp9x61lDJWpKCp9xsfxzmiHn5bFX c1UjAhnH5e3ML6I9qhq1rM4cb7GQ+p3/ANaubDCfSHodFK8QZRlrlOxV2KuxV2KoTVtJ0/VrGSxv 4hNbydVPUEdGU9QR44CLa8uKM48Mhs8F87+TNR8s3fx1m06ZiLa7A+ng/g9Pv7ZTKNPM6vSSwnvj 3sVeQEEHcHYg9KYA4gNJfY6baWEk7244icglf5adh7ZZPIZVbfn1UsgAl0RkfqSypFGpaSRgqKOp ZjQDIU443NPqXQtLTStGstOTcWsKRlh3YD4m+lqnLgHssOPggI9wR2FsdirsVdirsVQupxepaMwF Wi/eL/sev4Yq3p8wlgBGKonFXYq7FXYq7FXEV2PTFXxzrOmnSdZ1HSiKCwuprZP9SOQqh+lKHNjA 2A0HmgmNVOTQ9K8g6gtxoKRVHO2PpFRXYAfD18RvnP6qHDkLpNXDhmWScsx3GZB+X2oPFrk9iamK 4iMi9KB0IB7V+IH8My9PLmHb9m5Ocfi9FzJdq7FXYq7FXYq7FUPqGn2Wo2ctnewrPbTLxkjYbEfw PgRiwnASFEWHgH5gfl5f+Wbg3EHK50eU/urim8ZJ2SWnQ+B6HKjGnmdbopYTY3iwzIuAy78q9G/S nnSyDLyhsq3cv/PKnD/koVyURu53Z2LjzDy3fRmWvVOxV2KuxV2KuxV2KpXptYJprY9I3IX/AFTu PwxVNMVdirsVdirsVdir5k/O3TP0f+Y19IBxj1GGC8TwqV9Bv+GgqfnmbgPpap82CVy5iy38t7p0 u7y3J/duFZV/y96mvyXNX2hHcF1naEeRZ9yzWusVdMupLXW7C6jClo50B5fyueD9O/BjTLMRqQcr Rz4cgezZnvRuxV2KuxV2KuxV2KqV1a213bSW1zGs1vMpSWJxVWU9QRixlESFHk8G/MX8tLny/K+o 6crTaK53/aeAk/ZfuV8G+g+9co083rtAcR4o/R9zLfyK0b0tLv8AV5Fo91IIIWP8kQqxHsWan0YY BzuyMVRM+96jk3cOxV2KuxV2KuxV2KpZqKiG7iuAKCT4HPuNx+GKpkjAqDireKuxV2KuxV2KvEP+ cktLo+hauopvPZTHxLBZYvu4SZkac70wm8V5ZltaZ+V70WmvW7saLJWMmtAK0Nfwp9OYethcL7nE 1kLh7nqvPNM6NTmZuBZGKON1ZeoI6EYRsWcJEEEPZPLmorqOh2V4u3qxKWWtSGAoQfcEZsAbephL iAITHCydirsVdirsVdirsVWyxRTRPFKiyRSArJG4DKykUIIOxBxQQCKKH0vSrDSrGOxsIhBaxFjH ECSBzYuete7HFjjxxgOGPJFYs3Yq7FXYq7FXYq7FUNqUBmspFX7YHJPmu/49MVa0+cSwg1rtiqKx V2KuxV2KuxV5/wDnrpf178ub6VRWTTpYbxPkjhJD9EUj5ZiNSYy5PmKuZ7UtaR0ZZE+3GwdK+Kmo yE48QIRKNinsNhdLcWcMysGDoDyG4O3UHOeIeakKNKzNVSMUPQfys1FZdMutOJHOzl5qoBB9OapB J6H41bpmZhNxeg7PycWOu5m+Wuc7FXYq7FXYq7FXYqsmuIIE5zyJEn8zsFH3nFUsufNnly3PF76N j4R1l/5NhslwlFpfL59077NraXNw/wCz8ART9JNfww+GVtT/AMRearqn1LRxEP5p2Zh+AjH44eEd 621JD+YEqPL9ZhtyBUQoiNX2FQ/68fSjdNPLGsS6ppvqXAC3ULmKcLsCy0IYD3ByMhRSCm+RS7FX Yq7FUrs/9Hv5relFryT/AFW3GKppirsVdirsVdiqA1/S01bQtR0qTZL+2mtmPgJYylfxwgq+LELh QJAVkGzqeoYbEH5HNgC0OY1GFXpPk28WbQ4VFR6Q4UP+T8P6wc0eojUz73QauNZCnnLKXGZR+Wmo pb+YZLRhT65EaMTtWM14/M8syMB5u27LkLkHqtcyHcurirq4q6uKobUb5bKxmuihk9JahBsSTsBX tucIFqxeDVPOuqJ6lokFvDUgSIobp2rIaGnsMnwxDGyqf4c8z3Rre6xIgb7SxMVFD1qqBBjxBaKp B+X+lA8riWSd+5O1f+C54+ItIk6f5O00lZvq8Tr1WWQcv+BJ/hg4pFNBO4IbWNQYI0RSNuAABH0Z G0sf1vzhcadeTWsenmUxgEStIFU1WtQKEnJRhaCU/tLqO6tYbmP7EyLIvyYVGQKWN6RTTfN17Y/Z hvU9WIf5SfFQf7Fj92WS3FsRzZVXK2Tq4q6uKuriqXakpjuIbobDeNz8zVf44qj4m5Rg+OKrsVdi rsVdirsVfHn5iaX+ifPmv2AXiiXkk0S9hHc0uEA9gstMzsRuLVLmx2uWMWWfl/f0luLJj/lxgnqO 4A8B/HNZrYbguq7Rx7iTNueYLq1bTtRGnatZagSAtvKGdiCaIdnNBv8AZJyeM0XJ0mTgyAveVcMo ZTUEVB9jmY9O3XFXVxV1cVQ+oW4ubGeDvIhC/Om344QaKEi8j3bNaXVm5Ja2m5LXsk3xAf8ABBsn MboCVarrfmeC+nhW8SMROeCLEtCoNVqTybcZIRFKSm+ledLO5t5FvFFtfQoWaEn4ZKD/AHWT4+H6 8gYJtiNykdxPNPIimSZmZ2pvVjU5dTFnPlW/E+gW7SMA9sphmJ2AMXw1JP8Ak0OUSG7IJJ5sudOu bmGS2uYppQpWVY2DUANRWlfE5ZBBW+X/ADT9S0+LTfqk1xcxu0cHAAKys1VqzH3p0wShuoKN83hr S50/WEHxW0gEoHdQakV91LYIbilLJ1dWUMpqrCoI6EHK2TdcVdXFXVxVRvIvXtpI+5Hw/wCsNx+O KqelT+pbJXr3xVG4q7FXYq7FXYq+a/8AnI7Shaed7TUFFE1KyXkfGW3cox/4B48ysB2prm8r5Zew TLyxdNb69bsKUfkjk/y0qaf8DmNq43D3OLrYXjPk9N5ZqXn1k3xIRikF7d5PvDc+WdNkaQyyLAiS SE8iWRQDyPj45mx5PV4ZXAHyCc1wtjq4q6uKurirEbH/AHH+c5IOkV2rqB2r/er/ABGWneKOq3zf bcL+OcDadNz/AJSbH8KYcZ2UpdbaNJd6VFqEA9WWMslxFT4ldCQSvjUUNMPFvSKTFdH4+WZLgr++ ZlmHjwXYfgxODi9Sa2b8k3XC7vLFj8MircRr2qPgf/jXBkChH6n5Us5uUtiq28x3KAURvoHTBGak KHlrRZ4buS4uoyjQ/BGrd2I3YfRhnJQE31+0F5pNxDSp4ll+a7/iNshE7pKG8pXrXOhwq5rLbVt5 PnHsv/CUxkN1Cc1yKurirq4q6uKpfbn6vfvFX4XPNPkxqfxxSmuKuxV2KuxV2KvHf+cmdKE3ljSt VVavY3hhY+EVzGan/kZEgy7Ad2M+T515ZltS6Gf0LiKapAjdWbj1Kg7jt1GV5Y8USGGSPFEh6vbT +pbxvXdlFfn3zSvMyFFULVGBi9K/KXVFl02700kepaSc1UAg8JSTUk7VLcumZWI7PRdnZOLHXcz2 uWue6uKurirq4qxTzkrW11Z6lGKtCyt9MTct/mpOWQ5Ugprr1i+o2EZtgJHDB49wKqw33PzrkYmi pU/LOlX2mpcpcMnpzOskaKSSGpR67U3oMZEFQnEqJLG8biqOCrD2IocilAw6Zo+nsLlUSF0BX1nY 7Buu7H2wkkqp3PmnQLc0e9jY+EdZP+IBseEraXyeeLVvhtLO4uH/AGagRqfpJJ/DJcBRaw6x5tvK rbaclsjCnKUlmFe4J4LjwhUx8u6TJpttKJWBlnf1GUdF+ELT8MEjahNq5FLq4q6uKuriqC1EFXgu B+w4Vvk39uBUyifmgOKV+KuxV2KuxVh/5vaR+lfy3163C8pIrY3cQAqedoRcCnufTpkoGig8nx+G qK5ntTTGqnFXoPk699fRIlJHKAmMhewX7Nfem+afPGpl53Ww4chTznlLiMj/AC21F7TzdDFVvTvY 3hZQaLyA5qxHenCg+eXYju7TszJU+HvezVzId86uKurirq4qlnmKza70uRFXm6EOqjqabH8CclE0 UFItL81XdvYw2X6PkuLi3Hp8gwVWVdlPQnpkjBbRf6S85XVfQsorVD0MlS4/4IqPwwUFd+hfNNyQ bvVmiHhB8B/4QL+vGwq6LyPpvLndTS3D92Y9fv5Y8a0mVt5f0a3A9O1Q/wCt8X4HbBxFaR8cUUQ4 xoqDwUAD8MildXFXVxV1cVdXFXVxV1cVWTxiWJoz+0Nj4HscVW6TPzj4n7S7Ee4wJTDFXYq7FXYq snhinhkgmUPFKpSRD0KsKEH5jFXwtqNhLpuo3emy19WwnltZK9eUDmM/8RzPibDSUPXCrKPIVy6y 3cB/uzxdf9Y1B/AZgayO4LqO1I8izLlmE6lE6TqY03VrS/JCrBIDIzAkBG+FzRd9lJIycDRcnSZO DIC+go5BJGrjowDD5EVzKepXVxV1cVdXFXVxV2w7deuKurirq4q6uKurirq4q6uKurirq4q6uKur irq4q6uKoKymA1W4jT7IIJ+ZAJ/HAlOhirsVdirsVdir5C/PDSf0Z+Z2sKo4xXpivYv+e0Y5n/ka r5l4j6WuXNgnLLWKa+V71rfWYl34TVUjtsK1P0VzF1Ubjfc4Ovx8WO+56HzzXPPrJDVCMVD3D8vN UTUPKViwNZLZPq0wLBmDRfD8VOnJaN8jmXE2Hq9Nk48YLI64W91cVdXFXVxV1cVdXFXVxV1cVdXF XVxV1cVdXFXVxVRnvbSBWaaZI1UEsWYCgHUnFWOah+Z/kixYJJqaSsRWkAab7ygamAyDTPUQjzKn on5iWmuwtJp1pKqqxQ+txBqKdlLePjiJWyw5Y5BYRpn8y3SqFMdsGqH4AuaHpxYgU+7FupNtE0k2 gq25NSSSSSSakknqTiqdYq7FXYq7FXYq+dv+cptJ9PVtB1lV2uIJrOVvAwuJYx9PrPmRgLCbwyuX sHLKYpY5QKmNg4HuprkZixTGceIEd71G1uVntoplPJZFDA+NRmoIeUnGiQqFtsWL0/8AJq9h+oah ZBv3yzCdk32V0VVNem5Q/dl+Lk9D2XK8ZHm9GrlrsnVxV1cVdXFXVxV1cVdXFXVxVTkuYI/7yRV+ ZAwKk+qed/K+lh/rmoRRugBaLkPU36UT7R+gYksJZIx5mmLan+d3lu3BWxhmvnKkqVXggYdFYycT v4gHImYcaeuxx82L3v52+Z55B9Rsbe1ipusnOVid96gx07dsgcjiT7TPQJVf/mJ52vzveC1QrxZI EFD13rJ6jA79jkTkLRPtLIeVBILlL29cPfXU10y7KZnZ6D25E0yJkXDnqZS5m3JYQr2wNRyFn35T XUFvrctlJ9i5TlGP8tN/xWv3ZPGd3Z9lZvWYnq9vhhi4AgZc75WAA6Yq7FXYq7FXYq7FXln/ADkl pH138tnvAtX0q7guajrxdjbt9H7+p+WWYj6mMuT5S5ZltbiajFWf+WblZdHgC9I1CU/1dj+IOarK KkXmtbGspTXlkHEZL+W2qx2HnC3EjcY7xGtqlgqhmoyk161K8R7nLMZ3dn2XlrJXe9yrl70Lq4q6 uKrHmij+26r8yBiqR6p598o6XyF3qcKyI3FokPOQH3Rat+GAkNc8sY8yGM3n54+VopjHbW91dKOk yIqqdq9JGRvbpkTMONLtDGO8pJqf54X8nNNL04L09Oa4b5V5Rry9x9v39sicjRPtOI5BjN9+Ynny /aTlqAtopBxMUCKoAIoeLMGcHvXlkTMuJPtKZ5bMfngu7uX1ryeS5l6epK7SNQe7EnIEuHPUGXM2 vSxjXwxajkVlhRe2BjxKgCjFFt8hihvlirTSKoqxAHicUsp/LS2kuvMcV1GrmG2V29ZVJjLkBOHP pWklaZOA3dp2ZgkcnERsHv8Aa19Ba9aZc9Cq4q7FXYq7FXYq7FUk876Mdb8n61pKrykvbKeKEf8A FpjPpn6HocINFS+FlfkobxFczWlvlhVk3km7A+sWxO9RIN/HbYe1MwdTHe3Tdq49xJlfPMZ07knm hmiuIW4TQuskT0BoymqmhqOoxDZjmYkEcw9G0z87beGxjj1SxuJLtFCvJCEZXIoOW7JSvWlNvHLh kd9j7TgY+q7S7U/z01eTkml6WkIDHjLcMXJTelY140PT9o/xxORjPtMfwhjs35lfmDcys51H0kYk iKOKLgoJrQclY7e5yPGXEl2lk6Gkq1DVNe1RmN/fTTKxBMXIrHVRQERpxQH6MiZFx56zJLmShEsI V/ZyLjnIVZbeJe2LEzKoFQdBixtdUYrbfPFXc6dcVUnvbdPtSD6DX9WLIQJS2582aNb7NOGNaUX4 vvC1OTGOR6OTDRZJdEsbz/aE0SCUDxIU/wDGwyz8vJyh2VLqQhofOk819brMhiszKguWVvj9IsOR Wg2bjXxyY03m5MOzIDmX0hpP5Q6FEiStELsmjLLMxk5Dtt9gj6Mr4Q58NJjjyDONJ8uQWIVY0VEU UVVFAPkBknJTxV4qB4Yq3irsVdirsVdirsVdir4U896R+hfOuuaWF4R2t9OsK9P3LOXi/wCSbLmZ A2GopHyySEx8t3LQ61CRSkgZGJ8KV/hlGojcXC7QhxYj5M+55gvNO54pWkKeuK24BRitt1GKt8sV dzxQse5hT7Tge1cWQiSgX8x6OpoLqNj7Ov8AE5LgPc3jSZD/AAlLrnzvp0ZpEGlO/wBgE0+/jkxh kXKh2ZM89kpn88ajItIIFjNerHkKfIBT+OWjTd5cyHZcRzKXtr+uSNVrk79uKmn3g5YMEXKGixDo hJWuJ6evK8tOnNiafKuWCAHJvjjjHkKWrCg7ZKma8Io7YVXbYq+0fyW1uXWvy00S6nB9eKI2rsf2 vqzmFWr7qgr75iZBRbByZvkEuxV2KuxV2KuxV2KuxV2Kvkz/AJyY0c2H5lG9VaR6rZw3BYDYyRVg YfMLEh+nMnEdmEnk/LLWKpbXJt7mKcE0RgWpQnj0alfbIZI3EhqzQ4oEPRoZhJGrA9Rv881zyUhR pfyxQtaZF+0wX5mmKQCUNcaxYW4HqzqlenIgVp4VpiAS2wwTlyCVXHnbS49o+Ux/yR/Wg/HLBhkX Mh2ZkPPZLn893LE8bWi9jz3/AOInLBp/Nyo9kjqUBc+ZtYnJ4uIlrsAORp4HlUfhkxpw5OPs/HHn ul0z3NwQZ5nkp0DEkCvgMtEAOTlwxxjyFLVhUZOma8IoxVcKYVbriruWKu5YqqWkFzeTi3s4ZLqd vswwI0rn/YoCcBIWmbeX/wAkvzO1qeNU0SawgcgPc6hS2VB4mN/3p+SocgcgCeEvrnyf5Zs/LHln T9BtDyisYghkIoXkYl5JCKmnN2LU7VzGkbNtgCcYFdirsVdirsVdirsVdirsVeCf85ZaNz0bQdaV d7a5ls5CPC4j9Ra/I25+/LsJ3YyfNfLL2DiajFUdp/mC/sV9MD1YuwJII2oADuKD5ZRPCDycLPoY ZDfIun8063MvEOsXug3+XxEj8MAwBjDs7FHzQP1zUmJJupanrR2H6jlgxjucoYMY/hHyURCOp3OT AbV4RR2wquAA7Yq3UYq6uKu5Yq0ZFBoSK+GNqyLRvy+8962FbS9AvrmN6cZ/RaOI1/4tk4J+ORMw E0zvRv8AnGP8yr0K181jpKH7SzTGaQf7GBXQ/wDB5A5gnhZ1o3/OJuhRcW1rXrq7PVktI47ZflV/ rDH8MgcpTws70b8ifyq0oq0egw3co6yXzPdV+aTM0f3LkDMlNM2stP0+whEFjbRWkA6RQIsaD/Yq AMilEYq7FXYq7FXYq7FXYq7FXYq7FXYq8+/PvRTqv5Va2qLWWyRL6M+AtnEkh/5FB8nA0UF8W8sy mt3LFXVxV1RiruWKu5Yq4uB1NMVRulaNrWryenpOnXWoyVoVtIZJj9PphsBkAtM60X/nH381tUox 0ldOibpLfTRxffGhkl/4TIHKE8LO9F/5xK1BuL655hii/nhsYGkr8pZSn/JvIHMy4Wd6L/zjP+V+ ngG7t7rVpBvyvLhgK/6lv6C/eDkDkKeFnui+S/KOh0/Q+jWVgy/7sggjSQ/NwOR+k5EkpTnArsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVQ2qafBqWmXenXG8F7BJbyjr8EqFG/A4q/Pm/sbvTr+ 5069jMV5ZyvBcxHqskbFWH3jMwG2pD8sKroVeaVYYVaWZzRIowWYnwCipOC1Zdov5Q/mdrPE2Ply 8CN0luVFolPENcGKv0ZE5Amme6L/AM4peeLoq2ralY6ZEeqx+pdSj/YgRJ/w+QOVPCzzRf8AnFHy VbcX1bU77U5B1RCltCf9ioeT/kpkDlKeFnui/k9+WOjUNl5cs2kXpLcp9acEdw1wZSD8siZFNMvi iihjWKJFjjUUVEAVQPYDIpXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqw Lzx+SPkDzjf/AKS1K1kt9SIAlvLN/RklAFB6goyMQNqla++SEyEEIPRf+cd/yo0sq7aSdQmX/dl9 NJNX5x1WL/hMJmVpnelaDoekRelpWnW2nx0oUtYY4RQeyBchaUdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVf/9k= + + + + 3 + sRGB IEC61966-2.1 + + + xmp.did:A77706D087AB11E3B70DEE037706C123 + + + application/pdf + uuid:a3fb1f86-fd9c-4b22-be00-d8c29ea4396f + xmp.did:248539d3-8190-4647-a7c2-f58aac979746 + xmp.did:b0ad8870-0927-4ef5-a908-c1686f1ddc69 + proof:pdf + + + + created + xmp.iid:b0ad8870-0927-4ef5-a908-c1686f1ddc69 + 2018-04-12T10:41:10-04:00 + Adobe Photoshop CC 2017 (Macintosh) + + + saved + xmp.iid:a86be286-02bd-45c3-801e-b9430b9feebc + 2018-04-12T10:46:39-04:00 + Adobe Photoshop CC 2017 (Macintosh) + / + + + saved + xmp.iid:248539d3-8190-4647-a7c2-f58aac979746 + 2019-05-29T13:53:31-07:00 + Adobe Illustrator CC 23.0 (Windows) + / + + + + + uuid:55ec20c6-343f-4a83-a806-80239a5ba58b + xmp.did:1eed275b-e294-6d41-9a25-e46e3c40af5f + xmp.did:b0ad8870-0927-4ef5-a908-c1686f1ddc69 + proof:pdf + + 1 + 3000000/10000 + 3000000/10000 + 2 + 1 + 600 + 600 + 1 + True + False + + 144.000000 + 144.000000 + Points + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + R=115 G=203 B=141 + PROCESS + 100.000000 + RGB + 115 + 203 + 141 + + + R=47 G=152 B=105 + PROCESS + 100.000000 + RGB + 47 + 152 + 105 + + + R=88 G=96 B=128 + PROCESS + 100.000000 + RGB + 88 + 96 + 128 + + + R=44 G=50 B=71 + PROCESS + 100.000000 + RGB + 44 + 50 + 71 + + + + + + + Document + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>/XObject<>>>/Thumb 228 0 R/TrimBox[0.0 0.0 144.0 144.0]/Type/Page>> endobj 223 0 obj <>stream +HwVu6PprqV*2P041c]Qw6PH/ʇ(sr5r +endstream endobj 224 0 obj <> endobj 228 0 obj <>stream +8;WRk]bQ&?%"q7hE/Rsi'c/$Q*Ksm+ND@>SXCM%7YVCFaOY:p0P^\9#hlhg,9rt!$ +\[?Z@5n\ZY"E5`kqH"^@:!R/X_kn`uS6b2U+&t$PY1QM"S;iWl'OP!ZoB5d40]s=? +W&E.[5\Q&a04[=YW-Pcge'E7C!*O^"Wr~> +endstream endobj 230 0 obj [/Indexed/DeviceRGB 255 231 0 R] endobj 231 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 227 0 obj <>/ExtGState<>/ProcSet[/PDF/ImageC/ImageI]/Shading<>/XObject<>>>/Subtype/Form>>stream +q +15.415 106.843 m +83.042 116.883 l +84.851 117.151 86.748 116.057 87.287 114.432 c +115.265 30.124 l +115.951 28.056 114.885 26.018 112.873 25.581 c +37.142 9.162 l +34.9 8.676 32.682 10.109 32.195 12.353 c +12.493 103.167 l +12.116 104.905 13.427 106.548 15.415 106.843 c +W* n +q +0 g +/GS0 gs +0 107.8557281 107.8557281 -0 63.9506111 9.0674381 cm +BX /Sh0 sh EX Q +Q +q +15.837 107.75 m +83.465 117.789 l +85.273 118.058 87.171 116.963 87.71 115.338 c +115.688 31.03 l +116.374 28.962 115.308 26.924 113.296 26.487 c +37.564 10.068 l +35.323 9.582 33.104 11.016 32.618 13.259 c +12.916 104.073 l +12.538 105.812 13.85 107.455 15.837 107.75 c +W* n +q +0 g +/GS0 gs +0 107.8557281 107.8557281 -0 64.37323 9.9737463 cm +BX /Sh1 sh EX Q +Q +q +/GS1 gs +123.3600049 0 0 136.8000054 9.0872765 1.4457679 cm +/Im0 Do +Q +q +22.673 118.746 m +89.808 128.591 l +91.608 128.855 93.515 127.752 94.073 126.122 c +122.446 43.292 l +123.128 41.301 122.098 39.348 120.137 38.936 c +46.631 23.494 l +44.465 23.039 42.275 24.411 41.747 26.551 c +19.88 115.091 l +19.452 116.824 20.705 118.458 22.673 118.746 c +W* n +q +0 g +/GS0 gs +0 105.2224884 105.2224884 -0 71.2262192 23.4073429 cm +BX /Sh2 sh EX Q +Q +q +/GS2 gs +123.1200049 0 0 133.6800053 16.3960667 14.64519 cm +/Im1 Do +Q +q +29.886 129.375 m +96.445 138.905 l +98.231 139.161 100.136 138.067 100.704 136.458 c +129.388 55.155 l +130.072 53.213 129.066 51.313 127.133 50.918 c +54.774 36.131 l +52.646 35.696 50.471 37.035 49.925 39.115 c +27.165 125.782 l +26.716 127.49 27.937 129.097 29.886 129.375 c +W* n +q +0 g +/GS0 gs +0 102.8930511 102.8930511 -0 78.3371201 36.0491562 cm +BX /Sh3 sh EX Q +Q +/CS0 cs 0.737 0.753 0.812 scn +/GS0 gs +q 1 0 0 1 93.2695 71.6797 cm +0 0 m +-1.659 5.58 l +-5.109 4.99 l +-3.359 -0.64 l +-6.46 -1.239 l +-0.09 -5.489 l +3.141 0.61 l +h +-24.126 1.463 m +-21.027 -9.416 l +-17.698 -8.657 l +-19.479 -2.394 l +-14.933 -5.954 l +-12.72 -0.943 l +-10.907 -7.306 l +-7.676 -6.613 l +-10.808 3.903 l +-14.236 3.309 l +-16.313 -1.306 l +-20.797 2.089 l +h +-29.975 2.777 m +-25.545 -13.353 l +-25.201 -14.604 -23.952 -15.379 -22.679 -15.132 c +7.423 -9.279 l +8.882 -8.996 9.766 -7.503 9.313 -6.087 c +4.344 9.446 l +3.966 10.63 2.77 11.351 1.546 11.133 c +-28.017 5.877 l +-29.455 5.622 -30.362 4.186 -29.975 2.777 c +-27.443 4.169 m +1.88 9.603 l +2.296 9.68 2.705 9.434 2.832 9.03 c +7.755 -6.612 l +7.904 -7.09 7.606 -7.592 7.115 -7.687 c +-22.628 -13.479 l +-23.057 -13.563 -23.478 -13.303 -23.596 -12.883 c +-28.098 3.117 l +-28.231 3.592 -27.928 4.079 -27.443 4.169 c +f* +Q +0.635 0.651 0.702 scn +q 1 0 0 1 74.2402 67.7002 cm +0 0 m +-0.45 1.59 l +-0.87 0.68 l +0.7 -4.82 l +1.33 -4.681 l +h +11.35 -2.63 m +10.7 -2.771 l +7.8 6.98 l +4.38 6.38 l +4.79 7.29 l +8.22 7.88 l +h +2.7 2.68 m +2.29 1.77 l +-2.19 5.16 l +-4.88 4.66 l +-5.1 5.44 l +-1.771 6.07 l +h +15.01 3.21 m +15.67 3.34 l +15.25 2.43 l +13.529 2.1 l +12.569 2.74 l +h +22.17 4.59 m +21.68 3.67 l +18.609 3.069 l +16.95 8.65 l +14.17 8.17 l +13.92 8.97 l +17.37 9.56 l +19.029 3.979 l +h +27.96 -4.34 m +28.069 -3.92 28.06 -3.46 27.92 -3.01 c +22.95 12.52 l +22.569 13.7 21.38 14.42 20.149 14.21 c +-9.41 8.95 l +-10.06 8.84 -10.61 8.48 -10.96 7.98 c +-10.76 8.91 -10.01 9.68 -8.99 9.86 c +20.58 15.11 l +21.8 15.33 23 14.61 23.37 13.43 c +28.34 -2.11 l +28.6 -2.9 28.43 -3.73 27.96 -4.34 c +26.71 -3.3 m +26.359 -4.03 l +26.25 -4.26 l +26.13 -4.44 25.939 -4.57 25.72 -4.61 c +-4.021 -10.41 l +-4.45 -10.49 -4.87 -10.23 -4.99 -9.811 c +-9.49 6.19 l +-9.54 6.38 -9.53 6.58 -9.45 6.75 c +-9.42 6.81 l +-9.39 6.87 l +-9.05 7.6 l +-9.11 7.45 -9.12 7.27 -9.07 7.1 c +-8.95 6.67 l +-4.57 -8.9 l +-4.45 -9.32 -4.03 -9.58 -3.6 -9.5 c +26.13 -3.71 l +26.14 -3.71 l +26.399 -3.66 26.6 -3.5 26.71 -3.3 c +f +Q +q +56.64 117.12 m +48 115.92 l +78.72 87.36 l +89.76 122.4 l +81.6 120.96 l +75.12 100.32 l +h +W n +q +0 g +43.4175301 -142.0123444 -142.0123444 -43.4175301 58.1532707 154.2455444 cm +BX /Sh4 sh EX Q +Q +q +56.64 117.12 m +64.56 118.32 l +71.52 112.08 l +74.16 119.76 l +81.6 120.96 l +75.12 100.32 l +h +W n +q +0 g +67.9753189 -197.4146423 -197.4146423 -67.9753189 52.600174 167.0170593 cm +BX /Sh5 sh EX Q +Q + +endstream endobj 232 0 obj <> endobj 244 0 obj <>stream +H{#Q97p̌7oϓ]'][꩚:J}vd燭},&b{l=V]z lk`#N^ ^5 ^L/Fl[$PͰ$P€kk1B[k8#I K ӟ?X +XӪ_Y&0 };6b&9N9LH +~z D)30S_c{ +8&1#lp +ӟ?23\ef +l +8:?ҁO[{Hץ_e ~v{l? `XN~+V +0Q1?6ORkOx)_OU<ӟv?]L?Bv}Hk_cau X lj~O4E05 0N־-($N*p +&НګI +rOar K`,t_@0Z 8T{0\0 < + FP@{Px +x x&CJ@)Z$,ƫ[BI;tJ%S@w +.3` @Z'` +.}; |'` + )R |]>L ( Z$MeO@*d/@'h +NUJP@w +'p @8<S@wMDP@w +? +>ItW!]$0AO)= tWON!F0A$0K&(Sg ̐:L9H;tW$s +!sAeN`y/De.@SdN`y/D'L L<_"K\N_&Hg`{0t$]B7̑ Q&o3}0 +.o; |0yP +NI;t&<7 LRo'm +Dݥ-LM$% +q^M +H ~IP, +]g`K6t>}HI 4 +&i]$0O0S@{>Н˙YQ@{9P< r 3̣О_R&R ^0Q~L%b);tPL L +.3Se/gXʘfR@w +h/{?'^/0L~I0+e־S@w +Ne,@3)X +.eg?R@ +P) +$5 +-A#p8tqY +@+WmD;Ƹ +ذk s3!n4 +@'8ndH8Ǐs '- @4fHƍ23[4z( ? +~pK?S@׿oƿmy7 +:`z`-dB6]akf6?fc-EY 0_J?H?ZG+TcH`h 0 I ;%`ɖ I +0j`uXgBOergy:7g\[^?2~! X I_Ҙ_ X 7~?G`ΝnA{C񭿦9]G/;gߞ3~{oY=c1>WUGO= +endstream endobj 245 0 obj <>stream +H9QO9Gw=O.(;޽Y.;3XrٟEG]^zY^E,/BW@#)+t)N{?ٿ}E+?Q'1I+t!nX +XX +W{yitZ^B_=4^HW ,rn|G]L_+K|p4cn|Q$wC`vhf°,),^埱m!c;`ث4;`7qg6=m=Y}Y7M_w+oZ0~կ>{՗}Vdo?m`}8{#ۧ+ר*+SQ!۟7sN %RXY+:BK `6E`N{om?'oioa^Xwuc ۏr{5m_퇳t~:g?dzt~<ۏg{nGpG'F +endstream endobj 235 0 obj [/Indexed 233 0 R 45 248 0 R] endobj 247 0 obj <>/Filter/FlateDecode/Height 557/Intent/RelativeColorimetric/Length 7774/Name/X/Subtype/Image/Type/XObject/Width 513>>stream +HZEmۄ WDT뜪|)̪8U;sRc~go){]eE@bm*P~<09T |.#onA4@+N"?>>v]Kqcju*/'yjZWk:Tp7A^?h|6fC+FH +l`)GYۭsz]U ( ='[Ͱ^Cᛒr6+@G4pt-?囓2;&iu?ߞJ~2>tO [mQM~hH x ,I~$k@6pǧ%1VN3'`O|Y&_{oЉxH)yϘ\۩pjo=%pͽ'1]$v9E=|<^'`'vO;,g +(cBqO ځtC3sO~O*9$v)]sV53_ʚ>97ї<#903 5ҞYp2j6|$Iv\ x MHϬY%h=o7#ϲYg#bp;m(v@>O{iHϰ.T/=$); d8 +?OWM,/;(k@?7Hu35z_S!R<_^/dWmt?^Zpߣ&#] \(r@*;,oN.8wyH Rt`:f c؝5UHΐn'3` @OV:]r5@ϧ͒倭^ 08649 {x(쀋A-'`[ZX+); d8z +@ve5 0 (땁$]g2QI6ˇY((Oɨ8-㕁d((PW* +Ȑ,oNp*TZcA-㕂uTsS+jπz=(r`f yx`R.9(fq@V0D0868 [>F쀋A-'#@rF@oW +^Vw$:s#8#@azymir@6i~79#@dT#ׯcȠm<E \psH["$4#@#903Tx +49 }b;Np;aY%~0,]U8wQl~ur%0eGAR`H񲚿s ؎8@$]gP0`CPazymqF0Oɨ4!Yhss J`BPi\"Yߌ(=-H2<=v + +px을-!1;f"!r8 +pPqhr%p;a¬Y%h F%;N*NF,); d8 + jV7 D?\iHug 96ˇYxMF}UB0QxJAP!F(f1xY9`$]g{bazym)qF8Oɨ$ =A) 5` 9*w@v#$Yߌ(= ϫGr@`ffhjq<PS#@r`f `u"ISv@p.A1#=(lnF>Hug`:C#@azym)pF^xMF}/"`ȣp;bx~ud"Yߌ(=#8#@#903p(@3Px!(J ;@. FY%X}Cy6Kv@W0186v@Z#ׯ71da\ RX~ F(); d8v; [`iD$:s3 +pPqhdb|r]N\;hAlKX"@\uCLL2L+v#H_z>y +Ɵ >%%4܇$,JY;@"<ޭfk[MD8ZNG ;ӲأE@P#@j}t@D@dV;2L=<%Hq@GjQx[`4`'P1P;PFJT 8 @8ju#@9]!(P1y]^7uCP"bd=$82B^ @8@"pt@0Lv^GVQ׵&[`(HT)=9UE@CjJ :wCro "ӡv'@"p@p:@e HE@t3_`vopG 0[FrD YLp'c9 Px[ @ :`:`\"@A:A\А✆_nvyq x27 +d=!(@1o@4_O"<@خD ?CX3uDy[F]׶l`CP"Sz*9@",B@tD5;@"pG ZD5YLp'e[ǤH=P B9nqvq P;AǓCp@pHqN/฀K!HBm0@8%(}0<nɀLM"<}Jph8D E:O@خD y[F]׶  ?crJ>:@e HГE@0!(@Cg*q @Om,  H= E9nquFin_QAL2:A94x-<OA"h8_JS$`>y pO`4$(c LM" +pt@!(@DVQ׵&O@4_O"Sz* @EJPE@ꆊQ)>:@e tCP",jX&8 pc+o:@"tt toe[圆_ivyq qErq 7d1@!Hw Zu %w٨VLM"Sz* !(@F y:"xdxfە *ql ᭿E[{$)t@ }JoX:@"tt  + N +4F :h8Y^"l{>{?`(Hr 7d:#;@"!(@ 8`Q:9j6꺶dp<:NG 5+@H 9 %Y:@t>:@e tCP",jX&8 pox:@"tt  f0-#=246 P%ˋeG)}0<Cc'yrFC"pt@$j6꺶d='z}}t@.|JPE@h8D%9:"v%(}t@juCE@gxdV;2+P$KD9nsDU@LkH\3cH\p0LvDMwFrD5i|q)^㲀t<9Iw@׵-np}azB!HJnhHГ@$G'z} ٨hrχD%=]xs*lW";juCE@gxp}$@ЇDߋ@8@"oY]N7ngDUqJÍ?t^-ɨ @" +ǻ?z2n`1v]Հ#`Z۽zL~~? +6WP k2|q@\~֫ nurVo, wl@ o?۹ `p{9*cv?> +JϏi-+ giGa]K6 zm׹_.Z#Q]0!BP۱{d֚HA2P*_ٷ=' @@r\!ü?r2&O)!r:~M_-C0DaO:?b|>I?忼_N> =?== rvz2`[_ly&&?c/Яo лdI?wo~s_^O{K?tsGH|i?,)A_#|a?b˒>􃀻w{['3֏{#ҽ/ZT5p/_/s.vA={0iA>CAW"X k}Q3*ݳ/GJ^}R+{Ax(n}~ Q4=:JeKr|>J[/Wa2~&ܿ|XЏO)ypϑ!n{={z_1:AC>oږEUrϡ;8!?ZH,y%#%V*#B/ q_gBQC@{Zq~{(`X,݇_{(Tx% +{ܷ WM>0!},GW CtA֎o 7pϗ>ܯ~{oږEpJ }sqTz)%}<}:9 +%}eK mܨ{CQ E{Zq>oC,yIÃ/ܽk!n9`^=c[pQVBt?_H},G~#а^o'!g:|6P!l;胾mY`pi|(#%V~!` Ep;~o/Rҏk~_D.K^Kw}flWa{7 =@ /$_>Q`N?={z9@݀N0 +}#M۲}F܀b7t/yp{V@x M+yp55)&׻w)++#0{Zq~{3Tm/蟍/ocudޅ W@vno0_=>= 9W^=c[!?˯?__"L}XЏG+b8j 8;\=<γ{xpbh>stream + +endstream endobj 249 0 obj <>stream +HyTSwoɞc [5, BHBK!aPVX=u:XKèZ\;v^N߽~w.MhaUZ>31[_& (DԬlK/jq'VOV?:OsRUzdWRab5? Ζ&VϳS7Trc3MQ]Ymc:B :Ŀ9ᝩ*UUZ<"2V[4ZLOMa?\⎽"?.KH6|zӷJ.Hǟy~Nϳ}Vdfc +n~Y&+`;A4I d|(@zPZ@;=`=v0v <\$ x +^AD W P$@P>T !-dZP C; t +@A/a<v}a1'X Mp'G}a|OY 48"BDH4)EH+ҍ "~rL"(*DQ)*E]a4zBgE#jB=0HIpp0MxJ$D1(%ˉ^Vq%],D"y"Hi$9@"m!#}FL&='dr%w{ȟ/_QXWJ%4R(cci+**FPvu? 6 Fs2hriStݓ.ҍu_џ0 7F4a`cfb|xn51)F]6{̤0]1̥& "rcIXrV+kuu5E4v}}Cq9JN')].uJ + + wG x2^9{oƜchk`>b$eJ~ :Eb~,m,-Uݖ,Y¬*6X[ݱF=3뭷Y~dó Qti zf6~`{v.Ng#{}}c1X%6fmFN9NN8SΥ'g\\R]Z\t]\7u}&ps[6v_`) {Q5W=b +_zžAe#``/VKPo !]#N}R|:|}n=/ȯo#JuW_ `$ 6+P-AܠԠUA' %8佐b8]+<q苰0C +_ XZ0nSPEUJ#JK#ʢi$aͷ**>2@ꨖОnu&kj6;k%G PApѳqM㽦5͊---SbhZKZO9uM/O\^W8i׹ĕ{̺]7Vھ]Y=&`͖5_ Ыbhו ۶^ Mw7n<< t|hӹ훩' ZL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km  +endstream endobj 234 0 obj [/Indexed 233 0 R 126 250 0 R] endobj 246 0 obj <>/Filter/FlateDecode/Height 570/Intent/RelativeColorimetric/Length 6289/Name/X/Subtype/Image/Type/XObject/Width 514>>stream +HBEm 6A4Q Zq9[XXAy?2kϽ#6!6^}^s G d]cş=\=Շ7rr8N!qNN `ϭݛ/]-EnXpm ? l_eT*+JRV[, vz'իVkzFVo fGٯl~ik6jz &˾z͏wm<L;ud׫9uN'~ZM  Ho_~Y&/&vV/W\z@A <$];oKnjcxQ-U8mt󳝷* >QMj( aF^n.:^<iYVةeEQ-47eՠ##߾zrobxsW?i@{?e|w=J-#;>ۆH=*--;>ۂ@=Ws lۆA}b_3`two7M B~oA7iA, fc.,~ ӂJ%hW^Pxv yb^OO_6d/a12 ({F]h m Zk`_g#2m>2@+{ة2.( #br5Pȋ_>r>ZӀ ].k^O V݂nomt<H\>:o'EOon=:oKt $ o<^|\W@8n i z?|sm &wWgf-@/WfJ]ӂ J5㔈o4ZP)iX i@/H4`4`ZP'@?4:4:@ #Bryit59 /I'؟Tk#LF p7F].JXh/LFGxl R +O/ H@,b9Z4/@K @ D (i^6d.@)XAi]FX׀ PVg i``VK\> Mo,4n.,C h ZVXnc xscǭ4i]FXL_jZy 'J4hM'/@}>4 }tAkzh @ +Zc>z^h IRDL" P#K( $ @5!``|wunV݂ !DXm40-{IT[Fh!`D%9@Dih #  ]4?~@GV18zu1@Xh/JB@EkRUDi!@< "NB.=h[EC}pO ^ +5j!`I@P 5ВCW@!nc HxYL_jZy Be|B)h`-xx;h \: 3=/zb4G&@*i[PI4{绫v$h tR(y* tL 2_ B&рjACH 4Qx00-G:[H#B:jTB>4 `j%D(  XL_jZy @P4v*X B +A'D (J7rl5 #<]U_fJ]ӂ7P-(A Xk!@рiA @# w HXHB! Ob4`1HBWF}@!I +i!@ (4 a]\'C|  r4aj%Anc },/Z5< YGk9!J|[!@Bqxѓ DDBD9@PLͪ[` oWրiA @ d J|5Dih  HǑ\T,h!@'@j tk!@y׫B>k HR4 CkRD@ǭ"0iWHAB@в84pU}ZYDd| nǕEk ^ + 4px;Z5Ci6G,!@br5Ps]IA hM&p +vڧI*Nh \:o N +:Bqx㭁0j s !DP D** J7rL5B@` !@A0y:k7ntx +fJ]ӂL7P-Z: k!@рiA @P# K YB!w (O4c1BWg!F}@P"C:k!@%w %24 B @v@\r>jB@ 5b=J>Rӗ{@,5 0B`-Gkz8k!@|8qB`_Jxk!( $ȱB`|wunVS hy* tL [Bh@ G ~D%@4`4`ZgLH(쫀n(ld2KifQ{ >nj!`d PB,vCv50u.Zy@E ̢4P50x L#_HB@dB@ŭ9'`AiƖRr50 ifaBaNi 4p$,[4 , ւlR<<j+@fqk!`@$ xto+L":iF&i 4[P i \HBրnAI`߶5 + +B) Dd](B,; H9T$fL5 u( T٤D PP +fyn=JWB5B 0ˠ#R6Dk!ihP, :B& BQI) uZԂ58 X k um[  +BL xb5`U +B\2&P5ABL X5`AB@0^BN!H qk@ 5`ali %JNH7 zL OwJQ#Iaz'd0ՀDp4P-f4`P+]BAG>R!IZp,_=5sn54J_eSX"C@ >_;#w/dϏ?YNyxKߑ5ӷo/ YhGӧ~__w߬w_O?}g}5d0`(H;^ߞ_ޅ@~ͳT^ŧǷb^jW|ﹾ!4+K]|gK>7]/{B^֖?e/CVlmmzoP| +=-(;=I[ϗo_y] Պr_;n~I߃42^Hw=Ho8'}{aelC\+=ND7w)^_a] +6:.O@8e!Hߣݟ?ݟJքgPY|LC !ZAE!O!b+B`}/C`}_ !oɻ?G}q!_WKOB)*>+#$oe>a!.kHɦBGѻ??">4\!-+CLC 2 ҀpKߧ }^8&GCL8!1NI߷ }&tv|sI߯ }.fB47Ha嫿totOQ|Ϗ_P|xP!`k_ҟ)B6=2zV+>H_,T ?4̻S|kHs3рj5E[( c P G|->H_$G H_jKW|KM%@PV(mC_~TN~~הӗ_D\\k_Sû/UD^SGb_W(!`{>RV=^w2>G@y@@*/7wǧfh?%}/'3uZ9Gm勥rZjen|Hװb:p4HeWBxM=~6Z_՘Ip4Hҙl6Gd6 8g tDcD"IhC}8 \\#&: 8"d=np: }3oc|w3p |?;Xg00d* 8 09% +endstream endobj 250 0 obj <>stream +yxxwwvvuu~s~s~s}r}r}q|q|p|p|n|nzmzmzlzlyjyjyjxixiwhwhwhvhvfvfveucucububs`s`s`r_r_q_q]q]p\p\pZpXnXnXnXmVmVmVlVlUlUjUjSjSjSjQjQiQiOiOhMhMhMhKhKfKfIfIeIeIcIcGcGcGcEbEbE`B`B`B`@`@`@_@_=_=_=];];\;\8\8\8\8Z8Z5Z5X5X5X2X2V2~V2}V.}V.|U.zU*zU*zS*yS*xS*wS&wQ&vQ&vO&uO +endstream endobj 238 0 obj <> endobj 239 0 obj <> endobj 240 0 obj <> endobj 241 0 obj <> endobj 242 0 obj <> endobj 243 0 obj <> endobj 256 0 obj <> endobj 257 0 obj <> endobj 258 0 obj <> endobj 259 0 obj <> endobj 255 0 obj <> endobj 260 0 obj <> endobj 261 0 obj <> endobj 262 0 obj <> endobj 254 0 obj <> endobj 263 0 obj <> endobj 264 0 obj <> endobj 253 0 obj <> endobj 265 0 obj <> endobj 252 0 obj <> endobj 266 0 obj <> endobj 251 0 obj <> endobj 267 0 obj <> endobj 226 0 obj <> endobj 236 0 obj <> endobj 237 0 obj <> endobj 269 0 obj <> endobj 270 0 obj [0.0 0.0 0.0] endobj 271 0 obj <>/ProcSet[/PDF/ImageB]/XObject<>>>/Subtype/Form>>stream +q +/GS0 gs +123.1200049 0 0 133.6800053 16.3960667 14.64519 cm +/Im0 Do +Q + +endstream endobj 272 0 obj <> endobj 274 0 obj <>/Filter/FlateDecode/Height 557/Intent/RelativeColorimetric/Length 7774/Name/X/Subtype/Image/Type/XObject/Width 513>>stream +HZEmۄ WDT뜪|)̪8U;sRc~go){]eE@bm*P~<09T |.#onA4@+N"?>>v]Kqcju*/'yjZWk:Tp7A^?h|6fC+FH +l`)GYۭsz]U ( ='[Ͱ^Cᛒr6+@G4pt-?囓2;&iu?ߞJ~2>tO [mQM~hH x ,I~$k@6pǧ%1VN3'`O|Y&_{oЉxH)yϘ\۩pjo=%pͽ'1]$v9E=|<^'`'vO;,g +(cBqO ځtC3sO~O*9$v)]sV53_ʚ>97ї<#903 5ҞYp2j6|$Iv\ x MHϬY%h=o7#ϲYg#bp;m(v@>O{iHϰ.T/=$); d8 +?OWM,/;(k@?7Hu35z_S!R<_^/dWmt?^Zpߣ&#] \(r@*;,oN.8wyH Rt`:f c؝5UHΐn'3` @OV:]r5@ϧ͒倭^ 08649 {x(쀋A-'`[ZX+); d8z +@ve5 0 (땁$]g2QI6ˇY((Oɨ8-㕁d((PW* +Ȑ,oNp*TZcA-㕂uTsS+jπz=(r`f yx`R.9(fq@V0D0868 [>F쀋A-'#@rF@oW +^Vw$:s#8#@azymir@6i~79#@dT#ׯcȠm<E \psH["$4#@#903Tx +49 }b;Np;aY%~0,]U8wQl~ur%0eGAR`H񲚿s ؎8@$]gP0`CPazymqF0Oɨ4!Yhss J`BPi\"Yߌ(=-H2<=v + +px을-!1;f"!r8 +pPqhr%p;a¬Y%h F%;N*NF,); d8 + jV7 D?\iHug 96ˇYxMF}UB0QxJAP!F(f1xY9`$]g{bazym)qF8Oɨ$ =A) 5` 9*w@v#$Yߌ(= ϫGr@`ffhjq<PS#@r`f `u"ISv@p.A1#=(lnF>Hug`:C#@azym)pF^xMF}/"`ȣp;bx~ud"Yߌ(=#8#@#903p(@3Px!(J ;@. FY%X}Cy6Kv@W0186v@Z#ׯ71da\ RX~ F(); d8v; [`iD$:s3 +pPqhdb|r]N\;hAlKX"@\uCLL2L+v#H_z>y +Ɵ >%%4܇$,JY;@"<ޭfk[MD8ZNG ;ӲأE@P#@j}t@D@dV;2L=<%Hq@GjQx[`4`'P1P;PFJT 8 @8ju#@9]!(P1y]^7uCP"bd=$82B^ @8@"pt@0Lv^GVQ׵&[`(HT)=9UE@CjJ :wCro "ӡv'@"p@p:@e HE@t3_`vopG 0[FrD YLp'c9 Px[ @ :`:`\"@A:A\А✆_nvyq x27 +d=!(@1o@4_O"<@خD ?CX3uDy[F]׶l`CP"Sz*9@",B@tD5;@"pG ZD5YLp'e[ǤH=P B9nqvq P;AǓCp@pHqN/฀K!HBm0@8%(}0<nɀLM"<}Jph8D E:O@خD y[F]׶  ?crJ>:@e HГE@0!(@Cg*q @Om,  H= E9nquFin_QAL2:A94x-<OA"h8_JS$`>y pO`4$(c LM" +pt@!(@DVQ׵&O@4_O"Sz* @EJPE@ꆊQ)>:@e tCP",jX&8 pc+o:@"tt toe[圆_ivyq qErq 7d1@!Hw Zu %w٨VLM"Sz* !(@F y:"xdxfە *ql ᭿E[{$)t@ }JoX:@"tt  + N +4F :h8Y^"l{>{?`(Hr 7d:#;@"!(@ 8`Q:9j6꺶dp<:NG 5+@H 9 %Y:@t>:@e tCP",jX&8 pox:@"tt  f0-#=246 P%ˋeG)}0<Cc'yrFC"pt@$j6꺶d='z}}t@.|JPE@h8D%9:"v%(}t@juCE@gxdV;2+P$KD9nsDU@LkH\3cH\p0LvDMwFrD5i|q)^㲀t<9Iw@׵-np}azB!HJnhHГ@$G'z} ٨hrχD%=]xs*lW";juCE@gxp}$@ЇDߋ@8@"oY]N7ngDUqJÍ?t^-ɨ @" +ǻ?z2n`1v]Հ#`Z۽zL~~? +6WP k2|q@\~֫ nurVo, wl@ o?۹ `p{9*cv?> +JϏi-+ giGa]K6 zm׹_.Z#Q]0!BP۱{d֚HA2P*_ٷ=' @@r\!ü?r2&O)!r:~M_-C0DaO:?b|>I?忼_N> =?== rvz2`[_ly&&?c/Яo лdI?wo~s_^O{K?tsGH|i?,)A_#|a?b˒>􃀻w{['3֏{#ҽ/ZT5p/_/s.vA={0iA>CAW"X k}Q3*ݳ/GJ^}R+{Ax(n}~ Q4=:JeKr|>J[/Wa2~&ܿ|XЏO)ypϑ!n{={z_1:AC>oږEUrϡ;8!?ZH,y%#%V*#B/ q_gBQC@{Zq~{(`X,݇_{(Tx% +{ܷ WM>0!},GW CtA֎o 7pϗ>ܯ~{oږEpJ }sqTz)%}<}:9 +%}eK mܨ{CQ E{Zq>oC,yIÃ/ܽk!n9`^=c[pQVBt?_H},G~#а^o'!g:|6P!l;胾mY`pi|(#%V~!` Ep;~o/Rҏk~_D.K^Kw}flWa{7 =@ /$_>Q`N?={z9@݀N0 +}#M۲}F܀b7t/yp{V@x M+yp55)&׻w)++#0{Zq~{3Tm/蟍/ocudޅ W@vno0_=>= 9W^=c[!?˯?__"L}XЏG+b8j 8;\=<γ{xpbh> endobj 268 0 obj <> endobj 275 0 obj [0.0 0.0 0.0] endobj 276 0 obj <>/ProcSet[/PDF/ImageB]/XObject<>>>/Subtype/Form>>stream +q +/GS0 gs +123.3600049 0 0 136.8000054 9.0872765 1.4457679 cm +/Im0 Do +Q + +endstream endobj 277 0 obj <> endobj 278 0 obj <>/Filter/FlateDecode/Height 570/Intent/RelativeColorimetric/Length 6289/Name/X/Subtype/Image/Type/XObject/Width 514>>stream +HBEm 6A4Q Zq9[XXAy?2kϽ#6!6^}^s G d]cş=\=Շ7rr8N!qNN `ϭݛ/]-EnXpm ? l_eT*+JRV[, vz'իVkzFVo fGٯl~ik6jz &˾z͏wm<L;ud׫9uN'~ZM  Ho_~Y&/&vV/W\z@A <$];oKnjcxQ-U8mt󳝷* >QMj( aF^n.:^<iYVةeEQ-47eՠ##߾zrobxsW?i@{?e|w=J-#;>ۆH=*--;>ۂ@=Ws lۆA}b_3`two7M B~oA7iA, fc.,~ ӂJ%hW^Pxv yb^OO_6d/a12 ({F]h m Zk`_g#2m>2@+{ة2.( #br5Pȋ_>r>ZӀ ].k^O V݂nomt<H\>:o'EOon=:oKt $ o<^|\W@8n i z?|sm &wWgf-@/WfJ]ӂ J5㔈o4ZP)iX i@/H4`4`ZP'@?4:4:@ #Bryit59 /I'؟Tk#LF p7F].JXh/LFGxl R +O/ H@,b9Z4/@K @ D (i^6d.@)XAi]FX׀ PVg i``VK\> Mo,4n.,C h ZVXnc xscǭ4i]FXL_jZy 'J4hM'/@}>4 }tAkzh @ +Zc>z^h IRDL" P#K( $ @5!``|wunV݂ !DXm40-{IT[Fh!`D%9@Dih #  ]4?~@GV18zu1@Xh/JB@EkRUDi!@< "NB.=h[EC}pO ^ +5j!`I@P 5ВCW@!nc HxYL_jZy Be|B)h`-xx;h \: 3=/zb4G&@*i[PI4{绫v$h tR(y* tL 2_ B&рjACH 4Qx00-G:[H#B:jTB>4 `j%D(  XL_jZy @P4v*X B +A'D (J7rl5 #<]U_fJ]ӂ7P-(A Xk!@рiA @# w HXHB! Ob4`1HBWF}@!I +i!@ (4 a]\'C|  r4aj%Anc },/Z5< YGk9!J|[!@Bqxѓ DDBD9@PLͪ[` oWրiA @ d J|5Dih  HǑ\T,h!@'@j tk!@y׫B>k HR4 CkRD@ǭ"0iWHAB@в84pU}ZYDd| nǕEk ^ + 4px;Z5Ci6G,!@br5Ps]IA hM&p +vڧI*Nh \:o N +:Bqx㭁0j s !DP D** J7rL5B@` !@A0y:k7ntx +fJ]ӂL7P-Z: k!@рiA @P# K YB!w (O4c1BWg!F}@P"C:k!@%w %24 B @v@\r>jB@ 5b=J>Rӗ{@,5 0B`-Gkz8k!@|8qB`_Jxk!( $ȱB`|wunVS hy* tL [Bh@ G ~D%@4`4`ZgLH(쫀n(ld2KifQ{ >nj!`d PB,vCv50u.Zy@E ̢4P50x L#_HB@dB@ŭ9'`AiƖRr50 ifaBaNi 4p$,[4 , ւlR<<j+@fqk!`@$ xto+L":iF&i 4[P i \HBրnAI`߶5 + +B) Dd](B,; H9T$fL5 u( T٤D PP +fyn=JWB5B 0ˠ#R6Dk!ihP, :B& BQI) uZԂ58 X k um[  +BL xb5`U +B\2&P5ABL X5`AB@0^BN!H qk@ 5`ali %JNH7 zL OwJQ#Iaz'd0ՀDp4P-f4`P+]BAG>R!IZp,_=5sn54J_eSX"C@ >_;#w/dϏ?YNyxKߑ5ӷo/ YhGӧ~__w߬w_O?}g}5d0`(H;^ߞ_ޅ@~ͳT^ŧǷb^jW|ﹾ!4+K]|gK>7]/{B^֖?e/CVlmmzoP| +=-(;=I[ϗo_y] Պr_;n~I߃42^Hw=Ho8'}{aelC\+=ND7w)^_a] +6:.O@8e!Hߣݟ?ݟJքgPY|LC !ZAE!O!b+B`}/C`}_ !oɻ?G}q!_WKOB)*>+#$oe>a!.kHɦBGѻ??">4\!-+CLC 2 ҀpKߧ }^8&GCL8!1NI߷ }&tv|sI߯ }.fB47Ha嫿totOQ|Ϗ_P|xP!`k_ҟ)B6=2zV+>H_,T ?4̻S|kHs3рj5E[( c P G|->H_$G H_jKW|KM%@PV(mC_~TN~~הӗ_D\\k_Sû/UD^SGb_W(!`{>RV=^w2>G@y@@*/7wǧfh?%}/'3uZ9Gm勥rZjen|Hװb:p4HeWBxM=~6Z_՘Ip4Hҙl6Gd6 8g tDcD"IhC}8 \\#&: 8"d=np: }3oc|w3p |?;Xg00d* 8 09% +endstream endobj 221 0 obj <> endobj 279 0 obj [/View/Design] endobj 280 0 obj <>>> endobj 225 0 obj <> endobj 281 0 obj <> endobj 282 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 17.0 +%%AI8_CreatorVersion: 23.0.3 +%%For: (Drake Costa) () +%%Title: (VuePress Icon.ai) +%%CreationDate: 5/29/2019 2:12 PM +%%Canvassize: 16383 +%%BoundingBox: 87 29 218 177 +%%HiResBoundingBox: 87.087276845743 29.4457671384607 217.516072292132 176.325199464285 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 13.0 +%AI12_BuildNumber: 585 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0.450980395078659 0.796078443527222 0.552941203117371 (R=115 G=203 B=141) +%%+ 0.172549024224281 0.196078434586525 0.278431385755539 (R=44 G=50 B=71) +%%+ 0.184313729405403 0.596078455448151 0.411764711141586 (R=47 G=152 B=105) +%%+ 0.345098048448563 0.376470595598221 0.501960813999176 (R=88 G=96 B=128) +%%+ 0 0 0 ([Registration]) +%AI3_Cropmarks: 78 28 222 172 +%AI3_TemplateBox: 149.5 100.5 149.5 100.5 +%AI3_TileBox: -156 -296 456 496 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 2 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI9_OpenToView: -68.1978021978011 205.846153846153 5.05555555555556 1870 954 26 0 0 5 120 0 0 0 1 1 0 1 1 0 1 +%AI5_OpenViewLayers: 7 +%%PageOrigin:0 0 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 283 0 obj <>stream +%%BoundingBox: 87 29 218 177 +%%HiResBoundingBox: 87.087276845743 29.4457671384607 217.516072292132 176.325199464285 +%AI7_Thumbnail: 116 128 8 +%%BeginData: 12995 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FDFCFFFDFCFFFDFCFFFD84FFA8FFFFFFA8FDD7FFA8FD0FFFA8FD74 +%FFA8FD50FFA8FFFFFFA8FFFFFFA8FD1BFFA8FDE7FFA8FD74FFA8FD34FFA8 +%FFFFFFA8FD3AFFA8A8FD72FFA8FD30FFA8FD43FFA8FD74FFA8FD2CFFA8FD +%45FFA8A8A8FD2CFFA8FD45FFA8FD2EFFA8FD45FFA8FD2CFFA8FD35FFAFAE +%A8FD3CFFA8FD2FFFA8AE8383585F34AEFD0EFFA8FFA8FD55FFA87E845953 +%525F5E5F585F5E5FFD10FFA8FD28FFA8AE848A5FFD28FF7E282E28532853 +%345F585F345F83FD0FFFA8A8A8FD25FFAE838983898383A8FD1AFFA984A8 +%7D7D7DFD07FF525352532E53585F585F5E5F34AFFD10FFA8FD25FF845F89 +%83895F895F83CAFD0FFFA8FFAEAE84AE8383585328522852282E53FD05FF +%A82E285328522859345F345F345FA8FD11FFA8FD24FF838A8389838A8389 +%83FD11FFFD045F5E5F5E5F595352535253525353FD04FF7E285352532859 +%5E5F585F585F83FD36FFA8835F8983895F898383A8FD10FFAE5E5F585F5E +%5F585F585328532E53285252A9FFFF5252285228522E5F345F345F34A8FD +%12FFA8FD24FF8389838A838983895FAEFD12FF5F5F5E5F5F5F5E5F595328 +%5352532E532EAFA8522E5228532859345F345F345FAFFD13FFA8FD22FFA8 +%835F895F895F895F8383FD13FF5E5E345F585F345F345228522852285228 +%532852282E2852345E345F343459FD13FFA8A8A8FD22FF7D83838A838983 +%8A8383FD14FFFD045F585F5E5F5853285328532E5228532E5228532E5F34 +%5F345F34AEFD14FFA8FD23FFA858895F8983895F895EA8FD14FF5F5F585F +%345F345F345328522852282E2852282E28593458345F3458A8FD15FFA8FD +%22FF7E83838983898389838384FD15FF5F5F585F345F585F345928522852 +%285228522852345F345F343A5FFD34FFA87E535352532E895F835F895F83 +%5E83CBFD15FF5F3A345E345F345E34522828282E282827282E3AFD053484 +%FD16FFA8FD1CFFA8532E53535352595F89838A8389838983FD17FF845F34 +%5F345F345F34592852285228522859345F345F345FAEFD17FFA8FD1BFF7D +%28532E535253285F5F835F895F835F83A8FD17FF8334345F3458345F3434 +%27282828272EFD063458FD19FFA8FD1AFF2E53535352535353588983895F +%8983895E83FD18FF843A345F345F345F3458285228282E5F3434345F3484 +%FD18FFA8FD1AFFA85228532E53285328525E895F835F835F5F58FD19FF84 +%343458FD0634272827FD0734A8FD19FFA8FD1AFF52535353525353535289 +%83895F8983895F83A8FD19FFA85F345F345F345F34592828345F34353434 +%59FD35FF7D28532E532E53285258895F835F895F835EA8FD1AFFA85FFD08 +%342EFD05340B84FD1AFFA8FD1AFF7E525253525352532E5F5F895F895F89 +%5F8383FD1BFFA85F343434353434343BFD0634A8FD1BFFA8FD19FFA82853 +%28532E532852345F5F835F835E835E83A8FD1BFFA85F12FD0934123434FD +%1CFFA8A8FD19FF532E535253525352585F895F895F895F835FFD1EFF5F12 +%3534343435343434353484FD1CFFA8FD1AFF53522E532E5328532E5E5F83 +%5F835F835F5F83FD1EFF5F0BFD07341234A8FD1DFFA8FD19FF8428532E53 +%52532E5358895F895F835F895F83FD1FFF8312FD0834FD1FFFA8FD18FF7D +%52285328532E5328525E5F5E835F5F5E5F58FD20FF830B34343412340B83 +%FD1EFFA8A8A8FD18FF52535253525352532E835F895F835F895F5FA8FD20 +%FFAE34343435343484FD1FFFA8FD19FF53285328532E53285258835E835F +%5F5E835E83FD21FFA812FD0434FD21FFA8FD18FF7D5252532E5352532859 +%5F835F835F835F8359FD22FFAE34341283FD3AFFA827532852285328522E +%5F5F5F5E5F5E5F5883A8FD22FFAE341284FD21FFA8FFA8FD16FFA8535253 +%2E53525328585F835F895F835F835FA8FD23FFAF34FD23FFA8FD18FF2853 +%285228532852285F5F5F5E5F5F5F5E5F83FD47FFA8A8A8FD17FF7D285352 +%532E53525234835F5F5F835F835E83FD48FFA8FD18FF7D28285328522853 +%2852585F5E5F585F5E5F34A8FD48FFA8FD17FFA8285352532E5352532E5F +%5F835F835F835F5F84FD60FFA852285328522853282E345F5E5F5E5F5E5F +%3483FD2DFFAFA8A87E7E7DA8FD14FFA8FD18FF525228532E53285328585E +%835F5F5E835F5F58FD27FFA8FFA8A87DA87DA87EA8A8A97DA8FD14FFA8FD +%17FF7D28522852285228522E5F585F5E5F585F58587DFD1FFFA8FFA8A87D +%A87D7E7D847EA8A8FFA8FD04FFA87DFD13FFA8A8A8FD16FF7E2E2E532E53 +%2E53285258835F5F5F835F5F34A8FD1CFFA8A87EA87EA87DA8A8AFA8FD0B +%FFA8A8A9FD13FFA8FD17FFA828522852285228522E58585F5E5F585F5E5E +%7DFD16FFA8A8A87D7E7D847DA8A8AFA8FD11FF7DA8FD14FFA8FD17FF5328 +%5328532E532852345F5E5F5F5F5E5F5E83A8FD14FFA87DA87EA9A8FFA9FD +%0EFFA87DA8A8FD04FFA87DFD2CFF522E2852285228522858585F345F585F +%585F34A8FD14FF7DA8A8FD0BFFA8A87EFD05FFA8A87DA8FD04FFA87EA8FD +%13FFA8FFA8FD15FF7E285328532E5328532EFD055F5E5F5F5F83FD14FFA9 +%84FD0BFFA8A87EA8A8FD05FF84A97EFD05FF7EA9FD14FFA8FD16FF7D2828 +%52285228522852345F585F585F585F3483A8FD13FFA87EA8FFFFA87D7E7D +%FD04FFA87EA87EA8FD05FFA87EA8A8FD04FFA87DFD15FFA8FD16FF28532E +%5228532E5228585F5F585F5F5F585F58FD15FF7DA9FFFFFD04A87DA9FFFF +%7EA8A8A87DFD05FFA8A87EFD04A8FFA884A8FD13FFA8FD17FF522852282E +%285228282D5F585F345F585F34587DFFA8FFFFFFA8FFFFFFA8FFFFFFA8FF +%FFFFA8FFA8A87DFFFFFF7EA87EA87DA8A8A87EA87E7EA8FFA8A87EA87EA8 +%7D7E7EFFFFFF7DA8FD04FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FD16 +%FF53522E5228532E522852585F5E5F5F5F5E5F3483FD14FFA8A8FFFFFFA9 +%FD04A87EA884A9A8A87EA8FFFFA8A87EA8A8A9A8FD04FFA87EFD2BFF7E27 +%52282E2852282E2758585F345F585F345F34FD14FFA97DA9FFFFA8A87EA8 +%A8A87EA8A8FF7EA87DFFFFFFA9A97EA87EA9FD04FFA87EA8FD13FFA8FD16 +%FFA82E285228522852284C2E5F5E5F585F5E5F345FA8FD13FFAFA87EFFFF +%FF7EA87EFFA8A8A8FFFFA9A8A8A8FD05FFA8A8A8FD05FF7EA8FD14FFA8FD +%16FF28282852282E2852282E345F345F345F345E34A8FFFFA8FFFFFFA8FF +%FFFFA8FFFFFFA8FFFFFFA8FF7E7EA8FFA8A87E84A8FFA8A9FFFFA8A87DA8 +%FD06FFA8FFA8FFFFFFA8A87DFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8 +%FFFFA8A8FD15FF5328532852285328522E5F5F5F585F5E5F585F83FD14FF +%A97DFFFFFFA8A97EA8FD06FFA8A8A8FD0DFFA8A8A8FD13FFA8FD16FF7D28 +%2852282E2852282E345F345F345F345F345FA8FFAFFFFFFFAFFFFFFFAFFF +%FFFFAFFFFFFFA9FFA87EA8FFFFA97EA87DFD05FFA8FFFFFFAFFD07FFAFFF +%A8A884A87EFD05FFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFA8FD15FFA827 +%522852285228522858345F585F345F585F34FD15FF84A8FFFFAFA8A8AFFD +%0EFFA8AFA8A87DA87EA8A8FD17FFA8FD14FFA82E2828282E282E28282D5E +%345F345F345F34347DFFAFFFA8FFAFFFA8FFAFFFA8FFAFFFA8FFAFFFA8A8 +%7DFFA8FFA9FD05FFA8FFFFFFA8FFA8A87EA87D7E7DA87EA8A8FFA8FFA8FF +%AFFFA8FFAFFFA8FFAFFFA8FFAFFFA8FFAFFFA8FFA8A8A8FD14FF522E2852 +%28522852282E345F585F345F585F3483FD14FFA8A8A8FD09FFA8A984A87E +%A87DA8A8AFA8FD1FFFA8FD15FF7D272E2852282E282E2734345F345F345F +%345834FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FD05FF7EA8FFFFAFFFA8A8 +%7E7E7D847DA884A9A8FFA8FD07FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFF +%A8FFFFFFA8FFFFFFA8FFFFFFA8FD14FF7D2828522852285228522E5F345F +%345F345F345883FD13FFAFA87DA87EA87D847DA8A8AFA8FD2BFFA8FD13FF +%A8052E2828272E2828272E345E345F3458345F3483CBFFA9FFA8FFA9FFA8 +%FFA9FFA8FFA9FFA8FFA9FFA8A87DA884A9A8FFA8FFFFFFA8FFA9FFA8FFA9 +%FFA8FFA9FFA8FFA9FFA8FFA9FFA8FFA9FFA8FFA9FFA8FFA9FFA8FFA9FFA8 +%FFA9FFA8FFA8FFA8FD12FFA95228522852285228522859345F345F345F34 +%5E7DFD4BFFA8FD14FF2E282828272E282827282E5F345F3458345F3459A8 +%FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF +%FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8 +%FFFFFFA8FFFFFFA8FFFFFFA8FFA8A8A8FD13FF7D275228522852282E2758 +%345F345F345F345F34A8FD4AFFA8FD14FF7D27272E2728272E27282D5E34 +%34345EFD043459FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF +%A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF +%A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8A8FD14FF28522852 +%285228522852345F345F345F345F3459A8FD47FFA8A8A8FD15FF52272E28 +%28272E282827FD04345F3434345834A8FFFFAFFFA8FFAFFFA8FFAFFFA8FF +%AFFFA8FFAFFFA8FFAFFFA8FFAFFFA8FFAFFFA8FFAFFFA8FFAFFFA8FFAFFF +%A8FFAFFFA8FFAFFFA8FFAFFFA8FFAFFFA8FD05FFA8AFA8A87DA8A8FFA8FD +%14FF53282852282E285228282D5F345F345F345F343483FFAFFFFFFFAFFF +%FFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFF +%AFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFD07FFA8FFA8837DFD06A8FFA8 +%FD15FF7D0528272827282728272EFD093459A8FFA8FFA8FFA8FFA8FFA8FF +%A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF +%A8FFA8FFA8FFA8FFA8FFA9FFA8FFCBCBA88459582D340B7DA8A8A8FFA8FF +%A8FD16FFA8282852282E2852282E2759345F345F345F345F34AFFD34FFA8 +%FF7D8358582E342E34343459FD1EFF2828272E2728272E27282D5FFD0834 +%A8FFA8FFA9FFA8FFA9FFA8FFA9FFA8FFA9FFA8FFA9FFA8FFA9FFA8FFA9FF +%A8FFA9FFA8FFA8FFA8FFA9FFA8FFFFFFA8FFA87D598359582D340B342DFD +%063459A8FD1DFF53272E2852282E2852272E345F345F345F343434A8FFFF +%AFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFA9FF +%FFFFAFFD07FFA8A87D7D2E342D340BFD0434583434345F3434345F34A8FD +%1DFF5228272827282728272827FD093458FFA8FFA8FFA8FFA8FFA8FFA8FF +%A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA9FFA8AFA8A87D7D522E +%2D340B342DFD113459FFA8FD1BFFA8272E2852282E2852282E345F345F34 +%5F345F3459A8FFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFD09 +%FFA8A859592E342E342EFD06345F3459345F345F345F345F345F345F345F +%345FCAFD1CFFA828272827282728272827FD09342DA8FFFFA8FFA8FFA8FF +%A8FFA8FFA8FFA8FFA8FFA8FFAFFFCBFFCBFFA8A87D7D2E342D2E0B342E34 +%2EFD193459FFA8FD1CFFFD0428272E2828272E2E34345F3434345F34347D +%FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFAFFFFFFFA9FFA884598359582E342D +%342EFD0834593434345F3434345F3434345F3434345F3434345F343434A8 +%CAFD1DFF520028272827282728272EFD093458A8FFA8FFA8FFA8FFA8FFA8 +%FFA8FFA9FFA8A87D592D340B2D0B340B342DFD1F340B342D59A8FFA8FD1C +%FF7D28282E2752282E27522734345F3434345F343434A8FFFFAFFD07FFA8 +%FFA88358582E340BFD0834593434345F3434345F3434345F3434345F3434 +%345F3435345F3434345834342E5959A8A8FD1FFFA8002827282728272827 +%282EFD09342EA8CBFFA8FFA88459582D342D340B340BFD25342D2E057D7D +%A8A2CAA8A8A8FD1EFFA82E272E2828272E2828272E343434353434343534 +%342E837D7D2E342D2E0B3434342EFD083435343434353434343534343435 +%343434353434343BFD06342D2E2D2E272827277DFFA8FFA8FD22FF2E2727 +%2827282728272805FD0B340B340B340B342E340BFD1F342D342D2E052D05 +%270027002700280053CFFFFFFFA8FD21FF7D272E2828272E2828272E3434 +%34353434343BFD0B34353434343B3434343B343434353434343B3434343B +%3434343BFD04342E342D2E27272728272827282728272E272828FD26FF7D +%27272827282728272805FD2B342D2E272700272727002827272728272827 +%282728272827277DFD26FF272827282728272827282DFD27342D2E272727 +%282728272827282728272827282728272827282728277DFD25FFA8520528 +%272827282728272E11343434123434341234343412343434123434341234 +%343412343434123434340B2E052D05270527002705270528272705282728 +%052827282728272827282728272752FD26FF5228272E2728272E272827FD +%04343534343435343434353434343534343435FD06342E342D2E27282727 +%2728272827282728272E2728272E2728272E2728272E2728272E2728272E +%277DFD26FF7D002827282728272827270B34343412343434123434341234 +%34341234343412342D2E0B2E052700270027002827270528272827282728 +%27282728272827282728272827282728272827280028A8FD26FFA8282728 +%272827282728272EFD10342D342D2E05FD04272827282728272827282728 +%27282728272827282728272827282728272827282728272700272752A8FD +%28FF2728272705282727052705340C3412340C3412340B340B2E0B2D0527 +%002700270027052700282727052827270528272705282727052827270528 +%272705282727002700270028287D7DA8FD2AFF5327282728272827282728 +%2DFD0734272E272E05282727272827282728272827282728272827282728 +%2728272827282728272827282728272827270528287D7DA8FD2FFF52FD04 +%2728272727282727052E0B2D052700270027002700282727052827270528 +%2727272827272728272727282727052827272728272700270027275359A8 +%A8FD33FFA800282728272827282728272705FD0427282728272827282728 +%272827282728272827282728272827282728272827282728272700282752 +%53A8A8FD38FFA82700282727052827270528052700270527002705270028 +%27270528272705282727052827270528272705280527002700270052527D +%7EFD3EFF2828272827282728272827282728272827282728272827282728 +%2728272827282728272827282728272800272752527DA8FD43FF52002827 +%270528272705282727052827270528272705282727052827270528272705 +%28052700270027287D7DA8FD47FF7D272728272827282728272827282728 +%27282728272827282728272827282728002700282E7D7DA9FD4CFFA80027 +%002705270027052700270527002705270027052700270527000500272753 +%7DA8A8FD50FFA82827282728272827282728272827282728272827280527 +%002727537DA8A8FD56FF282705282727052827270528272700270005F827 +%2752527EA8FD5BFF7D00282728272827282727052700272752527DA8FD60 +%FFA827002700270027F82700272E7D7DFD66FF7D27002727282E7D7DFD6C +%FFA87D7DA8A8FDFCFFFDFCFFFDFCFFFD1CFFFF +%%EndData + +endstream endobj 284 0 obj <>stream +%AI12_CompressedDataxgwȲ0~?lrPBl  Mou+"xgulVWu{kؙ8 $ԁO 5 эF1RʹSjO  CO6$%$)RFƧX$RB*%zK[A~Qo< ,+|}DM~&ӑ:9CʸF!H/3)Il69d) l~k=Wf8[u`ߍ[7ˡ6KQeц݅2Ti-C[LVpނZVԐT7&w8˃hp|XN Mڬ?F˕~oֆKYMҸ;noz]0:[> k= >z鸦.z`Vqg0o~AZ{㻷!p^fyӘL$֠-AsԚ y跇ZBw2#T[y%OcA@.ٸ:yI:E|YhSn_35 1ep\e0.O#PL!)t [6U~ #%k]0⫅op2u0EowX\6Nawj}"an}_hI({TlYL59VCB$XI )" ]I +QHKH!<% G`oA?٣IiF߈ +p`0%༈/H :eC/DP-@^ NL\ @!b| A£R_@VcHx"+ex r#( 9HzA/9 HIo:Lށ_/rhc-3J!-4 3OLhH1>d b TTK`FdQȏyEt2YH)@htf^"tA`䙠 J枀Ua$p,˃&`[ɡ0 O,-LyAYGƤ|~zJPs ,o?>5I +:Ǻ$bc]XN2``yb:04.H4&9gxJCf<'0 eT7"a\p" ϣ6+xjzR* (!nAJs4BPW +UNv8%@IXPv,ECW>H3T(28\Ȳq_$jm ncuY +.iaЍl0 88W +La Iy pdn8RrH=PfD찑b  æ }lh9 i8F,`@7F; pNI7M22L` +aMiaQ ; +C@G0Pw+ԝ`;@X+:S9<\00v +cY"+ O0HEB` +``a nđxX($ +gq8%py@͂*a`ul0>۱A`llbq1a hy +8ėqB|~%1^Zx M 7 :p%+A$Es<%lk~LJa3A\I-1?Fٞ$0lB"Cr4J!%H\LŮ/3dQ ~F)2sY=E֝/>3Lv_˰p]aY +R%JkTh\ QhZsԪhf +|>!bfp6+WVJ^ +dN\k,`P&Co$ +FM"r|"΍x"na iBٖ9bV/NC +'q7$2AU JH!@PLq Նc'>Qͦm8cЏ͞gL|`< (>K +F%(kiURk(U 3%K%ܨ; nR8ad-BBRjŪQqB#:jՠ+FZa ( @^=Y4^lemt0gQ} {oB*E #?[ΰ<Bv\ +jVq-[Ѱ&%pjc[V;bvWCb@]֫ 8p'[JJGY{dKa;i\GY0Ez ؠJ>0_)(:oE)=0<蠚(Ы$|TJ~ +&.*z% ۪ꩠYV}Ԯ5RJjIJ)ЫvԨL͚]54جSZY:+ڕ\g-W[NY]gMY5t~vzn#B:wHߐ֭{Z'z‚$ R6 "A H lA5H +b*=~y \Rl+[02 ϲC @Qy?q-Ip,E"A5a9SGRMw îqw̺f5$kLmxkeO8)0ɯ. {3 >= CasTF8󏡠nd88L/I3cz( +CR) u \W+hi5EWn5E~8'9&owzs1%uQIcʙ9# yHPg)zY^8I6Jkyf'e#-e:\g!]ы6dј+=24Fˀ,wHHHdA)=/X! )Im,cBI kh^LY~W¥Og%+f]^H dzէcjmZբk7e !p) h$ Òx^>d i2K/$@Aiá:6Om+ FFQr`^lC@ +caB d P%I tW@ch_ϏNp5pytF40fQr]iեWh : +MYUz3Wi&2 F]_O;+z}D۵~^Yw!#3´< 9&1AK{&AWDV5`,`7hl:Xuk"I\#Fgv +4zsܬ"QWY"qʇ>#+OX߸‘޲q-[M⧬+7j>^j4dׂ + Vve}ZAsnQWV +ZSkξښ+vmЮ!U8FhT QA^ +o\'+f|bEvneieX:$r@D@XgSB ǧ|00,dj4JHVr4BlSci<ݼgv0:*G7F?7I;L/fXx?I=İ?٬?x(-0Pp.5aUBCИyWY5ME}hfgǏES x$eɘ¸l;Ra!AiCxpЌ:V?:nzv{er;$ yG+ m۱<`!)C-jsP145$qu0>Ⱥ4O+D|O=zŐ>h]o N]:/[H^a6h·ՙhl>&=IzC֩gO>}µ߁t~728EѓD*2?wa(6VqnZ7m\LbbUDodZ[3<>N@K +-\S|7͌#5  G +DYҢ-*ljs)ȿB[kѭ9aԵ٨3> #u} 77םa~4LG#d 0NTo7dOmM5UMʠJ+۸XMw7K9| 3sV֮n` <,^V*Zה4/ TႣr{{M[UT7? ʶrqsg% +<Wꤝu[ zRAnB=:lW ?$B2HCl3ljsFy)*"i!r¿b3}%j-I\Ey 򡠇KBox̿ +] Ls?dkU*j[Cmqȹ2>=]˚L 0FoY +.}>Q}!7&,C? wDw /wa]Bdm.>ƶ[ [T8G?8;W*pIma,EnzUɽVVN& ֨quz jY׆JvJ P+-f@B~EŒ~5QgOT̜aa ?O -0:!Iht"I{Нn4k}v:3Ť3'a[bj\O'#G c4Rb#.ύ:&fqm[P`LUfU :[9C{}8Txl|߇mm./q3M^%G';5(Ɗ:،3]1YEQ^oacrwh p2[2wϑSM"ud`N)\oaL_VfRfVt2[ #pjg3FM.nt!M5I a +&Yò0k̰-R.3=N8(MɰmC73MMJu]G0E@d1l`mh+$0Nrieha9͕[#dSn C3Ӻ֞#伬?Gkh$V)x3Y`(XCmȊo@@mX]I1Hk]PqoگPo.RO5_f송ޖd-N~ln1̓\Xς.2@5۳u@B=OwtRf"zLg(D <#~Nu=n|EkKvO(yODu]6UtX0U&l#2M~?w6|FӹT]M"@l#mk5P:`5nG(`q}8&w45+@qdxFlNy:KG+{3WC:%^\ + <<]6~ \V<ṝ.}?'KJc) Lֻ@_+bf=:x .ښ@U^( Pa9ڇ Ʋ6nthctmg9e͉pi'tݞuWT^kb^h[5XQ-=@$DZ26F`)D{w*Vq);#gěK#@_O>[@VڛMFeٴOw/yTn`J~+֊JZSV2ս]"dgK6HΐHD :kPe0sEؚXb{]`xb{6if)ll @m7}fe;coh3 T'vN%Ҙ5~Rs!ɄG GI fL v|EcZsv+9̞d}މ[aE-.!~e$%N*IcK yeE7y+H̲).&hCȔ=ҫ 4J{2A [s}g6f2vL{;Astv'!;&8CrXISo9%1gs4Qbtr⨗{/o,=/t0gK-ۜR*10~˟G8eIl:/$eޙb!}_s'VOm9~l*w '+i?_%)G\,h/9>ATkE˵#Nrw/b#.;(<1ʱ*vKy4 ]'r"Mr'g{#@zx\ꔼR<qXGAJ u(cD{4*ym]{v[Oh[I"r{vёg,@8ܽq;8V2InrKvҤe[帠D''U`2Y9 c4j#} \t/Ą+YOޢ'w4~cR[{zHa6n]LTO74C`Xt +1K4N z|F=R%"b|qjttz|^anZCU)eV҅«:A4_Ky% >m!Fn򫠪#m^ͬb]D@^P~  abvn2q"w&)Y^dNb.lֻeҕ3%>՟H,*MujIzT:sQW&=]yHJE* oEwe[\rkt̋5MJuR-oM |y*f1Bf,LtX(e$ LȥON5U5oREw/xlu|g- Ґ=;g'?]CZU.5u} MtM|۵SlQZ0Wk4ɔn?tƟkT_:ǕҁM Y%zztaBxFrhvFbBNOCA7xΊ#w(J~0'QbQdZM(%K|LXQn2Ӡx3Fs0AEcM:,٠kpj W\H$ wۊKQf<@Rx<n8)S =Q4{X~EMy\9).GdoTrH ~=ۊgk%yl݊t{TGoy/Ч,H:yJh Ϭkhi!)JB+[/S)~܂G$+$p|C5Yh]-XjuewAWYg'2 BqH@G >f"P]l0u*!ݠ&PU2.șMM1N'#smIj9q`v'f'3@0V)re]Y6fY7ijHx q-/kf+Nb 2)rj5uMeEӵZdIqN~]jV@ܬ6k /n!LBf]T(C@b`#@:ϺYC<8KG''N,'UIg5VKt҆#ıxr?XɑM K*:"\4" QF wo9b GF9!FyԀW:7RRb[\橬g C +c]F!\w|/Oi_ZIU ΖMsvYPi?2u7dԁɶ#փ%vz8Peԉ*ͬ .dLekoe-1$`~"XmE8E.AЍI`M85W +;u,xSNbGgk/ZF82 +c~yÖIV(_v&^7ދ7MS^ĥ4D!umM̛4N `@;!|"]AI Jdr&IZ# aNOSSҨEnm%b~r u0[@G/>g筏\Aqvo=ZI=ǝ;єA:h26qˌ]FgxB݆ +ąؤS9Ю kQQ8u|~H('\{3rkSx2J4˕_krA|S 4xalZvkA}/Q4ٖ9b`w߱`7n9nypte9ilL?g%j ܑ&4QJ\\/PHA%}I#1}W]ڲ[pkD3I_L4gG8_,Dxh li7WoFSN5 8&+Br70ũ&`o<¥ߢu4] $0L|q@ +y'_^~ɛf3රS$/I6ݪ}=+@u~4q%3z,ؘyC u.`X|/VC?R%i,ǭ,-Me{'_XMӕrZMd/Ryu G6wBSTJIt _|FaW;z CW:Eq5O%#U_MAB$XI!6(r>&ȠEԟr. +V%Sg/DJeK皐v OUq"j 3čK R~xP]>%t:JZP^;UƥdoQ {~5C"}sM47!!e mQ͖d|VVp[]mkU-,څ>f E=Jn_3W^ns T^⫏&_ݡ>7.{ | +]P2*]Hp4C_!z‡k_rZQ*C Rׯ0|{tfW3gkUoxj6*>|}vS}EL1A|7@+>Ů)IsÇ8B4B_ox=BTxRkW}4ƦFvpʯq>u.Eh)R"]gT hfJqkew}p`-,VcLBR]gѿ0ɸןl+3 {vk0,yyW_HZ`a׹ M o&<{F!ѭ8ro |=-1Z87&.'e&B@ݽy/Oo{S/1]{9yiK/oYo*prec7/G6g^>Wœ{ӷ7os{E{vw͍ɨWJGdo#RyϏ/Ru^,l{zxo[} +ާ)N/z}obMyylۛ @{G/駱(z_E:yKJ_@|í/?#|񻏨MVFƗL_`ȗI_|٠z|Mݧ]2ki+W}N Ǿ]H@G/kֽM_kB#7(-WY:{'Gޟ +Q??RLן|WUyPrq? +S_3Q?O{y@8UϺGX(Vϣvt$4SQ^&G?DSG7}"]{|OQQ@pй$i|@F>r}E2Py@4t]lT>s`,'x>ǃq-d^u%(]N`Zk/ٳ}?4 -{`}GR3ΐ5 fODWx~PA<*`#Cq=zyQۡŴJZHpPd>Z sr6|6O_<\K :ᇋ}} &5Sc+IU39}E58"_#I9F)~Ҍf}NtW1y<̢o~wXbR'ϱ\Ǫ?Zcwq߸1Ǐ8q>~9Nw:r_7HDJ \o$.BQB=O /ä>IonZIO%d5OoIT"B!o,*Ţ'>{uM1&K!U8I=vQdOy:uRIaH]HHu:G}A:,4˄|q*hrI.Q 0Q9Z0ќGTtY{Η*ǩd5j?W,±t9H:۸704dyaXNwZw\g6pr6=r~>/?e3W|2)9J˚ uw"kGI,?^ӊ 묘~z37Ne4t9d|QrpiȯL"Y NrI.K~?{̟f#k6.O):+^βr5{u)eO$i8:-T%&ͦKVɜ\=tuF}{ +~dOI^)1ޤ_踍|*BE|U^j"!Dy^l p+ѣ+dOPҪ.Eo:|ZLb)|_ەW4<;'\ z(2(ْnҧP]EVG/EN^ӧMx?{,6)\r&wl_W})eWQw%jt"W%S[ƪ_AFTt5okkwy+uUn ߄5nbU %g'Z:Tm|,H+=_oY#3Kw^r >R0G?Ϻ{P2J1~=ʯgSW>{jғQ!\~&%yke_§mKҚf_ 5sn^˯Ɛ{cTV>u\䶙-4K!kz0SZyVJ,ww>juuY]27ZsWk"6@d9ܞ\\Ygt֘ "N$mtvz9Gh~ ogz7f}%_ߦ2 +L?ZY>Ӂvw SuxR懏KRFQ>Q8B|$%s~keOQOkt^/=/Nh\n֌py+:}?3 3NnrjGƆ [6_ތub3L&F\j:yoz7=Z;_=av؊hc!b0FH Zg'ev\N;Ј}OFN덾EcY[ [ejƇs4礕S¬e"G'6q뭧l t<}b۞Z:lm=kVeSҐt]LZ@(D(~1$ZI 6mc ;;vNjDg8u'ag{.b[>pBlhه1Ehy<*V>si{I,IzP9:8۾qkct#^έ_Lޫ:O!CD>2Cu"p.`O6>b%{I;^9~g85մ6|kڸ`loЦ .7GNᱍݼ_oh>՞'dC¡U q8^y5v . tx1,P'6oi-,;i)MLD?Kʹekeی{pM.72~>jØ81[L%ө'8Ѵ=sca(yJX=7iE,z}:OvrޝtJX ~ݚAGF<7h1s=٭lQrP6{Bж{2u5r2mObnY h1_Nq{v..yp#Z;y_ZqWSy|ƙ̛,yuI3&faܱ~@]*I6%HǨd|h6EZI"ģg>Qun\[ }XHrW(7%]*zzaOѺ[o4;8񆯞oׇ{݄7L׽ʃH>07fԼ%'v􄏘ySCgiKM.r<˟'sW<PN61jhWE\n{*I{ϫd,ػۊ 9̻+ˊxζ) qW%~ً <ԩΛ0+}Z>Gn27:tY8lRfy+I1L9, cLwJOs~6/2WmƄy^+/"JPߎ[ˢN,x6;fsxF0>*q:*q7z!5Xpl<> +B) _A%ƽbX.?EqwuZ炥Va *pkbPAyZUzRWjxg洒a&vlV}mP[n *cV8ҮP+ 93y~C=A.0C`\;[TB +-PYQnY}%W"yxB-ƖW[\46&giAlZq9orueNz4>C˃;jeS(?RP}_snf]V"3z 57h-PD=ݡ^_.;ZlaC0Yf+ԫ i'WVZ4`Cn X!_'PY]>9lX-s6[?3jtCyLm9j:͑u M+SQJaT0:_?.j|P?| *r󗉠> bkDJ5C}]/V(fO/Q%\9 P$x? P׉ձJǁ >-WZ5X +`=,Kڰ35'w%>x[~pT'D%ݚ[`T5]KG2bZcSHt7ꦞ罩ۨ g\OtMs,D}$eͥkh{)gK]3uq]JYVu^s}s^ݝNt:Bww)TF6LLlנzwEO[#j LmgNrorȑ7F}t:_6!Dzp00@t]?,q2v{bA'0}$CIb]f>*xZ~:SW=j lʄ_ܠOy[*Hlu TtV+zSۡG *?jqP sLI܍j'P#0[}է|[b DFEkTu" +)X^c-SnݡxcZ +IZ bd0jYkޮhmZ{@ٲ9+/@6x8[`x6J×< K6&}-/VoҕvF쒀Qbb7NFD'7Po$]=ӓ4i)/%{|[ yɈ&ށee 70v0~_; &e61l#M\jAf[ok5 ~渉oJ~IvpG@czyƢ3uwyY7B>k<\I<0鳻FōN*)3f]6XRh7{{!7GEt_?E&z +do=D,1ꋒ c`s1)bˀq9h67efG4`rjb7]^sk~ST--o d,فVϿ{lC##(fءf`zz]J%m=']tv|p:mT0:<3t:hv=gV0q + ܊me5܅͛MdE]D߫SVm{O8+!yaKn3/-EDm?'gUi೴f +au?K_Waq£y@  GE8N#=),]¡}RZUņi f%b]lYbsGiTN8r@!b=9m5*\؞66j![d~tAhCsepQ>6ߤMsVbԡ{;@7,IqDh6i_ lٶޤ?J˭sZ(k^-bMv w,wnw[\$ xPup)^?`+6+f,@p("D+180nV-)eQ>}g7zK"d.UZ`F Sd1 ! ˣ4Q~NGsl9Bܕ1˸/ZAXGm<8m~ZCw?=EY#י46mݩ LwYl4v7(0{7FZ7+ިn>}? +M!i?źݮY7ڷ;U2uChۤ!KiR }Z9a`9Y1nkmY}^+bx5Y-N7n.6{"Cꪊ^VJC;:(DtYLmנN~]1# _s+ǗCk BhwPy@]fv>'^o7ߌ7{i?9Vw#Z[;vxY +5m2 jo&}޶;UGpC]mk[XL7gjކXGCkQ2ֹ.GҸ IH;wx9hw-3WyYڋz:ոImsd:5n9þ%';V:"'։QP>xYBֽ>h^ͭv[ v>{'^>{n۽W㔑o۽Wsn۽Y|ѝ{~.vP^_m]v{VDGg8η{/^L vvfy33w"i7aGR:`Ke1YZ`oT5 UuJ&}(֝:ڎ-3RUl=°{.7qZ/? Vg~Nď͚9l16V=),6%o\k>@|@1g7IޣK<Ʀ.1ٹn{q[5VmlۻdlmN<KTؓJo -FW# e_~V}ML^f?$﻽;漷$ r L`@K7ʖmY,۲$Keɖ,YdewS=}tuUuVd=|îd`}G[EkkQylsS^KG:NF{pB6uTuɮ7r˥69ͮ?&ˑTUt3pmǻr*s +sR#jh[):]U: ui6 3uXE/.6:nZF=_8:o/n +V}t=?'b_U#lq?2E;}zFƦ]Mk2}]ة#*tv@lQ;gBoӬ<:Ngf6d^7v&Lj1]rjy8,Y +m?x\\7V ȩp 0_m@ +6Dpij䍁Nct*Ml׍}pvzrz3(\Y]754!Fm_˞5?[3Twg;DQNSRsҢYvlƵ9vH|gg#<՞[zn +3`8ly5M<ۃag1əyJc{S@&GO2:cyk|>M/M<ɽC/R.vbl.Ïu5Lݵϖ7ZCi߁0a|X +ԷcuYq,:rlީ=.>\WhA5g=L[=:URڎzl^ztŽ+f.YlPx ycͯ=?19ʑI99IVͩI93I6}ZeOAmxϹibGv1J,1Pڎ_ՇN;ivjPqrx=ʟu^]=*OʫzWߥ*2)EszR'=7omL3}LWw9)R6IIyu>]8ph{ݤKq_GxCvܷ.޷3dTlPdBKP3Eia9ТSW>OSV^atC׊ku%' Z|YSS^璗.ٽtkحSO +bKOGӧtzMSJW/g5L;~ﺹ2K*R2=9^iwm'7~&\a]ȣv,'d[}j2Oꯞ^N]lvM/T\cZj[?,ÆaM:NXVWS%tRzSH-l;ľVhľMkOk.cZ\q'}]MĴ?VT^^LkuobNM8ڙ}L}*Lk5O?G'Yrrb_Y}VC{mNke'Ɛ''-6|LY}.U&cWU:7Uu;3լX!2&U~Z_?ESbWM~佣Z v}yKձ}f/awb_G&rÆ~h'&6_4&ulN+=bbNMk8ߵzxxqx%ŏ;)NT&O9^v|j][ve[ZݖU=;^oWH54w+ɺZĪ몫λOL4e D޳26&xv9n_9v':̔l:ͻO14 +dByj<ٚy݁_YvX_Y7֒Sɥ͉VX;xx1}V0xb{/̮n_K%/L|ξ?@/tweӧ6nrsr/ɳ1_m>uj>*+m/r{?FS6j|Q'[U֛W.pvƣMGƹVhVZɛF3mѹl~~3S]3-W4+~iMcgJsz4LybukB(Иb +v7^j[K0jc/]L45VڕnYa1`(ZKj <&Zau<Pv.;n,ƀTF5 +Շ~S7~Ut[Nj=?|gܪ> \TGRM~c"q~{O{ض4Q6 qGzC(U)jTl SO5~Tޭk +̉cw +}$gK:t4딋_KE[ڈQ{\kdwұ„yybnW1n8.Su󴬆o9)0X-S;6Fyn::ەyvowu`zݜf˧/Z˹I/Z7uurm4}h1[&ʚ)mہ9 +؝:~^^4X6$|D^SUK)f^9%z#t7%Qu>OIl>OjI+MIlNWiZg6^xhC>B[S.oxJb~aB6FÆ8]ö7ݾqJ/?8;y.{J~6_;z?Z-G/>z`xd`vfDž[g_Z}q0QnO{\pg^x)mrȫ{W^;`[CɳGǮ O|zzvoGW2sތͤRSKʩ$3WS׮8<|yqmywcSd hRãΤv[F&l6weM;<>:^445;S{Ašw7[_7ܭwܽzyʏ9y=wv`o-_zrku*W>w0V*Dq+Q7ƖN/N |3Jo +vXߪk(fŭ둕9K;W;.(LnܻX9[̬̈]4cfW +OSʃ7?tfE;ܽEke˯Ϟ, O^L[yJnl<O%MH4YL?::{鄶J_ɻT2Ѿmf_|;9}+Zwۙ GGW ,m<>y>s~mPe󡎧T1j/Ϳ~ZE gߥL41#ڹNoU6fxqb /&SI$WSrJa-#;~|c&iȍjeXFBd0/rCF~zgc;ۘTXʭYo3#굹?&52XJe:8^y>Xz6Boq #L*Mn).3G?,L]->z:j|Afw*Yf䩼[]S,L^3 WZ,\_1:yXkőMA^ہl7g.')27&_͓ΟlTpƊ(,-f6w+K{Itݍ3OO-ܘ|tm_&Zys(_\X[L%n7f}cK+ i-iG*q"rx|iO'/O_?'RǩpȨĐބ5NuЙ0-v2^-/Sg 9&Qy!C"\I^I7`;}<1jD툵ѧW Q6=~0Zta?%66z h E`%UAʼnLaUn"&pZ\_zvWTGb7M;4pJ^>hq}4wmC7p3#cg7^ߎ L\*I\,΍L&|#CލrԀ '"*>09'+Ä)쥎wg/O.mX|Rbis|d.p{!7M-8x4`dxS4veܵ3O9jxaA쭓3..%-v|qvP[?Z4=v6Gg?|pv;ܥ oYvOizꞱåwkfҹÙw3+BS?-?³sg& ۋ[Ov6zL{{?,/s5de ӽ:++$iL%~R.9Z{yc_xQ|rsmqkk(xZS:ћ +ꂛ5]袼IzN=V[F?u5=[sU'՟}FsW ~zܯeLM ;+au2^:3(wMFAoo Lf?OƯl <gp%(Xo[aF\3{O߼Ellvhz9>(nf!];k1'umvTFwuzQCLåJ*ө)_NX|9n|t5 +t[-^kZYS;n6&8+5.=zmytYΟo[[kٕL9]ZuvO>6fG/;ú +M[[c)2A]Ε™59vfrq+_g&gV߾<9/9RGWM鱋5uۏM^=\Hs~1|ÅעZZQ 6 +-?m2Rt ]\slM9V+YYTcēQ +eGܭuoa_pr6uf7Fuy>c'{s庩G&n<){kKaK2G]?Hܸpq,iv|Njd]̳m_;1^Һ#,\]jK7Z(c?m1} =i-?x9 +}P6E +?j]Ի8aYY;n`E??Qf wEr(=s=gVzz}#*tfԴ^BVig6OX~[M&52嘦]Z52b1 +L{.h4Dž˲pF3'jѹ[#qM ^K xuK~40rNiD,-g]:t'm'Îi{%Tۍ OCŷOkH{?K]ߟܝ=-Z>m?H?T&}vv##9wvw^=nhZhص#ۺj7t؀.s웭W +ݗWƘw ki2ߡFT=ʯ&R7Rn=Q|Uj~i10or8[Z*n:-TwK_+z1.VIWK_+z- +ZZkQoz(}a 7<6g>m:ݸ5ri@;cDBU4ӛJwjt>}Vxy㳹 7*̇[}>OԎWgntwIwjŴSx~h/YpWh;8ʹųqZ44_͈;-jʘ*QYh(Çxp~CӪ鉞Ck7TNjE_|d #T +jӾ'qƘ9e37ry2Q;Z@, +/Zxڞ̉Ukbkӕ#2gtf+a2]#>\D㼵ܻuxl7:4xEfEl]Zoҥ5OMjEH{ʐ_ù{*VOja w\"lhѥՇka +P1v`TAȳiǽ[Fk8ES?fC/Dv[<y\vPˡ G%PmF]v~~/B:loV4닱}hh>Cqq~>^Z ʈIo^bX뇧+qmm+vRg:ңm*Ԓմ{ۍ1ksoM-qѬjG{M(x"={'4ն̙N9zXgC/nc}W;:numEpI7ުqլ^4 F2~Xѧɥ+uGsr&\b&BʉIk^I>X1RͧP67+k1QNҦUT%oRWve2Rx6Nv+NOǫ+Ugw&+VSER+[e8#_h' 3nkp~/2s\b5YEv/fNO +Fk?6_q/LG3s #"uMҾ͜v ߈}l3Ӯ/isFvG ,JTym&ZROx7(wT/Tq\8#;w?$DZ~ovmT>F?ܺpnН W~`yyʼnʲ쵲/7.:gF.nK˲khfhөHWmΑ7g*3UrS2Wkdqq]";ܾjV7RՃ1pqf嵽|4(7]NhBo7*/_?HUz6Wŵi^?Vu;x iLCq6L"v<QX6tԪ%f,gG_+gs~Q_aVڔcz\N|DёW\9['<*.-Y +Ƥˍ> +Ya"5z.Ai9<馹NĴVsAzgRL)gɛ'ov|r/>;%wrv5tpwowN'[󫫥^O1aUdiԺ_9,uoqfHveJhϷ /ݙ>rR|L J{zuQ(JW:ՙOĭmqcC#87.p6޸T⨾ Uu/D} l3?R+*^TӢ#U>qټ4Xui)/'>`Fڼ;K]5|gUsյ%&@/LHzebIWzDYxS~{ücƸ`qҰ+z\ؙ=7ƂW啻۴/V;Xٺ~B%z]zk/qzFuXeq&wB^fykE-RE٩y+gܜM$M3ړSy&rJYP]L=h3 qvL#~dsqOgͰ|Hz齥(*O*d#ۉ@%}9XK_\^iWFIY~ gq\nK[.SU]\k/US28ohqt\pz>rڠcǬWjY3{G3g3 w5c.iGzic9]k_mLd|9}gQ/'cTʏi?2k{c%{Dz.!Yv%Oxj^6:swt3hS6'Z:9I+>]jomJtP3YE^W +'8z=;x6n,bծZy!>iJ̽|b}W.hK|v{1&{ZoSv >Fy4ܺW@k܇hF܇b;|MWNzq!2ѱQ;x> T+NTZcbp5;2WGδ1[zm'=ikW`dixh]K}v(`C-j2ݮL,5扬 +QWӚL8N;X'\0`QIۺT2l8=U-٭3QMڪDv&. Al0Mq˪K[+M .mn{5q']>c[jCZ}8;͚ݲk\5{cO[.e{ǜ[Wz^e65ݭ)ƚVe{\WMe{\Wƴv:fiup^ce{KFy$hPW?;_ȡ[#7ZGSFԺqs*EIú=v>,L<TLh ,%$޾XmdVWSRL9- ՘NdXD#)/pyx|*ХyG!Ng<3V;Ԣ uiBvBV}"{5etj; .ʇr(|Tѭm{k[=JRt</|^/mN ^?=:ʙㅗ;/~qeB|2^M/LJA6 FG7cRYoNh?_j_]G*oTJTi,߸;U&r\9|&OgsR.)B6[t!H2Yc\<2R1oFD)l|:U*S +D1W,܍y^\B>!>9ml!~$rtQlQ8L!GϗL,>Bl'بOF)QP|I!.- +ٌx^J5H-RR1["ȗҕ}d +ڱ9aWN)[L lՎ%IS+-$ +BQ1NRXBR\9LF"]T6K%K}G+g*{I+M)-JrXG#6G|HW$͗t")T&Չ|$JXxZ#fn[;{{[owƟn=})J#Z,LMJwTꤊfT:*2b|oJ*sRF\B9xYbRTLdsR3mD)O%2\.N峅\|ng6֙e_Έɗ LY;g2͵ s.ē[ɞH9ޭ}w}F*\UK'{OG/vo'4P#\\5נKDE'xB5Hal"[T*e,zQl$C9"2B^ nb*oB\BF&Nz+ED6[J-WQ6-bW<_NLY㼨Fe=٢KeʅtFK6U(>'?Qc"Ȉ GNtENac\D`,VPVRңL/er"Hr..\NZ;鼱aZXK~,b|V͊'!J[Vj-HY9Y$>DU[S%Ec +B_S(iug)x(CA6#J* L)od˕ŲiYjqϡӲ{=VZk '̰v7ݦQRZ9aut,3f+rTra/wvo.7N= cZ4ؼ0I=Wm(6qd" {ѱ  ^2MQ&/޵+/ųk{7ډ/loM=CNm6x}\B}Wx}#1G?}x6[^u;x}1~8:^_`u< /<@: -N/ν.(p0*zKs?ރ]KDZ`w.j:N[?a{] B8rۀq0zo_ENш1qO\G\#ш1)ٻJ^8Gx {:}Ѡ1Oebz]1yyh ]d+,ш1ޕ*]/sZlccdِ-@dnQِ-;RJB (@W^`l#]6rO* 8rЄ){%Ά\o<!ex +QC<6ȟWnlc +1+@O8r?B^l +lWH7@#[<2H^-Cq6z!{U٨-we>{ 8o=?BAJulϛ0B=^:@ q6gO[q?E("F-wɮyD[k8^/Άhg9julϛBVul ^dyuG8խ Jk^y3 #{CG(|$Bwp +?B!.(YP"B)\T +pP>?AWt @(yF(\ +0?A@X z:yE9%Z \EG4c]{OB.EG4~ +0hc{^iB +p"%{.\ 3=B(LJ׿GF\#+B.fp&\EM\#+*E_!&PEBa.Up)tp)\`EPTQ)Ww #\h +\h +*JF!2a MELEV`ESESEVA^"'\t0)\tp"+ aU B(|@G_ ' aE +p.P0",\ a\h #55B(B=B _#B)\p,\TJٿ5B(ApP)q+*B%Pʞ `a@(cqPX J{^QB #8B.qp".\ ! u +p q@aQ@#@(". . P D!D\! D\! D\!Dg' 2B2J.OBFYp6.m0.eT?=B[AdBOp #@=" Gp ,j.p +Fp.\ `'@BO0BH.MTJy8D^@dBv]#BH.Mp.\ ;PD! &J.O!B/\ 0  F҅ D\!TFAT?yp PD\!T.ApPU@Q)!a#@U D\!T.A\?@EDABf#@U D\!dF5pY@Bf#@D B.5pY\#.BA@BfQ@e0Rh!@5JF!""{.\! \ R@5 #BA@PrpH D5xpH  D +]oBFpPp D +%#_""% :f@5 B0foB.pPp Z +#J. &\ :`fAd7 #Bp Z +jF +!5a@.\BEM@DBD\!R@DP)Vk#BAB D2_!"(\ "AP)[+P D\!N@Bd0` , D!N@Pr +!Ma@Y=BB@P)B(B..z\%B(B.FzDES@BBJ^/BFnppЃ , \!d- !kF Pd !d- !k@Y 7B0pRW Pd \!d-\ (!ea!@u.n0pp : +#1Bp :ʞ `AA P \!Q@Q)B(ʲA B*BDvP2!B.hpP .Q\# Bw#@(\ e0C.\\>BY4Bwa@.\ ޅ \!0d>BY.BwE>BY #(BE6BB@pB(BEr!e0 z.\pP .]@pB 4BG@(\ (_l P;@(\ `!۲gB B5ȶ@P/ !ԭp0BB=,!EnBH| Fj)?.gp.7>\BaF<!GvhmQ)>k/BȞ܎x +&#vExޮ3x] 0tK7sC (^**󆏢,gp:x@HPl5?‰J<&\~T!OnuH(R3=(r;x B]\nA܎V`J< \nݡRG !gpJ%< Ov .^Z'Q󣿻""gpJ<4!v .^7M"<V)< 3T ٖ3xJ{ >3Â>PW?A-=-K*G +Ӫj@ESWDԁЩeL*Y ~R^C%_ԩS:_\Z +'^+{? }h}D%0O h\썢Ï>?TO>c/OJ]jE'~/_|gZP? +.;ViV&/>TցS +;P?沯7_})1~<;}_ۯE\>qpUu/D/]fߑ}gF#7)Ev_)"Mם:y;/U@?F/:N}!QB\y^7U +h>@p 7:uaLT\A\qӿO?/YXKLן[>÷_~&O =INcA V ^_iNd&02r.CNR"Lc' (N^) pF| ( +'d w| = w' 5y j kg[j#*5ϼv!!pK 5@ ~.j1[Q ~^_4 P!h6`z}AV ~5\T/҅( 'C A[QR/v!!`+ԺK@ SkE礂ej$@0 8DVWyLu}BeL}B$eH'X+ʐ8OV!p`(C"!Ҋ2bej+I8G p(ÒReXRd,)ZQ%\!@+D3 Њ2>!' Ί2 u(pQWЊ2 u((wΊ2$eH!8+ʐCp Cp&DpV!p`H'0K DlDqe$.0 pKH'0K DlDq [H'P6@"YQD- [fE̊2$neH"(K FPV!p(C"Ȋ2$eH"(+ʐF@V!p(C"AYQD5 kdEȊ2$eH\# I\# H#+ʐGlD d$H#6@"AWR A0 p+H!K H  p`,%@"XJDEb)b) R$.  p ,%@"&XJDEa)7 R$nH$K I p ,%@"*AXJDM0\DM0yDUH\"(6@"XJDU`F 8Dcz"+d H!6@".XJk6W+H\#+ʘ\6P" t ʇC$neH+H+TSAW2+F0Fg$ej}B$e.2Wa~EFW!p߯(C"2_QDe| }E2$.eH+ʐ߇ 'W!p`{H\K MlDMa$.s p@H\K mDu H\%6@"">_QD}| |E2$eHK W!p(C">>eH+ʐW!^QD{E2$}+ʐ_(C" @2$}I'_(C"|o$. p?/%@"o${ pHmDe@? W!  W! >^QD/yE~eHW! >^JD?xEeHmDm @2$}+ʐ(C" @2$+ʐ(C" @2$I' ߮(cԀSOH\6'{}Œm@ +o >cf1x}mDd"@*5@$ۥD"ʇC$k ]QF8D">~j*H"2~j}BejDů+D3w2>!w2 ~]Q¯K 0\otEF (C"7|m$+ʐ (C"7| @2$}ç+ʐ (C"? @2$}ç+ʐ(C"?9\Dt@2$6@"i$}ğK @ _@ @R$}ė6@"G @  @_2$ė+ʐ_(C"G| @?2$ėK ?(C"O @? ed$}B.%po|g$MHD @_1 @?*THl@)D"I$Ӑak@? 1k mʰj@,B$':P1Հ>1j@_0|1ǻA>rA݄fI bיP4_}K"T9&P}ՀjNO3ѳMhD̈ +M GgDuf/N +A2T$ET|UH\`a^R!N + < >2WXX0Y.3Jx!w5D)eӟ(J|T,2ϞAW&@" ŸJ?I%'Dw|W8QSzst*nP/>~#@"Z˦_-( Q#C**,~9-o(?+=M_qY^+/`T.hWA|(>OXH94L(ne(R5O¯(Sg Lkӯ~7^Z?+%j(Ǣ/ھ(}Y>/ioz +_4j⯔/+@}B"P~5koQ>.%{}齧7ͅ^-Z @SAnsq߲}\?"P6ųSXH.>cl26LT1}s0%RycVJ @Sn~ _G$?|8Dֳ<DγК~+C!Mzx;}U`G[^-Kn~+j@F扈%G;豛'"ߊZPpyz!EFӯvD,7t8IFҗ(8;7_[88oyOWRu.`oS"^/I"^A"o4`*`_`v|E-`AَOtqCx˳{sm Cx)p N27h{]W!=cAz:D7O"ol \[O7O؀ %?ALgoȨOgU>/5<7F/N:GɧHÎVu} D5Љa7UÀ┨:1: *~^g<ۉ: +~G: +QQj%ЫA1P-x룂~C@9{vqVJͭةGㅗ;/?K%2F9gx֛q'k/?fw$>.'vNǓ{t*`dinӆݤxJow;SH|㮾]o:%;3l<'JrTKT:V۬PLdKb}\\bPJL\Joʉt)۬+ier<]L'Ry\XmB峉L:/(SΈȏʈOb_T9^L#,S⸋\A?"YQLl͕JB)dl%\Nق(9E!˥آʹt*'YlR٢P:KdR%DTJ6/Q&H@,V6ˉ .'ĥNնH'HU9md-B.W9\^?"qܹ|1]*#6#')Ŕft*MŬ,SLR"# ]H>;XkWŇ/\'vɓ=xQo{.ݫǻ'' _=ׅ\&]mV(fW'qžw`3ߜ]-o^>=˻Է:2%ixRݝçOƕ; 7į7 ͑8[qW⸌٘jn5:7n}szV[O_ ++F4*KӍseSugLFe&+](J-Jr!SO48|ùBJSbYq˧2qQ\NTbǥs񉒼bJ줐/񹝾ޜ{'khEYѠEMxzqQf`x9+?].|# @H/swov7kol%\#owwNo>B?=ە'XVOvuxkoGH7!\:huAT%neݐifԘ^_?+R1ݯd)iRE)$BVҫJ)rXMP*h^% ~TQ)6J S|H4FOl-ҩD(MV2ш=g2%rqPt(MVG\G\?GIFy +8lJy}#9ݕũ 84\1gl * #],3"Hޘ7(FT!\i-rm+TO\ng8͌P* 4V7 HU DNI\}c q>2. +˗EP,5o ,]H\HDpst&aH ء^a2lut~j{xϰ蝽ˬ#| o^U2l71l3 [lczO`<.`[E%-ֱ]]M-+ [lcrW0.[.e [خ &3lW_h~v XZzG\L] @-ꫯݷ]- -v{oۮV][|r>1l K` z/u\gjl۫&V2l}۫ 9-%ee؊}l/,?lp F^C~oٮ7Ö}Vb]u-KW8# ظ+DtM"z@G FR6B @?@x  <ЄD|=?>3˿!C_4>DGD%`a/HH | C^/H b]!b]/1 Ix'yHHH +G߾D0$` `}" t!5RB_CD] oC0@hyCI@"1*B Fe BE+7D F"hICI@"16IXB &K$^ +@8Dg׿"b0@M"hIJ +"16XB f D+WD I"Z4E%` ""1Bh!#͡_/H !#"1Bh!R1Bh!#_10I@U"ZH%@SR!co?/"3"&J7DbR 04tE%.co4#OF@`J[8D|ÅbĒ3ӟ1< oHĈ%@/ID1K +)DhE/H c>QфD'D ~@ +D@1KD[h~@ +^"1f!#>KѐD@hEAJD@KDpD %"@\R f%b@~@ +)D@E1T!#_a9g)"1T!#_a3_D@h)$b@DR ZD$@D" Z4EDB "-z{D X" ZDD@ __@ \ +C + b @Ϲ"?'bEsOD4j @ϹÖ"[I}"-'D""[I!Q>9ѴD@J +DD@/H!"[ы1xE)5:~9" !"B bk @ĥD@lh#HDKI q)D".%bCsLDGR 6D\JK +)k}Z"8A ~@ + ] +".ؕ +"Q9֧%"c @ĮD@Tؕ +"$AspIDM" *DJDk@ D@B @ + D@<f |@G%"AsdOHDS" D|TR D|T" D|T" 4GDđ%"@G%"@G%"@]%b@sXFDY" D|~@ +xJJD)/H qW qW qWE)"*D"*D"%)D"H :B + @#$D"H AB + D@#$D"jJ + Z{h]" HDԱ_C D@x)h}!uE)8D"jJA "p> QS" <Dԗ "%ƒ@DM Q_R 0Dԗ "%ƒ@D}I Q_" 0DԷ_΢9|'":"D"KRYDH" $4CDG$@D}E),D"n$D"n$g}!;!A F!A F!A ⦒!A + F!A F!A ⦒9v֧"#D"nd ܄@M%@M%AsO9Dt~@ + JJ/H8S"7"{H +=$@M%@a@ b0 D@0CR D!D"_9j"&D""{/H D@hɆI=kO" D'f}!@ b?{D)D""{K)$@~@ b?{D)D"R{H=$€@a9p":% D"ndO IIYu肽?,D"xO8 J"p> q|_!q͡?>D"[ #hb茣t FgO`DHӵ]۵ Jt=Z 鍈k.va PM]`tGPӅKlΘZ_ 1h8z9WbxV]Ϡ:#k}  +lە z3`AtRBBӕAl08,m}q!:> X[_k.hC3֗-MS]`xt2DMUSl*00 irz#3Sġ4]9v5 L ˦خ@`Ib}#kfΡ3mkĽ4]3}vљE֗9R5wlW Ie}c̚c1EcteBgY k.2:3z4]3}vUЙ+;ċ^C/vЙK +:;W9L`]t@luML߱z9í Y3l/\Й+t +:zBc{iZ^pML߱,:/т, u4]3}Rpcᮚc{mxR^tۋ Ktk^:!֬H4]3}Zg6@,C2$ML߱ CgaZjf;:z!H5wlwXAgZ.kf WZw4Z0Y /5Yl_8:z滃 CꭗejElP0f^a{JuosY%qj؞t +EzU۳ EX|}l)Bwۓ|eRCw۳G描iң"QMc{R@,.S= ^_== +۵0l3خab{T],0vۃ0 %Sخ.b{Lvŵlۧ!l1}vg3lCaxBO@.{bĂz}9|q`PB"Fݱ8+{Aw0,|a1 ˀ?,` +?)<@7u+#/CO9rhˑ#O?-@怔o1c?zرc[[[ϴlm;vH3x"FO8yTɓ'Nf`8!GԩӧϜ9͛Ξ=s)2E(CٳΞ9}RM0/yy2ٙ3( /?wԉg0/xER$|'hD# ϝ;#1p'DlY_pyϞ9u\80͎W.]pRd@ GF~ o(܏7s]Nm%]- xPf iqɅmPr'6ƙǷdؔggo_p^<p(ƺ}kƵW^z;'+<9W_}Bml[ x 8pF~N[Ο96p9<3ǚm N#@K0$d;C#?Jo\| }ϩׯL+AnYy@o2y跁}#?GmSQf@#J\-6**6 vn^[y@oV>ĭ[ay+@ϩS&@LrOoƬ<kVpG;׭CS&oH;32W?{F^G>f@;їVΡQ0gwpwW^D2@=}e["l-d~ p 0>,&3l- px|l i&}Bö&xH 0(Lgm- 0(e* 0޵,0A^}B8yy'/|k QO#['>gwm!ˀgοh䅀wm! O^.p`|k Y4od0wOo B om!Mw6CY[Ȳ1M@H Bpf fBx$lB /l@|j /> 0Om! S[MQ[MS[#ax& 0Om!lLQ[xHGF-0#xB_  ?m!lQ[}a&-0#&fBlB 3?m!<6?m!<6?m!lO[O[3x& <d`oB /޴foBx$loB›M[}af-M!|i /޴p7 ޴f_Bx$l_Bx$loB— —GlLI[S&>ex#aSxB_)|i /H 0/m!“LI[SxB_1 0m!lM 0m!<6m!<6m!<6m!<6m!l E[UA|h +1m!l C[UI|h nA|h +1m!<6m!<6ă ă6& Ń6&-MI mpsg{jaq>ws瑍j/np 6{~}KD}af޻F}a>n N`ct_ؐ7wnћ;}Cx}afo4 A=6|s'o07w&;G9⥗_y׮]͇;Xgl?uy/]z+-x+y3>uLg{‹/pEus 8{=򜺾_ vf5N:}sٳ}=>h3`19~Iu_%/p3@5=vlkk|Y2>rhÑvig@39S dPs@͂9O0j|%6c -@; vn0o-yva]\yGyxgqȕ[O~zӇwl7o=x>;~;ySlӆ:)'7z'oNW&?y>'?هw>{m?||[%ɇh󛻓_hed2mߪ%֑rr޾ܭ?Lv^fHtNgU:Y:usXoOtqX6Ib[q5+k98&۳iv+"/ai5+&IUmWI絜jZ7/әQO$#fLdzl(f,βɇi]yIUVE>2\^UIZ('GÊ:/&v6-QY2QSY%Y9*YN.G,u4 |$KBNDʧN-^g~2&i6]2ݮfȷMo#b;$xI9@cIt{VrL6VaiebdU$dZl=W5Es@Wg&7~e჏JGq_?{=\jv_ud窒=ޛIT?7پ?^O~z~c|ҟ~4?Ƿ;?}GxM芟N~ҌR(#~N?wίeN>+6ˮ5Ujk[juB))_+gEY̚Ϡ[]9Jjrcww:_5SC,i:GMṊi4ytrc6ٟOB^n.v2+f T2}$ͶeZTy1-Y.'kT5y$_U筷ƨmug[վk"~[6?y{ȡ?]ۥo?ǟAH=5"/-?Qvw˻ .m/޽O޹|Q w~ Y~XmjBh}oٿԚx?tVSj>JBHe-3Yc;*sRef8(m&d-Ϋ̦MFIXlY2fm׳hGrgZdeukYrDUQRj9T\w.g,sUTdRn*fl&Ŧ+)e^X})SrP$򳙬CɈAiL2#R礪3˗IFc"ZXLe36$1ŶDTNB6TK 'rUL\M/QTFeoEzU>;_2Q2UB*&եcZ}L(ԾH~ASɡ<)奇fof^hdi\P엪@{_plvyO⿴u#jK2U(TmZV3Rd3W&W*,9uP~"2OdhjZv:ߓȇeǑlVd, }`>M+"uZmj&R +Tˎ_v3YjI{ZLRTkd,g9VXǺ9Bh){D&# Dw嫕R'pK吟I-M^Zfڤՙ*KE&0R@y+:-r-=3URvUOeIrM3kRND!Ani:t3WBiZyRGl2S[јG9(MdjRguJKʙEV-[iUL"S!߲MRPGT&JYid$2sTMbOaɏO#',eTf9i3BD +!y!!jDӦ]Y-Tq,*We"m渚ay-[՗̰isTR&?7n?u9r%#gf28f7ANQ&>ITU}˥IɉB\3yTm.d`22Sde2T=K JNN{Te T.$=kU eg6ɧRM0uiPT,C*!WrkY2d"]f +lUy.:I +o{J\j˧K'YvlV/!﯎PO+Ĕ#$*޲k gANbɚZKMȧ-N{WAld/#IS 4%*+2SH5:u@MPc%[9Nw몌6,OIU3 +uWN׬P&VGg{6e%T _bVkO/Y$̚?j{罒l$X=oP#,uZfQg1;rO*XK[| -h Ϛruۃrg֖Ɲ,_)/;Κ?=?͟gYEm,_f@fsZBI3Q$g<~A£0 'm5dRTS(%K]KfK!_MNL)\|,n"6e|Hu_ks,fT\#Tel걂ϝt>ddnΖ/^i3p9Q{ojv}䁚$jߑjO3R$O$.ɢxAQmF~nR4EDyJwL۫Du#[IU5;'/>T^a9c5?{rdI4EedoR%WZ͕@IHyHn|ER[5ؖE&IHg𪃒W<~\9"/;/h_]֤DdFݛ _4 o,h9jmNTr;i|ΑIDmy7=J^YicsJJaiҾΘͿ,̐株[{΢k=ݏ8hg`3#Π4qKZn:o\,a^`G . 2իtP};K`7*Ru]ܙ6o V&)":ʕ ();k$bdE"X+vB;meV.|WNnlʒVi\d;?&_Kq$rm9Xht휿į|v&;ڼi{zζ[m]7AnՕX j|ZX26vw;'RWkQo Sim~KV|cֶ1 HsPr^jTڗiEm;lWAEwjn/>@&JyePMWp{qRْnu8m1+nv6rM^Lw>kH௔bXٚ^\ѐmVpjٹnwkW+vh'X߱nnʜylu\A[IosEdRV,UT]˕SsRՐIY]UMMɖ]ARu;SH +NlnuL=onXMTKS7QY햯V?)S91G!+իnӤ*%듽5<@^of3uzr&ԬY6f<ƑQi%XjS )RmJݳU^dRK-R:eY(3H*԰y#MDuX;zwr޽<G2=~MD\y'?:, +endstream endobj 229 0 obj [/ICCBased 249 0 R] endobj 5 0 obj <> endobj 62 0 obj <> endobj 148 0 obj <> endobj 213 0 obj [/View/Design] endobj 214 0 obj <>>> endobj 140 0 obj [/View/Design] endobj 141 0 obj <>>> endobj 51 0 obj [/View/Design] endobj 52 0 obj <>>> endobj 222 0 obj [221 0 R] endobj 285 0 obj <> endobj xref +0 286 +0000000004 65535 f +0000000016 00000 n +0000000192 00000 n +0000023642 00000 n +0000000006 00000 f +0000149307 00000 n +0000000008 00000 f +0000023693 00000 n +0000000009 00000 f +0000000010 00000 f +0000000011 00000 f +0000000012 00000 f +0000000013 00000 f +0000000014 00000 f +0000000015 00000 f +0000000016 00000 f +0000000017 00000 f +0000000018 00000 f +0000000019 00000 f +0000000020 00000 f +0000000021 00000 f +0000000022 00000 f +0000000023 00000 f +0000000024 00000 f +0000000025 00000 f +0000000026 00000 f +0000000027 00000 f +0000000028 00000 f +0000000029 00000 f +0000000030 00000 f +0000000031 00000 f +0000000032 00000 f +0000000033 00000 f +0000000034 00000 f +0000000035 00000 f +0000000036 00000 f +0000000037 00000 f +0000000038 00000 f +0000000039 00000 f +0000000040 00000 f +0000000041 00000 f +0000000042 00000 f +0000000043 00000 f +0000000044 00000 f +0000000045 00000 f +0000000046 00000 f +0000000047 00000 f +0000000048 00000 f +0000000049 00000 f +0000000050 00000 f +0000000053 00000 f +0000149772 00000 n +0000149803 00000 n +0000000054 00000 f +0000000055 00000 f +0000000056 00000 f +0000000057 00000 f +0000000058 00000 f +0000000059 00000 f +0000000060 00000 f +0000000061 00000 f +0000000063 00000 f +0000149377 00000 n +0000000064 00000 f +0000000065 00000 f +0000000066 00000 f +0000000067 00000 f +0000000068 00000 f +0000000069 00000 f +0000000070 00000 f +0000000071 00000 f +0000000072 00000 f +0000000073 00000 f +0000000074 00000 f +0000000075 00000 f +0000000076 00000 f +0000000077 00000 f +0000000078 00000 f +0000000079 00000 f +0000000080 00000 f +0000000081 00000 f +0000000082 00000 f +0000000083 00000 f +0000000084 00000 f +0000000085 00000 f +0000000086 00000 f +0000000087 00000 f +0000000088 00000 f +0000000089 00000 f +0000000090 00000 f +0000000091 00000 f +0000000092 00000 f +0000000093 00000 f +0000000094 00000 f +0000000095 00000 f +0000000096 00000 f +0000000097 00000 f +0000000098 00000 f +0000000099 00000 f +0000000100 00000 f +0000000101 00000 f +0000000102 00000 f +0000000103 00000 f +0000000104 00000 f +0000000105 00000 f +0000000106 00000 f +0000000107 00000 f +0000000108 00000 f +0000000109 00000 f +0000000110 00000 f +0000000111 00000 f +0000000112 00000 f +0000000113 00000 f +0000000114 00000 f +0000000115 00000 f +0000000116 00000 f +0000000117 00000 f +0000000118 00000 f +0000000119 00000 f +0000000120 00000 f +0000000121 00000 f +0000000122 00000 f +0000000123 00000 f +0000000124 00000 f +0000000125 00000 f +0000000126 00000 f +0000000127 00000 f +0000000128 00000 f +0000000129 00000 f +0000000130 00000 f +0000000131 00000 f +0000000132 00000 f +0000000133 00000 f +0000000134 00000 f +0000000135 00000 f +0000000136 00000 f +0000000137 00000 f +0000000138 00000 f +0000000139 00000 f +0000000142 00000 f +0000149654 00000 n +0000149686 00000 n +0000000143 00000 f +0000000144 00000 f +0000000145 00000 f +0000000146 00000 f +0000000147 00000 f +0000000000 00000 f +0000149456 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000149536 00000 n +0000149568 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000071658 00000 n +0000149888 00000 n +0000024100 00000 n +0000024240 00000 n +0000071856 00000 n +0000055680 00000 n +0000025179 00000 n +0000024304 00000 n +0000149270 00000 n +0000024614 00000 n +0000024664 00000 n +0000029546 00000 n +0000042939 00000 n +0000045817 00000 n +0000034866 00000 n +0000055794 00000 n +0000055910 00000 n +0000052839 00000 n +0000052985 00000 n +0000053131 00000 n +0000053277 00000 n +0000053423 00000 n +0000053569 00000 n +0000029609 00000 n +0000032299 00000 n +0000045865 00000 n +0000034913 00000 n +0000042976 00000 n +0000043166 00000 n +0000052406 00000 n +0000055462 00000 n +0000055245 00000 n +0000055027 00000 n +0000054713 00000 n +0000054216 00000 n +0000053715 00000 n +0000053853 00000 n +0000053974 00000 n +0000054095 00000 n +0000054353 00000 n +0000054472 00000 n +0000054592 00000 n +0000054830 00000 n +0000054936 00000 n +0000055124 00000 n +0000055342 00000 n +0000055559 00000 n +0000064641 00000 n +0000056026 00000 n +0000056092 00000 n +0000056123 00000 n +0000056427 00000 n +0000064528 00000 n +0000056502 00000 n +0000064707 00000 n +0000064738 00000 n +0000065042 00000 n +0000065117 00000 n +0000071738 00000 n +0000071770 00000 n +0000071932 00000 n +0000072110 00000 n +0000073610 00000 n +0000086845 00000 n +0000149915 00000 n +trailer +<<53701A8F86781B4884F15DAE952D0FC1>]>> +startxref +150055 +%%EOF diff --git a/art/vuepress-icon.svg b/art/vuepress-icon.svg new file mode 100644 index 00000000..1730e2a9 --- /dev/null +++ b/art/vuepress-icon.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 644142b065018e0be6b9ff8559b5ff0e8ba9873c Mon Sep 17 00:00:00 2001 From: Kid Date: Sat, 20 Jul 2019 15:19:54 +0800 Subject: [PATCH 182/233] feat(theme-default): use router for Algolia search to reach no refresh (#1706) --- .../@vuepress/theme-default/components/AlgoliaSearchBox.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/@vuepress/theme-default/components/AlgoliaSearchBox.vue b/packages/@vuepress/theme-default/components/AlgoliaSearchBox.vue index 41b62af2..a7a6c098 100644 --- a/packages/@vuepress/theme-default/components/AlgoliaSearchBox.vue +++ b/packages/@vuepress/theme-default/components/AlgoliaSearchBox.vue @@ -35,7 +35,10 @@ export default { // #697 Make docsearch work well at i18n mode. algoliaOptions: Object.assign({ 'facetFilters': [`lang:${lang}`].concat(algoliaOptions.facetFilters || []) - }, algoliaOptions) + }, algoliaOptions), + handleSelected: (input, event, suggestion) => { + this.$router.push(new URL(suggestion.url).pathname) + } } )) }) From 6126b18e7640430ed386aa7745e419f895d8a1e3 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 21 Jul 2019 19:39:16 +0800 Subject: [PATCH 183/233] workflow: clean script --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 3c7b5495..dd0eec3c 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "description": "Minimalistic doc generator with Vue component based layout system", "scripts": { "bootstrap": "yarn && lerna bootstrap && yarn tsc", + "claan": "lerna clean && rm -rf node_modules", "boot": "node scripts/bootstrap.js", "remote-version": "node scripts/remote-version.js", "dev": "yarn tsc && yarn dev:docs", From 4ddf552a0e6c6b01ac1c646d30e1ab15e779ffea Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 22 Jul 2019 01:33:30 +0800 Subject: [PATCH 184/233] chore: lockfile maintenance --- yarn.lock | 541 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 308 insertions(+), 233 deletions(-) diff --git a/yarn.lock b/yarn.lock index dd20be25..6d688f16 100644 --- a/yarn.lock +++ b/yarn.lock @@ -616,6 +616,13 @@ dependencies: regenerator-runtime "^0.12.0" +"@babel/runtime@^7.3.4": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" + integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@7.0.0-beta.44": version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" @@ -685,6 +692,43 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@hapi/address@2.x.x": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.0.0.tgz#9f05469c88cb2fd3dcd624776b54ee95c312126a" + integrity sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw== + +"@hapi/hoek@6.x.x": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-6.2.4.tgz#4b95fbaccbfba90185690890bdf1a2fbbda10595" + integrity sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A== + +"@hapi/hoek@8.x.x": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.0.2.tgz#f63a5ff00e891a4e7aa98f11119f9515c6672032" + integrity sha512-O6o6mrV4P65vVccxymuruucb+GhP2zl9NLCG8OdoFRS8BEGw3vwpPp20wpAtpbQQxz1CEUtmxJGgWhjq1XA3qw== + +"@hapi/joi@^15.0.0": + version "15.1.0" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.0.tgz#940cb749b5c55c26ab3b34ce362e82b6162c8e7a" + integrity sha512-n6kaRQO8S+kepUTbXL9O/UOL788Odqs38/VOfoCrATDtTvyfiO3fgjlSRaNkHabpTLgM7qru9ifqXlXbXk8SeQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/hoek" "6.x.x" + "@hapi/marker" "1.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/marker@1.x.x": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@hapi/marker/-/marker-1.0.0.tgz#65b0b2b01d1be06304886ce9b4b77b1bfb21a769" + integrity sha512-JOfdekTXnJexfE8PyhZFyHvHjt81rBFSAbTIRAhF2vv/2Y1JzoKsGqxH/GpZJoF7aEfYok8JVcAHmSz1gkBieA== + +"@hapi/topo@3.x.x": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.2.tgz#57cc1317be1a8c5f47c124f9b0e3c49cd78424d2" + integrity sha512-r+aumOqJ5QbD6aLPJWqVjMAPsx5pZKz+F5yPqXZ/WWG9JTtHbQqlzrJoknJ0iJxLj9vlXtmpSdjlkszseeG8OA== + dependencies: + "@hapi/hoek" "8.x.x" + "@jest/console@^24.7.1": version "24.7.1" resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" @@ -2907,9 +2951,10 @@ commander@^2.14.1, commander@^2.19.0, commander@^2.9.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" -common-tags@^1.4.0: +common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== commondir@^1.0.1: version "1.0.1" @@ -3014,13 +3059,6 @@ content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" -conventional-changelog-angular@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f" - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - conventional-changelog-angular@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz#299fdd43df5a1f095283ac16aeedfb0a682ecab0" @@ -3028,45 +3066,38 @@ conventional-changelog-angular@^5.0.3: compare-func "^1.3.1" q "^1.5.1" -conventional-changelog-atom@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz#8037693455990e3256f297320a45fa47ee553a14" +conventional-changelog-atom@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.1.tgz#dc88ce650ffa9ceace805cbe70f88bfd0cb2c13a" + integrity sha512-9BniJa4gLwL20Sm7HWSNXd0gd9c5qo49gCi8nylLFpqAHhkFTj7NQfROq3f1VpffRtzfTQp4VKU5nxbe2v+eZQ== dependencies: q "^1.5.1" -conventional-changelog-cli@^1.3.22: - version "1.3.22" - resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz#13570fe1728f56f013ff7a88878ff49d5162a405" +conventional-changelog-cli@^2.0.21: + version "2.0.21" + resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-2.0.21.tgz#7469ddd663a8e68967b6d8c9c2cf207d1d7462f7" + integrity sha512-gMT1XvSVmo9Np1WUXz8Mvt3K+OtzR+Xu13z0jq/3qsXBbLuYc2/oaUXVr68r3fYOL8E9dN2uvX7Hc7RkeWvRVA== dependencies: add-stream "^1.0.0" - conventional-changelog "^1.1.24" + conventional-changelog "^3.1.8" lodash "^4.2.1" meow "^4.0.0" tempfile "^1.1.1" -conventional-changelog-codemirror@^0.3.8: - version "0.3.8" - resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz#a1982c8291f4ee4d6f2f62817c6b2ecd2c4b7b47" +conventional-changelog-codemirror@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.1.tgz#acc046bc0971460939a0cc2d390e5eafc5eb30da" + integrity sha512-23kT5IZWa+oNoUaDUzVXMYn60MCdOygTA2I+UjnOMiYVhZgmVwNd6ri/yDlmQGXHqbKhNR5NoXdBzSOSGxsgIQ== dependencies: q "^1.5.1" -conventional-changelog-core@^2.0.11: - version "2.0.11" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz#19b5fbd55a9697773ed6661f4e32030ed7e30287" +conventional-changelog-conventionalcommits@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-3.0.2.tgz#3a380a14ecd6f5056da6d460e30dd6c0c9f1aebe" + integrity sha512-w1+fQSDnm/7+sPKIYC5nfRVYDszt+6HdWizrigSqWFVIiiBVzkHGeqDLMSHc+Qq9qssHVAxAak5206epZyK87A== dependencies: - conventional-changelog-writer "^3.0.9" - conventional-commits-parser "^2.1.7" - dateformat "^3.0.0" - get-pkg-repo "^1.0.0" - git-raw-commits "^1.3.6" - git-remote-origin-url "^2.0.0" - git-semver-tags "^1.3.6" - lodash "^4.2.1" - normalize-package-data "^2.3.5" + compare-func "^1.3.1" q "^1.5.1" - read-pkg "^1.1.0" - read-pkg-up "^1.0.1" - through2 "^2.0.0" conventional-changelog-core@^3.1.6: version "3.1.6" @@ -3086,65 +3117,69 @@ conventional-changelog-core@^3.1.6: read-pkg-up "^3.0.0" through2 "^2.0.0" -conventional-changelog-ember@^0.3.12: - version "0.3.12" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz#b7d31851756d0fcb49b031dffeb6afa93b202400" +conventional-changelog-core@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.2.tgz#de41e6b4a71011a18bcee58e744f6f8f0e7c29c0" + integrity sha512-cssjAKajxaOX5LNAJLB+UOcoWjAIBvXtDMedv/58G+YEmAXMNfC16mmPl0JDOuVJVfIqM0nqQiZ8UCm8IXbE0g== + dependencies: + conventional-changelog-writer "^4.0.5" + conventional-commits-parser "^3.0.2" + dateformat "^3.0.0" + get-pkg-repo "^1.0.0" + git-raw-commits "2.0.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^2.0.2" + lodash "^4.2.1" + normalize-package-data "^2.3.5" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^3.0.0" + +conventional-changelog-ember@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.2.tgz#284ffdea8c83ea8c210b65c5b4eb3e5cc0f4f51a" + integrity sha512-qtZbA3XefO/n6DDmkYywDYi6wDKNNc98MMl2F9PKSaheJ25Trpi3336W8fDlBhq0X+EJRuseceAdKLEMmuX2tg== dependencies: q "^1.5.1" -conventional-changelog-eslint@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz#b13cc7e4b472c819450ede031ff1a75c0e3d07d3" +conventional-changelog-eslint@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.2.tgz#e9eb088cda6be3e58b2de6a5aac63df0277f3cbe" + integrity sha512-Yi7tOnxjZLXlCYBHArbIAm8vZ68QUSygFS7PgumPRiEk+9NPUeucy5Wg9AAyKoBprSV3o6P7Oghh4IZSLtKCvQ== dependencies: q "^1.5.1" -conventional-changelog-express@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz#4a6295cb11785059fb09202180d0e59c358b9c2c" +conventional-changelog-express@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-2.0.1.tgz#fea2231d99a5381b4e6badb0c1c40a41fcacb755" + integrity sha512-G6uCuCaQhLxdb4eEfAIHpcfcJ2+ao3hJkbLrw/jSK/eROeNfnxCJasaWdDAfFkxsbpzvQT4W01iSynU3OoPLIw== dependencies: q "^1.5.1" -conventional-changelog-jquery@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510" +conventional-changelog-jquery@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.4.tgz#7eb598467b83db96742178e1e8d68598bffcd7ae" + integrity sha512-IVJGI3MseYoY6eybknnTf9WzeQIKZv7aNTm2KQsiFVJH21bfP2q7XVjfoMibdCg95GmgeFlaygMdeoDDa+ZbEQ== dependencies: - q "^1.4.1" + q "^1.5.1" -conventional-changelog-jscs@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c" - dependencies: - q "^1.4.1" - -conventional-changelog-jshint@^0.3.8: - version "0.3.8" - resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz#9051c1ac0767abaf62a31f74d2fe8790e8acc6c8" +conventional-changelog-jshint@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.1.tgz#11c0e8283abf156a4ff78e89be6fdedf9bd72202" + integrity sha512-kRFJsCOZzPFm2tzRHULWP4tauGMvccOlXYf3zGeuSW4U0mZhk5NsjnRZ7xFWrTFPlCLV+PNmHMuXp5atdoZmEg== dependencies: compare-func "^1.3.1" q "^1.5.1" -conventional-changelog-preset-loader@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz#40bb0f142cd27d16839ec6c74ee8db418099b373" - conventional-changelog-preset-loader@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.2.tgz#81d1a07523913f3d17da3a49f0091f967ad345b0" -conventional-changelog-writer@^3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz#4aecdfef33ff2a53bb0cf3b8071ce21f0e994634" - dependencies: - compare-func "^1.3.1" - conventional-commits-filter "^1.1.6" - dateformat "^3.0.0" - handlebars "^4.0.2" - json-stringify-safe "^5.0.1" - lodash "^4.2.1" - meow "^4.0.0" - semver "^5.5.0" - split "^1.0.0" - through2 "^2.0.0" +conventional-changelog-preset-loader@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.1.1.tgz#65bb600547c56d5627d23135154bcd9a907668c4" + integrity sha512-K4avzGMLm5Xw0Ek/6eE3vdOXkqnpf9ydb68XYmCc16cJ99XMMbc2oaNMuPwAsxVK6CC1yA4/I90EhmWNj0Q6HA== conventional-changelog-writer@^4.0.3: version "4.0.3" @@ -3161,28 +3196,38 @@ conventional-changelog-writer@^4.0.3: split "^1.0.0" through2 "^2.0.0" -conventional-changelog@^1.1.24: - version "1.1.24" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.24.tgz#3d94c29c960f5261c002678315b756cdd3d7d1f0" +conventional-changelog-writer@^4.0.5: + version "4.0.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.6.tgz#24db578ac8e7c89a409ef9bba12cf3c095990148" + integrity sha512-ou/sbrplJMM6KQpR5rKFYNVQYesFjN7WpNGdudQSWNi6X+RgyFUcSv871YBYkrUYV9EX8ijMohYVzn9RUb+4ag== dependencies: - conventional-changelog-angular "^1.6.6" - conventional-changelog-atom "^0.2.8" - conventional-changelog-codemirror "^0.3.8" - conventional-changelog-core "^2.0.11" - conventional-changelog-ember "^0.3.12" - conventional-changelog-eslint "^1.0.9" - conventional-changelog-express "^0.3.6" - conventional-changelog-jquery "^0.1.0" - conventional-changelog-jscs "^0.1.0" - conventional-changelog-jshint "^0.3.8" - conventional-changelog-preset-loader "^1.1.8" + compare-func "^1.3.1" + conventional-commits-filter "^2.0.2" + dateformat "^3.0.0" + handlebars "^4.1.0" + json-stringify-safe "^5.0.1" + lodash "^4.2.1" + meow "^4.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^3.0.0" -conventional-commits-filter@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz#4389cd8e58fe89750c0b5fb58f1d7f0cc8ad3831" +conventional-changelog@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.1.8.tgz#091382b5a0820bf8ec8e75ad2664a3688c31b07d" + integrity sha512-fb3/DOLLrQdNqN0yYn/lT6HcNsAa9A+VTDBqlZBMQcEPPIeJIMI+DBs3yu+eiYOLi22w9oShq3nn/zN6qm1Hmw== dependencies: - is-subset "^0.1.1" - modify-values "^1.0.0" + conventional-changelog-angular "^5.0.3" + conventional-changelog-atom "^2.0.1" + conventional-changelog-codemirror "^2.0.1" + conventional-changelog-conventionalcommits "^3.0.2" + conventional-changelog-core "^3.2.2" + conventional-changelog-ember "^2.0.2" + conventional-changelog-eslint "^3.0.2" + conventional-changelog-express "^2.0.1" + conventional-changelog-jquery "^3.0.4" + conventional-changelog-jshint "^2.0.1" + conventional-changelog-preset-loader "^2.1.1" conventional-commits-filter@^2.0.1: version "2.0.1" @@ -3191,17 +3236,13 @@ conventional-commits-filter@^2.0.1: is-subset "^0.1.1" modify-values "^1.0.0" -conventional-commits-parser@^2.1.7: - version "2.1.7" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e" +conventional-commits-filter@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz#f122f89fbcd5bb81e2af2fcac0254d062d1039c1" + integrity sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ== dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.0" - lodash "^4.2.1" - meow "^4.0.0" - split2 "^2.0.0" - through2 "^2.0.0" - trim-off-newlines "^1.0.0" + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" conventional-commits-parser@^3.0.1: version "3.0.1" @@ -3215,6 +3256,19 @@ conventional-commits-parser@^3.0.1: through2 "^2.0.0" trim-off-newlines "^1.0.0" +conventional-commits-parser@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.3.tgz#c3f972fd4e056aa8b9b4f5f3d0e540da18bf396d" + integrity sha512-KaA/2EeUkO4bKjinNfGUyqPTX/6w9JGshuQRik4r/wJz7rUw3+D3fDG6sZSEqJvKILzKXFQuFkpPLclcsAuZcg== + dependencies: + JSONStream "^1.0.4" + is-text-path "^2.0.0" + lodash "^4.2.1" + meow "^4.0.0" + split2 "^2.0.0" + through2 "^3.0.0" + trim-off-newlines "^1.0.0" + conventional-recommended-bump@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-4.0.4.tgz#05540584641d3da758c8863c09788fcaeb586872" @@ -4748,16 +4802,6 @@ git-raw-commits@2.0.0: split2 "^2.0.0" through2 "^2.0.0" -git-raw-commits@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff" - dependencies: - dargs "^4.0.1" - lodash.template "^4.0.2" - meow "^4.0.0" - split2 "^2.0.0" - through2 "^2.0.0" - git-remote-origin-url@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" @@ -4765,13 +4809,6 @@ git-remote-origin-url@^2.0.0: gitconfiglocal "^1.0.0" pify "^2.3.0" -git-semver-tags@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.3.6.tgz#357ea01f7280794fe0927f2806bee6414d2caba5" - dependencies: - meow "^4.0.0" - semver "^5.5.0" - git-semver-tags@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.2.tgz#f506ec07caade191ac0c8d5a21bdb8131b4934e3" @@ -4915,7 +4952,7 @@ handle-thing@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" -handlebars@^4.0.2, handlebars@^4.1.0: +handlebars@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" dependencies: @@ -5021,10 +5058,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@4.x.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" - hogan.js@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/hogan.js/-/hogan.js-3.0.2.tgz#4cd9e1abd4294146e7679e41d7898732b02c7bfd" @@ -5620,6 +5653,13 @@ is-text-path@^1.0.0: dependencies: text-extensions "^1.0.0" +is-text-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636" + integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== + dependencies: + text-extensions "^2.0.0" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -5648,12 +5688,6 @@ isarray@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7" -isemail@3.x.x: - version "3.2.0" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" - dependencies: - punycode "2.x.x" - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -6070,14 +6104,6 @@ jest@^24.7.1: import-local "^2.0.0" jest-cli "^24.7.1" -joi@^11.1.1: - version "11.4.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb" - dependencies: - hoek "4.x.x" - isemail "3.x.x" - topo "2.x.x" - js-beautify@^1.6.12: version "1.9.0" resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.9.0.tgz#2562fcdee340f9f962ae2ec4a8a40e7aaa6d964f" @@ -6472,6 +6498,11 @@ lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= + lodash.kebabcase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" @@ -6696,9 +6727,10 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" -medium-zoom@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/medium-zoom/-/medium-zoom-0.4.0.tgz#8e13c9b754903c0c903220611af0d3cd373a4222" +medium-zoom@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/medium-zoom/-/medium-zoom-1.0.4.tgz#b1063093f81151a19989489589edf28e6090630c" + integrity sha512-BjE+00gQku3XQfgHDcqyYwQaBtFddzh6Lnj1RZOliqJ9HS0mh/P2IaqVJ25/j9EbnjAUf27mLeLZBRxnd00bfA== mem@^4.0.0: version "4.1.0" @@ -8097,9 +8129,10 @@ prettier@1.16.3: version "1.16.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" -pretty-bytes@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" +pretty-bytes@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.2.0.tgz#96c92c6e95a0b35059253fb33c03e260d40f5a1f" + integrity sha512-ujANBhiUsl9AhREUDUEY1GPOharMGm8x8juS7qOHybcLi7XsKfrYQ88hSly1l2i0klXHTDYrlL8ihMCG55Dc3w== pretty-error@^2.0.2: version "2.1.1" @@ -8253,15 +8286,15 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -q@^1.1.2, q@^1.4.1, q@^1.5.1: +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + +q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -8390,7 +8423,7 @@ read-pkg-up@^4.0.0: find-up "^3.0.0" read-pkg "^3.0.0" -read-pkg@^1.0.0, read-pkg@^1.1.0: +read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" dependencies: @@ -8424,6 +8457,15 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" +"readable-stream@2 || 3": + version "3.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@^3.0.6, readable-stream@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.2.0.tgz#de17f229864c120a9f56945756e4f32c4045245d" @@ -8493,6 +8535,11 @@ regenerator-runtime@^0.12.0: version "0.12.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regenerator-transform@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb" @@ -9270,7 +9317,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^3.2.2: +stringify-object@^3.2.2, stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" dependencies: @@ -9510,6 +9557,11 @@ text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" +text-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-2.0.0.tgz#43eabd1b495482fae4a2bf65e5f56c29f69220f6" + integrity sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ== + text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -9525,6 +9577,13 @@ through2@^2.0.0, through2@^2.0.2: readable-stream "~2.3.6" xtend "~4.0.1" +through2@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + dependencies: + readable-stream "2 || 3" + through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -9599,12 +9658,6 @@ toml@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" -topo@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" - dependencies: - hoek "4.x.x" - toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" @@ -10261,109 +10314,131 @@ wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" -workbox-background-sync@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz#6609a0fac9eda336a7c52e6aa227ba2ae532ad94" +workbox-background-sync@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" + integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-broadcast-cache-update@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz#3f5dff22ada8c93e397fb38c1dc100606a7b92da" +workbox-broadcast-update@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" + integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-build@^3.1.0: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-3.6.3.tgz#77110f9f52dc5d82fa6c1c384c6f5e2225adcbd8" +workbox-build@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" + integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== dependencies: - babel-runtime "^6.26.0" - common-tags "^1.4.0" + "@babel/runtime" "^7.3.4" + "@hapi/joi" "^15.0.0" + common-tags "^1.8.0" fs-extra "^4.0.2" - glob "^7.1.2" - joi "^11.1.1" + glob "^7.1.3" lodash.template "^4.4.0" - pretty-bytes "^4.0.2" - stringify-object "^3.2.2" + pretty-bytes "^5.1.0" + stringify-object "^3.3.0" strip-comments "^1.0.2" - workbox-background-sync "^3.6.3" - workbox-broadcast-cache-update "^3.6.3" - workbox-cache-expiration "^3.6.3" - workbox-cacheable-response "^3.6.3" - workbox-core "^3.6.3" - workbox-google-analytics "^3.6.3" - workbox-navigation-preload "^3.6.3" - workbox-precaching "^3.6.3" - workbox-range-requests "^3.6.3" - workbox-routing "^3.6.3" - workbox-strategies "^3.6.3" - workbox-streams "^3.6.3" - workbox-sw "^3.6.3" + workbox-background-sync "^4.3.1" + workbox-broadcast-update "^4.3.1" + workbox-cacheable-response "^4.3.1" + workbox-core "^4.3.1" + workbox-expiration "^4.3.1" + workbox-google-analytics "^4.3.1" + workbox-navigation-preload "^4.3.1" + workbox-precaching "^4.3.1" + workbox-range-requests "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + workbox-streams "^4.3.1" + workbox-sw "^4.3.1" + workbox-window "^4.3.1" -workbox-cache-expiration@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz#4819697254a72098a13f94b594325a28a1e90372" +workbox-cacheable-response@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" + integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-cacheable-response@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz#869f1a68fce9063f6869ddbf7fa0a2e0a868b3aa" +workbox-core@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" + integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== + +workbox-expiration@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" + integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-core@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-3.6.3.tgz#69abba70a4f3f2a5c059295a6f3b7c62bd00e15c" - -workbox-google-analytics@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz#99df2a3d70d6e91961e18a6752bac12e91fbf727" +workbox-google-analytics@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" + integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== dependencies: - workbox-background-sync "^3.6.3" - workbox-core "^3.6.3" - workbox-routing "^3.6.3" - workbox-strategies "^3.6.3" + workbox-background-sync "^4.3.1" + workbox-core "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" -workbox-navigation-preload@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz#a2c34eb7c17e7485b795125091215f757b3c4964" +workbox-navigation-preload@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" + integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-precaching@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-3.6.3.tgz#5341515e9d5872c58ede026a31e19bafafa4e1c1" +workbox-precaching@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" + integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-range-requests@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz#3cc21cba31f2dd8c43c52a196bcc8f6cdbcde803" +workbox-range-requests@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" + integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-routing@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-3.6.3.tgz#659cd8f9274986cfa98fda0d050de6422075acf7" +workbox-routing@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" + integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-strategies@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-3.6.3.tgz#11a0dc249a7bc23d3465ec1322d28fa6643d64a0" +workbox-strategies@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" + integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-streams@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-3.6.3.tgz#beaea5d5b230239836cc327b07d471aa6101955a" +workbox-streams@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" + integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-sw@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-3.6.3.tgz#278ea4c1831b92bbe2d420da8399176c4b2789ff" +workbox-sw@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" + integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== + +workbox-window@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" + integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== + dependencies: + workbox-core "^4.3.1" worker-farm@^1.5.2: version "1.6.0" From 78aecbd8d30bc2bf5e88d613569f897fb5f0aa8e Mon Sep 17 00:00:00 2001 From: Daniel Madalitso Phiri Date: Sun, 28 Jul 2019 19:47:44 +0200 Subject: [PATCH 185/233] docs: update GA Documentation (close: #1687) (#1724) Changed wording to accomadate already anaonymized IPs --- packages/docs/docs/plugin/official/plugin-google-analytics.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/docs/docs/plugin/official/plugin-google-analytics.md b/packages/docs/docs/plugin/official/plugin-google-analytics.md index 94f52e14..0f569599 100644 --- a/packages/docs/docs/plugin/official/plugin-google-analytics.md +++ b/packages/docs/docs/plugin/official/plugin-google-analytics.md @@ -31,8 +31,7 @@ module.exports = { ``` ::: tip -Please be aware of [GDPR (2018 reform of EU data protection rules)](https://ec.europa.eu/commission/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules_en) and consider setting Google Analytics to [anonymize IPs](https://support.google.com/analytics/answer/2763052?hl=en) where appropriate and/or needed. -::: +Please be aware of [GDPR (2018 reform of EU data protection rules)](https://ec.europa.eu/commission/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules_en) as IPs are anonymized automatically. ::: ## Options From 52f421bc3bb5887dc75a789080a98574fbeb0dde Mon Sep 17 00:00:00 2001 From: Colin Kinloch Date: Sun, 28 Jul 2019 19:03:12 +0100 Subject: [PATCH 186/233] fix($core): prioritise vuepress dependencies over cwd node_modules (close: #1708) (#1720) --- packages/@vuepress/core/lib/node/webpack/createBaseConfig.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js b/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js index 81733733..da457f33 100644 --- a/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js +++ b/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js @@ -310,5 +310,5 @@ function getLastCommitHash () { } function getModulePaths () { - return [path.resolve(process.cwd(), 'node_modules')].concat(module.paths) + return module.paths.concat([path.resolve(process.cwd(), 'node_modules')]) } From e3393e336900256632f60d7f06c628282bad22e2 Mon Sep 17 00:00:00 2001 From: Kid Date: Mon, 29 Jul 2019 02:04:22 +0800 Subject: [PATCH 187/233] fix($plugin-medium-zoom): disable zoom for links (#1719) --- packages/@vuepress/plugin-medium-zoom/index.js | 2 +- packages/docs/docs/plugin/official/plugin-medium-zoom.md | 4 ++-- packages/docs/docs/zh/plugin/official/plugin-medium-zoom.md | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/@vuepress/plugin-medium-zoom/index.js b/packages/@vuepress/plugin-medium-zoom/index.js index 556a7e04..5dbad710 100644 --- a/packages/@vuepress/plugin-medium-zoom/index.js +++ b/packages/@vuepress/plugin-medium-zoom/index.js @@ -2,7 +2,7 @@ const { path } = require('@vuepress/shared-utils') module.exports = (options, context) => ({ define: { - SELECTOR: options.selector || '.theme-default-content img', + SELECTOR: options.selector || '.theme-default-content :not(a) > img', OPTIONS: options.options }, clientRootMixin: path.resolve(__dirname, 'clientRootMixin.js') diff --git a/packages/docs/docs/plugin/official/plugin-medium-zoom.md b/packages/docs/docs/plugin/official/plugin-medium-zoom.md index 3b79b464..c50880e6 100644 --- a/packages/docs/docs/plugin/official/plugin-medium-zoom.md +++ b/packages/docs/docs/plugin/official/plugin-medium-zoom.md @@ -20,7 +20,7 @@ yarn add -D @vuepress/plugin-medium-zoom@next ```javascript module.exports = { - plugins: ['@vuepress/medium-zoom'] + plugins: ['@vuepress/medium-zoom'] } ``` @@ -46,7 +46,7 @@ module.exports = { ### selector - Type: `string` -- Default: `.theme-default-content img` +- Default: `.theme-default-content :not(a) > img` Note that `.theme-default-content` is the class name of [``](../../guide/using-vue.md#content) component in default theme. diff --git a/packages/docs/docs/zh/plugin/official/plugin-medium-zoom.md b/packages/docs/docs/zh/plugin/official/plugin-medium-zoom.md index db1e6f13..a6cf92c1 100644 --- a/packages/docs/docs/zh/plugin/official/plugin-medium-zoom.md +++ b/packages/docs/docs/zh/plugin/official/plugin-medium-zoom.md @@ -22,7 +22,7 @@ yarn add -D @vuepress/plugin-medium-zoom@next ```javascript module.exports = { - plugins: ['@vuepress/medium-zoom'] + plugins: ['@vuepress/medium-zoom'] } ``` @@ -45,10 +45,10 @@ module.exports = { ## 选项 -### selector +### selector - 类型: `string` -- 默认值: `.theme-default-content img` +- 默认值: `.theme-default-content :not(a) > img` 值得注意的是, `.theme-default-content` 是默认主题添加给 [``](../../guide/using-vue.md#content) 组件的 class name。 From 0624828e0734ea09086987c3cb036e0861929d8b Mon Sep 17 00:00:00 2001 From: Oscar Date: Mon, 29 Jul 2019 19:44:36 +0200 Subject: [PATCH 188/233] fix($theme-default): sidebarDepth: 0 not working in YAML (close: #1701) (#1702) --- .../theme-default/components/SidebarLink.vue | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/@vuepress/theme-default/components/SidebarLink.vue b/packages/@vuepress/theme-default/components/SidebarLink.vue index 243ce763..bc5de287 100644 --- a/packages/@vuepress/theme-default/components/SidebarLink.vue +++ b/packages/@vuepress/theme-default/components/SidebarLink.vue @@ -32,12 +32,13 @@ export default { ? renderExternal(h, item.path, item.title || item.path) : renderLink(h, item.path, item.title || item.path, active) - const configDepth = $page.frontmatter.sidebarDepth - || sidebarDepth - || $themeLocaleConfig.sidebarDepth - || $themeConfig.sidebarDepth - - const maxDepth = configDepth == null ? 1 : configDepth + const maxDepth = [ + $page.frontmatter.sidebarDepth, + sidebarDepth, + $themeLocaleConfig.sidebarDepth, + $themeConfig.sidebarDepth, + 1 + ].find(depth => depth !== undefined); const displayAllHeaders = $themeLocaleConfig.displayAllHeaders || $themeConfig.displayAllHeaders From d87124c0fcd1462989798daa674e9efeeb7bcfc5 Mon Sep 17 00:00:00 2001 From: jess Date: Mon, 29 Jul 2019 10:45:05 -0700 Subject: [PATCH 189/233] chore: activating Open Collective (#1704) --- README.md | 32 +++++++++++++++++++++++++++++++- packages/vuepress/package.json | 10 +++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 55c47d29..b607961d 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@

    - Downloads + Downloads Version npm next version License @@ -52,6 +52,36 @@ Thank you to all the people who already contributed to VuePress! ![contributors](https://opencollective.com/vuepress/contributors.svg?width=890) +## Contributors + +### Code Contributors + +This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)]. + + +### Financial Contributors + +Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/vuepress/contribute)] + +#### Individuals + + + +#### Organizations + +Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/vuepress/contribute)] + + + + + + + + + + + + ## License [MIT](https://github.com/vuejs/vuepress/blob/master/LICENSE) diff --git a/packages/vuepress/package.json b/packages/vuepress/package.json index 80def06d..8885dbde 100644 --- a/packages/vuepress/package.json +++ b/packages/vuepress/package.json @@ -8,6 +8,9 @@ "url": "git+https://github.com/vuejs/vuepress.git", "directory": "packages/vuepress" }, + "scripts": { + "postinstall": "opencollective-postinstall || true" + }, "keywords": [ "documentation", "vue", @@ -32,7 +35,12 @@ "@vuepress/core": "^1.0.2", "@vuepress/theme-default": "^1.0.2", "cac": "^6.3.9", - "envinfo": "^7.2.0" + "envinfo": "^7.2.0", + "opencollective-postinstall": "^2.0.2" + }, + "collective": { + "type": "opencollective", + "url": "https://opencollective.com/vuepress" }, "engines": { "node": ">=8.6" From 6460b0c8408b1dc01cf0d4c6d5ee3fa47c64ed89 Mon Sep 17 00:00:00 2001 From: Massimo Siani Date: Mon, 29 Jul 2019 19:48:59 +0200 Subject: [PATCH 190/233] fix($core): transpile all scripts under core (close: #1623) (#1685) --- packages/@vuepress/core/lib/node/webpack/createBaseConfig.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js b/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js index da457f33..6c702e87 100644 --- a/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js +++ b/packages/@vuepress/core/lib/node/webpack/createBaseConfig.js @@ -144,6 +144,10 @@ module.exports = function createBaseConfig (context, isServer) { if (/\.vue\.js$/.test(filePath)) { return false } + // transpile all core files + if (/(@vuepress|vuepress-)\/.*\.js$/.test(filePath)) { + return false + } // Don't transpile node_modules return /node_modules/.test(filePath) }).end() From 2c93017d706570dd2bd58e35892b2b5c67b9cebb Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Tue, 30 Jul 2019 02:04:20 +0800 Subject: [PATCH 191/233] chore: remove duplicate contributor diagram --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index b607961d..d601fd76 100644 --- a/README.md +++ b/README.md @@ -48,10 +48,6 @@ If you intend to make `"substantial"` changes to VuePress or its documentation, If you have a VuePress-related project/component/tool, add it with a pull request to [this curated list](https://github.com/ulivz/awesome-vuepress)! -Thank you to all the people who already contributed to VuePress! - -![contributors](https://opencollective.com/vuepress/contributors.svg?width=890) - ## Contributors ### Code Contributors From 3d119903842a03cede31d582b4ed887f2da644ca Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Tue, 30 Jul 2019 02:04:43 +0800 Subject: [PATCH 192/233] chore: lockfile maintenance --- yarn.lock | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/yarn.lock b/yarn.lock index 6d688f16..4649c409 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7419,6 +7419,11 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opencollective-postinstall@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" + integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== + opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" From 6827bd115463a4609ef71f3fabfd0507d2029194 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Tue, 30 Jul 2019 02:10:23 +0800 Subject: [PATCH 193/233] v1.0.3 --- lerna.json | 2 +- packages/@vuepress/core/package.json | 12 ++++++------ packages/@vuepress/markdown-loader/package.json | 4 ++-- packages/@vuepress/markdown/package.json | 6 +++--- .../plugin-active-header-links/package.json | 2 +- packages/@vuepress/plugin-back-to-top/package.json | 2 +- .../@vuepress/plugin-google-analytics/package.json | 2 +- .../@vuepress/plugin-last-updated/package.json | 2 +- packages/@vuepress/plugin-medium-zoom/package.json | 2 +- packages/@vuepress/plugin-nprogress/package.json | 2 +- packages/@vuepress/plugin-pwa/package.json | 4 ++-- .../plugin-register-components/package.json | 4 ++-- packages/@vuepress/plugin-search/package.json | 2 +- packages/@vuepress/shared-utils/package.json | 2 +- packages/@vuepress/test-utils/package.json | 6 +++--- packages/@vuepress/theme-default/package.json | 8 ++++---- packages/@vuepress/theme-vue/package.json | 4 ++-- packages/docs/package.json | 14 +++++++------- packages/vuepress/package.json | 6 +++--- 19 files changed, 43 insertions(+), 43 deletions(-) diff --git a/lerna.json b/lerna.json index 8034e98c..fd4ff6c1 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,5 @@ "lerna": "2.5.1", "npmClient": "yarn", "useWorkspaces": true, - "version": "1.0.2" + "version": "1.0.3" } diff --git a/packages/@vuepress/core/package.json b/packages/@vuepress/core/package.json index 14107077..f4a15f8f 100644 --- a/packages/@vuepress/core/package.json +++ b/packages/@vuepress/core/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/core", - "version": "1.0.2", + "version": "1.0.3", "description": "Minimalistic doc generator with Vue component based layout system", "main": "lib/index.js", "repository": { @@ -31,11 +31,11 @@ "dependencies": { "@babel/core": "^7.0.0", "@vue/babel-preset-app": "^3.1.1", - "@vuepress/markdown": "^1.0.2", - "@vuepress/markdown-loader": "^1.0.2", - "@vuepress/plugin-last-updated": "^1.0.2", - "@vuepress/plugin-register-components": "^1.0.2", - "@vuepress/shared-utils": "^1.0.2", + "@vuepress/markdown": "^1.0.3", + "@vuepress/markdown-loader": "^1.0.3", + "@vuepress/plugin-last-updated": "^1.0.3", + "@vuepress/plugin-register-components": "^1.0.3", + "@vuepress/shared-utils": "^1.0.3", "autoprefixer": "^9.5.1", "babel-loader": "^8.0.4", "cache-loader": "^3.0.0", diff --git a/packages/@vuepress/markdown-loader/package.json b/packages/@vuepress/markdown-loader/package.json index 8f2d2c46..d4c351ba 100644 --- a/packages/@vuepress/markdown-loader/package.json +++ b/packages/@vuepress/markdown-loader/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/markdown-loader", - "version": "1.0.2", + "version": "1.0.3", "description": "markdown-loader for vuepress", "main": "index.js", "publishConfig": { @@ -18,7 +18,7 @@ "generator" ], "dependencies": { - "@vuepress/markdown": "^1.0.2", + "@vuepress/markdown": "^1.0.3", "loader-utils": "^1.1.0", "lru-cache": "^5.1.1" }, diff --git a/packages/@vuepress/markdown/package.json b/packages/@vuepress/markdown/package.json index f3fd671f..26287bd4 100644 --- a/packages/@vuepress/markdown/package.json +++ b/packages/@vuepress/markdown/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/markdown", - "version": "1.0.2", + "version": "1.0.3", "description": "markdown for vuepress", "main": "index.js", "publishConfig": { @@ -19,7 +19,7 @@ "markdown" ], "dependencies": { - "@vuepress/shared-utils": "^1.0.2", + "@vuepress/shared-utils": "^1.0.3", "markdown-it": "^8.4.1", "markdown-it-anchor": "^5.0.2", "markdown-it-chain": "^1.3.0", @@ -28,7 +28,7 @@ "prismjs": "^1.13.0" }, "devDependencies": { - "@vuepress/test-utils": "^1.0.2" + "@vuepress/test-utils": "^1.0.3" }, "author": "Evan You", "maintainers": [ diff --git a/packages/@vuepress/plugin-active-header-links/package.json b/packages/@vuepress/plugin-active-header-links/package.json index 96763da3..3adc11cb 100644 --- a/packages/@vuepress/plugin-active-header-links/package.json +++ b/packages/@vuepress/plugin-active-header-links/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-active-header-links", - "version": "1.0.2", + "version": "1.0.3", "description": "active-header-links plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-back-to-top/package.json b/packages/@vuepress/plugin-back-to-top/package.json index cff44af6..a2163966 100644 --- a/packages/@vuepress/plugin-back-to-top/package.json +++ b/packages/@vuepress/plugin-back-to-top/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-back-to-top", - "version": "1.0.2", + "version": "1.0.3", "description": "back-to-top plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-google-analytics/package.json b/packages/@vuepress/plugin-google-analytics/package.json index 88ad4e2b..72b5d0e0 100644 --- a/packages/@vuepress/plugin-google-analytics/package.json +++ b/packages/@vuepress/plugin-google-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-google-analytics", - "version": "1.0.2", + "version": "1.0.3", "description": "google-analytics plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-last-updated/package.json b/packages/@vuepress/plugin-last-updated/package.json index b0a2f54d..64aabf7a 100644 --- a/packages/@vuepress/plugin-last-updated/package.json +++ b/packages/@vuepress/plugin-last-updated/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-last-updated", - "version": "1.0.2", + "version": "1.0.3", "description": "last-updated plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-medium-zoom/package.json b/packages/@vuepress/plugin-medium-zoom/package.json index 3b9472d5..e9a831ab 100644 --- a/packages/@vuepress/plugin-medium-zoom/package.json +++ b/packages/@vuepress/plugin-medium-zoom/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-medium-zoom", - "version": "1.0.2", + "version": "1.0.3", "description": "medium-zoom plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-nprogress/package.json b/packages/@vuepress/plugin-nprogress/package.json index 56ce4a66..eaa2080b 100644 --- a/packages/@vuepress/plugin-nprogress/package.json +++ b/packages/@vuepress/plugin-nprogress/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-nprogress", - "version": "1.0.2", + "version": "1.0.3", "description": "nprogress plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/plugin-pwa/package.json b/packages/@vuepress/plugin-pwa/package.json index 6bfe7ade..3f61b94f 100644 --- a/packages/@vuepress/plugin-pwa/package.json +++ b/packages/@vuepress/plugin-pwa/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-pwa", - "version": "1.0.2", + "version": "1.0.3", "description": "pwa plugin for vuepress", "main": "index.js", "publishConfig": { @@ -18,7 +18,7 @@ "generator" ], "dependencies": { - "@vuepress/shared-utils": "^1.0.2", + "@vuepress/shared-utils": "^1.0.3", "register-service-worker": "^1.5.2", "workbox-build": "^4.3.1" }, diff --git a/packages/@vuepress/plugin-register-components/package.json b/packages/@vuepress/plugin-register-components/package.json index 117916df..4a1559dc 100644 --- a/packages/@vuepress/plugin-register-components/package.json +++ b/packages/@vuepress/plugin-register-components/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-register-components", - "version": "1.0.2", + "version": "1.0.3", "description": "register-global-components plugin for vuepress", "main": "index.js", "publishConfig": { @@ -24,6 +24,6 @@ }, "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/plugin-register-components#readme", "dependencies": { - "@vuepress/shared-utils": "^1.0.2" + "@vuepress/shared-utils": "^1.0.3" } } diff --git a/packages/@vuepress/plugin-search/package.json b/packages/@vuepress/plugin-search/package.json index 19e5702f..f93e1944 100644 --- a/packages/@vuepress/plugin-search/package.json +++ b/packages/@vuepress/plugin-search/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/plugin-search", - "version": "1.0.2", + "version": "1.0.3", "description": "search plugin for vuepress", "main": "index.js", "publishConfig": { diff --git a/packages/@vuepress/shared-utils/package.json b/packages/@vuepress/shared-utils/package.json index 81b66382..05b029ba 100644 --- a/packages/@vuepress/shared-utils/package.json +++ b/packages/@vuepress/shared-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/shared-utils", - "version": "1.0.2", + "version": "1.0.3", "description": "shared-utils for vuepress", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@vuepress/test-utils/package.json b/packages/@vuepress/test-utils/package.json index 5c5c4aa3..6282b929 100644 --- a/packages/@vuepress/test-utils/package.json +++ b/packages/@vuepress/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/test-utils", - "version": "1.0.2", + "version": "1.0.3", "description": "test-utils for vuepress", "main": "index.js", "publishConfig": { @@ -22,8 +22,8 @@ "@babel/preset-env": "^7.0.0", "@types/jest": "^24.0.9", "@vue/test-utils": "^1.0.0-beta.29", - "@vuepress/core": "^1.0.2", - "@vuepress/shared-utils": "^1.0.2", + "@vuepress/core": "^1.0.3", + "@vuepress/shared-utils": "^1.0.3", "babel-jest": "^24.7.1", "execa": "^1.0.0", "jest": "^24.7.1", diff --git a/packages/@vuepress/theme-default/package.json b/packages/@vuepress/theme-default/package.json index 6a79dd95..1cd4c534 100644 --- a/packages/@vuepress/theme-default/package.json +++ b/packages/@vuepress/theme-default/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/theme-default", - "version": "1.0.2", + "version": "1.0.3", "description": "Default theme for VuePress", "main": "index.js", "publishConfig": { @@ -30,9 +30,9 @@ }, "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/theme-default#readme", "dependencies": { - "@vuepress/plugin-active-header-links": "^1.0.2", - "@vuepress/plugin-nprogress": "^1.0.2", - "@vuepress/plugin-search": "^1.0.2", + "@vuepress/plugin-active-header-links": "^1.0.3", + "@vuepress/plugin-nprogress": "^1.0.3", + "@vuepress/plugin-search": "^1.0.3", "docsearch.js": "^2.5.2", "stylus": "^0.54.5", "stylus-loader": "^3.0.2", diff --git a/packages/@vuepress/theme-vue/package.json b/packages/@vuepress/theme-vue/package.json index 16647035..88c0a4fd 100644 --- a/packages/@vuepress/theme-vue/package.json +++ b/packages/@vuepress/theme-vue/package.json @@ -1,6 +1,6 @@ { "name": "@vuepress/theme-vue", - "version": "1.0.2", + "version": "1.0.3", "description": "VuePress theme for official Vue projects", "main": "index.js", "publishConfig": { @@ -30,6 +30,6 @@ }, "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/theme-vue#readme", "dependencies": { - "@vuepress/theme-default": "^1.0.2" + "@vuepress/theme-default": "^1.0.3" } } diff --git a/packages/docs/package.json b/packages/docs/package.json index 9e6bd529..89610a39 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "1.0.2", + "version": "1.0.3", "name": "docs", "description": "docs of VuePress", "scripts": { @@ -25,13 +25,13 @@ }, "homepage": "https://github.com/vuejs/vuepress#readme", "devDependencies": { - "@vuepress/plugin-back-to-top": "^1.0.2", - "@vuepress/plugin-google-analytics": "^1.0.2", - "@vuepress/plugin-medium-zoom": "^1.0.2", - "@vuepress/plugin-pwa": "^1.0.2", - "@vuepress/theme-vue": "^1.0.2", + "@vuepress/plugin-back-to-top": "^1.0.3", + "@vuepress/plugin-google-analytics": "^1.0.3", + "@vuepress/plugin-medium-zoom": "^1.0.3", + "@vuepress/plugin-pwa": "^1.0.3", + "@vuepress/theme-vue": "^1.0.3", "vue-toasted": "^1.1.25", - "vuepress": "^1.0.2", + "vuepress": "^1.0.3", "vuepress-plugin-flowchart": "^1.4.2" } } diff --git a/packages/vuepress/package.json b/packages/vuepress/package.json index 8885dbde..2d243bea 100644 --- a/packages/vuepress/package.json +++ b/packages/vuepress/package.json @@ -1,6 +1,6 @@ { "name": "vuepress", - "version": "1.0.2", + "version": "1.0.3", "description": "Minimalistic doc generator with Vue component based layout system", "main": "index.js", "repository": { @@ -32,8 +32,8 @@ }, "homepage": "https://github.com/vuejs/vuepress#readme", "dependencies": { - "@vuepress/core": "^1.0.2", - "@vuepress/theme-default": "^1.0.2", + "@vuepress/core": "^1.0.3", + "@vuepress/theme-default": "^1.0.3", "cac": "^6.3.9", "envinfo": "^7.2.0", "opencollective-postinstall": "^2.0.2" From 702e94746fae4b67478ab480163020a83dfd4aef Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Tue, 30 Jul 2019 02:11:36 +0800 Subject: [PATCH 194/233] chore: 1.0.3 changelog --- CHANGELOG.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c1838fd..dbb50339 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,27 @@ +# [](https://github.com/vuejs/vuepress/compare/v1.0.3...v) (2019-07-29) + + + +## [1.0.3](https://github.com/vuejs/vuepress/compare/v1.0.2...v1.0.3) (2019-07-29) + + +### Bug Fixes + +* **$core:** `'[Vue warn]: Unknown custom element'` when using `` in a custom page without markdown ([#1699](https://github.com/vuejs/vuepress/issues/1699)) ([2a59800](https://github.com/vuejs/vuepress/commit/2a59800)), closes [#1173](https://github.com/vuejs/vuepress/issues/1173) [#1426](https://github.com/vuejs/vuepress/issues/1426) +* **$core:** prioritise vuepress dependencies over cwd node_modules (close: [#1708](https://github.com/vuejs/vuepress/issues/1708)) ([#1720](https://github.com/vuejs/vuepress/issues/1720)) ([52f421b](https://github.com/vuejs/vuepress/commit/52f421b)) +* **$core:** transpile all scripts under core (close: [#1623](https://github.com/vuejs/vuepress/issues/1623)) ([#1685](https://github.com/vuejs/vuepress/issues/1685)) ([6460b0c](https://github.com/vuejs/vuepress/commit/6460b0c)) +* **$plugin-medium-zoom:** disable zoom for links ([#1719](https://github.com/vuejs/vuepress/issues/1719)) ([e3393e3](https://github.com/vuejs/vuepress/commit/e3393e3)) +* **$theme-default:** `sidebarDepth: 0` not working in YAML frontmatter (close: [#1701](https://github.com/vuejs/vuepress/issues/1701)) ([#1702](https://github.com/vuejs/vuepress/issues/1702)) ([0624828](https://github.com/vuejs/vuepress/commit/0624828)) + + +### Features + +* **$theme-default:** support custom URL scheme for external links ([#1677](https://github.com/vuejs/vuepress/issues/1677)) ([27f005b](https://github.com/vuejs/vuepress/commit/27f005b)) +* **$theme-default:** use router for Algolia search to reach no refresh ([#1706](https://github +.com/vuejs/vuepress/issues/1706)) ([644142b](https://github.com/vuejs/vuepress/commit/644142b)) + + + ## [1.0.2](https://github.com/vuejs/vuepress/compare/v1.0.1...v1.0.2) (2019-06-22) From 3b87a54354829a86440827aa7f16a4e5be6a33c0 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Sun, 4 Aug 2019 22:19:12 -0400 Subject: [PATCH 195/233] Create CODE_OF_CONDUCT.md (#1736) --- CODE_OF_CONDUCT.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..2c495d25 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at vuepresscore@gmail.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq From 93a1ec05cc36b8c9c5dbdad2841b9b5c563f16b8 Mon Sep 17 00:00:00 2001 From: Billyyyyy3320 Date: Mon, 5 Aug 2019 23:42:16 +0800 Subject: [PATCH 196/233] chore: fix script typo (#1740) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dd0eec3c..504dd173 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "description": "Minimalistic doc generator with Vue component based layout system", "scripts": { "bootstrap": "yarn && lerna bootstrap && yarn tsc", - "claan": "lerna clean && rm -rf node_modules", + "clean": "lerna clean && rm -rf node_modules", "boot": "node scripts/bootstrap.js", "remote-version": "node scripts/remote-version.js", "dev": "yarn tsc && yarn dev:docs", From 0eafea9c593f924e597cbfbd7503184eeaf10843 Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Tue, 6 Aug 2019 13:25:11 +0200 Subject: [PATCH 197/233] chore: remove next badge from readme (#1746) --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index d601fd76..d51c54ad 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@

    Downloads Version - npm next version License vuepress channel on Discord

    From d50fa1bc17c02d32db0f13900f857da60dd39ae6 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Wed, 7 Aug 2019 11:02:34 -0400 Subject: [PATCH 198/233] docs: adding all-contributors table for core team members (#1744) * adding all-contributors table for core team members * chore: add self to core contributors * Add Franck to core contributors * chore: add @sobolevn to core contributors --- .all-contributorsrc | 74 +++++++++++++++++++++++++++++++++++++++++++++ README.md | 22 +++++++++++++- package.json | 3 +- 3 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 .all-contributorsrc diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 00000000..aef9b2e6 --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,74 @@ +{ + "projectName": "VuePress", + "projectOwner": "Ulivz", + "repoType": "github", + "repoHost": "https://github.com", + "files": [ + "README.md" + ], + "imageSize": 100, + "commit": false, + "commitConvention": "none", + "contributors": [ + { + "login": "yyx990803", + "name": "Evan You", + "avatar_url": "https://avatars1.githubusercontent.com/u/499550?v=4", + "profile": "http://evanyou.me", + "contributions": [ + "code" + ] + }, + { + "login": "ulivz", + "name": "ULIVZ", + "avatar_url": "https://avatars1.githubusercontent.com/u/23133919?v=4", + "profile": "http://ulivz.com", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "jlooper", + "name": "Jen Looper", + "avatar_url": "https://avatars2.githubusercontent.com/u/1450004?v=4", + "profile": "http://www.jenlooper.com", + "contributions": [ + "doc", + "design" + ] + }, + { + "login": "sarahdayan", + "name": "Sarah Dayan", + "avatar_url": "https://avatars0.githubusercontent.com/u/5370675?v=4", + "profile": "https://frontstuff.io/", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "kefranabg", + "name": "Franck Abgrall", + "avatar_url": "https://avatars3.githubusercontent.com/u/9840435?v=4", + "profile": "https://www.franck-abgrall.me/", + "contributions": [ + "code", + "question" + ] + }, + { + "login": "sobolevn", + "name": "Nikita Sobolev", + "avatar_url": "https://avatars1.githubusercontent.com/u/4660275?v=4", + "profile": "https://sobolevn.me", + "contributions": [ + "code", + "doc" + ] + } + ], + "contributorsPerLine": 7 +} diff --git a/README.md b/README.md index d51c54ad..86037680 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ This is the branch for `VuePress 1.x` and docs are available at https://v1.vuepr ## Contribution -``` bash +```bash yarn bootstrap # Install and link dependencies for this lerna repo yarn dev # serves VuePress' own docs with itself yarn test # make sure your code change pass the test @@ -49,6 +49,26 @@ If you have a VuePress-related project/component/tool, add it with a pull reques ## Contributors +### Core Team + + + + + + + + + + + + + +
    Evan You
    Evan You

    💻
    ULIVZ
    ULIVZ

    💻 📖
    Jen Looper
    Jen Looper

    📖 🎨
    Sarah Dayan
    Sarah Dayan

    💻 📖
    Franck Abgrall
    Franck Abgrall

    💻 💬
    Nikita Sobolev
    Nikita Sobolev

    💻 📖
    + + + + + ### Code Contributors This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)]. diff --git a/package.json b/package.json index 504dd173..148676f6 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "@types/semver": "^6.0.0", "@types/hash-sum": "^1.0.0", "@types/globby": "^9.1.0", - "@types/escape-html": "^0.0.20" + "@types/escape-html": "^0.0.20", + "all-contributors-cli": "^6.8.1" } } From f6a2fb9f72a84eb4da9092a75eeb806abcb72946 Mon Sep 17 00:00:00 2001 From: ntnyq Date: Wed, 7 Aug 2019 23:24:30 +0800 Subject: [PATCH 199/233] docs: fix typo (#1742) --- packages/docs/docs/zh/config/README.md | 2 +- packages/docs/docs/zh/plugin/option-api.md | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/docs/docs/zh/config/README.md b/packages/docs/docs/zh/config/README.md index 22782537..7bdbdb9c 100644 --- a/packages/docs/docs/zh/config/README.md +++ b/packages/docs/docs/zh/config/README.md @@ -14,7 +14,7 @@ sidebar: auto 部署站点的基础路径,如果你想让你的网站部署到一个子路径下,你将需要设置它。如 GitHub pages,如果你想将你的网站部署到 `https://foo.github.io/bar/`,那么 `base` 应该被设置成 `"/bar/"`,它的值应当总是以斜杠开始,并以斜杠结束。 -`base` 将会自动地作为前缀插入到所有以 `/` 开始的其他选项的链接中,所以你只需要指定一次。 +`base` 将会作为前缀自动地插入到所有以 `/` 开始的其他选项的链接中,所以你只需要指定一次。 **参考:** diff --git a/packages/docs/docs/zh/plugin/option-api.md b/packages/docs/docs/zh/plugin/option-api.md index 2ea8e80c..d8a15a84 100644 --- a/packages/docs/docs/zh/plugin/option-api.md +++ b/packages/docs/docs/zh/plugin/option-api.md @@ -11,7 +11,7 @@ metaTitle: Option API | Plugin 插件的名字。 -在内部,VuePress 将会使用插件的包名作为插件的名称。当你你插件是一个本地插件(即直接使用了一个纯函数)时,请确保设定了该选项,这对调试更有利。 +在内部,VuePress 将会使用插件的包名作为插件的名称。当你的插件是一个本地插件(即直接使用了一个纯函数)时,请确保设定了该选项,这对调试更有利。 ```js // .vuepress/config.js @@ -241,7 +241,7 @@ module.exports = { } ``` -此选项还支持动态代码,允许你使用触摸编译上下文的能力来做更多的事: +此选项还支持动态代码,允许你使用贴近编译上下文的能力来做更多的事: ```js module.exports = (option, context) => { @@ -302,10 +302,10 @@ module.exports = { regularPath, // 当前页面遵循文件层次结构的默认链接 path, // 当前页面的实际链接(在 permalink 不存在时,使用 regularPath ) } = $page - + // 1. Add extra fields. $page.xxx = 'xxx' - + // 2. Change frontmatter. frontmatter.sidebar = 'auto' } @@ -333,7 +333,7 @@ module.exports = { - 类型: `String` - 默认值: `undefined` -指向 `mixin` 文件的路径,它让你你可以控制根组件的生命周期: +指向 `mixin` 文件的路径,它让你可以控制根组件的生命周期: ``` js // 插件的入口 @@ -411,7 +411,7 @@ module.exports = { - 类型: `Array|String` - 默认值: `undefined` -你可能想注入某些全局的 UI,并固定在页面中的某处,如 `back-to-top`, `popup`。在 VuePress 中,**一个全局 UI 就是一个 Vue 组件。**你可以直接配置该全局组件的名称,如: +你可能想注入某些全局的 UI,并固定在页面中的某处,如 `back-to-top`, `popup`。在 VuePress 中,**一个全局 UI 就是一个 Vue 组件**。你可以直接配置该全局组件的名称,如: ``` js module.exports = { @@ -439,7 +439,7 @@ VuePress 将会自动将这些组件注入到布局组件的隔壁: - 类型: `function` - 默认值: `undefined` -注册一个额外的 command 来增强 vuepress 的 CLI。这个函数将会以一个 [CAC](https://github.com/cacjs/cac) 的实例作为第一个参数被调用。 +注册一个额外的 command 来增强 VuePress 的 CLI。这个函数将会以一个 [CAC](https://github.com/cacjs/cac) 的实例作为第一个参数被调用。 ```js module.exports = { From 8039f421f7525852daf2dc5787c19fea19659242 Mon Sep 17 00:00:00 2001 From: Sarah Dayan Date: Wed, 7 Aug 2019 17:24:58 +0200 Subject: [PATCH 200/233] docs: documentation linting (#1745) * chore: install textlint * chore: add textlint rules * feat: set up configuration file and command * fix: run textlint on files * chore: lint .textlintrc.js * chore: add custom terms * chore: add comment filter * fix: fix frontmatter term * chore: set subjective rules to warning severity * fix: manually fix issues * chore: add script as pre-commit hook --- .lintstagedrc | 3 + package.json | 21 +- packages/docs/.lintstagedrc | 3 + packages/docs/.textlint.terms.json | 8 + packages/docs/.textlintrc.js | 23 + packages/docs/docs/api/cli.md | 4 +- packages/docs/docs/api/node.md | 8 +- packages/docs/docs/config/README.md | 42 +- packages/docs/docs/faq/README.md | 22 +- packages/docs/docs/guide/README.md | 18 +- packages/docs/docs/guide/assets.md | 14 +- packages/docs/docs/guide/basic-config.md | 12 +- packages/docs/docs/guide/deploy.md | 14 +- .../docs/docs/guide/directory-structure.md | 10 +- packages/docs/docs/guide/frontmatter.md | 14 +- packages/docs/docs/guide/getting-started.md | 4 +- packages/docs/docs/guide/global-computed.md | 6 +- packages/docs/docs/guide/i18n.md | 6 +- packages/docs/docs/guide/markdown-slot.md | 16 +- packages/docs/docs/guide/markdown.md | 18 +- packages/docs/docs/guide/permalinks.md | 10 +- packages/docs/docs/guide/using-vue.md | 28 +- .../docs/miscellaneous/design-concepts.md | 32 +- packages/docs/docs/miscellaneous/glossary.md | 12 +- packages/docs/docs/plugin/README.md | 12 +- packages/docs/docs/plugin/life-cycle.md | 2 +- packages/docs/docs/plugin/option-api.md | 34 +- packages/docs/docs/plugin/using-a-plugin.md | 4 +- packages/docs/docs/plugin/writing-a-plugin.md | 4 +- packages/docs/docs/theme/README.md | 2 +- .../docs/docs/theme/default-theme-config.md | 38 +- packages/docs/docs/theme/inheritance.md | 50 +- packages/docs/docs/theme/option-api.md | 10 +- packages/docs/docs/theme/writing-a-theme.md | 32 +- packages/docs/package.json | 15 +- yarn.lock | 942 +++++++++++++++++- 36 files changed, 1232 insertions(+), 261 deletions(-) create mode 100644 .lintstagedrc create mode 100644 packages/docs/.lintstagedrc create mode 100644 packages/docs/.textlint.terms.json create mode 100644 packages/docs/.textlintrc.js diff --git a/.lintstagedrc b/.lintstagedrc new file mode 100644 index 00000000..693feae1 --- /dev/null +++ b/.lintstagedrc @@ -0,0 +1,3 @@ +{ + "*.{js,vue}": ["eslint --fix", "git add"] +} diff --git a/package.json b/package.json index 148676f6..7224ad64 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ ], "description": "Minimalistic doc generator with Vue component based layout system", "scripts": { + "precommit": "lint-staged", "bootstrap": "yarn && lerna bootstrap && yarn tsc", "clean": "lerna clean && rm -rf node_modules", "boot": "node scripts/bootstrap.js", @@ -24,25 +25,23 @@ "test": "node scripts/test.js", "tsc": "lerna run tsc" }, - "gitHooks": { - "pre-commit": "lint-staged" - }, - "lint-staged": { - "*.{js,vue}": [ - "eslint --fix", - "git add" - ] - }, "devDependencies": { + "@types/escape-html": "^0.0.20", + "@types/fs-extra": "^5.0.4", + "@types/globby": "^9.1.0", + "@types/hash-sum": "^1.0.0", + "@types/lru-cache": "^4.1.1", + "@types/node": "^10.12.12", + "@types/semver": "^6.0.0", "conventional-changelog-cli": "^2.0.21", "eslint": "^4.19.1", "eslint-plugin-jest": "^21.15.1", "eslint-plugin-vue-libs": "^3.0.0", + "husky": "^3.0.2", + "inquirer": "^6.2.0", "lerna": "3.13.4", "lint-staged": "^8.1.5", "minimist": "^1.2.0", - "yorkie": "^2.0.0", - "inquirer": "^6.2.0", "typescript": "^3.2.2", "@types/node": "^10.12.12", "@types/lru-cache": "^4.1.1", diff --git a/packages/docs/.lintstagedrc b/packages/docs/.lintstagedrc new file mode 100644 index 00000000..0dbeb548 --- /dev/null +++ b/packages/docs/.lintstagedrc @@ -0,0 +1,3 @@ +{ + "docs/**/*.md": ["yarn lint-md", "git add"] +} diff --git a/packages/docs/.textlint.terms.json b/packages/docs/.textlint.terms.json new file mode 100644 index 00000000..7ea8ecd7 --- /dev/null +++ b/packages/docs/.textlint.terms.json @@ -0,0 +1,8 @@ +[ + "Stylus", + "VuePress", + [ + "front[- ]matter", + "frontmatter" + ] +] diff --git a/packages/docs/.textlintrc.js b/packages/docs/.textlintrc.js new file mode 100644 index 00000000..068b522b --- /dev/null +++ b/packages/docs/.textlintrc.js @@ -0,0 +1,23 @@ +module.exports = { + rules: { + '@textlint-rule/no-unmatched-pair': true, + apostrophe: true, + 'common-misspellings': true, + diacritics: true, + 'en-capitalization': { + allowHeading: false + }, + 'stop-words': { + severity: 'warning' + }, + terminology: { + terms: `${__dirname}/.textlint.terms.json` + }, + 'write-good': { + severity: 'warning' + } + }, + filters: { + comments: true + } +} diff --git a/packages/docs/docs/api/cli.md b/packages/docs/docs/api/cli.md index 32bb29c2..54cbff90 100644 --- a/packages/docs/docs/api/cli.md +++ b/packages/docs/docs/api/cli.md @@ -1,4 +1,4 @@ -# Command Line Interface +# Command-line Interface ## Usage @@ -40,7 +40,7 @@ See [host](../config/README.md#host). Open browser when ready. ### --no-clear-screen -do not clear screen when dev server is ready. +Do not clear screen when dev server is ready. ## eject diff --git a/packages/docs/docs/api/node.md b/packages/docs/docs/api/node.md index 0e712b7d..55db476a 100644 --- a/packages/docs/docs/api/node.md +++ b/packages/docs/docs/api/node.md @@ -14,7 +14,7 @@ Create a VuePress application. #### App.prototype.process: () => Promise\ | never -A asynchronous method used to prepare the context of the current app. which contains loading pages and plugins, apply plugins, etc. +An asynchronous method used to prepare the context of the current app, and which contains loading pages and plugins, apply plugins, etc. #### App.prototype.dev: () => Promise\ | never @@ -27,7 +27,7 @@ Launch a build process with current app context. ### dev(\[options]): Promise\ -Start a development server, actually it's implemented by `createApp`: +Start a development server, actually it’s implemented by `createApp`: ```js async function dev (options) { @@ -39,7 +39,7 @@ async function dev (options) { ### build(\[options]): Promise\ -Build your source files as a static site, actually it's implemented by `createApp`: +Build your source files as a static site, actually it’s implemented by `createApp`: ```js async function build (options) { @@ -96,4 +96,4 @@ See [dest](../config/README.md#dest). - Type: `object` - Required: `{}` -It's very useful when you're writing tests and don't want to depend on actual config file, for all options please head [siteConfig](../config/README.md). +It’s useful when you’re writing tests and don’t want to depend on actual config file, for all options please head [siteConfig](../config/README.md). diff --git a/packages/docs/docs/config/README.md b/packages/docs/docs/config/README.md index 96ea75e6..ebdcb8f2 100644 --- a/packages/docs/docs/config/README.md +++ b/packages/docs/docs/config/README.md @@ -14,7 +14,7 @@ sidebar: auto - Type: `string` - Default: `/` -The base URL the site will be deployed at. You will need to set this if you plan to deploy your site under a sub path, for example, GitHub pages. If you plan to deploy your site to `https://foo.github.io/bar/`, then `base` should be set to `"/bar/"`. It should always start and end with a slash. +The base URL the site will be deployed at. You will need to set this if you plan to deploy your site under a sub path, for example, GitHub pages. If you plan to deploy your site to `https://foo.github.io/bar/`, then you should set `base` to `"/bar/"`. It should always start and end with a slash. The `base` is automatically prepended to all the URLs that start with `/` in other options, so you only need to specify it once. @@ -35,14 +35,14 @@ Title for the site. This will be the prefix for all page titles, and displayed i - Type: `string` - Default: `undefined` -Description for the site. This will be rendered as a `` tag in the page HTML. +Description for the site. This will render as a `` tag in the page HTML. ### head - Type: `Array` - Default: `[]` -Extra tags to be injected to the page HTML ``. Each tag can be specified in the form of `[tagName, { attrName: attrValue }, innerHTML?]`. For example, to add a custom favicon: +Extra tags to inject into the page HTML ``. You can specify each tag in the form of `[tagName, { attrName: attrValue }, innerHTML?]`. For example, to add a custom favicon: ``` js module.exports = { @@ -102,10 +102,10 @@ A function to control what files should have `` resource hin VuePress uses [cache-loader](https://github.com/webpack-contrib/cache-loader) by default to greatly speed up the compilation of webpack. -This option can be used to specify the path to the cache, and can also remove the cache before each build by setting it to `false`. +You can use this option to specify the path to the cache, and can also remove the cache before each build by setting it to `false`. ::: tip -This option can also be used through the CLI: +You can also use this option through the CLI: ```bash vuepress dev docs --cache .cache # set cache path @@ -118,7 +118,7 @@ vuepress dev docs --no-cache # remove cache before each build. - Type: `Array` - Default: `[]` -Specify extra files to be watched. +Specify extra files to watch. You can watch any file if you want. File changes will trigger `vuepress` rebuilding and real-time updates. @@ -135,9 +135,9 @@ module.exports = { ### palette.styl -If you wish to apply simple color overrides to the styling of the [default preset](https://github.com/vuejs/vuepress/blob/master/packages/@vuepress/core/lib/client/style/config.styl) or define some color variables for using later, you can create an `.vuepress/styles/palette.styl` file. +To apply simple color overrides to the styling of the [default preset](https://github.com/vuejs/vuepress/blob/master/packages/@vuepress/core/lib/client/style/config.styl) or define some color variables for using later, you can create a `.vuepress/styles/palette.styl` file. -There are a few color variables you can tweak: +There are some color variables you can tweak: ``` stylus // showing default values @@ -148,12 +148,12 @@ $codeBgColor = #282c34 ``` ::: danger Note -You should ONLY write color variables in this file. since `palette.styl` will be imported at the end of the root stylus config file, as a config, it will be used by multiple files, so once you wrote styles here, your style would be duplicated by multiple times. +You should ONLY write color variables in this file. Since `palette.styl` will be imported at the end of the root Stylus config file, as a config, several files will use it, so once you wrote styles here, your style would be duplicated by multiple times. ::: ### index.styl -VuePress provides a convenient way to add extra styles. you can create an `.vuepress/styles/index.styl` file for that. This is a [Stylus](http://stylus-lang.com/) file but you can use normal CSS syntax as well. +VuePress provides a convenient way to add extra styles. You can create a `.vuepress/styles/index.styl` file for that. This is a [Stylus](http://stylus-lang.com/) file but you can use normal CSS syntax as well. ```stylus .content { @@ -163,7 +163,7 @@ VuePress provides a convenient way to add extra styles. you can create an `.vuep **Also see:** -- [Why can't `palette.styl` and `index.styl` merge into one API?](../faq/README.md#why-can-t-palette-styl-and-index-styl-merge-into-one-api) +- [Why can’t `palette.styl` and `index.styl` merge into one API?](../faq/README.md#why-can-t-palette-styl-and-index-styl-merge-into-one-api) ## Theming @@ -196,7 +196,7 @@ Provide config options to the used theme. The options will vary depending on the - Type: `Object|Array` - Default: `undefined` -Please refer to [Plugin > Using a plugin](../plugin/using-a-plugin.md) to learn how to use a plugin. +Please check out [Plugin > Using a plugin](../plugin/using-a-plugin.md) to learn how to use a plugin. ## Markdown @@ -223,7 +223,7 @@ Function for transforming [header](../miscellaneous/glossary.md#headers) texts i - Type: `Object` - Default: `{ permalink: true, permalinkBefore: true, permalinkSymbol: '#' }` -Options for [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor). (Note: prefer `markdown.slugify` if you want to customize header ids.) +Options for [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor). (Note: prefer `markdown.slugify` to customize header ids.) ### markdown.externalLinks @@ -237,11 +237,11 @@ The key and value pair will be added to `` tags that point to an external lin - Type: `Object` - Default: `{ includeLevel: [2, 3] }` -Options for [markdown-it-table-of-contents](https://github.com/Oktavilla/markdown-it-table-of-contents). (Note: prefer `markdown.slugify` if you want to customize header ids.) +Options for [markdown-it-table-of-contents](https://github.com/Oktavilla/markdown-it-table-of-contents). (Note: prefer `markdown.slugify` to customize header ids.) ### markdown.plugins -You can install any markdown-it plugins through `markdown.plugins` option. It is similar with [using VuePress plugins](../plugin/using-a-plugin.html#using-a-plugin). You can either use Babel style or object style. The `markdown-it-` prefix is optional and can omit in the list. +You can install any markdown-it plugins through `markdown.plugins` option. It’s similar with [using VuePress plugins](../plugin/using-a-plugin.html#using-a-plugin). You can either use Babel style or object style. The `markdown-it-` prefix is optional and can omit in the list. ``` js module.exports = { @@ -256,7 +256,7 @@ module.exports = { } ``` -or +Or ``` js module.exports = { @@ -276,7 +276,7 @@ module.exports = { - Type: `Function` - Default: `undefined` -A function to modify default config or apply additional plugins to the [markdown-it](https://github.com/markdown-it/markdown-it) instance used to render source files. e.g. +A function to edit default config or apply extra plugins to the [markdown-it](https://github.com/markdown-it/markdown-it) instance used to render source files. For example: ``` js module.exports = { @@ -306,7 +306,7 @@ VuePress comes with built-in webpack config for the CSS pre-processors listed be Options for [postcss-loader](https://github.com/postcss/postcss-loader). Note specifying this value will overwrite autoprefixer and you will need to include it yourself. -### stylus +### Stylus - Type: `Object` - Default: `{ preferPathResolver: 'webpack' }` @@ -320,7 +320,7 @@ Options for [stylus-loader](https://github.com/shama/stylus-loader). Options for [sass-loader](https://github.com/webpack-contrib/sass-loader) to load `*.scss` files. -### sass +### Sass - Type: `Object` - Default: `{ indentedSyntax: true }` @@ -339,7 +339,7 @@ Options for [less-loader](https://github.com/webpack-contrib/less-loader). - Type: `Object | Function` - Default: `undefined` -Modify the internal webpack config. If the value is an Object, it will be merged into the final config using [webpack-merge](https://github.com/survivejs/webpack-merge); If the value is a function, it will receive the config as the 1st argument and an `isServer` flag as the 2nd argument. You can either mutate the config directly, or return an object to be merged: +Edit the internal webpack config. If the value is an Object, it will be merged into the final config using [webpack-merge](https://github.com/survivejs/webpack-merge); If the value is a function, it will receive the config as the 1st argument and an `isServer` flag as the 2nd argument. You can either mutate the config directly, or return an object to merge: ``` js module.exports = { @@ -356,7 +356,7 @@ module.exports = { - Type: `Function` - Default: `undefined` -Modify the internal webpack config with [webpack-chain](https://github.com/mozilla-neutrino/webpack-chain). +Edit the internal webpack config with [webpack-chain](https://github.com/mozilla-neutrino/webpack-chain). ``` js module.exports = { diff --git a/packages/docs/docs/faq/README.md b/packages/docs/docs/faq/README.md index e7051490..3bbec4e2 100644 --- a/packages/docs/docs/faq/README.md +++ b/packages/docs/docs/faq/README.md @@ -4,13 +4,13 @@ sidebar: auto # FAQ -## Why can't `palette.styl` and `index.styl` merge into one API? +## Why can’t `palette.styl` and `index.styl` merge into one API? -The `palette.styl` is responsible for global color settings. During compilation, theme color constants should be resolved by the preprocessor first and then be applied to the global context. +The `palette.styl` is responsible for global color settings. During compilation, theme color constants should be resolved by the preprocessor first and then be applied to the global context. -But for `index.styl`. its job is to override the default styles of application. According to the priority principle of css, the later style has a higher priority, so it should be generated at the end of the CSS file. +But for `index.styl`, its job is to override the default styles of application. According to the priority principle of CSS, the later style has a higher priority, so it should be generated at the end of the CSS file. -A simple diagram describing the stylus compiler's compilation order as follows: +A simple diagram describing the Stylus compiler’s compilation order as follows: @flowstart stage1=>operation: palette.styl @@ -22,11 +22,11 @@ stage1->stage2->stage3
    -## What's the differences between the `clientDynamicModules` and `enhanceAppFiles`? +## What’s the differences between the `clientDynamicModules` and `enhanceAppFiles`? -Let's take a look back first, both `clientDynamicModules` and `enhanceAppFiles` can generate modules with dynamic javascript code during compile time. +Let’s take a look back first, both `clientDynamicModules` and `enhanceAppFiles` can generate modules with dynamic JavaScript code during compile time. -The difference is that the files generated by `enhanceAppFiles` will be loaded and applied automatically when the application is initialized on the client side. While the files generated by `clientDynamicModules` needs to be imported as `@dynamic/xxx` by the users themselves. +The difference is that the files generated by `enhanceAppFiles` will be loaded and applied automatically when the application is initialized on the client-side, while the files generated by `clientDynamicModules` need to be imported as `@dynamic/xxx` by the users themselves. ```js module.exports = (options, ctx) => ({ @@ -48,12 +48,12 @@ module.exports = (options, ctx) => ({ ## When do I need to use `enhanceAppFiles`? -1. I want to execute some code on the client side automatically. -2. I don't have a need for reuse of this module. +1. I want to execute some code on the client-side automatically. +2. I don’t need to reuse this module. **Example:** -- [@vuepress/plugin-register-components](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-register-components/index.js#L24): Automatically registering components on the client side. +- [@vuepress/plugin-register-components](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-register-components/index.js#L24): Automatically registering components on the client-side. - [@vuepress/plugin-pagination](https://github.com/vuejs/vuepress/blob/master/packages/@vuepress/plugin-pagination/index.js#L14): Automatically insert Vue plugins to expand the API of the client. ## When do I need to use `clientDynamicModules`? @@ -63,5 +63,5 @@ module.exports = (options, ctx) => ({ **Example:** -- [@vuepress/plugin-blog](https://github.com/ulivz/vuepress-plugin-blog/blob/master/src/index.ts#L167): Using compile-time metadata to generate some dynamic blog-related modules and initialize them on the client side by using `enhanceAppFiles`. +- [@vuepress/plugin-blog](https://github.com/ulivz/vuepress-plugin-blog/blob/master/src/index.ts#L167): Using compile-time metadata to generate some dynamic blog-related modules and initialize them on the client-side by using `enhanceAppFiles`. diff --git a/packages/docs/docs/guide/README.md b/packages/docs/docs/guide/README.md index d8eabdd9..023e5095 100644 --- a/packages/docs/docs/guide/README.md +++ b/packages/docs/docs/guide/README.md @@ -2,21 +2,21 @@ -VuePress is composed of two parts: a [minimalistic static site generator](https://github.com/vuejs/vuepress/tree/master/packages/%40vuepress/core) with a Vue-powered [theming system](../theme/README.md) and [Plugin API](../plugin/README.md), and a [default theme](../theme/default-theme-config.md) optimized for writing technical documentation. It was created to support the documentation needs of Vue's own sub projects. +VuePress is composed of two parts: a [minimalistic static site generator](https://github.com/vuejs/vuepress/tree/master/packages/%40vuepress/core) with a Vue-powered [theming system](../theme/README.md) and [Plugin API](../plugin/README.md), and a [default theme](../theme/default-theme-config.md) optimized for writing technical documentation. It was created to support the documentation needs of Vue’s own sub projects. -Each page generated by VuePress has its own pre-rendered static HTML, providing great loading performance and is SEO-friendly. Once the page is loaded, however, Vue takes over the static content and turns it into a full Single-Page Application (SPA). Additional pages are fetched on demand as the user navigates around the site. +Each page generated by VuePress has its own pre-rendered static HTML, providing great loading performance and is SEO-friendly. Yet, once the page is loaded, Vue takes over the static content and turns it into a full Single-Page Application (SPA). Extra pages are fetched on demand as the user navigates around the site. ## How It Works -A VuePress site is in fact a SPA powered by [Vue](http://vuejs.org/), [Vue Router](https://github.com/vuejs/vue-router) and [webpack](http://webpack.js.org/). If you've used Vue before, you will notice the familiar development experience when you are writing or developing custom themes (you can even use Vue DevTools to debug your custom theme!). +A VuePress site is in fact a SPA powered by [Vue](http://vuejs.org/), [Vue Router](https://github.com/vuejs/vue-router) and [webpack](http://webpack.js.org/). If you’ve used Vue before, you will notice the familiar development experience when you are writing or developing custom themes (you can even use Vue DevTools to debug your custom theme!). During the build, we create a server-rendered version of the app and render the corresponding HTML by virtually visiting each route. This approach is inspired by [Nuxt](https://nuxtjs.org/)'s `nuxt generate` command and other projects like [Gatsby](https://www.gatsbyjs.org/). -Each markdown file is compiled into HTML with [markdown-it](https://github.com/markdown-it/markdown-it) and then processed as the template of a Vue component. This allows you to directly use Vue inside your markdown files and is great when you need to embed dynamic content. +Each Markdown file is compiled into HTML with [markdown-it](https://github.com/markdown-it/markdown-it) and then processed as the template of a Vue component. This allows you to directly use Vue inside your Markdown files and is great when you need to embed dynamic content. ## Features -**Built-in markdown extensions** +**Built-in Markdown extensions** * [Table of Contents](../guide/markdown.md#table-of-contents) * [Custom Containers](../guide/markdown.md#custom-containers) @@ -65,16 +65,16 @@ Each markdown file is compiled into HTML with [markdown-it](https://github.com/m ### Nuxt -Nuxt is capable of doing what VuePress does, but it is designed for building applications. VuePress is focused on content-centric static sites and provides features tailored for technical documentation out of the box. +Nuxt is capable of doing what VuePress does, but it’s designed for building applications. VuePress is focused on content-centric static sites and provides features tailored for technical documentation out of the box. ### Docsify / Docute -Both are great projects and also Vue-powered. Except they are both completely runtime-driven and therefore not SEO-friendly. If you don't care about SEO and don't want to mess with installing dependencies, these are still great choices. +Both are great projects and also Vue-powered. Except they are both fully runtime-driven and therefore not SEO-friendly. If you don’t care for SEO and don’t want to mess with installing dependencies, these are still great choices. ### Hexo -Hexo has been serving the Vue docs well - in fact, we are probably still a long way to go from migrating away from it for our main site. The biggest problem is that its theming system is very static and string-based - we really want to leverage Vue for both the layout and the interactivity. Also, Hexo's markdown rendering isn't the most flexible to configure. +Hexo has been serving the Vue docs well - in fact, we are probably still a long way to go from migrating away from it for our main site. The biggest problem is that its theming system is static and string-based - we want to take advantage of Vue for both the layout and the interactivity. Also, Hexo’s Markdown rendering isn’t the most flexible to configure. ### GitBook -We've been using GitBook for most of our sub project docs. The primary problem with GitBook is that its development reload performance is intolerable with a large amount of files. The default theme also has a pretty limiting navigation structure, and the theming system is, again, not Vue based. The team behind GitBook is also more focused on turning it into a commercial product rather than an open-source tool. +We’ve been using GitBook for most of our sub project docs. The primary problem with GitBook is that its development reload performance is intolerable with a large amount of files. The default theme also has a pretty limiting navigation structure, and the theming system is, again, not Vue based. The team behind GitBook is also more focused on turning it into a commercial product rather than an open-source tool. diff --git a/packages/docs/docs/guide/assets.md b/packages/docs/docs/guide/assets.md index 77af2b62..f2fa6053 100644 --- a/packages/docs/docs/guide/assets.md +++ b/packages/docs/docs/guide/assets.md @@ -2,7 +2,7 @@ ## Relative URLs -All markdown files are compiled into Vue components and processed by webpack, therefore you can and **should prefer** referencing any asset using relative URLs: +All Markdown files are compiled into Vue components and processed by webpack, so you can and **should prefer** referencing any asset using relative URLs: ``` md ![An image](./image.png) @@ -10,14 +10,14 @@ All markdown files are compiled into Vue components and processed by webpack, th This would work the same way as in `*.vue` file templates. The image will be processed with `url-loader` and `file-loader`, and copied to appropriate locations in the generated static build. -In addition, you can use the `~` prefix to explicitly indicate this is a webpack module request, allowing you to reference files with webpack aliases or from npm dependencies: +Also, you can use the `~` prefix to explicitly specify this is a webpack module request, allowing you to reference files with webpack aliases or from npm dependencies: ``` md ![Image from alias](~@alias/image.png) ![Image from dependency](~some-dependency/image.png) ``` -webpack aliases can be configured via [configureWebpack](../config/README.md#configurewebpack) in `.vuepress/config.js`. Example: +Webpack aliases can be configured via [configureWebpack](../config/README.md#configurewebpack) in `.vuepress/config.js`. Example: ``` js module.exports = { @@ -33,18 +33,18 @@ module.exports = { ## Public Files -Sometimes you may need to provide static assets that are not directly referenced in any of your markdown or theme components - for example, favicons and PWA icons. In such cases, you can put them inside `.vuepress/public` and they will be copied to the root of the generated directory. +Sometimes you may need to provide static assets that are not directly referenced in any of your Markdown or theme components - for example, favicons and PWA icons. In such cases, you can put them inside `.vuepress/public` and they will be copied to the root of the generated directory. ## Base URL If your site is deployed to a non-root URL, you will need to set the `base` option in `.vuepress/config.js`. For example, if you plan to deploy your site to `https://foo.github.io/bar/`, then `base` should be set to `"/bar/"` (it should always start and end with a slash). -With a base URL, if you want to reference an image in `.vuepress/public`, you'd have to use URLs like `/bar/image.png`. However, this is brittle if you ever decide to change the `base` later. To help with that, VuePress provides a built-in helper `$withBase` (injected onto Vue's prototype) that generates the correct path: +With a base URL, to reference an image in `.vuepress/public`, you’d have to use URLs like `/bar/image.png`. Yet, this is brittle if you ever decide to change the `base` later. To help with that, VuePress provides a built-in helper `$withBase` (injected onto Vue’s prototype) that generates the correct path: ``` vue foo ``` -Note you can use the above syntax not only in theme components, but in your markdown files as well. +Note you can use the above syntax not only in theme components, but in your Markdown files as well. -In addition, if a `base` is set, it is automatically prepended to all asset URLs in `.vuepress/config.js` options. +Also, if a `base` is set, it’s automatically prepended to all asset URLs in `.vuepress/config.js` options. diff --git a/packages/docs/docs/guide/basic-config.md b/packages/docs/docs/guide/basic-config.md index 5a17dbcd..5e72fffd 100644 --- a/packages/docs/docs/guide/basic-config.md +++ b/packages/docs/docs/guide/basic-config.md @@ -2,7 +2,7 @@ ## Config File -Without any configuration, the page is pretty minimal, and the user has no way to navigate around the site. To customize your site, let's first create a `.vuepress` directory inside your docs directory. This is where all VuePress-specific files will be placed in. Your project structure is probably like this: +Without any configuration, the page is pretty minimal, and the user has no way to navigate around the site. To customize your site, let’s first create a `.vuepress` directory inside your docs directory. This is where all VuePress-specific files will be placed in. Your project structure is probably like this: ``` . @@ -22,9 +22,9 @@ module.exports = { } ``` -If you've got the dev server running, you should see the page now has a header with the title and a search box. VuePress comes with built-in headers-based search - it automatically builds a simple search index from the title, `h2` and `h3` headers from all the pages. +If you’ve got the dev server running, you should see the page now has a header with the title and a search box. VuePress comes with built-in headers-based search - it automatically builds a simple search index from the title, `h2` and `h3` headers from all the pages. -Consult the [Config Reference](../config/README.md) for a full list of options. +Check out the [Config Reference](../config/README.md) for a full list of options. ::: tip Alternative Config Formats You can also use YAML (`.vuepress/config.yml`) or TOML (`.vuepress/config.toml`) formats for the configuration file. @@ -32,13 +32,13 @@ You can also use YAML (`.vuepress/config.yml`) or TOML (`.vuepress/config.toml`) ## Theme Configuration -A VuePress theme is responsible for all the layout and interactivity details of your site. VuePress ships with a default theme (you are looking at it right now) which is designed for technical documentation. It exposes a number of options that allow you to customize the navbar, sidebar and homepage, etc. For details, check out the [Default Theme Config](../theme/default-theme-config.md) page. +A VuePress theme owns all the layout and interactivity details of your site. VuePress ships with a default theme (you are looking at it right now), designed for technical documentation. It exposes many options that allow you to customize the navbar, sidebar and homepage, etc. For details, check out the [Default Theme Config](../theme/default-theme-config.md) page. -If you wish to develop a custom theme, see [Writing a theme](../theme/writing-a-theme.md). +To develop a custom theme, see [Writing a theme](../theme/writing-a-theme.md). ## App Level Enhancements -Since the VuePress app is a standard Vue app, you can apply app-level enhancements by creating a file `.vuepress/enhanceApp.js`, which will be imported into the app if it is present. The file should `export default` a hook function which will receive an object containing some app-level values. You can use this hook to install additional Vue plugins, register global components, or add additional router hooks: +Since the VuePress app is a standard Vue app, you can apply app-level enhancements by creating a file `.vuepress/enhanceApp.js`, which will be imported into the app if it’s present. The file should `export default` a hook function which will receive an object containing some app-level values. You can use this hook to install extra Vue plugins, register global components, or add extra router hooks: ``` js export default ({ diff --git a/packages/docs/docs/guide/deploy.md b/packages/docs/docs/guide/deploy.md index 0ba55dbb..ae81f8a1 100644 --- a/packages/docs/docs/guide/deploy.md +++ b/packages/docs/docs/guide/deploy.md @@ -1,6 +1,6 @@ # Deploying -The following guides are based on a few shared assumptions: +The following guides are based on some shared assumptions: - You are placing your docs inside the `docs` directory of your project; - You are using the default build output location (`.vuepress/dist`); @@ -20,7 +20,7 @@ The following guides are based on a few shared assumptions: If you are deploying to `https://.github.io/`, you can omit `base` as it defaults to `"/"`. - If you are deploying to `https://.github.io//`, (i.e. your repository is at `https://github.com//`), set `base` to `"//"`. + If you are deploying to `https://.github.io//`, (that is your repository is at `https://github.com//`), set `base` to `"//"`. 2. Inside your project, create `deploy.sh` with the following content (with highlighted lines uncommented appropriately) and run it to deploy: @@ -62,7 +62,7 @@ You can also run the above script in your CI setup to enable automatic deploymen If you are deploying to `https://.github.io/`, you can omit `base` as it defaults to `"/"`. - If you are deploying to `https://.github.io//`, (i.e. your repository is at `https://github.com//`), set `base` to `"//"`. + If you are deploying to `https://.github.io//`, (that is your repository is at `https://github.com//`), set `base` to `"//"`. 2. Create a file named `.travis.yml` in the root of your project. @@ -90,7 +90,7 @@ deploy: If you are deploying to `https://.gitlab.io/`, you can omit `base` as it defaults to `"/"`. - If you are deploying to `https://.gitlab.io//`, (i.e. your repository is at `https://gitlab.com//`), set `base` to `"//"`. + If you are deploying to `https://.gitlab.io//`, (that is your repository is at `https://gitlab.com//`), set `base` to `"//"`. 2. Set `dest` in `.vuepress/config.js` to `public`. @@ -153,7 +153,7 @@ pages: ## Surge -1. First install [surge](https://www.npmjs.com/package/surge), if you haven't already. +1. First install [surge](https://www.npmjs.com/package/surge), if you haven’t already. 2. Run `yarn docs:build` or `npm run docs:build`. @@ -182,7 +182,7 @@ You can also deploy to a [custom domain](http://surge.sh/help/adding-a-custom-do } ``` -This is the configuration of your site. see more at [heroku-buildpack-static](https://github.com/heroku/heroku-buildpack-static). +This is the configuration of your site. See more at [heroku-buildpack-static](https://github.com/heroku/heroku-buildpack-static). 5. Set up your Heroku git remote: @@ -211,4 +211,4 @@ heroku open ## Now -Please refer to [Deploy an example vuepress website with Now](https://zeit.co/examples/vuepress/). +Please check out [Deploy an example VuePress site with Now](https://zeit.co/examples/vuepress/). diff --git a/packages/docs/docs/guide/directory-structure.md b/packages/docs/docs/guide/directory-structure.md index cf666087..091f82ea 100644 --- a/packages/docs/docs/guide/directory-structure.md +++ b/packages/docs/docs/guide/directory-structure.md @@ -2,6 +2,8 @@ VuePress follows the principle of **"Convention is better than configuration"**, the recommended document structure is as follows: + + ::: vue . ├── docs @@ -27,11 +29,13 @@ VuePress follows the principle of **"Convention is better than configuration"**, └── package.json ::: + + ::: warning Note Please note the capitalization of the directory name. ::: -- `docs/.vuepress`: It is used to store global configuration, components, static resources, etc. +- `docs/.vuepress`: It’s used to store global configuration, components, static resources, etc. - `docs/.vuepress/components`: The Vue components in this directory will be automatically registered as global components. - `docs/.vuepress/theme`: Used to store local theme. - `docs/.vuepress/styles`: Stores style related files. @@ -45,7 +49,7 @@ Please note the capitalization of the directory name. - `docs/.vuepress/enhanceApp.js`: App level enhancement. ::: warning Note -When customizing `templates/ssr.html`, or `templates/dev.html`, it is best to modify it on the basis of the [default template files](https://github.com/vuejs/vuepress/blob/master/packages/%40vuepress/core/lib/client/index.dev.html), otherwise it may cause a build failure. +When customizing `templates/ssr.html`, or `templates/dev.html`, it’s best to edit it on the basis of the [default template files](https://github.com/vuejs/vuepress/blob/master/packages/%40vuepress/core/lib/client/index.dev.html), otherwise it may cause a build failure. ::: ## Default Page Routing @@ -58,7 +62,7 @@ For the above directory structure, the default page routing paths are as follows | `/guide/README.md` | `/guide/` | | `/config.md` | `/config.html` | -**Also see:** +**Also see:** - [Config](../config/README.md) - [Theme](../theme/) diff --git a/packages/docs/docs/guide/frontmatter.md b/packages/docs/docs/guide/frontmatter.md index c4b4273e..d4588249 100644 --- a/packages/docs/docs/guide/frontmatter.md +++ b/packages/docs/docs/guide/frontmatter.md @@ -1,6 +1,6 @@ -# Front Matter +# Frontmatter -Any markdown file that contains a YAML front matter block will be processed by [gray-matter](https://github.com/jonschlinkert/gray-matter). The front matter must be the first thing in the markdown file and must take the form of valid YAML set between triple-dashed lines. Here is a basic example: +Any Markdown file that contains a YAML frontmatter block will be processed by [gray-matter](https://github.com/jonschlinkert/gray-matter). The frontmatter must be the first thing in the Markdown file and must take the form of valid YAML set between triple-dashed lines. Here is a basic example: ```markdown --- @@ -12,14 +12,14 @@ lang: en-US Between these triple-dashed lines, you can set predefined variables (see [below](#predefined-variables) for a reference), or even create custom ones of your own. These variables will then be available to you to access using [$frontmatter](./global-computed.md#frontmatter) at the rest of the page, plus all custom and theming components. ::: tip -Front matter variables are **optional** in VuePress. +frontmatter variables are **optional** in VuePress. ::: -## Alternative Front Matter Formats +## Alternative frontmatter Formats -In addition, VuePress also supports JSON or [TOML](https://github.com/toml-lang/toml) front matter. +VuePress also supports JSON or [TOML](https://github.com/toml-lang/toml) frontmatter. -JSON front matter needs to start and end in curly braces: +JSON frontmatter needs to start and end in curly braces: ``` --- @@ -30,7 +30,7 @@ JSON front matter needs to start and end in curly braces: --- ``` -TOML front matter needs to be explicitly marked as TOML: +TOML frontmatter needs to be explicitly marked as TOML: ``` ---toml diff --git a/packages/docs/docs/guide/getting-started.md b/packages/docs/docs/guide/getting-started.md index 321cdf87..3fda7e10 100644 --- a/packages/docs/docs/guide/getting-started.md +++ b/packages/docs/docs/guide/getting-started.md @@ -6,7 +6,7 @@ VuePress requires Node.js >= 8. ## Global Installation -If you just want to play around with VuePress, you can install it globally: +If you only want to play around with VuePress, you can install it globally: ``` bash # install globally @@ -37,7 +37,7 @@ echo '# Hello VuePress' > docs/README.md ``` ::: warning -It is currently recommended to use [Yarn](https://yarnpkg.com/en/) instead of npm when installing VuePress into an existing project that has webpack 3.x as a dependency. Npm fails to generate the correct dependency tree in this case. +We currently recommend using [Yarn](https://yarnpkg.com/en/) instead of npm when installing VuePress into an existing project that has webpack 3.x as a dependency, because npm fails to generate the correct dependency tree in this case. ::: Then, add some scripts to `package.json`: diff --git a/packages/docs/docs/guide/global-computed.md b/packages/docs/docs/guide/global-computed.md index b64922a7..dcb1bb57 100644 --- a/packages/docs/docs/guide/global-computed.md +++ b/packages/docs/docs/guide/global-computed.md @@ -1,10 +1,10 @@ # Global Computed -In VuePress, some core [computed](https://vuejs.org/v2/guide/computed.html#Computed-Properties) properties are built in for use by [default theme](../theme/default-theme-config.md) or custom themes. +In VuePress, some core [computed](https://vuejs.org/v2/guide/computed.html#Computed-Properties) properties are built-in for use by [default theme](../theme/default-theme-config.md) or custom themes. ## $site -This is the `$site` value of the website you see now: +This is the `$site` value of the site you see now: ``` json { @@ -80,4 +80,4 @@ The `content` value of the `` for the c ## $themeConfig -i.e. `siteConfig.themeConfig`。 +That is `siteConfig.themeConfig`。 diff --git a/packages/docs/docs/guide/i18n.md b/packages/docs/docs/guide/i18n.md index 5dbe7421..12dc6546 100644 --- a/packages/docs/docs/guide/i18n.md +++ b/packages/docs/docs/guide/i18n.md @@ -2,7 +2,7 @@ ## Site Level i18n Config -To leverage multi-language support in VuePress, you first need to use the following file structure: +To take advantage of multi-language support in VuePress, you first need to use the following file structure: ``` docs @@ -42,7 +42,7 @@ If a locale does not have `title` or `description` VuePress will fallback to the ## Default Theme i18n Config -The default theme also has built-in i18n support via `themeConfig.locales`, using the same `{ path: config }` format. Each locale can have its own [nav](../theme/default-theme-config.md#navbar-links) and [sidebar](../theme/default-theme-config.md#sidebar) config, in addition to a few other text values used across the site: +The default theme also has built-in i18n support via `themeConfig.locales`, using the same `{ path: config }` format. Each locale can have its own [nav](../theme/default-theme-config.md#navbar-links) and [sidebar](../theme/default-theme-config.md#sidebar) config, along with some other text values used across the site: ``` js module.exports = { @@ -56,7 +56,7 @@ module.exports = { label: 'English', // text for the edit-on-github link editLinkText: 'Edit this page on GitHub', - // config for Service Worker + // config for Service Worker serviceWorker: { updatePopup: { message: "New content is available.", diff --git a/packages/docs/docs/guide/markdown-slot.md b/packages/docs/docs/guide/markdown-slot.md index ca6399c1..fc65d142 100644 --- a/packages/docs/docs/guide/markdown-slot.md +++ b/packages/docs/docs/guide/markdown-slot.md @@ -1,20 +1,20 @@ # Markdown Slot -VuePress implements a content distribution API for Markdown. With this feature, you can split your document into multiple fragments to facilitate flexible composition in the layout component. +VuePress implements a content distribution API for Markdown. With this feature, you can split your document into fragments, allowing flexible composition in the layout component. ## Why do I need Markdown Slot? -First, let's review the relationship between layout components and markdown files: +First, let’s review the relationship between layout components and Markdown files: -Markdown files are providers of metadata (Page content, Configuration, etc.), while layout components consume them. We can use `frontmatter` to define some metadata for common data types, but `frontmatter` is hard to do something about markdown / HTML, a complex metadata that involves differences before and after compilation. +Markdown files are providers of metadata (Page content, Configuration, etc.), while layout components consume them. We can use `frontmatter` to define some metadata for common data types, but `frontmatter` is hard to do something about Markdown / HTML, a complex metadata that involves differences before and after compilation. Markdown Slot is to solve this kind of problem. ## Named Slots -You can define a named markdown slot through the following markdown syntax: +You can define a named Markdown slot through the following Markdown syntax: ``` md ::: slot name @@ -34,7 +34,7 @@ Here we are using `slot-key` instead of `slot`, because in Vue, `slot` is a rese ## Default Slot Content -By default, the slot-free part of a markdown file becomes the default content of a markdown slot, which you can access directly using the `Content` component: +By default, the slot-free part of a Markdown file becomes the default content of a Markdown slot, which you can access directly using the `Content` component: ``` vue @@ -60,7 +60,7 @@ Suppose your layout component is as follows: ``` -If the markdown content of a page is like this: +If the Markdown content of a page is like this: ```md ::: slot header @@ -100,6 +100,10 @@ Then the rendered HTML of this page will be:
    ``` + + Note that: 1. Unlike the slot mechanism provided by [Vue](https://vuejs.org/v2/guide/components-slots.html) itself, each content distribution is wrapped in a `div` whose class is `content` with the name of the slot. 2. Please ensure the uniqueness of the slot defined. + + diff --git a/packages/docs/docs/guide/markdown.md b/packages/docs/docs/guide/markdown.md index b844515f..c9bde4f9 100644 --- a/packages/docs/docs/guide/markdown.md +++ b/packages/docs/docs/guide/markdown.md @@ -8,7 +8,7 @@ Headers automatically get anchor links applied. Rendering of anchors can be conf ### Internal Links -Internal links are converted to `` for SPA navigation. Also, every `README.md` or `index.md` contained in each sub-directory will automatically be converted to `index.html`, with corresponding url `/`. +Internal links are converted to `` for SPA navigation. Also, every `README.md` or `index.md` contained in each sub-directory will automatically be converted to `index.html`, with corresponding URL `/`. Given the following directory structure: @@ -37,7 +37,7 @@ And providing you are in `foo/one.md`: ### Redirection for URLs -VuePress supports redirecting to clean links. If a link `/foo` is not found, VuePress will look for a existing `/foo/` or `/foo.html`. Conversely, when one of `/foo/` or `/foo.html` is not found, VuePress will also try the other. With this feature, we can customize your website's urls with the official plugin [vuepress-plugin-clean-urls](https://vuepress.github.io/plugins/clean-urls/). +VuePress supports redirecting to clean links. If a link `/foo` is not found, VuePress will look for a existing `/foo/` or `/foo.html`. Conversely, when one of `/foo/` or `/foo.html` is not found, VuePress will also try the other. With this feature, we can customize your website’s URLs with the official plugin [vuepress-plugin-clean-urls](https://vuepress.github.io/plugins/clean-urls/). ::: tip Regardless of whether the permalink and clean-urls plugins are used, your relative path should be defined by the current file structure. In the above example, even though you set the path of `/foo/one.md` to `/foo/one/`, you should still access `/foo/two.md` via `./two.md`. @@ -52,9 +52,9 @@ Outbound links automatically gets `target="_blank" rel="noopener noreferrer"`: You can customize the attributes added to external links by setting [config.markdown.externalLinks](../config/README.md#markdown-externallinks). -## Front Matter +## Frontmatter -[YAML front matter](https://jekyllrb.com/docs/frontmatter/) is supported out of the box: +[YAML frontmatter](https://jekyllrb.com/docs/frontmatter/) is supported out of the box: ``` yaml --- @@ -65,7 +65,7 @@ lang: en-US This data will be available to the rest of the page, along with all custom and theming components. -For more details, check out the [Front Matter](./frontmatter.md) page. +For more details, check out the [Frontmatter](./frontmatter.md) page. ## GitHub-Style Tables @@ -165,7 +165,7 @@ Danger zone, do not proceed ## Syntax Highlighting in Code Blocks -VuePress uses [Prism](https://prismjs.com/) to highlight language syntax in markdown code blocks, using coloured text. Prism supports a wide variety of programming languages. All you need to do is append a valid language alias to the beginning backticks for the code block: +VuePress uses [Prism](https://prismjs.com/) to highlight language syntax in Markdown code blocks, using coloured text. Prism supports a wide variety of programming languages. All you need to do is append a valid language alias to the beginning backticks for the code block: **Input** @@ -215,7 +215,7 @@ export default {
``` -Check out [the list of valid languages](https://prismjs.com/#languages-list) on the Prism website. +Check out [the list of valid languages](https://prismjs.com/#languages-list) on the Prism site. ## Line Highlighting in Code Blocks @@ -314,13 +314,13 @@ It also supports [line highlighting](#line-highlighting-in-code-blocks): <<< @/../@vuepress/markdown/__tests__/fragments/snippet.js{2} ::: tip -Since the import of the code snippets will be executed before webpack compilation, you can't use the path alias in webpack. The default value of `@` is `process.cwd()`. +Since the import of the code snippets will be executed before webpack compilation, you can’t use the path alias in webpack. The default value of `@` is `process.cwd()`. ::: ## Advanced Configuration -VuePress uses [markdown-it](https://github.com/markdown-it/markdown-it) as the markdown renderer. A lot of the extensions above are implemented via custom plugins. You can further customize the `markdown-it` instance using the `markdown` option in `.vuepress/config.js`: +VuePress uses [markdown-it](https://github.com/markdown-it/markdown-it) as the Markdown renderer. A lot of the extensions above are implemented via custom plugins. You can further customize the `markdown-it` instance using the `markdown` option in `.vuepress/config.js`: ``` js module.exports = { diff --git a/packages/docs/docs/guide/permalinks.md b/packages/docs/docs/guide/permalinks.md index 9399e292..0069a6c7 100644 --- a/packages/docs/docs/guide/permalinks.md +++ b/packages/docs/docs/guide/permalinks.md @@ -2,7 +2,7 @@ ## Background -Before 1.x.x, VuePress retrieves all markdown files in the documents source directory and defines the page links based on the file hierarchy. e.g. if you have the following file structure: +Before 1.x.x, VuePress retrieves all Markdown files in the documents source directory and defines the page links based on the file hierarchy. For example if you have the following file structure: ``` ├── package.json @@ -21,7 +21,7 @@ Then you will get following available pages: /source/_post/intro-vuepress.html ``` -However, for a blog system, we hope that the link of a post can be customized. VuePress started supporting this feature from `1.0.0`. which is known as `permalink`. Then, the actual pages would be: +Yet, for a blog system, we hope that the link of a post can be customized. VuePress started supporting this feature, known as permalink, from `1.0.0`. Then, the actual pages would be: ``` /source/ @@ -29,11 +29,11 @@ However, for a blog system, we hope that the link of a post can be customized. V /source/2018/4/1/intro-vuepress.html ``` -It seems that we have seen the shadow of the blog. Let's continue to look down. +We have seen the shadow of the blog. Let’s continue to look down. ## Permalinks -A permalink is a URL that is intended to remain unchanged for many years into the future, yielding a hyperlink that is less susceptible to link root[1]. VuePress supports a flexible way to build permalinks, allowing you to leverage various template variables. +A permalink is a URL that is intended to remain unchanged for a long time, yielding a hyperlink that is less susceptible to link root[1]. VuePress supports a flexible way to build permalinks, allowing you to use template variables. The default permalink is `/:regular`. @@ -48,7 +48,7 @@ module.exports = { } ``` -Alternatively, you can also set permalink on a page only, and it will have a higher priority than the global settings. +You can also set permalink on a page only, and it will have a higher priority than the global settings. 📝 __hello.md__: diff --git a/packages/docs/docs/guide/using-vue.md b/packages/docs/docs/guide/using-vue.md index f5628b6a..d982641a 100644 --- a/packages/docs/docs/guide/using-vue.md +++ b/packages/docs/docs/guide/using-vue.md @@ -12,7 +12,7 @@ If you are using or demoing components that are not SSR friendly (for example co ``` -Note this does not fix components or libraries that access Browser APIs **on import** - in order to use code that assumes a browser environment on import, you need to dynamically import them in proper lifecycle hooks: +Note this does not fix components or libraries that access Browser APIs **on import** - to use code that assumes a browser environment on import, you need to dynamically import them in proper lifecycle hooks: ``` vue diff --git a/packages/@vuepress/theme-default/components/PageEdit.vue b/packages/@vuepress/theme-default/components/PageEdit.vue new file mode 100644 index 00000000..afb1f38d --- /dev/null +++ b/packages/@vuepress/theme-default/components/PageEdit.vue @@ -0,0 +1,142 @@ + + + diff --git a/packages/@vuepress/theme-default/components/PageNav.vue b/packages/@vuepress/theme-default/components/PageNav.vue new file mode 100644 index 00000000..926a397d --- /dev/null +++ b/packages/@vuepress/theme-default/components/PageNav.vue @@ -0,0 +1,120 @@ + + + diff --git a/packages/@vuepress/theme-default/components/SidebarLink.vue b/packages/@vuepress/theme-default/components/SidebarLink.vue index bc5de287..5183aa6f 100644 --- a/packages/@vuepress/theme-default/components/SidebarLink.vue +++ b/packages/@vuepress/theme-default/components/SidebarLink.vue @@ -38,7 +38,7 @@ export default { $themeLocaleConfig.sidebarDepth, $themeConfig.sidebarDepth, 1 - ].find(depth => depth !== undefined); + ].find(depth => depth !== undefined) const displayAllHeaders = $themeLocaleConfig.displayAllHeaders || $themeConfig.displayAllHeaders From 3b68913996cf90383603cbb7dbdce54003ab51e1 Mon Sep 17 00:00:00 2001 From: Shigma <33423008+Shigma@users.noreply.github.com> Date: Sat, 7 Sep 2019 12:58:17 +0800 Subject: [PATCH 233/233] feat($core): better layout check (#1455) * better layout check * enhance resolve SFCs * fix(layout): fix broken class content * fix(delete): delete useless use of context --- packages/@vuepress/core/lib/node/loadTheme.js | 12 ++-- .../core/lib/node/theme-api/index.js | 71 ++++++++++--------- .../theme-default/components/Page.vue | 4 +- 3 files changed, 47 insertions(+), 40 deletions(-) diff --git a/packages/@vuepress/core/lib/node/loadTheme.js b/packages/@vuepress/core/lib/node/loadTheme.js index f85a5b1d..ac4c9587 100755 --- a/packages/@vuepress/core/lib/node/loadTheme.js +++ b/packages/@vuepress/core/lib/node/loadTheme.js @@ -9,7 +9,8 @@ const { path: { resolve, parse }, moduleResolver: { getThemeResolver }, datatypes: { isString }, - logger, chalk + logger, + chalk } = require('@vuepress/shared-utils') const ThemeAPI = require('./theme-api') @@ -37,7 +38,7 @@ module.exports = function loadTheme (ctx) { if (!theme.path) { throw new Error( '[vuepress] You must specify a theme, or create a local custom theme. \n' - + 'For more details, refer to https://vuepress.vuejs.org/guide/custom-themes.html#custom-themes. \n' + + 'For more details, refer to https://vuepress.vuejs.org/guide/custom-themes.html#custom-themes. \n' ) } @@ -55,7 +56,7 @@ module.exports = function loadTheme (ctx) { logger.debug('theme', theme.name, theme.path) logger.debug('parentTheme', parentTheme.name, parentTheme.path) - return new ThemeAPI(theme, parentTheme, ctx) + return new ThemeAPI(theme, parentTheme) } function normalizeThemePath (resolved) { @@ -82,10 +83,11 @@ function resolveTheme (ctx, resolver, ignoreLocal, theme) { /** * 1. From `.vuepress/theme` directory. */ - if (!ignoreLocal + if ( + !ignoreLocal && !fs.existsSync(theme) && fs.existsSync(localThemePath) - && (fs.readdirSync(localThemePath)).length > 0 + && fs.readdirSync(localThemePath).length > 0 ) { path = localThemePath name = shortcut = 'local' diff --git a/packages/@vuepress/core/lib/node/theme-api/index.js b/packages/@vuepress/core/lib/node/theme-api/index.js index 861ceeea..31263ef9 100644 --- a/packages/@vuepress/core/lib/node/theme-api/index.js +++ b/packages/@vuepress/core/lib/node/theme-api/index.js @@ -1,5 +1,9 @@ -const { logger, fs, path: { resolve }} = require('@vuepress/shared-utils') -const readdirSync = dir => fs.existsSync(dir) && fs.readdirSync(dir) || [] +const { + logger, + fs, + path: { resolve } +} = require('@vuepress/shared-utils') +const readdirSync = dir => (fs.existsSync(dir) && fs.readdirSync(dir)) || [] module.exports = class ThemeAPI { constructor (theme, parentTheme) { @@ -30,12 +34,12 @@ module.exports = class ThemeAPI { this.componentMap = this.getComponents() this.layoutComponentMap = this.getLayoutComponentMap() - Object.keys(this.componentMap).forEach((name) => { + Object.keys(this.componentMap).forEach(name => { const { filename, path } = this.componentMap[name] alias[`@theme/components/${filename}`] = path }) - Object.keys(this.layoutComponentMap).forEach((name) => { + Object.keys(this.layoutComponentMap).forEach(name => { const { filename, path } = this.layoutComponentMap[name] alias[`@theme/layouts/${filename}`] = path }) @@ -44,13 +48,9 @@ module.exports = class ThemeAPI { } getComponents () { - const componentDirs = [ - resolve(this.theme.path, 'components') - ] + const componentDirs = [resolve(this.theme.path, 'components')] if (this.existsParentTheme) { - componentDirs.unshift( - resolve(this.parentTheme.path, 'components'), - ) + componentDirs.unshift(resolve(this.parentTheme.path, 'components')) } return resolveSFCs(componentDirs) } @@ -63,15 +63,15 @@ module.exports = class ThemeAPI { if (this.existsParentTheme) { layoutDirs.unshift( resolve(this.parentTheme.path, '.'), - resolve(this.parentTheme.path, 'layouts'), + resolve(this.parentTheme.path, 'layouts') ) } // built-in named layout or not. const layoutComponentMap = resolveSFCs(layoutDirs) - const { Layout = {}, NotFound = {}} = layoutComponentMap + const { Layout, NotFound } = layoutComponentMap // layout component does not exist. - if (!Layout || !fs.existsSync(Layout.path)) { + if (!Layout) { const fallbackLayoutPath = resolve(__dirname, 'Layout.fallback.vue') layoutComponentMap.Layout = { filename: 'Layout.vue', @@ -81,10 +81,10 @@ module.exports = class ThemeAPI { } logger.warn( `[vuepress] Cannot resolve Layout.vue file in \n ${Layout.path}, ` - + `fallback to default layout: ${fallbackLayoutPath}` + + `fallback to default layout: ${fallbackLayoutPath}` ) } - if (!NotFound || !fs.existsSync(NotFound.path)) { + if (!NotFound) { layoutComponentMap.NotFound = { filename: 'NotFound.vue', componentName: 'NotFound', @@ -104,25 +104,28 @@ module.exports = class ThemeAPI { */ function resolveSFCs (dirs) { - return dirs.map( - layoutDir => readdirSync(layoutDir) - .filter(filename => filename.endsWith('.vue')) - .map(filename => { - const componentName = getComponentName(filename) - return { - filename, - componentName, - isInternal: isInternal(componentName), - path: resolve(layoutDir, filename) - } - }) - ).reduce((arr, next) => { - arr.push(...next) - return arr - }, []).reduce((map, component) => { - map[component.componentName] = component - return map - }, {}) + return dirs + .map(layoutDir => + readdirSync(layoutDir) + .filter(filename => filename.endsWith('.vue')) + .map(filename => { + const componentName = getComponentName(filename) + return { + filename, + componentName, + isInternal: isInternal(componentName), + path: resolve(layoutDir, filename) + } + }) + ) + .reduce((arr, next) => { + arr.push(...next) + return arr + }, []) + .reduce((map, component) => { + map[component.componentName] = component + return map + }, {}) } /** diff --git a/packages/@vuepress/theme-default/components/Page.vue b/packages/@vuepress/theme-default/components/Page.vue index 0fff66a4..1346299a 100644 --- a/packages/@vuepress/theme-default/components/Page.vue +++ b/packages/@vuepress/theme-default/components/Page.vue @@ -2,7 +2,7 @@
- + @@ -22,6 +22,8 @@ export default {