UNPKG

ruch

Version:

Revolutionary React TypeScript CLI with hexagonal architecture & AI-powered development assistance. Create maintainable, scalable applications with domain-driven design and integrated AI tooling.

85 lines (84 loc) 2.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getIndexTemplate = void 0; exports.generateDomainFiles = generateDomainFiles; const entities_1 = require("./entities"); const ports_1 = require("./ports"); const services_1 = require("./services"); const services_test_1 = require("./services.test"); const adapters_1 = require("./adapters"); const adapters_test_1 = require("./adapters.test"); const hooks_1 = require("./hooks"); const hooks_test_1 = require("./hooks.test"); const ui_1 = require("./ui"); const ui_test_1 = require("./ui.test"); function generateDomainFiles(domainName, options) { const files = []; const capitalizedName = domainName.charAt(0).toUpperCase() + domainName.slice(1); // Entities files.push({ path: `entities/${capitalizedName}.ts`, content: (0, entities_1.getEntityTemplate)(domainName) }); // Ports files.push({ path: `ports/${capitalizedName}Port.ts`, content: (0, ports_1.getPortTemplate)(domainName) }); // Services files.push({ path: `services/${capitalizedName}Service.ts`, content: (0, services_1.getServicesTemplate)(domainName) }); files.push({ path: `services/${capitalizedName}Service.test.ts`, content: (0, services_test_1.getServicesTestTemplate)(domainName) }); // Adapters files.push({ path: `adapters/${capitalizedName}Adapter.ts`, content: (0, adapters_1.getAdapterTemplate)(domainName) }); files.push({ path: `adapters/${capitalizedName}Adapter.test.ts`, content: (0, adapters_test_1.getAdapterTestTemplate)(domainName) }); // Hooks files.push({ path: `hooks/use${capitalizedName}.ts`, content: (0, hooks_1.getHookTemplate)(domainName) }); files.push({ path: `hooks/use${capitalizedName}.test.tsx`, content: (0, hooks_test_1.getHookTestTemplate)(domainName) }); // UI if (options.withUi) { files.push({ path: `ui/${capitalizedName}View.tsx`, content: (0, ui_1.getUiTemplate)(domainName) }); files.push({ path: `ui/index.ts`, content: (0, ui_1.getUiIndexTemplate)(domainName) }); files.push({ path: `ui/${capitalizedName}View.test.tsx`, content: (0, ui_test_1.getUiTestTemplate)(domainName) }); } return files; } const getIndexTemplate = (domainName) => { return `// Entry point for the ${domainName} domain // Exports all public elements of the domain export * from './types'; export * from './services'; export * from './api'; export * from './queries'; export * from './store'; export * from './ui'; `; }; exports.getIndexTemplate = getIndexTemplate; //# sourceMappingURL=index.js.map