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
JavaScript
"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