@digilogiclabs/create-saas-app 2.2.0 → 2.2.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.
- package/bin/index.js +2 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/commands/add.d.ts +6 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/add.js +39 -0
- package/dist/cli/commands/add.js.map +1 -0
- package/dist/cli/commands/create.d.ts +45 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +175 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/index.d.ts +4 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +20 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/update.d.ts +6 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +68 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +61 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/prompts/index.d.ts +2 -0
- package/dist/cli/prompts/index.d.ts.map +1 -0
- package/dist/cli/prompts/index.js +18 -0
- package/dist/cli/prompts/index.js.map +1 -0
- package/dist/cli/prompts/project-setup.d.ts +5 -0
- package/dist/cli/prompts/project-setup.d.ts.map +1 -0
- package/dist/cli/prompts/project-setup.js +359 -0
- package/dist/cli/prompts/project-setup.js.map +1 -0
- package/dist/cli/utils/git.d.ts +9 -0
- package/dist/cli/utils/git.d.ts.map +1 -0
- package/dist/cli/utils/git.js +77 -0
- package/dist/cli/utils/git.js.map +1 -0
- package/dist/cli/utils/index.d.ts +5 -0
- package/dist/cli/utils/index.d.ts.map +1 -0
- package/dist/cli/utils/index.js +21 -0
- package/dist/cli/utils/index.js.map +1 -0
- package/dist/cli/utils/logger.d.ts +16 -0
- package/dist/cli/utils/logger.d.ts.map +1 -0
- package/dist/cli/utils/logger.js +55 -0
- package/dist/cli/utils/logger.js.map +1 -0
- package/dist/cli/utils/package-manager.d.ts +8 -0
- package/dist/cli/utils/package-manager.d.ts.map +1 -0
- package/dist/cli/utils/package-manager.js +92 -0
- package/dist/cli/utils/package-manager.js.map +1 -0
- package/dist/cli/utils/spinner.d.ts +7 -0
- package/dist/cli/utils/spinner.d.ts.map +1 -0
- package/dist/cli/utils/spinner.js +48 -0
- package/dist/cli/utils/spinner.js.map +1 -0
- package/dist/cli/validators/dependencies.d.ts +15 -0
- package/dist/cli/validators/dependencies.d.ts.map +1 -0
- package/dist/cli/validators/dependencies.js +108 -0
- package/dist/cli/validators/dependencies.js.map +1 -0
- package/dist/cli/validators/index.d.ts +3 -0
- package/dist/cli/validators/index.d.ts.map +1 -0
- package/dist/cli/validators/index.js +19 -0
- package/dist/cli/validators/index.js.map +1 -0
- package/dist/cli/validators/project-name.d.ts +5 -0
- package/dist/cli/validators/project-name.d.ts.map +1 -0
- package/dist/cli/validators/project-name.js +151 -0
- package/dist/cli/validators/project-name.js.map +1 -0
- package/dist/generators/file-processor.d.ts +28 -0
- package/dist/generators/file-processor.d.ts.map +1 -0
- package/dist/generators/file-processor.js +224 -0
- package/dist/generators/file-processor.js.map +1 -0
- package/dist/generators/index.d.ts +4 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +20 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/package-installer.d.ts +29 -0
- package/dist/generators/package-installer.d.ts.map +1 -0
- package/dist/generators/package-installer.js +177 -0
- package/dist/generators/package-installer.js.map +1 -0
- package/package.json +1 -1
- package/dist/index.js +0 -1837
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getProjectPrompts = getProjectPrompts;
|
|
7
|
+
exports.getAuthSetupPrompts = getAuthSetupPrompts;
|
|
8
|
+
exports.getThemeCustomizationPrompts = getThemeCustomizationPrompts;
|
|
9
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
|
+
const project_name_1 = require("../validators/project-name");
|
|
11
|
+
const logger_1 = require("../utils/logger");
|
|
12
|
+
/**
|
|
13
|
+
* Tier descriptions for the CLI selection
|
|
14
|
+
*/
|
|
15
|
+
const TIER_CHOICES = [
|
|
16
|
+
{
|
|
17
|
+
name: '🚀 Micro - Single feature MVP (auth only, minimal deps)',
|
|
18
|
+
value: 'micro',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: '💼 Starter - Basic SaaS (auth + payments) [Recommended]',
|
|
22
|
+
value: 'starter',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: '⚡ Pro - Full SaaS (auth + payments + AI)',
|
|
26
|
+
value: 'pro',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: '🏢 Enterprise - Full platform (all features + observability)',
|
|
30
|
+
value: 'enterprise',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
async function getProjectPrompts(initialConfig) {
|
|
34
|
+
logger_1.logger.title('🛠️ Project Configuration');
|
|
35
|
+
const questions = [
|
|
36
|
+
{
|
|
37
|
+
type: 'input',
|
|
38
|
+
name: 'name',
|
|
39
|
+
message: 'Project name:',
|
|
40
|
+
default: initialConfig.name,
|
|
41
|
+
validate: (input) => {
|
|
42
|
+
if (!(0, project_name_1.validateProjectName)(input)) {
|
|
43
|
+
const suggestion = (0, project_name_1.suggestProjectName)(input);
|
|
44
|
+
return `Invalid project name. Try: ${suggestion}`;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
},
|
|
48
|
+
filter: (input) => input.trim(),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
type: 'list',
|
|
52
|
+
name: 'platform',
|
|
53
|
+
message: 'Select platform:',
|
|
54
|
+
choices: [
|
|
55
|
+
{ name: '🌐 Web (Next.js)', value: 'web' },
|
|
56
|
+
{ name: '📱 Mobile (Expo)', value: 'mobile' },
|
|
57
|
+
{ name: '🚀 Both (Full-stack)', value: 'both' },
|
|
58
|
+
],
|
|
59
|
+
default: initialConfig.platform,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'list',
|
|
63
|
+
name: 'tier',
|
|
64
|
+
message: 'Select project tier:',
|
|
65
|
+
choices: TIER_CHOICES,
|
|
66
|
+
default: initialConfig.tier || 'starter',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: 'list',
|
|
70
|
+
name: 'template',
|
|
71
|
+
message: 'Select template:',
|
|
72
|
+
choices: (answers) => {
|
|
73
|
+
if (answers.platform === 'web') {
|
|
74
|
+
return [
|
|
75
|
+
// ═══════════════════════════════════════════════════════════════
|
|
76
|
+
// STARTER TEMPLATES (Recommended for new projects)
|
|
77
|
+
// ═══════════════════════════════════════════════════════════════
|
|
78
|
+
new inquirer_1.default.Separator('─── Starter Templates ───'),
|
|
79
|
+
{
|
|
80
|
+
name: '💼 Micro-SaaS - Single feature MVP (subscriptions, analytics)',
|
|
81
|
+
value: 'micro-saas',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: '💳 UI + Auth + Payments - Complete SaaS foundation [Recommended]',
|
|
85
|
+
value: 'ui-auth-payments',
|
|
86
|
+
},
|
|
87
|
+
// ═══════════════════════════════════════════════════════════════
|
|
88
|
+
// VERTICAL TEMPLATES (Industry-specific)
|
|
89
|
+
// ═══════════════════════════════════════════════════════════════
|
|
90
|
+
new inquirer_1.default.Separator('─── Vertical Templates ───'),
|
|
91
|
+
{
|
|
92
|
+
name: '🛒 Marketplace - Multi-vendor platform (products, orders, vendors)',
|
|
93
|
+
value: 'marketplace',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: '🤖 AI Platform - LLM-powered SaaS (chat, model selection)',
|
|
97
|
+
value: 'ai-platform',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: '📡 IoT Dashboard - Device monitoring & telemetry',
|
|
101
|
+
value: 'iot-dashboard',
|
|
102
|
+
},
|
|
103
|
+
// ═══════════════════════════════════════════════════════════════
|
|
104
|
+
// CORE TEMPLATES (Building blocks)
|
|
105
|
+
// ═══════════════════════════════════════════════════════════════
|
|
106
|
+
new inquirer_1.default.Separator('─── Core Templates ───'),
|
|
107
|
+
{
|
|
108
|
+
name: '📄 Base - Clean Next.js 15 starter',
|
|
109
|
+
value: 'base',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: '🎨 UI Only - Components library showcase (no auth)',
|
|
113
|
+
value: 'ui-only',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: '🔐 UI + Auth - Modern authentication flow',
|
|
117
|
+
value: 'ui-auth',
|
|
118
|
+
},
|
|
119
|
+
// ═══════════════════════════════════════════════════════════════
|
|
120
|
+
// AI-POWERED TEMPLATES
|
|
121
|
+
// ═══════════════════════════════════════════════════════════════
|
|
122
|
+
new inquirer_1.default.Separator('─── AI-Powered Templates ───'),
|
|
123
|
+
{
|
|
124
|
+
name: '🤖 AI + Auth - Text & chat AI integration',
|
|
125
|
+
value: 'ui-auth-ai',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: '🤖 AI + Auth + Payments - Full AI SaaS platform',
|
|
129
|
+
value: 'ui-auth-payments-ai',
|
|
130
|
+
},
|
|
131
|
+
// ═══════════════════════════════════════════════════════════════
|
|
132
|
+
// MEDIA TEMPLATES
|
|
133
|
+
// ═══════════════════════════════════════════════════════════════
|
|
134
|
+
new inquirer_1.default.Separator('─── Media Templates ───'),
|
|
135
|
+
{
|
|
136
|
+
name: '🎵 Audio SaaS - Music streaming & audio processing',
|
|
137
|
+
value: 'ui-auth-payments-audio',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: '🎬 Video SaaS - Video streaming & media platform',
|
|
141
|
+
value: 'ui-auth-payments-video',
|
|
142
|
+
},
|
|
143
|
+
// ═══════════════════════════════════════════════════════════════
|
|
144
|
+
// DEVELOPMENT TEMPLATES
|
|
145
|
+
// ═══════════════════════════════════════════════════════════════
|
|
146
|
+
new inquirer_1.default.Separator('─── Development Templates ───'),
|
|
147
|
+
{
|
|
148
|
+
name: '🧪 UI Package Test - Component testing environment',
|
|
149
|
+
value: 'ui-package-test',
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
}
|
|
153
|
+
else if (answers.platform === 'mobile') {
|
|
154
|
+
return [
|
|
155
|
+
{
|
|
156
|
+
name: '📱 Base - React Native + Expo starter',
|
|
157
|
+
value: 'base',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: '💳 UI + Auth + Payments - Full mobile SaaS (v0.22.0)',
|
|
161
|
+
value: 'ui-auth-payments',
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
name: '🤖 AI + Auth + Payments - Mobile AI SaaS with generation tools',
|
|
165
|
+
value: 'ui-auth-payments-ai',
|
|
166
|
+
},
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// Both platform - show available cross-platform options
|
|
171
|
+
return [
|
|
172
|
+
{
|
|
173
|
+
name: '🚀 Full Stack - Web + Mobile SaaS platform',
|
|
174
|
+
value: 'ui-auth-payments',
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: '🤖 AI Full Stack - Web + Mobile AI platform',
|
|
178
|
+
value: 'ui-auth-payments-ai',
|
|
179
|
+
},
|
|
180
|
+
];
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
default: initialConfig.template,
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
type: 'list',
|
|
187
|
+
name: 'auth',
|
|
188
|
+
message: 'Select authentication provider:',
|
|
189
|
+
choices: [
|
|
190
|
+
{ name: '🔑 Keycloak - Self-hosted OIDC (recommended)', value: 'keycloak' },
|
|
191
|
+
{ name: '⚡ Supabase - Open source alternative', value: 'supabase' },
|
|
192
|
+
{ name: "🔥 Firebase - Google's platform", value: 'firebase' },
|
|
193
|
+
],
|
|
194
|
+
default: initialConfig.auth,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
type: 'list',
|
|
198
|
+
name: 'database',
|
|
199
|
+
message: 'Select database provider:',
|
|
200
|
+
choices: (answers) => {
|
|
201
|
+
const choices = [
|
|
202
|
+
{
|
|
203
|
+
name: '🐘 PostgreSQL + Drizzle - Self-hosted, full control (recommended)',
|
|
204
|
+
value: 'postgresql',
|
|
205
|
+
},
|
|
206
|
+
{ name: '⚡ Supabase - PostgreSQL with real-time & dashboard', value: 'supabase' },
|
|
207
|
+
{ name: '🔥 Firebase - NoSQL with real-time', value: 'firebase' },
|
|
208
|
+
];
|
|
209
|
+
// For Firebase auth, suggest Firebase DB first
|
|
210
|
+
if (answers.auth === 'firebase') {
|
|
211
|
+
return choices.reverse();
|
|
212
|
+
}
|
|
213
|
+
return choices;
|
|
214
|
+
},
|
|
215
|
+
default: (answers) => {
|
|
216
|
+
// Keycloak pairs best with self-hosted PostgreSQL
|
|
217
|
+
if (answers.auth === 'keycloak')
|
|
218
|
+
return 'postgresql';
|
|
219
|
+
if (answers.auth === 'firebase')
|
|
220
|
+
return 'firebase';
|
|
221
|
+
return 'supabase';
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
type: 'list',
|
|
226
|
+
name: 'theme',
|
|
227
|
+
message: 'Select theme:',
|
|
228
|
+
choices: [
|
|
229
|
+
{ name: '🎨 Default - Clean and modern', value: 'default' },
|
|
230
|
+
{ name: '🏢 Corporate - Professional business theme', value: 'corporate' },
|
|
231
|
+
{ name: '🚀 Startup - Bold and innovative', value: 'startup' },
|
|
232
|
+
],
|
|
233
|
+
default: initialConfig.theme,
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
type: 'list',
|
|
237
|
+
name: 'themeColor',
|
|
238
|
+
message: 'Select theme color:',
|
|
239
|
+
choices: [
|
|
240
|
+
{ name: '🔵 Blue - Classic and trustworthy', value: 'blue' },
|
|
241
|
+
{ name: '🟢 Green - Fresh and natural', value: 'green' },
|
|
242
|
+
{ name: '🟣 Purple - Creative and modern', value: 'purple' },
|
|
243
|
+
{ name: '🟠 Orange - Energetic and friendly', value: 'orange' },
|
|
244
|
+
{ name: '🔴 Red - Bold and attention-grabbing', value: 'red' },
|
|
245
|
+
{ name: '⚫ Slate - Professional and minimal', value: 'slate' },
|
|
246
|
+
],
|
|
247
|
+
default: initialConfig.themeColor,
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
type: 'list',
|
|
251
|
+
name: 'defaultTheme',
|
|
252
|
+
message: 'Select default theme mode:',
|
|
253
|
+
choices: [
|
|
254
|
+
{ name: '🌙 System - Follow system preference', value: 'system' },
|
|
255
|
+
{ name: '☀️ Light - Always light mode', value: 'light' },
|
|
256
|
+
{ name: '🌙 Dark - Always dark mode', value: 'dark' },
|
|
257
|
+
],
|
|
258
|
+
default: initialConfig.defaultTheme,
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
type: 'confirm',
|
|
262
|
+
name: 'install',
|
|
263
|
+
message: 'Install dependencies?',
|
|
264
|
+
default: initialConfig.install,
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
type: 'confirm',
|
|
268
|
+
name: 'git',
|
|
269
|
+
message: 'Initialize git repository?',
|
|
270
|
+
default: initialConfig.git,
|
|
271
|
+
},
|
|
272
|
+
];
|
|
273
|
+
const answers = await inquirer_1.default.prompt(questions);
|
|
274
|
+
return {
|
|
275
|
+
...initialConfig,
|
|
276
|
+
...answers,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
async function getAuthSetupPrompts(authProvider) {
|
|
280
|
+
logger_1.logger.title(`🔐 ${authProvider} Configuration`);
|
|
281
|
+
if (authProvider === 'firebase') {
|
|
282
|
+
const questions = [
|
|
283
|
+
{
|
|
284
|
+
type: 'input',
|
|
285
|
+
name: 'projectId',
|
|
286
|
+
message: 'Firebase Project ID:',
|
|
287
|
+
validate: (input) => input.length > 0 || 'Project ID is required',
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
type: 'input',
|
|
291
|
+
name: 'apiKey',
|
|
292
|
+
message: 'Firebase API Key:',
|
|
293
|
+
validate: (input) => input.length > 0 || 'API Key is required',
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
type: 'input',
|
|
297
|
+
name: 'authDomain',
|
|
298
|
+
message: 'Firebase Auth Domain:',
|
|
299
|
+
validate: (input) => input.length > 0 || 'Auth Domain is required',
|
|
300
|
+
},
|
|
301
|
+
];
|
|
302
|
+
return await inquirer_1.default.prompt(questions);
|
|
303
|
+
}
|
|
304
|
+
else if (authProvider === 'supabase') {
|
|
305
|
+
const questions = [
|
|
306
|
+
{
|
|
307
|
+
type: 'input',
|
|
308
|
+
name: 'url',
|
|
309
|
+
message: 'Supabase URL:',
|
|
310
|
+
validate: (input) => {
|
|
311
|
+
if (!input.length)
|
|
312
|
+
return 'URL is required';
|
|
313
|
+
if (!input.startsWith('https://'))
|
|
314
|
+
return 'URL must start with https://';
|
|
315
|
+
return true;
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
type: 'input',
|
|
320
|
+
name: 'anonKey',
|
|
321
|
+
message: 'Supabase Anon Key:',
|
|
322
|
+
validate: (input) => input.length > 0 || 'Anon Key is required',
|
|
323
|
+
},
|
|
324
|
+
];
|
|
325
|
+
return await inquirer_1.default.prompt(questions);
|
|
326
|
+
}
|
|
327
|
+
return {};
|
|
328
|
+
}
|
|
329
|
+
async function getThemeCustomizationPrompts(theme) {
|
|
330
|
+
logger_1.logger.title(`🎨 ${theme} Theme Customization`);
|
|
331
|
+
const questions = [
|
|
332
|
+
{
|
|
333
|
+
type: 'input',
|
|
334
|
+
name: 'primaryColor',
|
|
335
|
+
message: 'Primary color (hex):',
|
|
336
|
+
default: theme === 'corporate' ? '#1e40af' : theme === 'startup' ? '#7c3aed' : '#3b82f6',
|
|
337
|
+
validate: (input) => {
|
|
338
|
+
if (!/^#[0-9A-F]{6}$/i.test(input)) {
|
|
339
|
+
return 'Please enter a valid hex color (e.g., #3b82f6)';
|
|
340
|
+
}
|
|
341
|
+
return true;
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
type: 'input',
|
|
346
|
+
name: 'fontFamily',
|
|
347
|
+
message: 'Font family:',
|
|
348
|
+
default: theme === 'corporate' ? 'Inter' : theme === 'startup' ? 'Poppins' : 'System UI',
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
type: 'confirm',
|
|
352
|
+
name: 'darkMode',
|
|
353
|
+
message: 'Enable dark mode support?',
|
|
354
|
+
default: true,
|
|
355
|
+
},
|
|
356
|
+
];
|
|
357
|
+
return await inquirer_1.default.prompt(questions);
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=project-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-setup.js","sourceRoot":"","sources":["../../../src/cli/prompts/project-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function initializeGit(projectPath: string): Promise<void>;
|
|
2
|
+
export declare function isGitRepository(projectPath: string): Promise<boolean>;
|
|
3
|
+
export declare function getGitUserInfo(): Promise<{
|
|
4
|
+
name?: string;
|
|
5
|
+
email?: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function hasGitChanges(projectPath: string): Promise<boolean>;
|
|
8
|
+
export declare function commitChanges(projectPath: string, message: string): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/git.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBtE;AAED,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3E;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAcjF;AAED,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOzE;AAED,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.initializeGit = initializeGit;
|
|
7
|
+
exports.isGitRepository = isGitRepository;
|
|
8
|
+
exports.getGitUserInfo = getGitUserInfo;
|
|
9
|
+
exports.hasGitChanges = hasGitChanges;
|
|
10
|
+
exports.commitChanges = commitChanges;
|
|
11
|
+
const execa_1 = __importDefault(require("execa"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
14
|
+
const logger_1 = require("./logger");
|
|
15
|
+
async function initializeGit(projectPath) {
|
|
16
|
+
try {
|
|
17
|
+
// Check if git is available
|
|
18
|
+
await (0, execa_1.default)('git', ['--version']);
|
|
19
|
+
// Initialize git repository
|
|
20
|
+
await (0, execa_1.default)('git', ['init'], { cwd: projectPath });
|
|
21
|
+
// Add all files
|
|
22
|
+
await (0, execa_1.default)('git', ['add', '.'], { cwd: projectPath });
|
|
23
|
+
// Create initial commit
|
|
24
|
+
await (0, execa_1.default)('git', ['commit', '-m', 'Initial commit from @digilogiclabs/create-saas-app'], {
|
|
25
|
+
cwd: projectPath,
|
|
26
|
+
});
|
|
27
|
+
logger_1.logger.debug('Git repository initialized successfully');
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
logger_1.logger.warn('Git initialization failed. You can initialize it manually later.');
|
|
31
|
+
logger_1.logger.debug('Git error:', error);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function isGitRepository(projectPath) {
|
|
35
|
+
try {
|
|
36
|
+
const gitDir = path_1.default.join(projectPath, '.git');
|
|
37
|
+
return await fs_extra_1.default.pathExists(gitDir);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function getGitUserInfo() {
|
|
44
|
+
try {
|
|
45
|
+
const [nameResult, emailResult] = await Promise.allSettled([
|
|
46
|
+
(0, execa_1.default)('git', ['config', '--global', 'user.name']),
|
|
47
|
+
(0, execa_1.default)('git', ['config', '--global', 'user.email']),
|
|
48
|
+
]);
|
|
49
|
+
return {
|
|
50
|
+
name: nameResult.status === 'fulfilled' ? nameResult.value.stdout : undefined,
|
|
51
|
+
email: emailResult.status === 'fulfilled' ? emailResult.value.stdout : undefined,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return {};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async function hasGitChanges(projectPath) {
|
|
59
|
+
try {
|
|
60
|
+
const result = await (0, execa_1.default)('git', ['status', '--porcelain'], { cwd: projectPath });
|
|
61
|
+
return result.stdout.trim().length > 0;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function commitChanges(projectPath, message) {
|
|
68
|
+
try {
|
|
69
|
+
await (0, execa_1.default)('git', ['add', '.'], { cwd: projectPath });
|
|
70
|
+
await (0, execa_1.default)('git', ['commit', '-m', message], { cwd: projectPath });
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
logger_1.logger.warn('Failed to commit changes');
|
|
74
|
+
logger_1.logger.debug('Git commit error:', error);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/cli/utils/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./logger"), exports);
|
|
18
|
+
__exportStar(require("./spinner"), exports);
|
|
19
|
+
__exportStar(require("./git"), exports);
|
|
20
|
+
__exportStar(require("./package-manager"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,wCAAsB;AACtB,oDAAkC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const logger: {
|
|
2
|
+
info: (message: string, ...args: unknown[]) => void;
|
|
3
|
+
success: (message: string, ...args: unknown[]) => void;
|
|
4
|
+
warn: (message: string, ...args: unknown[]) => void;
|
|
5
|
+
error: (message: string, ...args: unknown[]) => void;
|
|
6
|
+
debug: (message: string, ...args: unknown[]) => void;
|
|
7
|
+
log: (message: string, ...args: unknown[]) => void;
|
|
8
|
+
newLine: () => void;
|
|
9
|
+
divider: () => void;
|
|
10
|
+
title: (message: string) => void;
|
|
11
|
+
step: (step: number, total: number, message: string) => void;
|
|
12
|
+
highlight: (message: string) => void;
|
|
13
|
+
code: (code: string) => void;
|
|
14
|
+
list: (items: string[]) => void;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;oBACD,MAAM,WAAW,OAAO,EAAE;uBAIvB,MAAM,WAAW,OAAO,EAAE;oBAI7B,MAAM,WAAW,OAAO,EAAE;qBAIzB,MAAM,WAAW,OAAO,EAAE;qBAI1B,MAAM,WAAW,OAAO,EAAE;mBAM5B,MAAM,WAAW,OAAO,EAAE;;;qBAYxB,MAAM;iBAMV,MAAM,SAAS,MAAM,WAAW,MAAM;yBAI9B,MAAM;iBAId,MAAM;kBAIL,MAAM,EAAE;CAKvB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.logger = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
exports.logger = {
|
|
9
|
+
info: (message, ...args) => {
|
|
10
|
+
console.log(chalk_1.default.blue('ℹ'), message, ...args);
|
|
11
|
+
},
|
|
12
|
+
success: (message, ...args) => {
|
|
13
|
+
console.log(chalk_1.default.green('✓'), message, ...args);
|
|
14
|
+
},
|
|
15
|
+
warn: (message, ...args) => {
|
|
16
|
+
console.log(chalk_1.default.yellow('⚠'), message, ...args);
|
|
17
|
+
},
|
|
18
|
+
error: (message, ...args) => {
|
|
19
|
+
console.log(chalk_1.default.red('✗'), message, ...args);
|
|
20
|
+
},
|
|
21
|
+
debug: (message, ...args) => {
|
|
22
|
+
if (process.env.DEBUG) {
|
|
23
|
+
console.log(chalk_1.default.gray('🐛'), message, ...args);
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
log: (message, ...args) => {
|
|
27
|
+
console.log(message, ...args);
|
|
28
|
+
},
|
|
29
|
+
newLine: () => {
|
|
30
|
+
console.log();
|
|
31
|
+
},
|
|
32
|
+
divider: () => {
|
|
33
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
34
|
+
},
|
|
35
|
+
title: (message) => {
|
|
36
|
+
console.log();
|
|
37
|
+
console.log(chalk_1.default.bold.cyan(message));
|
|
38
|
+
console.log(chalk_1.default.gray('─'.repeat(message.length)));
|
|
39
|
+
},
|
|
40
|
+
step: (step, total, message) => {
|
|
41
|
+
console.log(chalk_1.default.cyan(`[${step}/${total}]`), message);
|
|
42
|
+
},
|
|
43
|
+
highlight: (message) => {
|
|
44
|
+
console.log(chalk_1.default.bold.magenta(message));
|
|
45
|
+
},
|
|
46
|
+
code: (code) => {
|
|
47
|
+
console.log(chalk_1.default.gray(' ' + code));
|
|
48
|
+
},
|
|
49
|
+
list: (items) => {
|
|
50
|
+
items.forEach((item) => {
|
|
51
|
+
console.log(chalk_1.default.gray(' •'), item);
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/cli/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type PackageManager = 'npm' | 'yarn' | 'pnpm';
|
|
2
|
+
export declare function detectPackageManager(projectPath?: string): Promise<PackageManager>;
|
|
3
|
+
export declare function getInstallCommand(packageManager: PackageManager): Promise<string[]>;
|
|
4
|
+
export declare function getAddCommand(packageManager: PackageManager, packages: string[], dev?: boolean): Promise<string[]>;
|
|
5
|
+
export declare function getRunCommand(packageManager: PackageManager, script: string): Promise<string[]>;
|
|
6
|
+
export declare function isPackageManagerAvailable(packageManager: PackageManager): Promise<boolean>;
|
|
7
|
+
export declare function getPackageManagerDisplayName(packageManager: PackageManager): string;
|
|
8
|
+
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/package-manager.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAErD,wBAAsB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA8BxF;AAED,wBAAsB,iBAAiB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CASzF;AAED,wBAAsB,aAAa,CACjC,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,UAAQ,GACV,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED,wBAAsB,aAAa,CACjC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED,wBAAsB,yBAAyB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhG;AAED,wBAAgB,4BAA4B,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,CASnF"}
|