/* 166-1 CAD 칸 미리 넣음 옵션 줄 — 진짜 `structureOptionLines`(명세 · 정의 덧칸)를 Node 로 돌림. * 표준입력 { things: [{type_id, options}], types, definition } → 표준출력 { lines: string[][] } * (B07 번들 `B07_DesignDetail_Note_Options_Node` 와 같은 입력 · 같은 함수 — 짝 = test_166_1_note_options.py). */ const fs = require("fs"); const path = require("path"); const CATALOG = require("./helper_322_catalog_module.cjs"); // 구조물 표(322-1) const { makeLoader } = require("./helper_ts_stub_loader.cjs"); const ROOT = path.join(__dirname, "..", ".."); const { loadTs } = makeLoader({ root: ROOT, requireFor: (full) => (request) => { if (CATALOG.isCatalogRequest(request)) return CATALOG; // 구조물 표(본보기 · 323-7) if (request.startsWith(".")) return loadTs(path.join(path.dirname(full), `${request}.ts`)); return require(request); }, }); const { structureOptionLines } = loadTs( path.join(ROOT, "B05_Profile", "logic", "B05_Profile_UI_Structures_Balloon.ts"), ); const { withDefinition } = loadTs( path.join(ROOT, "B05_Profile", "logic", "B05_Profile_UI_Structures_Define.ts"), ); const input = JSON.parse(fs.readFileSync(0, "utf8")); const types = new Map( withDefinition(input.types ?? [], input.definition ?? null).map((type) => [type.type_id, type]), ); const lines = (input.things ?? []).map((thing) => structureOptionLines( { type_id: thing.type_id, options: thing.options ?? {} }, types.get(thing.type_id), ), ); process.stdout.write(JSON.stringify({ lines }));