@digilogiclabs/create-saas-app 1.12.0 → 1.13.0

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 (88) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cli/commands/add.d.ts +6 -0
  3. package/dist/cli/commands/add.d.ts.map +1 -0
  4. package/dist/cli/commands/add.js +39 -0
  5. package/dist/cli/commands/add.js.map +1 -0
  6. package/dist/cli/commands/index.d.ts +4 -0
  7. package/dist/cli/commands/index.d.ts.map +1 -0
  8. package/dist/cli/commands/index.js +20 -0
  9. package/dist/cli/commands/index.js.map +1 -0
  10. package/dist/cli/commands/update.d.ts +6 -0
  11. package/dist/cli/commands/update.d.ts.map +1 -0
  12. package/dist/cli/commands/update.js +68 -0
  13. package/dist/cli/commands/update.js.map +1 -0
  14. package/dist/cli/index.d.ts +4 -0
  15. package/dist/cli/index.d.ts.map +1 -0
  16. package/dist/cli/index.js +61 -0
  17. package/dist/cli/index.js.map +1 -0
  18. package/dist/cli/prompts/index.d.ts +2 -0
  19. package/dist/cli/prompts/index.d.ts.map +1 -0
  20. package/dist/cli/prompts/index.js +18 -0
  21. package/dist/cli/prompts/index.js.map +1 -0
  22. package/dist/cli/prompts/project-setup.d.ts +5 -0
  23. package/dist/cli/prompts/project-setup.d.ts.map +1 -0
  24. package/dist/cli/prompts/project-setup.js +251 -0
  25. package/dist/cli/prompts/project-setup.js.map +1 -0
  26. package/dist/cli/utils/git.d.ts +9 -0
  27. package/dist/cli/utils/git.d.ts.map +1 -0
  28. package/dist/cli/utils/git.js +77 -0
  29. package/dist/cli/utils/git.js.map +1 -0
  30. package/dist/cli/utils/index.d.ts +5 -0
  31. package/dist/cli/utils/index.d.ts.map +1 -0
  32. package/dist/cli/utils/index.js +21 -0
  33. package/dist/cli/utils/index.js.map +1 -0
  34. package/dist/cli/utils/logger.d.ts +16 -0
  35. package/dist/cli/utils/logger.d.ts.map +1 -0
  36. package/dist/cli/utils/logger.js +55 -0
  37. package/dist/cli/utils/logger.js.map +1 -0
  38. package/dist/cli/utils/package-manager.d.ts +8 -0
  39. package/dist/cli/utils/package-manager.d.ts.map +1 -0
  40. package/dist/cli/utils/package-manager.js +92 -0
  41. package/dist/cli/utils/package-manager.js.map +1 -0
  42. package/dist/cli/utils/spinner.d.ts +7 -0
  43. package/dist/cli/utils/spinner.d.ts.map +1 -0
  44. package/dist/cli/utils/spinner.js +48 -0
  45. package/dist/cli/utils/spinner.js.map +1 -0
  46. package/dist/cli/validators/dependencies.d.ts +15 -0
  47. package/dist/cli/validators/dependencies.d.ts.map +1 -0
  48. package/dist/cli/validators/dependencies.js +108 -0
  49. package/dist/cli/validators/dependencies.js.map +1 -0
  50. package/dist/cli/validators/index.d.ts +3 -0
  51. package/dist/cli/validators/index.d.ts.map +1 -0
  52. package/dist/cli/validators/index.js +19 -0
  53. package/dist/cli/validators/index.js.map +1 -0
  54. package/dist/cli/validators/project-name.d.ts +5 -0
  55. package/dist/cli/validators/project-name.d.ts.map +1 -0
  56. package/dist/cli/validators/project-name.js +151 -0
  57. package/dist/cli/validators/project-name.js.map +1 -0
  58. package/dist/generators/file-processor.d.ts +28 -0
  59. package/dist/generators/file-processor.d.ts.map +1 -0
  60. package/dist/generators/file-processor.js +224 -0
  61. package/dist/generators/file-processor.js.map +1 -0
  62. package/dist/generators/index.d.ts +4 -0
  63. package/dist/generators/index.d.ts.map +1 -0
  64. package/dist/generators/index.js +20 -0
  65. package/dist/generators/index.js.map +1 -0
  66. package/dist/generators/package-installer.d.ts +29 -0
  67. package/dist/generators/package-installer.d.ts.map +1 -0
  68. package/dist/generators/package-installer.js +167 -0
  69. package/dist/generators/package-installer.js.map +1 -0
  70. package/dist/templates/web/ui-auth/template/package.json +2 -2
  71. package/dist/templates/web/ui-auth-payments/template/package.json +3 -3
  72. package/dist/templates/web/ui-auth-payments-ai/template/.env.example +7 -0
  73. package/dist/templates/web/ui-auth-payments-ai/template/package.json +6 -6
  74. package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +62 -58
  75. package/dist/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +19 -14
  76. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/supabase/server.ts +72 -0
  77. package/dist/templates/web/ui-auth-payments-audio/template/package.json +3 -3
  78. package/dist/templates/web/ui-auth-payments-video/template/package.json +3 -3
  79. package/package.json +1 -1
  80. package/src/templates/web/ui-auth/template/package.json +2 -2
  81. package/src/templates/web/ui-auth-payments/template/package.json +3 -3
  82. package/src/templates/web/ui-auth-payments-ai/template/.env.example +7 -0
  83. package/src/templates/web/ui-auth-payments-ai/template/package.json +6 -6
  84. package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +62 -58
  85. package/src/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +19 -14
  86. package/src/templates/web/ui-auth-payments-ai/template/src/lib/supabase/server.ts +72 -0
  87. package/src/templates/web/ui-auth-payments-audio/template/package.json +3 -3
  88. package/src/templates/web/ui-auth-payments-video/template/package.json +3 -3
@@ -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 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,8CAA8C,CAAC;KAClF,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;AAInD,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAiK5F;AAED,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,gBAkD7D;AAED,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,MAAM,gBA+B/D"}
@@ -0,0 +1,251 @@
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
+ async function getProjectPrompts(initialConfig) {
13
+ logger_1.logger.title('🛠️ Project Configuration');
14
+ const questions = [
15
+ {
16
+ type: 'input',
17
+ name: 'name',
18
+ message: 'Project name:',
19
+ default: initialConfig.name,
20
+ validate: (input) => {
21
+ if (!(0, project_name_1.validateProjectName)(input)) {
22
+ const suggestion = (0, project_name_1.suggestProjectName)(input);
23
+ return `Invalid project name. Try: ${suggestion}`;
24
+ }
25
+ return true;
26
+ },
27
+ filter: (input) => input.trim(),
28
+ },
29
+ {
30
+ type: 'list',
31
+ name: 'platform',
32
+ message: 'Select platform:',
33
+ choices: [
34
+ { name: '🌐 Web (Next.js)', value: 'web' },
35
+ { name: '📱 Mobile (Expo)', value: 'mobile' },
36
+ { name: '🚀 Both (Full-stack)', value: 'both' },
37
+ ],
38
+ default: initialConfig.platform,
39
+ },
40
+ {
41
+ type: 'list',
42
+ name: 'template',
43
+ message: 'Select template:',
44
+ choices: (answers) => {
45
+ if (answers.platform === 'web') {
46
+ return [
47
+ { name: '📄 Base - Clean starter template', value: 'base' },
48
+ {
49
+ name: '📦 UI Only - With @digilogiclabs/saas-factory-ui (no auth)',
50
+ value: 'ui-only',
51
+ },
52
+ {
53
+ name: '🔐 UI + Auth - With UI components and authentication',
54
+ value: 'ui-auth',
55
+ },
56
+ {
57
+ name: '💳 UI + Auth + Payments - Full SaaS with payments integration',
58
+ value: 'ui-auth-payments',
59
+ },
60
+ {
61
+ name: '🎵 Audio Player App - Full SaaS with audio streaming features',
62
+ value: 'ui-auth-payments-audio',
63
+ },
64
+ {
65
+ name: '🎬 Video Player App - Full SaaS with video streaming features',
66
+ value: 'ui-auth-payments-video',
67
+ },
68
+ { name: '📊 Dashboard - Admin dashboard with analytics', value: 'dashboard' },
69
+ { name: '💼 SaaS - Multi-tenant SaaS application', value: 'saas' },
70
+ ];
71
+ }
72
+ else if (answers.platform === 'mobile') {
73
+ return [
74
+ { name: '📱 Base - Simple mobile app', value: 'base' },
75
+ { name: '📑 Tabs - Tab navigation', value: 'tabs' },
76
+ { name: '📚 Stack - Stack navigation', value: 'stack' },
77
+ ];
78
+ }
79
+ else {
80
+ return [{ name: '🚀 Base - Web + Mobile starter', value: 'base' }];
81
+ }
82
+ },
83
+ default: initialConfig.template,
84
+ },
85
+ {
86
+ type: 'list',
87
+ name: 'auth',
88
+ message: 'Select authentication provider:',
89
+ choices: [
90
+ { name: '⚡ Supabase - Open source alternative', value: 'supabase' },
91
+ { name: "🔥 Firebase - Google's platform", value: 'firebase' },
92
+ ],
93
+ default: initialConfig.auth,
94
+ },
95
+ {
96
+ type: 'list',
97
+ name: 'database',
98
+ message: 'Select database provider:',
99
+ choices: (answers) => {
100
+ // Smart defaults based on auth choice
101
+ const choices = [
102
+ { name: '⚡ Supabase - PostgreSQL with real-time', value: 'supabase' },
103
+ { name: '🔥 Firebase - NoSQL with real-time', value: 'firebase' },
104
+ ];
105
+ // Suggest matching auth provider
106
+ if (answers.auth === 'firebase') {
107
+ return choices.reverse();
108
+ }
109
+ return choices;
110
+ },
111
+ default: (answers) => {
112
+ // Auto-match auth provider if possible, but prefer Supabase
113
+ return answers.auth === 'firebase' ? 'firebase' : 'supabase';
114
+ },
115
+ },
116
+ {
117
+ type: 'list',
118
+ name: 'theme',
119
+ message: 'Select theme:',
120
+ choices: [
121
+ { name: '🎨 Default - Clean and modern', value: 'default' },
122
+ { name: '🏢 Corporate - Professional business theme', value: 'corporate' },
123
+ { name: '🚀 Startup - Bold and innovative', value: 'startup' },
124
+ ],
125
+ default: initialConfig.theme,
126
+ },
127
+ {
128
+ type: 'list',
129
+ name: 'themeColor',
130
+ message: 'Select theme color:',
131
+ choices: [
132
+ { name: '🔵 Blue - Classic and trustworthy', value: 'blue' },
133
+ { name: '🟢 Green - Fresh and natural', value: 'green' },
134
+ { name: '🟣 Purple - Creative and modern', value: 'purple' },
135
+ { name: '🟠 Orange - Energetic and friendly', value: 'orange' },
136
+ { name: '🔴 Red - Bold and attention-grabbing', value: 'red' },
137
+ { name: '⚫ Slate - Professional and minimal', value: 'slate' },
138
+ ],
139
+ default: initialConfig.themeColor,
140
+ },
141
+ {
142
+ type: 'list',
143
+ name: 'defaultTheme',
144
+ message: 'Select default theme mode:',
145
+ choices: [
146
+ { name: '🌙 System - Follow system preference', value: 'system' },
147
+ { name: '☀️ Light - Always light mode', value: 'light' },
148
+ { name: '🌙 Dark - Always dark mode', value: 'dark' },
149
+ ],
150
+ default: initialConfig.defaultTheme,
151
+ },
152
+ {
153
+ type: 'confirm',
154
+ name: 'install',
155
+ message: 'Install dependencies?',
156
+ default: initialConfig.install,
157
+ },
158
+ {
159
+ type: 'confirm',
160
+ name: 'git',
161
+ message: 'Initialize git repository?',
162
+ default: initialConfig.git,
163
+ },
164
+ ];
165
+ const answers = await inquirer_1.default.prompt(questions);
166
+ return {
167
+ ...initialConfig,
168
+ ...answers,
169
+ };
170
+ }
171
+ async function getAuthSetupPrompts(authProvider) {
172
+ logger_1.logger.title(`🔐 ${authProvider} Configuration`);
173
+ if (authProvider === 'firebase') {
174
+ const questions = [
175
+ {
176
+ type: 'input',
177
+ name: 'projectId',
178
+ message: 'Firebase Project ID:',
179
+ validate: (input) => input.length > 0 || 'Project ID is required',
180
+ },
181
+ {
182
+ type: 'input',
183
+ name: 'apiKey',
184
+ message: 'Firebase API Key:',
185
+ validate: (input) => input.length > 0 || 'API Key is required',
186
+ },
187
+ {
188
+ type: 'input',
189
+ name: 'authDomain',
190
+ message: 'Firebase Auth Domain:',
191
+ validate: (input) => input.length > 0 || 'Auth Domain is required',
192
+ },
193
+ ];
194
+ return await inquirer_1.default.prompt(questions);
195
+ }
196
+ else if (authProvider === 'supabase') {
197
+ const questions = [
198
+ {
199
+ type: 'input',
200
+ name: 'url',
201
+ message: 'Supabase URL:',
202
+ validate: (input) => {
203
+ if (!input.length)
204
+ return 'URL is required';
205
+ if (!input.startsWith('https://'))
206
+ return 'URL must start with https://';
207
+ return true;
208
+ },
209
+ },
210
+ {
211
+ type: 'input',
212
+ name: 'anonKey',
213
+ message: 'Supabase Anon Key:',
214
+ validate: (input) => input.length > 0 || 'Anon Key is required',
215
+ },
216
+ ];
217
+ return await inquirer_1.default.prompt(questions);
218
+ }
219
+ return {};
220
+ }
221
+ async function getThemeCustomizationPrompts(theme) {
222
+ logger_1.logger.title(`🎨 ${theme} Theme Customization`);
223
+ const questions = [
224
+ {
225
+ type: 'input',
226
+ name: 'primaryColor',
227
+ message: 'Primary color (hex):',
228
+ default: theme === 'corporate' ? '#1e40af' : theme === 'startup' ? '#7c3aed' : '#3b82f6',
229
+ validate: (input) => {
230
+ if (!/^#[0-9A-F]{6}$/i.test(input)) {
231
+ return 'Please enter a valid hex color (e.g., #3b82f6)';
232
+ }
233
+ return true;
234
+ },
235
+ },
236
+ {
237
+ type: 'input',
238
+ name: 'fontFamily',
239
+ message: 'Font family:',
240
+ default: theme === 'corporate' ? 'Inter' : theme === 'startup' ? 'Poppins' : 'System UI',
241
+ },
242
+ {
243
+ type: 'confirm',
244
+ name: 'darkMode',
245
+ message: 'Enable dark mode support?',
246
+ default: true,
247
+ },
248
+ ];
249
+ return await inquirer_1.default.prompt(questions);
250
+ }
251
+ //# 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":";;;;;AAKA,sCAqBC;AAED,0CAOC;AAED,wCAcC;AAED,sCAOC;AAED,sCAQC;AAtED,kDAA0B;AAC1B,gDAAwB;AACxB,wDAA0B;AAC1B,qCAAkC;AAE3B,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAElC,4BAA4B;QAC5B,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAEnD,gBAAgB;QAChB,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAEvD,wBAAwB;QACxB,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,oDAAoD,CAAC,EAAE;YACzF,GAAG,EAAE,WAAW;SACjB,CAAC,CAAC;QAEH,eAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAChF,eAAM,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,MAAM,kBAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACzD,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;YACjD,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;SACnD,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC7E,KAAK,EAAE,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACjF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QACnF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,OAAe;IACtE,IAAI,CAAC;QACH,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QACvD,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,eAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './logger';
2
+ export * from './spinner';
3
+ export * from './git';
4
+ export * from './package-manager';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}