UNPKG

@avleon/cli

Version:

> **🚧 This project is in active development.** > > It is **not stable** and **not ready** for live environments. > Use **only for testing, experimentation, or internal evaluation**. > > ####❗ Risks of using this in production: > > - 🔄 Breaking

74 lines (73 loc) 3.53 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createService = createService; const fs_1 = require("fs"); const path_1 = __importDefault(require("path")); const path_helper_1 = require("./helpers/path-helper"); const promises_1 = __importDefault(require("node:fs/promises")); const file_helper_1 = require("./helpers/file-helper"); const lodash_1 = require("lodash"); function capitalize(str) { if (!str) return ''; return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase(); } function lower(str) { return str.toLowerCase(); } const servicesStubs = { basic: path_helper_1.pathHelper.stubPath('services/basic-service.stub'), rest: path_helper_1.pathHelper.stubPath('services/basic-service.stub'), ormRest: path_helper_1.pathHelper.stubPath('services/orm-rest-service.stub') }; async function createService(name, options = { force: false, resource: false, prefix: true, rest: false, model: null, root: null }, p) { if (!name) { throw new Error("Service name not found. use --name or npx avleon make:service HomeService"); } if ((options.rest || options.resource) && !options.model) { throw new Error("Model not found. Plese ensure you pass --model or -m to create resouce service"); } // determine stub for generate let stubPath = servicesStubs.basic; if (options.rest) { stubPath = servicesStubs.rest; if (options.model) { stubPath = servicesStubs.ormRest; } } const rootPath = options.root ? 'src/' + options.root + '/' : 'src/services/'; if (name.split("/").length > 1) { if (!(0, fs_1.existsSync)(path_1.default.join(rootPath, name.split("/").splice(-1, 1).join("/")))) { await promises_1.default.mkdir(path_1.default.join(rootPath, name.replace('/' + file_helper_1.fh.filenameFromPath(name), '')), { recursive: true }); } } const content = await promises_1.default.readFile(stubPath, 'utf8'); const names = (0, file_helper_1.resolveNames)(file_helper_1.fh.filenameFromPath(name), 'Service'); const className = names.className.replace("Service", ''); let replacedContent = content .replaceAll('{Service}', className) .replaceAll('{service}', names.varName); if (options.model) { replacedContent = replacedContent .replaceAll('{Model}', capitalize(options.model)) .replaceAll('{model}', lower(options.model)); } await promises_1.default.writeFile(path_1.default.join(rootPath, (0, file_helper_1.getFilePathWithoutName)(name) + "/" + (0, lodash_1.kebabCase)(className) + '.service.ts'), replacedContent, 'utf8'); console.log("Service created succssessfully!"); } async function createRestService(name, model) { let stubPath = path_helper_1.pathHelper.stubPath('services/rest-service.stub'); const content = await promises_1.default.readFile(stubPath, 'utf8'); let replacedContent = content .replaceAll('{Service}', name); if (model) { replacedContent = replacedContent .replaceAll('{Model}', capitalize(model)) .replaceAll('{model}', lower(model)); } await promises_1.default.writeFile(path_1.default.join('src/services/', (0, lodash_1.kebabCase)(name) + '.service.ts'), replacedContent, 'utf8'); console.log("Service created succssessfully!"); }