core/factories/server.factory.ts
core/factories/server.factory.ts is a file in Bane's Lab Build Scripts. 46 lines of code and 5 definitions.
import { SITE_SERVER_LABEL, SOCIAL_SERVER_LABEL } from "#configuration/strings/server.strings";
import { type ViteDevServer, createServer } from "vite";
import type { DevServer } from "#types/server.types";
import { absolutePath } from "@ssot/paths";
import { portOf } from "@ssot/secrets";
const VITE_CONFIG = "vite.config.ts";
export const devServers = function devServers(): readonly DevServer[] {
return [
{
args: ["--host"],
config: absolutePath("app.member", VITE_CONFIG),
label: SITE_SERVER_LABEL,
port: portOf("SITE_DEV_PORT"),
},
{
args: [],
config: absolutePath("app.social", VITE_CONFIG),
label: SOCIAL_SERVER_LABEL,
port: portOf("SOCIAL_DEV_PORT"),
},
];
};
export const releaseServer = async function releaseServer(server: ViteDevServer): Promise<void> {
for (const environment of Object.values(server.environments)) {
environment.moduleGraph.invalidateAll();
}
await server.close();
};
export const withModuleServer = async function withModuleServer<Result>(
root: string,
work: (server: ViteDevServer) => Promise<Result>,
): Promise<Result> {
const server = await createServer({
appType: "custom",
cacheDir: absolutePath("viteCache.modules"),
configFile: false,
logLevel: "error",
root,
server: { hmr: false, middlewareMode: true, ws: false },
});
try {
return await work(server);
} finally {
await releaseServer(server);
}
};