/** * Child-process entry point for loading a TS/JS template module. * * Usage (via tsx): `tsx template-module-loader.js ` * * Writes serialized Extended JSON to stdout. Errors go to stderr with exit code 1. * Running in a subprocess isolates module evaluation from the wallet process. */ import { pathToFileURL } from "node:url"; import { serializeTemplate } from "@xo-cash/utils"; import type { XOTemplate } from "@xo-cash/types"; import { pickTemplateExport } from "./pick-template-export.js"; const templateFilePath = process.argv[2]; if (templateFilePath === undefined || templateFilePath.length === 0) { console.error("Usage: template-module-loader "); process.exit(1); } try { const moduleUrl = pathToFileURL(templateFilePath).href; const loadedModule = (await import(moduleUrl)) as Record; const template = pickTemplateExport(loadedModule); process.stdout.write(serializeTemplate(template as XOTemplate)); } catch (error) { const message = error instanceof Error ? error.message : String(error); console.error(`Failed to load template module: ${message}`); process.exit(1); }