@digilogiclabs/create-saas-app 1.10.6 → 1.12.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 (204) hide show
  1. package/README.md +331 -350
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli/commands/create.js +2 -2
  4. package/dist/cli/commands/create.js.map +1 -1
  5. package/dist/generators/template-generator.d.ts.map +1 -1
  6. package/dist/generators/template-generator.js +14 -2
  7. package/dist/generators/template-generator.js.map +1 -1
  8. package/dist/templates/web/ui-auth/template/.claude +21 -0
  9. package/dist/templates/web/ui-auth/template/context.md +105 -0
  10. package/dist/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +801 -0
  11. package/dist/templates/web/ui-auth/template/src/app/setup/page.tsx +403 -0
  12. package/dist/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +801 -0
  13. package/dist/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +507 -0
  14. package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +127 -32
  15. package/dist/templates/web/ui-auth-payments-ai/template/.claude +21 -0
  16. package/dist/templates/web/ui-auth-payments-ai/template/.env.example +15 -0
  17. package/dist/templates/web/ui-auth-payments-ai/template/README.md +207 -0
  18. package/dist/templates/web/ui-auth-payments-ai/template/context.md +169 -0
  19. package/dist/templates/web/ui-auth-payments-ai/template/middleware.ts +68 -0
  20. package/dist/templates/web/ui-auth-payments-ai/template/next.config.js +12 -0
  21. package/dist/templates/web/ui-auth-payments-ai/template/package-lock.json +12241 -0
  22. package/dist/templates/web/ui-auth-payments-ai/template/package.json +55 -0
  23. package/dist/templates/web/ui-auth-payments-ai/template/postcss.config.js +7 -0
  24. package/dist/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +310 -0
  25. package/dist/templates/web/ui-auth-payments-ai/template/src/app/api/ai/audio/route.ts +56 -0
  26. package/dist/templates/web/ui-auth-payments-ai/template/src/app/api/ai/chat/route.ts +49 -0
  27. package/dist/templates/web/ui-auth-payments-ai/template/src/app/api/ai/text/route.ts +64 -0
  28. package/dist/templates/web/ui-auth-payments-ai/template/src/app/api/ai/video/route.ts +73 -0
  29. package/dist/templates/web/ui-auth-payments-ai/template/src/app/auth/callback/route.ts +12 -0
  30. package/dist/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +211 -0
  31. package/dist/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +142 -0
  32. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dashboard/layout.tsx +22 -0
  33. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +183 -0
  34. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +801 -0
  35. package/dist/templates/web/ui-auth-payments-ai/template/src/app/error.tsx +67 -0
  36. package/dist/templates/web/ui-auth-payments-ai/template/src/app/globals.css +43 -0
  37. package/dist/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +35 -0
  38. package/dist/templates/web/ui-auth-payments-ai/template/src/app/loading.tsx +20 -0
  39. package/dist/templates/web/ui-auth-payments-ai/template/src/app/login/page.tsx +6 -0
  40. package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +380 -0
  41. package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx.backup +391 -0
  42. package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx.bak +391 -0
  43. package/dist/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +640 -0
  44. package/dist/templates/web/ui-auth-payments-ai/template/src/app/signup/page.tsx +6 -0
  45. package/dist/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +49 -0
  46. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +52 -0
  47. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +144 -0
  48. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +185 -0
  49. package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +36 -0
  50. package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/theme-provider.tsx +96 -0
  51. package/dist/templates/web/ui-auth-payments-ai/template/src/components/shared/footer.tsx +36 -0
  52. package/dist/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +246 -0
  53. package/dist/templates/web/ui-auth-payments-ai/template/src/components/ui/badge.tsx +36 -0
  54. package/dist/templates/web/ui-auth-payments-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  55. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +246 -0
  56. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/actions/index.ts +14 -0
  57. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/auth-server.ts +177 -0
  58. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/env.ts +49 -0
  59. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/utils.ts +140 -0
  60. package/dist/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +79 -0
  61. package/dist/templates/web/ui-auth-payments-ai/template/tailwind.config.js +77 -0
  62. package/dist/templates/web/ui-auth-payments-ai/template/tsconfig.json +33 -0
  63. package/dist/templates/web/ui-auth-payments-ai/template/tsconfig.tsbuildinfo +1 -0
  64. package/dist/templates/web/ui-auth-payments-ai/template/vitest.config.ts +17 -0
  65. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +28 -20
  66. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx.backup +391 -0
  67. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx.bak +391 -0
  68. package/dist/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +345 -0
  69. package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +122 -37
  70. package/dist/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +351 -0
  71. package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +122 -37
  72. package/package.json +1 -1
  73. package/src/templates/web/ui-auth/template/.claude +21 -0
  74. package/src/templates/web/ui-auth/template/context.md +105 -0
  75. package/src/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +801 -0
  76. package/src/templates/web/ui-auth/template/src/app/setup/page.tsx +403 -0
  77. package/src/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +801 -0
  78. package/src/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +507 -0
  79. package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +127 -32
  80. package/src/templates/web/ui-auth-payments-ai/template/.claude +21 -0
  81. package/src/templates/web/ui-auth-payments-ai/template/.env.example +15 -0
  82. package/src/templates/web/ui-auth-payments-ai/template/README.md +207 -0
  83. package/src/templates/web/ui-auth-payments-ai/template/context.md +169 -0
  84. package/src/templates/web/ui-auth-payments-ai/template/middleware.ts +68 -0
  85. package/src/templates/web/ui-auth-payments-ai/template/next.config.js +12 -0
  86. package/src/templates/web/ui-auth-payments-ai/template/package-lock.json +12241 -0
  87. package/src/templates/web/ui-auth-payments-ai/template/package.json +55 -0
  88. package/src/templates/web/ui-auth-payments-ai/template/postcss.config.js +7 -0
  89. package/src/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +310 -0
  90. package/src/templates/web/ui-auth-payments-ai/template/src/app/api/ai/audio/route.ts +56 -0
  91. package/src/templates/web/ui-auth-payments-ai/template/src/app/api/ai/chat/route.ts +49 -0
  92. package/src/templates/web/ui-auth-payments-ai/template/src/app/api/ai/text/route.ts +64 -0
  93. package/src/templates/web/ui-auth-payments-ai/template/src/app/api/ai/video/route.ts +73 -0
  94. package/src/templates/web/ui-auth-payments-ai/template/src/app/auth/callback/route.ts +12 -0
  95. package/src/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +211 -0
  96. package/src/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +142 -0
  97. package/src/templates/web/ui-auth-payments-ai/template/src/app/dashboard/layout.tsx +22 -0
  98. package/src/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +183 -0
  99. package/src/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +801 -0
  100. package/src/templates/web/ui-auth-payments-ai/template/src/app/error.tsx +67 -0
  101. package/src/templates/web/ui-auth-payments-ai/template/src/app/globals.css +43 -0
  102. package/src/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +35 -0
  103. package/src/templates/web/ui-auth-payments-ai/template/src/app/loading.tsx +20 -0
  104. package/src/templates/web/ui-auth-payments-ai/template/src/app/login/page.tsx +6 -0
  105. package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +380 -0
  106. package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx.backup +391 -0
  107. package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx.bak +391 -0
  108. package/src/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +640 -0
  109. package/src/templates/web/ui-auth-payments-ai/template/src/app/signup/page.tsx +6 -0
  110. package/src/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +49 -0
  111. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +52 -0
  112. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +144 -0
  113. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +185 -0
  114. package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +36 -0
  115. package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/theme-provider.tsx +96 -0
  116. package/src/templates/web/ui-auth-payments-ai/template/src/components/shared/footer.tsx +36 -0
  117. package/src/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +246 -0
  118. package/src/templates/web/ui-auth-payments-ai/template/src/components/ui/badge.tsx +36 -0
  119. package/src/templates/web/ui-auth-payments-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  120. package/src/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +246 -0
  121. package/src/templates/web/ui-auth-payments-ai/template/src/lib/actions/index.ts +14 -0
  122. package/src/templates/web/ui-auth-payments-ai/template/src/lib/auth-server.ts +177 -0
  123. package/src/templates/web/ui-auth-payments-ai/template/src/lib/env.ts +49 -0
  124. package/src/templates/web/ui-auth-payments-ai/template/src/lib/utils.ts +140 -0
  125. package/src/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +79 -0
  126. package/src/templates/web/ui-auth-payments-ai/template/tailwind.config.js +77 -0
  127. package/src/templates/web/ui-auth-payments-ai/template/tsconfig.json +33 -0
  128. package/src/templates/web/ui-auth-payments-ai/template/tsconfig.tsbuildinfo +1 -0
  129. package/src/templates/web/ui-auth-payments-ai/template/vitest.config.ts +17 -0
  130. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +28 -20
  131. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx.backup +391 -0
  132. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx.bak +391 -0
  133. package/src/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +345 -0
  134. package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +122 -37
  135. package/src/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +351 -0
  136. package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +122 -37
  137. package/dist/cli/commands/add.d.ts +0 -6
  138. package/dist/cli/commands/add.d.ts.map +0 -1
  139. package/dist/cli/commands/add.js +0 -39
  140. package/dist/cli/commands/add.js.map +0 -1
  141. package/dist/cli/commands/index.d.ts +0 -4
  142. package/dist/cli/commands/index.d.ts.map +0 -1
  143. package/dist/cli/commands/index.js +0 -20
  144. package/dist/cli/commands/index.js.map +0 -1
  145. package/dist/cli/commands/update.d.ts +0 -6
  146. package/dist/cli/commands/update.d.ts.map +0 -1
  147. package/dist/cli/commands/update.js +0 -68
  148. package/dist/cli/commands/update.js.map +0 -1
  149. package/dist/cli/index.d.ts +0 -4
  150. package/dist/cli/index.d.ts.map +0 -1
  151. package/dist/cli/index.js +0 -61
  152. package/dist/cli/index.js.map +0 -1
  153. package/dist/cli/prompts/index.d.ts +0 -2
  154. package/dist/cli/prompts/index.d.ts.map +0 -1
  155. package/dist/cli/prompts/index.js +0 -18
  156. package/dist/cli/prompts/index.js.map +0 -1
  157. package/dist/cli/prompts/project-setup.d.ts +0 -5
  158. package/dist/cli/prompts/project-setup.d.ts.map +0 -1
  159. package/dist/cli/prompts/project-setup.js +0 -251
  160. package/dist/cli/prompts/project-setup.js.map +0 -1
  161. package/dist/cli/utils/git.d.ts +0 -9
  162. package/dist/cli/utils/git.d.ts.map +0 -1
  163. package/dist/cli/utils/git.js +0 -77
  164. package/dist/cli/utils/git.js.map +0 -1
  165. package/dist/cli/utils/index.d.ts +0 -5
  166. package/dist/cli/utils/index.d.ts.map +0 -1
  167. package/dist/cli/utils/index.js +0 -21
  168. package/dist/cli/utils/index.js.map +0 -1
  169. package/dist/cli/utils/logger.d.ts +0 -16
  170. package/dist/cli/utils/logger.d.ts.map +0 -1
  171. package/dist/cli/utils/logger.js +0 -55
  172. package/dist/cli/utils/logger.js.map +0 -1
  173. package/dist/cli/utils/package-manager.d.ts +0 -8
  174. package/dist/cli/utils/package-manager.d.ts.map +0 -1
  175. package/dist/cli/utils/package-manager.js +0 -92
  176. package/dist/cli/utils/package-manager.js.map +0 -1
  177. package/dist/cli/utils/spinner.d.ts +0 -7
  178. package/dist/cli/utils/spinner.d.ts.map +0 -1
  179. package/dist/cli/utils/spinner.js +0 -48
  180. package/dist/cli/utils/spinner.js.map +0 -1
  181. package/dist/cli/validators/dependencies.d.ts +0 -15
  182. package/dist/cli/validators/dependencies.d.ts.map +0 -1
  183. package/dist/cli/validators/dependencies.js +0 -108
  184. package/dist/cli/validators/dependencies.js.map +0 -1
  185. package/dist/cli/validators/index.d.ts +0 -3
  186. package/dist/cli/validators/index.d.ts.map +0 -1
  187. package/dist/cli/validators/index.js +0 -19
  188. package/dist/cli/validators/index.js.map +0 -1
  189. package/dist/cli/validators/project-name.d.ts +0 -5
  190. package/dist/cli/validators/project-name.d.ts.map +0 -1
  191. package/dist/cli/validators/project-name.js +0 -151
  192. package/dist/cli/validators/project-name.js.map +0 -1
  193. package/dist/generators/file-processor.d.ts +0 -28
  194. package/dist/generators/file-processor.d.ts.map +0 -1
  195. package/dist/generators/file-processor.js +0 -224
  196. package/dist/generators/file-processor.js.map +0 -1
  197. package/dist/generators/index.d.ts +0 -4
  198. package/dist/generators/index.d.ts.map +0 -1
  199. package/dist/generators/index.js +0 -20
  200. package/dist/generators/index.js.map +0 -1
  201. package/dist/generators/package-installer.d.ts +0 -29
  202. package/dist/generators/package-installer.d.ts.map +0 -1
  203. package/dist/generators/package-installer.js +0 -167
  204. package/dist/generators/package-installer.js.map +0 -1
@@ -1,55 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/cli/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,92 +0,0 @@
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.detectPackageManager = detectPackageManager;
7
- exports.getInstallCommand = getInstallCommand;
8
- exports.getAddCommand = getAddCommand;
9
- exports.getRunCommand = getRunCommand;
10
- exports.isPackageManagerAvailable = isPackageManagerAvailable;
11
- exports.getPackageManagerDisplayName = getPackageManagerDisplayName;
12
- const execa_1 = __importDefault(require("execa"));
13
- const fs_extra_1 = __importDefault(require("fs-extra"));
14
- const path_1 = __importDefault(require("path"));
15
- async function detectPackageManager(projectPath) {
16
- const cwd = projectPath || process.cwd();
17
- // Check for lock files
18
- const lockFiles = [
19
- { file: 'pnpm-lock.yaml', manager: 'pnpm' },
20
- { file: 'yarn.lock', manager: 'yarn' },
21
- { file: 'package-lock.json', manager: 'npm' },
22
- ];
23
- for (const { file, manager } of lockFiles) {
24
- if (await fs_extra_1.default.pathExists(path_1.default.join(cwd, file))) {
25
- return manager;
26
- }
27
- }
28
- // Check for package manager availability
29
- const managers = ['pnpm', 'yarn', 'npm'];
30
- for (const manager of managers) {
31
- try {
32
- await (0, execa_1.default)(manager, ['--version']);
33
- return manager;
34
- }
35
- catch {
36
- // Continue to next manager
37
- }
38
- }
39
- // Default to npm
40
- return 'npm';
41
- }
42
- async function getInstallCommand(packageManager) {
43
- switch (packageManager) {
44
- case 'yarn':
45
- return ['yarn', 'install'];
46
- case 'pnpm':
47
- return ['pnpm', 'install'];
48
- default:
49
- return ['npm', 'install'];
50
- }
51
- }
52
- async function getAddCommand(packageManager, packages, dev = false) {
53
- const devFlag = dev ? (packageManager === 'npm' ? '--save-dev' : '-D') : '';
54
- switch (packageManager) {
55
- case 'yarn':
56
- return ['yarn', 'add', ...(dev ? ['-D'] : []), ...packages];
57
- case 'pnpm':
58
- return ['pnpm', 'add', ...(dev ? ['-D'] : []), ...packages];
59
- default:
60
- return ['npm', 'install', ...(devFlag ? [devFlag] : []), ...packages];
61
- }
62
- }
63
- async function getRunCommand(packageManager, script) {
64
- switch (packageManager) {
65
- case 'yarn':
66
- return ['yarn', script];
67
- case 'pnpm':
68
- return ['pnpm', script];
69
- default:
70
- return ['npm', 'run', script];
71
- }
72
- }
73
- async function isPackageManagerAvailable(packageManager) {
74
- try {
75
- await (0, execa_1.default)(packageManager, ['--version']);
76
- return true;
77
- }
78
- catch {
79
- return false;
80
- }
81
- }
82
- function getPackageManagerDisplayName(packageManager) {
83
- switch (packageManager) {
84
- case 'yarn':
85
- return 'Yarn';
86
- case 'pnpm':
87
- return 'pnpm';
88
- default:
89
- return 'npm';
90
- }
91
- }
92
- //# sourceMappingURL=package-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../../src/cli/utils/package-manager.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { Ora } from 'ora';
2
- export declare function spinner(text: string): Ora;
3
- export declare function createSpinner(text: string): Ora;
4
- export declare function successSpinner(text: string): Ora;
5
- export declare function errorSpinner(text: string): Ora;
6
- export declare function warnSpinner(text: string): Ora;
7
- //# sourceMappingURL=spinner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/spinner.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG/B,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAMzC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAM/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAMhD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAM9C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAM7C"}
@@ -1,48 +0,0 @@
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.spinner = spinner;
7
- exports.createSpinner = createSpinner;
8
- exports.successSpinner = successSpinner;
9
- exports.errorSpinner = errorSpinner;
10
- exports.warnSpinner = warnSpinner;
11
- const ora_1 = __importDefault(require("ora"));
12
- const chalk_1 = __importDefault(require("chalk"));
13
- function spinner(text) {
14
- return (0, ora_1.default)({
15
- text: chalk_1.default.gray(text),
16
- spinner: 'dots',
17
- color: 'cyan',
18
- }).start();
19
- }
20
- function createSpinner(text) {
21
- return (0, ora_1.default)({
22
- text: chalk_1.default.gray(text),
23
- spinner: 'dots',
24
- color: 'cyan',
25
- });
26
- }
27
- function successSpinner(text) {
28
- return (0, ora_1.default)({
29
- text: chalk_1.default.green(text),
30
- spinner: 'dots',
31
- color: 'green',
32
- });
33
- }
34
- function errorSpinner(text) {
35
- return (0, ora_1.default)({
36
- text: chalk_1.default.red(text),
37
- spinner: 'dots',
38
- color: 'red',
39
- });
40
- }
41
- function warnSpinner(text) {
42
- return (0, ora_1.default)({
43
- text: chalk_1.default.yellow(text),
44
- spinner: 'dots',
45
- color: 'yellow',
46
- });
47
- }
48
- //# sourceMappingURL=spinner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/cli/utils/spinner.ts"],"names":[],"mappings":";;;;;AAGA,0BAMC;AAED,sCAMC;AAED,wCAMC;AAED,oCAMC;AAED,kCAMC;AAzCD,8CAA+B;AAC/B,kDAA0B;AAE1B,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,MAAM;KACd,CAAC,CAAC,KAAK,EAAE,CAAC;AACb,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY;IACtC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QACxB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;AACL,CAAC"}
@@ -1,15 +0,0 @@
1
- export interface DependencyInfo {
2
- name: string;
3
- version: string;
4
- latest?: string;
5
- outdated?: boolean;
6
- }
7
- export declare function validateNodeVersion(): Promise<boolean>;
8
- export declare function checkPackageExists(packageName: string): Promise<boolean>;
9
- export declare function getLatestVersion(packageName: string): Promise<string | null>;
10
- export declare function validateDependencies(dependencies: string[]): Promise<DependencyInfo[]>;
11
- export declare function validateVersionRange(version: string): boolean;
12
- export declare function isValidSemver(version: string): boolean;
13
- export declare function compareVersions(version1: string, version2: string): number;
14
- export declare function getVersionSuggestion(currentVersion: string, latestVersion: string): string;
15
- //# sourceMappingURL=dependencies.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/cli/validators/dependencies.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAY5D;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO9E;AAED,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOlF;AAED,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA8B5F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM1E;AAED,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAwB1F"}
@@ -1,108 +0,0 @@
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.validateNodeVersion = validateNodeVersion;
7
- exports.checkPackageExists = checkPackageExists;
8
- exports.getLatestVersion = getLatestVersion;
9
- exports.validateDependencies = validateDependencies;
10
- exports.validateVersionRange = validateVersionRange;
11
- exports.isValidSemver = isValidSemver;
12
- exports.compareVersions = compareVersions;
13
- exports.getVersionSuggestion = getVersionSuggestion;
14
- const semver_1 = __importDefault(require("semver"));
15
- const execa_1 = __importDefault(require("execa"));
16
- const logger_1 = require("../utils/logger");
17
- async function validateNodeVersion() {
18
- const nodeVersion = process.version;
19
- const minVersion = '16.0.0';
20
- if (!semver_1.default.gte(nodeVersion, minVersion)) {
21
- logger_1.logger.error(`Node.js version ${minVersion} or higher is required. Current version: ${nodeVersion}`);
22
- return false;
23
- }
24
- return true;
25
- }
26
- async function checkPackageExists(packageName) {
27
- try {
28
- await (0, execa_1.default)('npm', ['view', packageName, 'version']);
29
- return true;
30
- }
31
- catch {
32
- return false;
33
- }
34
- }
35
- async function getLatestVersion(packageName) {
36
- try {
37
- const result = await (0, execa_1.default)('npm', ['view', packageName, 'version']);
38
- return result.stdout.trim();
39
- }
40
- catch {
41
- return null;
42
- }
43
- }
44
- async function validateDependencies(dependencies) {
45
- const results = [];
46
- for (const dep of dependencies) {
47
- const [name, version] = dep.includes('@') && !dep.startsWith('@') ? dep.split('@') : [dep, 'latest'];
48
- try {
49
- const latest = await getLatestVersion(name);
50
- if (!latest) {
51
- logger_1.logger.warn(`Package "${name}" not found in npm registry`);
52
- continue;
53
- }
54
- const resolvedVersion = version === 'latest' ? latest : version;
55
- const outdated = version !== 'latest' && semver_1.default.lt(resolvedVersion, latest);
56
- results.push({
57
- name,
58
- version: resolvedVersion,
59
- latest,
60
- outdated,
61
- });
62
- }
63
- catch (error) {
64
- logger_1.logger.warn(`Failed to validate package "${name}":`, error);
65
- }
66
- }
67
- return results;
68
- }
69
- function validateVersionRange(version) {
70
- try {
71
- return semver_1.default.validRange(version) !== null;
72
- }
73
- catch {
74
- return false;
75
- }
76
- }
77
- function isValidSemver(version) {
78
- return semver_1.default.valid(version) !== null;
79
- }
80
- function compareVersions(version1, version2) {
81
- try {
82
- return semver_1.default.compare(version1, version2);
83
- }
84
- catch {
85
- return 0;
86
- }
87
- }
88
- function getVersionSuggestion(currentVersion, latestVersion) {
89
- if (!isValidSemver(currentVersion) || !isValidSemver(latestVersion)) {
90
- return latestVersion;
91
- }
92
- const current = semver_1.default.parse(currentVersion);
93
- const latest = semver_1.default.parse(latestVersion);
94
- if (!current || !latest) {
95
- return latestVersion;
96
- }
97
- // If major version is different, suggest latest
98
- if (current.major !== latest.major) {
99
- return `^${latestVersion}`;
100
- }
101
- // If minor version is different, suggest latest minor
102
- if (current.minor !== latest.minor) {
103
- return `~${latestVersion}`;
104
- }
105
- // If only patch is different, suggest exact latest
106
- return latestVersion;
107
- }
108
- //# sourceMappingURL=dependencies.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/cli/validators/dependencies.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export * from './project-name';
2
- export * from './dependencies';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -1,19 +0,0 @@
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-name"), exports);
18
- __exportStar(require("./dependencies"), exports);
19
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/validators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,iDAA+B"}
@@ -1,5 +0,0 @@
1
- export declare function validateProjectName(name: string): boolean;
2
- export declare function validateProjectPath(projectPath: string): Promise<boolean>;
3
- export declare function sanitizeProjectName(name: string): string;
4
- export declare function suggestProjectName(name: string): string;
5
- //# sourceMappingURL=project-name.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-name.d.ts","sourceRoot":"","sources":["../../../src/cli/validators/project-name.ts"],"names":[],"mappings":"AAKA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAiGzD;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkC/E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBvD"}
@@ -1,151 +0,0 @@
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.validateProjectName = validateProjectName;
7
- exports.validateProjectPath = validateProjectPath;
8
- exports.sanitizeProjectName = sanitizeProjectName;
9
- exports.suggestProjectName = suggestProjectName;
10
- const validate_npm_package_name_1 = __importDefault(require("validate-npm-package-name"));
11
- const path_1 = __importDefault(require("path"));
12
- const fs_extra_1 = __importDefault(require("fs-extra"));
13
- const logger_1 = require("../utils/logger");
14
- function validateProjectName(name) {
15
- // Check if name is empty
16
- if (!name || name.trim().length === 0) {
17
- logger_1.logger.error('Project name cannot be empty');
18
- return false;
19
- }
20
- // Check npm package name validity
21
- const validation = (0, validate_npm_package_name_1.default)(name);
22
- if (!validation.validForNewPackages) {
23
- logger_1.logger.error('Invalid project name:');
24
- if (validation.errors) {
25
- validation.errors.forEach((error) => logger_1.logger.error(` • ${error}`));
26
- }
27
- if (validation.warnings) {
28
- validation.warnings.forEach((warning) => logger_1.logger.warn(` • ${warning}`));
29
- }
30
- return false;
31
- }
32
- // Check for reserved names
33
- const reservedNames = [
34
- 'node_modules',
35
- 'package.json',
36
- 'package-lock.json',
37
- 'yarn.lock',
38
- 'pnpm-lock.yaml',
39
- '.git',
40
- '.gitignore',
41
- 'README.md',
42
- 'LICENSE',
43
- 'src',
44
- 'dist',
45
- 'build',
46
- 'public',
47
- 'static',
48
- 'assets',
49
- 'components',
50
- 'pages',
51
- 'app',
52
- 'lib',
53
- 'utils',
54
- 'hooks',
55
- 'types',
56
- 'styles',
57
- 'config',
58
- 'test',
59
- 'tests',
60
- '__tests__',
61
- 'spec',
62
- 'specs',
63
- 'docs',
64
- 'documentation',
65
- ];
66
- if (reservedNames.includes(name.toLowerCase())) {
67
- logger_1.logger.error(`Project name "${name}" is reserved. Please choose a different name.`);
68
- return false;
69
- }
70
- // Check for common problematic patterns
71
- if (name.startsWith('.')) {
72
- logger_1.logger.error('Project name cannot start with a dot');
73
- return false;
74
- }
75
- if (name.startsWith('-')) {
76
- logger_1.logger.error('Project name cannot start with a hyphen');
77
- return false;
78
- }
79
- if (name.endsWith('-')) {
80
- logger_1.logger.error('Project name cannot end with a hyphen');
81
- return false;
82
- }
83
- if (name.includes('..')) {
84
- logger_1.logger.error('Project name cannot contain consecutive dots');
85
- return false;
86
- }
87
- if (name.includes('//')) {
88
- logger_1.logger.error('Project name cannot contain consecutive slashes');
89
- return false;
90
- }
91
- // Check length
92
- if (name.length > 214) {
93
- logger_1.logger.error('Project name is too long (max 214 characters)');
94
- return false;
95
- }
96
- return true;
97
- }
98
- async function validateProjectPath(projectPath) {
99
- try {
100
- // Check if directory already exists
101
- if (await fs_extra_1.default.pathExists(projectPath)) {
102
- const stats = await fs_extra_1.default.stat(projectPath);
103
- if (stats.isDirectory()) {
104
- const files = await fs_extra_1.default.readdir(projectPath);
105
- if (files.length > 0) {
106
- logger_1.logger.error(`Directory "${path_1.default.basename(projectPath)}" already exists and is not empty`);
107
- return false;
108
- }
109
- }
110
- else {
111
- logger_1.logger.error(`A file with the name "${path_1.default.basename(projectPath)}" already exists`);
112
- return false;
113
- }
114
- }
115
- // Check if parent directory is writable
116
- const parentDir = path_1.default.dirname(projectPath);
117
- try {
118
- await fs_extra_1.default.access(parentDir, fs_extra_1.default.constants.W_OK);
119
- }
120
- catch {
121
- logger_1.logger.error(`Cannot write to directory "${parentDir}"`);
122
- return false;
123
- }
124
- return true;
125
- }
126
- catch (error) {
127
- logger_1.logger.error('Failed to validate project path:', error);
128
- return false;
129
- }
130
- }
131
- function sanitizeProjectName(name) {
132
- return name
133
- .toLowerCase()
134
- .replace(/[^a-z0-9-]/g, '-')
135
- .replace(/^-+|-+$/g, '')
136
- .replace(/-+/g, '-');
137
- }
138
- function suggestProjectName(name) {
139
- const sanitized = sanitizeProjectName(name);
140
- if (validateProjectName(sanitized)) {
141
- return sanitized;
142
- }
143
- // If still invalid, add a prefix
144
- const suggested = `my-${sanitized}`;
145
- if (validateProjectName(suggested)) {
146
- return suggested;
147
- }
148
- // Last resort
149
- return 'my-saas-app';
150
- }
151
- //# sourceMappingURL=project-name.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-name.js","sourceRoot":"","sources":["../../../src/cli/validators/project-name.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- export interface FileProcessorOptions {
2
- templateVariables: Record<string, unknown>;
3
- fileExtensions: string[];
4
- ignorePatterns: string[];
5
- preserveBinaryFiles: boolean;
6
- }
7
- export declare class FileProcessor {
8
- private options;
9
- constructor(options?: Partial<FileProcessorOptions>);
10
- processFile(sourcePath: string, targetPath: string): Promise<void>;
11
- processDirectory(sourceDir: string, targetDir: string): Promise<void>;
12
- private processTemplateFile;
13
- private copyBinaryFile;
14
- private shouldProcessAsTemplate;
15
- private shouldIgnoreFile;
16
- private getFilesRecursively;
17
- setTemplateVariables(variables: Record<string, unknown>): void;
18
- addFileExtension(extension: string): void;
19
- addIgnorePattern(pattern: string): void;
20
- validateTemplate(templatePath: string): Promise<boolean>;
21
- getTemplateInfo(templatePath: string): Promise<{
22
- name: string;
23
- description: string;
24
- version: string;
25
- dependencies: string[];
26
- } | null>;
27
- }
28
- //# sourceMappingURL=file-processor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-processor.d.ts","sourceRoot":"","sources":["../../src/generators/file-processor.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAuB;gBAE1B,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAyC1C,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlE,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAyBpE,mBAAmB;YAanB,cAAc;YAUd,uBAAuB;IA8BrC,OAAO,CAAC,gBAAgB;YAeV,mBAAmB;IAoB1B,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMzC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjC,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BxD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1D,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,GAAG,IAAI,CAAC;CAqBV"}