/* 443-2 헬퍼 — vite ssr 로 묶은 진짜 모듈(helper_443_2_entry.ts)을 부르고 결과를 JSON 한 벌로. * node helper_443_2_uphill_carry.mjs <묶음.mjs> */ import { pathToFileURL } from "node:url"; const store = () => { const m = new Map(); return { getItem: (k) => (m.has(k) ? m.get(k) : null), setItem: (k, v) => m.set(k, String(v)), removeItem: (k) => m.delete(k), key: (i) => [...m.keys()][i] ?? null, get length() { return m.size; }, clear: () => m.clear(), }; }; globalThis.window = globalThis; globalThis.sessionStorage = store(); globalThis.localStorage = store(); const any = new Proxy(function () {}, { get: (_t, k) => (k === Symbol.toPrimitive ? () => 0 : any), apply: () => any, construct: () => any, }); globalThis.document = any; globalThis.requestAnimationFrame = (run) => setTimeout(run, 0); const m = await import(pathToFileURL(process.argv[2]).href); const P = "p443"; const grid = (pairs) => pairs.map(([key, chainageM]) => ({ key, chainageM })); // 옛 노선 = 20 m 일반측점 넷 · 새 노선 = 같은 번호가 밀림(21.5 · 43) · grid:3(60 m) 사라짐 m.useStationKeyList( P, 7, grid([ ["end:BP", 0], ["grid:1", 20], ["grid:2", 40], ["grid:3", 60], ]), ); m.useStationKeyList( P, 8, grid([ ["end:BP", 0], ["grid:1", 21.5], ["grid:2", 43], ]), ); m.writeState("uphill", { "20.000": "right", "40.000": "left", "60.000": "right" }, P); const outside = m.carryChainageStates(P, 7, 8); const moved = m.readState("uphill", P); // 세션이 없으면 그대로(빈 칸 안 만듦) m.writeState("uphill", null, P); const outsideEmpty = m.carryChainageStates(P, 7, 8); process.stdout.write( JSON.stringify({ outside, moved, outsideEmpty, empty: m.readState("uphill", P) }), );