@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.
Files changed (77) hide show
  1. package/bin/index.js +2 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli/commands/add.d.ts +6 -0
  4. package/dist/cli/commands/add.d.ts.map +1 -0
  5. package/dist/cli/commands/add.js +39 -0
  6. package/dist/cli/commands/add.js.map +1 -0
  7. package/dist/cli/commands/create.d.ts +45 -0
  8. package/dist/cli/commands/create.d.ts.map +1 -0
  9. package/dist/cli/commands/create.js +175 -0
  10. package/dist/cli/commands/create.js.map +1 -0
  11. package/dist/cli/commands/index.d.ts +4 -0
  12. package/dist/cli/commands/index.d.ts.map +1 -0
  13. package/dist/cli/commands/index.js +20 -0
  14. package/dist/cli/commands/index.js.map +1 -0
  15. package/dist/cli/commands/update.d.ts +6 -0
  16. package/dist/cli/commands/update.d.ts.map +1 -0
  17. package/dist/cli/commands/update.js +68 -0
  18. package/dist/cli/commands/update.js.map +1 -0
  19. package/dist/cli/index.d.ts +4 -0
  20. package/dist/cli/index.d.ts.map +1 -0
  21. package/dist/cli/index.js +61 -0
  22. package/dist/cli/index.js.map +1 -0
  23. package/dist/cli/prompts/index.d.ts +2 -0
  24. package/dist/cli/prompts/index.d.ts.map +1 -0
  25. package/dist/cli/prompts/index.js +18 -0
  26. package/dist/cli/prompts/index.js.map +1 -0
  27. package/dist/cli/prompts/project-setup.d.ts +5 -0
  28. package/dist/cli/prompts/project-setup.d.ts.map +1 -0
  29. package/dist/cli/prompts/project-setup.js +359 -0
  30. package/dist/cli/prompts/project-setup.js.map +1 -0
  31. package/dist/cli/utils/git.d.ts +9 -0
  32. package/dist/cli/utils/git.d.ts.map +1 -0
  33. package/dist/cli/utils/git.js +77 -0
  34. package/dist/cli/utils/git.js.map +1 -0
  35. package/dist/cli/utils/index.d.ts +5 -0
  36. package/dist/cli/utils/index.d.ts.map +1 -0
  37. package/dist/cli/utils/index.js +21 -0
  38. package/dist/cli/utils/index.js.map +1 -0
  39. package/dist/cli/utils/logger.d.ts +16 -0
  40. package/dist/cli/utils/logger.d.ts.map +1 -0
  41. package/dist/cli/utils/logger.js +55 -0
  42. package/dist/cli/utils/logger.js.map +1 -0
  43. package/dist/cli/utils/package-manager.d.ts +8 -0
  44. package/dist/cli/utils/package-manager.d.ts.map +1 -0
  45. package/dist/cli/utils/package-manager.js +92 -0
  46. package/dist/cli/utils/package-manager.js.map +1 -0
  47. package/dist/cli/utils/spinner.d.ts +7 -0
  48. package/dist/cli/utils/spinner.d.ts.map +1 -0
  49. package/dist/cli/utils/spinner.js +48 -0
  50. package/dist/cli/utils/spinner.js.map +1 -0
  51. package/dist/cli/validators/dependencies.d.ts +15 -0
  52. package/dist/cli/validators/dependencies.d.ts.map +1 -0
  53. package/dist/cli/validators/dependencies.js +108 -0
  54. package/dist/cli/validators/dependencies.js.map +1 -0
  55. package/dist/cli/validators/index.d.ts +3 -0
  56. package/dist/cli/validators/index.d.ts.map +1 -0
  57. package/dist/cli/validators/index.js +19 -0
  58. package/dist/cli/validators/index.js.map +1 -0
  59. package/dist/cli/validators/project-name.d.ts +5 -0
  60. package/dist/cli/validators/project-name.d.ts.map +1 -0
  61. package/dist/cli/validators/project-name.js +151 -0
  62. package/dist/cli/validators/project-name.js.map +1 -0
  63. package/dist/generators/file-processor.d.ts +28 -0
  64. package/dist/generators/file-processor.d.ts.map +1 -0
  65. package/dist/generators/file-processor.js +224 -0
  66. package/dist/generators/file-processor.js.map +1 -0
  67. package/dist/generators/index.d.ts +4 -0
  68. package/dist/generators/index.d.ts.map +1 -0
  69. package/dist/generators/index.js +20 -0
  70. package/dist/generators/index.js.map +1 -0
  71. package/dist/generators/package-installer.d.ts +29 -0
  72. package/dist/generators/package-installer.d.ts.map +1 -0
  73. package/dist/generators/package-installer.js +177 -0
  74. package/dist/generators/package-installer.js.map +1 -0
  75. package/package.json +1 -1
  76. package/dist/index.js +0 -1837
  77. package/dist/index.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ interface AddOptions {
2
+ provider?: string;
3
+ }
4
+ export declare function addFeature(feature: string, _options?: AddOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,UAAe,iBAqC1E"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addFeature = addFeature;
4
+ const logger_1 = require("../utils/logger");
5
+ const spinner_1 = require("../utils/spinner");
6
+ async function addFeature(feature, _options = {}) {
7
+ try {
8
+ logger_1.logger.title(`Adding ${feature} feature`);
9
+ const validFeatures = [
10
+ 'auth',
11
+ 'billing',
12
+ 'analytics',
13
+ 'teams',
14
+ 'notifications',
15
+ 'admin',
16
+ 'api',
17
+ 'docs',
18
+ ];
19
+ if (!validFeatures.includes(feature)) {
20
+ logger_1.logger.error(`Invalid feature: ${feature}`);
21
+ logger_1.logger.info('Available features:');
22
+ logger_1.logger.list(validFeatures);
23
+ process.exit(1);
24
+ }
25
+ const addSpinner = (0, spinner_1.spinner)(`Adding ${feature} feature...`);
26
+ // Simulate feature addition (placeholder for now)
27
+ await new Promise((resolve) => setTimeout(resolve, 2000));
28
+ addSpinner.succeed(`${feature} feature added successfully`);
29
+ logger_1.logger.newLine();
30
+ logger_1.logger.success('Feature added successfully!');
31
+ logger_1.logger.info("Don't forget to update your environment variables if needed.");
32
+ }
33
+ catch (error) {
34
+ logger_1.logger.error('Failed to add feature:');
35
+ logger_1.logger.error(error instanceof Error ? error.message : String(error));
36
+ process.exit(1);
37
+ }
38
+ }
39
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":";;AAOA,gCAqCC;AA5CD,4CAAyC;AACzC,8CAA2C;AAMpC,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,WAAuB,EAAE;IACzE,IAAI,CAAC;QACH,eAAM,CAAC,KAAK,CAAC,UAAU,OAAO,UAAU,CAAC,CAAC;QAE1C,MAAM,aAAa,GAAG;YACpB,MAAM;YACN,SAAS;YACT,WAAW;YACX,OAAO;YACP,eAAe;YACf,OAAO;YACP,KAAK;YACL,MAAM;SACP,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,eAAM,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC5C,eAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACnC,eAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,IAAA,iBAAO,EAAC,UAAU,OAAO,aAAa,CAAC,CAAC;QAE3D,kDAAkD;QAClD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAE1D,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,6BAA6B,CAAC,CAAC;QAE5D,eAAM,CAAC,OAAO,EAAE,CAAC;QACjB,eAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAC9C,eAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACvC,eAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,45 @@
1
+ interface CreateOptions {
2
+ auth?: string;
3
+ database?: string;
4
+ theme?: string;
5
+ themeColor?: string;
6
+ defaultTheme?: string;
7
+ tier?: string;
8
+ withAi?: string | boolean;
9
+ aiProvider?: string;
10
+ install?: boolean;
11
+ git?: boolean;
12
+ yes?: boolean;
13
+ }
14
+ /**
15
+ * Project tier determines the scope and feature set of the generated project.
16
+ * - micro: Single feature MVP (auth only, minimal deps)
17
+ * - starter: Basic SaaS (auth + payments)
18
+ * - pro: Full SaaS (auth + payments + AI)
19
+ * - enterprise: Full platform (all features + observability + workers)
20
+ */
21
+ export type ProjectTier = 'micro' | 'starter' | 'pro' | 'enterprise';
22
+ export interface ProjectConfig {
23
+ platform: 'web' | 'mobile' | 'both';
24
+ template: string;
25
+ name: string;
26
+ tier: ProjectTier;
27
+ auth: 'firebase' | 'supabase' | 'keycloak';
28
+ database: 'postgresql' | 'supabase' | 'firebase';
29
+ theme: 'default' | 'corporate' | 'startup';
30
+ themeColor: 'blue' | 'green' | 'purple' | 'orange' | 'red' | 'slate';
31
+ defaultTheme: 'light' | 'dark' | 'system';
32
+ ai: {
33
+ enabled: boolean;
34
+ capabilities: string[];
35
+ provider: 'openai' | 'anthropic' | 'gemini';
36
+ };
37
+ install: boolean;
38
+ git: boolean;
39
+ }
40
+ export declare function createProject(platform: string, template?: string, name?: string, options?: CreateOptions & {
41
+ themeColor?: string;
42
+ defaultTheme?: string;
43
+ }): Promise<void>;
44
+ export {};
45
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAUA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,YAAY,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC3C,QAAQ,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IACjD,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3C,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;IACrE,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,EAAE,EAAE;QACF,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;KAC7C,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,GAAE,aAAa,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,iBA+K7E"}
@@ -0,0 +1,175 @@
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.createProject = createProject;
7
+ const path_1 = __importDefault(require("path"));
8
+ const logger_1 = require("../utils/logger");
9
+ const spinner_1 = require("../utils/spinner");
10
+ const project_name_1 = require("../validators/project-name");
11
+ const dependencies_1 = require("../validators/dependencies");
12
+ const project_setup_1 = require("../prompts/project-setup");
13
+ const template_generator_1 = require("../../generators/template-generator");
14
+ const package_installer_1 = require("../../generators/package-installer");
15
+ const git_1 = require("../utils/git");
16
+ async function createProject(platform, template, name, options = {}) {
17
+ try {
18
+ // Validate Node.js version
19
+ if (!(await (0, dependencies_1.validateNodeVersion)())) {
20
+ process.exit(1);
21
+ }
22
+ // Validate platform
23
+ const validPlatforms = ['web', 'mobile', 'both'];
24
+ if (!validPlatforms.includes(platform)) {
25
+ logger_1.logger.error(`Invalid platform: ${platform}. Must be one of: ${validPlatforms.join(', ')}`);
26
+ process.exit(1);
27
+ }
28
+ // Parse AI capabilities
29
+ const parseAiCapabilities = (withAi) => {
30
+ if (!withAi)
31
+ return { enabled: false, capabilities: [] };
32
+ if (withAi === true)
33
+ return { enabled: true, capabilities: ['text'] };
34
+ if (withAi === 'all')
35
+ return { enabled: true, capabilities: ['text', 'audio', 'video', 'rag'] };
36
+ return { enabled: true, capabilities: withAi.split(',').map((c) => c.trim()) };
37
+ };
38
+ const aiConfig = parseAiCapabilities(options.withAi);
39
+ // Auto-select template based on AI capabilities
40
+ const selectTemplateForAI = (capabilities, baseTemplate) => {
41
+ if (!aiConfig.enabled)
42
+ return baseTemplate || 'base';
43
+ const hasAudio = capabilities.includes('audio');
44
+ const hasVideo = capabilities.includes('video');
45
+ const hasText = capabilities.includes('text');
46
+ const hasRAG = capabilities.includes('rag') || capabilities.includes('knowledge');
47
+ // Use RAG template if RAG/knowledge capabilities are requested
48
+ if (hasRAG)
49
+ return 'ui-auth-payments-ai-rag';
50
+ // Use comprehensive AI template for other AI capabilities
51
+ if (hasVideo || hasAudio || hasText)
52
+ return 'ui-auth-payments-ai';
53
+ return baseTemplate || 'ui-auth-payments-ai';
54
+ };
55
+ // Determine tier from options or AI config
56
+ const determineTier = () => {
57
+ if (options.tier)
58
+ return options.tier;
59
+ if (aiConfig.enabled)
60
+ return 'pro';
61
+ return 'starter';
62
+ };
63
+ // Set up initial configuration
64
+ let config = {
65
+ platform: platform,
66
+ template: selectTemplateForAI(aiConfig.capabilities, template),
67
+ name: name || 'my-saas-app',
68
+ tier: determineTier(),
69
+ auth: options.auth || 'supabase',
70
+ database: options.database || 'supabase',
71
+ theme: options.theme || 'default',
72
+ themeColor: options.themeColor || 'blue',
73
+ defaultTheme: options.defaultTheme || 'system',
74
+ ai: {
75
+ enabled: aiConfig.enabled,
76
+ capabilities: aiConfig.capabilities,
77
+ provider: options.aiProvider || 'openai',
78
+ },
79
+ install: options.install !== false,
80
+ git: options.git !== false,
81
+ };
82
+ // Interactive prompts if not in yes mode
83
+ if (!options.yes) {
84
+ config = await (0, project_setup_1.getProjectPrompts)(config);
85
+ }
86
+ // Validate project name
87
+ if (!(0, project_name_1.validateProjectName)(config.name)) {
88
+ process.exit(1);
89
+ }
90
+ const projectPath = path_1.default.resolve(process.cwd(), config.name);
91
+ // Validate project path
92
+ if (!(await (0, project_name_1.validateProjectPath)(projectPath))) {
93
+ process.exit(1);
94
+ }
95
+ // Display configuration
96
+ logger_1.logger.title('🚀 Creating your SaaS application');
97
+ logger_1.logger.info(`Platform: ${config.platform}`);
98
+ logger_1.logger.info(`Tier: ${config.tier}`);
99
+ logger_1.logger.info(`Template: ${config.template}`);
100
+ logger_1.logger.info(`Project: ${config.name}`);
101
+ logger_1.logger.info(`Auth: ${config.auth}`);
102
+ logger_1.logger.info(`Database: ${config.database}`);
103
+ logger_1.logger.info(`Theme: ${config.theme}`);
104
+ logger_1.logger.info(`Theme Color: ${config.themeColor}`);
105
+ logger_1.logger.info(`Default Theme: ${config.defaultTheme}`);
106
+ if (config.ai.enabled) {
107
+ logger_1.logger.info(`AI: Enabled (${config.ai.capabilities.join(', ')}) - ${config.ai.provider}`);
108
+ }
109
+ logger_1.logger.newLine();
110
+ // Generate project structure
111
+ const templateSpinner = (0, spinner_1.spinner)('Generating project structure...');
112
+ try {
113
+ const generator = new template_generator_1.TemplateGenerator(config);
114
+ await generator.generate(projectPath);
115
+ templateSpinner.succeed('Project structure created');
116
+ }
117
+ catch (_error) {
118
+ templateSpinner.fail('Failed to generate project structure');
119
+ throw _error;
120
+ }
121
+ // Install dependencies
122
+ if (config.install) {
123
+ const installSpinner = (0, spinner_1.spinner)('Installing dependencies...');
124
+ try {
125
+ const installer = new package_installer_1.PackageInstaller(projectPath);
126
+ await installer.install();
127
+ installSpinner.succeed('Dependencies installed');
128
+ }
129
+ catch (_error) {
130
+ installSpinner.fail('Failed to install dependencies');
131
+ logger_1.logger.warn('You can install dependencies manually by running:');
132
+ logger_1.logger.code(`cd ${config.name} && npm install`);
133
+ }
134
+ }
135
+ // Initialize git repository
136
+ if (config.git) {
137
+ const gitSpinner = (0, spinner_1.spinner)('Initializing git repository...');
138
+ try {
139
+ await (0, git_1.initializeGit)(projectPath);
140
+ gitSpinner.succeed('Git repository initialized');
141
+ }
142
+ catch (_error) {
143
+ gitSpinner.fail('Failed to initialize git repository');
144
+ logger_1.logger.warn('You can initialize git manually by running:');
145
+ logger_1.logger.code(`cd ${config.name} && git init`);
146
+ }
147
+ }
148
+ // Success message with next steps
149
+ logger_1.logger.newLine();
150
+ logger_1.logger.success('🎉 Project created successfully!');
151
+ logger_1.logger.newLine();
152
+ logger_1.logger.title('Next steps:');
153
+ logger_1.logger.code(`cd ${config.name}`);
154
+ if (!config.install) {
155
+ logger_1.logger.code('npm install');
156
+ }
157
+ if (config.platform === 'web' || config.platform === 'both') {
158
+ logger_1.logger.code('npm run dev');
159
+ logger_1.logger.info('Open http://localhost:3000 in your browser');
160
+ }
161
+ if (config.platform === 'mobile' || config.platform === 'both') {
162
+ logger_1.logger.code('npx expo start');
163
+ logger_1.logger.info('Scan QR code with Expo Go app');
164
+ }
165
+ logger_1.logger.newLine();
166
+ logger_1.logger.info('📚 Documentation: https://docs.digilogiclabs.com');
167
+ logger_1.logger.info('💬 Support: https://discord.gg/digilogiclabs');
168
+ }
169
+ catch (error) {
170
+ logger_1.logger.error('Failed to create project:');
171
+ logger_1.logger.error(error instanceof Error ? error.message : String(error));
172
+ process.exit(1);
173
+ }
174
+ }
175
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":";;;;;AAoDA,sCAmLC;AAvOD,gDAAwB;AACxB,4CAAyC;AACzC,8CAA2C;AAC3C,6DAAsF;AACtF,6DAAiE;AACjE,4DAA6D;AAC7D,4EAAwE;AACxE,0EAAsE;AACtE,sCAA6C;AA4CtC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,QAAiB,EACjB,IAAa,EACb,UAA0E,EAAE;IAE5E,IAAI,CAAC;QACH,2BAA2B;QAC3B,IAAI,CAAC,CAAC,MAAM,IAAA,kCAAmB,GAAE,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,oBAAoB;QACpB,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,eAAM,CAAC,KAAK,CAAC,qBAAqB,QAAQ,qBAAqB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,wBAAwB;QACxB,MAAM,mBAAmB,GAAG,CAC1B,MAAyB,EACqB,EAAE;YAChD,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;YACzD,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACtE,IAAI,MAAM,KAAK,KAAK;gBAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACjF,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAErD,gDAAgD;QAChD,MAAM,mBAAmB,GAAG,CAAC,YAAsB,EAAE,YAAqB,EAAU,EAAE;YACpF,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,OAAO,YAAY,IAAI,MAAM,CAAC;YAErD,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAElF,+DAA+D;YAC/D,IAAI,MAAM;gBAAE,OAAO,yBAAyB,CAAC;YAE7C,0DAA0D;YAC1D,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO;gBAAE,OAAO,qBAAqB,CAAC;YAElE,OAAO,YAAY,IAAI,qBAAqB,CAAC;QAC/C,CAAC,CAAC;QAEF,2CAA2C;QAC3C,MAAM,aAAa,GAAG,GAAgB,EAAE;YACtC,IAAI,OAAO,CAAC,IAAI;gBAAE,OAAO,OAAO,CAAC,IAAmB,CAAC;YACrD,IAAI,QAAQ,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEF,+BAA+B;QAC/B,IAAI,MAAM,GAAkB;YAC1B,QAAQ,EAAE,QAAqC;YAC/C,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;YAC9D,IAAI,EAAE,IAAI,IAAI,aAAa;YAC3B,IAAI,EAAE,aAAa,EAAE;YACrB,IAAI,EAAG,OAAO,CAAC,IAA6C,IAAI,UAAU;YAC1E,QAAQ,EAAG,OAAO,CAAC,QAAmD,IAAI,UAAU;YACpF,KAAK,EAAG,OAAO,CAAC,KAA6C,IAAI,SAAS;YAC1E,UAAU,EACP,OAAO,CAAC,UAAuE,IAAI,MAAM;YAC5F,YAAY,EAAG,OAAO,CAAC,YAA4C,IAAI,QAAQ;YAC/E,EAAE,EAAE;gBACF,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,QAAQ,EAAG,OAAO,CAAC,UAAgD,IAAI,QAAQ;aAChF;YACD,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,KAAK;YAClC,GAAG,EAAE,OAAO,CAAC,GAAG,KAAK,KAAK;SAC3B,CAAC;QAEF,yCAAyC;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,GAAG,MAAM,IAAA,iCAAiB,EAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,IAAA,kCAAmB,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAE7D,wBAAwB;QACxB,IAAI,CAAC,CAAC,MAAM,IAAA,kCAAmB,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,wBAAwB;QACxB,eAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAClD,eAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5C,eAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,eAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5C,eAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,eAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,eAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5C,eAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,eAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACjD,eAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;YACtB,eAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,eAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,6BAA6B;QAC7B,MAAM,eAAe,GAAG,IAAA,iBAAO,EAAC,iCAAiC,CAAC,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,sCAAiB,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACtC,eAAe,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,eAAe,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAC7D,MAAM,MAAM,CAAC;QACf,CAAC;QAED,uBAAuB;QACvB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,IAAA,iBAAO,EAAC,4BAA4B,CAAC,CAAC;YAC7D,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,oCAAgB,CAAC,WAAW,CAAC,CAAC;gBACpD,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC1B,cAAc,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,cAAc,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;gBACtD,eAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;gBACjE,eAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,iBAAiB,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAA,iBAAO,EAAC,gCAAgC,CAAC,CAAC;YAC7D,IAAI,CAAC;gBACH,MAAM,IAAA,mBAAa,EAAC,WAAW,CAAC,CAAC;gBACjC,UAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,UAAU,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;gBACvD,eAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBAC3D,eAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,cAAc,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,eAAM,CAAC,OAAO,EAAE,CAAC;QACjB,eAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;QACnD,eAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,eAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5B,eAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,eAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC5D,eAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3B,eAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC/D,eAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC9B,eAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;QAED,eAAM,CAAC,OAAO,EAAE,CAAC;QACjB,eAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAChE,eAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1C,eAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './create';
2
+ export * from './add';
3
+ export * from './update';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,20 @@
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("./create"), exports);
18
+ __exportStar(require("./add"), exports);
19
+ __exportStar(require("./update"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,wCAAsB;AACtB,2CAAyB"}
@@ -0,0 +1,6 @@
1
+ interface UpdateOptions {
2
+ check?: boolean;
3
+ }
4
+ export declare function updateDependencies(options?: UpdateOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AASD,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,aAAkB,iBAqDnE"}
@@ -0,0 +1,68 @@
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.updateDependencies = updateDependencies;
7
+ const logger_1 = require("../utils/logger");
8
+ const spinner_1 = require("../utils/spinner");
9
+ const package_manager_1 = require("../utils/package-manager");
10
+ const execa_1 = __importDefault(require("execa"));
11
+ const DIGILOGIC_PACKAGES = [
12
+ '@digilogiclabs/saas-factory-ui',
13
+ '@digilogiclabs/saas-factory-auth',
14
+ '@digilogiclabs/saas-factory-billing',
15
+ '@digilogiclabs/saas-factory-analytics',
16
+ ];
17
+ async function updateDependencies(options = {}) {
18
+ try {
19
+ logger_1.logger.title('Updating Digi Logic Labs dependencies');
20
+ const packageManager = await (0, package_manager_1.detectPackageManager)();
21
+ logger_1.logger.info(`Using package manager: ${packageManager}`);
22
+ if (options.check) {
23
+ const checkSpinner = (0, spinner_1.spinner)('Checking for updates...');
24
+ // Check for outdated packages
25
+ try {
26
+ const result = await (0, execa_1.default)(packageManager, ['outdated', ...DIGILOGIC_PACKAGES], {
27
+ reject: false,
28
+ });
29
+ checkSpinner.succeed('Update check completed');
30
+ if (result.stdout) {
31
+ logger_1.logger.info('Available updates:');
32
+ logger_1.logger.log(result.stdout);
33
+ }
34
+ else {
35
+ logger_1.logger.success('All Digi Logic Labs packages are up to date!');
36
+ }
37
+ }
38
+ catch (error) {
39
+ checkSpinner.fail('Failed to check for updates');
40
+ throw error;
41
+ }
42
+ }
43
+ else {
44
+ const updateSpinner = (0, spinner_1.spinner)('Updating packages...');
45
+ try {
46
+ // Update packages
47
+ const command = await (0, package_manager_1.getAddCommand)(packageManager, DIGILOGIC_PACKAGES);
48
+ await (0, execa_1.default)(command[0], command.slice(1), {
49
+ stdio: 'inherit',
50
+ });
51
+ updateSpinner.succeed('Packages updated successfully');
52
+ logger_1.logger.newLine();
53
+ logger_1.logger.success('All Digi Logic Labs packages have been updated!');
54
+ logger_1.logger.info("Don't forget to test your application after updating.");
55
+ }
56
+ catch (error) {
57
+ updateSpinner.fail('Failed to update packages');
58
+ throw error;
59
+ }
60
+ }
61
+ }
62
+ catch (error) {
63
+ logger_1.logger.error('Failed to update dependencies:');
64
+ logger_1.logger.error(error instanceof Error ? error.message : String(error));
65
+ process.exit(1);
66
+ }
67
+ }
68
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":";;;;;AAgBA,gDAqDC;AArED,4CAAyC;AACzC,8CAA2C;AAC3C,8DAA+E;AAC/E,kDAA0B;AAM1B,MAAM,kBAAkB,GAAG;IACzB,gCAAgC;IAChC,kCAAkC;IAClC,qCAAqC;IACrC,uCAAuC;CACxC,CAAC;AAEK,KAAK,UAAU,kBAAkB,CAAC,UAAyB,EAAE;IAClE,IAAI,CAAC;QACH,eAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAEtD,MAAM,cAAc,GAAG,MAAM,IAAA,sCAAoB,GAAE,CAAC;QACpD,eAAM,CAAC,IAAI,CAAC,0BAA0B,cAAc,EAAE,CAAC,CAAC;QAExD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,YAAY,GAAG,IAAA,iBAAO,EAAC,yBAAyB,CAAC,CAAC;YAExD,8BAA8B;YAC9B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAA,eAAK,EAAC,cAAc,EAAE,CAAC,UAAU,EAAE,GAAG,kBAAkB,CAAC,EAAE;oBAC9E,MAAM,EAAE,KAAK;iBACd,CAAC,CAAC;gBAEH,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;gBAE/C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,eAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBAClC,eAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,eAAM,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACjD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,IAAA,iBAAO,EAAC,sBAAsB,CAAC,CAAC;YAEtD,IAAI,CAAC;gBACH,kBAAkB;gBAClB,MAAM,OAAO,GAAG,MAAM,IAAA,+BAAa,EAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBACxE,MAAM,IAAA,eAAK,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBACxC,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAC;gBAEH,aAAa,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;gBAEvD,eAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,eAAM,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;gBAClE,eAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACvE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAChD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC/C,eAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ declare const program: Command;
3
+ export default program;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAwD9B,eAAe,OAAO,CAAC"}
@@ -0,0 +1,61 @@
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
+ const commander_1 = require("commander");
7
+ const create_1 = require("./commands/create");
8
+ const add_1 = require("./commands/add");
9
+ const update_1 = require("./commands/update");
10
+ const logger_1 = require("./utils/logger");
11
+ const package_json_1 = __importDefault(require("../../package.json"));
12
+ const program = new commander_1.Command();
13
+ program
14
+ .name('create-saas-app')
15
+ .description('Create modern SaaS applications with Digi Logic Labs packages')
16
+ .version(package_json_1.default.version);
17
+ program
18
+ .command('create')
19
+ .alias('c')
20
+ .description('Create a new SaaS application')
21
+ .argument('<platform>', 'Platform: web, mobile, or both')
22
+ .argument('[template]', 'Template: base, dashboard, saas (web) | base, tabs, stack (mobile)')
23
+ .argument('[name]', 'Project name')
24
+ .option('-a, --auth <provider>', 'Auth provider: firebase, supabase')
25
+ .option('-d, --database <provider>', 'Database provider: supabase, firebase')
26
+ .option('-t, --theme <theme>', 'Theme: default, corporate, startup')
27
+ .option('-c, --theme-color <color>', 'Theme color: blue, green, purple, orange, red, slate')
28
+ .option('--default-theme <mode>', 'Default theme mode: light, dark, system')
29
+ .option('--with-ai [capabilities]', 'Enable AI features (text,audio,video,rag,knowledge or all)')
30
+ .option('--ai-provider <provider>', 'AI provider: openai, anthropic, gemini')
31
+ .option('--no-install', 'Skip package installation')
32
+ .option('--no-git', 'Skip git initialization')
33
+ .option('-y, --yes', 'Skip interactive prompts')
34
+ .action(create_1.createProject);
35
+ program
36
+ .command('add')
37
+ .alias('a')
38
+ .description('Add features to existing project')
39
+ .argument('<feature>', 'Feature to add: auth, billing, analytics, etc.')
40
+ .option('-p, --provider <provider>', 'Service provider')
41
+ .action(add_1.addFeature);
42
+ program
43
+ .command('update')
44
+ .alias('u')
45
+ .description('Update Digi Logic Labs dependencies')
46
+ .option('--check', 'Check for updates without installing')
47
+ .action(update_1.updateDependencies);
48
+ // Handle unknown commands
49
+ program.on('command:*', () => {
50
+ logger_1.logger.error(`Unknown command: ${program.args.join(' ')}`);
51
+ logger_1.logger.info('Run "create-saas-app --help" for available commands');
52
+ process.exit(1);
53
+ });
54
+ // Show help if no arguments provided
55
+ if (!process.argv.slice(2).length) {
56
+ program.outputHelp();
57
+ process.exit(0);
58
+ }
59
+ program.parse();
60
+ exports.default = program;
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,8CAAkD;AAClD,wCAA4C;AAC5C,8CAAuD;AACvD,2CAAwC;AACxC,sEAA6C;AAE7C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,sBAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,YAAY,EAAE,gCAAgC,CAAC;KACxD,QAAQ,CAAC,YAAY,EAAE,oEAAoE,CAAC;KAC5F,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;KAClC,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,CAAC;KACpE,MAAM,CAAC,2BAA2B,EAAE,uCAAuC,CAAC;KAC5E,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;KACnE,MAAM,CAAC,2BAA2B,EAAE,sDAAsD,CAAC;KAC3F,MAAM,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;KAC3E,MAAM,CAAC,0BAA0B,EAAE,4DAA4D,CAAC;KAChG,MAAM,CAAC,0BAA0B,EAAE,wCAAwC,CAAC;KAC5E,MAAM,CAAC,cAAc,EAAE,2BAA2B,CAAC;KACnD,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC;KAC7C,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,WAAW,EAAE,gDAAgD,CAAC;KACvE,MAAM,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;KACvD,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC;KACzD,MAAM,CAAC,2BAAkB,CAAC,CAAC;AAE9B,0BAA0B;AAC1B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,eAAM,CAAC,KAAK,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3D,eAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,qCAAqC;AACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,kBAAe,OAAO,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './project-setup';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,18 @@
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("./project-setup"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/prompts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
@@ -0,0 +1,5 @@
1
+ import { ProjectConfig } from '../commands/create';
2
+ export declare function getProjectPrompts(initialConfig: ProjectConfig): Promise<ProjectConfig>;
3
+ export declare function getAuthSetupPrompts(authProvider: string): Promise<any>;
4
+ export declare function getThemeCustomizationPrompts(theme: string): Promise<any>;
5
+ //# sourceMappingURL=project-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-setup.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/project-setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAe,MAAM,oBAAoB,CAAC;AA0BhE,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CA2P5F;AAED,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,gBAkD7D;AAED,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,MAAM,gBA+B/D"}