- 헬퍼 동작 그대로(풀이 함수 본문은 옮겨 담음) · 제품 코드 안 고침 - 확인: 이 묶음 헬퍼를 쓰는 시험 428 개 전 417 통과 → 후 417 통과 (시험별 junit 대조 · 어긋남 0) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
49 lines
2.3 KiB
JavaScript
49 lines
2.3 KiB
JavaScript
/* M02 일위대가 사전조합 층(134-3) 헬퍼 — `M02_MasterTemplete_Api_Fetch.ts` 명시 owner 길 ·
|
||
* `M02_MasterTemplete_UI_Side_Precombo.ts` `buildPrecomboFolders`(158-1 자유 폴더) 를 트랜스파일해 Node 로 돌림 ·
|
||
* `precomboClasses`(134-5 · 구조물군 › 종류 + 공통) · fetch 대역이 부른 주소를 모음 ·
|
||
* stdin = {rows, def?, view?} · stdout = {urls, tree, classes} JSON. */
|
||
const fs = require("fs");
|
||
const path = require("path");
|
||
const { makeLoader } = require("./helper_ts_stub_loader.cjs");
|
||
|
||
const ROOT = path.join(__dirname, "..", "..");
|
||
const STUBS = { "@config/config_frontend": { API_BASE_URL: "/api" } };
|
||
const stub = new Proxy({}, { get: (_t, k) => (k === "currentLanguageIndex" ? () => 0 : () => {}) });
|
||
const { loadTs } = makeLoader({
|
||
root: ROOT,
|
||
requireFor: (full) => (request) => {
|
||
if (STUBS[request]) return STUBS[request];
|
||
if (request.startsWith(".") && !request.endsWith(".css"))
|
||
return loadTs(`${path.resolve(path.dirname(full), request)}.ts`);
|
||
return stub;
|
||
},
|
||
});
|
||
|
||
const urls = [];
|
||
global.fetch = async (url) => {
|
||
urls.push(url);
|
||
return { status: 200, ok: true, json: async () => ({ 양식: [] }) };
|
||
};
|
||
|
||
(async () => {
|
||
const input = JSON.parse(fs.readFileSync(0, "utf8"));
|
||
const api = loadTs(path.join(ROOT, "M02_MasterTemplete", "M02_MasterTemplete_Api_Fetch.ts"));
|
||
const side = loadTs(
|
||
path.join(ROOT, "M02_MasterTemplete", "M02_MasterTemplete_UI_Side_Precombo.ts"),
|
||
);
|
||
api.setActiveLayer("personal", "7/99"); // 페이지 = 남의 개인을 보는 중
|
||
await api.readTemplate("personal", "labor", "x1", null); // 페이지 층 = 그 사람
|
||
await api.readTemplate("personal", "precombo", "SC-000001", null, null); // 사전조합 = 내 개인
|
||
await api.listTemplates("company", null, "8"); // 사전조합 = 볼 회사
|
||
await api.saveTemplate("system", "precombo", "SC-000002", null, "v", {}, null);
|
||
const shape = (f) => ({
|
||
path: f.path,
|
||
count: side.docCount(f),
|
||
docs: f.docs.map((r) => r.이름),
|
||
folders: f.folders.map(shape),
|
||
});
|
||
const tree = shape(side.buildPrecomboFolders(input.rows, input.view ?? { 폴더: [], 자리: {} }));
|
||
const classes = input.def ? side.precomboClasses(input.def) : null; // 134-5
|
||
process.stdout.write(JSON.stringify({ urls, tree, classes }));
|
||
})();
|