diff --git a/src/manifests.js b/src/manifests.js index 47ea557e21928d8d5c042199f2c0dbf452d55603..03dc8ccfa88ff3453e398ce3076b53a87cf2c632 100644 --- a/src/manifests.js +++ b/src/manifests.js @@ -32,7 +32,14 @@ export const loadViteManifests = (() => { })) // combine all manifests by keys. With duplicates, last wins - return viteManifests.reduce((memo, manifest) => Object.assign(memo, manifest), {}) + const viteManifest = viteManifests.reduce((memo, manifest) => Object.assign(memo, manifest), {}) + Object.defineProperty(viteManifest, '__hash__', { + enumerable: false, + writable: true + }) + viteManifest.__hash__ = hash(viteManifests) + + return viteManifest } return function loadViteManifests ({ useCache = true } = {}) { @@ -42,19 +49,15 @@ export const loadViteManifests = (() => { cachePromise = reload() cachePromise.then(manifests => { // update cache promise - const newHash = hash(manifests) + const newHash = manifests.__hash__ if (newHash !== lastHash) { if (lastHash) { const deps = viteManifestToDeps(manifests) // asynchronously rewarm the cache fileCache.warmUp(manifests, deps) } + lastHash = newHash - Object.defineProperty(manifests, '__hash__', { - enumerable: false, - writable: true - }) - manifests.__hash__ = newHash } }) lastCacheTime = +new Date() @@ -82,13 +85,13 @@ export function viteToOxManifest (viteManifests) { } export const getOxManifests = (() => { - let prevViteManifest + let prevHash let oxManifestCache return async function getOxManifests () { const viteManifest = await loadViteManifests() - if (viteManifest !== prevViteManifest) { + if (viteManifest.__hash__ !== prevHash) { oxManifestCache = viteToOxManifest(viteManifest) - prevViteManifest = viteManifest + prevHash = viteManifest.__hash__ } return oxManifestCache } @@ -110,13 +113,13 @@ export function viteManifestToDeps (viteManifest) { } export const getDependencies = (() => { - let prevViteManifest + let prevHash let depCache return async function getDependencies () { const viteManifest = await loadViteManifests() - if (viteManifest !== prevViteManifest) { + if (viteManifest.__hash__ !== prevHash) { depCache = viteManifestToDeps(viteManifest) - prevViteManifest = viteManifest + prevHash = viteManifest.__hash__ } return depCache } @@ -129,17 +132,13 @@ export async function getCSSDependenciesFor (file) { } export const getVersion = (() => { - let prevViteManifest - let version + let prevHash let versionString return async function getVersion () { const viteManifest = await loadViteManifests() - if (viteManifest !== prevViteManifest) { - const newVersion = hash(viteManifest) - if (newVersion !== version) { - versionString = `${+new Date()}.${newVersion}` - version = newVersion - } + if (viteManifest.__hash__ !== prevHash) { + versionString = `${+new Date()}.${viteManifest.__hash__}` + prevHash = viteManifest.__hash__ } return versionString }