aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/scripts/generate-classes.ts
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-18 19:06:29 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-18 19:06:29 -0700
commite3c2a95e5ff4e6c6b63839f4773cc3f5aeadddc8 (patch)
treeec2e43f3a33bdd784473022b00121f4c597c8e09 /src/bun.js/scripts/generate-classes.ts
parente45ddc086fe6b3e7a32aa45607f5e3d570998137 (diff)
downloadbun-e3c2a95e5ff4e6c6b63839f4773cc3f5aeadddc8.tar.gz
bun-e3c2a95e5ff4e6c6b63839f4773cc3f5aeadddc8.tar.zst
bun-e3c2a95e5ff4e6c6b63839f4773cc3f5aeadddc8.zip
Faster TextDecoder
Diffstat (limited to 'src/bun.js/scripts/generate-classes.ts')
-rw-r--r--src/bun.js/scripts/generate-classes.ts30
1 files changed, 23 insertions, 7 deletions
diff --git a/src/bun.js/scripts/generate-classes.ts b/src/bun.js/scripts/generate-classes.ts
index 3f8d4876b..eb93e6cd2 100644
--- a/src/bun.js/scripts/generate-classes.ts
+++ b/src/bun.js/scripts/generate-classes.ts
@@ -1,3 +1,4 @@
+import { unlinkSync } from "fs";
import { readdirSync } from "fs";
import { resolve } from "path";
import type { Field, ClassDefinition } from "./class-definitions";
@@ -1232,26 +1233,41 @@ function findClasses() {
const classes = findClasses();
-await Bun.write(`${import.meta.dir}/../bindings/generated_classes.zig`, [
+function writeAndUnlink(path, content) {
+ try {
+ unlinkSync(path);
+ } catch (e) {}
+ return Bun.write(path, content);
+}
+
+await writeAndUnlink(`${import.meta.dir}/../bindings/generated_classes.zig`, [
ZIG_GENERATED_CLASSES_HEADER,
+
...classes.map((a) => generateZig(a.name, a).trim()).join("\n"),
+ "\n",
+ `
+comptime {
+ ${classes.map((a) => `_ = ${className(a.name)};`).join("\n ")}
+}
+
+ `,
]);
-await Bun.write(`${import.meta.dir}/../bindings/ZigGeneratedClasses.h`, [
+await writeAndUnlink(`${import.meta.dir}/../bindings/ZigGeneratedClasses.h`, [
GENERATED_CLASSES_HEADER,
...classes.map((a) => generateHeader(a.name, a)),
GENERATED_CLASSES_FOOTER,
]);
-await Bun.write(`${import.meta.dir}/../bindings/ZigGeneratedClasses.cpp`, [
+await writeAndUnlink(`${import.meta.dir}/../bindings/ZigGeneratedClasses.cpp`, [
GENERATED_CLASSES_IMPL_HEADER,
...classes.map((a) => generateImpl(a.name, a)),
GENERATED_CLASSES_IMPL_FOOTER,
]);
-await Bun.write(
+await writeAndUnlink(
`${import.meta.dir}/../bindings/ZigGeneratedClasses+lazyStructureHeader.h`,
classes.map((a) => generateLazyClassStructureHeader(a.name, a)).join("\n")
);
-await Bun.write(
+await writeAndUnlink(
`${import.meta.dir}/../bindings/ZigGeneratedClasses+DOMClientIsoSubspaces.h`,
classes.map((a) =>
[
@@ -1263,7 +1279,7 @@ await Bun.write(
)
);
-await Bun.write(
+await writeAndUnlink(
`${import.meta.dir}/../bindings/ZigGeneratedClasses+DOMIsoSubspaces.h`,
classes.map((a) =>
[
@@ -1273,7 +1289,7 @@ await Bun.write(
)
);
-await Bun.write(
+await writeAndUnlink(
`${import.meta.dir}/../bindings/ZigGeneratedClasses+lazyStructureImpl.h`,
initLazyClasses(
classes.map((a) => generateLazyClassStructureImpl(a.name, a))