mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 02:14:01 +00:00
41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
import { readFileSync } from 'node:fs';
|
|
|
|
export const APPLICATION_TEMPLATES = Object.freeze([
|
|
'scene-chrome',
|
|
'cockpit',
|
|
'display-controls',
|
|
'command-dock',
|
|
'layer-panels',
|
|
'context',
|
|
'welcome',
|
|
'provider-settings',
|
|
'hud-loading',
|
|
]);
|
|
const allowed = new Set(APPLICATION_TEMPLATES);
|
|
|
|
/** Expand only known component templates; markers cannot name filesystem paths. */
|
|
export function expandApplicationHtml(html) {
|
|
return html.replace(
|
|
/^[ \t]*<!-- gev:template ([^\s]+) -->\r?\n?/gm,
|
|
(_, name) => {
|
|
if (!allowed.has(name))
|
|
throw new Error(`Unknown application template: ${name}`);
|
|
return readFileSync(
|
|
new URL(`../src/ui/templates/${name}.html`, import.meta.url),
|
|
'utf8',
|
|
);
|
|
},
|
|
);
|
|
}
|
|
|
|
/** Assemble static application markup before Vite processes scripts and assets. */
|
|
export function applicationHtmlPlugin() {
|
|
return {
|
|
name: 'application-component-templates',
|
|
transformIndexHtml: {
|
|
order: 'pre',
|
|
handler: expandApplicationHtml,
|
|
},
|
|
};
|
|
}
|