Files
Aislo/resources/tester/helper_511_a_mirror.cjs
T

22 lines
1.1 KiB
JavaScript

/* PLAN 511-A 거울 헬퍼 — 브라우저 자리가 부르는 TS 함수를 그 자리에서 트랜스파일해 Node 로 바로 부름.
* 입력 = argv[2] JSON `[{ mod: 뿌리 기준 경로, fn: export 이름, args: [...] }]` · 출력 = 표준출력 JSON 목록
* (Map · Set → 목록 = 서버 `plain` 과 같은 꼴). 짝 = `test_511_a_calc_server.py`(서버 창구 답과 견줌). */
const fs = require("fs");
const path = require("path");
const { makeLoader, memoryStorage } = require("./helper_ts_stub_loader.cjs");
const ROOT = path.join(__dirname, "..", "..");
globalThis.window = { sessionStorage: memoryStorage(), localStorage: memoryStorage() };
const { loadTs } = makeLoader({ root: ROOT });
const plain = (value) =>
JSON.parse(
JSON.stringify(value, (_key, item) =>
item instanceof Map ? [...item.entries()] : item instanceof Set ? [...item] : item,
) ?? "null",
);
const job = JSON.parse(fs.readFileSync(process.argv[2], "utf8"));
const out = job.map(({ mod, fn, args }) => plain(loadTs(path.join(ROOT, mod))[fn](...args)));
process.stdout.write(JSON.stringify(out));