- 서버 `M02_Precombo_Folders` — 종류 인자(precombo · sangeun · 자리 파일 `{종류}_폴더.json`) · 폴더 지우기 = 안의 문서 파일째(모두 검사 뒤 한 번에 · 바깥에서 쓰면 409 + 그 이름 · 지우는 것끼리 참조는 됨) · 문서 지우기 · `대상` 여럿 옮기기 · 지우기 · 붙여넣기(새 키 · 본뜬 = 원본 · 같은 폴더 이름 「(1)」)
- 길 `M02_Labor_Router` — `/layers/{층}/{종류}-tree` GET · POST · `/paste`(옛 precombo-tree 주소 그대로)
- 화면 새 `UI_Side_Library.ts` — 일위대가 · 단가산출 두 칸이 같이 쓰는 서고 칸(Ctrl · Shift 고름 · 오른쪽 클릭 · Ctrl+C · Ctrl+V · Delete · 지우기 확인 창 · 끌어 옮기기 여럿) · `UI_Side_Precombo.ts` = 일위대가 몫만 넘김
- `Api_Fetch` — 나무 부르기 종류 인자 · `pasteLibraryTree` · `newLibrary` 종류 sangeun
- 시험 — 새 `test_716_4_library_folders.py`(임시 storage) · 낡은 것 고침: `test_m02_precombo_folders`(빈 폴더만 지움 → 안에 든 것째 · 「없는 사전조합」 → 「없는 문서」 · FILE → file_of) · `test_m02_precombo_scope` + helper(나무 짜기 · 서고 길 글이 Library.ts 로 옮김)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
50 lines
2.4 KiB
JavaScript
50 lines
2.4 KiB
JavaScript
/* M02 일위대가 사전조합 층(134-3) 헬퍼 — `M02_MasterTemplete_Api_Fetch.ts` 명시 owner 길 ·
|
||
* `M02_MasterTemplete_UI_Side_Library.ts` `buildLibraryFolders`(158-1 자유 폴더 · 716-4) 를 트랜스파일해 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"),
|
||
);
|
||
const lib = loadTs(path.join(ROOT, "M02_MasterTemplete", "M02_MasterTemplete_UI_Side_Library.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: lib.docCount(f),
|
||
docs: f.docs.map((r) => r.이름),
|
||
folders: f.folders.map(shape),
|
||
});
|
||
const tree = shape(lib.buildLibraryFolders(input.rows, input.view ?? { 폴더: [], 자리: {} }));
|
||
const classes = input.def ? side.precomboClasses(input.def) : null; // 134-5
|
||
process.stdout.write(JSON.stringify({ urls, tree, classes }));
|
||
})();
|