From 959300d1b74c70d05624326252345b52dbf1a6aa Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 5 Feb 2017 16:36:09 +0100 Subject: [PATCH 01/15] Add transition explicit duration --- .../web/runtime/components/transition.js | 3 +- .../web/runtime/modules/transition.js | 34 ++- src/platforms/web/runtime/transition-util.js | 12 +- src/shared/util.js | 13 + .../features/transition/transition.spec.js | 230 ++++++++++++++++++ 5 files changed, 285 insertions(+), 7 deletions(-) diff --git a/src/platforms/web/runtime/components/transition.js b/src/platforms/web/runtime/components/transition.js index 5165456ac51..7a562bb56c4 100644 --- a/src/platforms/web/runtime/components/transition.js +++ b/src/platforms/web/runtime/components/transition.js @@ -21,7 +21,8 @@ export const transitionProps = { leaveActiveClass: String, appearClass: String, appearActiveClass: String, - appearToClass: String + appearToClass: String, + duration: [Number, String, Object] } // in case the child is also an abstract component, e.g. diff --git a/src/platforms/web/runtime/modules/transition.js b/src/platforms/web/runtime/modules/transition.js index 7f547ad8f4e..3ccca61239f 100644 --- a/src/platforms/web/runtime/modules/transition.js +++ b/src/platforms/web/runtime/modules/transition.js @@ -9,7 +9,8 @@ import { nextFrame, addTransitionClass, removeTransitionClass, - whenTransitionEnds + whenTransitionEnds, + parseDuration } from '../transition-util' export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { @@ -47,7 +48,8 @@ export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { beforeAppear, appear, afterAppear, - appearCancelled + appearCancelled, + duration } = data // activeInstance will always be the component managing this @@ -70,11 +72,18 @@ export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { const startClass = isAppear ? appearClass : enterClass const activeClass = isAppear ? appearActiveClass : enterActiveClass const toClass = isAppear ? appearToClass : enterToClass + const beforeEnterHook = isAppear ? (beforeAppear || beforeEnter) : beforeEnter const enterHook = isAppear ? (typeof appear === 'function' ? appear : enter) : enter const afterEnterHook = isAppear ? (afterAppear || afterEnter) : afterEnter const enterCancelledHook = isAppear ? (appearCancelled || enterCancelled) : enterCancelled + const explicitDuration = parseDuration(( + duration !== null && + typeof duration === 'object' && + duration.enter + ) || duration) + const expectsCSS = css !== false && !isIE9 const userWantsControl = enterHook && @@ -121,7 +130,11 @@ export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { addTransitionClass(el, toClass) removeTransitionClass(el, startClass) if (!cb.cancelled && !userWantsControl) { - whenTransitionEnds(el, type, cb) + if (typeof explicitDuration !== 'undefined') { + setTimeout(cb, explicitDuration) + } else { + whenTransitionEnds(el, type, cb) + } } }) } @@ -165,7 +178,8 @@ export function leave (vnode: VNodeWithData, rm: Function) { leave, afterLeave, leaveCancelled, - delayLeave + delayLeave, + duration } = data const expectsCSS = css !== false && !isIE9 @@ -175,6 +189,12 @@ export function leave (vnode: VNodeWithData, rm: Function) { // the length of original fn as _length (leave._length || leave.length) > 1 + const explicitDuration = parseDuration(( + duration !== null && + typeof duration === 'object' && + duration.leave + ) || duration) + const cb = el._leaveCb = once(() => { if (el.parentNode && el.parentNode._pending) { el.parentNode._pending[vnode.key] = null @@ -218,7 +238,11 @@ export function leave (vnode: VNodeWithData, rm: Function) { addTransitionClass(el, leaveToClass) removeTransitionClass(el, leaveClass) if (!cb.cancelled && !userWantsControl) { - whenTransitionEnds(el, type, cb) + if (typeof explicitDuration !== 'undefined') { + setTimeout(cb, explicitDuration) + } else { + whenTransitionEnds(el, type, cb) + } } }) } diff --git a/src/platforms/web/runtime/transition-util.js b/src/platforms/web/runtime/transition-util.js index 765f67856df..94202bfd4e1 100644 --- a/src/platforms/web/runtime/transition-util.js +++ b/src/platforms/web/runtime/transition-util.js @@ -1,7 +1,7 @@ /* @flow */ import { inBrowser, isIE9 } from 'core/util/index' -import { remove, extend, cached } from 'shared/util' +import { remove, extend, cached, parseTime } from 'shared/util' import { addClass, removeClass } from './class-util' export function resolveTransition (def?: string | Object): ?Object { @@ -179,3 +179,13 @@ function getTimeout (delays: Array, durations: Array): number { function toMs (s: string): number { return Number(s.slice(0, -1)) * 1000 } + +export function parseDuration (value: Object): Object { + if (typeof value === 'number') { + return value * 1000 + } else if (typeof value === 'string') { + return parseTime(value) + } else { + return undefined + } +} diff --git a/src/shared/util.js b/src/shared/util.js index 69e17a819eb..a4bbca71cfd 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -238,3 +238,16 @@ export function once (fn: Function): Function { } } } + +/** + * Returns the number of ms corresponding to the text expression. + * @param text Time expression with a time unit ('ms' or 's') + */ +export function parseTime (text: String): Number { + const [, durationText, unit] = text.match(/(\d+|\d+\.\d+|\.\d+)\s*(s|ms)/i) + let duration = parseFloat(durationText) + if (unit === 's') { + duration *= 1000 + } + return duration +} diff --git a/test/unit/features/transition/transition.spec.js b/test/unit/features/transition/transition.spec.js index 7d65eeacefa..46f8c62ebbc 100644 --- a/test/unit/features/transition/transition.spec.js +++ b/test/unit/features/transition/transition.spec.js @@ -875,5 +875,235 @@ if (!isIE9) { }).$mount() expect(` can only be used on a single element`).toHaveBeenWarned() }) + + it('explicit transition total duration in ms (string)', done => { + const milliseconds = 100 + + const vm = new Vue({ + template: `
foo
`, + data: { ok: true } + }).$mount(el) + + vm.ok = false + + waitForUpdate(() => { + expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(milliseconds + buffer).then(() => { + expect(vm.$el.children.length).toBe(0) + vm.ok = true + }).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(milliseconds + buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test') + }).then(done) + }) + + it('explicit transition total duration in s (string)', done => { + const milliseconds = 100 + const seconds = '.1' + + const vm = new Vue({ + template: `
foo
`, + data: { ok: true } + }).$mount(el) + + vm.ok = false + + waitForUpdate(() => { + expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(milliseconds + buffer).then(() => { + expect(vm.$el.children.length).toBe(0) + vm.ok = true + }).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(milliseconds + buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test') + }).then(done) + }) + + it('explicit transition total duration in s (number)', done => { + const milliseconds = 100 + const seconds = milliseconds / 1000 + + const vm = new Vue({ + template: `
foo
`, + data: { ok: true } + }).$mount(el) + + vm.ok = false + + waitForUpdate(() => { + expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(milliseconds + buffer).then(() => { + expect(vm.$el.children.length).toBe(0) + vm.ok = true + }).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(milliseconds + buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test') + }).then(done) + }) + + it('explicit transition total duration in s (number, dot)', done => { + const milliseconds = 100 + const seconds = '.1' + + const vm = new Vue({ + template: `
foo
`, + data: { ok: true } + }).$mount(el) + + vm.ok = false + + waitForUpdate(() => { + expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(milliseconds + buffer).then(() => { + expect(vm.$el.children.length).toBe(0) + vm.ok = true + }).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(milliseconds + buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test') + }).then(done) + }) + + it('explicit transition enter duration and auto leave duration', done => { + const milliseconds = 100 + + const vm = new Vue({ + template: `
foo
`, + data: { ok: true } + }).$mount(el) + + vm.ok = false + + waitForUpdate(() => { + expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(duration + buffer).then(() => { + expect(vm.$el.children.length).toBe(0) + vm.ok = true + }).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(milliseconds + buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test') + }).then(done) + }) + + it('explicit transition leave duration and auto enter duration', done => { + const milliseconds = 100 + + const vm = new Vue({ + template: `
foo
`, + data: { ok: true } + }).$mount(el) + + vm.ok = false + + waitForUpdate(() => { + expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(milliseconds + buffer).then(() => { + expect(vm.$el.children.length).toBe(0) + vm.ok = true + }).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(duration + buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test') + }).then(done) + }) + + it('explicit transition enter and leave duration (string)', done => { + const enter = 100 + const leave = 200 + + const vm = new Vue({ + template: `
foo
`, + data: { ok: true } + }).$mount(el) + + vm.ok = false + + waitForUpdate(() => { + expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(leave + buffer).then(() => { + expect(vm.$el.children.length).toBe(0) + vm.ok = true + }).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(enter + buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test') + }).then(done) + }) + + it('explicit transition enter and leave duration (number) + duration change', done => { + const vm = new Vue({ + template: `
foo
`, + data: { + ok: true, + enter: 200, + leave: 100 + } + }).$mount(el) + + vm.ok = false + + waitForUpdate(() => { + expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(vm.leave + buffer).then(() => { + expect(vm.$el.children.length).toBe(0) + vm.ok = true + }).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(vm.enter + buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test') + vm.enter = 100 + vm.leave = 200 + vm.ok = false + }).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(vm.leave + buffer).then(() => { + expect(vm.$el.children.length).toBe(0) + vm.ok = true + }).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') + }).thenWaitFor(nextFrame).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(vm.enter + buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test') + }).then(done) + }) }) } From fe34d4a55f5e99d988da293d891134b887500c2e Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 5 Feb 2017 17:01:19 +0100 Subject: [PATCH 02/15] Fix tests for explicit transition duration --- src/platforms/web/runtime/transition-util.js | 2 +- src/shared/util.js | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/platforms/web/runtime/transition-util.js b/src/platforms/web/runtime/transition-util.js index 94202bfd4e1..c06b1127c0f 100644 --- a/src/platforms/web/runtime/transition-util.js +++ b/src/platforms/web/runtime/transition-util.js @@ -180,7 +180,7 @@ function toMs (s: string): number { return Number(s.slice(0, -1)) * 1000 } -export function parseDuration (value: Object): Object { +export function parseDuration (value: Object): any { if (typeof value === 'number') { return value * 1000 } else if (typeof value === 'string') { diff --git a/src/shared/util.js b/src/shared/util.js index a4bbca71cfd..1497c2ccbcd 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -243,11 +243,16 @@ export function once (fn: Function): Function { * Returns the number of ms corresponding to the text expression. * @param text Time expression with a time unit ('ms' or 's') */ -export function parseTime (text: String): Number { - const [, durationText, unit] = text.match(/(\d+|\d+\.\d+|\.\d+)\s*(s|ms)/i) - let duration = parseFloat(durationText) - if (unit === 's') { - duration *= 1000 +export function parseTime (text: String): number { + const matched = text.match(/(\d+|\d+\.\d+|\.\d+)\s*(s|ms)/i) + if (matched) { + const [, durationText, unit] = matched + let duration = parseFloat(durationText) + if (unit === 's') { + duration *= 1000 + } + return duration + } else { + return 0 } - return duration } From 48e14ac8b53e722395c1f3854edd891d8eb177b5 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 5 Feb 2017 19:21:02 +0100 Subject: [PATCH 03/15] Tweaks & default to milliseconds --- src/platforms/web/runtime/transition-util.js | 2 +- src/shared/util.js | 2 +- test/unit/features/transition/transition.spec.js | 10 ++++------ 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/platforms/web/runtime/transition-util.js b/src/platforms/web/runtime/transition-util.js index c06b1127c0f..642c134d8f6 100644 --- a/src/platforms/web/runtime/transition-util.js +++ b/src/platforms/web/runtime/transition-util.js @@ -182,7 +182,7 @@ function toMs (s: string): number { export function parseDuration (value: Object): any { if (typeof value === 'number') { - return value * 1000 + return value } else if (typeof value === 'string') { return parseTime(value) } else { diff --git a/src/shared/util.js b/src/shared/util.js index 1497c2ccbcd..74d40eb3c99 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -253,6 +253,6 @@ export function parseTime (text: String): number { } return duration } else { - return 0 + return parseFloat(text) } } diff --git a/test/unit/features/transition/transition.spec.js b/test/unit/features/transition/transition.spec.js index 46f8c62ebbc..c02cd91076d 100644 --- a/test/unit/features/transition/transition.spec.js +++ b/test/unit/features/transition/transition.spec.js @@ -929,12 +929,11 @@ if (!isIE9) { }).then(done) }) - it('explicit transition total duration in s (number)', done => { + it('explicit transition total duration in ms (number)', done => { const milliseconds = 100 - const seconds = milliseconds / 1000 const vm = new Vue({ - template: `
foo
`, + template: `
foo
`, data: { ok: true } }).$mount(el) @@ -956,12 +955,11 @@ if (!isIE9) { }).then(done) }) - it('explicit transition total duration in s (number, dot)', done => { + it('explicit transition total duration in ms (string without unit)', done => { const milliseconds = 100 - const seconds = '.1' const vm = new Vue({ - template: `
foo
`, + template: `
foo
`, data: { ok: true } }).$mount(el) From 184530ca3c8badd0cd27414fdd81245091200d6c Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 5 Feb 2017 19:30:33 +0100 Subject: [PATCH 04/15] Better tests --- .../features/transition/transition.spec.js | 74 ++++++++++++++----- 1 file changed, 55 insertions(+), 19 deletions(-) diff --git a/test/unit/features/transition/transition.spec.js b/test/unit/features/transition/transition.spec.js index c02cd91076d..19008950b85 100644 --- a/test/unit/features/transition/transition.spec.js +++ b/test/unit/features/transition/transition.spec.js @@ -890,14 +890,18 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(milliseconds + buffer).then(() => { + }).thenWaitFor(milliseconds - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) vm.ok = true }).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(milliseconds + buffer).then(() => { + }).thenWaitFor(milliseconds - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') }).then(done) }) @@ -917,14 +921,18 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(milliseconds + buffer).then(() => { + }).thenWaitFor(milliseconds - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) vm.ok = true }).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(milliseconds + buffer).then(() => { + }).thenWaitFor(milliseconds - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') }).then(done) }) @@ -943,14 +951,18 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(milliseconds + buffer).then(() => { + }).thenWaitFor(milliseconds - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) vm.ok = true }).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(milliseconds + buffer).then(() => { + }).thenWaitFor(milliseconds - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') }).then(done) }) @@ -969,14 +981,18 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(milliseconds + buffer).then(() => { + }).thenWaitFor(milliseconds - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) vm.ok = true }).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(milliseconds + buffer).then(() => { + }).thenWaitFor(milliseconds - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') }).then(done) }) @@ -995,14 +1011,18 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(duration + buffer).then(() => { + }).thenWaitFor(duration - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) vm.ok = true }).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(milliseconds + buffer).then(() => { + }).thenWaitFor(milliseconds - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') }).then(done) }) @@ -1021,14 +1041,18 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(milliseconds + buffer).then(() => { + }).thenWaitFor(milliseconds - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) vm.ok = true }).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(duration + buffer).then(() => { + }).thenWaitFor(duration - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') }).then(done) }) @@ -1048,21 +1072,25 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(leave + buffer).then(() => { + }).thenWaitFor(leave - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) vm.ok = true }).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(enter + buffer).then(() => { + }).thenWaitFor(enter - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') }).then(done) }) it('explicit transition enter and leave duration (number) + duration change', done => { const vm = new Vue({ - template: `
foo
`, + template: `
foo
`, data: { ok: true, enter: 200, @@ -1076,14 +1104,18 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(vm.leave + buffer).then(() => { + }).thenWaitFor(vm.leave - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) vm.ok = true }).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(vm.enter + buffer).then(() => { + }).thenWaitFor(vm.enter - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') vm.enter = 100 vm.leave = 200 @@ -1092,14 +1124,18 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(vm.leave + buffer).then(() => { + }).thenWaitFor(vm.leave - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) vm.ok = true }).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(vm.enter + buffer).then(() => { + }).thenWaitFor(vm.enter - buffer).then(() => { + expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') + }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') }).then(done) }) From a239cf27dc853eb3fa4a596a726545683215587a Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 5 Feb 2017 20:06:41 +0100 Subject: [PATCH 05/15] Better test for change value case --- .../features/transition/transition.spec.js | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/test/unit/features/transition/transition.spec.js b/test/unit/features/transition/transition.spec.js index 19008950b85..6b905a850d2 100644 --- a/test/unit/features/transition/transition.spec.js +++ b/test/unit/features/transition/transition.spec.js @@ -1089,12 +1089,17 @@ if (!isIE9) { }) it('explicit transition enter and leave duration (number) + duration change', done => { + const enter1 = 200 + const enter2 = 100 + const leave1 = 50 + const leave2 = 300 + const vm = new Vue({ template: `
foo
`, data: { ok: true, - enter: 200, - leave: 100 + enter: enter1, + leave: leave1 } }).$mount(el) @@ -1104,7 +1109,7 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(vm.leave - buffer).then(() => { + }).thenWaitFor(vm.leave1 - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) @@ -1113,18 +1118,19 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(vm.enter - buffer).then(() => { + }).thenWaitFor(vm.enter1 - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') - vm.enter = 100 - vm.leave = 200 + vm.enter = enter2 + vm.leave = leave2 + }).then(() => { vm.ok = false }).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(vm.leave - buffer).then(() => { + }).thenWaitFor(vm.leave2 - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) @@ -1133,7 +1139,7 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(vm.enter - buffer).then(() => { + }).thenWaitFor(vm.enter2 - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') From 94d96336da0576ef685a76910b8ed45025835693 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 5 Feb 2017 21:51:08 +0100 Subject: [PATCH 06/15] Fix transition duration tests --- test/unit/features/transition/transition.spec.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/unit/features/transition/transition.spec.js b/test/unit/features/transition/transition.spec.js index 6b905a850d2..fb48c147893 100644 --- a/test/unit/features/transition/transition.spec.js +++ b/test/unit/features/transition/transition.spec.js @@ -1109,7 +1109,7 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(vm.leave1 - buffer).then(() => { + }).thenWaitFor(leave1 - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) @@ -1118,7 +1118,7 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(vm.enter1 - buffer).then(() => { + }).thenWaitFor(enter1 - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') @@ -1130,7 +1130,7 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(vm.leave2 - buffer).then(() => { + }).thenWaitFor(leave2 - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) @@ -1139,7 +1139,7 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(vm.enter2 - buffer).then(() => { + }).thenWaitFor(enter2 - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') From fd0f0ae94675ef39e0231f63da1d7de7360403fa Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 5 Feb 2017 22:13:06 +0100 Subject: [PATCH 07/15] Better flow typing --- src/shared/util.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/shared/util.js b/src/shared/util.js index 74d40eb3c99..89401c9a485 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -243,11 +243,12 @@ export function once (fn: Function): Function { * Returns the number of ms corresponding to the text expression. * @param text Time expression with a time unit ('ms' or 's') */ -export function parseTime (text: String): number { - const matched = text.match(/(\d+|\d+\.\d+|\.\d+)\s*(s|ms)/i) +export function parseTime (text: string): any { + const matched: ?Array = text.match(/(\d+|\d+\.\d+|\.\d+)\s*(s|ms)/i) if (matched) { - const [, durationText, unit] = matched - let duration = parseFloat(durationText) + /* eslint no-unused-vars:0 */ + const [_, durationText: string, unit: string] = matched + let duration: number = parseFloat(durationText) if (unit === 's') { duration *= 1000 } From 8332b6d8860e42c233b88eb5fe5ada2e5d01708a Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 5 Feb 2017 23:40:29 +0100 Subject: [PATCH 08/15] Fix transition test --- yarn.lock | 379 +++++++++++++++++++++++++++--------------------------- 1 file changed, 189 insertions(+), 190 deletions(-) diff --git a/yarn.lock b/yarn.lock index f9fed7fdb24..7bb8a5841c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,7 +1,5 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 - - abbrev@1, abbrev@1.0.x: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" @@ -198,14 +196,14 @@ asn1.js@^4.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -asn1@0.1.11: - version "0.1.11" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7" - asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" +asn1@0.1.11: + version "0.1.11" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7" + assert-plus@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" @@ -244,24 +242,10 @@ 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.4.0, async@1.x: 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" - dependencies: - lodash "^4.8.0" - async@^2.0.0, async@^2.1.2: version "2.1.4" resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" @@ -276,6 +260,20 @@ async@~0.9.0: version "0.9.2" resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" +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@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.0.1.tgz#b709cc0280a9c36f09f4536be823c838a9049e25" + dependencies: + lodash "^4.8.0" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -300,7 +298,7 @@ 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.22.0, babel-core@^6.9.0: +babel-core@^6.22.0, babel-core@^6.9.0, babel-core@6: version "6.22.1" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.22.1.tgz#9c5fd658ba1772d28d721f6d25d968fc7ae21648" dependencies: @@ -1043,7 +1041,7 @@ chai-nightwatch@~0.1.x: assertion-error "1.0.0" deep-eql "0.1.3" -chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3, chalk@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -1132,14 +1130,14 @@ codecov.io@^0.1.6: request "2.42.0" urlgrey "0.4.0" -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - colors@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + combine-lists@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" @@ -1158,6 +1156,12 @@ combined-stream@~0.0.4: dependencies: delayed-stream "0.0.5" +commander@^2.5.0, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + commander@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" @@ -1166,12 +1170,6 @@ commander@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" -commander@^2.5.0, commander@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -1219,14 +1217,6 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" - concat-stream@^1.4.6: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" @@ -1235,6 +1225,14 @@ concat-stream@^1.4.6: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-stream@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + connect@^3.3.5: version "3.5.0" resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" @@ -1282,6 +1280,10 @@ corser@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" +crc@^3.4.4: + version "3.4.4" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" + crc32-stream@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-1.0.1.tgz#ce2c5dc3bd8ffb3830f9cb47f540222c63c90fab" @@ -1289,10 +1291,6 @@ crc32-stream@^1.0.0: crc "^3.4.4" readable-stream "^2.0.0" -crc@^3.4.4: - version "3.4.4" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" - create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" @@ -1396,22 +1394,22 @@ de-indent@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" -debug@0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - -debug@2, debug@2.6.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0: +debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" dependencies: ms "0.7.2" -debug@2.2.0, debug@~2.2.0: +debug@~2.2.0, debug@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: ms "0.7.1" +debug@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + debug@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" @@ -1490,14 +1488,14 @@ del@^2.0.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" -delayed-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" +delayed-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f" + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -1569,7 +1567,7 @@ domain-browser@^1.1.1: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" -domelementtype@1, domelementtype@^1.3.0: +domelementtype@^1.3.0, domelementtype@1: version "1.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" @@ -1761,7 +1759,7 @@ es6-set@~0.1.3: es6-symbol "3" event-emitter "~0.3.4" -es6-symbol@3, es6-symbol@~3.1, es6-symbol@~3.1.0: +es6-symbol@~3.1, es6-symbol@~3.1.0, es6-symbol@3: version "3.1.0" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" dependencies: @@ -1781,14 +1779,14 @@ escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" -escape-string-regexp@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" - escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +escape-string-regexp@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" + escodegen@1.8.x, escodegen@1.x.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" @@ -1903,11 +1901,11 @@ 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.6.0, esprima@^2.7.1: +esprima@^2.6.0, esprima@^2.7.1, esprima@2.7.x: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@3.x.x, esprima@~3.1.0: +esprima@~3.1.0, esprima@3.x.x: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -1994,7 +1992,7 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -extend@3, extend@^3.0.0, extend@~3.0.0: +extend@^3.0.0, extend@~3.0.0, extend@3: version "3.0.0" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" @@ -2265,14 +2263,6 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.3.tgz#e313eeb249c7affaa5c475286b0e115b59839467" - dependencies: - graceful-fs "~2.0.0" - inherits "2" - minimatch "~0.2.11" - glob@^5.0.14, glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -2294,6 +2284,14 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" +glob@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.3.tgz#e313eeb249c7affaa5c475286b0e115b59839467" + dependencies: + graceful-fs "~2.0.0" + inherits "2" + minimatch "~0.2.11" + globals@^9.0.0, globals@^9.14.0: version "9.14.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" @@ -2381,15 +2379,6 @@ hasha@~2.2.0: is-stream "^1.0.1" pinkie-promise "^2.0.0" -hawk@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz#87cd491f9b46e4e2aeaca335416766885d2d1ed9" - dependencies: - boom "0.4.x" - cryptiles "0.2.x" - hoek "0.9.x" - sntp "0.2.x" - hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" @@ -2399,6 +2388,15 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +hawk@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz#87cd491f9b46e4e2aeaca335416766885d2d1ed9" + dependencies: + boom "0.4.x" + cryptiles "0.2.x" + hoek "0.9.x" + sntp "0.2.x" + he@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/he/-/he-0.5.0.tgz#2c05ffaef90b68e860f3fd2b54ef580989277ee2" @@ -2493,7 +2491,7 @@ https-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" -https-proxy-agent@1, https-proxy-agent@^1.0.0, https-proxy-agent@~1.0.0: +https-proxy-agent@^1.0.0, https-proxy-agent@~1.0.0, https-proxy-agent@1: version "1.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" dependencies: @@ -2501,7 +2499,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.5, iconv-lite@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" @@ -2534,7 +2532,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: +inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -2723,14 +2721,14 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" @@ -2813,7 +2811,7 @@ js-tokens@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.0.tgz#a2f2a969caae142fb3cd56228358c89366957bd1" -js-yaml@3.x, js-yaml@^3.5.1: +js-yaml@^3.5.1, js-yaml@3.x: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" dependencies: @@ -3144,18 +3142,18 @@ lodash.pickby@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" -lodash@3.10.1, lodash@^3.8.0: +lodash@^3.8.0, lodash@3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -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: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@4.16.2: + version "4.16.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.2.tgz#3e626db827048a699281a8a125226326cfc0e652" + log4js@^0.6.31: version "0.6.38" resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" @@ -3180,10 +3178,6 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lru-cache@2, 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: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" @@ -3195,6 +3189,10 @@ lru-cache@~2.6.5: version "2.6.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.6.5.tgz#e56d6354148ede8d7707b58d143220fd08df0fd5" +lru-cache@2, lru-cache@2.2.x: + version "2.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + magic-string@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.14.0.tgz#57224aef1701caeed273b17a39a956e72b172462" @@ -3294,7 +3292,7 @@ minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: +minimatch@^3.0.0, minimatch@^3.0.2, "minimatch@2 || 3": version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" dependencies: @@ -3307,14 +3305,20 @@ minimatch@~0.2.11, minimatch@~0.2.14: lru-cache "2" sigmund "~1.0.0" -minimist@0.0.8, minimist@~0.0.1: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +minimist@~0.0.1, minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + mkdirp@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" @@ -3325,12 +3329,6 @@ mkdirp@0.5.0: dependencies: minimist "0.0.8" -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - mkpath@>=0.1.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-1.0.0.tgz#ebb3a977e7af1c683ae6fda12b545a6ba6c5853d" @@ -3443,7 +3441,7 @@ node-uuid@~1.4.0, node-uuid@~1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" -nopt@3.x, nopt@~3.0.6: +nopt@~3.0.6, nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: @@ -3487,14 +3485,14 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + object-component@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" @@ -3520,7 +3518,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@1.x, once@^1.3.0: +once@^1.3.0, once@1.x: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -3540,7 +3538,7 @@ opener@~1.4.0: version "1.4.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.2.tgz#b32582080042af8680c389a499175b4c54fff523" -optimist@0.6.x, optimist@>=0.3.5, optimist@^0.6.1: +optimist@^0.6.1, optimist@>=0.3.5, optimist@0.6.x: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" dependencies: @@ -3791,15 +3789,15 @@ public-encrypt@^4.0.0: parse-asn1 "^5.0.0" randombytes "^2.0.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -q@1.4.1, q@^1.1.2, q@^1.4.1: +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +q@^1.1.2, q@^1.4.1, q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" @@ -3807,10 +3805,6 @@ qjobs@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" -qs@6.2.1, qs@~6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" - qs@~1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/qs/-/qs-1.2.2.tgz#19b57ff24dc2a99ce1f8bdf6afcda59f8ef61f88" @@ -3819,6 +3813,10 @@ qs@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" +qs@~6.2.0, qs@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" + qs@~6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" @@ -3878,16 +3876,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -readable-stream@1.1.x: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - 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.0, readable-stream@^2.2.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.0, readable-stream@^2.2.2, readable-stream@2: version "2.2.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" dependencies: @@ -3931,6 +3920,15 @@ readable-stream@~2.1.4: string_decoder "~0.10.x" util-deprecate "~1.0.1" +readable-stream@1.1.x: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -3948,15 +3946,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.20" resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.20.tgz#2cb9bec269c03b36d0598118a936cd0a293ca3f3" @@ -3966,6 +3955,15 @@ recast@^0.11.17: private "~0.1.5" source-map "~0.5.0" +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" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -4060,6 +4058,31 @@ request-progress@~2.0.1: dependencies: throttleit "^1.0.0" +request@^2.79.0, request@~2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + request@2.42.0: version "2.42.0" resolved "https://registry.yarnpkg.com/request/-/request-2.42.0.tgz#572bd0148938564040ac7ab148b96423a063304a" @@ -4107,31 +4130,6 @@ request@2.75.0: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" -request@^2.79.0, request@~2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4159,7 +4157,7 @@ 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.6: +resolve@^1.1.6, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -4186,7 +4184,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4: +rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4, rimraf@2: version "2.5.4" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" dependencies: @@ -4290,7 +4288,7 @@ 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, semver@~5.3.0: +semver@^5.3.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5": version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -4557,6 +4555,10 @@ stream-to@~0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz#84306098d85fdb990b9fa300b1b3ccf55e8ef01d" +string_decoder@^0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + 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" @@ -4572,10 +4574,6 @@ string-width@^2.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^3.0.0" -string_decoder@^0.10.25, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - stringmap@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" @@ -4618,10 +4616,6 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -supports-color@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" - supports-color@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" @@ -4636,6 +4630,10 @@ supports-color@^3.1.0: dependencies: has-flag "^1.0.0" +supports-color@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" + table@^3.7.8: version "3.8.3" resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" @@ -4712,7 +4710,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.3.6, through@~2.3.4, through@~2.3.8, through@2: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -4833,7 +4831,7 @@ union@~0.4.3: dependencies: qs "~2.3.3" -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -4870,7 +4868,7 @@ util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -util@0.10.3, util@^0.10.3: +util@^0.10.3, util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" dependencies: @@ -5013,17 +5011,13 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.1" -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" +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" @@ -5033,6 +5027,10 @@ wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -5147,3 +5145,4 @@ zip-stream@^1.1.0: compress-commons "^1.1.0" lodash "^4.8.0" readable-stream "^2.0.0" + From c88a5735d538349f6f77362e6018f13b0c6c9dd7 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 5 Feb 2017 23:40:29 +0100 Subject: [PATCH 09/15] Revert "Fix transition test" This reverts commit db75b3801ed11182119c78ebae87f40a62803714. --- yarn.lock | 379 +++++++++++++++++++++++++++--------------------------- 1 file changed, 190 insertions(+), 189 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7bb8a5841c9..f9fed7fdb24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,5 +1,7 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 + + abbrev@1, abbrev@1.0.x: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" @@ -196,14 +198,14 @@ asn1.js@^4.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - asn1@0.1.11: version "0.1.11" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7" +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + assert-plus@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" @@ -242,10 +244,24 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" -async@^1.4.0, async@1.x: +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: 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" + dependencies: + lodash "^4.8.0" + async@^2.0.0, async@^2.1.2: version "2.1.4" resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" @@ -260,20 +276,6 @@ async@~0.9.0: version "0.9.2" resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" -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@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.0.1.tgz#b709cc0280a9c36f09f4536be823c838a9049e25" - dependencies: - lodash "^4.8.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -298,7 +300,7 @@ babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@^6.22.0, babel-core@^6.9.0, babel-core@6: +babel-core@6, babel-core@^6.22.0, babel-core@^6.9.0: version "6.22.1" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.22.1.tgz#9c5fd658ba1772d28d721f6d25d968fc7ae21648" dependencies: @@ -1041,7 +1043,7 @@ chai-nightwatch@~0.1.x: assertion-error "1.0.0" deep-eql "0.1.3" -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3, chalk@1.1.3: +chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -1130,14 +1132,14 @@ codecov.io@^0.1.6: request "2.42.0" urlgrey "0.4.0" -colors@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" +colors@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + combine-lists@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" @@ -1156,12 +1158,6 @@ combined-stream@~0.0.4: dependencies: delayed-stream "0.0.5" -commander@^2.5.0, commander@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - commander@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" @@ -1170,6 +1166,12 @@ commander@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" +commander@^2.5.0, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -1217,14 +1219,6 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.4.6: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - concat-stream@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" @@ -1233,6 +1227,14 @@ concat-stream@1.5.0: readable-stream "~2.0.0" typedarray "~0.0.5" +concat-stream@^1.4.6: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + connect@^3.3.5: version "3.5.0" resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" @@ -1280,10 +1282,6 @@ corser@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" -crc@^3.4.4: - version "3.4.4" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" - crc32-stream@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-1.0.1.tgz#ce2c5dc3bd8ffb3830f9cb47f540222c63c90fab" @@ -1291,6 +1289,10 @@ crc32-stream@^1.0.0: crc "^3.4.4" readable-stream "^2.0.0" +crc@^3.4.4: + version "3.4.4" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" + create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" @@ -1394,22 +1396,22 @@ de-indent@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" -debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.0: +debug@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + +debug@2, debug@2.6.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0: version "2.6.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" dependencies: ms "0.7.2" -debug@~2.2.0, debug@2.2.0: +debug@2.2.0, debug@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: ms "0.7.1" -debug@0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - debug@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" @@ -1488,14 +1490,14 @@ del@^2.0.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - delayed-stream@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -1567,7 +1569,7 @@ domain-browser@^1.1.1: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" -domelementtype@^1.3.0, domelementtype@1: +domelementtype@1, domelementtype@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" @@ -1759,7 +1761,7 @@ es6-set@~0.1.3: es6-symbol "3" event-emitter "~0.3.4" -es6-symbol@~3.1, es6-symbol@~3.1.0, es6-symbol@3: +es6-symbol@3, es6-symbol@~3.1, es6-symbol@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" dependencies: @@ -1779,14 +1781,14 @@ escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - escape-string-regexp@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + escodegen@1.8.x, escodegen@1.x.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" @@ -1901,11 +1903,11 @@ 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.6.0, esprima@^2.7.1, esprima@2.7.x: +esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@~3.1.0, esprima@3.x.x: +esprima@3.x.x, esprima@~3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -1992,7 +1994,7 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -extend@^3.0.0, extend@~3.0.0, extend@3: +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" @@ -2263,6 +2265,14 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.3.tgz#e313eeb249c7affaa5c475286b0e115b59839467" + dependencies: + graceful-fs "~2.0.0" + inherits "2" + minimatch "~0.2.11" + glob@^5.0.14, glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -2284,14 +2294,6 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.3.tgz#e313eeb249c7affaa5c475286b0e115b59839467" - dependencies: - graceful-fs "~2.0.0" - inherits "2" - minimatch "~0.2.11" - globals@^9.0.0, globals@^9.14.0: version "9.14.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" @@ -2379,15 +2381,6 @@ hasha@~2.2.0: is-stream "^1.0.1" pinkie-promise "^2.0.0" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - hawk@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz#87cd491f9b46e4e2aeaca335416766885d2d1ed9" @@ -2397,6 +2390,15 @@ hawk@1.1.1: hoek "0.9.x" sntp "0.2.x" +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + 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" @@ -2491,7 +2493,7 @@ https-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" -https-proxy-agent@^1.0.0, https-proxy-agent@~1.0.0, https-proxy-agent@1: +https-proxy-agent@1, https-proxy-agent@^1.0.0, https-proxy-agent@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" dependencies: @@ -2499,7 +2501,7 @@ https-proxy-agent@^1.0.0, https-proxy-agent@~1.0.0, https-proxy-agent@1: debug "2" extend "3" -iconv-lite@^0.4.5, iconv-lite@0.4.15: +iconv-lite@0.4.15, iconv-lite@^0.4.5: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" @@ -2532,7 +2534,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -2721,14 +2723,14 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" -isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" @@ -2811,7 +2813,7 @@ js-tokens@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.0.tgz#a2f2a969caae142fb3cd56228358c89366957bd1" -js-yaml@^3.5.1, js-yaml@3.x: +js-yaml@3.x, js-yaml@^3.5.1: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" dependencies: @@ -3142,18 +3144,18 @@ lodash.pickby@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" -lodash@^3.8.0, lodash@3.10.1: +lodash@3.10.1, lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -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: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - 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: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + log4js@^0.6.31: version "0.6.38" resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" @@ -3178,6 +3180,10 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lru-cache@2, 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: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" @@ -3189,10 +3195,6 @@ lru-cache@~2.6.5: version "2.6.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.6.5.tgz#e56d6354148ede8d7707b58d143220fd08df0fd5" -lru-cache@2, lru-cache@2.2.x: - version "2.2.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" - magic-string@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.14.0.tgz#57224aef1701caeed273b17a39a956e72b172462" @@ -3292,7 +3294,7 @@ minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" -minimatch@^3.0.0, minimatch@^3.0.2, "minimatch@2 || 3": +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" dependencies: @@ -3305,19 +3307,13 @@ minimatch@~0.2.11, minimatch@~0.2.14: lru-cache "2" sigmund "~1.0.0" -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -minimist@~0.0.1, minimist@0.0.8: +minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" mkdirp@0.3.0: version "0.3.0" @@ -3329,6 +3325,12 @@ mkdirp@0.5.0: dependencies: minimist "0.0.8" +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + mkpath@>=0.1.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-1.0.0.tgz#ebb3a977e7af1c683ae6fda12b545a6ba6c5853d" @@ -3441,7 +3443,7 @@ node-uuid@~1.4.0, node-uuid@~1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" -nopt@~3.0.6, nopt@3.x: +nopt@3.x, nopt@~3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: @@ -3485,14 +3487,14 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - object-assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + object-component@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" @@ -3518,7 +3520,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@1.x: +once@1.x, once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -3538,7 +3540,7 @@ opener@~1.4.0: version "1.4.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.2.tgz#b32582080042af8680c389a499175b4c54fff523" -optimist@^0.6.1, optimist@>=0.3.5, optimist@0.6.x: +optimist@0.6.x, optimist@>=0.3.5, optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" dependencies: @@ -3789,15 +3791,15 @@ public-encrypt@^4.0.0: parse-asn1 "^5.0.0" randombytes "^2.0.1" -punycode@^1.2.4, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -q@^1.1.2, q@^1.4.1, q@1.4.1: +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@1.4.1, q@^1.1.2, q@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" @@ -3805,6 +3807,10 @@ qjobs@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" +qs@6.2.1, qs@~6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" + qs@~1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/qs/-/qs-1.2.2.tgz#19b57ff24dc2a99ce1f8bdf6afcda59f8ef61f88" @@ -3813,10 +3819,6 @@ qs@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" -qs@~6.2.0, qs@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" - qs@~6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" @@ -3876,7 +3878,16 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -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.0, readable-stream@^2.2.2, readable-stream@2: +readable-stream@1.1.x: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + 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.0, readable-stream@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" dependencies: @@ -3920,15 +3931,6 @@ readable-stream@~2.1.4: string_decoder "~0.10.x" util-deprecate "~1.0.1" -readable-stream@1.1.x: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -3946,15 +3948,6 @@ readline2@^1.0.1: is-fullwidth-code-point "^1.0.0" mute-stream "0.0.5" -recast@^0.11.17: - version "0.11.20" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.20.tgz#2cb9bec269c03b36d0598118a936cd0a293ca3f3" - dependencies: - ast-types "0.9.4" - esprima "~3.1.0" - private "~0.1.5" - source-map "~0.5.0" - recast@0.10.33: version "0.10.33" resolved "https://registry.yarnpkg.com/recast/-/recast-0.10.33.tgz#942808f7aa016f1fa7142c461d7e5704aaa8d697" @@ -3964,6 +3957,15 @@ recast@0.10.33: private "~0.1.5" source-map "~0.5.0" +recast@^0.11.17: + version "0.11.20" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.20.tgz#2cb9bec269c03b36d0598118a936cd0a293ca3f3" + dependencies: + ast-types "0.9.4" + 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" @@ -4058,31 +4060,6 @@ request-progress@~2.0.1: dependencies: throttleit "^1.0.0" -request@^2.79.0, request@~2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - request@2.42.0: version "2.42.0" resolved "https://registry.yarnpkg.com/request/-/request-2.42.0.tgz#572bd0148938564040ac7ab148b96423a063304a" @@ -4130,6 +4107,31 @@ request@2.75.0: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" +request@^2.79.0, request@~2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4157,7 +4159,7 @@ 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.6, resolve@1.1.x: +resolve@1.1.x, resolve@^1.1.6: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -4184,7 +4186,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4, rimraf@2: +rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4: version "2.5.4" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" dependencies: @@ -4288,7 +4290,7 @@ selenium-server@^2.53.1: version "2.53.1" resolved "https://registry.yarnpkg.com/selenium-server/-/selenium-server-2.53.1.tgz#d681528812f3c2e0531a6b7e613e23bb02cce8a6" -semver@^5.3.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5": +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -4555,10 +4557,6 @@ stream-to@~0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz#84306098d85fdb990b9fa300b1b3ccf55e8ef01d" -string_decoder@^0.10.25, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - 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" @@ -4574,6 +4572,10 @@ string-width@^2.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^3.0.0" +string_decoder@^0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + stringmap@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" @@ -4616,6 +4618,10 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +supports-color@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" + supports-color@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" @@ -4630,10 +4636,6 @@ supports-color@^3.1.0: dependencies: has-flag "^1.0.0" -supports-color@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" - table@^3.7.8: version "3.8.3" resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" @@ -4710,7 +4712,7 @@ throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" -through@^2.3.6, through@~2.3.4, through@~2.3.8, through@2: +through@2, through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -4831,7 +4833,7 @@ union@~0.4.3: dependencies: qs "~2.3.3" -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -4868,7 +4870,7 @@ util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -util@^0.10.3, util@0.10.3: +util@0.10.3, util@^0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" dependencies: @@ -5011,13 +5013,17 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.1" +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" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" @@ -5027,10 +5033,6 @@ wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -5145,4 +5147,3 @@ zip-stream@^1.1.0: compress-commons "^1.1.0" lodash "^4.8.0" readable-stream "^2.0.0" - From 6e83994444dac900f70a86ef5d204f8b7beed769 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 5 Feb 2017 23:47:38 +0100 Subject: [PATCH 10/15] Fix transition test Revert "Fix transition test" This reverts commit db75b3801ed11182119c78ebae87f40a62803714. Fix transition test --- test/unit/features/transition/transition.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/features/transition/transition.spec.js b/test/unit/features/transition/transition.spec.js index fb48c147893..b3e9644fe4f 100644 --- a/test/unit/features/transition/transition.spec.js +++ b/test/unit/features/transition/transition.spec.js @@ -1095,7 +1095,7 @@ if (!isIE9) { const leave2 = 300 const vm = new Vue({ - template: `
foo
`, + template: `
foo
`, data: { ok: true, enter: enter1, From 558d15badbd1d43ccb1d4952d72a71390c418248 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Mon, 6 Feb 2017 21:53:43 +0100 Subject: [PATCH 11/15] Better flow types --- src/platforms/web/runtime/transition-util.js | 2 +- src/shared/util.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platforms/web/runtime/transition-util.js b/src/platforms/web/runtime/transition-util.js index 642c134d8f6..cf19cde350a 100644 --- a/src/platforms/web/runtime/transition-util.js +++ b/src/platforms/web/runtime/transition-util.js @@ -180,7 +180,7 @@ function toMs (s: string): number { return Number(s.slice(0, -1)) * 1000 } -export function parseDuration (value: Object): any { +export function parseDuration (value: Object): number | typeof NaN | typeof undefined { if (typeof value === 'number') { return value } else if (typeof value === 'string') { diff --git a/src/shared/util.js b/src/shared/util.js index 89401c9a485..7c3223ab0ea 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -243,7 +243,7 @@ export function once (fn: Function): Function { * Returns the number of ms corresponding to the text expression. * @param text Time expression with a time unit ('ms' or 's') */ -export function parseTime (text: string): any { +export function parseTime (text: string): number | typeof NaN { const matched: ?Array = text.match(/(\d+|\d+\.\d+|\.\d+)\s*(s|ms)/i) if (matched) { /* eslint no-unused-vars:0 */ From ec1513f9deacb11d23251f4426b1aae0350f205f Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Mon, 6 Feb 2017 21:54:05 +0100 Subject: [PATCH 12/15] Warn message --- .../web/runtime/modules/transition.js | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/platforms/web/runtime/modules/transition.js b/src/platforms/web/runtime/modules/transition.js index 3ccca61239f..76e2e8158e8 100644 --- a/src/platforms/web/runtime/modules/transition.js +++ b/src/platforms/web/runtime/modules/transition.js @@ -1,6 +1,6 @@ /* @flow */ -import { inBrowser, isIE9 } from 'core/util/index' +import { inBrowser, isIE9, warn } from 'core/util/index' import { once } from 'shared/util' import { mergeVNodeHook } from 'core/vdom/helpers/index' import { activeInstance } from 'core/instance/lifecycle' @@ -13,6 +13,16 @@ import { parseDuration } from '../transition-util' +function explicitDurationNaNWarn (name, vnode) { + warn( + ` explicit ${name} duration is NaN and ` + + 'may yield unexpected results. ' + + 'The duration expression might be incorrect. ' + + `Valid examples: '500ms', '.5s' or 500`, + vnode.context + ) +} + export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { const el: any = vnode.elm @@ -78,12 +88,16 @@ export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { const afterEnterHook = isAppear ? (afterAppear || afterEnter) : afterEnter const enterCancelledHook = isAppear ? (appearCancelled || enterCancelled) : enterCancelled - const explicitDuration = parseDuration(( + const explicitEnterDuration = parseDuration(( duration !== null && typeof duration === 'object' && duration.enter ) || duration) + if (process.env.NODE_ENV !== 'production' && isNaN(explicitEnterDuration)) { + explicitDurationNaNWarn('enter', vnode) + } + const expectsCSS = css !== false && !isIE9 const userWantsControl = enterHook && @@ -130,8 +144,8 @@ export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { addTransitionClass(el, toClass) removeTransitionClass(el, startClass) if (!cb.cancelled && !userWantsControl) { - if (typeof explicitDuration !== 'undefined') { - setTimeout(cb, explicitDuration) + if (typeof explicitEnterDuration === 'number') { + setTimeout(cb, explicitEnterDuration) } else { whenTransitionEnds(el, type, cb) } @@ -189,12 +203,16 @@ export function leave (vnode: VNodeWithData, rm: Function) { // the length of original fn as _length (leave._length || leave.length) > 1 - const explicitDuration = parseDuration(( + const explicitLeaveDuration = parseDuration(( duration !== null && typeof duration === 'object' && duration.leave ) || duration) + if (process.env.NODE_ENV !== 'production' && isNaN(explicitLeaveDuration)) { + explicitDurationNaNWarn('leave', vnode) + } + const cb = el._leaveCb = once(() => { if (el.parentNode && el.parentNode._pending) { el.parentNode._pending[vnode.key] = null @@ -238,8 +256,8 @@ export function leave (vnode: VNodeWithData, rm: Function) { addTransitionClass(el, leaveToClass) removeTransitionClass(el, leaveClass) if (!cb.cancelled && !userWantsControl) { - if (typeof explicitDuration !== 'undefined') { - setTimeout(cb, explicitDuration) + if (typeof explicitLeaveDuration === 'number') { + setTimeout(cb, explicitLeaveDuration) } else { whenTransitionEnds(el, type, cb) } From 2e184a5dc4c630488e7b7e62a7b623a322425af5 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Mon, 6 Feb 2017 22:21:21 +0100 Subject: [PATCH 13/15] Better prop handling --- .../web/runtime/modules/transition.js | 29 +++++++------------ src/platforms/web/runtime/transition-util.js | 13 ++++++++- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/platforms/web/runtime/modules/transition.js b/src/platforms/web/runtime/modules/transition.js index 76e2e8158e8..2ed42945fc0 100644 --- a/src/platforms/web/runtime/modules/transition.js +++ b/src/platforms/web/runtime/modules/transition.js @@ -10,7 +10,7 @@ import { addTransitionClass, removeTransitionClass, whenTransitionEnds, - parseDuration + parseDurationProp } from '../transition-util' function explicitDurationNaNWarn (name, vnode) { @@ -88,15 +88,7 @@ export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { const afterEnterHook = isAppear ? (afterAppear || afterEnter) : afterEnter const enterCancelledHook = isAppear ? (appearCancelled || enterCancelled) : enterCancelled - const explicitEnterDuration = parseDuration(( - duration !== null && - typeof duration === 'object' && - duration.enter - ) || duration) - - if (process.env.NODE_ENV !== 'production' && isNaN(explicitEnterDuration)) { - explicitDurationNaNWarn('enter', vnode) - } + const explicitEnterDuration = parseDurationProp(duration, 'enter') const expectsCSS = css !== false && !isIE9 const userWantsControl = @@ -145,6 +137,10 @@ export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { removeTransitionClass(el, startClass) if (!cb.cancelled && !userWantsControl) { if (typeof explicitEnterDuration === 'number') { + if (process.env.NODE_ENV !== 'production' && isNaN(explicitEnterDuration)) { + explicitDurationNaNWarn('enter', vnode) + } + setTimeout(cb, explicitEnterDuration) } else { whenTransitionEnds(el, type, cb) @@ -203,15 +199,7 @@ export function leave (vnode: VNodeWithData, rm: Function) { // the length of original fn as _length (leave._length || leave.length) > 1 - const explicitLeaveDuration = parseDuration(( - duration !== null && - typeof duration === 'object' && - duration.leave - ) || duration) - - if (process.env.NODE_ENV !== 'production' && isNaN(explicitLeaveDuration)) { - explicitDurationNaNWarn('leave', vnode) - } + const explicitLeaveDuration = parseDurationProp(duration, 'leave') const cb = el._leaveCb = once(() => { if (el.parentNode && el.parentNode._pending) { @@ -257,6 +245,9 @@ export function leave (vnode: VNodeWithData, rm: Function) { removeTransitionClass(el, leaveClass) if (!cb.cancelled && !userWantsControl) { if (typeof explicitLeaveDuration === 'number') { + if (process.env.NODE_ENV !== 'production' && isNaN(explicitLeaveDuration)) { + explicitDurationNaNWarn('leave', vnode) + } setTimeout(cb, explicitLeaveDuration) } else { whenTransitionEnds(el, type, cb) diff --git a/src/platforms/web/runtime/transition-util.js b/src/platforms/web/runtime/transition-util.js index cf19cde350a..be022c539dc 100644 --- a/src/platforms/web/runtime/transition-util.js +++ b/src/platforms/web/runtime/transition-util.js @@ -180,7 +180,7 @@ function toMs (s: string): number { return Number(s.slice(0, -1)) * 1000 } -export function parseDuration (value: Object): number | typeof NaN | typeof undefined { +function parseDuration (value: any): number | typeof NaN | typeof undefined { if (typeof value === 'number') { return value } else if (typeof value === 'string') { @@ -189,3 +189,14 @@ export function parseDuration (value: Object): number | typeof NaN | typeof unde return undefined } } + +export function parseDurationProp (duration: any, field: string): number | typeof NaN | typeof undefined { + let value + if (typeof duration === 'object' && + typeof duration[field] !== 'undefined') { + value = duration[field] + } else { + value = duration + } + return parseDuration(value) +} From 402b0f32a5a1a09a315740fc9e940a5a2aa63181 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 12 Feb 2017 13:38:13 +0100 Subject: [PATCH 14/15] Better flow typings --- src/platforms/web/runtime/transition-util.js | 4 ++-- src/shared/util.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/platforms/web/runtime/transition-util.js b/src/platforms/web/runtime/transition-util.js index be022c539dc..f6de1370251 100644 --- a/src/platforms/web/runtime/transition-util.js +++ b/src/platforms/web/runtime/transition-util.js @@ -180,7 +180,7 @@ function toMs (s: string): number { return Number(s.slice(0, -1)) * 1000 } -function parseDuration (value: any): number | typeof NaN | typeof undefined { +function parseDuration (value: any): ?number { if (typeof value === 'number') { return value } else if (typeof value === 'string') { @@ -190,7 +190,7 @@ function parseDuration (value: any): number | typeof NaN | typeof undefined { } } -export function parseDurationProp (duration: any, field: string): number | typeof NaN | typeof undefined { +export function parseDurationProp (duration: any, field: string): ?number { let value if (typeof duration === 'object' && typeof duration[field] !== 'undefined') { diff --git a/src/shared/util.js b/src/shared/util.js index 7c3223ab0ea..3c43fe0ff74 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -244,7 +244,7 @@ export function once (fn: Function): Function { * @param text Time expression with a time unit ('ms' or 's') */ export function parseTime (text: string): number | typeof NaN { - const matched: ?Array = text.match(/(\d+|\d+\.\d+|\.\d+)\s*(s|ms)/i) + const matched = text.match(/(\d+|\d+\.\d+|\.\d+)\s*(s|ms)/i) if (matched) { /* eslint no-unused-vars:0 */ const [_, durationText: string, unit: string] = matched From e6f8fed36828ce4dbd1f624d59642016af485125 Mon Sep 17 00:00:00 2001 From: Evan You Date: Wed, 15 Feb 2017 18:26:19 -0500 Subject: [PATCH 15/15] adjustments --- .../web/runtime/components/transition.js | 2 +- .../web/runtime/modules/transition.js | 61 +++--- src/platforms/web/runtime/transition-util.js | 23 +-- src/shared/util.js | 19 -- .../features/transition/transition.spec.js | 176 +++++++----------- 5 files changed, 104 insertions(+), 177 deletions(-) diff --git a/src/platforms/web/runtime/components/transition.js b/src/platforms/web/runtime/components/transition.js index 7a562bb56c4..f23e8f86815 100644 --- a/src/platforms/web/runtime/components/transition.js +++ b/src/platforms/web/runtime/components/transition.js @@ -22,7 +22,7 @@ export const transitionProps = { appearClass: String, appearActiveClass: String, appearToClass: String, - duration: [Number, String, Object] + duration: [Number, Object] } // in case the child is also an abstract component, e.g. diff --git a/src/platforms/web/runtime/modules/transition.js b/src/platforms/web/runtime/modules/transition.js index 2ed42945fc0..a542ca5e5b7 100644 --- a/src/platforms/web/runtime/modules/transition.js +++ b/src/platforms/web/runtime/modules/transition.js @@ -1,28 +1,17 @@ /* @flow */ +import { once, isObject } from 'shared/util' import { inBrowser, isIE9, warn } from 'core/util/index' -import { once } from 'shared/util' import { mergeVNodeHook } from 'core/vdom/helpers/index' import { activeInstance } from 'core/instance/lifecycle' import { - resolveTransition, nextFrame, - addTransitionClass, - removeTransitionClass, + resolveTransition, whenTransitionEnds, - parseDurationProp + addTransitionClass, + removeTransitionClass } from '../transition-util' -function explicitDurationNaNWarn (name, vnode) { - warn( - ` explicit ${name} duration is NaN and ` + - 'may yield unexpected results. ' + - 'The duration expression might be incorrect. ' + - `Valid examples: '500ms', '.5s' or 500`, - vnode.context - ) -} - export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { const el: any = vnode.elm @@ -88,7 +77,10 @@ export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { const afterEnterHook = isAppear ? (afterAppear || afterEnter) : afterEnter const enterCancelledHook = isAppear ? (appearCancelled || enterCancelled) : enterCancelled - const explicitEnterDuration = parseDurationProp(duration, 'enter') + const explicitEnterDuration = isObject(duration) ? duration.enter : duration + if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) { + checkDuration(explicitEnterDuration, 'enter', vnode) + } const expectsCSS = css !== false && !isIE9 const userWantsControl = @@ -136,11 +128,7 @@ export function enter (vnode: VNodeWithData, toggleDisplay: ?() => void) { addTransitionClass(el, toClass) removeTransitionClass(el, startClass) if (!cb.cancelled && !userWantsControl) { - if (typeof explicitEnterDuration === 'number') { - if (process.env.NODE_ENV !== 'production' && isNaN(explicitEnterDuration)) { - explicitDurationNaNWarn('enter', vnode) - } - + if (isValidDuration(explicitEnterDuration)) { setTimeout(cb, explicitEnterDuration) } else { whenTransitionEnds(el, type, cb) @@ -199,7 +187,10 @@ export function leave (vnode: VNodeWithData, rm: Function) { // the length of original fn as _length (leave._length || leave.length) > 1 - const explicitLeaveDuration = parseDurationProp(duration, 'leave') + const explicitLeaveDuration = isObject(duration) ? duration.leave : duration + if (process.env.NODE_ENV !== 'production' && explicitLeaveDuration != null) { + checkDuration(explicitLeaveDuration, 'leave', vnode) + } const cb = el._leaveCb = once(() => { if (el.parentNode && el.parentNode._pending) { @@ -244,10 +235,7 @@ export function leave (vnode: VNodeWithData, rm: Function) { addTransitionClass(el, leaveToClass) removeTransitionClass(el, leaveClass) if (!cb.cancelled && !userWantsControl) { - if (typeof explicitLeaveDuration === 'number') { - if (process.env.NODE_ENV !== 'production' && isNaN(explicitLeaveDuration)) { - explicitDurationNaNWarn('leave', vnode) - } + if (isValidDuration(explicitLeaveDuration)) { setTimeout(cb, explicitLeaveDuration) } else { whenTransitionEnds(el, type, cb) @@ -262,6 +250,27 @@ export function leave (vnode: VNodeWithData, rm: Function) { } } +// only used in dev mode +function checkDuration (val, name, vnode) { + if (typeof val !== 'number') { + warn( + ` explicit ${name} duration is not a valid number - ` + + `got ${JSON.stringify(val)}.`, + vnode.context + ) + } else if (isNaN(val)) { + warn( + ` explicit ${name} duration is NaN - ` + + 'the duration expression might be incorrect.', + vnode.context + ) + } +} + +function isValidDuration (val) { + return typeof val === 'number' && !isNaN(val) +} + function _enter (_: any, vnode: VNodeWithData) { if (!vnode.data.show) { enter(vnode) diff --git a/src/platforms/web/runtime/transition-util.js b/src/platforms/web/runtime/transition-util.js index f6de1370251..ad65dc22c28 100644 --- a/src/platforms/web/runtime/transition-util.js +++ b/src/platforms/web/runtime/transition-util.js @@ -1,8 +1,8 @@ /* @flow */ import { inBrowser, isIE9 } from 'core/util/index' -import { remove, extend, cached, parseTime } from 'shared/util' import { addClass, removeClass } from './class-util' +import { remove, extend, cached } from 'shared/util' export function resolveTransition (def?: string | Object): ?Object { if (!def) { @@ -179,24 +179,3 @@ function getTimeout (delays: Array, durations: Array): number { function toMs (s: string): number { return Number(s.slice(0, -1)) * 1000 } - -function parseDuration (value: any): ?number { - if (typeof value === 'number') { - return value - } else if (typeof value === 'string') { - return parseTime(value) - } else { - return undefined - } -} - -export function parseDurationProp (duration: any, field: string): ?number { - let value - if (typeof duration === 'object' && - typeof duration[field] !== 'undefined') { - value = duration[field] - } else { - value = duration - } - return parseDuration(value) -} diff --git a/src/shared/util.js b/src/shared/util.js index 3c43fe0ff74..69e17a819eb 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -238,22 +238,3 @@ export function once (fn: Function): Function { } } } - -/** - * Returns the number of ms corresponding to the text expression. - * @param text Time expression with a time unit ('ms' or 's') - */ -export function parseTime (text: string): number | typeof NaN { - const matched = text.match(/(\d+|\d+\.\d+|\.\d+)\s*(s|ms)/i) - if (matched) { - /* eslint no-unused-vars:0 */ - const [_, durationText: string, unit: string] = matched - let duration: number = parseFloat(durationText) - if (unit === 's') { - duration *= 1000 - } - return duration - } else { - return parseFloat(text) - } -} diff --git a/test/unit/features/transition/transition.spec.js b/test/unit/features/transition/transition.spec.js index b3e9644fe4f..d80226ac719 100644 --- a/test/unit/features/transition/transition.spec.js +++ b/test/unit/features/transition/transition.spec.js @@ -6,6 +6,7 @@ import { nextFrame } from 'web/runtime/transition-util' if (!isIE9) { describe('Transition basic', () => { const { duration, buffer } = injectStyles() + const explicitDuration = 100 let el beforeEach(() => { @@ -876,102 +877,15 @@ if (!isIE9) { expect(` can only be used on a single element`).toHaveBeenWarned() }) - it('explicit transition total duration in ms (string)', done => { - const milliseconds = 100 - - const vm = new Vue({ - template: `
foo
`, - data: { ok: true } - }).$mount(el) - - vm.ok = false - - waitForUpdate(() => { - expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') - }).thenWaitFor(nextFrame).then(() => { - expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(milliseconds - buffer).then(() => { - expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(buffer * 2).then(() => { - expect(vm.$el.children.length).toBe(0) - vm.ok = true - }).then(() => { - expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') - }).thenWaitFor(nextFrame).then(() => { - expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(milliseconds - buffer).then(() => { - expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(buffer * 2).then(() => { - expect(vm.$el.children[0].className).toBe('test') - }).then(done) - }) - - it('explicit transition total duration in s (string)', done => { - const milliseconds = 100 - const seconds = '.1' - - const vm = new Vue({ - template: `
foo
`, - data: { ok: true } - }).$mount(el) - - vm.ok = false - - waitForUpdate(() => { - expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') - }).thenWaitFor(nextFrame).then(() => { - expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(milliseconds - buffer).then(() => { - expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(buffer * 2).then(() => { - expect(vm.$el.children.length).toBe(0) - vm.ok = true - }).then(() => { - expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') - }).thenWaitFor(nextFrame).then(() => { - expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(milliseconds - buffer).then(() => { - expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(buffer * 2).then(() => { - expect(vm.$el.children[0].className).toBe('test') - }).then(done) - }) - - it('explicit transition total duration in ms (number)', done => { - const milliseconds = 100 - + it('explicit transition total duration', done => { const vm = new Vue({ - template: `
foo
`, - data: { ok: true } - }).$mount(el) - - vm.ok = false - - waitForUpdate(() => { - expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') - }).thenWaitFor(nextFrame).then(() => { - expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(milliseconds - buffer).then(() => { - expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(buffer * 2).then(() => { - expect(vm.$el.children.length).toBe(0) - vm.ok = true - }).then(() => { - expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') - }).thenWaitFor(nextFrame).then(() => { - expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(milliseconds - buffer).then(() => { - expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(buffer * 2).then(() => { - expect(vm.$el.children[0].className).toBe('test') - }).then(done) - }) - - it('explicit transition total duration in ms (string without unit)', done => { - const milliseconds = 100 - - const vm = new Vue({ - template: `
foo
`, + template: ` +
+ +
foo
+
+
+ `, data: { ok: true } }).$mount(el) @@ -981,7 +895,7 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(milliseconds - buffer).then(() => { + }).thenWaitFor(explicitDuration - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) @@ -990,7 +904,7 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(milliseconds - buffer).then(() => { + }).thenWaitFor(explicitDuration - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') @@ -998,10 +912,14 @@ if (!isIE9) { }) it('explicit transition enter duration and auto leave duration', done => { - const milliseconds = 100 - const vm = new Vue({ - template: `
foo
`, + template: ` +
+ +
foo
+
+
+ `, data: { ok: true } }).$mount(el) @@ -1020,7 +938,7 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') - }).thenWaitFor(milliseconds - buffer).then(() => { + }).thenWaitFor(explicitDuration - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children[0].className).toBe('test') @@ -1028,10 +946,14 @@ if (!isIE9) { }) it('explicit transition leave duration and auto enter duration', done => { - const milliseconds = 100 - const vm = new Vue({ - template: `
foo
`, + template: ` +
+ +
foo
+
+
+ `, data: { ok: true } }).$mount(el) @@ -1041,7 +963,7 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') }).thenWaitFor(nextFrame).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') - }).thenWaitFor(milliseconds - buffer).then(() => { + }).thenWaitFor(explicitDuration - buffer).then(() => { expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') }).thenWaitFor(buffer * 2).then(() => { expect(vm.$el.children.length).toBe(0) @@ -1057,12 +979,18 @@ if (!isIE9) { }).then(done) }) - it('explicit transition enter and leave duration (string)', done => { + it('explicit transition separate enter and leave duration', done => { const enter = 100 const leave = 200 const vm = new Vue({ - template: `
foo
`, + template: ` +
+ +
foo
+
+
+ `, data: { ok: true } }).$mount(el) @@ -1088,14 +1016,20 @@ if (!isIE9) { }).then(done) }) - it('explicit transition enter and leave duration (number) + duration change', done => { + it('explicit transition enter and leave duration + duration change', done => { const enter1 = 200 const enter2 = 100 const leave1 = 50 const leave2 = 300 const vm = new Vue({ - template: `
foo
`, + template: ` +
+ +
foo
+
+
+ `, data: { ok: true, enter: enter1, @@ -1145,5 +1079,29 @@ if (!isIE9) { expect(vm.$el.children[0].className).toBe('test') }).then(done) }) + + it('warn invalid explicit durations', done => { + const vm = new Vue({ + template: ` +
+ +
foo
+
+
+ `, + data: { + ok: true + } + }).$mount(el) + + vm.ok = false + waitForUpdate(() => { + expect(` explicit leave duration is not a valid number - got "foo"`).toHaveBeenWarned() + }).thenWaitFor(duration + buffer).then(() => { + vm.ok = true + }).then(() => { + expect(` explicit enter duration is NaN`).toHaveBeenWarned() + }).then(done) + }) }) }