Docs: Update benchmark for test 4

This commit is contained in:
github-actions[bot]
2025-11-27 02:15:29 +00:00
parent 984a4ceb5c
commit 9f48545253
9 changed files with 52 additions and 476 deletions

View File

@@ -1,75 +1,5 @@
async function bundleApp(entryFile, files) {
const Babel = await import('https://esm.sh/@babel/standalone');
const modules = {};
const visited = new Set();
const resolve = (from, to) => {
if (!to.startsWith('./') && !to.startsWith('../')) return to;
const fromParts = from.split('/').slice(0, -1);
const toParts = to.split('/');
for (const p of toParts) {
if (p === '..') fromParts.pop();
else if (p !== '.') fromParts.push(p);
}
return fromParts.join('/') || toParts[toParts.length - 1];
};
const extractDeps = code => {
const deps = [];
const re = /require\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
let m;
while ((m = re.exec(code))) deps.push(m[1]);
return deps;
};
const process = file => {
if (visited.has(file)) return;
visited.add(file);
if (!(file in files)) throw new Error(`Missing file: ${file}`);
const transformed = Babel.transform(files[file], {
presets: ['env'],
filename: file
}).code;
const deps = extractDeps(transformed);
const resolved = {};
for (const d of deps) {
const r = resolve(file, d);
resolved[d] = r;
process(r);
}
modules[file] = { code: transformed, deps: resolved };
};
process(entryFile);
const modulesObj = JSON.stringify(
Object.fromEntries(
Object.entries(modules).map(([k, v]) => [
k,
{ code: v.code, deps: v.deps }
])
)
);
return `(function(){
var __modules__=${modulesObj};
var __cache__={};
var __resolve__=function(f,t){
var d=__modules__[f].deps;
return d[t]||t;
};
var __require__=function(from,id){
var resolved=__resolve__(from,id);
if(__cache__[resolved])return __cache__[resolved].exports;
var mod=__modules__[resolved];
if(!mod)throw new Error("Cannot find module: "+resolved);
var module={exports:{}};
__cache__[resolved]=module;
var fn=new Function("require","module","exports",mod.code);
fn(function(id){return __require__(resolved,id);},module,module.exports);
return module.exports;
};
return __require__("","${entryFile}");
})()`;
async function renderTemplate(template, data) {
const { default: Handlebars } = await import('https://esm.sh/handlebars');
return Handlebars.compile(template)(data);
}
export default bundleApp;
export default renderTemplate;