@idealyst/cli 1.1.9 → 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,272 @@
1
+ "use strict";
2
+ /**
3
+ * Workspace root generator
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.generateWorkspace = generateWorkspace;
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const copier_1 = require("../templates/copier");
13
+ const logger_1 = require("../utils/logger");
14
+ /**
15
+ * Generate workspace root structure
16
+ */
17
+ async function generateWorkspace(projectPath, data) {
18
+ logger_1.logger.info(`Creating workspace at ${projectPath}...`);
19
+ // Ensure project directory exists
20
+ await fs_extra_1.default.ensureDir(projectPath);
21
+ // Copy workspace template or generate programmatically
22
+ const templatePath = (0, copier_1.getTemplatePath)('core', 'workspace');
23
+ if (await (0, copier_1.templateHasContent)(templatePath)) {
24
+ await (0, copier_1.copyTemplateDirectory)(templatePath, projectPath, data);
25
+ }
26
+ else {
27
+ // Generate workspace files programmatically if no template exists
28
+ await generateWorkspaceFiles(projectPath, data);
29
+ }
30
+ }
31
+ /**
32
+ * Generate workspace files programmatically
33
+ */
34
+ async function generateWorkspaceFiles(projectPath, data) {
35
+ // Create packages directory
36
+ await fs_extra_1.default.ensureDir(path_1.default.join(projectPath, 'packages'));
37
+ // Generate root package.json
38
+ const packageJson = createRootPackageJson(data);
39
+ await fs_extra_1.default.writeJson(path_1.default.join(projectPath, 'package.json'), packageJson, { spaces: 2 });
40
+ // Generate tsconfig.json
41
+ const tsconfig = createRootTsConfig();
42
+ await fs_extra_1.default.writeJson(path_1.default.join(projectPath, 'tsconfig.json'), tsconfig, { spaces: 2 });
43
+ // Generate .gitignore
44
+ const gitignore = createGitignore();
45
+ await fs_extra_1.default.writeFile(path_1.default.join(projectPath, '.gitignore'), gitignore);
46
+ // Generate .yarnrc.yml
47
+ const yarnrc = createYarnrc();
48
+ await fs_extra_1.default.writeFile(path_1.default.join(projectPath, '.yarnrc.yml'), yarnrc);
49
+ // Generate README.md
50
+ const readme = createReadme(data);
51
+ await fs_extra_1.default.writeFile(path_1.default.join(projectPath, 'README.md'), readme);
52
+ }
53
+ /**
54
+ * Create root package.json content
55
+ */
56
+ function createRootPackageJson(data) {
57
+ const scripts = {
58
+ 'dev': 'concurrently "yarn web:dev" "yarn mobile:start"',
59
+ 'build': 'yarn build:packages && yarn web:build',
60
+ 'build:packages': 'yarn workspace @' + data.workspaceScope + '/shared build',
61
+ 'test': 'jest',
62
+ 'test:watch': 'jest --watch',
63
+ 'test:coverage': 'jest --coverage',
64
+ 'web:dev': 'yarn workspace @' + data.workspaceScope + '/web dev',
65
+ 'web:build': 'yarn workspace @' + data.workspaceScope + '/web build',
66
+ 'web:preview': 'yarn workspace @' + data.workspaceScope + '/web preview',
67
+ 'mobile:start': 'yarn workspace @' + data.workspaceScope + '/mobile start',
68
+ 'mobile:android': 'yarn workspace @' + data.workspaceScope + '/mobile android',
69
+ 'mobile:ios': 'yarn workspace @' + data.workspaceScope + '/mobile ios',
70
+ };
71
+ // Add API scripts if API is enabled
72
+ if (data.hasApi) {
73
+ scripts['api:dev'] = 'yarn workspace @' + data.workspaceScope + '/api dev';
74
+ scripts['api:build'] = 'yarn workspace @' + data.workspaceScope + '/api build';
75
+ scripts['dev'] = 'concurrently "yarn api:dev" "yarn web:dev" "yarn mobile:start"';
76
+ }
77
+ // Add database scripts if Prisma is enabled
78
+ if (data.hasPrisma) {
79
+ scripts['db:generate'] = 'yarn workspace @' + data.workspaceScope + '/database db:generate';
80
+ scripts['db:push'] = 'yarn workspace @' + data.workspaceScope + '/database db:push';
81
+ scripts['db:migrate'] = 'yarn workspace @' + data.workspaceScope + '/database db:migrate';
82
+ scripts['db:studio'] = 'yarn workspace @' + data.workspaceScope + '/database db:studio';
83
+ scripts['db:seed'] = 'yarn workspace @' + data.workspaceScope + '/database db:seed';
84
+ scripts['build:packages'] = 'yarn db:generate && yarn workspace @' + data.workspaceScope + '/shared build';
85
+ }
86
+ return {
87
+ name: `@${data.workspaceScope}/${data.projectName}`,
88
+ version: data.version,
89
+ private: true,
90
+ packageManager: 'yarn@4.1.0',
91
+ workspaces: ['packages/*'],
92
+ scripts,
93
+ devDependencies: {
94
+ 'concurrently': '^9.0.0',
95
+ 'jest': '^29.7.0',
96
+ '@types/jest': '^29.5.0',
97
+ 'ts-jest': '^29.1.0',
98
+ 'typescript': '^5.0.0',
99
+ },
100
+ };
101
+ }
102
+ /**
103
+ * Create root tsconfig.json
104
+ */
105
+ function createRootTsConfig() {
106
+ return {
107
+ compilerOptions: {
108
+ target: 'ES2020',
109
+ module: 'commonjs',
110
+ declaration: true,
111
+ declarationMap: true,
112
+ sourceMap: true,
113
+ strict: true,
114
+ esModuleInterop: true,
115
+ skipLibCheck: true,
116
+ forceConsistentCasingInFileNames: true,
117
+ moduleResolution: 'node',
118
+ resolveJsonModule: true,
119
+ },
120
+ include: ['packages/*/src/**/*'],
121
+ exclude: ['node_modules', 'dist', 'build'],
122
+ };
123
+ }
124
+ /**
125
+ * Create .gitignore content
126
+ */
127
+ function createGitignore() {
128
+ return `# Dependencies
129
+ node_modules/
130
+ .yarn/*
131
+ !.yarn/patches
132
+ !.yarn/plugins
133
+ !.yarn/releases
134
+ !.yarn/sdks
135
+ !.yarn/versions
136
+
137
+ # Build outputs
138
+ dist/
139
+ build/
140
+ .cache/
141
+ *.tsbuildinfo
142
+
143
+ # Environment
144
+ .env
145
+ .env.local
146
+ .env.*.local
147
+
148
+ # IDE
149
+ .idea/
150
+ .vscode/
151
+ *.swp
152
+ *.swo
153
+
154
+ # OS
155
+ .DS_Store
156
+ Thumbs.db
157
+
158
+ # Testing
159
+ coverage/
160
+ .jest/
161
+
162
+ # Mobile
163
+ ios/Pods/
164
+ android/.gradle/
165
+ android/app/build/
166
+ *.keystore
167
+ *.jks
168
+
169
+ # Logs
170
+ *.log
171
+ npm-debug.log*
172
+ yarn-debug.log*
173
+ yarn-error.log*
174
+
175
+ # Misc
176
+ *.tmp
177
+ *.bak
178
+ `;
179
+ }
180
+ /**
181
+ * Create .yarnrc.yml content
182
+ */
183
+ function createYarnrc() {
184
+ return `nodeLinker: node-modules
185
+
186
+ enableGlobalCache: true
187
+ `;
188
+ }
189
+ /**
190
+ * Create README.md content
191
+ */
192
+ function createReadme(data) {
193
+ return `# ${data.appDisplayName}
194
+
195
+ ${data.description}
196
+
197
+ Built with [Idealyst Framework](https://github.com/IdealystIO/idealyst-framework).
198
+
199
+ ## Getting Started
200
+
201
+ ### Install Dependencies
202
+
203
+ \`\`\`bash
204
+ yarn install
205
+ \`\`\`
206
+
207
+ ### Development
208
+
209
+ Start all development servers:
210
+
211
+ \`\`\`bash
212
+ yarn dev
213
+ \`\`\`
214
+
215
+ Or run individually:
216
+
217
+ \`\`\`bash
218
+ # Web
219
+ yarn web:dev
220
+
221
+ # Mobile
222
+ yarn mobile:start
223
+ yarn mobile:android # or yarn mobile:ios
224
+ ${data.hasApi ? `
225
+ # API
226
+ yarn api:dev
227
+ ` : ''}
228
+ \`\`\`
229
+ ${data.hasPrisma ? `
230
+ ### Database
231
+
232
+ \`\`\`bash
233
+ # Generate Prisma client
234
+ yarn db:generate
235
+
236
+ # Push schema to database
237
+ yarn db:push
238
+
239
+ # Open Prisma Studio
240
+ yarn db:studio
241
+ \`\`\`
242
+ ` : ''}
243
+ ### Build
244
+
245
+ \`\`\`bash
246
+ yarn build
247
+ \`\`\`
248
+
249
+ ### Testing
250
+
251
+ \`\`\`bash
252
+ yarn test
253
+ yarn test:watch
254
+ yarn test:coverage
255
+ \`\`\`
256
+
257
+ ## Project Structure
258
+
259
+ \`\`\`
260
+ ${data.projectName}/
261
+ ├── packages/
262
+ │ ├── shared/ # Shared components and utilities
263
+ │ ├── web/ # React web application
264
+ │ └── mobile/ # React Native mobile application${data.hasApi ? `
265
+ │ └── api/ # API server` : ''}${data.hasPrisma ? `
266
+ │ └── database/ # Database layer (Prisma)` : ''}
267
+ ├── package.json
268
+ └── README.md
269
+ \`\`\`
270
+ `;
271
+ }
272
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/generators/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * Android Package Name generation utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateAndroidPackageName = generateAndroidPackageName;
7
+ exports.validateAndroidPackageName = validateAndroidPackageName;
8
+ exports.toAndroidSegment = toAndroidSegment;
9
+ const constants_1 = require("../constants");
10
+ /**
11
+ * Generate Android package name
12
+ * Android does NOT allow hyphens - must be lowercase alphanumeric with dots
13
+ *
14
+ * @param orgDomain - Organization domain (e.g., "com.company")
15
+ * @param projectName - Project name in kebab-case
16
+ * @returns Android package name (hyphens removed)
17
+ *
18
+ * @example
19
+ * generateAndroidPackageName('com.mycompany', 'my-app')
20
+ * // Returns: 'com.mycompany.myapp'
21
+ */
22
+ function generateAndroidPackageName(orgDomain, projectName) {
23
+ // Normalize org domain
24
+ const normalizedDomain = orgDomain.toLowerCase().replace(/\.+$/, '');
25
+ // Normalize project name - remove hyphens for Android
26
+ const normalizedName = projectName
27
+ .toLowerCase()
28
+ .replace(/-/g, '') // Remove hyphens
29
+ .replace(/[^a-z0-9]/g, ''); // Remove any other non-alphanumeric
30
+ return `${normalizedDomain}.${normalizedName}`;
31
+ }
32
+ /**
33
+ * Validate Android package name format
34
+ */
35
+ function validateAndroidPackageName(packageName) {
36
+ // Must be all lowercase with dots separating segments
37
+ if (!constants_1.PATTERNS.ANDROID_PACKAGE.test(packageName)) {
38
+ return {
39
+ valid: false,
40
+ error: 'Package name must be lowercase, start with letter, and have dot-separated segments',
41
+ };
42
+ }
43
+ // Check for reserved keywords
44
+ const segments = packageName.split('.');
45
+ for (const segment of segments) {
46
+ if (constants_1.JAVA_RESERVED_KEYWORDS.includes(segment)) {
47
+ return {
48
+ valid: false,
49
+ error: `"${segment}" is a Java reserved keyword and cannot be used`,
50
+ suggestions: [`Change "${segment}" to something else like "${segment}app"`],
51
+ };
52
+ }
53
+ }
54
+ // Each segment must not be empty
55
+ for (const segment of segments) {
56
+ if (segment.length === 0) {
57
+ return {
58
+ valid: false,
59
+ error: 'Package name segments cannot be empty',
60
+ };
61
+ }
62
+ }
63
+ return { valid: true };
64
+ }
65
+ /**
66
+ * Convert a kebab-case string to a valid Android package segment
67
+ * Removes hyphens and ensures lowercase
68
+ */
69
+ function toAndroidSegment(input) {
70
+ return input
71
+ .toLowerCase()
72
+ .replace(/-/g, '')
73
+ .replace(/[^a-z0-9]/g, '');
74
+ }
75
+ //# sourceMappingURL=android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android.js","sourceRoot":"","sources":["../../src/identifiers/android.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAiBH,gEAWC;AAKD,gEAgCC;AAMD,4CAKC;AAzED,4CAAgE;AAEhE;;;;;;;;;;;GAWG;AACH,SAAgB,0BAA0B,CAAC,SAAiB,EAAE,WAAmB;IAC/E,uBAAuB;IACvB,MAAM,gBAAgB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErE,sDAAsD;IACtD,MAAM,cAAc,GAAG,WAAW;SAC/B,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAE,iBAAiB;SACpC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,oCAAoC;IAElE,OAAO,GAAG,gBAAgB,IAAI,cAAc,EAAE,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CAAC,WAAmB;IAC5D,sDAAsD;IACtD,IAAI,CAAC,oBAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oFAAoF;SAC5F,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,kCAAsB,CAAC,QAAQ,CAAC,OAAgD,CAAC,EAAE,CAAC;YACtF,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI,OAAO,iDAAiD;gBACnE,WAAW,EAAE,CAAC,WAAW,OAAO,6BAA6B,OAAO,MAAM,CAAC;aAC5E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,uCAAuC;aAC/C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * Mobile identifier generation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateAndroidPackageName = exports.generateAndroidPackageName = exports.validateIosBundleId = exports.generateIosBundleId = void 0;
7
+ exports.generateIdentifiers = generateIdentifiers;
8
+ const ios_1 = require("./ios");
9
+ Object.defineProperty(exports, "generateIosBundleId", { enumerable: true, get: function () { return ios_1.generateIosBundleId; } });
10
+ Object.defineProperty(exports, "validateIosBundleId", { enumerable: true, get: function () { return ios_1.validateIosBundleId; } });
11
+ const android_1 = require("./android");
12
+ Object.defineProperty(exports, "generateAndroidPackageName", { enumerable: true, get: function () { return android_1.generateAndroidPackageName; } });
13
+ Object.defineProperty(exports, "validateAndroidPackageName", { enumerable: true, get: function () { return android_1.validateAndroidPackageName; } });
14
+ /**
15
+ * Generate iOS and Android identifiers from org domain and project name
16
+ *
17
+ * @param orgDomain - Organization domain (e.g., "com.company")
18
+ * @param projectName - Project name in kebab-case
19
+ * @returns Generated identifiers for both platforms
20
+ *
21
+ * @example
22
+ * generateIdentifiers('com.mycompany', 'awesome-app')
23
+ * // Returns:
24
+ * // {
25
+ * // iosBundleId: 'com.mycompany.awesome-app',
26
+ * // androidPackageName: 'com.mycompany.awesomeapp'
27
+ * // }
28
+ */
29
+ function generateIdentifiers(orgDomain, projectName) {
30
+ return {
31
+ iosBundleId: (0, ios_1.generateIosBundleId)(orgDomain, projectName),
32
+ androidPackageName: (0, android_1.generateAndroidPackageName)(orgDomain, projectName),
33
+ };
34
+ }
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identifiers/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAyBH,kDAQC;AA/BD,+BAAiE;AAkC/D,oGAlCO,yBAAmB,OAkCP;AACnB,oGAnC4B,yBAAmB,OAmC5B;AAlCrB,uCAAmF;AAmCjF,2GAnCO,oCAA0B,OAmCP;AAC1B,2GApCmC,oCAA0B,OAoCnC;AA7B5B;;;;;;;;;;;;;;GAcG;AACH,SAAgB,mBAAmB,CACjC,SAAiB,EACjB,WAAmB;IAEnB,OAAO;QACL,WAAW,EAAE,IAAA,yBAAmB,EAAC,SAAS,EAAE,WAAW,CAAC;QACxD,kBAAkB,EAAE,IAAA,oCAA0B,EAAC,SAAS,EAAE,WAAW,CAAC;KACvE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ /**
3
+ * iOS Bundle ID generation utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateIosBundleId = generateIosBundleId;
7
+ exports.validateIosBundleId = validateIosBundleId;
8
+ const constants_1 = require("../constants");
9
+ /**
10
+ * Generate iOS bundle identifier
11
+ * iOS allows hyphens in bundle IDs
12
+ *
13
+ * @param orgDomain - Organization domain (e.g., "com.company")
14
+ * @param projectName - Project name in kebab-case
15
+ * @returns iOS bundle identifier
16
+ *
17
+ * @example
18
+ * generateIosBundleId('com.mycompany', 'my-app')
19
+ * // Returns: 'com.mycompany.my-app'
20
+ */
21
+ function generateIosBundleId(orgDomain, projectName) {
22
+ // Normalize org domain (ensure lowercase, no trailing dots)
23
+ const normalizedDomain = orgDomain.toLowerCase().replace(/\.+$/, '');
24
+ // Normalize project name (lowercase, keep hyphens)
25
+ const normalizedName = projectName.toLowerCase();
26
+ return `${normalizedDomain}.${normalizedName}`;
27
+ }
28
+ /**
29
+ * Validate iOS bundle ID format
30
+ */
31
+ function validateIosBundleId(bundleId) {
32
+ // Must start with letter
33
+ if (!/^[a-zA-Z]/.test(bundleId)) {
34
+ return {
35
+ valid: false,
36
+ error: 'Bundle ID must start with a letter',
37
+ };
38
+ }
39
+ // Only alphanumeric, dots, and hyphens
40
+ if (!constants_1.PATTERNS.IOS_BUNDLE_ID.test(bundleId)) {
41
+ return {
42
+ valid: false,
43
+ error: 'Bundle ID can only contain letters, numbers, dots, and hyphens',
44
+ };
45
+ }
46
+ // Must have at least two segments (e.g., com.app)
47
+ const segments = bundleId.split('.');
48
+ if (segments.length < 2) {
49
+ return {
50
+ valid: false,
51
+ error: 'Bundle ID must have at least two segments (e.g., com.app)',
52
+ };
53
+ }
54
+ // Each segment must not be empty
55
+ for (const segment of segments) {
56
+ if (segment.length === 0) {
57
+ return {
58
+ valid: false,
59
+ error: 'Bundle ID segments cannot be empty',
60
+ };
61
+ }
62
+ }
63
+ return { valid: true };
64
+ }
65
+ //# sourceMappingURL=ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios.js","sourceRoot":"","sources":["../../src/identifiers/ios.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAiBH,kDAQC;AAKD,kDAqCC;AAhED,4CAAwC;AAExC;;;;;;;;;;;GAWG;AACH,SAAgB,mBAAmB,CAAC,SAAiB,EAAE,WAAmB;IACxE,4DAA4D;IAC5D,MAAM,gBAAgB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErE,mDAAmD;IACnD,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAEjD,OAAO,GAAG,gBAAgB,IAAI,cAAc,EAAE,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,yBAAyB;IACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oCAAoC;SAC5C,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,oBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,gEAAgE;SACxE,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,2DAA2D;SACnE,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,oCAAoC;aAC5C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC"}