"use strict"; const fs = require("fs"); const path = require("path"); const websiteRoot = path.resolve(__dirname, "..", "website"); const releaseKey = "evidence-os-20260726-v27"; function walk(directory) { return fs.readdirSync(directory, { withFileTypes: true }).flatMap((entry) => { const target = path.join(directory, entry.name); return entry.isDirectory() ? walk(target) : [target]; }); } function attributeValue(source, expression) { const match = source.match(expression); return match ? match[1] : ""; } function canonicalNavigation(rootHref, activePage) { const links = [ ["projects", "Platform", "projects/"], ["research", "Research", "research/"], ["publications", "Evidence", "publications/"], ["diligence", "Diligence", "diligence/"], ["about", "Company", "about/"], ["diligence-cta", "Open diligence", "diligence/", "nav-cta"] ]; const markup = links.map(([id, label, route, className]) => { const current = id === activePage ? ' active" aria-current="page' : ""; const classes = className || current ? ` class="${className || ""}${current}"` : ""; return `${label}`; }).join(""); return ``; } function institutionalBrand(rootHref) { return `Aureon ZorzaResearch & evidence systems`; } function institutionalFooter(rootHref) { return ``; } let changedFiles = 0; const htmlFiles = walk(websiteRoot).filter((file) => file.toLowerCase().endsWith(".html")); for (const file of htmlFiles) { const original = fs.readFileSync(file, "utf8"); let source = original.replaceAll("evidence-os-20260726-v26", releaseKey); const relativeDirectory = path.relative(websiteRoot, path.dirname(file)); const depth = relativeDirectory ? relativeDirectory.split(path.sep).length : 0; const isErrorPage = path.basename(file).toLowerCase() === "404.html"; const rootHref = isErrorPage ? "/" : (depth ? "../".repeat(depth) : "./"); const activePage = attributeValue(source, /]*\bdata-page="([^"]+)"/i); source = source.replace( /()/gi, `$1?v=${releaseKey}$2` ); source = source.replace( /()/gi, "$1?v=ra-owner-20260726-v27$2" ); source = source.replace(/^[ \t]*\r?\n?/gim, ""); source = source.replace(/<\/head>/i, ` \n`); source = source.replace( /(\n`); } if (!/\n`); } source = source.replace(/]*\bid=)([^>]*)>/i, '
'); if (/