From 7f7bf91d3fc69674d8d45c7e6861aa7dfcf8582a Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 25 May 2017 18:06:42 +0800 Subject: [PATCH 0001/1232] style tweak --- src/compiler/parser/index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/compiler/parser/index.js b/src/compiler/parser/index.js index 93db19610df..2da48b75053 100644 --- a/src/compiler/parser/index.js +++ b/src/compiler/parser/index.js @@ -48,12 +48,15 @@ export function parse ( options: CompilerOptions ): ASTElement | void { warn = options.warn || baseWarn - platformGetTagNamespace = options.getTagNamespace || no - platformMustUseProp = options.mustUseProp || no + platformIsPreTag = options.isPreTag || no - preTransforms = pluckModuleFunction(options.modules, 'preTransformNode') + platformMustUseProp = options.mustUseProp || no + platformGetTagNamespace = options.getTagNamespace || no + transforms = pluckModuleFunction(options.modules, 'transformNode') + preTransforms = pluckModuleFunction(options.modules, 'preTransformNode') postTransforms = pluckModuleFunction(options.modules, 'postTransformNode') + delimiters = options.delimiters const stack = [] From d333a498e93acf2d2844fd396e8544658958a3c6 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 25 May 2017 18:15:15 +0800 Subject: [PATCH 0002/1232] simplify v-model assignment gen + support adding reactive field when using dynamic segments --- src/compiler/directives/model.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/compiler/directives/model.js b/src/compiler/directives/model.js index d4f8a2e6c1b..61fe1d1184e 100644 --- a/src/compiler/directives/model.js +++ b/src/compiler/directives/model.js @@ -41,10 +41,7 @@ export function genAssignmentCode ( if (modelRs.idx === null) { return `${value}=${assignment}` } else { - return `var $$exp = ${modelRs.exp}, $$idx = ${modelRs.idx};` + - `if (!Array.isArray($$exp)){` + - `${value}=${assignment}}` + - `else{$$exp.splice($$idx, 1, ${assignment})}` + return `$set(${modelRs.exp}, ${modelRs.idx}, ${assignment})` } } From e6de9a5de28d466b5d4e57e6d5d3baf13d8349b0 Mon Sep 17 00:00:00 2001 From: katashin Date: Sun, 28 May 2017 21:08:58 +0900 Subject: [PATCH 0003/1232] Add types for vue-server-renderer (fix #5772) (#5775) * add types for vue-server-renderer * add a new line to the end of files * make RenderCallback's err to be nullable * fix the server side directive types * make stricter the types of the server bundle and the client manifest --- packages/vue-server-renderer/package.json | 9 ++ packages/vue-server-renderer/types/index.d.ts | 44 ++++++++++ packages/vue-server-renderer/types/test.ts | 84 +++++++++++++++++++ .../vue-server-renderer/types/tsconfig.json | 13 +++ 4 files changed, 150 insertions(+) create mode 100644 packages/vue-server-renderer/types/index.d.ts create mode 100644 packages/vue-server-renderer/types/test.ts create mode 100644 packages/vue-server-renderer/types/tsconfig.json diff --git a/packages/vue-server-renderer/package.json b/packages/vue-server-renderer/package.json index ffdb4546671..64e470af322 100644 --- a/packages/vue-server-renderer/package.json +++ b/packages/vue-server-renderer/package.json @@ -3,6 +3,7 @@ "version": "2.3.3", "description": "server renderer for Vue 2.0", "main": "index.js", + "types": "types/index.d.ts", "repository": { "type": "git", "url": "git+https://github.com/vuejs/vue.git" @@ -17,6 +18,9 @@ "bugs": { "url": "https://github.com/vuejs/vue/issues" }, + "scripts": { + "test:types": "tsc -p types" + }, "dependencies": { "chalk": "^1.1.3", "hash-sum": "^1.0.2", @@ -27,5 +31,10 @@ "source-map": "0.5.6", "serialize-javascript": "^1.3.0" }, + "devDependencies": { + "@types/node": "^7.0.22", + "typescript": "^2.3.3", + "vue": "file:../.." + }, "homepage": "https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer#readme" } diff --git a/packages/vue-server-renderer/types/index.d.ts b/packages/vue-server-renderer/types/index.d.ts new file mode 100644 index 00000000000..d2c8394cba4 --- /dev/null +++ b/packages/vue-server-renderer/types/index.d.ts @@ -0,0 +1,44 @@ +import Vue = require('vue'); +import { Readable } from 'stream'; + +export declare function createRenderer(options?: RendererOptions): Renderer; + +export declare function createBundleRenderer(bundle: string | object, options?: BundleRendererOptions): BundleRenderer; + +type RenderCallback = (err: Error | null, html: string) => void; + +interface Renderer { + renderToString(vm: Vue, callback: RenderCallback): void; + renderToString(vm: Vue, context: object, callback: RenderCallback): void; + + renderToStream(vm: Vue, context?: object): Readable; +} + +interface BundleRenderer { + renderToString(callback: RenderCallback): void; + renderToString(context: object, callback: RenderCallback): void; + + renderToStream(context?: object): Readable; +} + +interface RendererOptions { + template?: string; + inject?: boolean; + shouldPreload?: (file: string, type: string) => boolean; + cache?: RenderCache; + directives?: { + [key: string]: (vnode: Vue.VNode, dir: Vue.VNodeDirective) => void + }; +} + +interface BundleRendererOptions extends RendererOptions { + clientManifest?: object; + runInNewContext?: boolean | 'once'; + basedir?: string; +} + +interface RenderCache { + get: (key: string, cb?: (res: string) => void) => string | void; + set: (key: string, val: string) => void; + has?: (key: string, cb?: (hit: boolean) => void) => boolean | void; +} diff --git a/packages/vue-server-renderer/types/test.ts b/packages/vue-server-renderer/types/test.ts new file mode 100644 index 00000000000..06e2759aca0 --- /dev/null +++ b/packages/vue-server-renderer/types/test.ts @@ -0,0 +1,84 @@ +import Vue = require('vue'); +import { readFileSync } from 'fs'; +import { createRenderer, createBundleRenderer } from '../'; + +function createApp (context: any) { + return new Vue({ + data: { + url: context.url + }, + template: `
The visited URL is: {{ url }}
` + }); +} + +// Renderer test +const app = createApp({ url: 'http://localhost:8000/' }); + +const renderer = createRenderer({ + template: readFileSync('./index.template.html', 'utf-8') +}); + +const context = { + title: 'Hello', + meta: ` + + ` +}; + +renderer.renderToString(app, context, (err, html) => { + if (err) throw err; + const res: string = html; +}); + +renderer.renderToStream(app, context).on('data', chunk => { + const html = chunk.toString(); +}); + +// Bundle renderer test +declare const cacheClient: { [key: string]: string }; + +const bundleRenderer = createBundleRenderer('/path/to/vue-ssr-server-bundle.json', { + inject: false, + runInNewContext: 'once', + basedir: '/path/to/base', + + shouldPreload: (file, type) => { + if (type === 'script' || type === 'style') { + return true; + } + if (type === 'font') { + return /\.woff2$/.test(file); + } + if (type === 'image') { + return file === 'hero.jpg'; + } + return false; + }, + + cache: { + get: key => { + return cacheClient[key]; + }, + set: (key, val) => { + cacheClient[key] = val; + }, + has: key => { + return !!cacheClient[key]; + } + }, + + directives: { + example (vnode: Vue.VNode, directiveMeta: Vue.VNodeDirective) { + // transform vnode based on directive binding metadata + } + } +}); + +bundleRenderer.renderToString(context, (err, html) => { + if (err) throw err; + const res: string = html; +}); + +bundleRenderer.renderToStream(context).on('data', chunk => { + const html = chunk.toString(); +}); diff --git a/packages/vue-server-renderer/types/tsconfig.json b/packages/vue-server-renderer/types/tsconfig.json new file mode 100644 index 00000000000..084dd317ea1 --- /dev/null +++ b/packages/vue-server-renderer/types/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "moduleResolution": "node", + "strict": true, + "noEmit": true + }, + "compileOnSave": false, + "include": [ + "**/*.ts" + ] +} From 0cc0b0726d389fca535b35e4593a5ecca3dde6c9 Mon Sep 17 00:00:00 2001 From: Shyam Chen Date: Mon, 29 May 2017 00:29:22 -0500 Subject: [PATCH 0004/1232] feat: add .editorconfig (#5691) --- .editorconfig | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000000..f1cc3ad329c --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +# http://editorconfig.org + +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false From e274c96881f8b14486587e93f404be489454d781 Mon Sep 17 00:00:00 2001 From: AchillesJ Date: Mon, 29 May 2017 13:29:55 +0800 Subject: [PATCH 0005/1232] callUpdateHooks --> callUpdatedHooks (#5734) --- src/core/observer/scheduler.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/observer/scheduler.js b/src/core/observer/scheduler.js index 2368417cb72..fce86e5f40b 100644 --- a/src/core/observer/scheduler.js +++ b/src/core/observer/scheduler.js @@ -81,7 +81,7 @@ function flushSchedulerQueue () { // call component updated and activated hooks callActivatedHooks(activatedQueue) - callUpdateHooks(updatedQueue) + callUpdatedHooks(updatedQueue) // devtool hook /* istanbul ignore if */ @@ -90,7 +90,7 @@ function flushSchedulerQueue () { } } -function callUpdateHooks (queue) { +function callUpdatedHooks (queue) { let i = queue.length while (i--) { const watcher = queue[i] From b182ac40697edbe8253d4bd68b6ac09e93259e1c Mon Sep 17 00:00:00 2001 From: Maciej Kasprzyk Date: Mon, 29 May 2017 07:49:49 +0200 Subject: [PATCH 0006/1232] Warn when a inject has been not provided (#5681) * warn when a inject has been not provided * typo * typo * fix when undefined is provided * use util hasOwn * refactor * test case * Revert "test case" This reverts commit 08f0a8b6c3837fc34ddd264712b8c30a05c165e5. * test case --- src/core/instance/inject.js | 4 ++++ test/unit/features/options/inject.spec.js | 29 +++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/core/instance/inject.js b/src/core/instance/inject.js index b68ded58090..38fa6b108aa 100644 --- a/src/core/instance/inject.js +++ b/src/core/instance/inject.js @@ -3,6 +3,7 @@ import { hasSymbol } from 'core/util/env' import { warn } from '../util/index' import { defineReactive } from '../observer/index' +import { hasOwn } from 'shared/util' export function initProvide (vm: Component) { const provide = vm.$options.provide @@ -57,6 +58,9 @@ export function resolveInject (inject: any, vm: Component): ?Object { } source = source.$parent } + if (process.env.NODE_ENV !== 'production' && !hasOwn(result, key)) { + warn(`Injection "${key}" not found`, vm) + } } return result } diff --git a/test/unit/features/options/inject.spec.js b/test/unit/features/options/inject.spec.js index fdb69ea1c34..3181a19fcdc 100644 --- a/test/unit/features/options/inject.spec.js +++ b/test/unit/features/options/inject.spec.js @@ -240,4 +240,33 @@ describe('Options provide/inject', () => { `overwritten whenever the provided component re-renders. ` + `injection being mutated: "${key}"`).toHaveBeenWarned() }) + + it('should warn when injections cannot be found', () => { + const vm = new Vue({}) + new Vue({ + parent: vm, + inject: ['foo', 'bar'], + created () {} + }) + expect(`Injection "foo" not found`).toHaveBeenWarned() + expect(`Injection "bar" not found`).toHaveBeenWarned() + }) + + it('should not warn when injections can be found', () => { + const vm = new Vue({ + provide: { + foo: 1, + bar: false, + baz: undefined + } + }) + new Vue({ + parent: vm, + inject: ['foo', 'bar', 'baz'], + created () {} + }) + expect(`Injection "foo" not found`).not.toHaveBeenWarned() + expect(`Injection "bar" not found`).not.toHaveBeenWarned() + expect(`Injection "baz" not found`).not.toHaveBeenWarned() + }) }) From 11b7d5dff276caa54da3ef5b52444c0e2c5bbf41 Mon Sep 17 00:00:00 2001 From: Chris Nicola Date: Sun, 28 May 2017 23:24:25 -0700 Subject: [PATCH 0007/1232] Add handleError during event handling (#5709) * Add handleError during event handling Currently handleError is used to handle errors during lifecycle hooks. This commit adds this functionality in to the event handling for consistency. * style tweak --- src/core/instance/events.js | 14 ++++++++++++-- test/unit/features/error-handling.spec.js | 16 +++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/core/instance/events.js b/src/core/instance/events.js index 57d0edee30e..a81f2b7e3a1 100644 --- a/src/core/instance/events.js +++ b/src/core/instance/events.js @@ -1,7 +1,13 @@ /* @flow */ +import { + tip, + toArray, + hyphenate, + handleError, + formatComponentName +} from '../util/index' import { updateListeners } from '../vdom/helpers/index' -import { toArray, tip, hyphenate, formatComponentName } from '../util/index' export function initEvents (vm: Component) { vm._events = Object.create(null) @@ -121,7 +127,11 @@ export function eventsMixin (Vue: Class) { cbs = cbs.length > 1 ? toArray(cbs) : cbs const args = toArray(arguments, 1) for (let i = 0, l = cbs.length; i < l; i++) { - cbs[i].apply(vm, args) + try { + cbs[i].apply(vm, args) + } catch (e) { + handleError(e, vm, `event handler for "${event}"`) + } } } return vm diff --git a/test/unit/features/error-handling.spec.js b/test/unit/features/error-handling.spec.js index 6f8fd044e2f..033f9a3b7d5 100644 --- a/test/unit/features/error-handling.spec.js +++ b/test/unit/features/error-handling.spec.js @@ -11,7 +11,8 @@ describe('Error handling', () => { ['beforeCreate', 'beforeCreate hook'], ['created', 'created hook'], ['beforeMount', 'beforeMount hook'], - ['directive bind', 'directive foo bind hook'] + ['directive bind', 'directive foo bind hook'], + ['event', 'event handler for "e"'] ].forEach(([type, description]) => { it(`should recover from errors in ${type}`, done => { const vm = createTestInstance(components[type]) @@ -215,6 +216,19 @@ function createErrorTestComponents () { } } + // event errors + components.event = { + beforeCreate () { + this.$on('e', () => { throw new Error('event') }) + }, + mounted () { + this.$emit('e') + }, + render (h) { + return h('div') + } + } + return components } From da1fc3ddc97fb78621f518d03c549ebecc9b1108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=9F=B3=E5=B2=B8?= Date: Tue, 30 May 2017 00:33:48 -0500 Subject: [PATCH 0008/1232] improve: add missing html and svg tag (#5688) * imporve: add missing html and svg tag * reivew * fix: review --- src/platforms/web/util/element.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platforms/web/util/element.js b/src/platforms/web/util/element.js index 109499f21af..1cea48d5e5b 100644 --- a/src/platforms/web/util/element.js +++ b/src/platforms/web/util/element.js @@ -19,7 +19,7 @@ export const isHTMLTag = makeMap( 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + 'output,progress,select,textarea,' + 'details,dialog,menu,menuitem,summary,' + - 'content,element,shadow,template' + 'content,element,shadow,template,blockquote,iframe,tfoot' ) // this map is intentionally selective, only covering SVG elements that may From fb760b7e74d5c224995c7c86a3d5d7b3eb3416d1 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 30 May 2017 15:21:25 +0800 Subject: [PATCH 0009/1232] add chinese note in issue template --- .github/ISSUE_TEMPLATE.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 052cffb3801..3a9c0b2e35f 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -4,4 +4,7 @@ IMPORTANT: Please use the following link to create a new issue: https://new-issue.vuejs.org/ If your issue was not created using the app above, it will be closed immediately. + +中文用户请注意: +请使用上面的链接来创建新的 issue。如果不是用上述工具创建的 issue 会被自动关闭。 --> From ab1203a096b4ede6e58eea7c1d5e97f4b3636eee Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 1 Jun 2017 16:41:07 +0800 Subject: [PATCH 0010/1232] update eslint config --- .eslintrc | 16 +- package.json | 3 +- src/core/observer/index.js | 4 +- src/core/util/env.js | 2 +- src/platforms/weex/compiler/modules/props.js | 2 +- test/helpers/test-object-option.js | 2 +- yarn.lock | 498 ++++++++----------- 7 files changed, 228 insertions(+), 299 deletions(-) diff --git a/.eslintrc b/.eslintrc index fc040f8484a..06962bff1c0 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,14 +1,14 @@ { "root": true, - "parser": "babel-eslint", - "extends": "vue", - "plugins": ["flowtype"], + "plugins": [ + "vue-libs", + "flowtype" + ], + "extends": [ + "plugin:vue-libs/recommended", + "plugin:flowtype/recommended" + ], "globals": { "__WEEX__": true - }, - "rules": { - "no-useless-escape": 0, - "flowtype/define-flow-type": 1, - "flowtype/use-flow-type": 1 } } diff --git a/package.json b/package.json index 4808d2729a4..74c8c0453de 100644 --- a/package.json +++ b/package.json @@ -71,11 +71,10 @@ "de-indent": "^1.0.2", "es6-promise": "^4.0.5", "eslint": "^3.10.1", - "eslint-config-vue": "^2.0.1", "eslint-loader": "^1.3.0", "eslint-plugin-flowtype": "^2.16.0", "eslint-plugin-jasmine": "^2.1.0", - "eslint-plugin-vue": "^2.0.0", + "eslint-plugin-vue-libs": "^1.0.0", "file-loader": "^0.10.1", "flow-bin": "^0.45.0", "hash-sum": "^1.0.2", diff --git a/src/core/observer/index.js b/src/core/observer/index.js index 3783cfe2898..4d503203df2 100644 --- a/src/core/observer/index.js +++ b/src/core/observer/index.js @@ -198,7 +198,7 @@ export function set (target: Array | Object, key: any, val: any): any { target[key] = val return val } - const ob = (target : any).__ob__ + const ob = (target: any).__ob__ if (target._isVue || (ob && ob.vmCount)) { process.env.NODE_ENV !== 'production' && warn( 'Avoid adding reactive properties to a Vue instance or its root $data ' + @@ -223,7 +223,7 @@ export function del (target: Array | Object, key: any) { target.splice(key, 1) return } - const ob = (target : any).__ob__ + const ob = (target: any).__ob__ if (target._isVue || (ob && ob.vmCount)) { process.env.NODE_ENV !== 'production' && warn( 'Avoid deleting properties on a Vue instance or its root $data ' + diff --git a/src/core/util/env.js b/src/core/util/env.js index f8949409759..3609e6186e2 100644 --- a/src/core/util/env.js +++ b/src/core/util/env.js @@ -26,7 +26,7 @@ if (inBrowser) { /* istanbul ignore next */ supportsPassive = true } - } : Object)) // https://github.com/facebook/flow/issues/285 + }: Object)) // https://github.com/facebook/flow/issues/285 window.addEventListener('test-passive', null, opts) } catch (e) {} } diff --git a/src/platforms/weex/compiler/modules/props.js b/src/platforms/weex/compiler/modules/props.js index c46b34d67ee..8b0bb5f2e69 100644 --- a/src/platforms/weex/compiler/modules/props.js +++ b/src/platforms/weex/compiler/modules/props.js @@ -4,7 +4,7 @@ import { cached, camelize } from 'shared/util' const normalize = cached(camelize) -function normalizeKeyName (str: string) : string { +function normalizeKeyName (str: string): string { if (str.match(/^v\-/)) { return str.replace(/(v-[a-z\-]+\:)([a-z\-]+)$/i, ($, directive, prop) => { return directive + normalize(prop) diff --git a/test/helpers/test-object-option.js b/test/helpers/test-object-option.js index 1012ea10b44..c8361dc0e92 100644 --- a/test/helpers/test-object-option.js +++ b/test/helpers/test-object-option.js @@ -1,6 +1,6 @@ import Vue from 'vue' -export default function testObjectOption (name: string) { +export default function testObjectOption (name) { it('should warn non object', () => { const options = {} options[name] = () => {} diff --git a/yarn.lock b/yarn.lock index 77939799296..cea7c04cc02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -36,8 +36,8 @@ acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" acorn@^4.0.3: - version "4.0.11" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" acorn@^5.0.0, acorn@^5.0.1: version "5.0.3" @@ -52,8 +52,8 @@ after@0.8.2: resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" agent-base@2: - version "2.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e" + version "2.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" dependencies: extend "~3.0.0" semver "~5.0.1" @@ -63,8 +63,8 @@ ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" ajv@^4.7.0, ajv@^4.9.1: - version "4.11.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.6.tgz#947e93049790942b2a2d60a8289b28924d39f987" + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" @@ -136,11 +136,11 @@ archiver@1.3.0: zip-stream "^1.1.0" are-we-there-yet@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" dependencies: delegates "^1.0.0" - readable-stream "^2.0.0 || ^1.1.13" + readable-stream "^2.0.6" argparse@^1.0.7: version "1.0.9" @@ -155,8 +155,8 @@ arr-diff@^2.0.0: arr-flatten "^1.0.1" arr-flatten@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.2.tgz#1ec1e63439c54f67d6f72bb4299c3d4f73b2d996" + version "1.0.3" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" array-find-index@^1.0.1: version "1.0.2" @@ -180,13 +180,6 @@ array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" -array.prototype.find@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - arraybuffer.slice@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" @@ -257,10 +250,14 @@ async@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/async/-/async-0.9.0.tgz#ac3613b1da9bed1b47510bb4651b8931e47146c7" -async@1.4.0, async@1.x, async@^1.4.0: +async@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/async/-/async-1.4.0.tgz#35f86f83c59e0421d099cd9a91d8278fb578c00d" +async@1.x, async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + async@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/async/-/async-2.0.1.tgz#b709cc0280a9c36f09f4536be823c838a9049e25" @@ -268,8 +265,8 @@ async@2.0.1: lodash "^4.8.0" async@^2.0.0, async@^2.1.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9" + version "2.4.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7" dependencies: lodash "^4.14.0" @@ -326,13 +323,13 @@ babel-core@6, babel-core@^6.24.1, babel-core@^6.9.0: source-map "^0.5.0" babel-eslint@^7.1.0: - version "7.2.2" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.2.tgz#0da2cbe6554fd0fb069f19674f2db2f9c59270ff" + version "7.2.3" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" dependencies: babel-code-frame "^6.22.0" babel-traverse "^6.23.1" babel-types "^6.23.0" - babylon "^6.16.1" + babylon "^6.17.0" babel-generator@^6.18.0, babel-generator@^6.24.1: version "6.24.1" @@ -448,12 +445,12 @@ babel-plugin-check-es2015-constants@^6.22.0: babel-runtime "^6.22.0" babel-plugin-istanbul@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.1.tgz#c12de0fc6fe42adfb16be56f1ad11e4a9782eca9" + version "4.1.4" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz#18dde84bf3ce329fddf3f4103fae921456d8e587" dependencies: find-up "^2.1.0" - istanbul-lib-instrument "^1.6.2" - test-exclude "^4.0.3" + istanbul-lib-instrument "^1.7.2" + test-exclude "^4.1.1" babel-plugin-syntax-class-properties@^6.8.0: version "6.13.0" @@ -669,8 +666,8 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-types "^6.24.1" babel-plugin-transform-vue-jsx@^3.2.0: - version "3.4.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.4.2.tgz#906cfe3f1b669b15d3298fffe1006ad31c447d2c" + version "3.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.4.3.tgz#de57d8dd7d619333c981867728f3e6fdf68982ff" dependencies: esutils "^2.0.2" @@ -763,9 +760,9 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24 lodash "^4.2.0" to-fast-properties "^1.0.1" -babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0, babylon@^6.16.1, babylon@^6.8.4: - version "6.16.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" +babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0, babylon@^6.17.0, babylon@^6.8.4: + version "6.17.2" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.2.tgz#201d25ef5f892c41bae49488b08db0dd476e9f5c" backo2@1.0.2: version "1.0.2" @@ -808,8 +805,8 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" bl@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.0.tgz#1397e7ec42c5f5dc387470c500e34a9f6be9ea98" + version "1.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" dependencies: readable-stream "^2.0.5" @@ -838,19 +835,19 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" body-parser@^1.16.1: - version "1.17.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47" + version "1.17.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.2.tgz#f8892abc8f9e627d42aedafbca66bf5ab99104ee" dependencies: bytes "2.4.0" content-type "~1.0.2" - debug "2.6.1" + debug "2.6.7" depd "~1.1.0" http-errors "~1.6.1" iconv-lite "0.4.15" on-finished "~2.3.0" qs "6.4.0" raw-body "~2.2.0" - type-is "~1.6.14" + type-is "~1.6.15" boom@0.4.x: version "0.4.2" @@ -864,7 +861,7 @@ boom@2.x.x: dependencies: hoek "2.x.x" -brace-expansion@^1.0.0: +brace-expansion@^1.0.0, brace-expansion@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" dependencies: @@ -1062,8 +1059,8 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: supports-color "^2.0.0" chokidar@^1.4.1, chokidar@^1.4.3: - version "1.6.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: anymatch "^1.3.0" async-each "^1.0.0" @@ -1085,7 +1082,7 @@ chromedriver@^2.21.2: mkdirp "^0.5.1" rimraf "^2.5.4" -cipher-base@^1.0.0, cipher-base@^1.0.1: +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" dependencies: @@ -1236,11 +1233,11 @@ concat-stream@^1.5.2: typedarray "^0.0.6" connect@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e" + version "3.6.2" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.2.tgz#694e8d20681bfe490282c8ab886be98f09f42fe7" dependencies: - debug "2.6.1" - finalhandler "1.0.0" + debug "2.6.7" + finalhandler "1.0.3" parseurl "~1.3.1" utils-merge "1.0.0" @@ -1300,21 +1297,25 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-hash@^1.1.0, create-hash@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" +create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" dependencies: cipher-base "^1.0.1" inherits "^2.0.1" - ripemd160 "^1.0.0" - sha.js "^2.3.6" + ripemd160 "^2.0.0" + sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" dependencies: + cipher-base "^1.0.3" create-hash "^1.1.0" inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" cross-spawn@^5.0.1: version "5.1.0" @@ -1401,10 +1402,10 @@ debug@0.7.4: resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" debug@2, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: - ms "0.7.2" + ms "2.0.0" debug@2.2.0: version "2.2.0" @@ -1418,11 +1419,11 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" +debug@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" dependencies: - ms "0.7.2" + ms "2.0.0" decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" @@ -1439,20 +1440,13 @@ deep-equal@~0.1.0: resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.1.2.tgz#b246c2b80a570a47c11be1d9bd1070ec878b87ce" deep-extend@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" @@ -1548,13 +1542,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -doctrine@^1.2.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - doctrine@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" @@ -1591,14 +1578,14 @@ domelementtype@~1.1.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" domhandler@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + version "2.4.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" dependencies: domelementtype "1" domutils@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + version "1.6.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" dependencies: dom-serializer "0" domelementtype "1" @@ -1724,26 +1711,9 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.0" - is-callable "^1.1.3" - is-regex "^1.0.3" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.15" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6" + version "0.10.22" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.22.tgz#1876c51f990769c112c781ea3ebe89f84fd39071" dependencies: es6-iterator "2" es6-symbol "~3.1" @@ -1829,10 +1799,6 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-config-vue@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/eslint-config-vue/-/eslint-config-vue-2.0.2.tgz#a3ab1004899e49327a94c63e24d47a396b2f4848" - eslint-loader@^1.3.0: version "1.7.1" resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.7.1.tgz#50b158dd6272dcefb97e984254837f81a5802ce0" @@ -1845,14 +1811,14 @@ eslint-loader@^1.3.0: rimraf "^2.6.1" eslint-plugin-flowtype@^2.16.0: - version "2.30.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.30.4.tgz#771d6bb4578ab8598e9c58018fea2e1a22946249" + version "2.34.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.34.0.tgz#b9875f314652e5081623c9d2b18a346bbb759c09" dependencies: lodash "^4.15.0" eslint-plugin-html@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-2.0.1.tgz#3a829510e82522f1e2e44d55d7661a176121fce1" + version "2.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-2.0.3.tgz#7c89883ab0c85fa5d28b666a14a4e906aa90b897" dependencies: htmlparser2 "^3.8.2" @@ -1860,22 +1826,11 @@ eslint-plugin-jasmine@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.2.0.tgz#7135879383c39a667c721d302b9f20f0389543de" -eslint-plugin-react@^6.9.0: - version "6.10.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" - dependencies: - array.prototype.find "^2.0.1" - doctrine "^1.2.2" - has "^1.0.1" - jsx-ast-utils "^1.3.4" - object.assign "^4.0.4" - -eslint-plugin-vue@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-2.0.1.tgz#814aa24b5a892d1a95a9d65d980a11202e597e3b" +eslint-plugin-vue-libs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue-libs/-/eslint-plugin-vue-libs-1.0.0.tgz#05e6f8ba777b4a9093879ef68c57749b6d2c21b6" dependencies: eslint-plugin-html "^2.0.0" - eslint-plugin-react "^6.9.0" eslint@^3.10.1: version "3.19.0" @@ -1918,8 +1873,8 @@ eslint@^3.10.1: user-home "^2.0.0" espree@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.1.tgz#28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2" + version "3.4.3" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" dependencies: acorn "^5.0.1" acorn-jsx "^3.0.0" @@ -2026,8 +1981,8 @@ expand-range@^1.8.1: fill-range "^2.1.0" extend@3, extend@^3.0.0, extend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" extglob@^0.3.1: version "0.3.2" @@ -2083,8 +2038,8 @@ file-uri-to-path@0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-0.0.2.tgz#37cdd1b5b905404b3f05e1b23645be694ff70f82" filename-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" fill-range@^2.1.0: version "2.2.3" @@ -2096,11 +2051,11 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" -finalhandler@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755" +finalhandler@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89" dependencies: - debug "2.6.1" + debug "2.6.7" encodeurl "~1.0.1" escape-html "~1.0.3" on-finished "~2.3.0" @@ -2159,10 +2114,6 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - forever-agent@~0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.5.2.tgz#6d0e09c4921f94a27f63d3b49c5feff1ea4c5130" @@ -2236,13 +2187,9 @@ ftp@~0.3.5: readable-stream "1.1.x" xregexp "2.0.0" -function-bind@^1.0.2, function-bind@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" - -gauge@~2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -2283,8 +2230,8 @@ get-uri@1: readable-stream "2" getpass@^0.1.1: - version "0.1.6" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" dependencies: assert-plus "^1.0.0" @@ -2323,13 +2270,13 @@ glob@^5.0.14, glob@^5.0.15: path-is-absolute "^1.0.0" glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.2" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -2361,8 +2308,8 @@ growl@1.9.2: resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" handlebars@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7" + version "4.0.10" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" dependencies: async "^1.4.0" optimist "^0.6.1" @@ -2414,11 +2361,11 @@ has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" -has@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" dependencies: - function-bind "^1.0.2" + inherits "^2.0.1" hash-sum@^1.0.2: version "1.0.2" @@ -2575,8 +2522,8 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" ignore@^3.2.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.7.tgz#4810ca5f1d8eca5595213a34b94f2eb4ed926bbd" + version "3.3.3" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" imurmurhash@^0.1.4: version "0.1.4" @@ -2630,8 +2577,8 @@ inquirer@^0.12.0: through "^2.3.6" interpret@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.2.tgz#f4f623f0bb7122f15f5717c8e254b8161b5c5b2d" + version "1.0.3" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" invariant@^2.2.0: version "2.2.2" @@ -2657,7 +2604,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.0.2: +is-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" @@ -2667,17 +2614,9 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" is-equal-shallow@^0.1.3: version "0.1.3" @@ -2762,12 +2701,6 @@ is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" -is-regex@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - is-resolvable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" @@ -2778,10 +2711,6 @@ is-stream@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -2816,20 +2745,20 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul-lib-coverage@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.2.tgz#87a0c015b6910651cb3b184814dfb339337e25e1" +istanbul-lib-coverage@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" -istanbul-lib-instrument@^1.6.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.0.tgz#b8e0dc25709bb44e17336ab47b7bb5c97c23f659" +istanbul-lib-instrument@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.2.tgz#6014b03d3470fb77638d5802508c255c06312e56" dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" babel-traverse "^6.18.0" babel-types "^6.18.0" babylon "^6.13.0" - istanbul-lib-coverage "^1.0.2" + istanbul-lib-coverage "^1.1.1" semver "^5.3.0" istanbul@^0.4.0: @@ -2851,17 +2780,17 @@ istanbul@^0.4.0: which "^1.1.1" wordwrap "^1.0.0" -jasmine-core@^2.5.2, jasmine-core@~2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297" +jasmine-core@^2.5.2, jasmine-core@~2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.6.2.tgz#74ea1f7cf428691af201107d631234027a09daab" jasmine@^2.5.2: - version "2.5.3" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22" + version "2.6.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.6.0.tgz#6b22e70883e8e589d456346153b4d206ddbe217f" dependencies: exit "^0.1.2" glob "^7.0.6" - jasmine-core "~2.5.2" + jasmine-core "~2.6.0" jodid25519@^1.0.0: version "1.0.2" @@ -2874,8 +2803,8 @@ js-tokens@^3.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" js-yaml@3.x, js-yaml@^3.5.1: - version "3.8.3" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" + version "3.8.4" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" dependencies: argparse "^1.0.7" esprima "^3.1.1" @@ -2947,15 +2876,9 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.3.6" -jsx-ast-utils@^1.3.4: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.0.tgz#5afe38868f56bc8cc7aeaef0100ba8c75bd12591" - dependencies: - object-assign "^4.1.0" - karma-chrome-launcher@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25" + version "2.1.1" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz#216879c68ac04d8d5140e99619ba04b59afd46cf" dependencies: fs-access "^1.0.0" which "^1.2.1" @@ -3021,8 +2944,8 @@ karma-webpack@^2.0.1: webpack-dev-middleware "^1.0.11" karma@^1.1.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-1.6.0.tgz#0e871d4527d5eac56c41d181f03c5c0a7e6dbf3e" + version "1.7.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.0.tgz#6f7a1a406446fa2e187ec95398698f4cee476269" dependencies: bluebird "^3.3.0" body-parser "^1.16.1" @@ -3057,10 +2980,10 @@ kew@^0.7.0, kew@~0.7.0: resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" kind-of@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" dependencies: - is-buffer "^1.0.2" + is-buffer "^1.1.5" klaw@^1.0.0: version "1.3.1" @@ -3413,8 +3336,8 @@ mime-types@~1.0.1: resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz#995ae1392ab8affcbfcb2641dd054e943c0d5dce" mime@^1.2.11, mime@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + version "1.3.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" mime@~1.2.11: version "1.2.11" @@ -3428,7 +3351,13 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -"minimatch@2 || 3", minimatch@3.0.3, minimatch@^3.0.0, minimatch@^3.0.2: +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimatch@3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" dependencies: @@ -3458,9 +3387,9 @@ mkpath@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-1.0.0.tgz#ebb3a977e7af1c683ae6fda12b545a6ba6c5853d" -mocha-nightwatch@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/mocha-nightwatch/-/mocha-nightwatch-3.2.1.tgz#0e810f9c958d91bc3982c5948044a91436182c29" +mocha-nightwatch@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/mocha-nightwatch/-/mocha-nightwatch-3.2.2.tgz#91bcb9b3bde057dd7677c78125e491e58d66647c" dependencies: browser-stdout "1.3.0" commander "2.9.0" @@ -3482,6 +3411,10 @@ ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + mute-stream@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" @@ -3507,8 +3440,8 @@ nightwatch-helpers@^1.2.0: resolved "https://registry.yarnpkg.com/nightwatch-helpers/-/nightwatch-helpers-1.2.0.tgz#cdefeb7635074a141825a7b6d1b955b6d7810a0f" nightwatch@^0.9.9: - version "0.9.14" - resolved "https://registry.yarnpkg.com/nightwatch/-/nightwatch-0.9.14.tgz#897eb2e418b75492c3671e28e8e413abe17cc268" + version "0.9.15" + resolved "https://registry.yarnpkg.com/nightwatch/-/nightwatch-0.9.15.tgz#71a62aa16368e9da09fae800ccb9fb34d036164d" dependencies: chai-nightwatch "~0.1.x" ejs "0.8.3" @@ -3516,7 +3449,7 @@ nightwatch@^0.9.9: lodash.defaultsdeep "4.3.2" minimatch "3.0.3" mkpath "1.0.0" - mocha-nightwatch "3.2.1" + mocha-nightwatch "3.2.2" optimist "0.6.1" proxy-agent "2.0.0" q "1.4.1" @@ -3550,8 +3483,8 @@ node-libs-browser@^2.0.0: vm-browserify "0.0.4" node-pre-gyp@^0.6.29: - version "0.6.34" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" + version "0.6.36" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" dependencies: mkdirp "^0.5.1" nopt "^4.0.1" @@ -3581,8 +3514,8 @@ nopt@^4.0.1: osenv "^0.1.4" normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.3.6" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff" + version "2.3.8" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -3596,12 +3529,12 @@ normalize-path@^2.0.0, normalize-path@^2.0.1: remove-trailing-separator "^1.0.1" npmlog@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" + version "4.1.0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5" dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" - gauge "~2.7.1" + gauge "~2.7.3" set-blocking "~2.0.0" null-check@^1.0.0: @@ -3636,18 +3569,6 @@ object-hash@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.1.8.tgz#28a659cf987d96a4dabe7860289f3b5326c4a03c" -object-keys@^1.0.10, object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - -object.assign@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.0" - object-keys "^1.0.10" - object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -3842,10 +3763,14 @@ path-type@^1.0.0: pinkie-promise "^2.0.0" pbkdf2@^3.0.3: - version "3.0.9" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" + version "3.0.12" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2" dependencies: - create-hmac "^1.1.2" + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" pend@~1.2.0: version "1.2.0" @@ -3917,8 +3842,8 @@ process-nextick-args@~1.0.6: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" process@^0.11.0: - version "0.11.9" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" progress@^1.1.8, progress@~1.1.8: version "1.1.8" @@ -4055,7 +3980,7 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@2, readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: +readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: version "2.2.9" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" dependencies: @@ -4140,8 +4065,8 @@ regenerate@^1.2.1: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" regenerator-runtime@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" regenerator-runtime@~0.9.5: version "0.9.6" @@ -4325,8 +4250,8 @@ resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" resolve@^1.1.6, resolve@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" dependencies: path-parse "^1.0.5" @@ -4361,13 +4286,18 @@ rimraf@2.4.3: dependencies: glob "^5.0.14" -ripemd160@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" rollup-plugin-alias@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-alias/-/rollup-plugin-alias-1.3.0.tgz#1694e12e6422cf7c1077eea25b949a2d0cb1cbf0" + version "1.3.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-alias/-/rollup-plugin-alias-1.3.1.tgz#a9152fec4b6a6510dae93989517ca7853c32a6fa" + dependencies: + slash "^1.0.0" rollup-plugin-babel@^2.4.0: version "2.7.1" @@ -4485,7 +4415,7 @@ setprototypeof@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" -sha.js@^2.3.6: +sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.8" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" dependencies: @@ -4590,8 +4520,8 @@ socket.io@1.7.3: socket.io-parser "2.3.1" socks-proxy-agent@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-2.0.0.tgz#c674842d70410fb28ae1e92e6135a927854bc275" + version "2.1.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-2.1.0.tgz#ddfb01b5dbea5fc879490ca38a25fe87d3d15912" dependencies: agent-base "2" extend "3" @@ -4605,12 +4535,12 @@ socks@~1.1.5: smart-buffer "^1.0.13" source-list-map@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.1.tgz#1a33ac210ca144d1e561f906ebccab5669ff4cb4" + version "1.1.2" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.2.tgz#9889019d1024cce55cdc069498337ef6186a11a1" source-map-support@^0.4.0, source-map-support@^0.4.2: - version "0.4.14" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef" + version "0.4.15" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" dependencies: source-map "^0.5.6" @@ -4697,8 +4627,8 @@ stream-combiner@~0.0.2: duplexer "~0.1.1" stream-http@^2.3.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.0.tgz#cec1f4e3b494bc4a81b451808970f8b20b4ed5f6" + version "2.7.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.1.tgz#546a51741ad5a6b07e9e31b0b10441a917df528a" dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -4736,10 +4666,10 @@ string_decoder@^0.10.25, string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" string_decoder@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" + version "1.0.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.1.tgz#62e200f039955a6810d8df0a33ffc0f013662d98" dependencies: - buffer-shims "~1.0.0" + safe-buffer "^5.0.1" stringmap@~0.2.2: version "0.2.2" @@ -4837,8 +4767,8 @@ tar-pack@^3.4.0: uid-number "^0.0.6" tar-stream@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" + version "1.5.4" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.4.tgz#36549cf04ed1aee9b2a30c0143252238daf94016" dependencies: bl "^1.0.0" end-of-stream "^1.0.0" @@ -4853,9 +4783,9 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" -test-exclude@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.0.3.tgz#86a13ce3effcc60e6c90403cf31a27a60ac6c4e7" +test-exclude@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" dependencies: arrify "^1.0.1" micromatch "^2.3.11" @@ -4900,8 +4830,8 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" to-fast-properties@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" tough-cookie@>=0.12.0, tough-cookie@~2.3.0: version "2.3.2" @@ -4953,7 +4883,7 @@ type-detect@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" -type-is@~1.6.14: +type-is@~1.6.15: version "1.6.15" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" dependencies: @@ -4965,12 +4895,12 @@ typedarray@^0.0.6, typedarray@~0.0.5: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" typescript@^2.1.6: - version "2.3.0" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.0.tgz#2e63e09284392bc8158a2444c33e2093795c0418" + version "2.3.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.4.tgz#3d38321828231e434f287514959c37a82b629f42" -uglify-js@^2.6, uglify-js@^2.6.2, uglify-js@^2.8.5: - version "2.8.22" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0" +uglify-js@^2.6, uglify-js@^2.6.2, uglify-js@^2.8.27: + version "2.8.27" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.27.tgz#47787f912b0f242e5b984343be8e35e95f694c9c" dependencies: source-map "~0.5.1" yargs "~3.10.0" @@ -5111,8 +5041,8 @@ wd@^1.0.0: vargs "0.1.0" webpack-dev-middleware@^1.0.11: - version "1.10.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893" + version "1.10.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz#2e252ce1dfb020dbda1ccb37df26f30ab014dbd1" dependencies: memory-fs "~0.4.1" mime "^1.3.4" @@ -5127,8 +5057,8 @@ webpack-sources@^0.2.3: source-map "~0.5.3" webpack@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.4.1.tgz#15a91dbe34966d8a4b99c7d656efd92a2e5a6f6a" + version "2.6.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.6.1.tgz#2e0457f0abb1ac5df3ab106c69c672f236785f07" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" @@ -5147,7 +5077,7 @@ webpack@^2.2.0: source-map "^0.5.3" supports-color "^3.1.0" tapable "~0.2.5" - uglify-js "^2.8.5" + uglify-js "^2.8.27" watchpack "^1.3.1" webpack-sources "^0.2.3" yargs "^6.0.0" @@ -5174,10 +5104,10 @@ which@^1.1.1, which@^1.2.1, which@^1.2.9, which@~1.2.10: isexe "^2.0.0" wide-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" dependencies: - string-width "^1.0.1" + string-width "^1.0.2" window-size@0.1.0: version "0.1.0" From f97ebd6aa5df6c4aca36e82c3773aa8cc8708167 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 2 Jun 2017 11:36:26 +0800 Subject: [PATCH 0011/1232] update eslint config --- .eslintrc | 1 - package.json | 2 +- yarn.lock | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.eslintrc b/.eslintrc index 06962bff1c0..523d283e8a4 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,7 +1,6 @@ { "root": true, "plugins": [ - "vue-libs", "flowtype" ], "extends": [ diff --git a/package.json b/package.json index 74c8c0453de..c307fbcdbf9 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "eslint-loader": "^1.3.0", "eslint-plugin-flowtype": "^2.16.0", "eslint-plugin-jasmine": "^2.1.0", - "eslint-plugin-vue-libs": "^1.0.0", + "eslint-plugin-vue-libs": "^1.2.0", "file-loader": "^0.10.1", "flow-bin": "^0.45.0", "hash-sum": "^1.0.2", diff --git a/yarn.lock b/yarn.lock index cea7c04cc02..b68a64c036a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1826,9 +1826,9 @@ eslint-plugin-jasmine@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.2.0.tgz#7135879383c39a667c721d302b9f20f0389543de" -eslint-plugin-vue-libs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue-libs/-/eslint-plugin-vue-libs-1.0.0.tgz#05e6f8ba777b4a9093879ef68c57749b6d2c21b6" +eslint-plugin-vue-libs@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue-libs/-/eslint-plugin-vue-libs-1.2.0.tgz#eff85ecd66e8f1c9538d668205fa8d65136f1eac" dependencies: eslint-plugin-html "^2.0.0" From b4dd0be4fc20eb51681c9cf50189081fc8117e14 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 5 Jun 2017 16:30:10 +0800 Subject: [PATCH 0012/1232] improve .use() test cases and make it track installation based on constructor id --- src/core/global-api/use.js | 9 ++++++--- test/unit/features/global-api/use.spec.js | 12 ++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/core/global-api/use.js b/src/core/global-api/use.js index 347bf4b6fcc..24dcca27810 100644 --- a/src/core/global-api/use.js +++ b/src/core/global-api/use.js @@ -4,8 +4,11 @@ import { toArray } from '../util/index' export function initUse (Vue: GlobalAPI) { Vue.use = function (plugin: Function | Object) { - /* istanbul ignore if */ - if (plugin.installed) { + const cid = this.cid + if (!plugin._installed) { + plugin._installed = {} + } + if (plugin._installed[cid]) { return this } // additional parameters @@ -16,7 +19,7 @@ export function initUse (Vue: GlobalAPI) { } else if (typeof plugin === 'function') { plugin.apply(null, args) } - plugin.installed = true + plugin._installed[cid] = true return this } } diff --git a/test/unit/features/global-api/use.spec.js b/test/unit/features/global-api/use.spec.js index 5d529ac483e..a76d20e5a65 100644 --- a/test/unit/features/global-api/use.spec.js +++ b/test/unit/features/global-api/use.spec.js @@ -14,6 +14,11 @@ describe('Global API: use', () => { Vue.use(pluginStub, options) expect(Vue.options.directives['plugin-test']).toBe(def) delete Vue.options.directives['plugin-test'] + expect(Vue.options.directives['plugin-test']).toBeUndefined() + + // should not double apply + Vue.use(pluginStub, options) + expect(Vue.options.directives['plugin-test']).toBeUndefined() }) it('should apply Function plugin', () => { @@ -21,4 +26,11 @@ describe('Global API: use', () => { expect(Vue.options.directives['plugin-test']).toBe(def) delete Vue.options.directives['plugin-test'] }) + + it('should work on extended constructors without polluting the base', () => { + const Ctor = Vue.extend({}) + Ctor.use(pluginStub, options) + expect(Vue.options.directives['plugin-test']).toBeUndefined() + expect(Ctor.options.directives['plugin-test']).toBe(def) + }) }) From c3cdfcfa68126783307d74fca22b136cd41c474a Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 5 Jun 2017 19:01:23 +0800 Subject: [PATCH 0013/1232] fix out-in transition for async components (fix #5760) --- .../web/runtime/components/transition.js | 15 ++- .../features/transition/transition.spec.js | 114 ++++++++++++++++++ 2 files changed, 126 insertions(+), 3 deletions(-) diff --git a/src/platforms/web/runtime/components/transition.js b/src/platforms/web/runtime/components/transition.js index a6f44a32f81..fd8e398ccbf 100644 --- a/src/platforms/web/runtime/components/transition.js +++ b/src/platforms/web/runtime/components/transition.js @@ -72,19 +72,23 @@ function isSameChild (child: VNode, oldChild: VNode): boolean { return oldChild.key === child.key && oldChild.tag === child.tag } +function isAsyncPlaceholder (node: VNode): boolean { + return node.isComment && node.asyncFactory +} + export default { name: 'transition', props: transitionProps, abstract: true, render (h: Function) { - let children: ?Array = this.$slots.default + let children: ?Array = this.$options._renderChildren if (!children) { return } // filter out text nodes (possible whitespaces) - children = children.filter((c: VNode) => c.tag) + children = children.filter((c: VNode) => c.tag || isAsyncPlaceholder(c)) /* istanbul ignore if */ if (!children.length) { return @@ -151,7 +155,12 @@ export default { child.data.show = true } - if (oldChild && oldChild.data && !isSameChild(child, oldChild)) { + if ( + oldChild && + oldChild.data && + !isSameChild(child, oldChild) && + !isAsyncPlaceholder(oldChild) + ) { // replace old child transition data with fresh one // important for dynamic transitions! const oldData: Object = oldChild && (oldChild.data.transition = extend({}, data)) diff --git a/test/unit/features/transition/transition.spec.js b/test/unit/features/transition/transition.spec.js index 866a0af56cb..c88dbbd0e9f 100644 --- a/test/unit/features/transition/transition.spec.js +++ b/test/unit/features/transition/transition.spec.js @@ -877,6 +877,120 @@ if (!isIE9) { expect(` can only be used on a single element`).toHaveBeenWarned() }) + it('transition out-in on async component (resolve before leave complete)', done => { + const vm = new Vue({ + template: ` +
+ + + + +
+ `, + components: { + componentA: resolve => { + setTimeout(() => { + resolve({ template: '

component A

' }) + next1() + }, duration / 2) + }, + componentB: resolve => { + setTimeout(() => { + resolve({ template: '

component B

' }) + }, duration / 2) + } + }, + data: { + ok: true + } + }).$mount(el) + + expect(vm.$el.innerHTML).toBe('') + + function next1 () { + Vue.nextTick(() => { + expect(vm.$el.children.length).toBe(1) + expect(vm.$el.textContent).toBe('component A') + expect(vm.$el.children[0].className).toBe('test-anim-enter test-anim-enter-active') + nextFrame(() => { + expect(vm.$el.children[0].className).toBe('test-anim-enter-active test-anim-enter-to') + setTimeout(() => { + expect(vm.$el.children[0].className).toBe('') + vm.ok = false + next2() + }, duration + buffer) + }) + }) + } + + function next2 () { + waitForUpdate(() => { + expect(vm.$el.children.length).toBe(1) + expect(vm.$el.textContent).toBe('component A') + expect(vm.$el.children[0].className).toBe('test-anim-leave test-anim-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test-anim-leave-active test-anim-leave-to') + }).thenWaitFor(duration + buffer).then(() => { + expect(vm.$el.children.length).toBe(1) + expect(vm.$el.textContent).toBe('component B') + expect(vm.$el.children[0].className).toBe('test-anim-enter-active test-anim-enter-to') + }).thenWaitFor(duration + buffer).then(() => { + expect(vm.$el.children[0].className).toBe('') + }).then(done) + } + }) + + it('transition out-in on async component (resolve after leave complete)', done => { + const vm = new Vue({ + template: ` +
+ + + + +
+ `, + components: { + componentA: { template: '

component A

' }, + componentB: resolve => { + setTimeout(() => { + resolve({ template: '

component B

' }) + Vue.nextTick(next) + }, (duration + buffer) * 1.5) + } + }, + data: { + ok: true + } + }).$mount(el) + + expect(vm.$el.innerHTML).toBe('

component A

') + + let next + + vm.ok = false + waitForUpdate(() => { + expect(vm.$el.children.length).toBe(1) + expect(vm.$el.textContent).toBe('component A') + expect(vm.$el.children[0].className).toBe('test-anim-leave test-anim-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test-anim-leave-active test-anim-leave-to') + }).thenWaitFor(duration + buffer).then(() => { + expect(vm.$el.children.length).toBe(0) + expect(vm.$el.innerHTML).toBe('') + }).thenWaitFor(_next => { next = _next }).then(() => { + expect(vm.$el.children.length).toBe(1) + expect(vm.$el.textContent).toBe('component B') + expect(vm.$el.children[0].className).toBe('test-anim-enter test-anim-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test-anim-enter-active test-anim-enter-to') + }).thenWaitFor(duration + buffer).then(() => { + expect(vm.$el.children.length).toBe(1) + expect(vm.$el.textContent).toBe('component B') + expect(vm.$el.children[0].className).toBe('') + }).then(done) + }) + describe('explicit durations -', () => { it('single value', done => { const vm = new Vue({ From 13bb643d6fa6a2dba61b5ee191548cc9086cc602 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 5 Jun 2017 22:21:45 +0800 Subject: [PATCH 0014/1232] handle in-out transition with async components --- .../web/runtime/components/transition.js | 3 + .../features/transition/transition.spec.js | 67 +++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/src/platforms/web/runtime/components/transition.js b/src/platforms/web/runtime/components/transition.js index fd8e398ccbf..8898701f1f6 100644 --- a/src/platforms/web/runtime/components/transition.js +++ b/src/platforms/web/runtime/components/transition.js @@ -174,6 +174,9 @@ export default { }) return placeholder(h, rawChild) } else if (mode === 'in-out') { + if (isAsyncPlaceholder(child)) { + return oldRawChild + } let delayedLeave const performLeave = () => { delayedLeave() } mergeVNodeHook(data, 'afterEnter', performLeave) diff --git a/test/unit/features/transition/transition.spec.js b/test/unit/features/transition/transition.spec.js index c88dbbd0e9f..2bb77e159f2 100644 --- a/test/unit/features/transition/transition.spec.js +++ b/test/unit/features/transition/transition.spec.js @@ -991,6 +991,73 @@ if (!isIE9) { }).then(done) }) + it('transition in-out on async component', done => { + const vm = new Vue({ + template: ` +
+ + + + +
+ `, + components: { + componentA: resolve => { + setTimeout(() => { + resolve({ template: '

component A

' }) + next1() + }, duration / 2) + }, + componentB: resolve => { + setTimeout(() => { + resolve({ template: '

component B

' }) + next2() + }, duration / 2) + } + }, + data: { + ok: true + } + }).$mount(el) + + expect(vm.$el.innerHTML).toBe('') + + function next1 () { + Vue.nextTick(() => { + expect(vm.$el.children.length).toBe(1) + expect(vm.$el.textContent).toBe('component A') + expect(vm.$el.children[0].className).toBe('test-anim-enter test-anim-enter-active') + nextFrame(() => { + expect(vm.$el.children[0].className).toBe('test-anim-enter-active test-anim-enter-to') + setTimeout(() => { + expect(vm.$el.children[0].className).toBe('') + vm.ok = false + }, duration + buffer) + }) + }) + } + + function next2 () { + waitForUpdate(() => { + expect(vm.$el.children.length).toBe(2) + expect(vm.$el.textContent).toBe('component Acomponent B') + expect(vm.$el.children[0].className).toBe('') + expect(vm.$el.children[1].className).toBe('test-anim-enter test-anim-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[1].className).toBe('test-anim-enter-active test-anim-enter-to') + }).thenWaitFor(duration + buffer).then(() => { + expect(vm.$el.children.length).toBe(2) + expect(vm.$el.textContent).toBe('component Acomponent B') + expect(vm.$el.children[0].className).toBe('test-anim-leave-active test-anim-leave-to') + expect(vm.$el.children[1].className).toBe('') + }).thenWaitFor(duration + buffer).then(() => { + expect(vm.$el.children.length).toBe(1) + expect(vm.$el.textContent).toBe('component B') + expect(vm.$el.children[0].className).toBe('') + }).then(done) + } + }) + describe('explicit durations -', () => { it('single value', done => { const vm = new Vue({ From 68522cfdef34ef49157a66e09b6b7422587e2c04 Mon Sep 17 00:00:00 2001 From: laoxiong Date: Tue, 6 Jun 2017 09:37:06 +0800 Subject: [PATCH 0015/1232] fix:the placeholder key in undefined when render async component (#5828) --- src/platforms/web/runtime/components/transition.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/platforms/web/runtime/components/transition.js b/src/platforms/web/runtime/components/transition.js index 8898701f1f6..9ac73b164ec 100644 --- a/src/platforms/web/runtime/components/transition.js +++ b/src/platforms/web/runtime/components/transition.js @@ -140,7 +140,9 @@ export default { // during entering. const id: string = `__transition-${this._uid}-` child.key = child.key == null - ? id + child.tag + ? child.isComment + ? id + 'comment' + : id + child.tag : isPrimitive(child.key) ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key) : child.key From 7561b94eeb75478fc38d391da2851b91b7ebed4f Mon Sep 17 00:00:00 2001 From: Zhang Visper Date: Tue, 6 Jun 2017 13:27:02 +0800 Subject: [PATCH 0016/1232] warn against non-primitive key (#5816) --- src/core/vdom/create-element.js | 10 ++++++++++ test/unit/modules/vdom/create-element.spec.js | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/src/core/vdom/create-element.js b/src/core/vdom/create-element.js index 88a5addfc74..a7b650d501c 100644 --- a/src/core/vdom/create-element.js +++ b/src/core/vdom/create-element.js @@ -61,6 +61,16 @@ export function _createElement ( // in case of component :is set to falsy value return createEmptyVNode() } + // warn against non-primitive key + if (process.env.NODE_ENV !== 'production' && + isDef(data) && isDef(data.key) && !isPrimitive(data.key) + ) { + warn( + 'Avoid using non-primitive value as key, ' + + 'use string/number value instead.', + context + ) + } // support single function children as default scoped slot if (Array.isArray(children) && typeof children[0] === 'function' diff --git a/test/unit/modules/vdom/create-element.spec.js b/test/unit/modules/vdom/create-element.spec.js index d4de6cd743b..82d6f6bdcb4 100644 --- a/test/unit/modules/vdom/create-element.spec.js +++ b/test/unit/modules/vdom/create-element.spec.js @@ -153,6 +153,15 @@ describe('create-element', () => { expect('Avoid using observed data object as vnode data').toHaveBeenWarned() }) + it('warn non-primitive key', () => { + new Vue({ + render (h) { + return h('div', { key: {}}) + } + }).$mount() + expect('Avoid using non-primitive value as key').toHaveBeenWarned() + }) + it('nested child elements should be updated correctly', done => { const vm = new Vue({ data: { n: 1 }, From 48c0c1ceb5819aea4f9f3fce38ac2ed606456cf0 Mon Sep 17 00:00:00 2001 From: strantr Date: Tue, 6 Jun 2017 06:48:31 +0100 Subject: [PATCH 0017/1232] Added check in merge strat for watches if child is already an array (fix #5652) (#5653) * Added check for if child is already an array If the child is already an array it does not need to be wrapped again. Fixing #5652 * Added unit test for watch merge strat * Moved test to own describe * Added test for merging multiple extends --- src/core/util/options.js | 2 +- test/unit/features/options/extends.spec.js | 41 ++++++++++++++++++++++ test/unit/features/options/watch.spec.js | 39 ++++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/src/core/util/options.js b/src/core/util/options.js index 53f96830165..4335b355996 100644 --- a/src/core/util/options.js +++ b/src/core/util/options.js @@ -172,7 +172,7 @@ strats.watch = function (parentVal: ?Object, childVal: ?Object): ?Object { } ret[key] = parent ? parent.concat(child) - : [child] + : Array.isArray(child) ? child : [child] } return ret } diff --git a/test/unit/features/options/extends.spec.js b/test/unit/features/options/extends.spec.js index fd02fce43a9..d50b3018946 100644 --- a/test/unit/features/options/extends.spec.js +++ b/test/unit/features/options/extends.spec.js @@ -47,3 +47,44 @@ describe('Options extends', () => { expect(vm.c).toBe(3) }) }) + +describe('Options extends with Object.prototype.watch', () => { + beforeAll(function () { + if (!Object.prototype.watch) { + // eslint-disable-next-line no-extend-native + Object.prototype.watch = { + remove: true + } + } + }) + afterAll(function () { + if (Object.prototype.watch && Object.prototype.watch.remove) { + delete Object.prototype.watch + } + }) + it('should work with global mixins', done => { + Vue.use({ + install: function () { + Vue.mixin({}) + } + }) + const spy = jasmine.createSpy('watch') + const A = Vue.extend({ + data: function () { + return { a: 1 } + }, + watch: { + a: spy + }, + created: function () { + this.a = 2 + } + }) + new Vue({ + extends: A + }) + waitForUpdate(() => { + expect(spy).toHaveBeenCalledWith(2, 1) + }).then(done) + }) +}) diff --git a/test/unit/features/options/watch.spec.js b/test/unit/features/options/watch.spec.js index 702cd2b8c4e..071d1ad8331 100644 --- a/test/unit/features/options/watch.spec.js +++ b/test/unit/features/options/watch.spec.js @@ -104,4 +104,43 @@ describe('Options watch', () => { expect(spy).toHaveBeenCalledWith(vm.a, oldA) }).then(done) }) + + it('correctly merges multiple extends', done => { + var spy2 = jasmine.createSpy('A') + var spy3 = jasmine.createSpy('B') + var A = Vue.extend({ + data: function () { + return { + a: 0, + b: 0 + } + }, + watch: { + b: spy + } + }) + + var B = Vue.extend({ + extends: A, + watch: { + a: spy2 + } + }) + + var C = Vue.extend({ + extends: B, + watch: { + a: spy3 + } + }) + + var vm = new C() + vm.a = 1 + + waitForUpdate(() => { + expect(spy).not.toHaveBeenCalled() + expect(spy2).toHaveBeenCalledWith(1, 0) + expect(spy3).toHaveBeenCalledWith(1, 0) + }).then(done) + }) }) From 7b069453edbf7fd03363a63d040396d274a79757 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 6 Jun 2017 14:48:05 +0800 Subject: [PATCH 0018/1232] fix Object.prototype.watch test case --- test/unit/features/options/extends.spec.js | 34 ++++++++++------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/test/unit/features/options/extends.spec.js b/test/unit/features/options/extends.spec.js index d50b3018946..a7f9c4f712d 100644 --- a/test/unit/features/options/extends.spec.js +++ b/test/unit/features/options/extends.spec.js @@ -46,28 +46,22 @@ describe('Options extends', () => { expect(vm.b).toBe(2) expect(vm.c).toBe(3) }) -}) -describe('Options extends with Object.prototype.watch', () => { - beforeAll(function () { + it('should work with global mixins + Object.prototype.watch', done => { + let fakeWatch = false if (!Object.prototype.watch) { + fakeWatch = true // eslint-disable-next-line no-extend-native - Object.prototype.watch = { - remove: true - } - } - }) - afterAll(function () { - if (Object.prototype.watch && Object.prototype.watch.remove) { - delete Object.prototype.watch + Object.defineProperty(Object.prototype, 'watch', { + writable: true, + configurable: true, + enumerable: false, + value: () => {} + }) } - }) - it('should work with global mixins', done => { - Vue.use({ - install: function () { - Vue.mixin({}) - } - }) + + Vue.mixin({}) + const spy = jasmine.createSpy('watch') const A = Vue.extend({ data: function () { @@ -85,6 +79,10 @@ describe('Options extends with Object.prototype.watch', () => { }) waitForUpdate(() => { expect(spy).toHaveBeenCalledWith(2, 1) + + if (fakeWatch) { + delete Object.prototype.watch + } }).then(done) }) }) From a18f879bb34270ba4879c5fe7b78426b0e79131e Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 6 Jun 2017 15:05:51 +0800 Subject: [PATCH 0019/1232] warn when methods conflict with data (close #5832) --- src/core/instance/state.js | 18 ++++++++++++++---- test/unit/features/options/methods.spec.js | 12 ++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/core/instance/state.js b/src/core/instance/state.js index a64a9a070a9..c099aaec706 100644 --- a/src/core/instance/state.js +++ b/src/core/instance/state.js @@ -130,16 +130,26 @@ function initData (vm: Component) { // proxy data on instance const keys = Object.keys(data) const props = vm.$options.props + const methods = vm.$options.methods let i = keys.length while (i--) { - if (props && hasOwn(props, keys[i])) { + const key = keys[i] + if (process.env.NODE_ENV !== 'production') { + if (methods && hasOwn(methods, key)) { + warn( + `method "${key}" has already been defined as a data property.`, + vm + ) + } + } + if (props && hasOwn(props, key)) { process.env.NODE_ENV !== 'production' && warn( - `The data property "${keys[i]}" is already declared as a prop. ` + + `The data property "${key}" is already declared as a prop. ` + `Use prop default value instead.`, vm ) - } else if (!isReserved(keys[i])) { - proxy(vm, `_data`, keys[i]) + } else if (!isReserved(key)) { + proxy(vm, `_data`, key) } } // observe data diff --git a/test/unit/features/options/methods.spec.js b/test/unit/features/options/methods.spec.js index 66039c968d7..21838f236ce 100644 --- a/test/unit/features/options/methods.spec.js +++ b/test/unit/features/options/methods.spec.js @@ -27,4 +27,16 @@ describe('Options methods', () => { }) expect(`method "hello" has an undefined value in the component definition`).toHaveBeenWarned() }) + + it('should warn methods conflicting with data', () => { + new Vue({ + data: { + foo: 1 + }, + methods: { + foo () {} + } + }) + expect(`method "foo" has already been defined as a data property`).toHaveBeenWarned() + }) }) From 47334085a14eb1ed9525598d592038bb57e84db7 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 8 Jun 2017 12:26:55 +0800 Subject: [PATCH 0020/1232] prevent data.pendingInsert to keep reference to removed nodes (fix #5839) --- src/core/vdom/patch.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/vdom/patch.js b/src/core/vdom/patch.js index 1155735296d..e4bec3269f5 100644 --- a/src/core/vdom/patch.js +++ b/src/core/vdom/patch.js @@ -202,6 +202,7 @@ export function createPatchFunction (backend) { function initComponent (vnode, insertedVnodeQueue) { if (isDef(vnode.data.pendingInsert)) { insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert) + vnode.data.pendingInsert = null } vnode.elm = vnode.componentInstance.$el if (isPatchable(vnode)) { From 07a37264c3b56952435331983adcf4081390b400 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 9 Jun 2017 22:01:36 +0800 Subject: [PATCH 0021/1232] remove reference to refElm after initial patch (fix #5851) --- src/core/instance/lifecycle.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/instance/lifecycle.js b/src/core/instance/lifecycle.js index 42ed5b5a030..b10674adfd2 100644 --- a/src/core/instance/lifecycle.js +++ b/src/core/instance/lifecycle.js @@ -65,6 +65,9 @@ export function lifecycleMixin (Vue: Class) { vm.$options._parentElm, vm.$options._refElm ) + // no need for the ref nodes after initial patch + // this prevents keeping a detached DOM tree in memory (#5851) + vm.$options._parentElm = vm.$options._refElm = null } else { // updates vm.$el = vm.__patch__(prevVnode, vnode) @@ -129,8 +132,6 @@ export function lifecycleMixin (Vue: Class) { if (vm.$el) { vm.$el.__vue__ = null } - // remove reference to DOM nodes (prevents leak) - vm.$options._parentElm = vm.$options._refElm = null } } From 603d5fb8942a4246c741ec2c84a2271b684337a8 Mon Sep 17 00:00:00 2001 From: laoxiong Date: Tue, 13 Jun 2017 09:52:26 +0800 Subject: [PATCH 0022/1232] refactor: get the vendor style name in the style directive (#5856) --- src/platforms/web/runtime/modules/style.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/platforms/web/runtime/modules/style.js b/src/platforms/web/runtime/modules/style.js index ee9b036ee79..ebb16c38831 100644 --- a/src/platforms/web/runtime/modules/style.js +++ b/src/platforms/web/runtime/modules/style.js @@ -26,20 +26,20 @@ const setProp = (el, name, val) => { } } -const prefixes = ['Webkit', 'Moz', 'ms'] +const vendorNames = ['Webkit', 'Moz', 'ms'] -let testEl +let emptyStyle const normalize = cached(function (prop) { - testEl = testEl || document.createElement('div') + emptyStyle = emptyStyle || document.createElement('div').style prop = camelize(prop) - if (prop !== 'filter' && (prop in testEl.style)) { + if (prop !== 'filter' && (prop in emptyStyle)) { return prop } - const upper = prop.charAt(0).toUpperCase() + prop.slice(1) - for (let i = 0; i < prefixes.length; i++) { - const prefixed = prefixes[i] + upper - if (prefixed in testEl.style) { - return prefixed + const capName = prop.charAt(0).toUpperCase() + prop.slice(1) + for (let i = 0; i < vendorNames.length; i++) { + const name = vendorNames[i] + capName + if (name in emptyStyle) { + return name } } }) From 0a3f831d67a17a5e3d47aa849f4a6ef085922f01 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 13 Jun 2017 14:33:35 +0800 Subject: [PATCH 0023/1232] line width tweak --- src/platforms/web/runtime/modules/dom-props.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/platforms/web/runtime/modules/dom-props.js b/src/platforms/web/runtime/modules/dom-props.js index 99d167ddaf9..56416f6478a 100644 --- a/src/platforms/web/runtime/modules/dom-props.js +++ b/src/platforms/web/runtime/modules/dom-props.js @@ -61,7 +61,8 @@ function shouldUpdateValue ( } function isDirty (elm: acceptValueElm, checkVal: string): boolean { - // return true when textbox (.number and .trim) loses focus and its value is not equal to the updated value + // return true when textbox (.number and .trim) loses focus and its value is + // not equal to the updated value return document.activeElement !== elm && elm.value !== checkVal } From a855dd0564a657a73b7249469490d39817f27cf7 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 13 Jun 2017 16:54:55 +0800 Subject: [PATCH 0024/1232] add environment-agnostic build for vue-server-renderer --- build/config.js | 12 ++++- package.json | 2 + src/compiler/parser/entity-decoder.js | 10 ++-- src/compiler/parser/index.js | 4 +- .../web/entry-server-basic-renderer.js | 13 +++++ src/server/create-basic-renderer.js | 37 +++++++++++++ test/ssr/ssr-basic-renderer.spec.js | 53 ++++++++++++++++++ yarn.lock | 54 +++++++++++++++++-- 8 files changed, 174 insertions(+), 11 deletions(-) create mode 100644 src/platforms/web/entry-server-basic-renderer.js create mode 100644 src/server/create-basic-renderer.js create mode 100644 test/ssr/ssr-basic-renderer.spec.js diff --git a/build/config.js b/build/config.js index 5ef6b385562..20fefa8506c 100644 --- a/build/config.js +++ b/build/config.js @@ -1,7 +1,9 @@ const path = require('path') const buble = require('rollup-plugin-buble') const alias = require('rollup-plugin-alias') +const cjs = require('rollup-plugin-commonjs') const replace = require('rollup-plugin-replace') +const node = require('rollup-plugin-node-resolve') const flow = require('rollup-plugin-flow-no-whitespace') const version = process.env.VERSION || require('../package.json').version const weexVersion = process.env.WEEX_VERSION || require('../packages/weex-vue-framework/package.json').version @@ -112,6 +114,14 @@ const builds = { format: 'cjs', external: Object.keys(require('../packages/vue-server-renderer/package.json').dependencies) }, + 'web-server-basic-renderer': { + entry: resolve('web/entry-server-basic-renderer.js'), + dest: resolve('packages/vue-server-renderer/basic.js'), + format: 'umd', + env: 'development', + moduleName: 'renderVueComponentToString', + plugins: [node(), cjs()] + }, 'web-server-renderer-webpack-server-plugin': { entry: resolve('server/webpack-plugin/server.js'), dest: resolve('packages/vue-server-renderer/server-plugin.js'), @@ -156,7 +166,7 @@ function genConfig (opts) { external: opts.external, format: opts.format, banner: opts.banner, - moduleName: 'Vue', + moduleName: opts.moduleName || 'Vue', plugins: [ replace({ __WEEX__: !!opts.weex, diff --git a/package.json b/package.json index c307fbcdbf9..285ad658043 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,9 @@ "rollup-plugin-alias": "^1.2.0", "rollup-plugin-babel": "^2.4.0", "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", "rollup-plugin-replace": "^1.1.0", "rollup-watch": "^3.2.2", "selenium-server": "^2.53.1", diff --git a/src/compiler/parser/entity-decoder.js b/src/compiler/parser/entity-decoder.js index 8e360b00283..2836294f2c9 100644 --- a/src/compiler/parser/entity-decoder.js +++ b/src/compiler/parser/entity-decoder.js @@ -2,8 +2,10 @@ let decoder -export function decode (html: string): string { - decoder = decoder || document.createElement('div') - decoder.innerHTML = html - return decoder.textContent +export default { + decode (html: string): string { + decoder = decoder || document.createElement('div') + decoder.innerHTML = html + return decoder.textContent + } } diff --git a/src/compiler/parser/index.js b/src/compiler/parser/index.js index 2da48b75053..f1ec1e188e6 100644 --- a/src/compiler/parser/index.js +++ b/src/compiler/parser/index.js @@ -1,6 +1,6 @@ /* @flow */ -import { decode } from 'he' +import he from 'he' import { parseHTML } from './html-parser' import { parseText } from './text-parser' import { parseFilters } from './filter-parser' @@ -28,7 +28,7 @@ const argRE = /:(.*)$/ const bindRE = /^:|^v-bind:/ const modifierRE = /\.[^.]+/g -const decodeHTMLCached = cached(decode) +const decodeHTMLCached = cached(he.decode) // configurable state export let warn diff --git a/src/platforms/web/entry-server-basic-renderer.js b/src/platforms/web/entry-server-basic-renderer.js new file mode 100644 index 00000000000..c4b973bd10c --- /dev/null +++ b/src/platforms/web/entry-server-basic-renderer.js @@ -0,0 +1,13 @@ +/* @flow */ + +import modules from './server/modules/index' +import directives from './server/directives/index' +import { isUnaryTag, canBeLeftOpenTag } from './compiler/util' +import { createBasicRenderer } from 'server/create-basic-renderer' + +export default createBasicRenderer({ + modules, + directives, + isUnaryTag, + canBeLeftOpenTag +}) diff --git a/src/server/create-basic-renderer.js b/src/server/create-basic-renderer.js new file mode 100644 index 00000000000..2d53976d8d5 --- /dev/null +++ b/src/server/create-basic-renderer.js @@ -0,0 +1,37 @@ +/* @flow */ + +import { createWriteFunction } from './write' +import { createRenderFunction } from './render' +import type { RenderOptions } from './create-renderer' + +export function createBasicRenderer ({ + modules = [], + directives = {}, + isUnaryTag = (() => false), + cache +}: RenderOptions = {}) { + const render = createRenderFunction(modules, directives, isUnaryTag, cache) + + return function renderToString ( + component: Component, + context: any, + done: any + ): void { + if (typeof context === 'function') { + done = context + context = {} + } + let result = '' + const write = createWriteFunction(text => { + result += text + return false + }, done) + try { + render(component, write, context, () => { + done(null, result) + }) + } catch (e) { + done(e) + } + } +} diff --git a/test/ssr/ssr-basic-renderer.spec.js b/test/ssr/ssr-basic-renderer.spec.js new file mode 100644 index 00000000000..053bde1a00e --- /dev/null +++ b/test/ssr/ssr-basic-renderer.spec.js @@ -0,0 +1,53 @@ +import Vue from '../../dist/vue.runtime.common.js' +import renderToString from '../../packages/vue-server-renderer/basic' + +describe('SSR: basicRenderer', () => { + it('should work', done => { + renderToString(new Vue({ + template: ` +
+

yoyo

+
+ {{ test }} + + + + +
+ `, + data: { + test: 'hi', + isRed: true, + imageUrl: 'https://vuejs.org/images/logo.png' + }, + components: { + test: { + render () { + return this.$createElement('div', { class: ['a'] }, 'test') + } + }, + testAsync (resolve) { + resolve({ + render () { + return this.$createElement('span', { class: ['b'] }, 'testAsync') + } + }) + } + } + }), (err, result) => { + expect(err).toBeNull() + expect(result).toContain( + '
' + + '

yoyo

' + + '
' + + 'hi ' + + ' ' + + ' ' + + '
test
' + + 'testAsync' + + '
' + ) + done() + }) + }) +}) diff --git a/yarn.lock b/yarn.lock index b68a64c036a..539ff35dc58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,7 +35,7 @@ acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" -acorn@^4.0.3: +acorn@^4.0.1, acorn@^4.0.3: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" @@ -890,6 +890,12 @@ brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +browser-resolve@^1.11.0: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" @@ -977,7 +983,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -builtin-modules@^1.0.0: +builtin-modules@^1.0.0, builtin-modules@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -1920,6 +1926,10 @@ estree-walker@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" +estree-walker@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa" + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -2654,6 +2664,10 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: version "2.16.0" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" @@ -3266,6 +3280,12 @@ magic-string@^0.16.0: dependencies: vlq "^0.2.1" +magic-string@^0.19.0: + version "0.19.1" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201" + dependencies: + vlq "^0.2.1" + map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -4245,11 +4265,11 @@ resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" -resolve@1.1.x: +resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.2.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0: version "1.3.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" dependencies: @@ -4315,6 +4335,16 @@ rollup-plugin-buble@^0.15.0: buble "^0.15.0" rollup-pluginutils "^1.5.0" +rollup-plugin-commonjs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.0.2.tgz#98b1589bfe32a6c0f67790b60c0b499972afed89" + dependencies: + acorn "^4.0.1" + estree-walker "^0.3.0" + magic-string "^0.19.0" + resolve "^1.1.7" + rollup-pluginutils "^2.0.1" + rollup-plugin-flow-no-whitespace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/rollup-plugin-flow-no-whitespace/-/rollup-plugin-flow-no-whitespace-1.0.0.tgz#bd4ba1bcd99ad5b88234d72e6e2dacea9aa02d16" @@ -4322,6 +4352,15 @@ rollup-plugin-flow-no-whitespace@^1.0.0: flow-remove-types-no-whitespace "^1.0.3" rollup-pluginutils "^1.5.2" +rollup-plugin-node-resolve@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz#8b897c4c3030d5001277b0514b25d2ca09683ee0" + dependencies: + browser-resolve "^1.11.0" + builtin-modules "^1.1.0" + is-module "^1.0.0" + resolve "^1.1.6" + rollup-plugin-replace@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-1.1.1.tgz#396315ded050a6ce43b9518a886a3f60efb1ea33" @@ -4337,6 +4376,13 @@ rollup-pluginutils@^1.5.0, rollup-pluginutils@^1.5.2: estree-walker "^0.2.1" minimatch "^3.0.2" +rollup-pluginutils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz#7ec95b3573f6543a46a6461bd9a7c544525d0fc0" + dependencies: + estree-walker "^0.3.0" + micromatch "^2.3.11" + rollup-watch@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/rollup-watch/-/rollup-watch-3.2.2.tgz#5e574232e9ef36da9177f46946d8080cb267354b" From dfb014e3d7daacc2e3c59d07f1a53ec3c955d91c Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 13 Jun 2017 17:23:59 +0800 Subject: [PATCH 0025/1232] fix uglify upgrade --- build/build.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/build/build.js b/build/build.js index b9cb997e026..1e035ba753c 100644 --- a/build/build.js +++ b/build/build.js @@ -46,9 +46,7 @@ function buildEntry (config) { const code = bundle.generate(config).code if (isProd) { var minified = (config.banner ? config.banner + '\n' : '') + uglify.minify(code, { - fromString: true, output: { - screw_ie8: true, ascii_only: true }, compress: { From c994e5cf48a912d98c1a302375bb9964dba98113 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 13 Jun 2017 17:42:16 +0800 Subject: [PATCH 0026/1232] upgrade flow --- flow/component.js | 22 +++++++++++++++++-- flow/modules.js | 1 + .../instance/render-helpers/render-list.js | 6 ++++- src/core/observer/index.js | 2 +- .../bundle-renderer/create-bundle-renderer.js | 4 +++- src/server/create-renderer.js | 2 +- src/server/optimizing-compiler/codegen.js | 2 +- .../optimizing-compiler/runtime-helpers.js | 9 +++++++- src/server/render-context.js | 2 +- src/server/render.js | 2 +- src/shared/util.js | 6 +++-- 11 files changed, 46 insertions(+), 12 deletions(-) diff --git a/flow/component.js b/flow/component.js index c2aa3944c0a..4c9cb0947ad 100644 --- a/flow/component.js +++ b/flow/component.js @@ -69,16 +69,34 @@ declare interface Component { _provided: ?Object; // private methods + // lifecycle _init: Function; _mount: (el?: Element | void, hydrating?: boolean) => Component; _update: (vnode: VNode, hydrating?: boolean) => void; + // rendering _render: () => VNode; - __patch__: (a: Element | VNode | void, b: VNode) => any; + + __patch__: ( + a: Element | VNode | void, + b: VNode, + hydrating?: boolean, + removeOnly?: boolean, + parentElm?: any, + refElm?: any + ) => any; + // createElement + // _c is internal that accepts `normalizationType` optimization hint - _c: (vnode?: VNode, data?: VNodeData, children?: VNodeChildren, normalizationType?: number) => VNode | void; + _c: ( + vnode?: VNode, + data?: VNodeData, + children?: VNodeChildren, + normalizationType?: number + ) => VNode | void; + // renderStatic _m: (index: number, isInFor?: boolean) => VNode | VNodeChildren; // markOnce diff --git a/flow/modules.js b/flow/modules.js index 49a0a0989ce..a660e9c9101 100644 --- a/flow/modules.js +++ b/flow/modules.js @@ -10,6 +10,7 @@ declare module 'source-map' { toString(): string; } declare class SourceMapConsumer { + constructor (map: Object): void; originalPositionFor(position: { line: number; column: number; }): { source: ?string; line: ?number; diff --git a/src/core/instance/render-helpers/render-list.js b/src/core/instance/render-helpers/render-list.js index 09ec4cddb11..abe99db4d6d 100644 --- a/src/core/instance/render-helpers/render-list.js +++ b/src/core/instance/render-helpers/render-list.js @@ -7,7 +7,11 @@ import { isObject, isDef } from 'core/util/index' */ export function renderList ( val: any, - render: () => VNode + render: ( + val: any, + keyOrIndex: string | number, + index?: number + ) => VNode ): ?Array { let ret: ?Array, i, l, keys, key if (Array.isArray(val) || typeof val === 'string') { diff --git a/src/core/observer/index.js b/src/core/observer/index.js index 4d503203df2..a71334f8397 100644 --- a/src/core/observer/index.js +++ b/src/core/observer/index.js @@ -80,7 +80,7 @@ export class Observer { * Augment an target Object or Array by intercepting * the prototype chain using __proto__ */ -function protoAugment (target, src: Object) { +function protoAugment (target, src: Object, keys: any) { /* eslint-disable no-proto */ target.__proto__ = src /* eslint-enable no-proto */ diff --git a/src/server/bundle-renderer/create-bundle-renderer.js b/src/server/bundle-renderer/create-bundle-renderer.js index 64f1b6cfeb1..3b6e23769f5 100644 --- a/src/server/bundle-renderer/create-bundle-renderer.js +++ b/src/server/bundle-renderer/create-bundle-renderer.js @@ -27,7 +27,9 @@ type RenderBundle = { modules?: { [filename: string]: Array }; }; -export function createBundleRendererCreator (createRenderer: () => Renderer) { +export function createBundleRendererCreator ( + createRenderer: (options?: RenderOptions) => Renderer +) { return function createBundleRenderer ( bundle: string | RenderBundle, rendererOptions?: RenderOptions = {} diff --git a/src/server/create-renderer.js b/src/server/create-renderer.js index 4997aa61892..5e0300985a8 100644 --- a/src/server/create-renderer.js +++ b/src/server/create-renderer.js @@ -18,7 +18,7 @@ type RenderCache = { }; export type RenderOptions = { - modules?: Array<(vnode: VNode) => string>; + modules?: Array<(vnode: VNode) => ?string>; directives?: Object; isUnaryTag?: Function; cache?: RenderCache; diff --git a/src/server/optimizing-compiler/codegen.js b/src/server/optimizing-compiler/codegen.js index 397e0c8ebe6..4e0c6511b1e 100644 --- a/src/server/optimizing-compiler/codegen.js +++ b/src/server/optimizing-compiler/codegen.js @@ -97,7 +97,7 @@ function genSSRChildren (el, state, checkSkip) { function genSSRNode (el, state) { return el.type === 1 ? genSSRElement(el, state) - : genText(el, state) + : genText(el) } function genChildrenAsStringNode (el, state) { diff --git a/src/server/optimizing-compiler/runtime-helpers.js b/src/server/optimizing-compiler/runtime-helpers.js index bbcb86e66a0..48f0828faa0 100644 --- a/src/server/optimizing-compiler/runtime-helpers.js +++ b/src/server/optimizing-compiler/runtime-helpers.js @@ -71,7 +71,14 @@ function renderStringNode ( return new StringNode(open, close, children, normalizationType) } -function renderStringList (val: any, render: () => string): string { +function renderStringList ( + val: any, + render: ( + val: any, + keyOrIndex: string | number, + index?: number + ) => string +): string { let ret = '' let i, l, keys, key if (Array.isArray(val) || typeof val === 'string') { diff --git a/src/server/render-context.js b/src/server/render-context.js index 4396f9c191e..d75fdc8cf76 100644 --- a/src/server/render-context.js +++ b/src/server/render-context.js @@ -28,7 +28,7 @@ export class RenderContext { next: () => void; done: () => void; - modules: Array<() => ?string>; + modules: Array<(node: VNode) => ?string>; directives: Object; isUnaryTag: (tag: string) => boolean; diff --git a/src/server/render.js b/src/server/render.js index e3e192fa21c..872ae941bd4 100644 --- a/src/server/render.js +++ b/src/server/render.js @@ -343,7 +343,7 @@ function renderStartingTag (node: VNode, context) { } export function createRenderFunction ( - modules: Array, + modules: Array<(node: VNode) => ?string>, directives: Object, isUnaryTag: Function, cache: any diff --git a/src/shared/util.js b/src/shared/util.js index bc9bf466211..922bcd2b997 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -202,13 +202,15 @@ export function toObject (arr: Array): Object { /** * Perform no operation. + * Stubbing args to make Flow happy without leaving useless transpiled code + * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/) */ -export function noop () {} +export function noop (a?: any, b?: any, c?: any) {} /** * Always return false. */ -export const no = () => false +export const no = (a?: any, b?: any, c?: any) => false /** * Return same value From deae1ff851f19c0644b9cf1554ccf4899e9d52c6 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 13 Jun 2017 17:49:52 +0800 Subject: [PATCH 0027/1232] fix type tests --- types/options.d.ts | 4 ++-- types/test/options-test.ts | 2 +- types/test/vue-test.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/types/options.d.ts b/types/options.d.ts index 88dccec3739..d532dba8db0 100644 --- a/types/options.d.ts +++ b/types/options.d.ts @@ -57,10 +57,10 @@ export interface ComponentOptions { } export interface FunctionalComponentOptions { + name?: string; props?: string[] | { [key: string]: PropOptions | Constructor | Constructor[] }; functional: boolean; - render(this: never, createElement: CreateElement, context: RenderContext): VNode; - name?: string; + render(this: never, createElement: CreateElement, context: RenderContext): VNode | void; } export interface RenderContext { diff --git a/types/test/options-test.ts b/types/test/options-test.ts index 61173c8408c..28ce077e988 100644 --- a/types/test/options-test.ts +++ b/types/test/options-test.ts @@ -92,7 +92,7 @@ Vue.component('component', { createElement("div", "message"), createElement(Vue.component("component")), createElement({} as ComponentOptions), - createElement({ functional: true }), + createElement({ functional: true, render () {}}), createElement(() => Vue.component("component")), createElement(() => ( {} as ComponentOptions )), diff --git a/types/test/vue-test.ts b/types/test/vue-test.ts index 84e5e702143..b1848d2792f 100644 --- a/types/test/vue-test.ts +++ b/types/test/vue-test.ts @@ -83,7 +83,7 @@ class Test extends Vue { this.directive("", {bind() {}}); this.filter("", (value: number) => value); this.component("", { data: () => ({}) }); - this.component("", { functional: true }); + this.component("", { functional: true, render () {}}); this.use; this.mixin(Test); this.compile("
{{ message }}
"); From a2a9110ea101e3cdb6f5a3417b077303ddf21ff0 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 13 Jun 2017 18:14:03 +0800 Subject: [PATCH 0028/1232] bump weex test deps --- test/weex/helpers/index.js | 4 +++- test/weex/runtime/framework.spec.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/test/weex/helpers/index.js b/test/weex/helpers/index.js index bcf16583445..2375cbc61ae 100644 --- a/test/weex/helpers/index.js +++ b/test/weex/helpers/index.js @@ -5,7 +5,9 @@ domModule.updateFinish = domModule.createFinish = domModule.refreshFinish = () = import * as Vue from '../../../packages/weex-vue-framework' import { compile } from '../../../packages/weex-template-compiler' import { Runtime, Instance } from 'weex-vdom-tester' -import { config } from 'weex-js-runtime' +import { init, config } from 'weex-js-runtime' + +init() // http://stackoverflow.com/a/35478115 const matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g diff --git a/test/weex/runtime/framework.spec.js b/test/weex/runtime/framework.spec.js index dd74c29f1cf..50e707cc6db 100644 --- a/test/weex/runtime/framework.spec.js +++ b/test/weex/runtime/framework.spec.js @@ -455,7 +455,7 @@ describe('framework APIs', () => { }, el: "body" }) - `, { a: 1, b: 2 }) + `, undefined, { a: 1, b: 2 }) expect(JSON.parse(instance2.getRealRoot().children[0].attr.value)).toEqual({ a: 1, b: 2, env: DEFAULT_ENV }) }) From 5981529b497f5ef064b123aeb58eb9655172d6eb Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 13 Jun 2017 18:30:44 +0800 Subject: [PATCH 0029/1232] bump deps --- package.json | 90 ++++---- yarn.lock | 592 ++++++++++++++++++++------------------------------- 2 files changed, 277 insertions(+), 405 deletions(-) diff --git a/package.json b/package.json index 285ad658043..981a95f1d28 100644 --- a/package.json +++ b/package.json @@ -53,69 +53,69 @@ }, "homepage": "https://github.com/vuejs/vue#readme", "devDependencies": { - "babel-core": "^6.9.0", - "babel-eslint": "^7.1.0", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", "babel-helper-vue-jsx-merge-props": "^2.0.2", - "babel-loader": "^6.2.4", - "babel-plugin-istanbul": "^4.0.0", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-plugin-syntax-jsx": "^6.18.0", - "babel-plugin-transform-vue-jsx": "^3.2.0", - "babel-preset-es2015": "^6.9.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", "babel-preset-flow-vue": "^1.0.0", "buble": "^0.15.2", "chalk": "^1.1.3", - "chromedriver": "^2.21.2", + "chromedriver": "^2.30.1", "codecov.io": "^0.1.6", - "cross-spawn": "^5.0.1", + "cross-spawn": "^5.1.0", "de-indent": "^1.0.2", - "es6-promise": "^4.0.5", - "eslint": "^3.10.1", - "eslint-loader": "^1.3.0", - "eslint-plugin-flowtype": "^2.16.0", - "eslint-plugin-jasmine": "^2.1.0", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", "eslint-plugin-vue-libs": "^1.2.0", - "file-loader": "^0.10.1", - "flow-bin": "^0.45.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", "hash-sum": "^1.0.2", - "he": "^1.1.0", - "http-server": "^0.9.0", - "jasmine": "^2.5.2", - "jasmine-core": "^2.5.2", - "karma": "^1.1.0", - "karma-chrome-launcher": "^2.0.0", - "karma-coverage": "^1.0.0", - "karma-firefox-launcher": "^1.0.0", - "karma-jasmine": "^1.0.2", - "karma-mocha-reporter": "^2.0.4", - "karma-phantomjs-launcher": "^1.0.0", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", "karma-safari-launcher": "^1.0.0", - "karma-sauce-launcher": "^1.0.0", - "karma-sourcemap-loader": "^0.3.0", - "karma-webpack": "^2.0.1", - "lodash": "^4.17.1", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", "lodash.template": "^4.4.0", "lodash.uniq": "^4.5.0", - "lru-cache": "^4.0.2", - "nightwatch": "^0.9.9", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", "nightwatch-helpers": "^1.2.0", - "phantomjs-prebuilt": "^2.1.1", - "resolve": "^1.2.0", - "rollup": "^0.41.4", - "rollup-plugin-alias": "^1.2.0", - "rollup-plugin-babel": "^2.4.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.43.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", "rollup-plugin-buble": "^0.15.0", "rollup-plugin-commonjs": "^8.0.2", "rollup-plugin-flow-no-whitespace": "^1.0.0", "rollup-plugin-node-resolve": "^3.0.0", - "rollup-plugin-replace": "^1.1.0", - "rollup-watch": "^3.2.2", - "selenium-server": "^2.53.1", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^3.4.0", "serialize-javascript": "^1.3.0", - "typescript": "^2.1.6", - "uglify-js": "^2.6.2", - "webpack": "^2.2.0", - "weex-js-runtime": "^0.17.0-alpha4", - "weex-vdom-tester": "^0.1.4" + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" } } diff --git a/yarn.lock b/yarn.lock index 539ff35dc58..20e14d8dd9c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -43,7 +43,7 @@ acorn@^5.0.0, acorn@^5.0.1: version "5.0.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" -adm-zip@^0.4.7, adm-zip@~0.4.3: +adm-zip@~0.4.3: version "0.4.7" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1" @@ -77,12 +77,6 @@ align-text@^0.1.1, align-text@^0.1.3: longest "^1.0.1" repeat-string "^1.5.2" -alter@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/alter/-/alter-0.2.0.tgz#c7588808617572034aae62480af26b1d4d1cb3cd" - dependencies: - stable "~0.1.3" - amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" @@ -107,8 +101,8 @@ anymatch@^1.3.0: micromatch "^2.1.5" aproba@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" + version "1.1.2" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" archiver-utils@^1.3.0: version "1.3.0" @@ -226,35 +220,19 @@ assertion-error@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b" -ast-traverse@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ast-traverse/-/ast-traverse-0.1.1.tgz#69cf2b8386f19dcda1bb1e05d68fe359d8897de6" - -ast-types@0.8.12: - version "0.8.12" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.8.12.tgz#a0d90e4351bb887716c83fd637ebf818af4adfcc" - -ast-types@0.9.6: - version "0.9.6" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" - ast-types@0.x.x: - version "0.9.11" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.11.tgz#371177bb59232ff5ceaa1d09ee5cad705b1a5aa9" + version "0.9.12" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.12.tgz#b136300d67026625ae15326982ca9918e5db73c9" async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" -async@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.0.tgz#ac3613b1da9bed1b47510bb4651b8931e47146c7" - async@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/async/-/async-1.4.0.tgz#35f86f83c59e0421d099cd9a91d8278fb578c00d" -async@1.x, async@^1.4.0: +async@1.x, async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -298,20 +276,20 @@ babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@6, babel-core@^6.24.1, babel-core@^6.9.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" +babel-core@6, babel-core@^6.24.1, babel-core@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" dependencies: babel-code-frame "^6.22.0" - babel-generator "^6.24.1" + babel-generator "^6.25.0" babel-helpers "^6.24.1" babel-messages "^6.23.0" babel-register "^6.24.1" babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" + babel-template "^6.25.0" + babel-traverse "^6.25.0" + babel-types "^6.25.0" + babylon "^6.17.2" convert-source-map "^1.1.0" debug "^2.1.1" json5 "^0.5.0" @@ -322,7 +300,7 @@ babel-core@6, babel-core@^6.24.1, babel-core@^6.9.0: slash "^1.0.0" source-map "^0.5.0" -babel-eslint@^7.1.0: +babel-eslint@^7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" dependencies: @@ -331,13 +309,13 @@ babel-eslint@^7.1.0: babel-types "^6.23.0" babylon "^6.17.0" -babel-generator@^6.18.0, babel-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" +babel-generator@^6.18.0, babel-generator@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" dependencies: babel-messages "^6.23.0" babel-runtime "^6.22.0" - babel-types "^6.24.1" + babel-types "^6.25.0" detect-indent "^4.0.0" jsesc "^1.3.0" lodash "^4.2.0" @@ -423,14 +401,13 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-loader@^6.2.4: - version "6.4.1" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca" +babel-loader@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.0.0.tgz#2e43a66bee1fff4470533d0402c8a4532fafbaf7" dependencies: find-cache-dir "^0.1.1" - loader-utils "^0.2.16" + loader-utils "^1.0.2" mkdirp "^0.5.1" - object-assign "^4.0.1" babel-messages@^6.23.0: version "6.23.0" @@ -444,7 +421,7 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-istanbul@^4.0.0: +babel-plugin-istanbul@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz#18dde84bf3ce329fddf3f4103fae921456d8e587" dependencies: @@ -665,13 +642,13 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-vue-jsx@^3.2.0: +babel-plugin-transform-vue-jsx@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.4.3.tgz#de57d8dd7d619333c981867728f3e6fdf68982ff" dependencies: esutils "^2.0.2" -babel-preset-es2015@^6.9.0: +babel-preset-es2015@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" dependencies: @@ -727,50 +704,50 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-template@^6.16.0, babel-template@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" dependencies: babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" + babel-traverse "^6.25.0" + babel-types "^6.25.0" + babylon "^6.17.2" lodash "^4.2.0" -babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" +babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" dependencies: babel-code-frame "^6.22.0" babel-messages "^6.23.0" babel-runtime "^6.22.0" - babel-types "^6.24.1" - babylon "^6.15.0" + babel-types "^6.25.0" + babylon "^6.17.2" debug "^2.2.0" globals "^9.0.0" invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" +babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" dependencies: babel-runtime "^6.22.0" esutils "^2.0.2" lodash "^4.2.0" to-fast-properties "^1.0.1" -babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0, babylon@^6.17.0, babylon@^6.8.4: - version "6.17.2" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.2.tgz#201d25ef5f892c41bae49488b08db0dd476e9f5c" +babylon@^6.13.0, babylon@^6.17.0, babylon@^6.17.2, babylon@^6.8.4: + version "6.17.3" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.3.tgz#1327d709950b558f204e5352587fd0290f8d8e48" backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" base64-arraybuffer@0.1.5: version "0.1.5" @@ -862,10 +839,10 @@ boom@2.x.x: hoek "2.x.x" brace-expansion@^1.0.0, brace-expansion@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" dependencies: - balanced-match "^0.4.1" + balanced-match "^1.0.0" concat-map "0.0.1" braces@^0.1.2: @@ -882,10 +859,6 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -breakable@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/breakable/-/breakable-1.0.0.tgz#784a797915a38ead27bad456b5572cb4bbaa78c1" - brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -967,10 +940,6 @@ buffer-crc32@^0.2.1: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" -buffer-shims@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - buffer-xor@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -1016,7 +985,7 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@^1.0.2, camelcase@^1.2.1: +camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" @@ -1064,7 +1033,7 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chokidar@^1.4.1, chokidar@^1.4.3: +chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -1079,13 +1048,14 @@ chokidar@^1.4.1, chokidar@^1.4.3: optionalDependencies: fsevents "^1.0.0" -chromedriver@^2.21.2: - version "2.29.0" - resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-2.29.0.tgz#e3fd8b3c08dce2562b80ef1b0b846597659d0cc3" +chromedriver@^2.30.1: + version "2.30.1" + resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-2.30.1.tgz#18cb6c61ca8eb8b32c25dd62a1308e4598d01c26" dependencies: - adm-zip "^0.4.7" + extract-zip "^1.6.5" kew "^0.7.0" mkdirp "^0.5.1" + request "^2.81.0" rimraf "^2.5.4" cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: @@ -1169,7 +1139,7 @@ combined-stream@~0.0.4: dependencies: delayed-stream "0.0.5" -commander@2.9.0, commander@^2.5.0, commander@^2.9.0: +commander@2.9.0, commander@^2.9.0, commander@~2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" dependencies: @@ -1179,20 +1149,6 @@ commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" -commoner@~0.10.3: - version "0.10.8" - resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" - dependencies: - commander "^2.5.0" - detective "^4.3.1" - glob "^5.0.15" - graceful-fs "^4.1.2" - iconv-lite "^0.4.5" - mkdirp "^0.5.0" - private "^0.1.6" - q "^1.1.2" - recast "^0.11.17" - component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -1230,7 +1186,7 @@ concat-stream@1.5.0: readable-stream "~2.0.0" typedarray "~0.0.5" -concat-stream@^1.5.2: +concat-stream@1.6.0, concat-stream@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -1323,7 +1279,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^5.0.1: +cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: @@ -1453,30 +1409,11 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - defined@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz#f35eea7d705e933baf13b2f03b3f83d921403b3e" -defs@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/defs/-/defs-1.1.1.tgz#b22609f2c7a11ba7a3db116805c139b1caffa9d2" - dependencies: - alter "~0.2.0" - ast-traverse "~0.1.1" - breakable "~1.0.0" - esprima-fb "~15001.1001.0-dev-harmony-fb" - simple-fmt "~0.1.0" - simple-is "~0.2.0" - stringmap "~0.2.2" - stringset "~0.2.1" - tryor "~0.1.2" - yargs "~3.27.0" - -degenerator@~1.0.0: +degenerator@~1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" dependencies: @@ -1525,13 +1462,6 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -detective@^4.3.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-4.5.0.tgz#6e5a8c6b26e6c7a254b1c6b6d7490d98ec91edd1" - dependencies: - acorn "^4.0.3" - defined "^1.0.0" - di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" @@ -1606,14 +1536,14 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -ecstatic@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-1.4.1.tgz#32cb7b6fa2e290d58668674d115e8f0c3d567d6a" +ecstatic@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-2.2.1.tgz#b5087fad439dd9dd49d31e18131454817fe87769" dependencies: - he "^0.5.0" + he "^1.1.1" mime "^1.2.11" minimist "^1.1.0" - url-join "^1.0.0" + url-join "^2.0.2" ee-first@1.1.1: version "1.1.1" @@ -1718,8 +1648,8 @@ error-ex@^1.2.0: is-arrayish "^0.2.1" es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.22" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.22.tgz#1876c51f990769c112c781ea3ebe89f84fd39071" + version "0.10.23" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.23.tgz#7578b51be974207a5487821b56538c224e4e7b38" dependencies: es6-iterator "2" es6-symbol "~3.1" @@ -1743,7 +1673,7 @@ es6-map@^0.1.3: es6-symbol "~3.1.1" event-emitter "~0.3.5" -es6-promise@^4.0.5: +es6-promise@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.0.tgz#dda03ca8f9f89bc597e689842929de7ba8cebdf0" @@ -1805,7 +1735,7 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-loader@^1.3.0: +eslint-loader@^1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.7.1.tgz#50b158dd6272dcefb97e984254837f81a5802ce0" dependencies: @@ -1816,7 +1746,7 @@ eslint-loader@^1.3.0: object-hash "^1.1.4" rimraf "^2.6.1" -eslint-plugin-flowtype@^2.16.0: +eslint-plugin-flowtype@^2.34.0: version "2.34.0" resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.34.0.tgz#b9875f314652e5081623c9d2b18a346bbb759c09" dependencies: @@ -1828,7 +1758,7 @@ eslint-plugin-html@^2.0.0: dependencies: htmlparser2 "^3.8.2" -eslint-plugin-jasmine@^2.1.0: +eslint-plugin-jasmine@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.2.0.tgz#7135879383c39a667c721d302b9f20f0389543de" @@ -1838,7 +1768,7 @@ eslint-plugin-vue-libs@^1.2.0: dependencies: eslint-plugin-html "^2.0.0" -eslint@^3.10.1: +eslint@^3.0.0: version "3.19.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" dependencies: @@ -1885,15 +1815,11 @@ espree@^3.4.0: acorn "^5.0.1" acorn-jsx "^3.0.0" -esprima-fb@~15001.1001.0-dev-harmony-fb: - version "15001.1001.0-dev-harmony-fb" - resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz#43beb57ec26e8cf237d3dd8b33e42533577f2659" - esprima@2.7.x, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@3.x.x, esprima@^3.1.1, esprima@~3.1.0: +esprima@3.x.x, esprima@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -2000,6 +1926,15 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" +extract-zip@^1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.5.tgz#99a06735b6ea20ea9b705d779acffcc87cff0440" + dependencies: + concat-stream "1.6.0" + debug "2.2.0" + mkdirp "0.5.0" + yauzl "2.4.1" + extract-zip@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4" @@ -2037,9 +1972,9 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" -file-loader@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842" +file-loader@^0.11.2: + version "0.11.2" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.2.tgz#4ff1df28af38719a6098093b88c82c71d1794a34" dependencies: loader-utils "^1.0.2" @@ -2103,9 +2038,9 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" -flow-bin@^0.45.0: - version "0.45.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.45.0.tgz#009dd0f577a3f665c74ca8be827ae8c2dd8fd6b5" +flow-bin@^0.48.0: + version "0.48.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.48.0.tgz#72d075143524358db8901525e3c784dc13a7c7ee" flow-remove-types-no-whitespace@^1.0.3: version "1.0.5" @@ -2167,11 +2102,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" fsevents@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" + version "1.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" dependencies: nan "^2.3.0" - node-pre-gyp "^0.6.29" + node-pre-gyp "^0.6.36" fstream-ignore@^1.0.5: version "1.0.5" @@ -2228,9 +2163,9 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" -get-uri@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-1.1.0.tgz#7375d04daf7fcb584b3632679cbdf339b51bb149" +get-uri@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.0.tgz#713e47cbcbaeab38f88af1cdfc85fa7f09b00738" dependencies: data-uri-to-buffer "0" debug "2" @@ -2291,8 +2226,8 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1: path-is-absolute "^1.0.0" globals@^9.0.0, globals@^9.14.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" globby@^5.0.0: version "5.0.0" @@ -2412,11 +2347,7 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" -he@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/he/-/he-0.5.0.tgz#2c05ffaef90b68e860f3fd2b54ef580989277ee2" - -he@^1.1.0: +he@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -2482,17 +2413,17 @@ http-proxy@^1.13.0, http-proxy@^1.8.1: eventemitter3 "1.x.x" requires-port "1.x.x" -http-server@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.9.0.tgz#8f1b06bdc733618d4dc42831c7ba1aff4e06001a" +http-server@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.10.0.tgz#b2a446b16a9db87ed3c622ba9beb1b085b1234a7" dependencies: colors "1.0.3" corser "~2.0.0" - ecstatic "^1.4.0" + ecstatic "^2.0.0" http-proxy "^1.8.1" opener "~1.4.0" optimist "0.6.x" - portfinder "0.4.x" + portfinder "^1.0.13" union "~0.4.3" http-signature@~0.10.0: @@ -2523,7 +2454,7 @@ https-proxy-agent@1, https-proxy-agent@^1.0.0, https-proxy-agent@~1.0.0: debug "2" extend "3" -iconv-lite@0.4.15, iconv-lite@^0.4.5: +iconv-lite@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" @@ -2600,6 +2531,10 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" +ip@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.0.1.tgz#c7e356cdea225ae71b36d70f2e71a92ba4e42590" + ip@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -2681,12 +2616,18 @@ is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" -is-number@^2.0.2, is-number@^2.1.0: +is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" dependencies: kind-of "^3.0.2" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" @@ -2794,11 +2735,11 @@ istanbul@^0.4.0: which "^1.1.1" wordwrap "^1.0.0" -jasmine-core@^2.5.2, jasmine-core@~2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.6.2.tgz#74ea1f7cf428691af201107d631234027a09daab" +jasmine-core@^2.6.3, jasmine-core@~2.6.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.6.3.tgz#45072950e4a42b1e322fe55c001100a465d77815" -jasmine@^2.5.2: +jasmine@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.6.0.tgz#6b22e70883e8e589d456346153b4d206ddbe217f" dependencies: @@ -2806,12 +2747,6 @@ jasmine@^2.5.2: glob "^7.0.6" jasmine-core "~2.6.0" -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" @@ -2890,14 +2825,14 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.3.6" -karma-chrome-launcher@^2.0.0: +karma-chrome-launcher@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz#216879c68ac04d8d5140e99619ba04b59afd46cf" dependencies: fs-access "^1.0.0" which "^1.2.1" -karma-coverage@^1.0.0: +karma-coverage@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.1.tgz#5aff8b39cf6994dc22de4c84362c76001b637cf6" dependencies: @@ -2907,21 +2842,21 @@ karma-coverage@^1.0.0: minimatch "^3.0.0" source-map "^0.5.1" -karma-firefox-launcher@^1.0.0: +karma-firefox-launcher@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.0.1.tgz#ce58f47c2013a88156d55a5d61337c099cf5bb51" -karma-jasmine@^1.0.2: +karma-jasmine@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf" -karma-mocha-reporter@^2.0.4: +karma-mocha-reporter@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz#04fdda45a1d9697a73871c7472223c581701ab20" dependencies: chalk "1.1.3" -karma-phantomjs-launcher@^1.0.0: +karma-phantomjs-launcher@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" dependencies: @@ -2932,7 +2867,7 @@ karma-safari-launcher@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/karma-safari-launcher/-/karma-safari-launcher-1.0.0.tgz#96982a2cc47d066aae71c553babb28319115a2ce" -karma-sauce-launcher@^1.0.0: +karma-sauce-launcher@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-1.1.0.tgz#3d083cf5659d6736ab97bcee5d8acd86ad522212" dependencies: @@ -2941,13 +2876,13 @@ karma-sauce-launcher@^1.0.0: saucelabs "^1.3.0" wd "^1.0.0" -karma-sourcemap-loader@^0.3.0: +karma-sourcemap-loader@^0.3.7: version "0.3.7" resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" dependencies: graceful-fs "^4.1.2" -karma-webpack@^2.0.1: +karma-webpack@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-2.0.3.tgz#39cebf5ca2580139b27f9ae69b78816b9c82fae6" dependencies: @@ -2957,7 +2892,7 @@ karma-webpack@^2.0.1: source-map "^0.1.41" webpack-dev-middleware "^1.0.11" -karma@^1.1.0: +karma@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.0.tgz#6f7a1a406446fa2e187ec95398698f4cee476269" dependencies: @@ -2999,6 +2934,12 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.1.5" +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -3219,7 +3160,7 @@ lodash@4.16.2: version "4.16.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.2.tgz#3e626db827048a699281a8a125226326cfc0e652" -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.1, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.8.0: +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.8.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -3251,12 +3192,12 @@ lru-cache@2.2.x: version "2.2.4" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" -lru-cache@^4.0.1, lru-cache@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" +lru-cache@^4.0.1, lru-cache@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" + pseudomap "^1.0.2" + yallist "^2.1.2" lru-cache@~2.6.5: version "2.6.5" @@ -3459,9 +3400,9 @@ nightwatch-helpers@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/nightwatch-helpers/-/nightwatch-helpers-1.2.0.tgz#cdefeb7635074a141825a7b6d1b955b6d7810a0f" -nightwatch@^0.9.9: - version "0.9.15" - resolved "https://registry.yarnpkg.com/nightwatch/-/nightwatch-0.9.15.tgz#71a62aa16368e9da09fae800ccb9fb34d036164d" +nightwatch@^0.9.16: + version "0.9.16" + resolved "https://registry.yarnpkg.com/nightwatch/-/nightwatch-0.9.16.tgz#c4ac3ec711b0ff047c3dca9c6557365ee236519f" dependencies: chai-nightwatch "~0.1.x" ejs "0.8.3" @@ -3502,7 +3443,7 @@ node-libs-browser@^2.0.0: util "^0.10.3" vm-browserify "0.0.4" -node-pre-gyp@^0.6.29: +node-pre-gyp@^0.6.36: version "0.6.36" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" dependencies: @@ -3674,27 +3615,27 @@ p-locate@^2.0.0: p-limit "^1.1.0" pac-proxy-agent@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-1.0.0.tgz#dcd5b746581367430a236e88eacfd4e5b8d068a5" + version "1.1.0" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-1.1.0.tgz#34a385dfdf61d2f0ecace08858c745d3e791fd4d" dependencies: agent-base "2" debug "2" extend "3" - get-uri "1" + get-uri "2" http-proxy-agent "1" https-proxy-agent "1" - pac-resolver "~1.2.1" + pac-resolver "~2.0.0" + raw-body "2" socks-proxy-agent "2" - stream-to-buffer "0.1.0" -pac-resolver@~1.2.1: - version "1.2.6" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-1.2.6.tgz#ed03af0c5b5933505bdd3f07f75175466d5e7cfb" +pac-resolver@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-2.0.0.tgz#99b88d2f193fbdeefc1c9a529c1f3260ab5277cd" dependencies: co "~3.0.6" - degenerator "~1.0.0" + degenerator "~1.0.2" + ip "1.0.1" netmask "~1.0.4" - regenerator "~0.8.13" thunkify "~2.1.1" pako@~0.2.0: @@ -3800,7 +3741,7 @@ performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" -phantomjs-prebuilt@^2.1.1, phantomjs-prebuilt@^2.1.7: +phantomjs-prebuilt@^2.1.14, phantomjs-prebuilt@^2.1.7: version "2.1.14" resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz#d53d311fcfb7d1d08ddb24014558f1188c516da0" dependencies: @@ -3838,11 +3779,12 @@ pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" -portfinder@0.4.x: - version "0.4.0" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-0.4.0.tgz#a3ffadffafe4fb98e0601a85eda27c27ce84ca1e" +portfinder@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" dependencies: - async "0.9.0" + async "^1.5.2" + debug "^2.2.0" mkdirp "0.5.x" prelude-ls@~1.1.2: @@ -3853,7 +3795,7 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -private@^0.1.6, private@~0.1.5: +private@^0.1.6: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" @@ -3886,7 +3828,7 @@ prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" -pseudomap@^1.0.1: +pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -3912,7 +3854,7 @@ q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" -q@^1.1.2, q@^1.4.1: +q@^1.4.1: version "1.5.0" resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" @@ -3945,21 +3887,23 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" + is-number "^3.0.0" + kind-of "^4.0.0" randombytes@^2.0.0, randombytes@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" + version "2.0.5" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + dependencies: + safe-buffer "^5.1.0" range-parser@^1.0.3, range-parser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" -raw-body@~2.2.0: +raw-body@2, raw-body@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" dependencies: @@ -4001,14 +3945,14 @@ readable-stream@1.1.x: string_decoder "~0.10.x" readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: - version "2.2.9" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" + version "2.2.11" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.11.tgz#0796b31f8d7688007ff0b93a8088d34aa17c0f72" dependencies: - buffer-shims "~1.0.0" core-util-is "~1.0.0" inherits "~2.0.1" isarray "~1.0.0" process-nextick-args "~1.0.6" + safe-buffer "~5.0.1" string_decoder "~1.0.0" util-deprecate "~1.0.1" @@ -4049,24 +3993,6 @@ readline2@^1.0.1: is-fullwidth-code-point "^1.0.0" mute-stream "0.0.5" -recast@0.10.33: - version "0.10.33" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.10.33.tgz#942808f7aa016f1fa7142c461d7e5704aaa8d697" - dependencies: - ast-types "0.8.12" - esprima-fb "~15001.1001.0-dev-harmony-fb" - private "~0.1.5" - source-map "~0.5.0" - -recast@^0.11.17: - version "0.11.23" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" - dependencies: - ast-types "0.9.6" - esprima "~3.1.0" - private "~0.1.5" - source-map "~0.5.0" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -4088,10 +4014,6 @@ regenerator-runtime@^0.10.0: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" -regenerator-runtime@~0.9.5: - version "0.9.6" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" - regenerator-transform@0.9.11: version "0.9.11" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" @@ -4100,18 +4022,6 @@ regenerator-transform@0.9.11: babel-types "^6.19.0" private "^0.1.6" -regenerator@~0.8.13: - version "0.8.46" - resolved "https://registry.yarnpkg.com/regenerator/-/regenerator-0.8.46.tgz#154c327686361ed52cad69b2545efc53a3d07696" - dependencies: - commoner "~0.10.3" - defs "~1.1.0" - esprima-fb "~15001.1001.0-dev-harmony-fb" - private "~0.1.5" - recast "0.10.33" - regenerator-runtime "~0.9.5" - through "~2.3.8" - regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -4138,8 +4048,8 @@ regjsparser@^0.1.4: jsesc "~0.5.0" remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + version "1.0.2" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" repeat-element@^1.1.2: version "1.1.2" @@ -4269,7 +4179,7 @@ resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" dependencies: @@ -4313,13 +4223,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^2.0.0" inherits "^2.0.1" -rollup-plugin-alias@^1.2.0: +rollup-plugin-alias@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/rollup-plugin-alias/-/rollup-plugin-alias-1.3.1.tgz#a9152fec4b6a6510dae93989517ca7853c32a6fa" dependencies: slash "^1.0.0" -rollup-plugin-babel@^2.4.0: +rollup-plugin-babel@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-2.7.1.tgz#16528197b0f938a1536f44683c7a93d573182f57" dependencies: @@ -4361,7 +4271,7 @@ rollup-plugin-node-resolve@^3.0.0: is-module "^1.0.0" resolve "^1.1.6" -rollup-plugin-replace@^1.1.0: +rollup-plugin-replace@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-1.1.1.tgz#396315ded050a6ce43b9518a886a3f60efb1ea33" dependencies: @@ -4383,15 +4293,16 @@ rollup-pluginutils@^2.0.1: estree-walker "^0.3.0" micromatch "^2.3.11" -rollup-watch@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/rollup-watch/-/rollup-watch-3.2.2.tgz#5e574232e9ef36da9177f46946d8080cb267354b" +rollup-watch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/rollup-watch/-/rollup-watch-4.0.0.tgz#309051b9403b9e5445c5746c9eba9a466951d39e" dependencies: + chokidar "^1.7.0" require-relative "0.8.7" -rollup@^0.41.4: - version "0.41.6" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.6.tgz#e0d05497877a398c104d816d2733a718a7a94e2a" +rollup@^0.43.0: + version "0.43.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.43.0.tgz#b36bdb75fa5e0823b6de8aee18ff7b5655520543" dependencies: source-map-support "^0.4.0" @@ -4405,7 +4316,11 @@ rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" -safe-buffer@^5.0.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.0.tgz#fe4c8460397f9eaaaa58e73be46273408a45e223" + +safe-buffer@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" @@ -4425,9 +4340,9 @@ saucelabs@^1.3.0: dependencies: https-proxy-agent "^1.0.0" -selenium-server@^2.53.1: - version "2.53.1" - resolved "https://registry.yarnpkg.com/selenium-server/-/selenium-server-2.53.1.tgz#d681528812f3c2e0531a6b7e613e23bb02cce8a6" +selenium-server@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/selenium-server/-/selenium-server-3.4.0.tgz#f9303656d956c8d6c856e4942167e0dec97fa7a8" "semver@2 || 3 || 4 || 5", semver@^5.3.0: version "5.3.0" @@ -4478,8 +4393,8 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" shelljs@^0.7.5: - version "0.7.7" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" + version "0.7.8" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -4489,14 +4404,6 @@ signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -simple-fmt@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz#191bf566a59e6530482cb25ab53b4a8dc85c3a6b" - -simple-is@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz#2abb75aade39deb5cc815ce10e6191164850baf0" - slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -4602,7 +4509,7 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -4637,8 +4544,8 @@ sprintf-js@^1.0.3, sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" sshpk@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -4647,14 +4554,9 @@ sshpk@^1.7.0: optionalDependencies: bcrypt-pbkdf "^1.0.0" ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" jsbn "~0.1.0" tweetnacl "~0.14.0" -stable@~0.1.3: - version "0.1.6" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.6.tgz#910f5d2aed7b520c6e777499c1f32e139fdecb10" - "statuses@>= 1.3.1 < 2", statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -4673,8 +4575,8 @@ stream-combiner@~0.0.2: duplexer "~0.1.1" stream-http@^2.3.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.1.tgz#546a51741ad5a6b07e9e31b0b10441a917df528a" + version "2.7.2" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -4682,16 +4584,6 @@ stream-http@^2.3.1: to-arraybuffer "^1.0.0" xtend "^4.0.0" -stream-to-buffer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz#26799d903ab2025c9bd550ac47171b00f8dd80a9" - dependencies: - stream-to "~0.2.0" - -stream-to@~0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz#84306098d85fdb990b9fa300b1b3ccf55e8ef01d" - string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -4712,18 +4604,10 @@ string_decoder@^0.10.25, string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" string_decoder@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.1.tgz#62e200f039955a6810d8df0a33ffc0f013662d98" + version "1.0.2" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.2.tgz#b29e1f4e1125fa97a10382b8a533737b7491e179" dependencies: - safe-buffer "^5.0.1" - -stringmap@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" - -stringset@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/stringset/-/stringset-0.2.1.tgz#ef259c4e349344377fcd1c913dd2e848c9c042b5" + safe-buffer "~5.0.1" stringstream@~0.0.4: version "0.0.5" @@ -4847,7 +4731,7 @@ throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" -through@2, through@^2.3.6, through@~2.3.4, through@~2.3.8: +through@2, through@^2.3.6, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -4897,10 +4781,6 @@ tryit@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" -tryor@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/tryor/-/tryor-0.1.2.tgz#8145e4ca7caff40acde3ccf946e8b8bb75b4172b" - tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -4940,19 +4820,26 @@ typedarray@^0.0.6, typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@^2.1.6: - version "2.3.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.4.tgz#3d38321828231e434f287514959c37a82b629f42" +typescript@^2.3.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.4.0.tgz#aef5a8d404beba36ad339abf079ddddfffba86dd" -uglify-js@^2.6, uglify-js@^2.6.2, uglify-js@^2.8.27: - version "2.8.27" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.27.tgz#47787f912b0f242e5b984343be8e35e95f694c9c" +uglify-js@^2.6, uglify-js@^2.8.27: + version "2.8.28" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.28.tgz#e335032df9bb20dcb918f164589d5af47f38834a" dependencies: source-map "~0.5.1" yargs "~3.10.0" optionalDependencies: uglify-to-browserify "~1.0.0" +uglify-js@^3.0.15: + version "3.0.15" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.15.tgz#aacb323a846b234602270dead8a32441a8806f42" + dependencies: + commander "~2.9.0" + source-map "~0.5.1" + uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" @@ -4982,9 +4869,9 @@ unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" -url-join@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz#741c6c2f4596c4830d6718460920d0c92202dc78" +url-join@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.2.tgz#c072756967ad24b8b59e5741551caac78f50b8b7" url@^0.11.0: version "0.11.0" @@ -5102,7 +4989,7 @@ webpack-sources@^0.2.3: source-list-map "^1.1.1" source-map "~0.5.3" -webpack@^2.2.0: +webpack@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.6.1.tgz#2e0457f0abb1ac5df3ab106c69c672f236785f07" dependencies: @@ -5128,13 +5015,13 @@ webpack@^2.2.0: webpack-sources "^0.2.3" yargs "^6.0.0" -weex-js-runtime@^0.17.0-alpha4: - version "0.17.0-alpha4" - resolved "https://registry.yarnpkg.com/weex-js-runtime/-/weex-js-runtime-0.17.0-alpha4.tgz#06015f87c8e9e8c828ce178ed89103b995d217e3" +weex-js-runtime@^0.20.5: + version "0.20.5" + resolved "https://registry.yarnpkg.com/weex-js-runtime/-/weex-js-runtime-0.20.5.tgz#42e1b03a4942c9d6967284f20bf29f11ed440608" -weex-vdom-tester@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/weex-vdom-tester/-/weex-vdom-tester-0.1.4.tgz#a53f698f42b5ebf42c3539ddb5eb06ed78fb7af8" +weex-vdom-tester@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/weex-vdom-tester/-/weex-vdom-tester-0.2.0.tgz#3273ab69a99c57c925a230b4b3d0b6bbaeba221e" dependencies: jsonp "^0.2.0" xhr2 "^0.1.3" @@ -5159,10 +5046,6 @@ window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" -window-size@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" @@ -5219,11 +5102,11 @@ xtend@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" -y18n@^3.2.0, y18n@^3.2.1: +y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -yallist@^2.0.0: +yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -5260,17 +5143,6 @@ yargs@~3.10.0: decamelize "^1.0.0" window-size "0.1.0" -yargs@~3.27.0: - version "3.27.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.27.0.tgz#21205469316e939131d59f2da0c6d7f98221ea40" - dependencies: - camelcase "^1.2.1" - cliui "^2.1.0" - decamelize "^1.0.0" - os-locale "^1.4.0" - window-size "^0.1.2" - y18n "^3.2.0" - yauzl@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" From f3a15220c5c1d38a509a80b5be795ac89753f4a3 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 13 Jun 2017 18:40:22 +0800 Subject: [PATCH 0030/1232] revert selenium version for CI --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 981a95f1d28..8221f9e18bc 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "rollup-plugin-node-resolve": "^3.0.0", "rollup-plugin-replace": "^1.1.1", "rollup-watch": "^4.0.0", - "selenium-server": "^3.4.0", + "selenium-server": "^2.53.1", "serialize-javascript": "^1.3.0", "typescript": "^2.3.4", "uglify-js": "^3.0.15", diff --git a/yarn.lock b/yarn.lock index 20e14d8dd9c..f02c8fab64e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4340,9 +4340,9 @@ saucelabs@^1.3.0: dependencies: https-proxy-agent "^1.0.0" -selenium-server@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/selenium-server/-/selenium-server-3.4.0.tgz#f9303656d956c8d6c856e4942167e0dec97fa7a8" +selenium-server@^2.53.1: + version "2.53.1" + resolved "https://registry.yarnpkg.com/selenium-server/-/selenium-server-2.53.1.tgz#d681528812f3c2e0531a6b7e613e23bb02cce8a6" "semver@2 || 3 || 4 || 5", semver@^5.3.0: version "5.3.0" From 69f946b4372fd74a1f2b1b8460fcd06ec8dd0a91 Mon Sep 17 00:00:00 2001 From: David Eckel Date: Tue, 13 Jun 2017 06:53:38 -0700 Subject: [PATCH 0031/1232] Fix XHTML incompatibility (fix #5852) (#5853) --- src/platforms/web/util/compat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platforms/web/util/compat.js b/src/platforms/web/util/compat.js index 3ee0019e622..144d68afb6d 100644 --- a/src/platforms/web/util/compat.js +++ b/src/platforms/web/util/compat.js @@ -5,7 +5,7 @@ import { inBrowser } from 'core/util/index' // check whether current browser encodes a char inside attribute values function shouldDecode (content: string, encoded: string): boolean { const div = document.createElement('div') - div.innerHTML = `
` + div.innerHTML = `
` return div.innerHTML.indexOf(encoded) > 0 } From 9831b403cf0506a873f03cc008e9debe6ef1f137 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Wed, 14 Jun 2017 14:37:26 +0100 Subject: [PATCH 0032/1232] Add warnHandler to allow users to set a custom warn callback, similar to errorHandler (#5883) --- src/core/config.js | 6 ++++++ src/core/util/debug.js | 10 +++++---- test/unit/features/debug.spec.js | 36 +++++++++++++++++++++++++++++++- types/test/vue-test.ts | 6 ++++++ types/vue.d.ts | 1 + 5 files changed, 54 insertions(+), 5 deletions(-) diff --git a/src/core/config.js b/src/core/config.js index fc472c79ab4..95663de8a6a 100644 --- a/src/core/config.js +++ b/src/core/config.js @@ -16,6 +16,7 @@ export type Config = { performance: boolean; devtools: boolean; errorHandler: ?(err: Error, vm: Component, info: string) => void; + warnHandler: ?(msg: string, vm: Component, trace: string) => void; ignoredElements: Array; keyCodes: { [key: string]: number | Array }; @@ -62,6 +63,11 @@ export default ({ */ errorHandler: null, + /** + * Warn handler for watcher warns + */ + warnHandler: null, + /** * Ignore certain custom elements */ diff --git a/src/core/util/debug.js b/src/core/util/debug.js index ad19e167e57..7799024240d 100644 --- a/src/core/util/debug.js +++ b/src/core/util/debug.js @@ -15,10 +15,12 @@ if (process.env.NODE_ENV !== 'production') { .replace(/[-_]/g, '') warn = (msg, vm) => { - if (hasConsole && (!config.silent)) { - console.error(`[Vue warn]: ${msg}` + ( - vm ? generateComponentTrace(vm) : '' - )) + const trace = vm ? generateComponentTrace(vm) : '' + + if (config.warnHandler) { + config.warnHandler.call(null, msg, vm, trace) + } else if (hasConsole && (!config.silent)) { + console.error(`[Vue warn]: ${msg}${trace}`) } } diff --git a/test/unit/features/debug.spec.js b/test/unit/features/debug.spec.js index 49d2abf55fc..5fb5b48270c 100644 --- a/test/unit/features/debug.spec.js +++ b/test/unit/features/debug.spec.js @@ -1,5 +1,5 @@ import Vue from 'vue' -import { formatComponentName } from 'core/util/debug' +import { formatComponentName, warn } from 'core/util/debug' describe('Debug utilities', () => { it('properly format component names', () => { @@ -80,4 +80,38 @@ found in ` ).toHaveBeenWarned() }) + + describe('warn', () => { + const msg = 'message' + const vm = new Vue() + + it('calls warnHandler if warnHandler is set', () => { + Vue.config.warnHandler = jasmine.createSpy() + + warn(msg, vm) + + expect(Vue.config.warnHandler).toHaveBeenCalledWith(msg, vm, jasmine.any(String)) + + Vue.config.warnHandler = null + }) + + it('calls console.error if silent is false', () => { + Vue.config.silent = false + + warn(msg, vm) + + expect(msg).toHaveBeenWarned() + expect(console.error).toHaveBeenCalled() + }) + + it('does not call console.error if silent is true', () => { + Vue.config.silent = true + + warn(msg, vm) + + expect(console.error).not.toHaveBeenCalled() + + Vue.config.silent = false + }) + }) }) diff --git a/types/test/vue-test.ts b/types/test/vue-test.ts index b1848d2792f..b16e58470e1 100644 --- a/types/test/vue-test.ts +++ b/types/test/vue-test.ts @@ -63,6 +63,12 @@ class Test extends Vue { vm.testMethods(); } }; + config.warnHandler = (msg, vm) => { + if (vm instanceof Test) { + vm.testProperties(); + vm.testMethods(); + } + }; config.keyCodes = { esc: 27 }; } diff --git a/types/vue.d.ts b/types/vue.d.ts index b3bd1cdfea0..2ca8122dcbb 100644 --- a/types/vue.d.ts +++ b/types/vue.d.ts @@ -75,6 +75,7 @@ export declare class Vue { productionTip: boolean; performance: boolean; errorHandler(err: Error, vm: Vue, info: string): void; + warnHandler(msg: string, vm: Vue, trace: string): void; ignoredElements: string[]; keyCodes: { [key: string]: number }; } From 080c387d49cd5cc43726d73ab886650dedd244db Mon Sep 17 00:00:00 2001 From: JK Date: Thu, 15 Jun 2017 22:15:36 +0800 Subject: [PATCH 0033/1232] Merge inject when extending a component (#5827) * simply fix inject extends * add comments for normalizeInject * normalizeInect should return for non-array * remove isArray branch in resolveInject * add test case for extending injection * Create options.js * type of inject should be object now * Revert "type of inject should be object now" This reverts commit 8466a2866b868de00f755b80e5b3a3dc8bdc2d86. --- src/core/instance/inject.js | 8 ++----- src/core/util/options.js | 15 ++++++++++++ test/unit/features/options/inject.spec.js | 29 +++++++++++++++++++++++ 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/src/core/instance/inject.js b/src/core/instance/inject.js index 38fa6b108aa..ac36564d966 100644 --- a/src/core/instance/inject.js +++ b/src/core/instance/inject.js @@ -38,18 +38,14 @@ export function initInjections (vm: Component) { export function resolveInject (inject: any, vm: Component): ?Object { if (inject) { // inject is :any because flow is not smart enough to figure out cached - // isArray here - const isArray = Array.isArray(inject) const result = Object.create(null) - const keys = isArray - ? inject - : hasSymbol + const keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject) for (let i = 0; i < keys.length; i++) { const key = keys[i] - const provideKey = isArray ? key : inject[key] + const provideKey = inject[key] let source = vm while (source) { if (source._provided && provideKey in source._provided) { diff --git a/src/core/util/options.js b/src/core/util/options.js index 4335b355996..99580f0443a 100644 --- a/src/core/util/options.js +++ b/src/core/util/options.js @@ -182,6 +182,7 @@ strats.watch = function (parentVal: ?Object, childVal: ?Object): ?Object { */ strats.props = strats.methods = +strats.inject = strats.computed = function (parentVal: ?Object, childVal: ?Object): ?Object { if (!childVal) return Object.create(parentVal || null) if (!parentVal) return childVal @@ -247,6 +248,19 @@ function normalizeProps (options: Object) { options.props = res } +/** + * Normalize all injections into Object-based format + */ +function normalizeInject (options: Object) { + const inject = options.inject + if (Array.isArray(inject)) { + const normalized = options.inject = {} + for (let i = 0; i < inject.length; i++) { + normalized[inject[i]] = inject[i] + } + } +} + /** * Normalize raw function directives into object format. */ @@ -280,6 +294,7 @@ export function mergeOptions ( } normalizeProps(child) + normalizeInject(child) normalizeDirectives(child) const extendsFrom = child.extends if (extendsFrom) { diff --git a/test/unit/features/options/inject.spec.js b/test/unit/features/options/inject.spec.js index 3181a19fcdc..c366918bd94 100644 --- a/test/unit/features/options/inject.spec.js +++ b/test/unit/features/options/inject.spec.js @@ -220,6 +220,35 @@ describe('Options provide/inject', () => { }) }) + it('should extend properly', () => { + const parent = Vue.extend({ + template: ``, + inject: ['foo'] + }) + + const child = parent.extend({ + template: ``, + inject: ['bar'], + created () { + injected = [this.foo, this.bar] + } + }) + + new Vue({ + template: `
`, + provide: { + foo: 1, + bar: false + }, + components: { + parent, + child + } + }).$mount() + + expect(injected).toEqual([1, false]) + }) + it('should warn when injections has been modified', () => { const key = 'foo' const vm = new Vue({ From 8a2c5147ad9ac9444c0f7c30b5f4a3c4e15c033b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=96=90?= <383109956@qq.com> Date: Fri, 16 Jun 2017 09:37:31 +0800 Subject: [PATCH 0034/1232] Be able to use string type index in array (#5889) --- src/core/observer/index.js | 2 +- .../features/global-api/set-delete.spec.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/core/observer/index.js b/src/core/observer/index.js index a71334f8397..68967e60a48 100644 --- a/src/core/observer/index.js +++ b/src/core/observer/index.js @@ -189,7 +189,7 @@ export function defineReactive ( * already exist. */ export function set (target: Array | Object, key: any, val: any): any { - if (Array.isArray(target) && typeof key === 'number') { + if (Array.isArray(target) && (typeof key === 'number' || /^\d+$/.test(key))) { target.length = Math.max(target.length, key) target.splice(key, 1, val) return val diff --git a/test/unit/features/global-api/set-delete.spec.js b/test/unit/features/global-api/set-delete.spec.js index 7a20666b12a..fd27094522f 100644 --- a/test/unit/features/global-api/set-delete.spec.js +++ b/test/unit/features/global-api/set-delete.spec.js @@ -96,5 +96,23 @@ describe('Global API: set/delete', () => { expect(vm.$el.innerHTML).toBe('') }).then(done) }) + + it('be able to use string type index in array', done => { + const vm = new Vue({ + template: '

{{obj.name}}

', + data: { + lists: [ + { name: 'A' }, + { name: 'B' }, + { name: 'C' } + ] + } + }).$mount() + expect(vm.$el.innerHTML).toBe('

A

B

C

') + Vue.set(vm.lists, '0', { name: 'D' }) + waitForUpdate(() => { + expect(vm.$el.innerHTML).toBe('

D

B

C

') + }).then(done) + }) }) }) From d33c1250ee77dd337eb4979851ade331f177b890 Mon Sep 17 00:00:00 2001 From: gebilaoxiong Date: Fri, 16 Jun 2017 20:40:56 +0800 Subject: [PATCH 0035/1232] fix:when using object syntax in v-bind, special attribute have no effect --- flow/vnode.js | 1 + .../instance/render-helpers/bind-object-props.js | 14 ++++++++++++-- src/core/instance/state.js | 11 +++-------- src/core/vdom/create-element.js | 4 ++++ src/shared/util.js | 5 +++++ 5 files changed, 25 insertions(+), 10 deletions(-) diff --git a/flow/vnode.js b/flow/vnode.js index fba62ee3e6e..8a3622b4287 100644 --- a/flow/vnode.js +++ b/flow/vnode.js @@ -35,6 +35,7 @@ declare interface VNodeData { key?: string | number; slot?: string; ref?: string; + is?: string; pre?: boolean; tag?: string; staticClass?: string; diff --git a/src/core/instance/render-helpers/bind-object-props.js b/src/core/instance/render-helpers/bind-object-props.js index dc42b53ff23..cc50c2d9a46 100644 --- a/src/core/instance/render-helpers/bind-object-props.js +++ b/src/core/instance/render-helpers/bind-object-props.js @@ -1,7 +1,13 @@ /* @flow */ import config from 'core/config' -import { isObject, warn, toObject } from 'core/util/index' + +import { + warn, + isObject, + toObject, + isReservedAttribute +} from 'core/util/index' /** * Runtime helper for merging v-bind="object" into a VNode's data. @@ -24,7 +30,11 @@ export function bindObjectProps ( } let hash for (const key in value) { - if (key === 'class' || key === 'style') { + if ( + key === 'class' || + key === 'style' || + isReservedAttribute(key) + ) { hash = data } else { const type = data.attrs && data.attrs.type diff --git a/src/core/instance/state.js b/src/core/instance/state.js index c099aaec706..f71c0b8e609 100644 --- a/src/core/instance/state.js +++ b/src/core/instance/state.js @@ -20,7 +20,8 @@ import { isReserved, handleError, validateProp, - isPlainObject + isPlainObject, + isReservedAttribute } from '../util/index' const sharedPropertyDefinition = { @@ -54,12 +55,6 @@ export function initState (vm: Component) { if (opts.watch) initWatch(vm, opts.watch) } -const isReservedProp = { - key: 1, - ref: 1, - slot: 1 -} - function checkOptionType (vm: Component, name: string) { const option = vm.$options[name] if (!isPlainObject(option)) { @@ -84,7 +79,7 @@ function initProps (vm: Component, propsOptions: Object) { const value = validateProp(key, propsOptions, propsData, vm) /* istanbul ignore else */ if (process.env.NODE_ENV !== 'production') { - if (isReservedProp[key] || config.isReservedAttr(key)) { + if (isReservedAttribute(key) || config.isReservedAttr(key)) { warn( `"${key}" is a reserved attribute and cannot be used as component prop.`, vm diff --git a/src/core/vdom/create-element.js b/src/core/vdom/create-element.js index a7b650d501c..783cfa7127b 100644 --- a/src/core/vdom/create-element.js +++ b/src/core/vdom/create-element.js @@ -57,6 +57,10 @@ export function _createElement ( ) return createEmptyVNode() } + // object syntax in v-bind + if (isDef(data) && isDef(data.is)) { + tag = data.is + } if (!tag) { // in case of component :is set to falsy value return createEmptyVNode() diff --git a/src/shared/util.js b/src/shared/util.js index 922bcd2b997..8fbb1b812c8 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -90,6 +90,11 @@ export function makeMap ( */ export const isBuiltInTag = makeMap('slot,component', true) +/** + * Check if a attribute is a reserved attribute. + */ +export const isReservedAttribute = makeMap('key,ref,slot,is') + /** * Remove an item from an array */ From f197d0dc451bb11a9facd892737267fbb8e6bdb2 Mon Sep 17 00:00:00 2001 From: gebilaoxiong Date: Fri, 16 Jun 2017 21:07:01 +0800 Subject: [PATCH 0036/1232] test:add bind object test --- test/unit/features/directives/bind.spec.js | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/test/unit/features/directives/bind.spec.js b/test/unit/features/directives/bind.spec.js index 5a066c7a945..3fa905ed25b 100644 --- a/test/unit/features/directives/bind.spec.js +++ b/test/unit/features/directives/bind.spec.js @@ -325,4 +325,60 @@ describe('Directive v-bind', () => { expect(vm.$el.children[0].getAttribute('data-test')).toBe(null) }).then(done) }) + + describe('bind object with special attribute', () => { + function makeInstance (options) { + return new Vue({ + template: `
${options.parentTemp}
`, + data: { + attrs: { + [options.attr]: options.value + } + }, + components: { + comp: { + template: options.childTemp + } + } + }).$mount() + } + + it('key', () => { + const vm = makeInstance({ + attr: 'key', + value: 'test', + parentTemp: '
' + }) + expect(vm._vnode.children[0].key).toBe('test') + }) + + it('ref', () => { + const vm = makeInstance({ + attr: 'ref', + value: 'test', + parentTemp: '
' + }) + expect(vm.$refs.test).toBe(vm.$el.firstChild) + }) + + it('slot', () => { + const vm = makeInstance({ + attr: 'slot', + value: 'test', + parentTemp: '123', + childTemp: '
slot:
' + }) + expect(vm.$el.innerHTML).toBe('
slot:123
') + }) + + it('is', () => { + const vm = makeInstance({ + attr: 'is', + value: 'comp', + parentTemp: '', + childTemp: '
comp
' + }) + expect(vm.$el.innerHTML).toBe('
comp
') + }) + }) }) From 2f628c3114a3d3c859d46827455f3eae0e4edd08 Mon Sep 17 00:00:00 2001 From: gebilaoxiong Date: Fri, 16 Jun 2017 21:08:37 +0800 Subject: [PATCH 0037/1232] test:improve reserved props test --- test/unit/features/options/props.spec.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/unit/features/options/props.spec.js b/test/unit/features/options/props.spec.js index 6dbe3baf53b..b933da375d7 100644 --- a/test/unit/features/options/props.spec.js +++ b/test/unit/features/options/props.spec.js @@ -490,11 +490,12 @@ describe('Options props', () => { }) it('warn reserved props', () => { + const specialAttrs = ['key', 'ref', 'slot', 'is'] new Vue({ - props: { - key: String - } + props: specialAttrs + }) + specialAttrs.forEach(attr => { + expect(`"${attr}" is a reserved attribute`).toHaveBeenWarned() }) - expect(`"key" is a reserved attribute`).toHaveBeenWarned() }) }) From 213f136a6ebf4e18e65f4da7dce6e7293e585b5a Mon Sep 17 00:00:00 2001 From: kingwl <805037171@163.com> Date: Sat, 17 Jun 2017 02:03:36 +0800 Subject: [PATCH 0038/1232] fix slot resolved incorrect with abstract component (fix #5888) (#5895) --- src/core/vdom/create-component.js | 8 +++++- .../features/component/component-slot.spec.js | 25 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/core/vdom/create-component.js b/src/core/vdom/create-component.js index 954adab255b..0553706c640 100644 --- a/src/core/vdom/create-component.js +++ b/src/core/vdom/create-component.js @@ -169,8 +169,14 @@ export function createComponent ( if (isTrue(Ctor.options.abstract)) { // abstract components do not keep anything - // other than props & listeners + // other than props & listeners & slot + + // work around flow + const slot = data.slot data = {} + if (slot) { + data.slot = slot + } } // merge component management hooks onto the placeholder node diff --git a/test/unit/features/component/component-slot.spec.js b/test/unit/features/component/component-slot.spec.js index 0b9c4928d28..6eb3927ef04 100644 --- a/test/unit/features/component/component-slot.spec.js +++ b/test/unit/features/component/component-slot.spec.js @@ -660,4 +660,29 @@ describe('Component slot', () => { expect(vm.$el.querySelector('input').value).toBe('b') }).then(done) }) + + // Github issue #5888 + it('should resolve correctly slot with keep-alive', () => { + const vm = new Vue({ + template: ` +
+ + + + + +
+ `, + components: { + container: { + template: + '
defaultnamed
' + }, + child: { + template: 'foo' + } + } + }).$mount() + expect(vm.$el.innerHTML).toBe('
defaultfoo
') + }) }) From 4f8f4db5dd529a18753150f1c4f4528fd0dab6b0 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 16 Jun 2017 10:21:38 +0800 Subject: [PATCH 0039/1232] simplify source with rest params --- src/core/observer/array.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/core/observer/array.js b/src/core/observer/array.js index 37c7bd114cf..0dea252e3cb 100644 --- a/src/core/observer/array.js +++ b/src/core/observer/array.js @@ -23,14 +23,7 @@ export const arrayMethods = Object.create(arrayProto) .forEach(function (method) { // cache original method const original = arrayProto[method] - def(arrayMethods, method, function mutator () { - // avoid leaking arguments: - // http://jsperf.com/closure-with-arguments - let i = arguments.length - const args = new Array(i) - while (i--) { - args[i] = arguments[i] - } + def(arrayMethods, method, function mutator (...args) { const result = original.apply(this, args) const ob = this.__ob__ let inserted From 4acc8c8be1971112be45e0feb7fb7eddbfc9d247 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sat, 17 Jun 2017 16:32:08 +0800 Subject: [PATCH 0040/1232] fix(v-model): use consistent behavior during IME composition for other text-like input types (fix #5902) --- src/platforms/web/runtime/directives/model.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/platforms/web/runtime/directives/model.js b/src/platforms/web/runtime/directives/model.js index 5831d46716d..56fb71213bb 100644 --- a/src/platforms/web/runtime/directives/model.js +++ b/src/platforms/web/runtime/directives/model.js @@ -3,9 +3,11 @@ * properties to Elements. */ -import { looseEqual, looseIndexOf } from 'shared/util' +import { looseEqual, looseIndexOf, makeMap } from 'shared/util' import { warn, isAndroid, isIE9, isIE, isEdge } from 'core/util/index' +const isTextInputType = makeMap('text,password,search,email,tel,url') + /* istanbul ignore if */ if (isIE9) { // http://www.matts411.com/post/internet-explorer-9-oninput/ @@ -28,7 +30,7 @@ export default { if (isIE || isEdge) { setTimeout(cb, 0) } - } else if (vnode.tag === 'textarea' || el.type === 'text' || el.type === 'password') { + } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) { el._vModifiers = binding.modifiers if (!binding.modifiers.lazy) { // Safari < 10.2 & UIWebView doesn't fire compositionend when From b49c96947415dab8b4af00fb115ec2c0831bf3d3 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sat, 17 Jun 2017 18:16:40 +0800 Subject: [PATCH 0041/1232] build: add git commit message validation --- .github/COMMIT_CONVENTION.md | 83 ++++++ .github/CONTRIBUTING.md | 8 +- .gitignore | 1 + build/git-hooks/commit-msg | 14 + build/install-hooks.sh | 6 + package.json | 11 +- yarn.lock | 563 ++++++++++++++++++++++++++++++++--- 7 files changed, 645 insertions(+), 41 deletions(-) create mode 100644 .github/COMMIT_CONVENTION.md create mode 100755 build/git-hooks/commit-msg create mode 100644 build/install-hooks.sh diff --git a/.github/COMMIT_CONVENTION.md b/.github/COMMIT_CONVENTION.md new file mode 100644 index 00000000000..9aa9fd71022 --- /dev/null +++ b/.github/COMMIT_CONVENTION.md @@ -0,0 +1,83 @@ +## Git Commit Message Convention + +> This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/blob/master/packages/conventional-changelog-angular/convention.md). + +#### Examples + +Appears under "Features" header, pencil subheader: + +``` +feat(pencil): add 'graphiteWidth' option +``` + +Appears under "Bug Fixes" header, graphite subheader, with a link to issue #28: + +``` +fix(graphite): stop graphite breaking when width < 0.1 + +close #28 +``` + +Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation: + +``` +perf(pencil): remove graphiteWidth option + +BREAKING CHANGE: The graphiteWidth option has been removed. The default graphite width of 10mm is always used for performance reason. +``` + +The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header. + +``` +revert: feat(pencil): add 'graphiteWidth' option + +This reverts commit 667ecc1654a317a13331b17617d973392f415f02. +``` + +### Full Message Format + +A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**: + +``` +(): + + + +