/* 354-2 종단 기준 숨김 — 진짜 `readVisible`(B05 유토곡선) · `normalizeVisibleBasis` · * `computeMassHaulSeries`(공용)를 잘라 돌려 JSON 으로 냄. * · 저장된 범례 = 종단 → 횡단으로 맞춤 · 분배 켬은 그대로 * · 기준 ["cross"] = 횡단 계열 하나 · 기본(묶음 단계) = 두 기준 그대로 */ const fs = require("fs"); const path = require("path"); const ts = require(path.join(__dirname, "..", "..", "config", "node_modules", "typescript")); const ROOT = path.join(__dirname, "..", ".."); const read = (...p) => fs.readFileSync(path.join(ROOT, ...p), "utf8"); const transpile = (code) => ts.transpileModule(code, { compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020 }, }).outputText; const block = (src, head) => { const at = src.indexOf(head); if (at < 0) throw new Error(`없음: ${head}`); return src.slice(at, src.indexOf("\n}", at) + 2).replace(/^export /, ""); }; const util = read("common_util", "common_util_mass_haul.ts"); const mass = read("B05_Profile", "B05_Profile_UI_Profile_MassHaul.ts"); let stored = null; const src = [ 'const SERIES_BASES = ["cross", "longitudinal"];', 'const DEFAULT_VISIBLE = ["cross", "balance"];', // 367-1 기본 = 횡단 + 분배 block(util, "export function normalizeVisibleBasis("), block(mass, "function readVisible(): Set {"), block(util, "export function computeMassHaulSeries("), ].join("\n"); const api = new Function( "readStateRaw", "designedSections", "crossAreaSamples", "longitudinalAreaSamples", "integrate", `${transpile(src)}; return { readVisible, computeMassHaulSeries };`, )( () => stored, (sections) => sections, () => [{ basis: "cross" }], () => [{ basis: "longitudinal" }], (samples) => ({ from: samples[0].basis }), ); const visible = (raw) => ((stored = raw), [...api.readVisible()].sort()); process.stdout.write( JSON.stringify({ longitudinal: visible('["longitudinal"]'), longitudinalBalance: visible('["longitudinal","balance"]'), cross: visible('["cross"]'), empty: visible(null), broken: visible("{"), crossOnly: api.computeMassHaulSeries({}, [], {}, undefined, ["cross"]).map((s) => s.key), both: api.computeMassHaulSeries({}, [], {}).map((s) => s.key), }), );