UNPKG

@feedinbox/cli

Version:

CLI tool for installing FeedInbox components into your project

1 lines • 19.4 kB
{"version":3,"sources":["../src/commands/add.ts","../src/utils/registry.ts","../src/utils/template.ts","../src/utils/package.ts","../src/commands/init.ts","../src/commands/list.ts","../src/utils/project.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport inquirer from 'inquirer';\nimport { getTemplateRegistry } from '../utils/registry.js';\nimport { copyTemplate } from '../utils/template.js';\nimport { updatePackageJson } from '../utils/package.js';\n\ninterface AddOptions {\n dir: string;\n force: boolean;\n yes: boolean;\n}\n\nexport async function addComponents(type: string, options: AddOptions) {\n const validTypes = ['react-vanilla', 'react-tailwind', 'react-shadcn'];\n \n if (!validTypes.includes(type)) {\n throw new Error(`Invalid component type: ${type}. Valid types: ${validTypes.join(', ')}`);\n }\n\n const targetDir = path.resolve(process.cwd(), options.dir);\n \n // Check if directory exists and has files\n if (await fs.pathExists(targetDir)) {\n const files = await fs.readdir(targetDir);\n if (files.length > 0 && !options.force) {\n if (!options.yes) {\n const { confirm } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirm',\n message: `Directory ${options.dir} already exists and contains files. Continue?`,\n default: false\n }\n ]);\n \n if (!confirm) {\n console.log(chalk.yellow('Installation cancelled.'));\n return;\n }\n }\n }\n }\n\n console.log(chalk.blue(`šŸ“¦ Installing ${type} components...`));\n \n // Get template registry\n const registry = await getTemplateRegistry();\n const template = registry[type];\n \n if (!template) {\n throw new Error(`Template not found for type: ${type}`);\n }\n\n // Create target directory\n await fs.ensureDir(targetDir);\n \n // Copy template files\n console.log(chalk.blue('šŸ“„ Copying component files...'));\n await copyTemplate(type, targetDir);\n \n // Update package.json with dependencies\n console.log(chalk.blue('šŸ“‹ Updating dependencies...'));\n await updatePackageJson(template.dependencies, template.devDependencies);\n \n // Create README for the components\n await createComponentReadme(type, targetDir);\n \n console.log(chalk.green(`āœ… ${type} components installed to ${options.dir}`));\n \n // Show next steps\n showNextSteps(type);\n}\n\nasync function createComponentReadme(type: string, targetDir: string) {\n const readmeContent = `# FeedInbox Components\n\nThis directory contains FeedInbox ${type} components installed via the CLI.\n\n## Usage\n\n\\`\\`\\`typescript\nimport { FeedbackWidget, NewsletterWidget, ContactWidget } from './'\nimport { FeedInboxSDK } from '@feedinbox/sdk'\n\n// Initialize SDK\nconst feedinbox = new FeedInboxSDK({\n apiKey: 'fb_your_api_key'\n})\n\n// Use components\n<FeedbackWidget \n apiKey=\"fb_your_api_key\"\n onSuccess={(response) => console.log(response)}\n onError={(error) => console.error(error)}\n/>\n\\`\\`\\`\n\n## Customization\n\nThese components are copied into your project, so you can:\n- Modify styling and behavior\n- Add your own props and features \n- Customize the UI to match your design system\n- Update dependencies as needed\n\n## Components Included\n\n- **FeedbackWidget**: Collect user feedback with priority levels\n- **NewsletterWidget**: Newsletter subscription with consent management\n- **ContactWidget**: Contact form with validation\n\n## Documentation\n\nVisit https://feedinbox.com/docs for complete documentation.\n`;\n\n await fs.writeFile(path.join(targetDir, 'README.md'), readmeContent);\n}\n\nfunction showNextSteps(type: string) {\n console.log(chalk.yellow('\\nšŸ“– Next steps:'));\n console.log('1. Install the SDK if not already installed:');\n console.log(chalk.cyan(' npm install @feedinbox/sdk'));\n \n if (type === 'react-tailwind') {\n console.log('2. Make sure Tailwind CSS is configured in your project');\n console.log('3. Import and use the components');\n } else if (type === 'react-shadcn') {\n console.log('2. Make sure shadcn/ui is configured in your project');\n console.log('3. Install required shadcn components if not already installed');\n console.log('4. Import and use the components');\n } else {\n console.log('2. Import the CSS file in your app:');\n console.log(chalk.cyan(' import \"./components/feedinbox/styles.css\"'));\n console.log('3. Import and use the components');\n }\n \n console.log('4. Configure your API key and start collecting feedback!');\n}","export interface Template {\n name: string;\n description: string;\n dependencies: Record<string, string>;\n devDependencies: Record<string, string>;\n files: string[];\n}\n\nexport interface TemplateRegistry {\n [key: string]: Template;\n}\n\nexport async function getTemplateRegistry(): Promise<TemplateRegistry> {\n return {\n 'react-vanilla': {\n name: 'React + Vanilla CSS',\n description: 'Clean React components with vanilla CSS styling',\n dependencies: {\n '@feedinbox/sdk': '^1.0.0'\n },\n devDependencies: {\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0'\n },\n files: [\n 'FeedbackWidget.tsx',\n 'NewsletterWidget.tsx', \n 'ContactWidget.tsx',\n 'index.ts',\n 'styles/index.css',\n 'styles/feedback-widget.css',\n 'styles/newsletter-widget.css',\n 'styles/contact-widget.css'\n ]\n },\n 'react-tailwind': {\n name: 'React + Tailwind CSS',\n description: 'React components styled with Tailwind CSS utilities',\n dependencies: {\n '@feedinbox/sdk': '^1.0.0'\n },\n devDependencies: {\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n 'tailwindcss': '^3.4.0'\n },\n files: [\n 'FeedbackWidget.tsx',\n 'NewsletterWidget.tsx',\n 'ContactWidget.tsx', \n 'index.ts'\n ]\n },\n 'react-shadcn': {\n name: 'React + shadcn/ui',\n description: 'React components using shadcn/ui component library',\n dependencies: {\n '@feedinbox/sdk': '^1.0.0'\n },\n devDependencies: {\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0'\n },\n files: [\n 'FeedbackWidget.tsx',\n 'NewsletterWidget.tsx',\n 'ContactWidget.tsx',\n 'index.ts',\n 'ui/button.tsx',\n 'ui/input.tsx',\n 'ui/textarea.tsx',\n 'ui/dialog.tsx',\n 'ui/checkbox.tsx',\n 'ui/radio-group.tsx'\n ]\n }\n };\n}","import path from 'path';\nimport fs from 'fs-extra';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nexport async function copyTemplate(templateType: string, targetDir: string) {\n const templateDir = path.join(__dirname, '../../templates', templateType);\n \n if (!await fs.pathExists(templateDir)) {\n throw new Error(`Template directory not found: ${templateType}`);\n }\n \n // Copy all template files to target directory\n await fs.copy(templateDir, targetDir, {\n overwrite: true,\n filter: (src) => {\n // Skip .git directories and other unwanted files\n return !src.includes('.git') && !src.includes('node_modules');\n }\n });\n \n console.log(`šŸ“ Template files copied from ${templateType}`);\n}","import path from 'path';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\n\nexport async function updatePackageJson(\n dependencies: Record<string, string>,\n devDependencies: Record<string, string>\n) {\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n \n if (!await fs.pathExists(packageJsonPath)) {\n console.log(chalk.yellow('āš ļø No package.json found. You may need to run npm init first.'));\n return;\n }\n \n const packageJson = await fs.readJson(packageJsonPath);\n \n // Add dependencies\n if (Object.keys(dependencies).length > 0) {\n packageJson.dependencies = packageJson.dependencies || {};\n Object.assign(packageJson.dependencies, dependencies);\n console.log(chalk.blue('šŸ“¦ Added dependencies:'), Object.keys(dependencies).join(', '));\n }\n \n // Add dev dependencies\n if (Object.keys(devDependencies).length > 0) {\n packageJson.devDependencies = packageJson.devDependencies || {};\n Object.assign(packageJson.devDependencies, devDependencies);\n console.log(chalk.blue('šŸ”§ Added dev dependencies:'), Object.keys(devDependencies).join(', '));\n }\n \n await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });\n \n console.log(chalk.green('āœ… package.json updated'));\n console.log(chalk.yellow('šŸ’” Run npm install to install new dependencies'));\n}","import path from 'path';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport inquirer from 'inquirer';\n\nexport async function initConfig() {\n const configPath = path.join(process.cwd(), 'feedinbox.config.json');\n \n if (await fs.pathExists(configPath)) {\n const { overwrite } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'overwrite',\n message: 'FeedInbox config already exists. Overwrite?',\n default: false\n }\n ]);\n \n if (!overwrite) {\n console.log(chalk.yellow('Configuration unchanged.'));\n return;\n }\n }\n \n const answers = await inquirer.prompt([\n {\n type: 'input',\n name: 'apiKey',\n message: 'Enter your FeedInbox API key:',\n validate: (input) => {\n if (!input) return 'API key is required';\n if (!input.startsWith('fb_')) return 'API key must start with \"fb_\"';\n return true;\n }\n },\n {\n type: 'input',\n name: 'apiUrl',\n message: 'Enter your API URL (optional):',\n default: 'https://api.feedinbox.com'\n },\n {\n type: 'input',\n name: 'workspaceId',\n message: 'Enter your workspace ID (optional):'\n }\n ]);\n \n const config = {\n apiKey: answers.apiKey,\n apiUrl: answers.apiUrl,\n workspaceId: answers.workspaceId || undefined,\n version: '1.0.0',\n createdAt: new Date().toISOString()\n };\n \n await fs.writeJson(configPath, config, { spaces: 2 });\n \n console.log(chalk.green('āœ… Configuration saved to feedinbox.config.json'));\n console.log(chalk.yellow('āš ļø Make sure to add feedinbox.config.json to your .gitignore'));\n}","import chalk from 'chalk';\n\nexport function listTemplates() {\n console.log(chalk.blue('\\nšŸ“‹ Available FeedInbox component types:\\n'));\n \n console.log(chalk.green('react-vanilla'));\n console.log(' React components with vanilla CSS');\n console.log(' • Clean, customizable styling');\n console.log(' • No external CSS framework required');\n console.log(' • Perfect for custom design systems\\n');\n \n console.log(chalk.green('react-tailwind'));\n console.log(' React components with Tailwind CSS');\n console.log(' • Utility-first CSS approach');\n console.log(' • Requires Tailwind CSS in your project');\n console.log(' • Highly customizable with utilities\\n');\n \n console.log(chalk.green('react-shadcn'));\n console.log(' React components with shadcn/ui');\n console.log(' • Modern component library');\n console.log(' • Requires shadcn/ui setup');\n console.log(' • Beautiful, accessible components\\n');\n \n console.log(chalk.yellow('Usage:'));\n console.log(' npx @feedinbox/cli add react-vanilla');\n console.log(' npx @feedinbox/cli add react-tailwind');\n console.log(' npx @feedinbox/cli add react-shadcn\\n');\n}","import path from 'path';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\n\nexport async function validateProject() {\n const cwd = process.cwd();\n const packageJsonPath = path.join(cwd, 'package.json');\n \n if (!await fs.pathExists(packageJsonPath)) {\n throw new Error('No package.json found. Please run this command in a Node.js project directory.');\n }\n \n const packageJson = await fs.readJson(packageJsonPath);\n \n // Check if it's a React project\n const hasReact = \n packageJson.dependencies?.react || \n packageJson.devDependencies?.react ||\n packageJson.peerDependencies?.react;\n \n if (!hasReact) {\n console.log(chalk.yellow('āš ļø React not detected in dependencies. Make sure this is a React project.'));\n }\n \n // Check for TypeScript\n const hasTypeScript = \n packageJson.dependencies?.typescript || \n packageJson.devDependencies?.typescript ||\n await fs.pathExists(path.join(cwd, 'tsconfig.json'));\n \n if (!hasTypeScript) {\n console.log(chalk.yellow('āš ļø TypeScript not detected. FeedInbox components are written in TypeScript.'));\n }\n \n console.log(chalk.green('āœ… Project validation passed'));\n}"],"mappings":"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","names":["path","fs","chalk","path","fs","path","fs","chalk","path","fs","chalk","inquirer","chalk","path","fs","chalk"]}