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.
69 lines (56 loc) • 2.57 kB
text/typescript
import { logger } from './logger';
// Types
export interface Logger {
error: typeof logger.error;
success: typeof logger.success;
info: typeof logger.info;
warning: typeof logger.warning;
log: typeof logger.log;
}
// Pure functions for logging
export const logError = (logger: Logger, message: string): void => {
logger.error(message);
};
export const logSuccess = (logger: Logger, message: string): void => {
logger.success(message);
};
export const logInfo = (logger: Logger, message: string): void => {
logger.info(message);
};
export const logWarning = (logger: Logger, message: string): void => {
logger.warning(message);
};
export const logDebug = (logger: Logger, message: string): void => {
logger.log(message);
};
// Domain specific logging functions
export const logDomainCreationSuccess = (logger: Logger, domainName: string, domainPath: string): void => {
logSuccess(logger, `Domain "${domainName}" created successfully!`);
logInfo(logger, `Location: ${domainPath}`);
};
export const logDomainDeletionSuccess = (logger: Logger, domainName: string): void => {
logSuccess(logger, `Domain "${domainName}" deleted successfully!`);
};
export const logDomainAlreadyExists = (logger: Logger, domainName: string, domainPath: string): void => {
logError(logger, `Domain "${domainName}" already exists at ${domainPath}`);
};
export const logDomainNotFound = (logger: Logger, domainName: string, domainPath: string): void => {
logError(logger, `Domain "${domainName}" not found at ${domainPath}`);
};
export const logInvalidDomainName = (logger: Logger, domainName: string): void => {
logError(logger, `❌ Invalid domain name: "${domainName}"`);
logError(logger, '💡 Domain names must be valid TypeScript identifiers:');
logError(logger, ' - Start with a letter or underscore');
logError(logger, ' - Contain only letters, numbers, and underscores');
logError(logger, ' - No hyphens, spaces, or special characters');
logError(logger, '📝 Examples: "user", "userProfile", "user_profile", "orderManagement"');
};
export const logNoDomainsFound = (logger: Logger, domainsPath: string): void => {
logInfo(logger, 'No domains found in src/domains.');
logInfo(logger, '💡 Use "ruch create <domain-name>" to create your first domain.');
};
export const logDomainsListed = (logger: Logger, domainCount: number, domainsPath: string): void => {
logSuccess(logger, `${domainCount} domain(s) found:`);
logInfo(logger, `Total: ${domainCount} domain(s)`);
logInfo(logger, `Location: ${domainsPath}`);
};