package-installer-cli 1.3.3 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/dist/commands/email.js +1150 -0
  3. data/dist/email-templates/bugReport.js +108 -0
  4. data/dist/email-templates/collectors/bugReport.js +41 -0
  5. data/dist/email-templates/collectors/common.js +56 -0
  6. data/dist/email-templates/collectors/customMessage.js +48 -0
  7. data/dist/email-templates/collectors/docs.js +41 -0
  8. data/dist/email-templates/collectors/featureRequest.js +47 -0
  9. data/dist/email-templates/collectors/improvement.js +52 -0
  10. data/dist/email-templates/collectors/index.js +9 -0
  11. data/dist/email-templates/collectors/question.js +31 -0
  12. data/dist/email-templates/collectors/templateRequest.js +53 -0
  13. data/dist/email-templates/customMessage.js +135 -0
  14. data/dist/email-templates/docs.js +111 -0
  15. data/dist/email-templates/featureRequest.js +111 -0
  16. data/dist/email-templates/generator.js +67 -0
  17. data/dist/email-templates/improvement.js +121 -0
  18. data/dist/email-templates/index.js +15 -0
  19. data/dist/email-templates/question.js +101 -0
  20. data/dist/email-templates/styles.js +168 -0
  21. data/dist/email-templates/templateRequest.js +120 -0
  22. data/dist/email-templates/testEmail.js +56 -0
  23. data/dist/email-templates/types.js +1 -0
  24. data/dist/index.js +29 -1
  25. data/dist/utils/featureInstaller.js +4 -11
  26. data/features/ai/ai.json +547 -0
  27. data/features/analytics/analytics.json +4 -0
  28. data/features/auth/auth.json +473 -0
  29. data/features/auth/auth0/django/backend/apiexample/urls.py +10 -0
  30. data/features/auth/auth0/django/backend/apiexample/validator.py +21 -0
  31. data/features/auth/auth0/django/backend/apiexample/views.py +30 -0
  32. data/features/auth/auth0/django/backend/requirements.txt +4 -0
  33. data/features/auth/auth0/django/web-app/requirements.txt +4 -0
  34. data/features/auth/auth0/django/web-app/webappexample/settings.py +28 -0
  35. data/features/auth/auth0/django/web-app/webappexample/templates/index.html +16 -0
  36. data/features/auth/auth0/django/web-app/webappexample/urls.py +10 -0
  37. data/features/auth/auth0/django/web-app/webappexample/views.py +52 -0
  38. data/features/auth/auth0/go/backend/go.mod +8 -0
  39. data/features/auth/auth0/go/backend/main.go +60 -0
  40. data/features/auth/auth0/go/backend/middleware/jwt.go +81 -0
  41. data/features/auth/auth0/go/web-app/auth.go +56 -0
  42. data/features/auth/auth0/go/web-app/callback.go +52 -0
  43. data/features/auth/auth0/go/web-app/go.mod +11 -0
  44. data/features/auth/auth0/go/web-app/isAuthenticated.go +20 -0
  45. data/features/auth/auth0/go/web-app/login.go +47 -0
  46. data/features/auth/auth0/go/web-app/logout.go +38 -0
  47. data/features/auth/auth0/go/web-app/main.go +31 -0
  48. data/features/auth/auth0/go/web-app/router.go +44 -0
  49. data/features/auth/auth0/go/web-app/user.go +18 -0
  50. data/features/auth/auth0/ruby-on-rails/backend/Gemfile +1 -0
  51. data/features/auth/auth0/ruby-on-rails/backend/app/controllers/application_controller.rb +5 -0
  52. data/features/auth/auth0/ruby-on-rails/backend/app/controllers/concern/secured.rb +60 -0
  53. data/features/auth/auth0/ruby-on-rails/backend/app/controllers/private_controller.rb +6 -0
  54. data/features/auth/auth0/ruby-on-rails/backend/app/controllers/public-controller.rb +6 -0
  55. data/features/auth/auth0/ruby-on-rails/backend/app/lib/auth0_client.rb +59 -0
  56. data/features/auth/auth0/ruby-on-rails/web-app/Gemfile +2 -0
  57. data/features/auth/auth0/ruby-on-rails/web-app/auth0_controller.rb +41 -0
  58. data/features/auth/auth0/ruby-on-rails/web-app/config/auth0.yml +4 -0
  59. data/features/auth/auth0/ruby-on-rails/web-app/config/initializers/auth0.rb +14 -0
  60. data/features/auth/auth0/ruby-on-rails/web-app/config/routes.rb +6 -0
  61. data/features/auth/auth0/ruby-on-rails/web-app/config/secured.rb +11 -0
  62. data/features/auth/clerk/go/clerk_client.go +28 -0
  63. data/features/auth/clerk/go/go.mod +5 -0
  64. data/features/auth/clerk/go/main.go +82 -0
  65. data/features/auth/clerk/nextjs/typescript/app/layout.tsx +2 -2
  66. data/features/auth/clerk/ruby-on-rails/Gemfile +1 -0
  67. data/features/auth/clerk/ruby-on-rails/app.rb +50 -0
  68. data/features/auth/clerk/ruby-on-rails/config/initializers/clerk.rb +4 -0
  69. data/features/aws/aws.json +5207 -0
  70. data/features/database/database.json +246 -0
  71. data/features/docker/docker.json +108 -0
  72. data/features/features.json +44 -7321
  73. data/features/gitignore/gitignore.json +61 -0
  74. data/features/monitoring/monitoring.json +5 -0
  75. data/features/payment/payment.json +347 -0
  76. data/features/storage/storage.json +371 -0
  77. data/features/testing/jest/angularjs/typescript/tests/angularjs.test.ts +12 -0
  78. data/features/testing/jest/expressjs/javascript/tests/expressjs.test.js +10 -0
  79. data/features/testing/jest/expressjs/typescript/tests/expressjs.test.ts +10 -0
  80. data/features/testing/jest/nestjs/typescript/tests/nestjs.test.ts +10 -0
  81. data/features/testing/jest/nextjs/javascript/tests/nextjs.test.js +10 -0
  82. data/features/testing/jest/nextjs/typescript/tests/nextjs.test.ts +10 -0
  83. data/features/testing/jest/nuxtjs/typescript/tests/nuxtjs.test.ts +9 -0
  84. data/features/testing/jest/reactjs/javascript/tests/reactjs.test.js +10 -0
  85. data/features/testing/jest/reactjs/typescript/tests/reactjs.test.ts +10 -0
  86. data/features/testing/jest/reactjs-expressjs-shadcn/javascript/tests/reactjs.expressjs.shadcn.test.js +16 -0
  87. data/features/testing/jest/reactjs-expressjs-shadcn/typescript/tests/reactjs.expressjs.shadcn.test.ts +16 -0
  88. data/features/testing/jest/reactjs-nestjs-shadcn/typescript/tests/reactjs.nestjs.shadcn.test.ts +14 -0
  89. data/features/testing/jest/remixjs/typescript/tests/remixjs.test.ts +9 -0
  90. data/features/testing/jest/vuejs/javascript/tests/vuejs.test.ts +9 -0
  91. data/features/testing/jest/vuejs/typescript/tests/vuejs.test.ts +9 -0
  92. data/features/testing/testing.json +102 -0
  93. data/features/ui/ui.json +91 -0
  94. metadata +90 -8
  95. data/features/testing/jest/angularjs/tests/angularjs.test.js +0 -12
  96. data/features/testing/jest/expressjs/tests/javascript/expressjs.test.js +0 -12
  97. data/features/testing/jest/expressjs/tests/typescript/expressjs.test.ts +0 -12
  98. data/features/testing/jest/go/tests/go.test.js +0 -12
  99. data/features/testing/jest/nextjs/tests/javascript/nextjs.test.js +0 -12
  100. data/features/testing/jest/nextjs/tests/typescript/nextjs.test.ts +0 -12
@@ -0,0 +1,120 @@
1
+ import { EMAIL_CSS } from './styles.js';
2
+ export function generateTemplateRequestTemplate(data, systemInfo) {
3
+ return {
4
+ subject: `[Package Installer CLI] 📝 Template Request: ${data.title}`,
5
+ htmlBody: `
6
+ ${EMAIL_CSS}
7
+ <body>
8
+ <div class="email-container">
9
+ <div class="header template">
10
+ <span class="emoji">📝</span>
11
+ <h1>Template Request</h1>
12
+ <p style="margin: 5px 0 0 0; opacity: 0.9;">Package Installer CLI</p>
13
+ </div>
14
+
15
+ <div class="content">
16
+ <div class="section">
17
+ <h3>Template Title</h3>
18
+ <p><strong>${data.title}</strong></p>
19
+ </div>
20
+
21
+ <div class="section">
22
+ <h3>Description</h3>
23
+ <p>${data.description}</p>
24
+ </div>
25
+
26
+ ${data.framework ? `
27
+ <div class="section">
28
+ <h3>Framework/Technology</h3>
29
+ <p>${data.framework}</p>
30
+ </div>
31
+ ` : ''}
32
+
33
+ ${data.features ? `
34
+ <div class="section">
35
+ <h3>Desired Features</h3>
36
+ <p>${data.features}</p>
37
+ </div>
38
+ ` : ''}
39
+
40
+ ${data.useCase ? `
41
+ <div class="section">
42
+ <h3>Use Case</h3>
43
+ <p>${data.useCase}</p>
44
+ </div>
45
+ ` : ''}
46
+
47
+ ${data.priority ? `
48
+ <div class="priority-badge ${data.priority}">
49
+ Priority: ${data.priority.charAt(0).toUpperCase() + data.priority.slice(1)}
50
+ </div>
51
+ ` : ''}
52
+
53
+ ${data.additional ? `
54
+ <div class="section">
55
+ <h3>Additional Information</h3>
56
+ <p>${data.additional}</p>
57
+ </div>
58
+ ` : ''}
59
+
60
+ <div class="system-info">
61
+ <strong>System Information:</strong><br>
62
+ - OS: ${systemInfo.platform} (${systemInfo.arch})<br>
63
+ - Node.js: ${systemInfo.nodeVersion}<br>
64
+ - CLI Version: ${systemInfo.cliVersion}<br>
65
+ - Working Directory: ${systemInfo.workingDirectory}
66
+ </div>
67
+
68
+ ${data.name || data.email ? `
69
+ <div class="contact-info">
70
+ <strong>Contact Information:</strong><br>
71
+ ${data.name ? `Name: ${data.name}<br>` : ''}
72
+ ${data.email ? `Email: ${data.email}` : ''}
73
+ </div>
74
+ ` : ''}
75
+ </div>
76
+
77
+ <div class="footer">
78
+ <div class="timestamp">Submitted at: ${systemInfo.timestamp}</div>
79
+ <p style="margin: 10px 0 0 0;">Thank you for helping expand Package Installer CLI templates! 📦</p>
80
+ </div>
81
+ </div>
82
+ </body>
83
+ `,
84
+ plainBody: `Hi Shariq,
85
+
86
+ I have a template request for Package Installer CLI.
87
+
88
+ Template Title: ${data.title}
89
+
90
+ Description:
91
+ ${data.description}
92
+
93
+ Framework/Technology:
94
+ ${data.framework || 'Not specified'}
95
+
96
+ Desired Features:
97
+ ${data.features || 'Not specified'}
98
+
99
+ Use Case:
100
+ ${data.useCase || 'Not provided'}
101
+
102
+ Priority:
103
+ ${data.priority || 'Not specified'}
104
+
105
+ Additional Information:
106
+ ${data.additional || 'None'}
107
+
108
+ System Information:
109
+ - OS: ${systemInfo.platform} (${systemInfo.arch})
110
+ - Node.js: ${systemInfo.nodeVersion}
111
+ - CLI Version: ${systemInfo.cliVersion}
112
+ - Working Directory: ${systemInfo.workingDirectory}
113
+
114
+ Submitted at: ${systemInfo.timestamp}
115
+
116
+ Best regards,
117
+ ${data.name || 'Anonymous User'}
118
+ ${data.email ? `Contact: ${data.email}` : ''}`
119
+ };
120
+ }
@@ -0,0 +1,56 @@
1
+ import { EMAIL_CSS } from './styles.js';
2
+ export function generateTestEmailTemplate(systemInfo) {
3
+ return {
4
+ subject: `[Package Installer CLI] 🧪 Test Email - ${systemInfo.timestamp}`,
5
+ htmlBody: `
6
+ ${EMAIL_CSS}
7
+ <body>
8
+ <div class="email-container">
9
+ <div class="header test">
10
+ <span class="emoji">🧪</span>
11
+ <h1>Email Test</h1>
12
+ <p style="margin: 5px 0 0 0; opacity: 0.9;">Package Installer CLI</p>
13
+ </div>
14
+
15
+ <div class="content">
16
+ <div class="test-success">
17
+ ✅ Email functionality is working correctly!
18
+ </div>
19
+
20
+ <p>This is a test email from Package Installer CLI to verify that the email system is properly configured and working.</p>
21
+
22
+ <div class="system-info">
23
+ <strong>System Information:</strong><br>
24
+ - OS: ${systemInfo.platform} (${systemInfo.arch})<br>
25
+ - Node.js: ${systemInfo.nodeVersion}<br>
26
+ - CLI Version: ${systemInfo.cliVersion}<br>
27
+ - Working Directory: ${systemInfo.workingDirectory}
28
+ </div>
29
+
30
+ <p>If you receive this email with proper formatting, both HTML and plain text email delivery are functioning correctly.</p>
31
+ </div>
32
+
33
+ <div class="footer">
34
+ <div class="timestamp">Test completed at: ${systemInfo.timestamp}</div>
35
+ <p style="margin: 10px 0 0 0;">Package Installer CLI Email System 📧</p>
36
+ </div>
37
+ </div>
38
+ </body>
39
+ `,
40
+ plainBody: `This is a test email from Package Installer CLI.
41
+
42
+ ✅ EMAIL TEST SUCCESSFUL ✅
43
+
44
+ If you receive this email, the email functionality is working correctly!
45
+
46
+ System Information:
47
+ - OS: ${systemInfo.platform} (${systemInfo.arch})
48
+ - Node.js: ${systemInfo.nodeVersion}
49
+ - CLI Version: ${systemInfo.cliVersion}
50
+ - Working Directory: ${systemInfo.workingDirectory}
51
+
52
+ Test completed at: ${systemInfo.timestamp}
53
+
54
+ Package Installer CLI Email System`
55
+ };
56
+ }
@@ -0,0 +1 @@
1
+ export {};
data/dist/index.js CHANGED
@@ -19,6 +19,7 @@ import { cleanCommand, showCleanHelp } from './commands/clean.js';
19
19
  import { cacheCommand, showCacheHelp } from './commands/cache.js';
20
20
  import { environmentCommand, showEnvironmentHelp } from './commands/env.js';
21
21
  import { doctorCommand, showDoctorHelp } from './commands/doctor.js';
22
+ import { emailCommand, showEmailHelp } from './commands/email.js';
22
23
  // Import utilities
23
24
  import { initializeCache } from './utils/cacheManager.js';
24
25
  import { displayBanner, displayCommandBanner } from './utils/banner.js';
@@ -324,6 +325,31 @@ program
324
325
  handleCommandError('cache', error);
325
326
  }
326
327
  });
328
+ // EMAIL COMMAND - Contact developer with feedback
329
+ program
330
+ .command('email')
331
+ .description(chalk.hex('#00d2d3')('📧 ') + chalk.hex('#4facfe')('Contact developer with feedback, bug reports, and feature requests'))
332
+ .argument('[category]', chalk.hex('#95afc0')('Feedback category (bug, feature, template, question, improvement, docs)'))
333
+ .option('-h, --help', chalk.hex('#95afc0')('Display help for this command'))
334
+ .option('-l, --list', chalk.hex('#95afc0')('List all available email categories'))
335
+ .option('--install', chalk.hex('#95afc0')('Show Email MCP Server installation instructions'))
336
+ .option('--setup', chalk.hex('#95afc0')('Show email configuration setup guide'))
337
+ .option('--status', chalk.hex('#95afc0')('Check email system status and availability'))
338
+ .option('--test', chalk.hex('#95afc0')('Send a test email to verify functionality'))
339
+ .option('--commands', chalk.hex('#95afc0')('Show all available Email MCP Server commands'))
340
+ .option('--dev', chalk.hex('#95afc0')('Show development setup information and troubleshooting'))
341
+ .option('--quick', chalk.hex('#95afc0')('Quick feedback mode with minimal prompts'))
342
+ .on('--help', () => {
343
+ showEmailHelp();
344
+ })
345
+ .action(async (category, options) => {
346
+ try {
347
+ await emailCommand(category, options);
348
+ }
349
+ catch (error) {
350
+ handleCommandError('email', error);
351
+ }
352
+ });
327
353
  // DEPLOY COMMAND - Future deployment features
328
354
  program
329
355
  .command('deploy')
@@ -360,6 +386,7 @@ program.on('--help', () => {
360
386
  chalk.hex('#95afc0')(' ') + piGradient('pi') + ' ' + addGradient('add') + chalk.hex('#95afc0')(' docker # Add Docker configuration') + '\n' +
361
387
  chalk.hex('#95afc0')(' ') + piGradient('pi') + ' ' + commandGradient('check') + chalk.hex('#95afc0')(' # Check package versions') + '\n' +
362
388
  chalk.hex('#95afc0')(' ') + piGradient('pi') + ' ' + commandGradient('check') + chalk.hex('#95afc0')(' react # Check specific package') + '\n' +
389
+ chalk.hex('#95afc0')(' ') + piGradient('pi') + ' ' + commandGradient('email') + chalk.hex('#95afc0')(' # Contact developer with feedback') + '\n' +
363
390
  chalk.hex('#ff6b6b')('🌍 REPOSITORY & DEPLOYMENT') + '\n' +
364
391
  chalk.hex('#95afc0')(' ') + piGradient('pi') + ' ' + commandGradient('clone') + chalk.hex('#95afc0')(' # Clone repositories interactively') + '\n' +
365
392
  chalk.hex('#95afc0')(' ') + piGradient('pi') + ' ' + commandGradient('clone') + chalk.hex('#95afc0')(' facebook/react # Clone popular repositories') + '\n' +
@@ -395,7 +422,8 @@ if (process.argv.length === 2) {
395
422
  chalk.hex('#10ac84')(' ') + piGradient('pi') + ' ' + gradient(['#10ac84', '#00d2d3'])('create') + chalk.hex('#95afc0')(' # Create new project (React, Next.js, Vue, etc.)') + '\n' +
396
423
  chalk.hex('#9c88ff')(' ') + piGradient('pi') + ' ' + gradient(['#9c88ff', '#667eea'])('analyze') + chalk.hex('#95afc0')(' # Show project analytics dashboard') + '\n' +
397
424
  chalk.hex('#ff6b6b')(' ') + piGradient('pi') + ' ' + gradient(['#ff6b6b', '#ff9a9e'])('update') + chalk.hex('#95afc0')(' # Update packages to latest versions') + '\n' +
398
- chalk.hex('#00d2d3')(' ') + piGradient('pi') + ' ' + gradient(['#00d2d3', '#0084ff'])('clone') + chalk.hex('#95afc0')(' user/repo # Clone and setup GitHub repositories') + '\n\n' +
425
+ chalk.hex('#00d2d3')(' ') + piGradient('pi') + ' ' + gradient(['#00d2d3', '#0084ff'])('clone') + chalk.hex('#95afc0')(' user/repo # Clone and setup GitHub repositories') + '\n' +
426
+ chalk.hex('#00d2d3')(' ') + piGradient('pi') + ' ' + gradient(['#00d2d3', '#4facfe'])('email') + chalk.hex('#95afc0')(' # Contact developer with feedback') + '\n\n' +
399
427
  chalk.hex('#ffa502')('Need help? Try these:') + '\n\n' +
400
428
  chalk.hex('#ff6b6b')(' ') + piGradient('pi') + ' ' + chalk.hex('#ff6b6b')('--help') + chalk.hex('#95afc0')(' # See all available commands') + '\n' +
401
429
  chalk.hex('#95afc0')(' ') + piGradient('pi') + ' ' + chalk.hex('#95afc0')('command --help') + chalk.hex('#95afc0')(' # Get detailed help for any command') + '\n\n' +
@@ -155,7 +155,8 @@ function adjustNextjsSrcFilePath(filePath, hasSrcFolder, projectPath) {
155
155
  '.env', '.env.local', '.env.example', '.env.development', '.env.production',
156
156
  'package.json', 'next.config.js', 'next.config.mjs', 'next.config.ts',
157
157
  'tailwind.config.js', 'tailwind.config.ts', 'postcss.config.js', 'postcss.config.ts',
158
- 'middleware.ts', 'middleware.js', 'tsconfig.json', 'jsconfig.json'
158
+ 'tsconfig.json', 'jsconfig.json', 'README.md', '.gitignore',
159
+ 'docker-compose.yml', 'Dockerfile', 'yarn.lock', 'pnpm-lock.yaml', 'package-lock.json'
159
160
  ];
160
161
  const fileName = path.basename(filePath);
161
162
  // Always put public/ files in root public/
@@ -170,16 +171,8 @@ function adjustNextjsSrcFilePath(filePath, hasSrcFolder, projectPath) {
170
171
  if (filePath.startsWith('src/')) {
171
172
  return path.join(projectPath, filePath);
172
173
  }
173
- // For app/pages/components/lib/utils/hooks/styles/types, put in src/
174
- const srcDirs = ['app', 'pages', 'components', 'lib', 'utils', 'styles', 'hooks', 'types'];
175
- if (srcDirs.some(dir => filePath.startsWith(dir + '/'))) {
176
- return path.join(projectPath, 'src', filePath);
177
- }
178
- // For .ts/.tsx/.js/.jsx files not in config, put in src/
179
- if (fileName.match(/\.(ts|tsx|js|jsx)$/) && !fileName.includes('config')) {
180
- return path.join(projectPath, 'src', filePath);
181
- }
182
- // Default: put in src/
174
+ // Everything else goes in src/ folder for Next.js projects with src structure
175
+ // This includes: app/, pages/, components/, lib/, utils/, styles/, hooks/, types/, middleware.ts, etc.
183
176
  return path.join(projectPath, 'src', filePath);
184
177
  }
185
178
  /**