UNPKG

tidyai-ts

Version:

AI-powered cross-platform file organizer using OpenRouter API

161 lines (160 loc) 6.72 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.colors = exports.tidyAiLogo = void 0; exports.displayProgressBar = displayProgressBar; exports.logWithTimestamp = logWithTimestamp; exports.createLogEntry = createLogEntry; exports.displayHeader = displayHeader; exports.displaySectionHeader = displaySectionHeader; exports.displaySuccess = displaySuccess; exports.displayError = displayError; exports.displayWarning = displayWarning; exports.displayInfo = displayInfo; exports.updateProgress = updateProgress; exports.clearProgressLine = clearProgressLine; const fs = __importStar(require("fs/promises")); const path = __importStar(require("path")); // ASCII Art for TidyAI exports.tidyAiLogo = ` ████████╗██╗██████╗ ██╗ ██╗ █████╗ ██╗ ╚══██╔══╝██║██╔══██╗╚██╗ ██╔╝██╔══██╗██║ ██║ ██║██║ ██║ ╚████╔╝ ███████║██║ ██║ ██║██║ ██║ ╚██╔╝ ██╔══██║██║ ██║ ██║██████╔╝ ██║ ██║ ██║██║ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ `; // Colors for CLI output exports.colors = { reset: '\x1b[0m', bright: '\x1b[1m', dim: '\x1b[2m', underscore: '\x1b[4m', blink: '\x1b[5m', reverse: '\x1b[7m', hidden: '\x1b[8m', fg: { black: '\x1b[30m', red: '\x1b[31m', green: '\x1b[32m', yellow: '\x1b[33m', blue: '\x1b[34m', magenta: '\x1b[35m', cyan: '\x1b[36m', white: '\x1b[37m', crimson: '\x1b[38m' }, bg: { black: '\x1b[40m', red: '\x1b[41m', green: '\x1b[42m', yellow: '\x1b[43m', blue: '\x1b[44m', magenta: '\x1b[45m', cyan: '\x1b[46m', white: '\x1b[47m', crimson: '\x1b[48m' } }; // Progress bar characters const progressBarComplete = '█'; const progressBarIncomplete = '░'; // Function to display a progress bar function displayProgressBar(percentage, width = 40) { const completeLength = Math.round(width * percentage); const incompleteLength = width - completeLength; const completeBar = progressBarComplete.repeat(completeLength); const incompleteBar = progressBarIncomplete.repeat(incompleteLength); return `${exports.colors.fg.green}${completeBar}${exports.colors.fg.yellow}${incompleteBar}${exports.colors.reset}`; } // Function to log with timestamp function logWithTimestamp(message, level = 'INFO') { const timestamp = new Date().toISOString(); return `[${timestamp}] [${level}] ${message}`; } // Function to create a log entry async function createLogEntry(folderPath, message, logDir = '.tidyai/logs') { try { const logPath = path.join(folderPath, logDir); await fs.mkdir(logPath, { recursive: true }); const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); const logFile = path.join(logPath, `tidyai-log-${timestamp}.txt`); const logContent = logWithTimestamp(message); await fs.writeFile(logFile, logContent); } catch (error) { console.error(`${exports.colors.fg.red}Failed to create log entry: ${error}${exports.colors.reset}`); } } // Function to display the TidyAI header function displayHeader() { console.log(exports.colors.fg.cyan + exports.tidyAiLogo + exports.colors.reset); console.log(exports.colors.fg.blue + '========================================' + exports.colors.reset); console.log(exports.colors.fg.yellow + ' Organize your files with AI power!' + exports.colors.reset); console.log(exports.colors.fg.blue + '========================================' + exports.colors.reset); console.log(''); } // Function to display a section header function displaySectionHeader(title) { console.log(''); console.log(exports.colors.fg.magenta + '┌' + '─'.repeat(title.length + 2) + '┐' + exports.colors.reset); console.log(exports.colors.fg.magenta + '│ ' + exports.colors.fg.cyan + title + exports.colors.fg.magenta + ' │' + exports.colors.reset); console.log(exports.colors.fg.magenta + '└' + '─'.repeat(title.length + 2) + '┘' + exports.colors.reset); console.log(''); } // Function to display a success message function displaySuccess(message) { console.log(exports.colors.fg.green + '✓ ' + message + exports.colors.reset); } // Function to display an error message function displayError(message) { console.log(exports.colors.fg.red + '✗ ' + message + exports.colors.reset); } // Function to display a warning message function displayWarning(message) { console.log(exports.colors.fg.yellow + '! ' + message + exports.colors.reset); } // Function to display an info message function displayInfo(message) { console.log(exports.colors.fg.blue + 'ℹ ' + message + exports.colors.reset); } // Function to update progress without creating new lines function updateProgress(message) { process.stdout.write('\r' + message); } // Function to clear the progress line function clearProgressLine() { process.stdout.write('\r' + ' '.repeat(80) + '\r'); }