mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
* Add a zig fmt action * add failing file * Setup prettier better * Update prettier-fmt.yml * Fail on error * Update prettier-fmt.yml * boop * boop2 * tar.gz * Update zig-fmt.yml * Update zig-fmt.yml * Update zig-fmt.yml * Update zig-fmt.yml * Update zig-fmt.yml * boop * Update prettier-fmt.yml * tag * newlines * multiline * fixup * Update zig-fmt.yml * update it * fixup * both * w * Update prettier-fmt.yml * prettier all the things * Update package.json * zig fmt * ❌ ✅ * bump * . * quotes * fix prettier ignore * once more * Update prettier-fmt.yml * Update fallback.ts * consistentcy --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
144 lines
4.1 KiB
JavaScript
144 lines
4.1 KiB
JavaScript
const fs = require("fs");
|
|
|
|
var count = 500;
|
|
|
|
var saveStack = process.argv.includes("--save-stack") || false;
|
|
var output = process.cwd() + "/output";
|
|
// fs.rmdirSync("output", { recursive: true });
|
|
try {
|
|
fs.mkdirSync(output, { recursive: true });
|
|
} catch (e) {}
|
|
|
|
for (var i = 0; i < count; i++) {
|
|
var file = output + "/file" + i + ".mjs";
|
|
fs.writeFileSync(
|
|
file,
|
|
new Array(Math.trunc(i * 0.25))
|
|
.fill("")
|
|
.map((k, j) => `export * from "./file${j}.mjs";`)
|
|
.join(";globalThis.exportCounter++;\n") +
|
|
`
|
|
export * from "./file${i + 1}.mjs";
|
|
export const hello${i} = "hello${i}";
|
|
${saveStack ? `globalThis.evaluationOrder.push("${file}");` : ""}
|
|
globalThis.counter++;
|
|
`,
|
|
"utf8",
|
|
);
|
|
var file2 = output + "/file" + i + ".js";
|
|
|
|
fs.writeFileSync(
|
|
file2,
|
|
new Array(Math.trunc(i * 0.25))
|
|
.fill("")
|
|
.map((k, j) => `Object.assign(module.exports, require("./file${j}.js"));`)
|
|
.join(";globalThis.exportCounter++;\n") +
|
|
`
|
|
Object.assign(module.exports, require("./file${i + 1}.js"));
|
|
module.exports.hello${i} = "hello${i}";
|
|
${saveStack ? `globalThis.evaluationOrder.push("${file2}");` : ""}
|
|
globalThis.counter++;
|
|
`,
|
|
"utf8",
|
|
);
|
|
}
|
|
|
|
fs.writeFileSync(
|
|
output + `/file${count}.mjs`,
|
|
`
|
|
export const THE_END = true;
|
|
${saveStack ? `globalThis.evaluationOrder.push("${output}/file${count}.mjs");` : ""}
|
|
`,
|
|
"utf8",
|
|
);
|
|
|
|
fs.writeFileSync(
|
|
output + `/file${count}.js`,
|
|
`
|
|
module.exports.THE_END = true;
|
|
${saveStack ? `globalThis.evaluationOrder.push("${output}/file${count}.js");` : ""}
|
|
`,
|
|
"utf8",
|
|
);
|
|
|
|
fs.writeFileSync(
|
|
import.meta.dir + "/import.mjs",
|
|
`${saveStack ? `globalThis.evaluationOrder = [];` : ""}
|
|
globalThis.counter=0; globalThis.exportCounter = 0;
|
|
console.time("import");
|
|
const Foo = await import('${output}/file0.mjs');
|
|
export const THE_END = Foo.THE_END;
|
|
console.timeEnd("import");
|
|
${saveStack ? `console.log(globalThis.evaluationOrder.join("\\n"));` : ""}
|
|
console.log("Loaded", globalThis.counter, "files", "totaling", new Intl.NumberFormat().format(globalThis.exportCounter), 'exports');`,
|
|
"utf8",
|
|
);
|
|
|
|
fs.writeFileSync(
|
|
"meta.require.mjs",
|
|
`${saveStack ? `globalThis.evaluationOrder = [];` : ""}
|
|
globalThis.counter=0; globalThis.exportCounter = 0;
|
|
console.time("import.meta.require");
|
|
const Foo = import.meta.require("${output}/file0.mjs");
|
|
export const THE_END = Foo.THE_END;
|
|
console.timeEnd("import.meta.require");
|
|
${saveStack ? `console.log(globalThis.evaluationOrder.join("\\n"));` : ""}
|
|
console.log("Loaded", globalThis.counter, "files", "totaling", new Intl.NumberFormat().format(globalThis.exportCounter), 'exports');`,
|
|
"utf8",
|
|
);
|
|
|
|
fs.writeFileSync(
|
|
"meta.require.cjs",
|
|
`${saveStack ? `globalThis.evaluationOrder = [];` : ""}
|
|
globalThis.counter=0; globalThis.exportCounter = 0;
|
|
await 1;
|
|
console.time("import.meta.require");
|
|
const Foo = import.meta.require("${output}/file0.js");
|
|
export const THE_END = Foo.THE_END;
|
|
console.timeEnd("import.meta.require");
|
|
${saveStack ? `console.log(globalThis.evaluationOrder.join("\\n"));` : ""}
|
|
console.log("Loaded", globalThis.counter, "files", "totaling", new Intl.NumberFormat().format(globalThis.exportCounter), 'exports');`,
|
|
"utf8",
|
|
);
|
|
|
|
fs.writeFileSync(
|
|
import.meta.dir + "/require.js",
|
|
`${saveStack ? `globalThis.evaluationOrder = [];` : ""}
|
|
globalThis.counter=0; globalThis.exportCounter = 0;
|
|
console.time("require");
|
|
const Foo = require("${output}/file0.js");
|
|
module.exports.THE_END = Foo.THE_END;
|
|
console.timeEnd("require");
|
|
${saveStack ? `console.log(globalThis.evaluationOrder.join("\\n"));` : ""}
|
|
console.log("Loaded", globalThis.counter, "files", "totaling", new Intl.NumberFormat().format(globalThis.exportCounter), 'exports');
|
|
`,
|
|
"utf8",
|
|
);
|
|
|
|
console.log(`
|
|
Created ${count} files in ${output}
|
|
|
|
${
|
|
saveStack
|
|
? "The evaluation order will be dumped to stdout"
|
|
: "To dump the evaluation order, run: \n bun run create.js -- --save-stack"
|
|
}
|
|
|
|
Run:
|
|
|
|
bun ./meta.require.mjs
|
|
bun ./meta.require.js
|
|
|
|
Run:
|
|
|
|
bun ./import.mjs
|
|
node ./import.mjs
|
|
deno run -A ./import.mjs
|
|
|
|
Run:
|
|
|
|
bun ./require.js
|
|
node ./require.js
|
|
|
|
`);
|