forked from phenom/healer-man
Release Healer Man 0.1.29
This commit is contained in:
1 parent
8c9809d3e0
commit
544c1bee91
120 files changed
+4363
-1036
No files matched your search
@@ -0,0 +1,38 @@
|
||||
import { build } from "esbuild";
|
||||
import { resolve, dirname } from "node:path";
|
||||
import { readFileSync, readdirSync } from "node:fs";
|
||||
|
||||
// A private copy of the existing engine keeps dedicated matches and offline
|
||||
// practice isolated from the React player's stores. No second spell interpreter.
|
||||
await build({
|
||||
entryPoints: ["scripts/arena-pipeline/combat-runtime.ts"],
|
||||
outfile: "server/generated/arena-combat-runtime.mjs",
|
||||
bundle: true,
|
||||
format: "esm",
|
||||
platform: "neutral",
|
||||
mainFields: ["module", "main"],
|
||||
target: "es2022",
|
||||
// Escape catalog line breaks in string literals, preserving tooltip text
|
||||
// without generating source lines that end in whitespace.
|
||||
supported: { "template-literal": false },
|
||||
minify: true,
|
||||
define: { "import.meta.env.MODE": '"test"', "import.meta.env.DEV": "false", "import.meta.env.BASE_URL": '"/"', "process.env.NODE_ENV": '"production"' },
|
||||
plugins: [{
|
||||
name: "arena-engine-host",
|
||||
setup(builder) {
|
||||
builder.onLoad({ filter: /coaAbilityCatalogLoader\.ts$/ }, ({ path }) => {
|
||||
const paths = readdirSync(resolve(dirname(path), "generated/coaAbilities")).filter((name) => name.endsWith(".json"))
|
||||
.map((name) => `./generated/coaAbilities/${name}`);
|
||||
return { contents: readFileSync(path, "utf8").replace(/import\.meta\.glob<[^>]+>\([^;]+\)/, `{${paths.map((name) => `${JSON.stringify(name)}: () => import(${JSON.stringify(name)})`).join(",")}}`), loader: "ts" };
|
||||
});
|
||||
builder.onResolve({ filter: /^zustand$/ }, () => ({ path: resolve("scripts/arena-pipeline/runtime-store.ts") }));
|
||||
builder.onResolve({ filter: /^\.\/store$/ }, ({ importer }) => importer.endsWith("combatStore.ts") ? ({ path: "game-store", namespace: "arena-host" }) : undefined);
|
||||
builder.onResolve({ filter: /^\.\/dungeonEncounterRuntime$/ }, ({ importer }) => importer.endsWith("combatStore.ts") ? ({ path: "encounter", namespace: "arena-host" }) : undefined);
|
||||
builder.onResolve({ filter: /^\.\/onlineSessionRuntime$/ }, ({ importer }) => importer.endsWith("combatStore.ts") ? ({ path: "online", namespace: "arena-host" }) : undefined);
|
||||
builder.onLoad({ filter: /.*/, namespace: "arena-host" }, ({ path }) => ({ contents: path === "game-store"
|
||||
? 'export const useGameStore = { getState: () => ({ gameMode: "arena" }) };'
|
||||
: path === "online" ? 'export const onlinePlayerRuntimeActors = () => []; export const onlinePlayerRuntimeActor = () => null;'
|
||||
: 'export const dispatchDungeonEncounterSignal = () => {}; export const dungeonEncounterStateMatches = () => false;', loader: "js" }));
|
||||
},
|
||||
}],
|
||||
});
|
||||
Reference in new issue
Block a user