@idealyst/cli 1.2.0 → 1.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 (324) hide show
  1. package/dist/commands/add.js +233 -0
  2. package/dist/commands/add.js.map +1 -0
  3. package/dist/commands/index.js +13 -0
  4. package/dist/commands/index.js.map +1 -0
  5. package/dist/commands/info.js +193 -0
  6. package/dist/commands/info.js.map +1 -0
  7. package/dist/commands/init.js +155 -0
  8. package/dist/commands/init.js.map +1 -0
  9. package/dist/constants.js +119 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/generators/core/index.js +23 -0
  12. package/dist/generators/core/index.js.map +1 -0
  13. package/dist/generators/core/mobile.js +286 -0
  14. package/dist/generators/core/mobile.js.map +1 -0
  15. package/dist/generators/core/shared.js +207 -0
  16. package/dist/generators/core/shared.js.map +1 -0
  17. package/dist/generators/core/web.js +377 -0
  18. package/dist/generators/core/web.js.map +1 -0
  19. package/dist/generators/extensions/api.js +223 -0
  20. package/dist/generators/extensions/api.js.map +1 -0
  21. package/dist/generators/extensions/devcontainer.js +510 -0
  22. package/dist/generators/extensions/devcontainer.js.map +1 -0
  23. package/dist/generators/extensions/graphql.js +202 -0
  24. package/dist/generators/extensions/graphql.js.map +1 -0
  25. package/dist/generators/extensions/index.js +17 -0
  26. package/dist/generators/extensions/index.js.map +1 -0
  27. package/dist/generators/extensions/prisma.js +249 -0
  28. package/dist/generators/extensions/prisma.js.map +1 -0
  29. package/dist/generators/extensions/trpc.js +258 -0
  30. package/dist/generators/extensions/trpc.js.map +1 -0
  31. package/dist/generators/index.js +106 -4
  32. package/dist/generators/index.js.map +1 -1
  33. package/dist/generators/reactNative.js +177 -0
  34. package/dist/generators/reactNative.js.map +1 -0
  35. package/dist/generators/workspace.js +272 -0
  36. package/dist/generators/workspace.js.map +1 -0
  37. package/dist/identifiers/android.js +75 -0
  38. package/dist/identifiers/android.js.map +1 -0
  39. package/dist/identifiers/index.js +35 -0
  40. package/dist/identifiers/index.js.map +1 -0
  41. package/dist/identifiers/ios.js +65 -0
  42. package/dist/identifiers/ios.js.map +1 -0
  43. package/dist/index.js +41 -319
  44. package/dist/index.js.map +1 -1
  45. package/dist/templates/copier.js +135 -0
  46. package/dist/templates/copier.js.map +1 -0
  47. package/dist/templates/index.js +23 -0
  48. package/dist/templates/index.js.map +1 -0
  49. package/dist/templates/merger.js +113 -0
  50. package/dist/templates/merger.js.map +1 -0
  51. package/dist/templates/processor.js +142 -0
  52. package/dist/templates/processor.js.map +1 -0
  53. package/dist/types/commands/add.d.ts +14 -0
  54. package/dist/types/commands/index.d.ts +6 -0
  55. package/dist/types/commands/info.d.ts +10 -0
  56. package/dist/types/commands/init.d.ts +19 -0
  57. package/dist/types/constants.d.ts +76 -0
  58. package/dist/types/generators/core/index.d.ts +6 -0
  59. package/dist/types/generators/core/mobile.d.ts +13 -0
  60. package/dist/types/generators/core/shared.d.ts +8 -0
  61. package/dist/types/generators/core/web.d.ts +8 -0
  62. package/dist/types/generators/extensions/api.d.ts +8 -0
  63. package/dist/types/generators/extensions/devcontainer.d.ts +15 -0
  64. package/dist/types/generators/extensions/graphql.d.ts +8 -0
  65. package/dist/types/generators/extensions/index.d.ts +8 -0
  66. package/dist/types/generators/extensions/prisma.d.ts +8 -0
  67. package/dist/types/generators/extensions/trpc.d.ts +9 -0
  68. package/dist/types/generators/index.d.ts +11 -3
  69. package/dist/types/generators/reactNative.d.ts +19 -0
  70. package/dist/types/generators/workspace.d.ts +8 -0
  71. package/dist/types/identifiers/android.d.ts +26 -0
  72. package/dist/types/identifiers/index.d.ts +26 -0
  73. package/dist/types/identifiers/ios.d.ts +21 -0
  74. package/dist/types/index.d.ts +3 -0
  75. package/dist/types/templates/copier.d.ts +24 -0
  76. package/dist/types/templates/index.d.ts +6 -0
  77. package/dist/types/templates/merger.d.ts +43 -0
  78. package/dist/types/templates/processor.d.ts +39 -0
  79. package/dist/types/types.d.ts +153 -5
  80. package/dist/types/utils/filesystem.d.ts +56 -0
  81. package/dist/types/utils/index.d.ts +7 -0
  82. package/dist/types/utils/logger.d.ts +58 -0
  83. package/dist/types/utils/shell.d.ts +35 -0
  84. package/dist/types/utils/validation.d.ts +32 -0
  85. package/dist/types/wizard/index.d.ts +20 -0
  86. package/dist/types/wizard/steps/apiExtension.d.ts +5 -0
  87. package/dist/types/wizard/steps/appDisplayName.d.ts +5 -0
  88. package/dist/types/wizard/steps/devcontainerExtension.d.ts +5 -0
  89. package/dist/types/wizard/steps/graphqlExtension.d.ts +5 -0
  90. package/dist/types/wizard/steps/index.d.ts +12 -0
  91. package/dist/types/wizard/steps/orgDomain.d.ts +5 -0
  92. package/dist/types/wizard/steps/prismaExtension.d.ts +5 -0
  93. package/dist/types/wizard/steps/projectName.d.ts +5 -0
  94. package/dist/types/wizard/steps/summary.d.ts +5 -0
  95. package/dist/types/wizard/steps/trpcExtension.d.ts +5 -0
  96. package/dist/types/wizard/validators.d.ts +17 -0
  97. package/dist/types.js +41 -0
  98. package/dist/types.js.map +1 -1
  99. package/dist/utils/filesystem.js +173 -0
  100. package/dist/utils/filesystem.js.map +1 -0
  101. package/dist/utils/index.js +24 -0
  102. package/dist/utils/index.js.map +1 -0
  103. package/dist/utils/logger.js +95 -0
  104. package/dist/utils/logger.js.map +1 -0
  105. package/dist/utils/shell.js +113 -0
  106. package/dist/utils/shell.js.map +1 -0
  107. package/dist/utils/validation.js +196 -0
  108. package/dist/utils/validation.js.map +1 -0
  109. package/dist/wizard/index.js +177 -0
  110. package/dist/wizard/index.js.map +1 -0
  111. package/dist/wizard/steps/apiExtension.js +33 -0
  112. package/dist/wizard/steps/apiExtension.js.map +1 -0
  113. package/dist/wizard/steps/appDisplayName.js +53 -0
  114. package/dist/wizard/steps/appDisplayName.js.map +1 -0
  115. package/dist/wizard/steps/devcontainerExtension.js +78 -0
  116. package/dist/wizard/steps/devcontainerExtension.js.map +1 -0
  117. package/dist/wizard/steps/graphqlExtension.js +37 -0
  118. package/dist/wizard/steps/graphqlExtension.js.map +1 -0
  119. package/dist/wizard/steps/index.js +25 -0
  120. package/dist/wizard/steps/index.js.map +1 -0
  121. package/dist/wizard/steps/orgDomain.js +40 -0
  122. package/dist/wizard/steps/orgDomain.js.map +1 -0
  123. package/dist/wizard/steps/prismaExtension.js +33 -0
  124. package/dist/wizard/steps/prismaExtension.js.map +1 -0
  125. package/dist/wizard/steps/projectName.js +40 -0
  126. package/dist/wizard/steps/projectName.js.map +1 -0
  127. package/dist/wizard/steps/summary.js +107 -0
  128. package/dist/wizard/steps/summary.js.map +1 -0
  129. package/dist/wizard/steps/trpcExtension.js +37 -0
  130. package/dist/wizard/steps/trpcExtension.js.map +1 -0
  131. package/dist/wizard/validators.js +35 -0
  132. package/dist/wizard/validators.js.map +1 -0
  133. package/package.json +6 -19
  134. package/README.md +0 -110
  135. package/dist/generators/init.js +0 -268
  136. package/dist/generators/init.js.map +0 -1
  137. package/dist/generators/utils.js +0 -682
  138. package/dist/generators/utils.js.map +0 -1
  139. package/dist/scripts/configure-react-native-monorepo.js +0 -144
  140. package/dist/scripts/configure-react-native-monorepo.js.map +0 -1
  141. package/dist/template/.devcontainer/Dockerfile +0 -26
  142. package/dist/template/.devcontainer/devcontainer.json +0 -113
  143. package/dist/template/.devcontainer/docker-compose.yml +0 -59
  144. package/dist/template/.devcontainer/figma-mcp.sh +0 -32
  145. package/dist/template/.devcontainer/gitignore.template +0 -2
  146. package/dist/template/.devcontainer/setup.sh +0 -45
  147. package/dist/template/DOCKER.md +0 -0
  148. package/dist/template/Dockerfile +0 -111
  149. package/dist/template/README.md +0 -233
  150. package/dist/template/docker/nginx/prod.conf +0 -238
  151. package/dist/template/docker/nginx.conf +0 -131
  152. package/dist/template/docker/postgres/init.sql +0 -41
  153. package/dist/template/docker/prometheus/prometheus.yml +0 -52
  154. package/dist/template/docker-compose.prod.yml +0 -146
  155. package/dist/template/docker-compose.yml +0 -143
  156. package/dist/template/dockerignore.template +0 -151
  157. package/dist/template/env.example.template +0 -36
  158. package/dist/template/gitignore.template +0 -56
  159. package/dist/template/jest.config.js +0 -20
  160. package/dist/template/mcp.json.template +0 -8
  161. package/dist/template/package.json +0 -45
  162. package/dist/template/packages/api/README.md +0 -510
  163. package/dist/template/packages/api/__tests__/api.test.ts +0 -26
  164. package/dist/template/packages/api/env.example.template +0 -6
  165. package/dist/template/packages/api/gitignore.template +0 -35
  166. package/dist/template/packages/api/jest.config.js +0 -23
  167. package/dist/template/packages/api/jest.setup.js +0 -9
  168. package/dist/template/packages/api/package.json +0 -66
  169. package/dist/template/packages/api/src/context.ts +0 -52
  170. package/dist/template/packages/api/src/controllers/TestController.ts +0 -0
  171. package/dist/template/packages/api/src/graphql/builder.ts +0 -75
  172. package/dist/template/packages/api/src/graphql/generated.ts +0 -64
  173. package/dist/template/packages/api/src/graphql/index.ts +0 -75
  174. package/dist/template/packages/api/src/graphql/types/index.ts +0 -44
  175. package/dist/template/packages/api/src/graphql/types/test.ts +0 -245
  176. package/dist/template/packages/api/src/index.ts +0 -26
  177. package/dist/template/packages/api/src/lib/database.ts +0 -23
  178. package/dist/template/packages/api/src/router/index.ts +0 -163
  179. package/dist/template/packages/api/src/routers/test.ts +0 -161
  180. package/dist/template/packages/api/src/server.ts +0 -68
  181. package/dist/template/packages/api/src/trpc.ts +0 -28
  182. package/dist/template/packages/api/tsconfig.json +0 -44
  183. package/dist/template/packages/database/README.md +0 -162
  184. package/dist/template/packages/database/gitignore.template +0 -41
  185. package/dist/template/packages/database/package.json +0 -49
  186. package/dist/template/packages/database/prisma/seed.ts +0 -64
  187. package/dist/template/packages/database/schema.prisma +0 -107
  188. package/dist/template/packages/database/src/index.ts +0 -15
  189. package/dist/template/packages/database/src/validators.ts +0 -10
  190. package/dist/template/packages/database/tsconfig.json +0 -18
  191. package/dist/template/packages/mobile/README.md +0 -86
  192. package/dist/template/packages/mobile/__tests__/App.test.tsx +0 -156
  193. package/dist/template/packages/mobile/__tests__/components.test.tsx +0 -300
  194. package/dist/template/packages/mobile/app.json +0 -5
  195. package/dist/template/packages/mobile/babel.config.js +0 -10
  196. package/dist/template/packages/mobile/gitignore.template +0 -73
  197. package/dist/template/packages/mobile/index.js +0 -6
  198. package/dist/template/packages/mobile/jest.config.js +0 -21
  199. package/dist/template/packages/mobile/jest.setup.js +0 -12
  200. package/dist/template/packages/mobile/metro.config.js +0 -36
  201. package/dist/template/packages/mobile/package.json +0 -60
  202. package/dist/template/packages/mobile/src/App.tsx +0 -8
  203. package/dist/template/packages/mobile/src/utils/trpc.ts +0 -7
  204. package/dist/template/packages/mobile/tsconfig.json +0 -28
  205. package/dist/template/packages/shared/README.md +0 -135
  206. package/dist/template/packages/shared/__tests__/shared.test.ts +0 -51
  207. package/dist/template/packages/shared/gitignore.template +0 -35
  208. package/dist/template/packages/shared/jest.config.js +0 -22
  209. package/dist/template/packages/shared/package.json +0 -68
  210. package/dist/template/packages/shared/src/components/App.tsx +0 -57
  211. package/dist/template/packages/shared/src/components/HelloWorld.tsx +0 -531
  212. package/dist/template/packages/shared/src/components/index.ts +0 -1
  213. package/dist/template/packages/shared/src/graphql/client.ts +0 -34
  214. package/dist/template/packages/shared/src/index.ts +0 -22
  215. package/dist/template/packages/shared/src/navigation/AppRouter.tsx +0 -565
  216. package/dist/template/packages/shared/src/trpc/client.ts +0 -44
  217. package/dist/template/packages/shared/tsconfig.json +0 -22
  218. package/dist/template/packages/web/README.md +0 -131
  219. package/dist/template/packages/web/__tests__/App.test.tsx +0 -342
  220. package/dist/template/packages/web/__tests__/components.test.tsx +0 -564
  221. package/dist/template/packages/web/gitignore.template +0 -35
  222. package/dist/template/packages/web/index.html +0 -13
  223. package/dist/template/packages/web/jest.config.js +0 -27
  224. package/dist/template/packages/web/jest.setup.js +0 -24
  225. package/dist/template/packages/web/package.json +0 -69
  226. package/dist/template/packages/web/src/App.tsx +0 -14
  227. package/dist/template/packages/web/src/components/TestDemo.tsx +0 -164
  228. package/dist/template/packages/web/src/main.tsx +0 -25
  229. package/dist/template/packages/web/src/utils/trpc.ts +0 -7
  230. package/dist/template/packages/web/tsconfig.json +0 -26
  231. package/dist/template/packages/web/vite.config.ts +0 -98
  232. package/dist/template/setup.sh +0 -30
  233. package/dist/template/tsconfig.json +0 -22
  234. package/dist/template/yarnrc.yml.template +0 -4
  235. package/dist/types/generators/init.d.ts +0 -5
  236. package/dist/types/generators/utils.d.ts +0 -45
  237. package/dist/types/scripts/configure-react-native-monorepo.d.ts +0 -23
  238. package/template/.devcontainer/Dockerfile +0 -26
  239. package/template/.devcontainer/devcontainer.json +0 -113
  240. package/template/.devcontainer/docker-compose.yml +0 -59
  241. package/template/.devcontainer/figma-mcp.sh +0 -32
  242. package/template/.devcontainer/setup.sh +0 -45
  243. package/template/.dockerignore +0 -151
  244. package/template/.env.example +0 -36
  245. package/template/.env.production +0 -56
  246. package/template/DOCKER.md +0 -0
  247. package/template/Dockerfile +0 -111
  248. package/template/README.md +0 -233
  249. package/template/docker/nginx/prod.conf +0 -238
  250. package/template/docker/nginx.conf +0 -131
  251. package/template/docker/postgres/init.sql +0 -41
  252. package/template/docker/prometheus/prometheus.yml +0 -52
  253. package/template/docker-compose.prod.yml +0 -146
  254. package/template/docker-compose.yml +0 -143
  255. package/template/jest.config.js +0 -20
  256. package/template/package.json +0 -45
  257. package/template/packages/api/.env.example +0 -6
  258. package/template/packages/api/README.md +0 -510
  259. package/template/packages/api/__tests__/api.test.ts +0 -26
  260. package/template/packages/api/jest.config.js +0 -23
  261. package/template/packages/api/jest.setup.js +0 -9
  262. package/template/packages/api/package.json +0 -66
  263. package/template/packages/api/src/context.ts +0 -52
  264. package/template/packages/api/src/controllers/TestController.ts +0 -0
  265. package/template/packages/api/src/graphql/builder.ts +0 -75
  266. package/template/packages/api/src/graphql/generated.ts +0 -64
  267. package/template/packages/api/src/graphql/index.ts +0 -75
  268. package/template/packages/api/src/graphql/types/index.ts +0 -44
  269. package/template/packages/api/src/graphql/types/test.ts +0 -245
  270. package/template/packages/api/src/index.ts +0 -26
  271. package/template/packages/api/src/lib/database.ts +0 -23
  272. package/template/packages/api/src/router/index.ts +0 -163
  273. package/template/packages/api/src/routers/test.ts +0 -161
  274. package/template/packages/api/src/server.ts +0 -68
  275. package/template/packages/api/src/trpc.ts +0 -28
  276. package/template/packages/api/tsconfig.json +0 -44
  277. package/template/packages/database/README.md +0 -162
  278. package/template/packages/database/package.json +0 -49
  279. package/template/packages/database/prisma/seed.ts +0 -64
  280. package/template/packages/database/schema.prisma +0 -107
  281. package/template/packages/database/src/index.ts +0 -15
  282. package/template/packages/database/src/validators.ts +0 -10
  283. package/template/packages/database/tsconfig.json +0 -18
  284. package/template/packages/mobile/README.md +0 -86
  285. package/template/packages/mobile/__tests__/App.test.tsx +0 -156
  286. package/template/packages/mobile/__tests__/components.test.tsx +0 -300
  287. package/template/packages/mobile/app.json +0 -5
  288. package/template/packages/mobile/babel.config.js +0 -26
  289. package/template/packages/mobile/index.js +0 -8
  290. package/template/packages/mobile/jest.config.js +0 -21
  291. package/template/packages/mobile/jest.setup.js +0 -12
  292. package/template/packages/mobile/metro.config.js +0 -36
  293. package/template/packages/mobile/package.json +0 -60
  294. package/template/packages/mobile/src/App.tsx +0 -8
  295. package/template/packages/mobile/src/utils/trpc.ts +0 -7
  296. package/template/packages/mobile/tsconfig.json +0 -28
  297. package/template/packages/shared/README.md +0 -135
  298. package/template/packages/shared/__tests__/shared.test.ts +0 -51
  299. package/template/packages/shared/jest.config.js +0 -22
  300. package/template/packages/shared/package.json +0 -68
  301. package/template/packages/shared/src/components/App.tsx +0 -57
  302. package/template/packages/shared/src/components/HelloWorld.tsx +0 -531
  303. package/template/packages/shared/src/components/index.ts +0 -1
  304. package/template/packages/shared/src/graphql/client.ts +0 -34
  305. package/template/packages/shared/src/index.ts +0 -25
  306. package/template/packages/shared/src/navigation/AppRouter.tsx +0 -565
  307. package/template/packages/shared/src/trpc/client.ts +0 -44
  308. package/template/packages/shared/src/unistyles.ts +0 -50
  309. package/template/packages/shared/tsconfig.json +0 -22
  310. package/template/packages/web/README.md +0 -131
  311. package/template/packages/web/__tests__/App.test.tsx +0 -342
  312. package/template/packages/web/__tests__/components.test.tsx +0 -564
  313. package/template/packages/web/index.html +0 -13
  314. package/template/packages/web/jest.config.js +0 -27
  315. package/template/packages/web/jest.setup.js +0 -24
  316. package/template/packages/web/package.json +0 -69
  317. package/template/packages/web/src/App.tsx +0 -14
  318. package/template/packages/web/src/components/TestDemo.tsx +0 -164
  319. package/template/packages/web/src/main.tsx +0 -27
  320. package/template/packages/web/src/utils/trpc.ts +0 -7
  321. package/template/packages/web/tsconfig.json +0 -26
  322. package/template/packages/web/vite.config.ts +0 -114
  323. package/template/setup.sh +0 -30
  324. package/template/tsconfig.json +0 -22
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ /**
3
+ * Summary wizard step
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.summaryStep = void 0;
10
+ const inquirer_1 = __importDefault(require("inquirer"));
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const identifiers_1 = require("../../identifiers");
13
+ exports.summaryStep = {
14
+ id: 'confirm',
15
+ async prompt(currentConfig) {
16
+ // Generate identifiers for display
17
+ const identifiers = (0, identifiers_1.generateIdentifiers)(currentConfig.orgDomain, currentConfig.projectName);
18
+ console.log(chalk_1.default.bold('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
19
+ console.log(chalk_1.default.bold.blue(' Configuration Summary'));
20
+ console.log(chalk_1.default.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
21
+ // Basic info
22
+ console.log(chalk_1.default.cyan(' Basic Information:'));
23
+ console.log(` ${chalk_1.default.gray('Project Name:')} ${currentConfig.projectName}`);
24
+ console.log(` ${chalk_1.default.gray('Display Name:')} ${currentConfig.appDisplayName}`);
25
+ console.log(` ${chalk_1.default.gray('Organization:')} ${currentConfig.orgDomain}`);
26
+ console.log('');
27
+ // Mobile identifiers
28
+ console.log(chalk_1.default.cyan(' Mobile App Identifiers:'));
29
+ console.log(` ${chalk_1.default.gray('iOS Bundle ID:')} ${identifiers.iosBundleId}`);
30
+ console.log(` ${chalk_1.default.gray('Android Package:')} ${identifiers.androidPackageName}`);
31
+ console.log('');
32
+ // Core packages (always included)
33
+ console.log(chalk_1.default.cyan(' Core Packages:'));
34
+ console.log(` ${chalk_1.default.green('✓')} shared ${chalk_1.default.dim('- Shared components and utilities')}`);
35
+ console.log(` ${chalk_1.default.green('✓')} web ${chalk_1.default.dim('- React web application')}`);
36
+ console.log(` ${chalk_1.default.green('✓')} mobile ${chalk_1.default.dim('- React Native mobile application')}`);
37
+ console.log('');
38
+ // Extensions
39
+ const extensions = currentConfig.extensions || { api: false, prisma: false, trpc: false, graphql: false, devcontainer: false };
40
+ const enabledExtensions = [];
41
+ if (extensions.api)
42
+ enabledExtensions.push('api');
43
+ if (extensions.prisma)
44
+ enabledExtensions.push('prisma');
45
+ if (extensions.trpc)
46
+ enabledExtensions.push('trpc');
47
+ if (extensions.graphql)
48
+ enabledExtensions.push('graphql');
49
+ if (extensions.devcontainer)
50
+ enabledExtensions.push('devcontainer');
51
+ console.log(chalk_1.default.cyan(' Extensions:'));
52
+ if (enabledExtensions.length === 0) {
53
+ console.log(` ${chalk_1.default.dim('None selected')}`);
54
+ }
55
+ else {
56
+ if (extensions.api) {
57
+ console.log(` ${chalk_1.default.green('✓')} api ${chalk_1.default.dim('- Express API server')}`);
58
+ }
59
+ if (extensions.prisma) {
60
+ console.log(` ${chalk_1.default.green('✓')} database ${chalk_1.default.dim('- Prisma database layer')}`);
61
+ }
62
+ if (extensions.trpc) {
63
+ console.log(` ${chalk_1.default.green('✓')} tRPC ${chalk_1.default.dim('- Type-safe RPC')}`);
64
+ }
65
+ if (extensions.graphql) {
66
+ console.log(` ${chalk_1.default.green('✓')} GraphQL ${chalk_1.default.dim('- GraphQL API')}`);
67
+ }
68
+ if (extensions.devcontainer) {
69
+ const devConfig = typeof extensions.devcontainer === 'object'
70
+ ? extensions.devcontainer
71
+ : null;
72
+ if (devConfig) {
73
+ // Show detailed devcontainer config
74
+ const services = [];
75
+ if (devConfig.postgres)
76
+ services.push('PostgreSQL');
77
+ if (devConfig.redis)
78
+ services.push('Redis');
79
+ if (devConfig.chrome)
80
+ services.push('Chrome');
81
+ if (devConfig.claudeCode)
82
+ services.push('Claude Code');
83
+ const serviceList = services.length > 0 ? services.join(', ') : 'Base only';
84
+ console.log(` ${chalk_1.default.green('✓')} devcontainer ${chalk_1.default.dim(`- Docker dev environment (${serviceList})`)}`);
85
+ }
86
+ else {
87
+ console.log(` ${chalk_1.default.green('✓')} devcontainer ${chalk_1.default.dim('- Docker dev environment (all services)')}`);
88
+ }
89
+ }
90
+ }
91
+ console.log('');
92
+ console.log(chalk_1.default.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
93
+ const { confirm } = await inquirer_1.default.prompt([
94
+ {
95
+ type: 'confirm',
96
+ name: 'confirm',
97
+ message: 'Create project with this configuration?',
98
+ default: true,
99
+ },
100
+ ]);
101
+ return confirm;
102
+ },
103
+ validate(value) {
104
+ return { valid: true };
105
+ },
106
+ };
107
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/wizard/steps/summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /**
3
+ * tRPC extension wizard step
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.trpcExtensionStep = void 0;
10
+ const inquirer_1 = __importDefault(require("inquirer"));
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const validators_1 = require("../validators");
13
+ exports.trpcExtensionStep = {
14
+ id: 'extensions.trpc',
15
+ async prompt(currentConfig) {
16
+ console.log(chalk_1.default.bold('\nStep 5: tRPC'));
17
+ console.log(chalk_1.default.dim('Type-safe RPC for end-to-end type safety between frontend and backend.'));
18
+ console.log(chalk_1.default.dim('Integrates with React Query for data fetching.\n'));
19
+ const { enableTrpc } = await inquirer_1.default.prompt([
20
+ {
21
+ type: 'confirm',
22
+ name: 'enableTrpc',
23
+ message: 'Enable tRPC?',
24
+ default: true,
25
+ },
26
+ ]);
27
+ return enableTrpc;
28
+ },
29
+ validate(value) {
30
+ return (0, validators_1.validateBoolean)(value);
31
+ },
32
+ // Only show if API is enabled
33
+ shouldShow(config) {
34
+ return config.extensions?.api === true;
35
+ },
36
+ };
37
+ //# sourceMappingURL=trpcExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trpcExtension.js","sourceRoot":"","sources":["../../../src/wizard/steps/trpcExtension.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,wDAAgC;AAChC,kDAA0B;AAE1B,8CAAgD;AAEnC,QAAA,iBAAiB,GAAwB;IACpD,EAAE,EAAE,iBAAiB;IAErB,KAAK,CAAC,MAAM,CAAC,aAAqC;QAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;QAE3E,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAC3C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,OAAO,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,8BAA8B;IAC9B,UAAU,CAAC,MAA8B;QACvC,OAAO,MAAM,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACzC,CAAC;CACF,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * Wizard input validators
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateAppDisplayName = exports.validateOrgDomain = exports.validateProjectName = void 0;
7
+ exports.validateBoolean = validateBoolean;
8
+ exports.formatValidationError = formatValidationError;
9
+ const validation_1 = require("../utils/validation");
10
+ Object.defineProperty(exports, "validateProjectName", { enumerable: true, get: function () { return validation_1.validateProjectName; } });
11
+ Object.defineProperty(exports, "validateOrgDomain", { enumerable: true, get: function () { return validation_1.validateOrgDomain; } });
12
+ Object.defineProperty(exports, "validateAppDisplayName", { enumerable: true, get: function () { return validation_1.validateAppDisplayName; } });
13
+ /**
14
+ * Validate a boolean input
15
+ */
16
+ function validateBoolean(value) {
17
+ if (typeof value !== 'boolean') {
18
+ return {
19
+ valid: false,
20
+ error: 'Please select Yes or No',
21
+ };
22
+ }
23
+ return { valid: true };
24
+ }
25
+ /**
26
+ * Display validation error to user
27
+ */
28
+ function formatValidationError(result) {
29
+ let message = result.error || 'Invalid input';
30
+ if (result.suggestions && result.suggestions.length > 0) {
31
+ message += '\n' + result.suggestions.map(s => ` • ${s}`).join('\n');
32
+ }
33
+ return message;
34
+ }
35
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/wizard/validators.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqBH,0CAQC;AAKD,sDAQC;AAvCD,oDAI6B;AAM3B,oGATA,gCAAmB,OASA;AACnB,kGATA,8BAAiB,OASA;AACjB,uGATA,mCAAsB,OASA;AAGxB;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,yBAAyB;SACjC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,MAAwB;IAC5D,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC;IAE9C,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,34 +1,28 @@
1
1
  {
2
2
  "name": "@idealyst/cli",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "CLI tool for generating Idealyst Framework projects",
5
5
  "readme": "README.md",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
8
- "idealyst": "dist/index.js",
9
- "idealyst-cli": "dist/index.js"
8
+ "idealyst": "dist/index.js"
10
9
  },
11
10
  "repository": {
12
11
  "type": "git",
13
12
  "url": "https://github.com/IdealystIO/idealyst-framework.git",
14
13
  "directory": "packages/cli"
15
14
  },
16
- "author": "Your Name <your.email@example.com>",
15
+ "author": "Idealyst Team",
17
16
  "license": "MIT",
18
17
  "publishConfig": {
19
18
  "access": "public"
20
19
  },
21
20
  "scripts": {
22
21
  "build": "node scripts/build.js",
23
- "build:bash": "scripts/build.sh",
24
- "build:tsc": "npm run clean && tsc && npm run copy-templates",
25
- "build:validate": "npm run build && npm run validate",
26
- "copy-templates": "npm run clean-templates && cp -r templates dist/",
27
- "clean-templates": "rm -rf dist/templates",
28
- "validate": "node scripts/validate-build.js",
22
+ "build:tsc": "tsc",
23
+ "dev": "tsc --watch",
29
24
  "test": "jest",
30
25
  "test:integration": "jest __tests__/integration.test.ts",
31
- "dev": "tsc --watch",
32
26
  "clean": "rm -rf dist"
33
27
  },
34
28
  "dependencies": {
@@ -46,18 +40,11 @@
46
40
  "@types/node": "^20.0.0",
47
41
  "@types/validate-npm-package-name": "^4.0.0",
48
42
  "jest": "^29.7.0",
49
- "rollup": "^3.20.0",
50
- "rollup-plugin-commonjs": "^10.1.0",
51
- "rollup-plugin-json": "^4.0.0",
52
- "rollup-plugin-node-resolve": "^5.2.0",
53
- "rollup-plugin-typescript2": "^0.34.0",
54
43
  "ts-jest": "^29.1.0",
55
44
  "typescript": "^5.0.0"
56
45
  },
57
46
  "files": [
58
- "dist",
59
- "template",
60
- "docs"
47
+ "dist"
61
48
  ],
62
49
  "keywords": [
63
50
  "cli",
package/README.md DELETED
@@ -1,110 +0,0 @@
1
- # @idealyst/cli
2
-
3
- CLI tool for generating Idealyst Framework projects.
4
-
5
- ## Installation
6
-
7
- Install globally:
8
- ```bash
9
- npm install -g @idealyst/cli
10
- # or
11
- yarn global add @idealyst/cli
12
- ```
13
-
14
- ## Usage
15
-
16
- ### Create a new project
17
-
18
- ```bash
19
- idealyst create <project-name> [options]
20
- ```
21
-
22
- Options:
23
- - `-t, --type <type>` - Project type: `native`, `web`, or `shared` (default: `native`)
24
- - `-d, --directory <directory>` - Output directory (default: current directory)
25
- - `--skip-install` - Skip installing dependencies
26
-
27
- ### Initialize a new workspace
28
-
29
- ```bash
30
- idealyst init [options]
31
- ```
32
-
33
- Options:
34
- - `-d, --directory <directory>` - Output directory (default: current directory)
35
- - `--skip-install` - Skip installing dependencies
36
-
37
- ## Examples
38
-
39
- Create a React Native app:
40
- ```bash
41
- idealyst create my-app --type native
42
- ```
43
-
44
- Create a React web app:
45
- ```bash
46
- idealyst create my-web-app --type web
47
- ```
48
-
49
- Create a shared library:
50
- ```bash
51
- idealyst create my-lib --type shared
52
- ```
53
-
54
- Initialize a new workspace:
55
- ```bash
56
- idealyst init
57
- ```
58
-
59
- ## Project Types
60
-
61
- ### Native (React Native)
62
- - React Native 0.80.1
63
- - Idealyst Components
64
- - Idealyst Navigation
65
- - Idealyst Theme
66
- - TypeScript configuration
67
- - Metro bundler configuration
68
- - Babel configuration
69
-
70
- ### Web (React + Vite)
71
- - React 19.1
72
- - Vite build system
73
- - Idealyst Components (web-compatible)
74
- - Idealyst Navigation
75
- - Idealyst Theme
76
- - TypeScript configuration
77
- - React Native Web support
78
-
79
- ### Shared Library
80
- - Cross-platform components
81
- - TypeScript definitions
82
- - Rollup build system
83
- - Peer dependencies for React/React Native
84
- - Idealyst Theme integration
85
-
86
- ### Workspace
87
- - Yarn workspace configuration
88
- - Monorepo structure
89
- - Version management scripts
90
- - Build scripts for all packages
91
-
92
- ## Development
93
-
94
- Build the CLI:
95
- ```bash
96
- cd packages/cli
97
- yarn build
98
- ```
99
-
100
- Link for local development:
101
- ```bash
102
- yarn link
103
- ```
104
-
105
- ## Learn More
106
-
107
- - [Idealyst Framework Documentation](https://github.com/your-username/idealyst-framework)
108
- - [React Native Documentation](https://reactnative.dev/)
109
- - [React Documentation](https://react.dev/)
110
- - [Vite Documentation](https://vitejs.dev/)
@@ -1,268 +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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.generateFullStackProject = generateFullStackProject;
40
- const path_1 = __importDefault(require("path"));
41
- const fs = __importStar(require("fs-extra"));
42
- const chalk_1 = __importDefault(require("chalk"));
43
- const utils_1 = require("./utils");
44
- /**
45
- * Generate a complete full-stack workspace from the unified template
46
- */
47
- async function generateFullStackProject(options) {
48
- const { name, directory, skipInstall, figmaToken } = options;
49
- if (!(0, utils_1.validateProjectName)(name)) {
50
- throw new Error(`Invalid project name: ${name}`);
51
- }
52
- console.log(chalk_1.default.blue(`🚀 Creating Full-Stack Idealyst workspace: ${name}`));
53
- console.log(chalk_1.default.gray(' This will generate a complete workspace with all packages integrated'));
54
- const projectPath = path_1.default.join(directory, name);
55
- const templatePath = path_1.default.join(__dirname, '../../template');
56
- // Check if template exists
57
- if (!await fs.pathExists(templatePath)) {
58
- throw new Error(`Template directory not found at ${templatePath}`);
59
- }
60
- const templateData = (0, utils_1.getTemplateData)(name, `Full-stack Idealyst Framework workspace`, undefined, name);
61
- // Copy the entire template
62
- console.log(chalk_1.default.blue('📦 Copying template files...'));
63
- await copyTemplateWithReplacements(templatePath, projectPath, templateData);
64
- // Handle devcontainer setup
65
- const devcontainerDir = path_1.default.join(projectPath, '.devcontainer');
66
- const envPath = path_1.default.join(devcontainerDir, '.env');
67
- const envContent = figmaToken
68
- ? `# Figma Integration\nFIGMA_ACCESS_TOKEN=${figmaToken.trim()}\n`
69
- : `# Figma Integration\nFIGMA_ACCESS_TOKEN=\n`;
70
- await fs.writeFile(envPath, envContent);
71
- // Make scripts executable
72
- const scriptsToMakeExecutable = [
73
- path_1.default.join(devcontainerDir, 'figma-mcp.sh'),
74
- path_1.default.join(projectPath, 'setup.sh'),
75
- ];
76
- for (const script of scriptsToMakeExecutable) {
77
- if (await fs.pathExists(script)) {
78
- await fs.chmod(script, '755');
79
- }
80
- }
81
- // Initialize React Native native folders for mobile package
82
- console.log(chalk_1.default.blue('📱 Setting up React Native mobile package...'));
83
- await initializeMobilePackage(projectPath, templatePath, templateData, skipInstall);
84
- // Install dependencies
85
- await (0, utils_1.installDependencies)(projectPath, skipInstall);
86
- // Configure React Native for monorepo AFTER dependencies are installed
87
- // TEMPORARILY DISABLED FOR TESTING
88
- // if (!skipInstall) {
89
- // const mobilePackagePath = path.join(projectPath, 'packages', 'mobile');
90
- // if (await fs.pathExists(path.join(mobilePackagePath, 'android')) ||
91
- // await fs.pathExists(path.join(mobilePackagePath, 'ios'))) {
92
- // await configureReactNativeMonorepo(mobilePackagePath, projectPath);
93
- // }
94
- // }
95
- console.log(chalk_1.default.green('✅ Full-stack workspace created successfully!'));
96
- console.log(chalk_1.default.blue('📋 Your workspace includes:'));
97
- console.log(chalk_1.default.white(' • 🗄️ Database package with Prisma'));
98
- console.log(chalk_1.default.white(' • 🚀 API server with tRPC'));
99
- console.log(chalk_1.default.white(' • 🌐 React web app'));
100
- console.log(chalk_1.default.white(' • 📱 React Native mobile app'));
101
- console.log(chalk_1.default.white(' • 📦 Shared component library'));
102
- console.log(chalk_1.default.white(' • 🔗 All packages pre-integrated'));
103
- console.log('');
104
- console.log(chalk_1.default.green('🚀 Quick start:'));
105
- console.log(chalk_1.default.white(` cd ${name}`));
106
- console.log(chalk_1.default.white(' yarn db:generate # Generate Prisma client'));
107
- console.log(chalk_1.default.white(' yarn dev # Start all development servers'));
108
- console.log('');
109
- console.log(chalk_1.default.gray('💡 Check README.md for detailed setup instructions'));
110
- if (figmaToken) {
111
- console.log(chalk_1.default.blue('🎨 Figma integration configured in .devcontainer/.env'));
112
- }
113
- else {
114
- console.log(chalk_1.default.gray('💡 Tip: Add Figma integration later by editing .devcontainer/.env'));
115
- }
116
- }
117
- /**
118
- * Copy template directory with template variable replacements
119
- */
120
- async function copyTemplateWithReplacements(srcDir, destDir, templateData) {
121
- await fs.ensureDir(destDir);
122
- const files = await fs.readdir(srcDir);
123
- for (const file of files) {
124
- const srcPath = path_1.default.join(srcDir, file);
125
- // Handle .template files (renamed dotfiles from build process)
126
- let destFile = file;
127
- if (file.endsWith('.template')) {
128
- // Rename back to dotfile (e.g., gitignore.template -> .gitignore)
129
- destFile = '.' + file.replace('.template', '');
130
- }
131
- const destPath = path_1.default.join(destDir, destFile);
132
- // Skip excluded files
133
- if (shouldExcludeFile(file)) {
134
- continue;
135
- }
136
- const stat = await fs.stat(srcPath);
137
- if (stat.isDirectory()) {
138
- // Recursively copy directories
139
- await copyTemplateWithReplacements(srcPath, destPath, templateData);
140
- }
141
- else {
142
- // Check if file should be processed for template variables
143
- if (shouldProcessFile(file)) {
144
- let content = await fs.readFile(srcPath, 'utf8');
145
- content = replaceTemplateVariables(content, templateData);
146
- await fs.writeFile(destPath, content);
147
- }
148
- else {
149
- // Just copy binary files or files that shouldn't be processed
150
- await fs.copy(srcPath, destPath);
151
- }
152
- }
153
- }
154
- }
155
- /**
156
- * Determine if a file should be excluded from the generated project
157
- * These are template-only files that users don't need
158
- */
159
- function shouldExcludeFile(filename) {
160
- const baseName = path_1.default.basename(filename);
161
- // No more template variants - App.tsx is the only version now
162
- // Exclude development artifacts
163
- if (baseName.endsWith('.bak') || baseName.endsWith('~')) {
164
- return true;
165
- }
166
- // Exclude template-specific documentation
167
- // (Users get the main README which is customized)
168
- if (baseName === '.idealystignore' || baseName === '.templateignore') {
169
- return true;
170
- }
171
- return false;
172
- }
173
- /**
174
- * Determine if a file should be processed for template variables
175
- */
176
- function shouldProcessFile(filename) {
177
- const textExtensions = [
178
- '.ts', '.tsx', '.js', '.jsx', '.json', '.md', '.txt',
179
- '.yml', '.yaml', '.env', '.example', '.gitignore',
180
- '.dockerignore', '.sh', '.conf', '.sql'
181
- ];
182
- const baseName = path_1.default.basename(filename);
183
- // Check if it's a known text file
184
- if (textExtensions.some(ext => baseName.endsWith(ext))) {
185
- return true;
186
- }
187
- // Check for files without extensions that are typically text
188
- if (!baseName.includes('.') && ['Dockerfile', 'LICENSE', 'README'].some(name => baseName.includes(name))) {
189
- return true;
190
- }
191
- return false;
192
- }
193
- /**
194
- * Replace template variables in content
195
- */
196
- function replaceTemplateVariables(content, templateData) {
197
- let result = content;
198
- // Replace all template variables
199
- Object.entries(templateData).forEach(([key, value]) => {
200
- const placeholder = `{{${key}}}`;
201
- result = result.replace(new RegExp(placeholder, 'g'), String(value));
202
- });
203
- return result;
204
- }
205
- /**
206
- * Initialize React Native mobile package with native iOS/Android folders
207
- */
208
- async function initializeMobilePackage(projectPath, templatePath, templateData, skipInstall) {
209
- const mobilePackagePath = path_1.default.join(projectPath, 'packages', 'mobile');
210
- const mobileTemplatePath = path_1.default.join(templatePath, 'packages', 'mobile');
211
- // Check if mobile package exists
212
- if (!await fs.pathExists(mobilePackagePath)) {
213
- console.log(chalk_1.default.yellow(' ⚠️ Mobile package not found, skipping React Native initialization'));
214
- return;
215
- }
216
- const displayName = templateData.appName || templateData.projectName
217
- .split('-')
218
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
219
- .join(' ');
220
- // Try to initialize React Native project with native folders
221
- const useRnCli = process.env.IDEALYST_USE_RN_CLI !== 'false';
222
- if (useRnCli) {
223
- try {
224
- console.log(chalk_1.default.gray(' Initializing React Native with native platform support...'));
225
- console.log(chalk_1.default.gray(' (This creates proper Android/iOS directories)'));
226
- // Back up our Idealyst-specific files
227
- const backupPath = path_1.default.join(projectPath, '.mobile-backup');
228
- await fs.copy(mobilePackagePath, backupPath);
229
- // Remove the mobile directory to let RN CLI create it fresh
230
- await fs.remove(mobilePackagePath);
231
- // Run React Native init in packages directory
232
- const packagesDir = path_1.default.join(projectPath, 'packages');
233
- await (0, utils_1.initializeReactNativeProject)('mobile', packagesDir, displayName, true);
234
- // Overlay our Idealyst-specific files on top
235
- console.log(chalk_1.default.gray(' Applying Idealyst Framework configuration...'));
236
- await (0, utils_1.overlayIdealystFiles)(mobileTemplatePath, mobilePackagePath, templateData);
237
- // Configure React Native for monorepo (Android/iOS paths)
238
- // Only configure if we're going to install dependencies (paths need node_modules to exist)
239
- if (!skipInstall) {
240
- console.log(chalk_1.default.gray(' Configuring monorepo paths (will complete after dependency install)...'));
241
- }
242
- // Clean up backup
243
- await fs.remove(backupPath);
244
- console.log(chalk_1.default.green(' ✅ React Native mobile package initialized with native support'));
245
- }
246
- catch (rnError) {
247
- console.log(chalk_1.default.yellow(' ⚠️ React Native CLI initialization failed'));
248
- console.log(chalk_1.default.yellow(' The mobile package will work but may need manual setup for native platforms'));
249
- console.log('');
250
- console.log(chalk_1.default.gray(' You can initialize native folders later with:'));
251
- console.log(chalk_1.default.gray(` cd ${path_1.default.relative(process.cwd(), mobilePackagePath)}`));
252
- console.log(chalk_1.default.gray(' npx @react-native-community/cli@latest init mobile --title "' + displayName + '"'));
253
- console.log('');
254
- // Restore from backup if it exists
255
- const backupPath = path_1.default.join(projectPath, '.mobile-backup');
256
- if (await fs.pathExists(backupPath)) {
257
- await fs.remove(mobilePackagePath);
258
- await fs.copy(backupPath, mobilePackagePath);
259
- await fs.remove(backupPath);
260
- }
261
- }
262
- }
263
- else {
264
- console.log(chalk_1.default.gray(' ⚠️ Skipping React Native CLI (IDEALYST_USE_RN_CLI=false)'));
265
- console.log(chalk_1.default.gray(' You will need to set up native platforms manually'));
266
- }
267
- }
268
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/generators/init.ts"],"names":[],"mappings":"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"}