UNPKG

typescript-express-starter

Version:
81 lines (68 loc) 2.38 kB
/** * Configuration constants and settings for the CLI */ import { fileURLToPath } from 'url'; import path from 'path'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); export const CONFIG = { // Version and compatibility minNodeVersion: 16, // Default values defaultProjectName: 'my-app', maxProjectNameLength: 50, // Network settings registryUrl: 'https://registry.npmjs.org/', timeout: { packageInstall: 30000, versionCheck: 5000, networkRequest: 10000, }, // File paths paths: { templates: path.join(__dirname, '../templates'), devtools: path.join(__dirname, '../devtools'), }, // Validation patterns validation: { projectName: /^[a-zA-Z0-9-_]+$/, packageName: /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/, version: /^\d+\.\d+\.\d+(-[a-zA-Z0-9]+)?$/, }, // UI settings ui: { spinnerInterval: 100, maxRetries: 3, }, // Banner configuration banner: { gradient: '\x1B[38;2;91;192;222m📘\x1B[39m\x1B[38;2;91;192;222m \x1B[39m\x1B[38;2;91;192;222mT\x1B[39m\x1B[38;2;82;175;222my\x1B[39m\x1B[38;2;74;159;222mp\x1B[39m\x1B[38;2;66;143;210me\x1B[39m\x1B[38;2;58;128;198mS\x1B[39m\x1B[38;2;54;124;190mc\x1B[39m\x1B[38;2;52;118;180mr\x1B[39m\x1B[38;2;50;115;172mi\x1B[39m\x1B[38;2;49;120;198mp\x1B[39m\x1B[38;2;47;110;168mt\x1B[39m\x1B[38;2;45;105;160m \x1B[39m\x1B[38;2;43;100;152mE\x1B[39m\x1B[38;2;41;95;144mx\x1B[39m\x1B[38;2;39;90;136mp\x1B[39m\x1B[38;2;37;85;128mr\x1B[39m\x1B[38;2;35;80;120me\x1B[39m\x1B[38;2;33;75;112ms\x1B[39m\x1B[38;2;30;72;106ms\x1B[39m\x1B[38;2;28;70;100m \x1B[39m\x1B[38;2;26;68;96mS\x1B[39m\x1B[38;2;25;68;94mt\x1B[39m\x1B[38;2;25;69;92ma\x1B[39m\x1B[38;2;25;70;91mr\x1B[39m\x1B[38;2;25;70;150mt\x1B[39m\x1B[38;2;25;70;150me\x1B[39m\x1B[38;2;25;70;150mr\x1B[39m', }, }; /** * Environment-specific configuration */ export const getEnvironmentConfig = () => { const env = process.env.NODE_ENV || 'production'; const envConfigs = { development: { verbose: true, dryRun: false, skipVersionCheck: false, }, test: { verbose: false, dryRun: true, skipVersionCheck: true, }, production: { verbose: false, dryRun: false, skipVersionCheck: false, }, }; return { ...CONFIG, env: envConfigs[env] || envConfigs.production, }; };