node-apis
Version:
🚀 Advanced TypeScript API generator with clean architecture, comprehensive testing, and automatic formatting. Generate production-ready Node.js APIs with complete integration test suites.
97 lines (91 loc) • 3.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateServicesTrpcRouterContent = exports.generateCustomTrpcRouterContent = exports.generateTrpcRouterContent = void 0;
/**
* tRPC router template for generating module routers
*/
const naming_utils_1 = require("../shared/utils/naming.utils");
const generateTrpcRouterContent = ({ moduleName, operations = ['create', 'get', 'list', 'update', 'delete'], }) => {
const naming = (0, naming_utils_1.getModuleNaming)(moduleName);
// Generate imports for each operation
const procedureImports = operations
.map(operation => {
// const capitalizedOperation = operation.charAt(0).toUpperCase() + operation.slice(1);
const procedureName = operation === 'list'
? `list${naming.class}sProcedure`
: `${operation}${naming.class}Procedure`;
return `import { ${procedureName} } from './procedures/${operation}.${naming.file}';`;
})
.join('\n');
// Generate router object properties
const routerProperties = operations
.map(operation => {
// const capitalizedOperation = operation.charAt(0).toUpperCase() + operation.slice(1);
const procedureName = operation === 'list'
? `list${naming.class}sProcedure`
: `${operation}${naming.class}Procedure`;
return ` ${operation}: ${procedureName},`;
})
.join('\n');
return `import { router } from '@/lib/trpc';
${procedureImports}
export const ${naming.variable}Router = router({
${routerProperties}
});
export type ${naming.class}Router = typeof ${naming.variable}Router;
`;
};
exports.generateTrpcRouterContent = generateTrpcRouterContent;
const generateCustomTrpcRouterContent = ({ moduleName, operations, }) => {
const naming = (0, naming_utils_1.getModuleNaming)(moduleName);
// Generate imports for each custom operation
const procedureImports = operations
.map(operation => {
// const capitalizedOperation = operation.charAt(0).toUpperCase() + operation.slice(1);
const procedureName = `${operation}${naming.class}Procedure`;
return `import { ${procedureName} } from './procedures/${operation}.${naming.file}';`;
})
.join('\n');
// Generate router object properties
const routerProperties = operations
.map(operation => {
const procedureName = `${operation}${naming.class}Procedure`;
return ` ${operation}: ${procedureName},`;
})
.join('\n');
return `import { router } from '../../trpc';
${procedureImports}
export const ${naming.variable}Router = router({
${routerProperties}
});
export type ${naming.class}Router = typeof ${naming.variable}Router;
`;
};
exports.generateCustomTrpcRouterContent = generateCustomTrpcRouterContent;
const generateServicesTrpcRouterContent = ({ moduleName, operations, }) => {
const naming = (0, naming_utils_1.getModuleNaming)(moduleName);
// Generate imports for each service operation
const procedureImports = operations
.map(operation => {
// const capitalizedOperation = operation.charAt(0).toUpperCase() + operation.slice(1);
const procedureName = `${operation}${naming.class}Procedure`;
return `import { ${procedureName} } from './procedures/${operation}.${naming.file}';`;
})
.join('\n');
// Generate router object properties
const routerProperties = operations
.map(operation => {
const procedureName = `${operation}${naming.class}Procedure`;
return ` ${operation}: ${procedureName},`;
})
.join('\n');
return `import { router } from '../../trpc';
${procedureImports}
export const ${naming.variable}Router = router({
${routerProperties}
});
export type ${naming.class}Router = typeof ${naming.variable}Router;
`;
};
exports.generateServicesTrpcRouterContent = generateServicesTrpcRouterContent;
//# sourceMappingURL=trpc.router.js.map