@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,233 @@
1
+ "use strict";
2
+ /**
3
+ * Add command - adds a new project to an existing workspace
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.addCommand = addCommand;
43
+ const path_1 = __importDefault(require("path"));
44
+ const fs_extra_1 = __importDefault(require("fs-extra"));
45
+ const chalk_1 = __importDefault(require("chalk"));
46
+ const types_1 = require("../types");
47
+ const logger_1 = require("../utils/logger");
48
+ const core_1 = require("../generators/core");
49
+ const api_1 = require("../generators/extensions/api");
50
+ const merger_1 = require("../templates/merger");
51
+ const processor_1 = require("../templates/processor");
52
+ const constants_1 = require("../constants");
53
+ /**
54
+ * Handle the `idealyst-beta add` command
55
+ */
56
+ async function addCommand(name, options) {
57
+ try {
58
+ // Validate project type
59
+ const validTypes = ['web', 'mobile', 'api', 'shared'];
60
+ if (!validTypes.includes(options.type)) {
61
+ logger_1.logger.error(`Invalid project type: ${options.type}`);
62
+ logger_1.logger.dim(`Valid types: ${validTypes.join(', ')}`);
63
+ process.exit(1);
64
+ }
65
+ // Find workspace root
66
+ const workspaceRoot = await findWorkspaceRoot(process.cwd());
67
+ if (!workspaceRoot) {
68
+ throw new types_1.NotInWorkspaceError('add');
69
+ }
70
+ // Get workspace info from root package.json
71
+ const rootPackageJson = await fs_extra_1.default.readJson(path_1.default.join(workspaceRoot, 'package.json'));
72
+ const workspaceScope = extractWorkspaceScope(rootPackageJson.name);
73
+ logger_1.logger.header(`Adding ${options.type} project: ${name}`);
74
+ // Build template data
75
+ const templateData = (0, processor_1.buildTemplateData)({
76
+ projectName: name,
77
+ appDisplayName: options.appName || toTitleCase(name.replace(/-/g, ' ')),
78
+ iosBundleId: '', // Will be set for mobile
79
+ androidPackageName: '', // Will be set for mobile
80
+ extensions: {
81
+ api: false,
82
+ prisma: false,
83
+ trpc: options.withTrpc ?? false,
84
+ graphql: options.withGraphql ?? false,
85
+ devcontainer: false,
86
+ },
87
+ }, constants_1.IDEALYST_VERSION);
88
+ // Override workspace scope
89
+ templateData.workspaceScope = workspaceScope;
90
+ templateData.packageName = `@${workspaceScope}/${name}`;
91
+ // Generate the project based on type
92
+ const type = options.type;
93
+ const projectPath = path_1.default.join(workspaceRoot, 'packages', name);
94
+ // Check if project already exists
95
+ if (await fs_extra_1.default.pathExists(projectPath)) {
96
+ logger_1.logger.error(`Project already exists: packages/${name}`);
97
+ process.exit(1);
98
+ }
99
+ switch (type) {
100
+ case 'web':
101
+ await (0, core_1.generateWebPackage)(workspaceRoot, {
102
+ ...templateData,
103
+ projectName: name,
104
+ });
105
+ break;
106
+ case 'mobile':
107
+ if (!options.appName) {
108
+ logger_1.logger.error('Mobile projects require --app-name');
109
+ logger_1.logger.dim('Example: idealyst-beta add admin --type mobile --app-name "Admin App"');
110
+ process.exit(1);
111
+ }
112
+ // For mobile, we need bundle IDs
113
+ const { generateIdentifiers } = await Promise.resolve().then(() => __importStar(require('../identifiers')));
114
+ const identifiers = generateIdentifiers(extractOrgDomain(rootPackageJson.name), name);
115
+ await (0, core_1.generateMobilePackage)(workspaceRoot, {
116
+ ...templateData,
117
+ projectName: name,
118
+ appDisplayName: options.appName,
119
+ bundleId: identifiers.iosBundleId,
120
+ packageName: identifiers.androidPackageName,
121
+ skipInstall: options.skipInstall,
122
+ });
123
+ break;
124
+ case 'api':
125
+ await (0, api_1.applyApiExtension)(workspaceRoot, {
126
+ ...templateData,
127
+ projectName: name,
128
+ });
129
+ break;
130
+ case 'shared':
131
+ await (0, core_1.generateSharedPackage)(workspaceRoot, {
132
+ ...templateData,
133
+ projectName: name,
134
+ });
135
+ break;
136
+ }
137
+ // Update root package.json workspaces (if not already using packages/*)
138
+ if (!rootPackageJson.workspaces?.includes('packages/*')) {
139
+ await (0, merger_1.addToWorkspaces)(path_1.default.join(workspaceRoot, 'package.json'), `packages/${name}`);
140
+ }
141
+ // Print success
142
+ printAddSuccess(name, type, workspaceRoot);
143
+ }
144
+ catch (error) {
145
+ if (error instanceof types_1.NotInWorkspaceError) {
146
+ logger_1.logger.error(error.message);
147
+ logger_1.logger.dim('Run this command from within an Idealyst workspace directory.');
148
+ process.exit(1);
149
+ }
150
+ if (error instanceof Error) {
151
+ logger_1.logger.error(error.message);
152
+ if (process.env.DEBUG) {
153
+ console.error(error.stack);
154
+ }
155
+ }
156
+ process.exit(1);
157
+ }
158
+ }
159
+ /**
160
+ * Find workspace root by looking for package.json with workspaces
161
+ */
162
+ async function findWorkspaceRoot(startDir) {
163
+ let currentDir = startDir;
164
+ while (currentDir !== path_1.default.dirname(currentDir)) {
165
+ const packageJsonPath = path_1.default.join(currentDir, 'package.json');
166
+ if (await fs_extra_1.default.pathExists(packageJsonPath)) {
167
+ const packageJson = await fs_extra_1.default.readJson(packageJsonPath);
168
+ if (packageJson.workspaces) {
169
+ return currentDir;
170
+ }
171
+ }
172
+ currentDir = path_1.default.dirname(currentDir);
173
+ }
174
+ return null;
175
+ }
176
+ /**
177
+ * Extract workspace scope from package name
178
+ */
179
+ function extractWorkspaceScope(packageName) {
180
+ // Handle @scope/name format
181
+ if (packageName.startsWith('@')) {
182
+ const match = packageName.match(/@([^/]+)/);
183
+ return match ? match[1] : packageName;
184
+ }
185
+ return packageName;
186
+ }
187
+ /**
188
+ * Extract org domain from workspace name (best effort)
189
+ */
190
+ function extractOrgDomain(packageName) {
191
+ const scope = extractWorkspaceScope(packageName);
192
+ // Convert scope to reverse domain notation
193
+ return `com.${scope.replace(/-/g, '')}`;
194
+ }
195
+ /**
196
+ * Convert string to title case
197
+ */
198
+ function toTitleCase(str) {
199
+ return str
200
+ .split(' ')
201
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
202
+ .join(' ');
203
+ }
204
+ /**
205
+ * Print success message for add command
206
+ */
207
+ function printAddSuccess(name, type, workspaceRoot) {
208
+ console.log(chalk_1.default.green.bold('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
209
+ console.log(chalk_1.default.green.bold(` ✓ Added ${type} project: ${name}`));
210
+ console.log(chalk_1.default.green.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
211
+ console.log(chalk_1.default.cyan(' Location:'));
212
+ console.log(` ${path_1.default.join(workspaceRoot, 'packages', name)}\n`);
213
+ console.log(chalk_1.default.cyan(' Next steps:'));
214
+ console.log(chalk_1.default.dim(' yarn install'));
215
+ switch (type) {
216
+ case 'web':
217
+ console.log(chalk_1.default.dim(` yarn workspace @*/${name} dev`));
218
+ break;
219
+ case 'mobile':
220
+ console.log(chalk_1.default.dim(` yarn workspace @*/${name} start`));
221
+ break;
222
+ case 'api':
223
+ console.log(chalk_1.default.dim(` yarn workspace @*/${name} dev`));
224
+ break;
225
+ }
226
+ console.log('');
227
+ // Additional instructions for connecting to existing packages
228
+ console.log(chalk_1.default.cyan(' To connect to existing packages:'));
229
+ console.log(chalk_1.default.dim(' 1. Add the dependency in package.json'));
230
+ console.log(chalk_1.default.dim(' 2. Import and use components/utilities'));
231
+ console.log('');
232
+ }
233
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ /**
3
+ * Commands exports
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.infoCommand = exports.addCommand = exports.initCommand = void 0;
7
+ var init_1 = require("./init");
8
+ Object.defineProperty(exports, "initCommand", { enumerable: true, get: function () { return init_1.initCommand; } });
9
+ var add_1 = require("./add");
10
+ Object.defineProperty(exports, "addCommand", { enumerable: true, get: function () { return add_1.addCommand; } });
11
+ var info_1 = require("./info");
12
+ Object.defineProperty(exports, "infoCommand", { enumerable: true, get: function () { return info_1.infoCommand; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,+BAAqC;AAA5B,mGAAA,WAAW,OAAA;AACpB,6BAAmC;AAA1B,iGAAA,UAAU,OAAA;AACnB,+BAAqC;AAA5B,mGAAA,WAAW,OAAA"}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ /**
3
+ * Info command - display CLI information
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.infoCommand = infoCommand;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const constants_1 = require("../constants");
12
+ /**
13
+ * Handle the `idealyst-beta info` command
14
+ */
15
+ async function infoCommand(options = {}) {
16
+ const format = options.format || 'text';
17
+ switch (format) {
18
+ case 'json':
19
+ printJsonInfo();
20
+ break;
21
+ case 'markdown':
22
+ printMarkdownInfo();
23
+ break;
24
+ case 'llm':
25
+ printLlmInfo();
26
+ break;
27
+ default:
28
+ printTextInfo();
29
+ }
30
+ }
31
+ /**
32
+ * Print text format info
33
+ */
34
+ function printTextInfo() {
35
+ console.log(chalk_1.default.blue.bold('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
36
+ console.log(chalk_1.default.blue.bold(' Idealyst CLI (Beta)'));
37
+ console.log(chalk_1.default.blue.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
38
+ console.log(chalk_1.default.cyan(' Version:'), constants_1.VERSION);
39
+ console.log('');
40
+ console.log(chalk_1.default.cyan(' Commands:'));
41
+ console.log('');
42
+ console.log(chalk_1.default.white(' idealyst-beta init [project-name]'));
43
+ console.log(chalk_1.default.dim(' Initialize a new Idealyst workspace'));
44
+ console.log('');
45
+ console.log(chalk_1.default.white(' idealyst-beta add <name> --type <type>'));
46
+ console.log(chalk_1.default.dim(' Add a project to existing workspace'));
47
+ console.log(chalk_1.default.dim(' Types: web, mobile, api, shared'));
48
+ console.log('');
49
+ console.log(chalk_1.default.white(' idealyst-beta info'));
50
+ console.log(chalk_1.default.dim(' Display this help information'));
51
+ console.log('');
52
+ console.log(chalk_1.default.cyan(' Options (init):'));
53
+ console.log(chalk_1.default.dim(' --org-domain <domain> Organization domain (e.g., com.company)'));
54
+ console.log(chalk_1.default.dim(' --app-name <name> Mobile app display name'));
55
+ console.log(chalk_1.default.dim(' --with-api Enable API server'));
56
+ console.log(chalk_1.default.dim(' --with-prisma Enable Prisma database'));
57
+ console.log(chalk_1.default.dim(' --with-trpc Enable tRPC (requires --with-api)'));
58
+ console.log(chalk_1.default.dim(' --with-graphql Enable GraphQL (requires --with-api)'));
59
+ console.log(chalk_1.default.dim(' --no-interactive Disable interactive wizard'));
60
+ console.log(chalk_1.default.dim(' --skip-install Skip dependency installation'));
61
+ console.log('');
62
+ console.log(chalk_1.default.cyan(' Examples:'));
63
+ console.log('');
64
+ console.log(chalk_1.default.dim(' # Interactive wizard'));
65
+ console.log(chalk_1.default.white(' idealyst-beta init my-app'));
66
+ console.log('');
67
+ console.log(chalk_1.default.dim(' # Non-interactive with all options'));
68
+ console.log(chalk_1.default.white(' idealyst-beta init my-app --no-interactive \\'));
69
+ console.log(chalk_1.default.white(' --org-domain com.company \\'));
70
+ console.log(chalk_1.default.white(' --app-name "My App" \\'));
71
+ console.log(chalk_1.default.white(' --with-api --with-trpc --with-prisma'));
72
+ console.log('');
73
+ console.log(chalk_1.default.dim(' # Add a new web app to workspace'));
74
+ console.log(chalk_1.default.white(' idealyst-beta add admin --type web'));
75
+ console.log('');
76
+ }
77
+ /**
78
+ * Print JSON format info
79
+ */
80
+ function printJsonInfo() {
81
+ const info = {
82
+ name: '@idealyst/cli-beta',
83
+ version: constants_1.VERSION,
84
+ commands: {
85
+ init: {
86
+ description: 'Initialize a new Idealyst workspace',
87
+ usage: 'idealyst-beta init [project-name]',
88
+ options: [
89
+ { flag: '--org-domain', description: 'Organization domain' },
90
+ { flag: '--app-name', description: 'Mobile app display name' },
91
+ { flag: '--with-api', description: 'Enable API server' },
92
+ { flag: '--with-prisma', description: 'Enable Prisma database' },
93
+ { flag: '--with-trpc', description: 'Enable tRPC' },
94
+ { flag: '--with-graphql', description: 'Enable GraphQL' },
95
+ { flag: '--no-interactive', description: 'Disable wizard' },
96
+ { flag: '--skip-install', description: 'Skip installation' },
97
+ ],
98
+ },
99
+ add: {
100
+ description: 'Add a project to existing workspace',
101
+ usage: 'idealyst-beta add <name> --type <type>',
102
+ types: ['web', 'mobile', 'api', 'shared'],
103
+ },
104
+ },
105
+ };
106
+ console.log(JSON.stringify(info, null, 2));
107
+ }
108
+ /**
109
+ * Print markdown format info
110
+ */
111
+ function printMarkdownInfo() {
112
+ console.log(`# Idealyst CLI (Beta)
113
+
114
+ Version: ${constants_1.VERSION}
115
+
116
+ ## Commands
117
+
118
+ ### \`idealyst-beta init [project-name]\`
119
+
120
+ Initialize a new Idealyst workspace.
121
+
122
+ **Options:**
123
+ - \`--org-domain <domain>\` - Organization domain (e.g., com.company)
124
+ - \`--app-name <name>\` - Mobile app display name
125
+ - \`--with-api\` - Enable API server
126
+ - \`--with-prisma\` - Enable Prisma database
127
+ - \`--with-trpc\` - Enable tRPC (requires --with-api)
128
+ - \`--with-graphql\` - Enable GraphQL (requires --with-api)
129
+ - \`--no-interactive\` - Disable interactive wizard
130
+ - \`--skip-install\` - Skip dependency installation
131
+
132
+ ### \`idealyst-beta add <name> --type <type>\`
133
+
134
+ Add a project to an existing workspace.
135
+
136
+ **Types:** web, mobile, api, shared
137
+
138
+ ## Examples
139
+
140
+ \`\`\`bash
141
+ # Interactive wizard
142
+ idealyst-beta init my-app
143
+
144
+ # Non-interactive
145
+ idealyst-beta init my-app --no-interactive \\
146
+ --org-domain com.company \\
147
+ --app-name "My App" \\
148
+ --with-api --with-trpc
149
+
150
+ # Add project to workspace
151
+ idealyst-beta add admin --type web
152
+ \`\`\`
153
+ `);
154
+ }
155
+ /**
156
+ * Print LLM-friendly info
157
+ */
158
+ function printLlmInfo() {
159
+ console.log(`IDEALYST CLI BETA - SAFE COMMANDS FOR LLM USAGE
160
+
161
+ IMPORTANT: Always use --no-interactive flag to avoid hanging on prompts.
162
+
163
+ SAFE COMMANDS (non-interactive):
164
+
165
+ 1. Initialize workspace with all options:
166
+ idealyst-beta init <name> --no-interactive --org-domain <domain> --app-name "<name>"
167
+
168
+ 2. Initialize with extensions:
169
+ idealyst-beta init <name> --no-interactive --org-domain <domain> --app-name "<name>" --with-api --with-trpc --with-prisma
170
+
171
+ 3. Add project to workspace:
172
+ idealyst-beta add <name> --type web
173
+ idealyst-beta add <name> --type mobile --app-name "<name>"
174
+ idealyst-beta add <name> --type api
175
+ idealyst-beta add <name> --type shared
176
+
177
+ REQUIRED ARGUMENTS (non-interactive):
178
+ - project-name: Positional argument, kebab-case
179
+ - --org-domain: Reverse domain notation (com.company)
180
+ - --app-name: Human-readable app name
181
+
182
+ OPTIONAL ARGUMENTS:
183
+ - --with-api: Enable API server
184
+ - --with-prisma: Enable database
185
+ - --with-trpc: Enable tRPC (requires --with-api)
186
+ - --with-graphql: Enable GraphQL (requires --with-api)
187
+ - --skip-install: Skip yarn install
188
+
189
+ EXAMPLE:
190
+ idealyst-beta init my-app --no-interactive --org-domain com.mycompany --app-name "My App" --with-api --with-trpc --with-prisma --skip-install
191
+ `);
192
+ }
193
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /**
3
+ * Init command - creates a new Idealyst workspace
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.initCommand = initCommand;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const types_1 = require("../types");
12
+ const wizard_1 = require("../wizard");
13
+ const generators_1 = require("../generators");
14
+ const identifiers_1 = require("../identifiers");
15
+ const logger_1 = require("../utils/logger");
16
+ const validation_1 = require("../utils/validation");
17
+ /**
18
+ * Handle the `idealyst-beta init` command
19
+ */
20
+ async function initCommand(projectName, options) {
21
+ try {
22
+ const args = {
23
+ projectName,
24
+ orgDomain: options.orgDomain,
25
+ appDisplayName: options.appName,
26
+ withApi: options.withApi,
27
+ withPrisma: options.withPrisma,
28
+ withTrpc: options.withTrpc,
29
+ withGraphql: options.withGraphql,
30
+ withDevcontainer: options.withDevcontainer,
31
+ noInteractive: options.interactive === false,
32
+ skipInstall: options.skipInstall,
33
+ directory: options.directory,
34
+ };
35
+ // Validate extension dependencies
36
+ const extValidation = (0, validation_1.validateExtensions)({
37
+ withApi: args.withApi,
38
+ withTrpc: args.withTrpc,
39
+ withGraphql: args.withGraphql,
40
+ });
41
+ if (!extValidation.valid) {
42
+ throw new types_1.InvalidExtensionError(args.withTrpc ? 'trpc' : 'graphql', 'api');
43
+ }
44
+ let config;
45
+ if (args.noInteractive) {
46
+ // Non-interactive mode - validate all required args present
47
+ const validation = (0, wizard_1.validateNonInteractiveArgs)(args);
48
+ if (!validation.valid) {
49
+ printMissingArgsError(validation.missing);
50
+ process.exit(1);
51
+ }
52
+ // Build config directly from args
53
+ const identifiers = (0, identifiers_1.generateIdentifiers)(args.orgDomain, args.projectName);
54
+ config = {
55
+ projectName: args.projectName,
56
+ orgDomain: args.orgDomain,
57
+ appDisplayName: args.appDisplayName,
58
+ iosBundleId: identifiers.iosBundleId,
59
+ androidPackageName: identifiers.androidPackageName,
60
+ extensions: {
61
+ api: args.withApi ?? false,
62
+ prisma: args.withPrisma ?? false,
63
+ trpc: args.withTrpc ?? false,
64
+ graphql: args.withGraphql ?? false,
65
+ devcontainer: args.withDevcontainer ?? false,
66
+ },
67
+ directory: args.directory ?? '.',
68
+ skipInstall: args.skipInstall ?? false,
69
+ isInteractive: false,
70
+ };
71
+ }
72
+ else {
73
+ // Interactive wizard mode
74
+ config = await (0, wizard_1.runWizard)(args);
75
+ if (!config) {
76
+ // User cancelled
77
+ process.exit(0);
78
+ }
79
+ }
80
+ // Generate the project
81
+ const result = await (0, generators_1.generateProject)(config);
82
+ // Display results
83
+ printResults(result, config);
84
+ }
85
+ catch (error) {
86
+ if (error instanceof types_1.InvalidExtensionError) {
87
+ logger_1.logger.error(error.message);
88
+ logger_1.logger.dim('Add --with-api to enable the API server first.');
89
+ process.exit(1);
90
+ }
91
+ if (error instanceof Error) {
92
+ logger_1.logger.error(error.message);
93
+ if (process.env.DEBUG) {
94
+ console.error(error.stack);
95
+ }
96
+ }
97
+ else {
98
+ logger_1.logger.error('An unexpected error occurred');
99
+ }
100
+ process.exit(1);
101
+ }
102
+ }
103
+ /**
104
+ * Print missing arguments error for non-interactive mode
105
+ */
106
+ function printMissingArgsError(missing) {
107
+ console.log(chalk_1.default.red.bold('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
108
+ console.log(chalk_1.default.red.bold(' Error: Missing required arguments'));
109
+ console.log(chalk_1.default.red.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
110
+ console.log(chalk_1.default.yellow('The following arguments are required in non-interactive mode:\n'));
111
+ for (const arg of missing) {
112
+ console.log(chalk_1.default.red(` ✗ ${arg}`));
113
+ }
114
+ console.log(chalk_1.default.dim('\nExample usage:'));
115
+ console.log(chalk_1.default.cyan(` idealyst-beta init my-app --no-interactive \\
116
+ --org-domain com.mycompany \\
117
+ --app-name "My Awesome App"\n`));
118
+ console.log(chalk_1.default.dim('Or run without --no-interactive to use the interactive wizard.'));
119
+ }
120
+ /**
121
+ * Print generation results
122
+ */
123
+ function printResults(result, config) {
124
+ console.log(chalk_1.default.green.bold('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
125
+ console.log(chalk_1.default.green.bold(' ✓ Project created successfully!'));
126
+ console.log(chalk_1.default.green.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
127
+ console.log(chalk_1.default.cyan(' Location:'));
128
+ console.log(` ${result.projectPath}\n`);
129
+ console.log(chalk_1.default.cyan(' Packages created:'));
130
+ for (const pkg of result.packagesCreated) {
131
+ console.log(chalk_1.default.green(` ✓ ${pkg}`));
132
+ }
133
+ console.log('');
134
+ if (result.extensionsEnabled.length > 0) {
135
+ console.log(chalk_1.default.cyan(' Extensions enabled:'));
136
+ for (const ext of result.extensionsEnabled) {
137
+ console.log(chalk_1.default.green(` ✓ ${ext}`));
138
+ }
139
+ console.log('');
140
+ }
141
+ if (result.warnings.length > 0) {
142
+ console.log(chalk_1.default.yellow(' Warnings:'));
143
+ for (const warning of result.warnings) {
144
+ console.log(chalk_1.default.yellow(` ⚠ ${warning}`));
145
+ }
146
+ console.log('');
147
+ }
148
+ console.log(chalk_1.default.cyan(' Next steps:'));
149
+ console.log(chalk_1.default.dim(` cd ${config.projectName}`));
150
+ for (const step of result.nextSteps) {
151
+ console.log(chalk_1.default.dim(` ${step}`));
152
+ }
153
+ console.log('');
154
+ }
155
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}