Fix cached inline modules (#2038)

* Fix cached inline modules

* Adds a changeset
This commit is contained in:
Matthew Phillips 2021-11-29 14:23:14 -05:00 committed by GitHub
parent fad6bd0936
commit 341ec3cdfd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 2 deletions

View file

@ -0,0 +1,7 @@
---
'astro': patch
---
Fixes dev errors in hydrated components
The errors would occur when there was state changes in hydrated components. This only occurs in dev but does result in the hydrated component not working. This fixes the underlying issue.

View file

@ -56982,8 +56982,10 @@ const devHtmlHook = async (html, { path: htmlPath, server, originalUrl }) => {
.join(''); .join('');
// add HTML Proxy to Map // add HTML Proxy to Map
addToHTMLProxyCache(config, url, scriptModuleIndex, contents); addToHTMLProxyCache(config, url, scriptModuleIndex, contents);
// inline js module. convert to src="proxy" const modulePath = `${config.base + htmlPath.slice(1)}?html-proxy&index=${scriptModuleIndex}.js`;
s.overwrite(node.loc.start.offset, node.loc.end.offset, `<script type="module" src="${config.base + url.slice(1)}?html-proxy&index=${scriptModuleIndex}.js"></script>`); // invalidate the module so the newly cached contents will be served
server === null || server === void 0 ? void 0 : server.moduleGraph.invalidateId(config.root + modulePath);
s.overwrite(node.loc.start.offset, node.loc.end.offset, `<script type="module" src="${modulePath}"></script>`);
} }
} }
// elements with [href/src] attrs // elements with [href/src] attrs
@ -57113,6 +57115,12 @@ class ModuleGraph {
mod.ssrTransformResult = null; mod.ssrTransformResult = null;
invalidateSSRModule(mod, seen); invalidateSSRModule(mod, seen);
} }
invalidateId(id) {
const mod = this.idToModuleMap.get(id);
if (mod) {
this.invalidateModule(mod);
}
}
invalidateAll() { invalidateAll() {
const seen = new Set(); const seen = new Set();
this.idToModuleMap.forEach((mod) => { this.idToModuleMap.forEach((mod) => {