export function linkGc() { // TODO-APP: Remove this logic when Float has GC built-in in development. if (process.env.NODE_ENV !== "production") { const callback = (mutationList)=>{ for (const mutation of mutationList){ if (mutation.type === "childList") { for (const node of mutation.addedNodes){ if ("tagName" in node && node.tagName === "LINK") { var _link_dataset_precedence; const link = node; if ((_link_dataset_precedence = link.dataset.precedence) == null ? void 0 : _link_dataset_precedence.startsWith("next")) { const href = link.getAttribute("href"); if (href) { const [resource, version] = href.split("?v="); if (version) { const currentOrigin = window.location.origin; const allLinks = [ ...document.querySelectorAll('link[href^="' + resource + '"]'), // It's possible that the resource is a full URL or only pathname, // so we need to remove the alternative href as well. ...document.querySelectorAll('link[href^="' + (resource.startsWith(currentOrigin) ? resource.slice(currentOrigin.length) : currentOrigin + resource) + '"]') ]; for (const otherLink of allLinks){ var _otherLink_dataset_precedence; if ((_otherLink_dataset_precedence = otherLink.dataset.precedence) == null ? void 0 : _otherLink_dataset_precedence.startsWith("next")) { const otherHref = otherLink.getAttribute("href"); if (otherHref) { const [, otherVersion] = otherHref.split("?v="); if (!otherVersion || +otherVersion < +version) { // Delay the removal of the stylesheet to avoid FOUC // caused by `@font-face` rules, as they seem to be // a couple of ticks delayed between the old and new // styles being swapped even if the font is cached. setTimeout(()=>{ otherLink.remove(); }, 5); const preloadLink = document.querySelector('link[rel="preload"][as="style"][href="' + otherHref + '"]'); if (preloadLink) { preloadLink.remove(); } } } } } } } } } } } } }; // Create an observer instance linked to the callback function const observer = new MutationObserver(callback); observer.observe(document.head, { childList: true }); } } //# sourceMappingURL=app-link-gc.js.map