UNPKG

lemon-devkit

Version:

Lemon Serverless Micro-Service Platform for local development

94 lines 4.57 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.installProxyDocs = exports.upsertProxyReadmeBlock = exports.proxyReadmeBlock = void 0; /** * `install.ts` * - install/update proxy guide into consumer projects. * * @author Claire <claire@lemoncloud.io> * @date 2026-05-08 added proxy doc installer. * @copyright (C) lemoncloud.io 2026 - All Rights Reserved. */ const fs = __importStar(require("fs")); const path = __importStar(require("path")); const README_BLOCK_START = '<!-- lemon-devkit:proxy-doc:start -->'; const README_BLOCK_END = '<!-- lemon-devkit:proxy-doc:end -->'; const readText = (file) => fs.readFileSync(file, 'utf8'); const writeTextIfChanged = (file, next) => { const prev = fs.existsSync(file) ? readText(file) : ''; if (prev === next) return false; fs.mkdirSync(path.dirname(file), { recursive: true }); fs.writeFileSync(file, next, 'utf8'); return true; }; const proxyReadmeBlock = (docRelPath = 'docs/proxy-implementation-guide.md') => [ README_BLOCK_START, '## Proxy', '', '`lemon-devkit@0.0.12`부터 install/upgrade 시 consumer project의 `docs/proxy-implementation-guide.md`와 `README.md`에 proxy 구현 가이드를 자동 반영한다.', `Proxy 기능을 추가하거나 변경할 때는 [lemon-devkit proxy implementation guide](${docRelPath})를 먼저 확인한다.`, '`BackendProxy`, `ManagerProxy`, `guardProxy()` 계열 동작과 프로젝트 적용 절차는 이 문서 기준으로 맞춘다.', README_BLOCK_END, ].join('\n'); exports.proxyReadmeBlock = proxyReadmeBlock; const upsertProxyReadmeBlock = (readme, docRelPath = 'docs/proxy-implementation-guide.md') => { const block = (0, exports.proxyReadmeBlock)(docRelPath); const pattern = new RegExp(`${README_BLOCK_START}[\\s\\S]*?${README_BLOCK_END}`); if (pattern.test(readme)) return readme.replace(pattern, block); const trimmed = readme.trimEnd(); return `${trimmed}${trimmed ? '\n\n' : ''}${block}\n`; }; exports.upsertProxyReadmeBlock = upsertProxyReadmeBlock; const installProxyDocs = (options) => { const projectRoot = path.resolve(options.projectRoot); const packageRoot = path.resolve(options.packageRoot); const sourceDocPath = path.join(packageRoot, 'docs/proxy-implementation-guide.md'); const proxyDocPath = path.join(projectRoot, 'docs/proxy-implementation-guide.md'); const readmePath = path.join(projectRoot, 'README.md'); const overwrite = options.overwrite !== false; if (!fs.existsSync(sourceDocPath)) throw new Error(`proxy doc not found: ${sourceDocPath}`); const sourceDoc = readText(sourceDocPath); const copied = overwrite || !fs.existsSync(proxyDocPath) ? writeTextIfChanged(proxyDocPath, sourceDoc) : false; const prevReadme = fs.existsSync(readmePath) ? readText(readmePath) : `# ${path.basename(projectRoot)}\n`; const nextReadme = (0, exports.upsertProxyReadmeBlock)(prevReadme); const readmeUpdated = writeTextIfChanged(readmePath, nextReadme); return { copied, readmeUpdated, proxyDocPath, readmePath }; }; exports.installProxyDocs = installProxyDocs; //# sourceMappingURL=install.js.map