UNPKG

@onurege3467/zerohelper

Version:

ZeroHelper is a versatile high-performance utility library and database framework for Node.js, fully written in TypeScript.

86 lines (85 loc) • 3.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.initCommand = void 0; const commander_1 = require("commander"); const chalk_1 = __importDefault(require("chalk")); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const package_json_1 = require("../../package.json"); const prompts_1 = require("../utils/prompts"); exports.initCommand = new commander_1.Command().name('init'); exports.initCommand .description('Initialize ZeroHelper in your project (Interactive)') .action(async () => { console.log(chalk_1.default.bold.blue(`\nšŸš€ Welcome to ZeroHelper v${package_json_1.version} Setup\n`)); try { const answers = await (0, prompts_1.getInitAnswers)(); const extraPrompts = await (0, prompts_1.getFilePathPrompts)(answers.adapter, answers.enableCache, answers.cacheType); const extraAnswers = await inquirer_1.default.prompt(extraPrompts); const finalAnswers = { ...answers, ...extraAnswers }; const configObject = buildConfig(finalAnswers); const configTemplate = formatConfigTemplate(finalAnswers, configObject); fs_1.default.writeFileSync(path_1.default.join(process.cwd(), 'zero.config.ts'), configTemplate); console.log(chalk_1.default.green('\nāœ… zero.config.ts created successfully!')); console.log(chalk_1.default.gray('\nšŸ“ Usage example:')); console.log(chalk_1.default.yellow(`import { database } from '@onurege3467/zerohelper';`)); console.log(chalk_1.default.yellow(`import { zeroConfig } from './zero.config';`)); console.log(chalk_1.default.yellow(`const db = database.createDatabase(zeroConfig);`)); } catch (error) { console.error(chalk_1.default.red(error.message)); process.exit(1); } }); function buildConfig(answers) { if (['json', 'zpack', 'sqlite', 'toon'].includes(answers.adapter)) { return JSON.stringify({ adapter: answers.adapter, config: { path: answers.filePath, ...(answers.enableCache && { cache: { type: answers.cacheType || 'memory', ...(answers.cacheType === 'memory' && answers.cacheTtl && { ttl: answers.cacheTtl * 1000 }) } }) } }, null, 2); } const config = { adapter: answers.adapter, config: { host: answers.host, port: answers.port, ...(answers.username && { username: answers.username }), ...(answers.password && { password: answers.password }), database: answers.database, ...(answers.adapter === 'mongodb' && { url: `mongodb://${answers.host}:${answers.port}/${answers.database}` }) } }; if (answers.enableCache && answers.cacheType) { config.config.cache = { type: answers.cacheType }; if (answers.cacheType === 'redis') { config.config.cache.host = answers.host; config.config.cache.port = 6379; } else if (answers.cacheTtl) { config.config.cache.ttl = answers.cacheTtl * 1000; } } return JSON.stringify(config, null, 2); } function formatConfigTemplate(answers, configObject) { return `/** * ZeroHelper Configuration * Generated on ${new Date().toLocaleDateString()} */ export const zeroConfig = ${configObject}; `; } const inquirer_1 = __importDefault(require("inquirer"));