build: improve treeshakeability (#5682)
This commit is contained in:
@@ -31,7 +31,7 @@ declare module '@vue/reactivity' {
|
||||
}
|
||||
}
|
||||
|
||||
const rendererOptions = extend({ patchProp }, nodeOps)
|
||||
const rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps)
|
||||
|
||||
// lazy create the renderer - this makes core renderer logic tree-shakable
|
||||
// in case the user only imports reactivity utilities from Vue.
|
||||
|
||||
@@ -13,31 +13,32 @@ interface Invoker extends EventListener {
|
||||
type EventValue = Function | Function[]
|
||||
|
||||
// Async edge case fix requires storing an event listener's attach timestamp.
|
||||
let _getNow: () => number = Date.now
|
||||
|
||||
let skipTimestampCheck = false
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
// 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 (_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 = () => performance.now()
|
||||
const [_getNow, skipTimestampCheck] = /*#__PURE__*/ (() => {
|
||||
let _getNow = Date.now
|
||||
let skipTimestampCheck = false
|
||||
if (typeof window !== 'undefined') {
|
||||
// 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 (Date.now() > 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 = () => performance.now()
|
||||
}
|
||||
// #3485: Firefox <= 53 has incorrect Event.timeStamp implementation
|
||||
// and does not fire microtasks in between event propagation, so safe to exclude.
|
||||
const ffMatch = navigator.userAgent.match(/firefox\/(\d+)/i)
|
||||
skipTimestampCheck = !!(ffMatch && Number(ffMatch[1]) <= 53)
|
||||
}
|
||||
// #3485: Firefox <= 53 has incorrect Event.timeStamp implementation
|
||||
// and does not fire microtasks in between event propagation, so safe to exclude.
|
||||
const ffMatch = navigator.userAgent.match(/firefox\/(\d+)/i)
|
||||
skipTimestampCheck = !!(ffMatch && Number(ffMatch[1]) <= 53)
|
||||
}
|
||||
return [_getNow, skipTimestampCheck]
|
||||
})()
|
||||
|
||||
// To avoid the overhead of repeatedly calling performance.now(), we cache
|
||||
// and use the same timestamp for all event listeners attached in the same tick.
|
||||
let cachedNow: number = 0
|
||||
const p = Promise.resolve()
|
||||
const p = /*#__PURE__*/ Promise.resolve()
|
||||
const reset = () => {
|
||||
cachedNow = 0
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ export const svgNS = 'http://www.w3.org/2000/svg'
|
||||
|
||||
const doc = (typeof document !== 'undefined' ? document : null) as Document
|
||||
|
||||
const templateContainer = doc && doc.createElement('template')
|
||||
const templateContainer = doc && /*#__PURE__*/ doc.createElement('template')
|
||||
|
||||
export const nodeOps: Omit<RendererOptions<Node, Element>, 'patchProp'> = {
|
||||
insert: (child, parent, anchor) => {
|
||||
|
||||
Reference in New Issue
Block a user