Browse Source

build: build 2.6.9

dev
Evan You 6 years ago
parent
commit
5bffed03f1
  1. 54
      dist/vue.common.dev.js
  2. 4
      dist/vue.common.prod.js
  3. 54
      dist/vue.esm.browser.js
  4. 4
      dist/vue.esm.browser.min.js
  5. 54
      dist/vue.esm.js
  6. 54
      dist/vue.js
  7. 4
      dist/vue.min.js
  8. 52
      dist/vue.runtime.common.dev.js
  9. 4
      dist/vue.runtime.common.prod.js
  10. 52
      dist/vue.runtime.esm.js
  11. 52
      dist/vue.runtime.js
  12. 4
      dist/vue.runtime.min.js
  13. 44
      packages/vue-server-renderer/basic.js
  14. 48
      packages/vue-server-renderer/build.dev.js
  15. 2
      packages/vue-server-renderer/build.prod.js
  16. 2
      packages/vue-server-renderer/package.json
  17. 2
      packages/vue-template-compiler/browser.js
  18. 2
      packages/vue-template-compiler/build.js
  19. 2
      packages/vue-template-compiler/package.json

54
dist/vue.common.dev.js

@ -1,5 +1,5 @@
/*!
* Vue.js v2.6.8
* Vue.js v2.6.9
* (c) 2014-2019 Evan You
* Released under the MIT License.
*/
@ -1857,10 +1857,11 @@ function invokeWithErrorHandling (
var res;
try {
res = args ? handler.apply(context, args) : handler.call(context);
if (res && !res._isVue && isPromise(res)) {
if (res && !res._isVue && isPromise(res) && !res._handled) {
res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// issue #9511
// reassign to res to avoid catch triggering multiple times when nested calls
res = res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// avoid catch triggering multiple times when nested calls
res._handled = true;
}
} catch (e) {
handleError(e, vm, info);
@ -2544,6 +2545,7 @@ function normalizeScopedSlots (
) {
var res;
var isStable = slots ? !!slots.$stable : true;
var hasNormalSlots = Object.keys(normalSlots).length > 0;
var key = slots && slots.$key;
if (!slots) {
res = {};
@ -2555,7 +2557,8 @@ function normalizeScopedSlots (
prevSlots &&
prevSlots !== emptyObject &&
key === prevSlots.$key &&
Object.keys(normalSlots).length === 0
!hasNormalSlots &&
!prevSlots.$hasNormal
) {
// fast path 2: stable scoped slots w/ no normal slots to proxy,
// only need to normalize once
@ -2581,6 +2584,7 @@ function normalizeScopedSlots (
}
def(res, '$stable', isStable);
def(res, '$key', key);
def(res, '$hasNormal', hasNormalSlots);
return res
}
@ -2590,8 +2594,10 @@ function normalizeScopedSlot(normalSlots, key, fn) {
res = res && typeof res === 'object' && !Array.isArray(res)
? [res] // single vnode
: normalizeChildren(res);
return res && res.length === 0
? undefined
return res && (
res.length === 0 ||
(res.length === 1 && res[0].isComment) // #9658
) ? undefined
: res
};
// this is a slot using the new v-slot syntax without scope. although it is
@ -2771,12 +2777,13 @@ function bindObjectProps (
: data.attrs || (data.attrs = {});
}
var camelizedKey = camelize(key);
if (!(key in hash) && !(camelizedKey in hash)) {
var hyphenatedKey = hyphenate(key);
if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
hash[key] = value[key];
if (isSync) {
var on = data.on || (data.on = {});
on[("update:" + camelizedKey)] = function ($event) {
on[("update:" + key)] = function ($event) {
value[key] = $event;
};
}
@ -3611,7 +3618,7 @@ function resolveAsyncComponent (
}
var owner = currentRenderingInstance;
if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
// already pending
factory.owners.push(owner);
}
@ -3620,7 +3627,7 @@ function resolveAsyncComponent (
return factory.loadingComp
}
if (!isDef(factory.owners)) {
if (owner && !isDef(factory.owners)) {
var owners = factory.owners = [owner];
var sync = true
@ -4235,10 +4242,15 @@ var getNow = Date.now;
// timestamp can either be hi-res (relative to page load) or low-res
// (relative to UNIX epoch), so in order to compare time we have to use the
// same timestamp type when saving the flush timestamp.
if (inBrowser && getNow() > document.createEvent('Event').timeStamp) {
// if the low-res timestamp which is bigger than the event timestamp
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
// and we need to use the hi-res version for event listeners as well.
if (
inBrowser &&
window.performance &&
typeof performance.now === 'function' &&
document.createEvent('Event').timeStamp <= performance.now()
) {
// if the event timestamp is bigger than the hi-res timestamp
// (which is evaluated AFTER) it means the event is using a lo-res timestamp,
// and we need to use the lo-res version for event listeners as well.
getNow = function () { return performance.now(); };
}
@ -5404,7 +5416,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
value: FunctionalRenderContext
});
Vue.version = '2.6.8';
Vue.version = '2.6.9';
/* */
@ -7496,8 +7508,10 @@ function add$1 (
e.target === e.currentTarget ||
// event is fired after handler attachment
e.timeStamp >= attachedTimestamp ||
// #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState
e.timeStamp === 0 ||
// bail for environments that have buggy event.timeStamp implementations
// #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
// #9681 QtWebEngine event.timeStamp is negative value
e.timeStamp <= 0 ||
// #9448 bail if event is fired in another document in a multi-page
// electron/nw.js app, since event.timeStamp will be using a different
// starting reference
@ -8115,8 +8129,8 @@ function enter (vnode, toggleDisplay) {
var context = activeInstance;
var transitionNode = activeInstance.$vnode;
while (transitionNode && transitionNode.parent) {
transitionNode = transitionNode.parent;
context = transitionNode.context;
transitionNode = transitionNode.parent;
}
var isAppear = !context._isMounted || !vnode.isRootInsert;
@ -9823,7 +9837,7 @@ function parse (
text = preserveWhitespace ? ' ' : '';
}
if (text) {
if (whitespaceOption === 'condense') {
if (!inPre && whitespaceOption === 'condense') {
// condense consecutive whitespaces into single space
text = text.replace(whitespaceRE$1, ' ');
}

4
dist/vue.common.prod.js

File diff suppressed because one or more lines are too long

54
dist/vue.esm.browser.js

@ -1,5 +1,5 @@
/*!
* Vue.js v2.6.8
* Vue.js v2.6.9
* (c) 2014-2019 Evan You
* Released under the MIT License.
*/
@ -1888,10 +1888,11 @@ function invokeWithErrorHandling (
let res;
try {
res = args ? handler.apply(context, args) : handler.call(context);
if (res && !res._isVue && isPromise(res)) {
if (res && !res._isVue && isPromise(res) && !res._handled) {
res.catch(e => handleError(e, vm, info + ` (Promise/async)`));
// issue #9511
// reassign to res to avoid catch triggering multiple times when nested calls
res = res.catch(e => handleError(e, vm, info + ` (Promise/async)`));
// avoid catch triggering multiple times when nested calls
res._handled = true;
}
} catch (e) {
handleError(e, vm, info);
@ -2572,6 +2573,7 @@ function normalizeScopedSlots (
) {
let res;
const isStable = slots ? !!slots.$stable : true;
const hasNormalSlots = Object.keys(normalSlots).length > 0;
const key = slots && slots.$key;
if (!slots) {
res = {};
@ -2583,7 +2585,8 @@ function normalizeScopedSlots (
prevSlots &&
prevSlots !== emptyObject &&
key === prevSlots.$key &&
Object.keys(normalSlots).length === 0
!hasNormalSlots &&
!prevSlots.$hasNormal
) {
// fast path 2: stable scoped slots w/ no normal slots to proxy,
// only need to normalize once
@ -2609,6 +2612,7 @@ function normalizeScopedSlots (
}
def(res, '$stable', isStable);
def(res, '$key', key);
def(res, '$hasNormal', hasNormalSlots);
return res
}
@ -2618,8 +2622,10 @@ function normalizeScopedSlot(normalSlots, key, fn) {
res = res && typeof res === 'object' && !Array.isArray(res)
? [res] // single vnode
: normalizeChildren(res);
return res && res.length === 0
? undefined
return res && (
res.length === 0 ||
(res.length === 1 && res[0].isComment) // #9658
) ? undefined
: res
};
// this is a slot using the new v-slot syntax without scope. although it is
@ -2799,12 +2805,13 @@ function bindObjectProps (
: data.attrs || (data.attrs = {});
}
const camelizedKey = camelize(key);
if (!(key in hash) && !(camelizedKey in hash)) {
const hyphenatedKey = hyphenate(key);
if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
hash[key] = value[key];
if (isSync) {
const on = data.on || (data.on = {});
on[`update:${camelizedKey}`] = function ($event) {
on[`update:${key}`] = function ($event) {
value[key] = $event;
};
}
@ -3632,7 +3639,7 @@ function resolveAsyncComponent (
}
const owner = currentRenderingInstance;
if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
// already pending
factory.owners.push(owner);
}
@ -3641,7 +3648,7 @@ function resolveAsyncComponent (
return factory.loadingComp
}
if (!isDef(factory.owners)) {
if (owner && !isDef(factory.owners)) {
const owners = factory.owners = [owner];
let sync = true
@ -4256,10 +4263,15 @@ let getNow = Date.now;
// timestamp can either be hi-res (relative to page load) or low-res
// (relative to UNIX epoch), so in order to compare time we have to use the
// same timestamp type when saving the flush timestamp.
if (inBrowser && getNow() > document.createEvent('Event').timeStamp) {
// if the low-res timestamp which is bigger than the event timestamp
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
// and we need to use the hi-res version for event listeners as well.
if (
inBrowser &&
window.performance &&
typeof performance.now === 'function' &&
document.createEvent('Event').timeStamp <= performance.now()
) {
// if the event timestamp is bigger than the hi-res timestamp
// (which is evaluated AFTER) it means the event is using a lo-res timestamp,
// and we need to use the lo-res version for event listeners as well.
getNow = () => performance.now();
}
@ -5435,7 +5447,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
value: FunctionalRenderContext
});
Vue.version = '2.6.8';
Vue.version = '2.6.9';
/* */
@ -7519,8 +7531,10 @@ function add$1 (
e.target === e.currentTarget ||
// event is fired after handler attachment
e.timeStamp >= attachedTimestamp ||
// #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState
e.timeStamp === 0 ||
// bail for environments that have buggy event.timeStamp implementations
// #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
// #9681 QtWebEngine event.timeStamp is negative value
e.timeStamp <= 0 ||
// #9448 bail if event is fired in another document in a multi-page
// electron/nw.js app, since event.timeStamp will be using a different
// starting reference
@ -8137,8 +8151,8 @@ function enter (vnode, toggleDisplay) {
let context = activeInstance;
let transitionNode = activeInstance.$vnode;
while (transitionNode && transitionNode.parent) {
transitionNode = transitionNode.parent;
context = transitionNode.context;
transitionNode = transitionNode.parent;
}
const isAppear = !context._isMounted || !vnode.isRootInsert;
@ -9840,7 +9854,7 @@ function parse (
text = preserveWhitespace ? ' ' : '';
}
if (text) {
if (whitespaceOption === 'condense') {
if (!inPre && whitespaceOption === 'condense') {
// condense consecutive whitespaces into single space
text = text.replace(whitespaceRE$1, ' ');
}

4
dist/vue.esm.browser.min.js

File diff suppressed because one or more lines are too long

54
dist/vue.esm.js

@ -1,5 +1,5 @@
/*!
* Vue.js v2.6.8
* Vue.js v2.6.9
* (c) 2014-2019 Evan You
* Released under the MIT License.
*/
@ -1861,10 +1861,11 @@ function invokeWithErrorHandling (
var res;
try {
res = args ? handler.apply(context, args) : handler.call(context);
if (res && !res._isVue && isPromise(res)) {
if (res && !res._isVue && isPromise(res) && !res._handled) {
res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// issue #9511
// reassign to res to avoid catch triggering multiple times when nested calls
res = res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// avoid catch triggering multiple times when nested calls
res._handled = true;
}
} catch (e) {
handleError(e, vm, info);
@ -2550,6 +2551,7 @@ function normalizeScopedSlots (
) {
var res;
var isStable = slots ? !!slots.$stable : true;
var hasNormalSlots = Object.keys(normalSlots).length > 0;
var key = slots && slots.$key;
if (!slots) {
res = {};
@ -2561,7 +2563,8 @@ function normalizeScopedSlots (
prevSlots &&
prevSlots !== emptyObject &&
key === prevSlots.$key &&
Object.keys(normalSlots).length === 0
!hasNormalSlots &&
!prevSlots.$hasNormal
) {
// fast path 2: stable scoped slots w/ no normal slots to proxy,
// only need to normalize once
@ -2587,6 +2590,7 @@ function normalizeScopedSlots (
}
def(res, '$stable', isStable);
def(res, '$key', key);
def(res, '$hasNormal', hasNormalSlots);
return res
}
@ -2596,8 +2600,10 @@ function normalizeScopedSlot(normalSlots, key, fn) {
res = res && typeof res === 'object' && !Array.isArray(res)
? [res] // single vnode
: normalizeChildren(res);
return res && res.length === 0
? undefined
return res && (
res.length === 0 ||
(res.length === 1 && res[0].isComment) // #9658
) ? undefined
: res
};
// this is a slot using the new v-slot syntax without scope. although it is
@ -2777,12 +2783,13 @@ function bindObjectProps (
: data.attrs || (data.attrs = {});
}
var camelizedKey = camelize(key);
if (!(key in hash) && !(camelizedKey in hash)) {
var hyphenatedKey = hyphenate(key);
if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
hash[key] = value[key];
if (isSync) {
var on = data.on || (data.on = {});
on[("update:" + camelizedKey)] = function ($event) {
on[("update:" + key)] = function ($event) {
value[key] = $event;
};
}
@ -3621,7 +3628,7 @@ function resolveAsyncComponent (
}
var owner = currentRenderingInstance;
if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
// already pending
factory.owners.push(owner);
}
@ -3630,7 +3637,7 @@ function resolveAsyncComponent (
return factory.loadingComp
}
if (!isDef(factory.owners)) {
if (owner && !isDef(factory.owners)) {
var owners = factory.owners = [owner];
var sync = true
@ -4247,10 +4254,15 @@ var getNow = Date.now;
// timestamp can either be hi-res (relative to page load) or low-res
// (relative to UNIX epoch), so in order to compare time we have to use the
// same timestamp type when saving the flush timestamp.
if (inBrowser && getNow() > document.createEvent('Event').timeStamp) {
// if the low-res timestamp which is bigger than the event timestamp
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
// and we need to use the hi-res version for event listeners as well.
if (
inBrowser &&
window.performance &&
typeof performance.now === 'function' &&
document.createEvent('Event').timeStamp <= performance.now()
) {
// if the event timestamp is bigger than the hi-res timestamp
// (which is evaluated AFTER) it means the event is using a lo-res timestamp,
// and we need to use the lo-res version for event listeners as well.
getNow = function () { return performance.now(); };
}
@ -5424,7 +5436,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
value: FunctionalRenderContext
});
Vue.version = '2.6.8';
Vue.version = '2.6.9';
/* */
@ -7518,8 +7530,10 @@ function add$1 (
e.target === e.currentTarget ||
// event is fired after handler attachment
e.timeStamp >= attachedTimestamp ||
// #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState
e.timeStamp === 0 ||
// bail for environments that have buggy event.timeStamp implementations
// #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
// #9681 QtWebEngine event.timeStamp is negative value
e.timeStamp <= 0 ||
// #9448 bail if event is fired in another document in a multi-page
// electron/nw.js app, since event.timeStamp will be using a different
// starting reference
@ -8137,8 +8151,8 @@ function enter (vnode, toggleDisplay) {
var context = activeInstance;
var transitionNode = activeInstance.$vnode;
while (transitionNode && transitionNode.parent) {
transitionNode = transitionNode.parent;
context = transitionNode.context;
transitionNode = transitionNode.parent;
}
var isAppear = !context._isMounted || !vnode.isRootInsert;
@ -9852,7 +9866,7 @@ function parse (
text = preserveWhitespace ? ' ' : '';
}
if (text) {
if (whitespaceOption === 'condense') {
if (!inPre && whitespaceOption === 'condense') {
// condense consecutive whitespaces into single space
text = text.replace(whitespaceRE$1, ' ');
}

54
dist/vue.js

@ -1,5 +1,5 @@
/*!
* Vue.js v2.6.8
* Vue.js v2.6.9
* (c) 2014-2019 Evan You
* Released under the MIT License.
*/
@ -1861,10 +1861,11 @@
var res;
try {
res = args ? handler.apply(context, args) : handler.call(context);
if (res && !res._isVue && isPromise(res)) {
if (res && !res._isVue && isPromise(res) && !res._handled) {
res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// issue #9511
// reassign to res to avoid catch triggering multiple times when nested calls
res = res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// avoid catch triggering multiple times when nested calls
res._handled = true;
}
} catch (e) {
handleError(e, vm, info);
@ -2548,6 +2549,7 @@
) {
var res;
var isStable = slots ? !!slots.$stable : true;
var hasNormalSlots = Object.keys(normalSlots).length > 0;
var key = slots && slots.$key;
if (!slots) {
res = {};
@ -2559,7 +2561,8 @@
prevSlots &&
prevSlots !== emptyObject &&
key === prevSlots.$key &&
Object.keys(normalSlots).length === 0
!hasNormalSlots &&
!prevSlots.$hasNormal
) {
// fast path 2: stable scoped slots w/ no normal slots to proxy,
// only need to normalize once
@ -2585,6 +2588,7 @@
}
def(res, '$stable', isStable);
def(res, '$key', key);
def(res, '$hasNormal', hasNormalSlots);
return res
}
@ -2594,8 +2598,10 @@
res = res && typeof res === 'object' && !Array.isArray(res)
? [res] // single vnode
: normalizeChildren(res);
return res && res.length === 0
? undefined
return res && (
res.length === 0 ||
(res.length === 1 && res[0].isComment) // #9658
) ? undefined
: res
};
// this is a slot using the new v-slot syntax without scope. although it is
@ -2775,12 +2781,13 @@
: data.attrs || (data.attrs = {});
}
var camelizedKey = camelize(key);
if (!(key in hash) && !(camelizedKey in hash)) {
var hyphenatedKey = hyphenate(key);
if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
hash[key] = value[key];
if (isSync) {
var on = data.on || (data.on = {});
on[("update:" + camelizedKey)] = function ($event) {
on[("update:" + key)] = function ($event) {
value[key] = $event;
};
}
@ -3615,7 +3622,7 @@
}
var owner = currentRenderingInstance;
if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
// already pending
factory.owners.push(owner);
}
@ -3624,7 +3631,7 @@
return factory.loadingComp
}
if (!isDef(factory.owners)) {
if (owner && !isDef(factory.owners)) {
var owners = factory.owners = [owner];
var sync = true
@ -4239,10 +4246,15 @@
// timestamp can either be hi-res (relative to page load) or low-res
// (relative to UNIX epoch), so in order to compare time we have to use the
// same timestamp type when saving the flush timestamp.
if (inBrowser && getNow() > document.createEvent('Event').timeStamp) {
// if the low-res timestamp which is bigger than the event timestamp
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
// and we need to use the hi-res version for event listeners as well.
if (
inBrowser &&
window.performance &&
typeof performance.now === 'function' &&
document.createEvent('Event').timeStamp <= performance.now()
) {
// if the event timestamp is bigger than the hi-res timestamp
// (which is evaluated AFTER) it means the event is using a lo-res timestamp,
// and we need to use the lo-res version for event listeners as well.
getNow = function () { return performance.now(); };
}
@ -5408,7 +5420,7 @@
value: FunctionalRenderContext
});
Vue.version = '2.6.8';
Vue.version = '2.6.9';
/* */
@ -7500,8 +7512,10 @@
e.target === e.currentTarget ||
// event is fired after handler attachment
e.timeStamp >= attachedTimestamp ||
// #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState
e.timeStamp === 0 ||
// bail for environments that have buggy event.timeStamp implementations
// #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
// #9681 QtWebEngine event.timeStamp is negative value
e.timeStamp <= 0 ||
// #9448 bail if event is fired in another document in a multi-page
// electron/nw.js app, since event.timeStamp will be using a different
// starting reference
@ -8119,8 +8133,8 @@
var context = activeInstance;
var transitionNode = activeInstance.$vnode;
while (transitionNode && transitionNode.parent) {
transitionNode = transitionNode.parent;
context = transitionNode.context;
transitionNode = transitionNode.parent;
}
var isAppear = !context._isMounted || !vnode.isRootInsert;
@ -9827,7 +9841,7 @@
text = preserveWhitespace ? ' ' : '';
}
if (text) {
if (whitespaceOption === 'condense') {
if (!inPre && whitespaceOption === 'condense') {
// condense consecutive whitespaces into single space
text = text.replace(whitespaceRE$1, ' ');
}

4
dist/vue.min.js

File diff suppressed because one or more lines are too long

52
dist/vue.runtime.common.dev.js

@ -1,5 +1,5 @@
/*!
* Vue.js v2.6.8
* Vue.js v2.6.9
* (c) 2014-2019 Evan You
* Released under the MIT License.
*/
@ -1848,10 +1848,11 @@ function invokeWithErrorHandling (
var res;
try {
res = args ? handler.apply(context, args) : handler.call(context);
if (res && !res._isVue && isPromise(res)) {
if (res && !res._isVue && isPromise(res) && !res._handled) {
res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// issue #9511
// reassign to res to avoid catch triggering multiple times when nested calls
res = res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// avoid catch triggering multiple times when nested calls
res._handled = true;
}
} catch (e) {
handleError(e, vm, info);
@ -2535,6 +2536,7 @@ function normalizeScopedSlots (
) {
var res;
var isStable = slots ? !!slots.$stable : true;
var hasNormalSlots = Object.keys(normalSlots).length > 0;
var key = slots && slots.$key;
if (!slots) {
res = {};
@ -2546,7 +2548,8 @@ function normalizeScopedSlots (
prevSlots &&
prevSlots !== emptyObject &&
key === prevSlots.$key &&
Object.keys(normalSlots).length === 0
!hasNormalSlots &&
!prevSlots.$hasNormal
) {
// fast path 2: stable scoped slots w/ no normal slots to proxy,
// only need to normalize once
@ -2572,6 +2575,7 @@ function normalizeScopedSlots (
}
def(res, '$stable', isStable);
def(res, '$key', key);
def(res, '$hasNormal', hasNormalSlots);
return res
}
@ -2581,8 +2585,10 @@ function normalizeScopedSlot(normalSlots, key, fn) {
res = res && typeof res === 'object' && !Array.isArray(res)
? [res] // single vnode
: normalizeChildren(res);
return res && res.length === 0
? undefined
return res && (
res.length === 0 ||
(res.length === 1 && res[0].isComment) // #9658
) ? undefined
: res
};
// this is a slot using the new v-slot syntax without scope. although it is
@ -2762,12 +2768,13 @@ function bindObjectProps (
: data.attrs || (data.attrs = {});
}
var camelizedKey = camelize(key);
if (!(key in hash) && !(camelizedKey in hash)) {
var hyphenatedKey = hyphenate(key);
if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
hash[key] = value[key];
if (isSync) {
var on = data.on || (data.on = {});
on[("update:" + camelizedKey)] = function ($event) {
on[("update:" + key)] = function ($event) {
value[key] = $event;
};
}
@ -3602,7 +3609,7 @@ function resolveAsyncComponent (
}
var owner = currentRenderingInstance;
if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
// already pending
factory.owners.push(owner);
}
@ -3611,7 +3618,7 @@ function resolveAsyncComponent (
return factory.loadingComp
}
if (!isDef(factory.owners)) {
if (owner && !isDef(factory.owners)) {
var owners = factory.owners = [owner];
var sync = true
@ -4226,10 +4233,15 @@ var getNow = Date.now;
// timestamp can either be hi-res (relative to page load) or low-res
// (relative to UNIX epoch), so in order to compare time we have to use the
// same timestamp type when saving the flush timestamp.
if (inBrowser && getNow() > document.createEvent('Event').timeStamp) {
// if the low-res timestamp which is bigger than the event timestamp
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
// and we need to use the hi-res version for event listeners as well.
if (
inBrowser &&
window.performance &&
typeof performance.now === 'function' &&
document.createEvent('Event').timeStamp <= performance.now()
) {
// if the event timestamp is bigger than the hi-res timestamp
// (which is evaluated AFTER) it means the event is using a lo-res timestamp,
// and we need to use the lo-res version for event listeners as well.
getNow = function () { return performance.now(); };
}
@ -5395,7 +5407,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
value: FunctionalRenderContext
});
Vue.version = '2.6.8';
Vue.version = '2.6.9';
/* */
@ -6848,8 +6860,10 @@ function add$1 (
e.target === e.currentTarget ||
// event is fired after handler attachment
e.timeStamp >= attachedTimestamp ||
// #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState
e.timeStamp === 0 ||
// bail for environments that have buggy event.timeStamp implementations
// #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
// #9681 QtWebEngine event.timeStamp is negative value
e.timeStamp <= 0 ||
// #9448 bail if event is fired in another document in a multi-page
// electron/nw.js app, since event.timeStamp will be using a different
// starting reference
@ -7467,8 +7481,8 @@ function enter (vnode, toggleDisplay) {
var context = activeInstance;
var transitionNode = activeInstance.$vnode;
while (transitionNode && transitionNode.parent) {
transitionNode = transitionNode.parent;
context = transitionNode.context;
transitionNode = transitionNode.parent;
}
var isAppear = !context._isMounted || !vnode.isRootInsert;

4
dist/vue.runtime.common.prod.js

File diff suppressed because one or more lines are too long

52
dist/vue.runtime.esm.js

@ -1,5 +1,5 @@
/*!
* Vue.js v2.6.8
* Vue.js v2.6.9
* (c) 2014-2019 Evan You
* Released under the MIT License.
*/
@ -1852,10 +1852,11 @@ function invokeWithErrorHandling (
var res;
try {
res = args ? handler.apply(context, args) : handler.call(context);
if (res && !res._isVue && isPromise(res)) {
if (res && !res._isVue && isPromise(res) && !res._handled) {
res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// issue #9511
// reassign to res to avoid catch triggering multiple times when nested calls
res = res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// avoid catch triggering multiple times when nested calls
res._handled = true;
}
} catch (e) {
handleError(e, vm, info);
@ -2541,6 +2542,7 @@ function normalizeScopedSlots (
) {
var res;
var isStable = slots ? !!slots.$stable : true;
var hasNormalSlots = Object.keys(normalSlots).length > 0;
var key = slots && slots.$key;
if (!slots) {
res = {};
@ -2552,7 +2554,8 @@ function normalizeScopedSlots (
prevSlots &&
prevSlots !== emptyObject &&
key === prevSlots.$key &&
Object.keys(normalSlots).length === 0
!hasNormalSlots &&
!prevSlots.$hasNormal
) {
// fast path 2: stable scoped slots w/ no normal slots to proxy,
// only need to normalize once
@ -2578,6 +2581,7 @@ function normalizeScopedSlots (
}
def(res, '$stable', isStable);
def(res, '$key', key);
def(res, '$hasNormal', hasNormalSlots);
return res
}
@ -2587,8 +2591,10 @@ function normalizeScopedSlot(normalSlots, key, fn) {
res = res && typeof res === 'object' && !Array.isArray(res)
? [res] // single vnode
: normalizeChildren(res);
return res && res.length === 0
? undefined
return res && (
res.length === 0 ||
(res.length === 1 && res[0].isComment) // #9658
) ? undefined
: res
};
// this is a slot using the new v-slot syntax without scope. although it is
@ -2768,12 +2774,13 @@ function bindObjectProps (
: data.attrs || (data.attrs = {});
}
var camelizedKey = camelize(key);
if (!(key in hash) && !(camelizedKey in hash)) {
var hyphenatedKey = hyphenate(key);
if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
hash[key] = value[key];
if (isSync) {
var on = data.on || (data.on = {});
on[("update:" + camelizedKey)] = function ($event) {
on[("update:" + key)] = function ($event) {
value[key] = $event;
};
}
@ -3612,7 +3619,7 @@ function resolveAsyncComponent (
}
var owner = currentRenderingInstance;
if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
// already pending
factory.owners.push(owner);
}
@ -3621,7 +3628,7 @@ function resolveAsyncComponent (
return factory.loadingComp
}
if (!isDef(factory.owners)) {
if (owner && !isDef(factory.owners)) {
var owners = factory.owners = [owner];
var sync = true
@ -4238,10 +4245,15 @@ var getNow = Date.now;
// timestamp can either be hi-res (relative to page load) or low-res
// (relative to UNIX epoch), so in order to compare time we have to use the
// same timestamp type when saving the flush timestamp.
if (inBrowser && getNow() > document.createEvent('Event').timeStamp) {
// if the low-res timestamp which is bigger than the event timestamp
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
// and we need to use the hi-res version for event listeners as well.
if (
inBrowser &&
window.performance &&
typeof performance.now === 'function' &&
document.createEvent('Event').timeStamp <= performance.now()
) {
// if the event timestamp is bigger than the hi-res timestamp
// (which is evaluated AFTER) it means the event is using a lo-res timestamp,
// and we need to use the lo-res version for event listeners as well.
getNow = function () { return performance.now(); };
}
@ -5415,7 +5427,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
value: FunctionalRenderContext
});
Vue.version = '2.6.8';
Vue.version = '2.6.9';
/* */
@ -6870,8 +6882,10 @@ function add$1 (
e.target === e.currentTarget ||
// event is fired after handler attachment
e.timeStamp >= attachedTimestamp ||
// #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState
e.timeStamp === 0 ||
// bail for environments that have buggy event.timeStamp implementations
// #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
// #9681 QtWebEngine event.timeStamp is negative value
e.timeStamp <= 0 ||
// #9448 bail if event is fired in another document in a multi-page
// electron/nw.js app, since event.timeStamp will be using a different
// starting reference
@ -7489,8 +7503,8 @@ function enter (vnode, toggleDisplay) {
var context = activeInstance;
var transitionNode = activeInstance.$vnode;
while (transitionNode && transitionNode.parent) {
transitionNode = transitionNode.parent;
context = transitionNode.context;
transitionNode = transitionNode.parent;
}
var isAppear = !context._isMounted || !vnode.isRootInsert;

52
dist/vue.runtime.js

@ -1,5 +1,5 @@
/*!
* Vue.js v2.6.8
* Vue.js v2.6.9
* (c) 2014-2019 Evan You
* Released under the MIT License.
*/
@ -1852,10 +1852,11 @@
var res;
try {
res = args ? handler.apply(context, args) : handler.call(context);
if (res && !res._isVue && isPromise(res)) {
if (res && !res._isVue && isPromise(res) && !res._handled) {
res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// issue #9511
// reassign to res to avoid catch triggering multiple times when nested calls
res = res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// avoid catch triggering multiple times when nested calls
res._handled = true;
}
} catch (e) {
handleError(e, vm, info);
@ -2539,6 +2540,7 @@
) {
var res;
var isStable = slots ? !!slots.$stable : true;
var hasNormalSlots = Object.keys(normalSlots).length > 0;
var key = slots && slots.$key;
if (!slots) {
res = {};
@ -2550,7 +2552,8 @@
prevSlots &&
prevSlots !== emptyObject &&
key === prevSlots.$key &&
Object.keys(normalSlots).length === 0
!hasNormalSlots &&
!prevSlots.$hasNormal
) {
// fast path 2: stable scoped slots w/ no normal slots to proxy,
// only need to normalize once
@ -2576,6 +2579,7 @@
}
def(res, '$stable', isStable);
def(res, '$key', key);
def(res, '$hasNormal', hasNormalSlots);
return res
}
@ -2585,8 +2589,10 @@
res = res && typeof res === 'object' && !Array.isArray(res)
? [res] // single vnode
: normalizeChildren(res);
return res && res.length === 0
? undefined
return res && (
res.length === 0 ||
(res.length === 1 && res[0].isComment) // #9658
) ? undefined
: res
};
// this is a slot using the new v-slot syntax without scope. although it is
@ -2766,12 +2772,13 @@
: data.attrs || (data.attrs = {});
}
var camelizedKey = camelize(key);
if (!(key in hash) && !(camelizedKey in hash)) {
var hyphenatedKey = hyphenate(key);
if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
hash[key] = value[key];
if (isSync) {
var on = data.on || (data.on = {});
on[("update:" + camelizedKey)] = function ($event) {
on[("update:" + key)] = function ($event) {
value[key] = $event;
};
}
@ -3606,7 +3613,7 @@
}
var owner = currentRenderingInstance;
if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
// already pending
factory.owners.push(owner);
}
@ -3615,7 +3622,7 @@
return factory.loadingComp
}
if (!isDef(factory.owners)) {
if (owner && !isDef(factory.owners)) {
var owners = factory.owners = [owner];
var sync = true
@ -4230,10 +4237,15 @@
// timestamp can either be hi-res (relative to page load) or low-res
// (relative to UNIX epoch), so in order to compare time we have to use the
// same timestamp type when saving the flush timestamp.
if (inBrowser && getNow() > document.createEvent('Event').timeStamp) {
// if the low-res timestamp which is bigger than the event timestamp
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
// and we need to use the hi-res version for event listeners as well.
if (
inBrowser &&
window.performance &&
typeof performance.now === 'function' &&
document.createEvent('Event').timeStamp <= performance.now()
) {
// if the event timestamp is bigger than the hi-res timestamp
// (which is evaluated AFTER) it means the event is using a lo-res timestamp,
// and we need to use the lo-res version for event listeners as well.
getNow = function () { return performance.now(); };
}
@ -5399,7 +5411,7 @@
value: FunctionalRenderContext
});
Vue.version = '2.6.8';
Vue.version = '2.6.9';
/* */
@ -6852,8 +6864,10 @@
e.target === e.currentTarget ||
// event is fired after handler attachment
e.timeStamp >= attachedTimestamp ||
// #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState
e.timeStamp === 0 ||
// bail for environments that have buggy event.timeStamp implementations
// #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
// #9681 QtWebEngine event.timeStamp is negative value
e.timeStamp <= 0 ||
// #9448 bail if event is fired in another document in a multi-page
// electron/nw.js app, since event.timeStamp will be using a different
// starting reference
@ -7471,8 +7485,8 @@
var context = activeInstance;
var transitionNode = activeInstance.$vnode;
while (transitionNode && transitionNode.parent) {
transitionNode = transitionNode.parent;
context = transitionNode.context;
transitionNode = transitionNode.parent;
}
var isAppear = !context._isMounted || !vnode.isRootInsert;

4
dist/vue.runtime.min.js

File diff suppressed because one or more lines are too long

44
packages/vue-server-renderer/basic.js

@ -2006,10 +2006,11 @@
var res;
try {
res = args ? handler.apply(context, args) : handler.call(context);
if (res && !res._isVue && isPromise(res)) {
if (res && !res._isVue && isPromise(res) && !res._handled) {
res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// issue #9511
// reassign to res to avoid catch triggering multiple times when nested calls
res = res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// avoid catch triggering multiple times when nested calls
res._handled = true;
}
} catch (e) {
handleError(e, vm, info);
@ -4131,7 +4132,7 @@
text = preserveWhitespace ? ' ' : '';
}
if (text) {
if (whitespaceOption === 'condense') {
if (!inPre && whitespaceOption === 'condense') {
// condense consecutive whitespaces into single space
text = text.replace(whitespaceRE, ' ');
}
@ -7335,12 +7336,13 @@
: data.attrs || (data.attrs = {});
}
var camelizedKey = camelize(key);
if (!(key in hash) && !(camelizedKey in hash)) {
var hyphenatedKey = hyphenate(key);
if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
hash[key] = value[key];
if (isSync) {
var on = data.on || (data.on = {});
on[("update:" + camelizedKey)] = function ($event) {
on[("update:" + key)] = function ($event) {
value[key] = $event;
};
}
@ -7570,6 +7572,7 @@
) {
var res;
var isStable = slots ? !!slots.$stable : true;
var hasNormalSlots = Object.keys(normalSlots).length > 0;
var key = slots && slots.$key;
if (!slots) {
res = {};
@ -7581,7 +7584,8 @@
prevSlots &&
prevSlots !== emptyObject &&
key === prevSlots.$key &&
Object.keys(normalSlots).length === 0
!hasNormalSlots &&
!prevSlots.$hasNormal
) {
// fast path 2: stable scoped slots w/ no normal slots to proxy,
// only need to normalize once
@ -7607,6 +7611,7 @@
}
def(res, '$stable', isStable);
def(res, '$key', key);
def(res, '$hasNormal', hasNormalSlots);
return res
}
@ -7616,8 +7621,10 @@
res = res && typeof res === 'object' && !Array.isArray(res)
? [res] // single vnode
: normalizeChildren(res);
return res && res.length === 0
? undefined
return res && (
res.length === 0 ||
(res.length === 1 && res[0].isComment) // #9658
) ? undefined
: res
};
// this is a slot using the new v-slot syntax without scope. although it is
@ -7681,7 +7688,7 @@
}
var owner = currentRenderingInstance;
if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
// already pending
factory.owners.push(owner);
}
@ -7690,7 +7697,7 @@
return factory.loadingComp
}
if (!isDef(factory.owners)) {
if (owner && !isDef(factory.owners)) {
var owners = factory.owners = [owner];
var sync = true
@ -7952,19 +7959,16 @@
/* */
// Async edge case fix requires storing an event listener's attach timestamp.
var getNow = Date.now;
// Determine what event timestamp the browser is using. Annoyingly, the
// timestamp can either be hi-res (relative to page load) or low-res
// (relative to UNIX epoch), so in order to compare time we have to use the
// same timestamp type when saving the flush timestamp.
if (inBrowser && getNow() > document.createEvent('Event').timeStamp) {
// if the low-res timestamp which is bigger than the event timestamp
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
// and we need to use the hi-res version for event listeners as well.
getNow = function () { return performance.now(); };
}
if (
inBrowser &&
window.performance &&
typeof performance.now === 'function' &&
document.createEvent('Event').timeStamp <= performance.now()
) ;
/**
* Queue a kept-alive component that was activated during patch.

48
packages/vue-server-renderer/build.dev.js

@ -2008,10 +2008,11 @@ function invokeWithErrorHandling (
var res;
try {
res = args ? handler.apply(context, args) : handler.call(context);
if (res && !res._isVue && isPromise(res)) {
if (res && !res._isVue && isPromise(res) && !res._handled) {
res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// issue #9511
// reassign to res to avoid catch triggering multiple times when nested calls
res = res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// avoid catch triggering multiple times when nested calls
res._handled = true;
}
} catch (e) {
handleError(e, vm, info);
@ -3881,7 +3882,7 @@ function parse (
text = preserveWhitespace ? ' ' : '';
}
if (text) {
if (whitespaceOption === 'condense') {
if (!inPre && whitespaceOption === 'condense') {
// condense consecutive whitespaces into single space
text = text.replace(whitespaceRE, ' ');
}
@ -7085,12 +7086,13 @@ function bindObjectProps (
: data.attrs || (data.attrs = {});
}
var camelizedKey = camelize(key);
if (!(key in hash) && !(camelizedKey in hash)) {
var hyphenatedKey = hyphenate(key);
if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
hash[key] = value[key];
if (isSync) {
var on = data.on || (data.on = {});
on[("update:" + camelizedKey)] = function ($event) {
on[("update:" + key)] = function ($event) {
value[key] = $event;
};
}
@ -7320,6 +7322,7 @@ function normalizeScopedSlots (
) {
var res;
var isStable = slots ? !!slots.$stable : true;
var hasNormalSlots = Object.keys(normalSlots).length > 0;
var key = slots && slots.$key;
if (!slots) {
res = {};
@ -7331,7 +7334,8 @@ function normalizeScopedSlots (
prevSlots &&
prevSlots !== emptyObject &&
key === prevSlots.$key &&
Object.keys(normalSlots).length === 0
!hasNormalSlots &&
!prevSlots.$hasNormal
) {
// fast path 2: stable scoped slots w/ no normal slots to proxy,
// only need to normalize once
@ -7357,6 +7361,7 @@ function normalizeScopedSlots (
}
def(res, '$stable', isStable);
def(res, '$key', key);
def(res, '$hasNormal', hasNormalSlots);
return res
}
@ -7366,8 +7371,10 @@ function normalizeScopedSlot(normalSlots, key, fn) {
res = res && typeof res === 'object' && !Array.isArray(res)
? [res] // single vnode
: normalizeChildren(res);
return res && res.length === 0
? undefined
return res && (
res.length === 0 ||
(res.length === 1 && res[0].isComment) // #9658
) ? undefined
: res
};
// this is a slot using the new v-slot syntax without scope. although it is
@ -7431,7 +7438,7 @@ function resolveAsyncComponent (
}
var owner = currentRenderingInstance;
if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
// already pending
factory.owners.push(owner);
}
@ -7440,7 +7447,7 @@ function resolveAsyncComponent (
return factory.loadingComp
}
if (!isDef(factory.owners)) {
if (owner && !isDef(factory.owners)) {
var owners = factory.owners = [owner];
var sync = true
@ -7702,19 +7709,16 @@ function callHook (vm, hook) {
/* */
// Async edge case fix requires storing an event listener's attach timestamp.
var getNow = Date.now;
// Determine what event timestamp the browser is using. Annoyingly, the
// timestamp can either be hi-res (relative to page load) or low-res
// (relative to UNIX epoch), so in order to compare time we have to use the
// same timestamp type when saving the flush timestamp.
if (inBrowser && getNow() > document.createEvent('Event').timeStamp) {
// if the low-res timestamp which is bigger than the event timestamp
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
// and we need to use the hi-res version for event listeners as well.
getNow = function () { return performance.now(); };
}
if (
inBrowser &&
window.performance &&
typeof performance.now === 'function' &&
document.createEvent('Event').timeStamp <= performance.now()
) ;
/**
* Queue a kept-alive component that was activated during patch.
@ -8803,8 +8807,8 @@ function mapIdToFile (id, clientManifest) {
if (fileIndices) {
fileIndices.forEach(function (index) {
var file = clientManifest.all[index];
// only include async files or non-js assets
if (clientManifest.async.indexOf(file) > -1 || !(/\.js($|\?)/.test(file))) {
// only include async files or non-js, non-css assets
if (clientManifest.async.indexOf(file) > -1 || !(/\.(js|css)($|\?)/.test(file))) {
files.push(file);
}
});

2
packages/vue-server-renderer/build.prod.js

File diff suppressed because one or more lines are too long

2
packages/vue-server-renderer/package.json

@ -1,6 +1,6 @@
{
"name": "vue-server-renderer",
"version": "2.6.8",
"version": "2.6.9",
"description": "server renderer for Vue 2.0",
"main": "index.js",
"types": "types/index.d.ts",

2
packages/vue-template-compiler/browser.js

@ -3055,7 +3055,7 @@
text = preserveWhitespace ? ' ' : '';
}
if (text) {
if (whitespaceOption === 'condense') {
if (!inPre && whitespaceOption === 'condense') {
// condense consecutive whitespaces into single space
text = text.replace(whitespaceRE, ' ');
}

2
packages/vue-template-compiler/build.js

@ -2675,7 +2675,7 @@ function parse (
text = preserveWhitespace ? ' ' : '';
}
if (text) {
if (whitespaceOption === 'condense') {
if (!inPre && whitespaceOption === 'condense') {
// condense consecutive whitespaces into single space
text = text.replace(whitespaceRE, ' ');
}

2
packages/vue-template-compiler/package.json

@ -1,6 +1,6 @@
{
"name": "vue-template-compiler",
"version": "2.6.8",
"version": "2.6.9",
"description": "template compiler for Vue 2.0",
"main": "index.js",
"unpkg": "browser.js",

Loading…
Cancel
Save