@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,258 @@
1
+ "use strict";
2
+ /**
3
+ * tRPC extension 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.applyTrpcExtension = applyTrpcExtension;
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const merger_1 = require("../../templates/merger");
13
+ const constants_1 = require("../../constants");
14
+ const logger_1 = require("../../utils/logger");
15
+ /**
16
+ * Apply tRPC extension to a workspace
17
+ * This adds tRPC to API, web, and mobile packages
18
+ */
19
+ async function applyTrpcExtension(projectPath, data) {
20
+ logger_1.logger.info('Configuring tRPC...');
21
+ // Add tRPC to API package
22
+ await addTrpcToApi(projectPath, data);
23
+ // Add tRPC to web package
24
+ await addTrpcToWeb(projectPath, data);
25
+ // Add tRPC to mobile package
26
+ await addTrpcToMobile(projectPath, data);
27
+ // Add tRPC to shared package (for shared types)
28
+ await addTrpcToShared(projectPath, data);
29
+ return { success: true };
30
+ }
31
+ /**
32
+ * Add tRPC server setup to API package
33
+ */
34
+ async function addTrpcToApi(projectPath, data) {
35
+ const apiDir = path_1.default.join(projectPath, 'packages', 'api');
36
+ const trpcDir = path_1.default.join(apiDir, 'src', 'trpc');
37
+ await fs_extra_1.default.ensureDir(trpcDir);
38
+ // Create trpc.ts (context and initialization)
39
+ await fs_extra_1.default.writeFile(path_1.default.join(trpcDir, 'trpc.ts'), createTrpcInit(data));
40
+ // Create router.ts
41
+ await fs_extra_1.default.writeFile(path_1.default.join(trpcDir, 'router.ts'), createTrpcRouter(data));
42
+ // Create routers/index.ts
43
+ await fs_extra_1.default.ensureDir(path_1.default.join(trpcDir, 'routers'));
44
+ await fs_extra_1.default.writeFile(path_1.default.join(trpcDir, 'routers', 'index.ts'), createExampleRouter(data));
45
+ // Add dependencies
46
+ await (0, merger_1.addDependencies)(path_1.default.join(apiDir, 'package.json'), constants_1.DEPENDENCIES.trpcServer);
47
+ }
48
+ /**
49
+ * Add tRPC client to web package
50
+ */
51
+ async function addTrpcToWeb(projectPath, data) {
52
+ const webDir = path_1.default.join(projectPath, 'packages', 'web');
53
+ const utilsDir = path_1.default.join(webDir, 'src', 'utils');
54
+ await fs_extra_1.default.ensureDir(utilsDir);
55
+ // Create trpc.ts client
56
+ await fs_extra_1.default.writeFile(path_1.default.join(utilsDir, 'trpc.ts'), createTrpcClient(data, 'web'));
57
+ // Add dependencies
58
+ await (0, merger_1.addDependencies)(path_1.default.join(webDir, 'package.json'), constants_1.DEPENDENCIES.trpc);
59
+ }
60
+ /**
61
+ * Add tRPC client to mobile package
62
+ */
63
+ async function addTrpcToMobile(projectPath, data) {
64
+ const mobileDir = path_1.default.join(projectPath, 'packages', 'mobile');
65
+ const utilsDir = path_1.default.join(mobileDir, 'src', 'utils');
66
+ await fs_extra_1.default.ensureDir(utilsDir);
67
+ // Create trpc.ts client
68
+ await fs_extra_1.default.writeFile(path_1.default.join(utilsDir, 'trpc.ts'), createTrpcClient(data, 'mobile'));
69
+ // Add dependencies
70
+ await (0, merger_1.addDependencies)(path_1.default.join(mobileDir, 'package.json'), constants_1.DEPENDENCIES.trpc);
71
+ }
72
+ /**
73
+ * Add tRPC types to shared package
74
+ */
75
+ async function addTrpcToShared(projectPath, data) {
76
+ const sharedDir = path_1.default.join(projectPath, 'packages', 'shared');
77
+ const trpcDir = path_1.default.join(sharedDir, 'src', 'trpc');
78
+ await fs_extra_1.default.ensureDir(trpcDir);
79
+ // Create shared tRPC client factory
80
+ await fs_extra_1.default.writeFile(path_1.default.join(trpcDir, 'client.ts'), createSharedTrpcClient(data));
81
+ // Create index.ts
82
+ await fs_extra_1.default.writeFile(path_1.default.join(trpcDir, 'index.ts'), `export * from './client';\n`);
83
+ // Add dependencies
84
+ await (0, merger_1.addDependencies)(path_1.default.join(sharedDir, 'package.json'), constants_1.DEPENDENCIES.trpc);
85
+ }
86
+ /**
87
+ * Create tRPC initialization (server-side)
88
+ */
89
+ function createTrpcInit(data) {
90
+ return `/**
91
+ * tRPC initialization
92
+ */
93
+
94
+ import { initTRPC } from '@trpc/server';
95
+ import { ZodError } from 'zod';
96
+ import type { CreateExpressContextOptions } from '@trpc/server/adapters/express';
97
+ ${data.hasPrisma ? `import { prisma } from '@${data.workspaceScope}/database';` : ''}
98
+
99
+ /**
100
+ * Create context for each request
101
+ */
102
+ export const createContext = ({ req, res }: CreateExpressContextOptions) => {
103
+ return {
104
+ req,
105
+ res,
106
+ ${data.hasPrisma ? ' prisma,' : ''}
107
+ };
108
+ };
109
+
110
+ export type Context = Awaited<ReturnType<typeof createContext>>;
111
+
112
+ /**
113
+ * Initialize tRPC
114
+ */
115
+ const t = initTRPC.context<Context>().create({
116
+ errorFormatter({ shape, error }) {
117
+ return {
118
+ ...shape,
119
+ data: {
120
+ ...shape.data,
121
+ zodError:
122
+ error.cause instanceof ZodError ? error.cause.flatten() : null,
123
+ },
124
+ };
125
+ },
126
+ });
127
+
128
+ export const router = t.router;
129
+ export const publicProcedure = t.procedure;
130
+ export const middleware = t.middleware;
131
+
132
+ // Example protected procedure (add your auth logic)
133
+ // export const protectedProcedure = publicProcedure.use(({ ctx, next }) => {
134
+ // if (!ctx.user) {
135
+ // throw new TRPCError({ code: 'UNAUTHORIZED' });
136
+ // }
137
+ // return next({ ctx: { ...ctx, user: ctx.user } });
138
+ // });
139
+ `;
140
+ }
141
+ /**
142
+ * Create tRPC router
143
+ */
144
+ function createTrpcRouter(data) {
145
+ return `/**
146
+ * tRPC router
147
+ */
148
+
149
+ import { router, publicProcedure, createContext } from './trpc';
150
+ import { exampleRouter } from './routers';
151
+
152
+ export const appRouter = router({
153
+ // Health check
154
+ health: publicProcedure.query(() => ({
155
+ status: 'ok',
156
+ timestamp: new Date().toISOString(),
157
+ })),
158
+
159
+ // Example router
160
+ example: exampleRouter,
161
+
162
+ // Add more routers here
163
+ });
164
+
165
+ export type AppRouter = typeof appRouter;
166
+ export { createContext };
167
+ `;
168
+ }
169
+ /**
170
+ * Create example router
171
+ */
172
+ function createExampleRouter(data) {
173
+ return `/**
174
+ * Example router
175
+ */
176
+
177
+ import { z } from 'zod';
178
+ import { router, publicProcedure } from '../trpc';
179
+
180
+ export const exampleRouter = router({
181
+ hello: publicProcedure
182
+ .input(z.object({ name: z.string().optional() }))
183
+ .query(({ input }) => {
184
+ return {
185
+ greeting: \`Hello, \${input.name || 'World'}!\`,
186
+ };
187
+ }),
188
+
189
+ // Add more procedures here
190
+ });
191
+ `;
192
+ }
193
+ /**
194
+ * Create tRPC client (for web/mobile)
195
+ */
196
+ function createTrpcClient(data, platform) {
197
+ const apiUrl = platform === 'mobile'
198
+ ? 'http://10.0.2.2:3000/trpc' // Android emulator localhost
199
+ : 'http://localhost:3000/trpc';
200
+ // Web uses import.meta.env (Vite), mobile uses process.env
201
+ const envAccess = platform === 'web'
202
+ ? 'import.meta.env.VITE_API_URL'
203
+ : 'process.env.API_URL';
204
+ return `/**
205
+ * tRPC client for ${platform}
206
+ */
207
+
208
+ import { createTRPCReact } from '@trpc/react-query';
209
+ import { httpBatchLink } from '@trpc/client';
210
+ import type { AppRouter } from '@${data.workspaceScope}/api';
211
+
212
+ export const trpc = createTRPCReact<AppRouter>();
213
+
214
+ export const trpcClient = trpc.createClient({
215
+ links: [
216
+ httpBatchLink({
217
+ url: ${envAccess} || '${apiUrl}',
218
+ }),
219
+ ],
220
+ });
221
+ `;
222
+ }
223
+ /**
224
+ * Create shared tRPC client factory
225
+ */
226
+ function createSharedTrpcClient(data) {
227
+ return `/**
228
+ * Shared tRPC client factory
229
+ */
230
+
231
+ import { createTRPCReact, httpBatchLink } from '@trpc/react-query';
232
+ import type { AppRouter } from '@${data.workspaceScope}/api';
233
+
234
+ /**
235
+ * Create a tRPC client with custom configuration
236
+ */
237
+ export function createTrpcClient(options: {
238
+ url?: string;
239
+ headers?: () => Record<string, string>;
240
+ } = {}) {
241
+ const trpc = createTRPCReact<AppRouter>();
242
+
243
+ const client = trpc.createClient({
244
+ links: [
245
+ httpBatchLink({
246
+ url: options.url || 'http://localhost:3000/trpc',
247
+ headers: options.headers,
248
+ }),
249
+ ],
250
+ });
251
+
252
+ return { trpc, client };
253
+ }
254
+
255
+ export type { AppRouter };
256
+ `;
257
+ }
258
+ //# sourceMappingURL=trpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trpc.js","sourceRoot":"","sources":["../../../src/generators/extensions/trpc.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ /**
3
+ * Generator orchestrator - main entry point for project generation
4
+ */
2
5
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
6
  if (k2 === undefined) k2 = k;
4
7
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -13,11 +16,110 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
13
16
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
17
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
18
  };
19
+ var __importDefault = (this && this.__importDefault) || function (mod) {
20
+ return (mod && mod.__esModule) ? mod : { "default": mod };
21
+ };
16
22
  Object.defineProperty(exports, "__esModule", { value: true });
17
23
  exports.generateProject = generateProject;
18
- const init_1 = require("./init");
19
- async function generateProject(options) {
20
- await (0, init_1.generateFullStackProject)(options);
24
+ const path_1 = __importDefault(require("path"));
25
+ const workspace_1 = require("./workspace");
26
+ const core_1 = require("./core");
27
+ const api_1 = require("./extensions/api");
28
+ const prisma_1 = require("./extensions/prisma");
29
+ const trpc_1 = require("./extensions/trpc");
30
+ const graphql_1 = require("./extensions/graphql");
31
+ const devcontainer_1 = require("./extensions/devcontainer");
32
+ const shell_1 = require("../utils/shell");
33
+ const logger_1 = require("../utils/logger");
34
+ const constants_1 = require("../constants");
35
+ const processor_1 = require("../templates/processor");
36
+ /**
37
+ * Main generator function - orchestrates all generation
38
+ */
39
+ async function generateProject(config) {
40
+ const projectPath = path_1.default.join(config.directory, config.projectName);
41
+ const warnings = [];
42
+ const nextSteps = [];
43
+ logger_1.logger.header(`Creating Idealyst workspace: ${config.projectName}`);
44
+ // Build template data
45
+ const templateData = (0, processor_1.buildTemplateData)(config, constants_1.IDEALYST_VERSION);
46
+ // Step 1: Generate workspace root
47
+ logger_1.logger.step('Creating workspace structure...');
48
+ await (0, workspace_1.generateWorkspace)(projectPath, templateData);
49
+ // Step 2: Generate core packages (always included)
50
+ logger_1.logger.step('Creating shared package...');
51
+ await (0, core_1.generateSharedPackage)(projectPath, templateData);
52
+ logger_1.logger.step('Creating web package...');
53
+ await (0, core_1.generateWebPackage)(projectPath, templateData);
54
+ // Step 3: Generate mobile package with React Native
55
+ logger_1.logger.step('Setting up React Native mobile package...');
56
+ const mobileResult = await (0, core_1.generateMobilePackage)(projectPath, {
57
+ ...templateData,
58
+ bundleId: config.iosBundleId,
59
+ packageName: config.androidPackageName,
60
+ skipInstall: true, // We'll install all at once at the end
61
+ });
62
+ if (mobileResult.warning) {
63
+ warnings.push(mobileResult.warning);
64
+ }
65
+ // Step 4: Apply extensions
66
+ const packagesCreated = ['shared', 'web', 'mobile'];
67
+ const extensionsEnabled = [];
68
+ if (config.extensions.api) {
69
+ logger_1.logger.step('Adding API server...');
70
+ await (0, api_1.applyApiExtension)(projectPath, templateData);
71
+ packagesCreated.push('api');
72
+ extensionsEnabled.push('api');
73
+ }
74
+ if (config.extensions.prisma) {
75
+ logger_1.logger.step('Adding Prisma database...');
76
+ await (0, prisma_1.applyPrismaExtension)(projectPath, templateData);
77
+ packagesCreated.push('database');
78
+ extensionsEnabled.push('prisma');
79
+ nextSteps.push('Run `yarn db:generate` to generate Prisma client');
80
+ }
81
+ if (config.extensions.trpc) {
82
+ logger_1.logger.step('Configuring tRPC...');
83
+ await (0, trpc_1.applyTrpcExtension)(projectPath, templateData);
84
+ extensionsEnabled.push('trpc');
85
+ }
86
+ if (config.extensions.graphql) {
87
+ logger_1.logger.step('Configuring GraphQL...');
88
+ await (0, graphql_1.applyGraphqlExtension)(projectPath, templateData);
89
+ extensionsEnabled.push('graphql');
90
+ }
91
+ if (config.extensions.devcontainer) {
92
+ logger_1.logger.step('Setting up devcontainer...');
93
+ await (0, devcontainer_1.applyDevcontainerExtension)(projectPath, templateData, config.extensions.devcontainer);
94
+ extensionsEnabled.push('devcontainer');
95
+ nextSteps.push('Open in VS Code and select "Reopen in Container" to use devcontainer');
96
+ }
97
+ // Step 5: Install dependencies
98
+ if (!config.skipInstall) {
99
+ logger_1.logger.step('Installing dependencies...');
100
+ try {
101
+ await (0, shell_1.installDependencies)(projectPath);
102
+ logger_1.logger.success('Dependencies installed successfully!');
103
+ }
104
+ catch (error) {
105
+ warnings.push('Failed to install dependencies. Run `yarn install` manually.');
106
+ }
107
+ }
108
+ else {
109
+ nextSteps.unshift('Run `yarn install` to install dependencies');
110
+ }
111
+ // Add common next steps
112
+ nextSteps.push('Run `yarn dev` to start all development servers');
113
+ return {
114
+ success: true,
115
+ projectPath,
116
+ packagesCreated,
117
+ extensionsEnabled,
118
+ warnings,
119
+ nextSteps,
120
+ };
21
121
  }
22
- __exportStar(require("./init"), exports);
122
+ __exportStar(require("./workspace"), exports);
123
+ __exportStar(require("./core"), exports);
124
+ __exportStar(require("./reactNative"), exports);
23
125
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,0CAEC;AAJD,iCAAkD;AAE3C,KAAK,UAAU,eAAe,CAAC,OAA+B;IACnE,MAAM,IAAA,+BAAwB,EAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ /**
3
+ * React Native initialization utilities
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.initializeReactNative = initializeReactNative;
43
+ exports.hasNativeFolders = hasNativeFolders;
44
+ exports.overlayIdealystFiles = overlayIdealystFiles;
45
+ const path_1 = __importDefault(require("path"));
46
+ const fs_extra_1 = __importDefault(require("fs-extra"));
47
+ const shell_1 = require("../utils/shell");
48
+ const logger_1 = require("../utils/logger");
49
+ const constants_1 = require("../constants");
50
+ /**
51
+ * Initialize a React Native project with correct identifiers
52
+ */
53
+ async function initializeReactNative(options) {
54
+ const { projectName, displayName, bundleId, packageName, directory, skipInstall } = options;
55
+ try {
56
+ logger_1.logger.info('Initializing React Native with native platform support...');
57
+ // Build the React Native CLI command
58
+ const args = [
59
+ '@react-native-community/cli@latest',
60
+ 'init',
61
+ projectName,
62
+ '--title', displayName,
63
+ '--package-name', packageName, // Sets Android package name
64
+ '--pm', 'yarn',
65
+ '--skip-git-init',
66
+ ];
67
+ if (skipInstall) {
68
+ args.push('--skip-install');
69
+ }
70
+ const result = await (0, shell_1.runCommand)('npx', args, {
71
+ cwd: directory,
72
+ timeout: constants_1.RN_TIMEOUT,
73
+ silent: false,
74
+ });
75
+ if (result.exitCode !== 0) {
76
+ throw new Error('React Native CLI failed');
77
+ }
78
+ // Update iOS bundle identifier (RN CLI only sets Android package name)
79
+ await updateIosBundleId(path_1.default.join(directory, projectName), bundleId, projectName);
80
+ // Configure Android Vector Icons
81
+ await configureAndroidVectorIcons(path_1.default.join(directory, projectName));
82
+ return { success: true };
83
+ }
84
+ catch (error) {
85
+ logger_1.logger.warn('React Native CLI initialization failed');
86
+ logger_1.logger.dim('Native folders could not be created automatically.');
87
+ logger_1.logger.dim('You may need to run React Native init manually or use Expo.');
88
+ return {
89
+ success: false,
90
+ warning: 'Native folders could not be created. You may need to initialize React Native manually.',
91
+ };
92
+ }
93
+ }
94
+ /**
95
+ * Update iOS bundle identifier in project.pbxproj
96
+ */
97
+ async function updateIosBundleId(projectPath, bundleId, projectName) {
98
+ const pbxprojPath = path_1.default.join(projectPath, 'ios', `${projectName}.xcodeproj`, 'project.pbxproj');
99
+ if (await fs_extra_1.default.pathExists(pbxprojPath)) {
100
+ let content = await fs_extra_1.default.readFile(pbxprojPath, 'utf8');
101
+ // Replace default bundle identifier pattern
102
+ // RN CLI uses org.reactjs.native.example.{projectName} by default
103
+ content = content.replace(/PRODUCT_BUNDLE_IDENTIFIER = "[^"]+"/g, `PRODUCT_BUNDLE_IDENTIFIER = "${bundleId}"`);
104
+ await fs_extra_1.default.writeFile(pbxprojPath, content);
105
+ logger_1.logger.success(`Updated iOS bundle identifier to: ${bundleId}`);
106
+ }
107
+ }
108
+ /**
109
+ * Configure Android Vector Icons in build.gradle
110
+ */
111
+ async function configureAndroidVectorIcons(projectPath) {
112
+ const buildGradlePath = path_1.default.join(projectPath, 'android', 'app', 'build.gradle');
113
+ if (await fs_extra_1.default.pathExists(buildGradlePath)) {
114
+ let content = await fs_extra_1.default.readFile(buildGradlePath, 'utf8');
115
+ // Check if vector icons is already configured
116
+ if (content.includes('react-native-vector-icons')) {
117
+ return;
118
+ }
119
+ // Add vector icons configuration after the android block
120
+ const vectorIconsLine = 'apply from: file("../../node_modules/react-native-vector-icons/fonts.gradle")';
121
+ // Find a good place to add it (after the last apply statement or at the end)
122
+ if (content.includes('apply plugin:')) {
123
+ // Add after the last apply plugin line
124
+ const lines = content.split('\n');
125
+ let lastApplyIndex = -1;
126
+ for (let i = 0; i < lines.length; i++) {
127
+ if (lines[i].includes('apply plugin:') || lines[i].includes('apply from:')) {
128
+ lastApplyIndex = i;
129
+ }
130
+ }
131
+ if (lastApplyIndex !== -1) {
132
+ lines.splice(lastApplyIndex + 1, 0, vectorIconsLine);
133
+ content = lines.join('\n');
134
+ }
135
+ }
136
+ else {
137
+ // Append at the end
138
+ content += '\n' + vectorIconsLine + '\n';
139
+ }
140
+ await fs_extra_1.default.writeFile(buildGradlePath, content);
141
+ logger_1.logger.success('Configured Android vector icons');
142
+ }
143
+ }
144
+ /**
145
+ * Check if native folders exist in a mobile package
146
+ */
147
+ async function hasNativeFolders(mobileDir) {
148
+ return {
149
+ android: await fs_extra_1.default.pathExists(path_1.default.join(mobileDir, 'android')),
150
+ ios: await fs_extra_1.default.pathExists(path_1.default.join(mobileDir, 'ios')),
151
+ };
152
+ }
153
+ /**
154
+ * Overlay Idealyst files onto an existing React Native project
155
+ */
156
+ async function overlayIdealystFiles(mobileDir, templateDir, data) {
157
+ const { copyTemplateDirectory } = await Promise.resolve().then(() => __importStar(require('../templates/copier')));
158
+ // Copy template files, skipping android/ios directories
159
+ const entries = await fs_extra_1.default.readdir(templateDir, { withFileTypes: true });
160
+ for (const entry of entries) {
161
+ // Skip native folders - we don't want to overwrite RN CLI generated ones
162
+ if (entry.name === 'android' || entry.name === 'ios') {
163
+ continue;
164
+ }
165
+ const sourcePath = path_1.default.join(templateDir, entry.name);
166
+ const destPath = path_1.default.join(mobileDir, entry.name);
167
+ if (entry.isDirectory()) {
168
+ await copyTemplateDirectory(sourcePath, destPath, data);
169
+ }
170
+ else {
171
+ // Copy file with template processing
172
+ const { copyTemplateFile } = await Promise.resolve().then(() => __importStar(require('../templates/copier')));
173
+ await copyTemplateFile(sourcePath, destPath, data);
174
+ }
175
+ }
176
+ }
177
+ //# sourceMappingURL=reactNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactNative.js","sourceRoot":"","sources":["../../src/generators/reactNative.ts"],"names":[],"mappings":"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"}