Page MenuHomeSealhub

backend-ts-builder.ts
No OneTemporary

backend-ts-builder.ts

import glob from "tiny-glob";
import { build } from "esbuild";
import { promises as fs } from "fs";
import { relative } from "node:path";
import { embeddable_file_extensions } from "../embeddable-file-extensions.js";
import { generateCollections } from "../generate-collections.js";
import { generateComponents } from "../generate-components.js";
import { generateRoutes } from "../generate-routes.js";
import { Builder } from "./builder.js";
import { rewrite_asset_imports_plugin } from "../esbuild-plugins/rewrite-asset-imports.js";
import { load_assets_plugin } from "../esbuild-plugins/load-assets.js";
export class BackendTSBuilder extends Builder {
getName(): string {
return "backend-ts";
}
ownsFile(file_path: string) {
return (
(file_path.endsWith(".ts") || file_path.endsWith(".tsx")) &&
!file_path.endsWith("src/back/collections/collections.ts") &&
!file_path.endsWith("src/back/routes/routes.ts") &&
!file_path.endsWith("src/back/routes/urls.ts") &&
!file_path.endsWith("stimulus.ts") &&
!file_path.startsWith("src/front")
);
}
// eslint-disable-next-line @typescript-eslint/no-empty-function
async dispose(): Promise<void> {}
async _build(): Promise<void> {
await Promise.all([
generateCollections(),
generateRoutes(),
generateComponents(),
]);
const entryPoints = (
await glob(
`./src/back/**/*.{ts,tsx,${embeddable_file_extensions.join(
","
)}}`
)
).filter((path) => !path.includes(".#"));
const { metafile } = await build({
entryPoints,
sourcemap: true,
bundle: false,
jsxFactory: "TempstreamJSX.createElement",
jsxFragment: "TempstreamJSX.Fragment",
outdir: "./dist/back",
logLevel: "info",
platform: "node",
target: "es2022",
format: "esm",
loader: Object.fromEntries(
embeddable_file_extensions.map((ext) => ["." + ext, "js"])
),
plugins: [
rewrite_asset_imports_plugin(this.project_dir),
load_assets_plugin,
],
metafile: true,
});
await fs.writeFile(
relative(this.project_dir, "dist") + "/" + "back" + ".meta.json",
JSON.stringify(metafile)
);
}
}

File Metadata

Mime Type
text/x-java
Expires
Sat, Sep 20, 23:53 (1 d, 8 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
930895
Default Alt Text
backend-ts-builder.ts (2 KB)

Event Timeline