@launch77/cli 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/.eslintrc.json +6 -0
  2. package/dist/app-templates/webapp/.env.ci +6 -0
  3. package/dist/app-templates/webapp/.env.example +9 -0
  4. package/dist/app-templates/webapp/.eslintrc.json +6 -0
  5. package/dist/app-templates/webapp/README.md.hbs +80 -0
  6. package/dist/app-templates/webapp/app/about/page.tsx.hbs +41 -0
  7. package/dist/app-templates/webapp/app/dashboard/page.tsx.hbs +51 -0
  8. package/dist/app-templates/webapp/app/globals.css +31 -0
  9. package/dist/app-templates/webapp/app/layout.tsx.hbs +26 -0
  10. package/dist/app-templates/webapp/app/page.tsx.hbs +30 -0
  11. package/dist/app-templates/webapp/next.config.js +99 -0
  12. package/dist/app-templates/webapp/package.json.hbs +30 -0
  13. package/dist/app-templates/webapp/postcss.config.js +6 -0
  14. package/dist/app-templates/webapp/tailwind.config.ts +24 -0
  15. package/dist/app-templates/webapp/tsconfig.json +29 -0
  16. package/dist/app-templates/webapp/vercel.json.hbs +7 -0
  17. package/dist/cli.d.ts +3 -0
  18. package/dist/cli.d.ts.map +1 -0
  19. package/dist/cli.js +29 -0
  20. package/dist/cli.js.map +1 -0
  21. package/dist/infrastructure/filesystem.d.ts +41 -0
  22. package/dist/infrastructure/filesystem.d.ts.map +1 -0
  23. package/dist/infrastructure/filesystem.js +61 -0
  24. package/dist/infrastructure/filesystem.js.map +1 -0
  25. package/dist/infrastructure/npm.d.ts +9 -0
  26. package/dist/infrastructure/npm.d.ts.map +1 -0
  27. package/dist/infrastructure/npm.js +17 -0
  28. package/dist/infrastructure/npm.js.map +1 -0
  29. package/dist/infrastructure/template-engine.d.ts +12 -0
  30. package/dist/infrastructure/template-engine.d.ts.map +1 -0
  31. package/dist/infrastructure/template-engine.js +40 -0
  32. package/dist/infrastructure/template-engine.js.map +1 -0
  33. package/dist/infrastructure/template-generator.d.ts +9 -0
  34. package/dist/infrastructure/template-generator.d.ts.map +1 -0
  35. package/dist/infrastructure/template-generator.js +19 -0
  36. package/dist/infrastructure/template-generator.js.map +1 -0
  37. package/dist/infrastructure/template.d.ts +20 -0
  38. package/dist/infrastructure/template.d.ts.map +1 -0
  39. package/dist/infrastructure/template.js +53 -0
  40. package/dist/infrastructure/template.js.map +1 -0
  41. package/dist/modules/app/commands/create-app.d.ts +3 -0
  42. package/dist/modules/app/commands/create-app.d.ts.map +1 -0
  43. package/dist/modules/app/commands/create-app.js +51 -0
  44. package/dist/modules/app/commands/create-app.js.map +1 -0
  45. package/dist/modules/app/commands/delete-app.d.ts +3 -0
  46. package/dist/modules/app/commands/delete-app.d.ts.map +1 -0
  47. package/dist/modules/app/commands/delete-app.js +109 -0
  48. package/dist/modules/app/commands/delete-app.js.map +1 -0
  49. package/dist/modules/app/commands/generate-manifest.d.ts +3 -0
  50. package/dist/modules/app/commands/generate-manifest.d.ts.map +1 -0
  51. package/dist/modules/app/commands/generate-manifest.js +62 -0
  52. package/dist/modules/app/commands/generate-manifest.js.map +1 -0
  53. package/dist/modules/app/commands/validate-manifest.d.ts +3 -0
  54. package/dist/modules/app/commands/validate-manifest.d.ts.map +1 -0
  55. package/dist/modules/app/commands/validate-manifest.js +68 -0
  56. package/dist/modules/app/commands/validate-manifest.js.map +1 -0
  57. package/dist/modules/app/errors/app-errors.d.ts +19 -0
  58. package/dist/modules/app/errors/app-errors.d.ts.map +1 -0
  59. package/dist/modules/app/errors/app-errors.js +37 -0
  60. package/dist/modules/app/errors/app-errors.js.map +1 -0
  61. package/dist/modules/app/index.d.ts +10 -0
  62. package/dist/modules/app/index.d.ts.map +1 -0
  63. package/dist/modules/app/index.js +11 -0
  64. package/dist/modules/app/index.js.map +1 -0
  65. package/dist/modules/app/lib/manifest-schema.d.ts +39 -0
  66. package/dist/modules/app/lib/manifest-schema.d.ts.map +1 -0
  67. package/dist/modules/app/lib/manifest-schema.js +44 -0
  68. package/dist/modules/app/lib/manifest-schema.js.map +1 -0
  69. package/dist/modules/app/services/app-svc.d.ts +15 -0
  70. package/dist/modules/app/services/app-svc.d.ts.map +1 -0
  71. package/dist/modules/app/services/app-svc.js +90 -0
  72. package/dist/modules/app/services/app-svc.js.map +1 -0
  73. package/dist/modules/app/services/manifest-svc.d.ts +28 -0
  74. package/dist/modules/app/services/manifest-svc.d.ts.map +1 -0
  75. package/dist/modules/app/services/manifest-svc.js +119 -0
  76. package/dist/modules/app/services/manifest-svc.js.map +1 -0
  77. package/dist/modules/app/types/app-types.d.ts +21 -0
  78. package/dist/modules/app/types/app-types.d.ts.map +1 -0
  79. package/dist/modules/app/types/app-types.js +5 -0
  80. package/dist/modules/app/types/app-types.js.map +1 -0
  81. package/dist/modules/catalog/commands/generate.d.ts +9 -0
  82. package/dist/modules/catalog/commands/generate.d.ts.map +1 -0
  83. package/dist/modules/catalog/commands/generate.js +94 -0
  84. package/dist/modules/catalog/commands/generate.js.map +1 -0
  85. package/dist/modules/catalog/commands/scan.d.ts +9 -0
  86. package/dist/modules/catalog/commands/scan.d.ts.map +1 -0
  87. package/dist/modules/catalog/commands/scan.js +43 -0
  88. package/dist/modules/catalog/commands/scan.js.map +1 -0
  89. package/dist/modules/catalog/config/catalog-config.d.ts +49 -0
  90. package/dist/modules/catalog/config/catalog-config.d.ts.map +1 -0
  91. package/dist/modules/catalog/config/catalog-config.js +116 -0
  92. package/dist/modules/catalog/config/catalog-config.js.map +1 -0
  93. package/dist/modules/catalog/config/catalog-config.test.d.ts +2 -0
  94. package/dist/modules/catalog/config/catalog-config.test.d.ts.map +1 -0
  95. package/dist/modules/catalog/config/catalog-config.test.js +362 -0
  96. package/dist/modules/catalog/config/catalog-config.test.js.map +1 -0
  97. package/dist/modules/catalog/index.d.ts +9 -0
  98. package/dist/modules/catalog/index.d.ts.map +1 -0
  99. package/dist/modules/catalog/index.js +9 -0
  100. package/dist/modules/catalog/index.js.map +1 -0
  101. package/dist/modules/catalog/parsers/typescript-parser.d.ts +15 -0
  102. package/dist/modules/catalog/parsers/typescript-parser.d.ts.map +1 -0
  103. package/dist/modules/catalog/parsers/typescript-parser.js +82 -0
  104. package/dist/modules/catalog/parsers/typescript-parser.js.map +1 -0
  105. package/dist/modules/catalog/scanners/metadata-extractor.d.ts +10 -0
  106. package/dist/modules/catalog/scanners/metadata-extractor.d.ts.map +1 -0
  107. package/dist/modules/catalog/scanners/metadata-extractor.js +122 -0
  108. package/dist/modules/catalog/scanners/metadata-extractor.js.map +1 -0
  109. package/dist/modules/catalog/scanners/metadata-validator.d.ts +6 -0
  110. package/dist/modules/catalog/scanners/metadata-validator.d.ts.map +1 -0
  111. package/dist/modules/catalog/scanners/metadata-validator.js +57 -0
  112. package/dist/modules/catalog/scanners/metadata-validator.js.map +1 -0
  113. package/dist/modules/catalog/scanners/ui-component-scanner.d.ts +11 -0
  114. package/dist/modules/catalog/scanners/ui-component-scanner.d.ts.map +1 -0
  115. package/dist/modules/catalog/scanners/ui-component-scanner.js +147 -0
  116. package/dist/modules/catalog/scanners/ui-component-scanner.js.map +1 -0
  117. package/dist/modules/catalog/schemas/catalog-ui-components.schema.json +161 -0
  118. package/dist/modules/catalog/schemas/schemas/catalog-ui-components.schema.json +145 -0
  119. package/dist/modules/catalog/services/catalog-generator-svc.d.ts +27 -0
  120. package/dist/modules/catalog/services/catalog-generator-svc.d.ts.map +1 -0
  121. package/dist/modules/catalog/services/catalog-generator-svc.js +100 -0
  122. package/dist/modules/catalog/services/catalog-generator-svc.js.map +1 -0
  123. package/dist/modules/catalog/services/catalog-generator-svc.test.d.ts +2 -0
  124. package/dist/modules/catalog/services/catalog-generator-svc.test.d.ts.map +1 -0
  125. package/dist/modules/catalog/services/catalog-generator-svc.test.js +201 -0
  126. package/dist/modules/catalog/services/catalog-generator-svc.test.js.map +1 -0
  127. package/dist/modules/catalog/services/catalog-svc.d.ts +39 -0
  128. package/dist/modules/catalog/services/catalog-svc.d.ts.map +1 -0
  129. package/dist/modules/catalog/services/catalog-svc.js +163 -0
  130. package/dist/modules/catalog/services/catalog-svc.js.map +1 -0
  131. package/dist/modules/catalog/types/catalog-types.d.ts +120 -0
  132. package/dist/modules/catalog/types/catalog-types.d.ts.map +1 -0
  133. package/dist/modules/catalog/types/catalog-types.js +5 -0
  134. package/dist/modules/catalog/types/catalog-types.js.map +1 -0
  135. package/dist/modules/catalog/utils/examples-generator.d.ts +6 -0
  136. package/dist/modules/catalog/utils/examples-generator.d.ts.map +1 -0
  137. package/dist/modules/catalog/utils/examples-generator.js +55 -0
  138. package/dist/modules/catalog/utils/examples-generator.js.map +1 -0
  139. package/dist/modules/catalog/utils/quality-reporter.d.ts +13 -0
  140. package/dist/modules/catalog/utils/quality-reporter.d.ts.map +1 -0
  141. package/dist/modules/catalog/utils/quality-reporter.js +64 -0
  142. package/dist/modules/catalog/utils/quality-reporter.js.map +1 -0
  143. package/dist/modules/catalog/validators/component-name-validator.d.ts +20 -0
  144. package/dist/modules/catalog/validators/component-name-validator.d.ts.map +1 -0
  145. package/dist/modules/catalog/validators/component-name-validator.js +33 -0
  146. package/dist/modules/catalog/validators/component-name-validator.js.map +1 -0
  147. package/dist/modules/catalog/validators/component-name-validator.test.d.ts +2 -0
  148. package/dist/modules/catalog/validators/component-name-validator.test.d.ts.map +1 -0
  149. package/dist/modules/catalog/validators/component-name-validator.test.js +196 -0
  150. package/dist/modules/catalog/validators/component-name-validator.test.js.map +1 -0
  151. package/dist/modules/deploy/commands/deploy-init-action.d.ts +12 -0
  152. package/dist/modules/deploy/commands/deploy-init-action.d.ts.map +1 -0
  153. package/dist/modules/deploy/commands/deploy-init-action.js +220 -0
  154. package/dist/modules/deploy/commands/deploy-init-action.js.map +1 -0
  155. package/dist/modules/deploy/commands/deploy-init.d.ts +6 -0
  156. package/dist/modules/deploy/commands/deploy-init.d.ts.map +1 -0
  157. package/dist/modules/deploy/commands/deploy-init.js +16 -0
  158. package/dist/modules/deploy/commands/deploy-init.js.map +1 -0
  159. package/dist/modules/deploy/commands/deploy-logs-action.d.ts +12 -0
  160. package/dist/modules/deploy/commands/deploy-logs-action.d.ts.map +1 -0
  161. package/dist/modules/deploy/commands/deploy-logs-action.js +113 -0
  162. package/dist/modules/deploy/commands/deploy-logs-action.js.map +1 -0
  163. package/dist/modules/deploy/commands/deploy-logs.d.ts +6 -0
  164. package/dist/modules/deploy/commands/deploy-logs.d.ts.map +1 -0
  165. package/dist/modules/deploy/commands/deploy-logs.js +17 -0
  166. package/dist/modules/deploy/commands/deploy-logs.js.map +1 -0
  167. package/dist/modules/deploy/commands/deploy-status-action.d.ts +8 -0
  168. package/dist/modules/deploy/commands/deploy-status-action.d.ts.map +1 -0
  169. package/dist/modules/deploy/commands/deploy-status-action.js +153 -0
  170. package/dist/modules/deploy/commands/deploy-status-action.js.map +1 -0
  171. package/dist/modules/deploy/commands/deploy-status.d.ts +6 -0
  172. package/dist/modules/deploy/commands/deploy-status.d.ts.map +1 -0
  173. package/dist/modules/deploy/commands/deploy-status.js +13 -0
  174. package/dist/modules/deploy/commands/deploy-status.js.map +1 -0
  175. package/dist/modules/deploy/index.d.ts +7 -0
  176. package/dist/modules/deploy/index.d.ts.map +1 -0
  177. package/dist/modules/deploy/index.js +7 -0
  178. package/dist/modules/deploy/index.js.map +1 -0
  179. package/dist/modules/deploy/services/deploy-svc.d.ts +17 -0
  180. package/dist/modules/deploy/services/deploy-svc.d.ts.map +1 -0
  181. package/dist/modules/deploy/services/deploy-svc.js +25 -0
  182. package/dist/modules/deploy/services/deploy-svc.js.map +1 -0
  183. package/dist/modules/deploy/utils/vercel-extended.d.ts +63 -0
  184. package/dist/modules/deploy/utils/vercel-extended.d.ts.map +1 -0
  185. package/dist/modules/deploy/utils/vercel-extended.js +238 -0
  186. package/dist/modules/deploy/utils/vercel-extended.js.map +1 -0
  187. package/dist/modules/plugin/commands/plugin-install.d.ts +3 -0
  188. package/dist/modules/plugin/commands/plugin-install.d.ts.map +1 -0
  189. package/dist/modules/plugin/commands/plugin-install.js +45 -0
  190. package/dist/modules/plugin/commands/plugin-install.js.map +1 -0
  191. package/dist/modules/plugin/errors/plugin-errors.d.ts +16 -0
  192. package/dist/modules/plugin/errors/plugin-errors.d.ts.map +1 -0
  193. package/dist/modules/plugin/errors/plugin-errors.js +39 -0
  194. package/dist/modules/plugin/errors/plugin-errors.js.map +1 -0
  195. package/dist/modules/plugin/index.d.ts +6 -0
  196. package/dist/modules/plugin/index.d.ts.map +1 -0
  197. package/dist/modules/plugin/index.js +9 -0
  198. package/dist/modules/plugin/index.js.map +1 -0
  199. package/dist/modules/plugin/lib/plugin-registry.d.ts +15 -0
  200. package/dist/modules/plugin/lib/plugin-registry.d.ts.map +1 -0
  201. package/dist/modules/plugin/lib/plugin-registry.js +47 -0
  202. package/dist/modules/plugin/lib/plugin-registry.js.map +1 -0
  203. package/dist/modules/plugin/services/plugin-svc.d.ts +10 -0
  204. package/dist/modules/plugin/services/plugin-svc.d.ts.map +1 -0
  205. package/dist/modules/plugin/services/plugin-svc.js +44 -0
  206. package/dist/modules/plugin/services/plugin-svc.js.map +1 -0
  207. package/dist/modules/plugin/types/plugin-types.d.ts +19 -0
  208. package/dist/modules/plugin/types/plugin-types.d.ts.map +1 -0
  209. package/dist/modules/plugin/types/plugin-types.js +2 -0
  210. package/dist/modules/plugin/types/plugin-types.js.map +1 -0
  211. package/dist/modules/startup/commands/create-startup.d.ts +3 -0
  212. package/dist/modules/startup/commands/create-startup.d.ts.map +1 -0
  213. package/dist/modules/startup/commands/create-startup.js +43 -0
  214. package/dist/modules/startup/commands/create-startup.js.map +1 -0
  215. package/dist/modules/startup/errors/startup-errors.d.ts +13 -0
  216. package/dist/modules/startup/errors/startup-errors.d.ts.map +1 -0
  217. package/dist/modules/startup/errors/startup-errors.js +25 -0
  218. package/dist/modules/startup/errors/startup-errors.js.map +1 -0
  219. package/dist/modules/startup/index.d.ts +5 -0
  220. package/dist/modules/startup/index.d.ts.map +1 -0
  221. package/dist/modules/startup/index.js +7 -0
  222. package/dist/modules/startup/index.js.map +1 -0
  223. package/dist/modules/startup/services/startup-service.d.ts +7 -0
  224. package/dist/modules/startup/services/startup-service.d.ts.map +1 -0
  225. package/dist/modules/startup/services/startup-service.js +43 -0
  226. package/dist/modules/startup/services/startup-service.js.map +1 -0
  227. package/dist/modules/startup/types/startup-types.d.ts +8 -0
  228. package/dist/modules/startup/types/startup-types.d.ts.map +1 -0
  229. package/dist/modules/startup/types/startup-types.js +2 -0
  230. package/dist/modules/startup/types/startup-types.js.map +1 -0
  231. package/dist/modules/startup/utils/startup-validators.d.ts +8 -0
  232. package/dist/modules/startup/utils/startup-validators.d.ts.map +1 -0
  233. package/dist/modules/startup/utils/startup-validators.js +17 -0
  234. package/dist/modules/startup/utils/startup-validators.js.map +1 -0
  235. package/dist/modules/workspace/commands/init-workspace.d.ts +3 -0
  236. package/dist/modules/workspace/commands/init-workspace.d.ts.map +1 -0
  237. package/dist/modules/workspace/commands/init-workspace.js +54 -0
  238. package/dist/modules/workspace/commands/init-workspace.js.map +1 -0
  239. package/dist/modules/workspace/errors/workspace-errors.d.ts +10 -0
  240. package/dist/modules/workspace/errors/workspace-errors.d.ts.map +1 -0
  241. package/dist/modules/workspace/errors/workspace-errors.js +19 -0
  242. package/dist/modules/workspace/errors/workspace-errors.js.map +1 -0
  243. package/dist/modules/workspace/index.d.ts +5 -0
  244. package/dist/modules/workspace/index.d.ts.map +1 -0
  245. package/dist/modules/workspace/index.js +7 -0
  246. package/dist/modules/workspace/index.js.map +1 -0
  247. package/dist/modules/workspace/services/workspace-service.d.ts +6 -0
  248. package/dist/modules/workspace/services/workspace-service.d.ts.map +1 -0
  249. package/dist/modules/workspace/services/workspace-service.js +46 -0
  250. package/dist/modules/workspace/services/workspace-service.js.map +1 -0
  251. package/dist/modules/workspace/types/workspace-types.d.ts +8 -0
  252. package/dist/modules/workspace/types/workspace-types.d.ts.map +1 -0
  253. package/dist/modules/workspace/types/workspace-types.js +2 -0
  254. package/dist/modules/workspace/types/workspace-types.js.map +1 -0
  255. package/dist/modules/workspace/utils/workspace-validators.d.ts +8 -0
  256. package/dist/modules/workspace/utils/workspace-validators.d.ts.map +1 -0
  257. package/dist/modules/workspace/utils/workspace-validators.js +17 -0
  258. package/dist/modules/workspace/utils/workspace-validators.js.map +1 -0
  259. package/dist/plugins/theme/package.json +32 -0
  260. package/dist/plugins/theme/plugin.json +9 -0
  261. package/dist/plugins/theme/src/generator.ts +92 -0
  262. package/dist/plugins/theme/src/utils/config-modifier.ts +142 -0
  263. package/dist/plugins/theme/src/utils/css-modifier.ts +89 -0
  264. package/dist/plugins/theme/templates/app/theme-test/page.tsx +156 -0
  265. package/dist/plugins/theme/templates/src/modules/theme/README.md +209 -0
  266. package/dist/plugins/theme/templates/src/modules/theme/config/brand.css +23 -0
  267. package/dist/plugins/theme/tsconfig.json +14 -0
  268. package/dist/plugins/theme/tsup.config.ts +10 -0
  269. package/dist/templates/startup/apps/.gitkeep +8 -0
  270. package/dist/templates/templates/startup/apps/.gitkeep +8 -0
  271. package/dist/templates/templates/workspace/.eslintignore +7 -0
  272. package/dist/templates/templates/workspace/.eslintrc.js +38 -0
  273. package/dist/templates/templates/workspace/.husky/pre-push +24 -0
  274. package/dist/templates/templates/workspace/.launch77/workspace.json +3 -0
  275. package/dist/templates/templates/workspace/.lintstagedrc.json +4 -0
  276. package/dist/templates/templates/workspace/.prettierrc +9 -0
  277. package/dist/templates/templates/workspace/README.md +62 -0
  278. package/dist/templates/templates/workspace/app-templates/.gitkeep +1 -0
  279. package/dist/templates/templates/workspace/apps/.gitkeep +1 -0
  280. package/dist/templates/templates/workspace/libraries/.gitkeep +1 -0
  281. package/dist/templates/templates/workspace/package.json +31 -0
  282. package/dist/templates/templates/workspace/plugins/.gitkeep +1 -0
  283. package/dist/templates/templates/workspace/tsconfig.json +22 -0
  284. package/dist/templates/templates/workspace/turbo.json +25 -0
  285. package/dist/templates/workspace/.launch77/workspace.json +3 -0
  286. package/dist/templates/workspace/README.md +62 -0
  287. package/dist/templates/workspace/app-templates/.gitkeep +1 -0
  288. package/dist/templates/workspace/apps/.gitkeep +1 -0
  289. package/dist/templates/workspace/libraries/.gitkeep +1 -0
  290. package/dist/templates/workspace/package.json +21 -0
  291. package/dist/templates/workspace/plugins/.gitkeep +1 -0
  292. package/dist/templates/workspace/tsconfig.json +22 -0
  293. package/dist/templates/workspace/turbo.json +25 -0
  294. package/dist/utils/launch77-context.d.ts +16 -0
  295. package/dist/utils/launch77-context.d.ts.map +1 -0
  296. package/dist/utils/launch77-context.js +111 -0
  297. package/dist/utils/launch77-context.js.map +1 -0
  298. package/dist/utils/launch77-validation.d.ts +17 -0
  299. package/dist/utils/launch77-validation.d.ts.map +1 -0
  300. package/dist/utils/launch77-validation.js +44 -0
  301. package/dist/utils/launch77-validation.js.map +1 -0
  302. package/dist/utils/monorepo.d.ts +19 -0
  303. package/dist/utils/monorepo.d.ts.map +1 -0
  304. package/dist/utils/monorepo.js +100 -0
  305. package/dist/utils/monorepo.js.map +1 -0
  306. package/dist/utils/validation.d.ts +32 -0
  307. package/dist/utils/validation.d.ts.map +1 -0
  308. package/dist/utils/validation.js +92 -0
  309. package/dist/utils/validation.js.map +1 -0
  310. package/dist/utils/version.d.ts +7 -0
  311. package/dist/utils/version.d.ts.map +1 -0
  312. package/dist/utils/version.js +16 -0
  313. package/dist/utils/version.js.map +1 -0
  314. package/launch77-cli-1.2.0.tgz +0 -0
  315. package/package.json +48 -0
  316. package/src/cli.ts +34 -0
  317. package/src/infrastructure/filesystem.ts +69 -0
  318. package/src/infrastructure/npm.ts +18 -0
  319. package/src/infrastructure/template-engine.ts +48 -0
  320. package/src/infrastructure/template-generator.ts +26 -0
  321. package/src/infrastructure/template.ts +66 -0
  322. package/src/modules/app/commands/create-app.ts +60 -0
  323. package/src/modules/app/commands/delete-app.ts +123 -0
  324. package/src/modules/app/commands/generate-manifest.ts +75 -0
  325. package/src/modules/app/commands/validate-manifest.ts +78 -0
  326. package/src/modules/app/errors/app-errors.ts +41 -0
  327. package/src/modules/app/index.ts +16 -0
  328. package/src/modules/app/lib/manifest-schema.ts +65 -0
  329. package/src/modules/app/services/app-svc.ts +115 -0
  330. package/src/modules/app/services/manifest-svc.ts +144 -0
  331. package/src/modules/app/types/app-types.ts +27 -0
  332. package/src/modules/catalog/commands/generate.ts +115 -0
  333. package/src/modules/catalog/commands/scan.ts +48 -0
  334. package/src/modules/catalog/config/catalog-config.test.ts +404 -0
  335. package/src/modules/catalog/config/catalog-config.ts +130 -0
  336. package/src/modules/catalog/index.ts +9 -0
  337. package/src/modules/catalog/parsers/typescript-parser.ts +93 -0
  338. package/src/modules/catalog/scanners/metadata-extractor.ts +134 -0
  339. package/src/modules/catalog/scanners/metadata-validator.ts +67 -0
  340. package/src/modules/catalog/scanners/ui-component-scanner.ts +185 -0
  341. package/src/modules/catalog/schemas/catalog-ui-components.schema.json +145 -0
  342. package/src/modules/catalog/services/catalog-generator-svc.test.ts +233 -0
  343. package/src/modules/catalog/services/catalog-generator-svc.ts +124 -0
  344. package/src/modules/catalog/services/catalog-svc.ts +222 -0
  345. package/src/modules/catalog/types/catalog-types.ts +149 -0
  346. package/src/modules/catalog/utils/examples-generator.ts +68 -0
  347. package/src/modules/catalog/utils/quality-reporter.ts +76 -0
  348. package/src/modules/catalog/validators/component-name-validator.test.ts +233 -0
  349. package/src/modules/catalog/validators/component-name-validator.ts +43 -0
  350. package/src/modules/deploy/commands/deploy-init-action.ts +247 -0
  351. package/src/modules/deploy/commands/deploy-init.ts +19 -0
  352. package/src/modules/deploy/commands/deploy-logs-action.ts +135 -0
  353. package/src/modules/deploy/commands/deploy-logs.ts +20 -0
  354. package/src/modules/deploy/commands/deploy-status-action.ts +175 -0
  355. package/src/modules/deploy/commands/deploy-status.ts +16 -0
  356. package/src/modules/deploy/index.ts +7 -0
  357. package/src/modules/deploy/services/deploy-svc.ts +31 -0
  358. package/src/modules/deploy/utils/vercel-extended.ts +286 -0
  359. package/src/modules/plugin/commands/plugin-install.ts +51 -0
  360. package/src/modules/plugin/errors/plugin-errors.ts +44 -0
  361. package/src/modules/plugin/index.ts +14 -0
  362. package/src/modules/plugin/lib/launch77-workspace.code-workspace +14 -0
  363. package/src/modules/plugin/lib/plugin-registry.ts +59 -0
  364. package/src/modules/plugin/services/plugin-svc.ts +53 -0
  365. package/src/modules/plugin/types/plugin-types.ts +21 -0
  366. package/src/modules/startup/commands/create-startup.ts +53 -0
  367. package/src/modules/startup/errors/startup-errors.ts +23 -0
  368. package/src/modules/startup/index.ts +11 -0
  369. package/src/modules/startup/services/startup-service.ts +57 -0
  370. package/src/modules/startup/types/startup-types.ts +8 -0
  371. package/src/modules/startup/utils/startup-validators.ts +19 -0
  372. package/src/modules/workspace/commands/init-workspace.ts +63 -0
  373. package/src/modules/workspace/errors/workspace-errors.ts +16 -0
  374. package/src/modules/workspace/index.ts +11 -0
  375. package/src/modules/workspace/services/workspace-service.ts +59 -0
  376. package/src/modules/workspace/types/workspace-types.ts +8 -0
  377. package/src/modules/workspace/utils/workspace-validators.ts +19 -0
  378. package/src/utils/launch77-context.ts +152 -0
  379. package/src/utils/launch77-validation.ts +59 -0
  380. package/src/utils/monorepo.ts +137 -0
  381. package/src/utils/validation.ts +117 -0
  382. package/src/utils/version.ts +16 -0
  383. package/templates/startup/apps/.gitkeep +8 -0
  384. package/templates/workspace/.eslintignore +7 -0
  385. package/templates/workspace/.eslintrc.js +38 -0
  386. package/templates/workspace/.husky/pre-push +24 -0
  387. package/templates/workspace/.launch77/workspace.json +3 -0
  388. package/templates/workspace/.lintstagedrc.json +4 -0
  389. package/templates/workspace/.prettierrc +9 -0
  390. package/templates/workspace/README.md +62 -0
  391. package/templates/workspace/app-templates/.gitkeep +1 -0
  392. package/templates/workspace/apps/.gitkeep +1 -0
  393. package/templates/workspace/libraries/.gitkeep +1 -0
  394. package/templates/workspace/package.json +31 -0
  395. package/templates/workspace/plugins/.gitkeep +1 -0
  396. package/templates/workspace/tsconfig.json +22 -0
  397. package/templates/workspace/turbo.json +25 -0
  398. package/tsconfig.json +23 -0
@@ -0,0 +1,196 @@
1
+ import { describe, test, expect } from 'vitest';
2
+ import { validateComponentName } from './component-name-validator.js';
3
+ describe('validateComponentName', () => {
4
+ describe('valid names', () => {
5
+ test('single word PascalCase', () => {
6
+ expect(validateComponentName('Button').valid).toBe(true);
7
+ expect(validateComponentName('Alert').valid).toBe(true);
8
+ expect(validateComponentName('Input').valid).toBe(true);
9
+ });
10
+ test('multi-word PascalCase', () => {
11
+ expect(validateComponentName('AlertDialog').valid).toBe(true);
12
+ expect(validateComponentName('FormField').valid).toBe(true);
13
+ expect(validateComponentName('NavigationMenu').valid).toBe(true);
14
+ });
15
+ test('with numbers', () => {
16
+ expect(validateComponentName('Button2').valid).toBe(true);
17
+ expect(validateComponentName('Alert3D').valid).toBe(true);
18
+ expect(validateComponentName('H1').valid).toBe(true);
19
+ expect(validateComponentName('Input123').valid).toBe(true);
20
+ });
21
+ test('common abbreviations', () => {
22
+ expect(validateComponentName('HTTPClient').valid).toBe(true);
23
+ expect(validateComponentName('URLInput').valid).toBe(true);
24
+ expect(validateComponentName('APIKey').valid).toBe(true);
25
+ });
26
+ test('long valid names', () => {
27
+ const name50 = 'A'.repeat(50);
28
+ expect(validateComponentName(name50).valid).toBe(true);
29
+ });
30
+ });
31
+ describe('invalid names - symbols and special characters', () => {
32
+ test('special symbols', () => {
33
+ const result1 = validateComponentName('===');
34
+ expect(result1.valid).toBe(false);
35
+ expect(result1.errors[0]).toContain('PascalCase');
36
+ const result2 = validateComponentName('!!!');
37
+ expect(result2.valid).toBe(false);
38
+ const result3 = validateComponentName('@@@');
39
+ expect(result3.valid).toBe(false);
40
+ });
41
+ test('with special characters', () => {
42
+ const result1 = validateComponentName('Button$');
43
+ expect(result1.valid).toBe(false);
44
+ expect(result1.errors[0]).toContain('PascalCase');
45
+ const result2 = validateComponentName('Alert#Icon');
46
+ expect(result2.valid).toBe(false);
47
+ const result3 = validateComponentName('Form_Field');
48
+ expect(result3.valid).toBe(false);
49
+ });
50
+ test('with hyphens', () => {
51
+ const result = validateComponentName('Alert-Dialog');
52
+ expect(result.valid).toBe(false);
53
+ expect(result.errors[0]).toContain('PascalCase');
54
+ });
55
+ test('with spaces', () => {
56
+ const result1 = validateComponentName('My Button');
57
+ expect(result1.valid).toBe(false);
58
+ const result2 = validateComponentName('Alert Dialog');
59
+ expect(result2.valid).toBe(false);
60
+ const result3 = validateComponentName(' Button');
61
+ expect(result3.valid).toBe(false);
62
+ });
63
+ test('with dots', () => {
64
+ const result = validateComponentName('Button.Icon');
65
+ expect(result.valid).toBe(false);
66
+ expect(result.errors[0]).toContain('PascalCase');
67
+ });
68
+ });
69
+ describe('invalid names - casing', () => {
70
+ test('lowercase', () => {
71
+ const result = validateComponentName('button');
72
+ expect(result.valid).toBe(false);
73
+ expect(result.errors[0]).toContain('PascalCase');
74
+ });
75
+ test('camelCase', () => {
76
+ const result = validateComponentName('alertDialog');
77
+ expect(result.valid).toBe(false);
78
+ expect(result.errors[0]).toContain('PascalCase');
79
+ });
80
+ test('snake_case', () => {
81
+ const result = validateComponentName('alert_dialog');
82
+ expect(result.valid).toBe(false);
83
+ expect(result.errors[0]).toContain('PascalCase');
84
+ });
85
+ test('SCREAMING_SNAKE_CASE', () => {
86
+ const result = validateComponentName('ALERT_DIALOG');
87
+ expect(result.valid).toBe(false);
88
+ expect(result.errors[0]).toContain('PascalCase');
89
+ });
90
+ test('kebab-case', () => {
91
+ const result = validateComponentName('alert-dialog');
92
+ expect(result.valid).toBe(false);
93
+ expect(result.errors[0]).toContain('PascalCase');
94
+ });
95
+ });
96
+ describe('invalid names - numbers', () => {
97
+ test('only numbers', () => {
98
+ const result = validateComponentName('123');
99
+ expect(result.valid).toBe(false);
100
+ expect(result.errors[0]).toContain('PascalCase');
101
+ });
102
+ test('starting with number', () => {
103
+ const result = validateComponentName('3DButton');
104
+ expect(result.valid).toBe(false);
105
+ expect(result.errors[0]).toContain('PascalCase');
106
+ });
107
+ });
108
+ describe('invalid names - empty and length', () => {
109
+ test('empty string', () => {
110
+ const result = validateComponentName('');
111
+ expect(result.valid).toBe(false);
112
+ expect(result.errors[0]).toContain('cannot be empty');
113
+ });
114
+ test('exceeds maximum length', () => {
115
+ const name51 = 'A'.repeat(51);
116
+ const result = validateComponentName(name51);
117
+ expect(result.valid).toBe(false);
118
+ expect(result.errors[0]).toContain('maximum length');
119
+ expect(result.errors[0]).toContain('50');
120
+ });
121
+ test('very long name', () => {
122
+ const name100 = 'A'.repeat(100);
123
+ const result = validateComponentName(name100);
124
+ expect(result.valid).toBe(false);
125
+ expect(result.errors[0]).toContain('maximum length');
126
+ });
127
+ });
128
+ describe('multiple errors', () => {
129
+ test('empty string has one error', () => {
130
+ const result = validateComponentName('');
131
+ expect(result.errors.length).toBeGreaterThan(0);
132
+ });
133
+ test('lowercase name has error', () => {
134
+ const result = validateComponentName('button');
135
+ expect(result.errors.length).toBeGreaterThanOrEqual(1);
136
+ expect(result.errors[0]).toContain('PascalCase');
137
+ });
138
+ test('symbol-only name has error', () => {
139
+ const result = validateComponentName('$$$');
140
+ expect(result.valid).toBe(false);
141
+ expect(result.errors.length).toBeGreaterThan(0);
142
+ });
143
+ });
144
+ describe('edge cases', () => {
145
+ test('single letter uppercase', () => {
146
+ expect(validateComponentName('A').valid).toBe(true);
147
+ expect(validateComponentName('Z').valid).toBe(true);
148
+ });
149
+ test('exactly 50 characters', () => {
150
+ const name = 'A'.repeat(50);
151
+ expect(validateComponentName(name).valid).toBe(true);
152
+ });
153
+ test('51 characters', () => {
154
+ const name = 'A'.repeat(51);
155
+ expect(validateComponentName(name).valid).toBe(false);
156
+ });
157
+ test('unicode characters', () => {
158
+ const result = validateComponentName('Buttoné');
159
+ expect(result.valid).toBe(false);
160
+ expect(result.errors[0]).toContain('PascalCase');
161
+ });
162
+ test('emoji', () => {
163
+ const result = validateComponentName('Button😀');
164
+ expect(result.valid).toBe(false);
165
+ expect(result.errors[0]).toContain('PascalCase');
166
+ });
167
+ });
168
+ describe('common real-world component names', () => {
169
+ test('UI library components', () => {
170
+ expect(validateComponentName('Dialog').valid).toBe(true);
171
+ expect(validateComponentName('Popover').valid).toBe(true);
172
+ expect(validateComponentName('Tooltip').valid).toBe(true);
173
+ expect(validateComponentName('Select').valid).toBe(true);
174
+ expect(validateComponentName('Checkbox').valid).toBe(true);
175
+ expect(validateComponentName('RadioGroup').valid).toBe(true);
176
+ expect(validateComponentName('Accordion').valid).toBe(true);
177
+ expect(validateComponentName('Tabs').valid).toBe(true);
178
+ expect(validateComponentName('Card').valid).toBe(true);
179
+ expect(validateComponentName('Badge').valid).toBe(true);
180
+ });
181
+ test('form components', () => {
182
+ expect(validateComponentName('FormField').valid).toBe(true);
183
+ expect(validateComponentName('FormError').valid).toBe(true);
184
+ expect(validateComponentName('FormHelperText').valid).toBe(true);
185
+ expect(validateComponentName('TextField').valid).toBe(true);
186
+ expect(validateComponentName('TextArea').valid).toBe(true);
187
+ });
188
+ test('navigation components', () => {
189
+ expect(validateComponentName('Navbar').valid).toBe(true);
190
+ expect(validateComponentName('Sidebar').valid).toBe(true);
191
+ expect(validateComponentName('Breadcrumbs').valid).toBe(true);
192
+ expect(validateComponentName('NavigationMenu').valid).toBe(true);
193
+ });
194
+ });
195
+ });
196
+ //# sourceMappingURL=component-name-validator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-name-validator.test.js","sourceRoot":"","sources":["../../../../src/modules/catalog/validators/component-name-validator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * deploy:init action - One-time Vercel deployment setup
3
+ */
4
+ interface DeployInitOptions {
5
+ force?: boolean;
6
+ }
7
+ /**
8
+ * Initialize Vercel deployment for an app
9
+ */
10
+ export declare function deployInit(options?: DeployInitOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=deploy-init-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-init-action.d.ts","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/deploy-init-action.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,iBAgO/D"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * deploy:init action - One-time Vercel deployment setup
3
+ */
4
+ /* eslint-disable no-console */
5
+ import * as path from 'path';
6
+ import chalk from 'chalk';
7
+ import fs from 'fs-extra';
8
+ import ora from 'ora';
9
+ import { detectMonorepoContext } from '../../../utils/monorepo.js';
10
+ import { DeployService } from '../services/deploy-svc.js';
11
+ import { connectGitRepository, getPackageName, getVercelInstallInstructions, isVercelCliInstalled, loadVercelProject, runVercelCommand, updateProjectRootDirectory, verifyVercelProjectExists } from '../utils/vercel-extended.js';
12
+ /**
13
+ * Initialize Vercel deployment for an app
14
+ */
15
+ export async function deployInit(options = {}) {
16
+ const deployService = new DeployService();
17
+ // Detect monorepo context
18
+ const context = await detectMonorepoContext(process.cwd());
19
+ if (context.location !== 'startup-app') {
20
+ throw new Error('Must be run from within an app directory (e.g., startups/mycompany/apps/myapp)');
21
+ }
22
+ const appPath = process.cwd();
23
+ const appName = context.appName;
24
+ const startupName = context.startupName;
25
+ console.log(chalk.blue(`\n🚀 Initializing Vercel deployment for ${appName}...\n`));
26
+ // Check if Vercel CLI is installed
27
+ if (!(await isVercelCliInstalled())) {
28
+ console.error(chalk.red('❌ Vercel CLI is not installed'));
29
+ console.log();
30
+ console.log(chalk.yellow('To install, run:'));
31
+ console.log(chalk.cyan(` ${getVercelInstallInstructions()}`));
32
+ console.log();
33
+ process.exit(1);
34
+ }
35
+ // Load manifest
36
+ const manifest = await deployService.loadManifest();
37
+ // Check if already connected (unless --force flag is used)
38
+ if (manifest.deployment?.connected && !options.force) {
39
+ console.log(chalk.blue('📋 Checking existing connection...\n'));
40
+ const projectName = manifest.deployment.projectName;
41
+ const projectInfo = projectName ? await verifyVercelProjectExists(projectName) : null;
42
+ if (projectInfo) {
43
+ // Project exists in Vercel
44
+ console.log(chalk.green('✅ App is connected to Vercel'));
45
+ console.log();
46
+ console.log(chalk.cyan('Project Status'));
47
+ console.log(chalk.gray(' Platform:'), 'Vercel');
48
+ console.log(chalk.gray(' Project:'), projectInfo.name);
49
+ console.log(chalk.gray(' Status:'), chalk.green('Live'));
50
+ if (projectInfo.latestProductionUrl) {
51
+ console.log(chalk.gray(' Production URL:'), projectInfo.latestProductionUrl);
52
+ }
53
+ console.log(chalk.gray(' Last Updated:'), new Date(projectInfo.updatedAt).toLocaleString());
54
+ console.log();
55
+ // Check if .vercel/project.json exists
56
+ const vercelProject = await loadVercelProject(appPath);
57
+ if (vercelProject) {
58
+ console.log(chalk.gray('Local Configuration'));
59
+ console.log(chalk.gray(' Project ID:'), vercelProject.projectId);
60
+ console.log(chalk.gray(' Org ID:'), vercelProject.orgId);
61
+ }
62
+ else {
63
+ console.log(chalk.yellow('ℹ️ Local .vercel/ directory not found'));
64
+ console.log(chalk.gray('This is normal if you cloned the repo.'));
65
+ }
66
+ console.log();
67
+ console.log(chalk.cyan('Commands:'));
68
+ console.log(chalk.white(' launch77 deploy:status'), chalk.gray('- View deployment status'));
69
+ console.log(chalk.white(' launch77 deploy:init --force'), chalk.gray('- Force reconnection'));
70
+ return;
71
+ }
72
+ else if (projectName) {
73
+ // Project doesn't exist in Vercel (likely deleted)
74
+ console.log(chalk.red('❌ Vercel project not found'));
75
+ console.log();
76
+ console.log(chalk.yellow("The app is marked as connected, but the Vercel project doesn't exist."));
77
+ console.log(chalk.gray(` Expected project: ${projectName}`));
78
+ console.log();
79
+ console.log(chalk.cyan('This usually means:'));
80
+ console.log(chalk.white(' • The Vercel project was deleted'));
81
+ console.log(chalk.white(' • The project name changed'));
82
+ console.log(chalk.white(" • You're connected to a different Vercel account"));
83
+ console.log();
84
+ console.log(chalk.green('✨ Proceeding with reconnection...'));
85
+ console.log();
86
+ }
87
+ else {
88
+ console.log(chalk.yellow('⚠️ Connection info incomplete'));
89
+ console.log();
90
+ console.log(chalk.green('✨ Proceeding with setup...'));
91
+ console.log();
92
+ }
93
+ }
94
+ else if (options.force) {
95
+ console.log(chalk.blue('🔄 Force reconnecting to Vercel...\n'));
96
+ }
97
+ // Get package name from package.json
98
+ const packageName = await getPackageName(appPath);
99
+ if (!packageName) {
100
+ throw new Error('Could not read package name from package.json');
101
+ }
102
+ console.log(chalk.gray(`App details:`));
103
+ console.log(chalk.gray(` Name: ${manifest.name}`));
104
+ console.log(chalk.gray(` Type: ${manifest.type}`));
105
+ console.log(chalk.gray(` Package: ${packageName}`));
106
+ console.log();
107
+ // Check if this is an API app - Railway deployment coming soon
108
+ if (manifest.type === 'api') {
109
+ console.log(chalk.yellow('⚠️ Railway deployments for API apps are not yet supported'));
110
+ console.log();
111
+ console.log(chalk.cyan('Coming soon! For now, you can deploy manually to:'));
112
+ console.log(chalk.white(' • Railway.app'), chalk.gray('- Simple deployment with databases'));
113
+ console.log(chalk.white(' • Fly.io'), chalk.gray('- Global edge deployment'));
114
+ console.log(chalk.white(' • Render.com'), chalk.gray('- Managed cloud hosting'));
115
+ console.log();
116
+ console.log(chalk.gray('Stay tuned for automated Railway deployment support!'));
117
+ process.exit(0);
118
+ }
119
+ // Check if vercel.json exists
120
+ const vercelJsonPath = path.join(appPath, 'vercel.json');
121
+ if (!(await fs.pathExists(vercelJsonPath))) {
122
+ console.log(chalk.red('❌ vercel.json not found'));
123
+ console.log();
124
+ console.log(chalk.yellow('The vercel.json file is required for deployment.'));
125
+ console.log(chalk.yellow('This file should have been created when the app was generated.'));
126
+ console.log();
127
+ console.log(chalk.cyan('If this is an older app, you need to create vercel.json manually.'));
128
+ console.log(chalk.cyan('See the documentation for the correct configuration.'));
129
+ process.exit(1);
130
+ }
131
+ console.log(chalk.green('✓ vercel.json exists'));
132
+ // Run vercel link
133
+ const spinner = ora('Linking to Vercel...').start();
134
+ spinner.stop();
135
+ console.log();
136
+ console.log(chalk.cyan('📋 Linking to Vercel project...'));
137
+ console.log(chalk.gray(' This will create a new Vercel project or link to an existing one'));
138
+ console.log();
139
+ try {
140
+ const suggestedProjectName = `${startupName}--${appName}`;
141
+ await runVercelCommand(['link', '--project', suggestedProjectName, '--yes'], appPath);
142
+ console.log();
143
+ console.log(chalk.green('✅ Successfully linked to Vercel!'));
144
+ }
145
+ catch (error) {
146
+ console.error(chalk.red('\n❌ Failed to link to Vercel'));
147
+ throw error;
148
+ }
149
+ // Read the created .vercel/project.json to get project info
150
+ const vercelProject = await loadVercelProject(appPath);
151
+ const projectName = vercelProject?.projectName || `${startupName}--${appName}`;
152
+ // Update manifest with deployment configuration
153
+ manifest.deployment = {
154
+ platform: 'vercel',
155
+ connected: true,
156
+ connectedAt: new Date().toISOString(),
157
+ projectName,
158
+ };
159
+ await deployService.saveManifest(manifest);
160
+ console.log(chalk.green('✓ Updated .launch/app.json'));
161
+ // Set Root Directory for monorepo deployments
162
+ console.log();
163
+ const rootDirectory = `startups/${startupName}/apps/${appName}`;
164
+ await updateProjectRootDirectory(projectName, rootDirectory);
165
+ // Automatically connect to Git repository
166
+ console.log();
167
+ const gitConnected = await connectGitRepository(appPath);
168
+ if (gitConnected) {
169
+ console.log();
170
+ console.log(chalk.blue('🎉 Deployment Setup Complete!'));
171
+ console.log();
172
+ console.log(chalk.green('✨ Your app is now connected to GitHub for automatic deployments!'));
173
+ console.log();
174
+ console.log(chalk.cyan('How it works:'));
175
+ console.log(chalk.white(' • Production deployments:'), chalk.gray('Push to main branch'));
176
+ console.log(chalk.white(' • Preview deployments:'), chalk.gray('Push to any other branch'));
177
+ console.log(chalk.white(' • Pull request previews:'), chalk.gray('Automatic on PR creation'));
178
+ console.log();
179
+ console.log(chalk.cyan('Next steps:'));
180
+ console.log(chalk.white(' 1. Make changes to your app'));
181
+ console.log(chalk.white(' 2. Commit and push to GitHub'));
182
+ console.log(chalk.white(' 3. Watch automatic deployment in Vercel'));
183
+ console.log();
184
+ console.log(chalk.gray('Useful commands:'));
185
+ console.log(chalk.white(' launch77 deploy:status'), chalk.gray('- View deployment status'));
186
+ console.log(chalk.white(' launch77 deploy:logs'), chalk.gray('- View build/function logs'));
187
+ console.log();
188
+ console.log(chalk.gray('View your project at:'));
189
+ console.log(chalk.cyan(` https://vercel.com/dashboard/project/${projectName}`));
190
+ }
191
+ else {
192
+ console.log();
193
+ console.log(chalk.yellow('⚠️ Could not automatically connect to GitHub'));
194
+ console.log();
195
+ console.log(chalk.blue('📦 Manual Git Integration Steps:'));
196
+ console.log();
197
+ console.log(chalk.white('To enable automatic deployments from Git:'));
198
+ console.log();
199
+ console.log(chalk.cyan('1. Go to your Vercel dashboard:'));
200
+ console.log(chalk.gray(` https://vercel.com/dashboard`));
201
+ console.log();
202
+ console.log(chalk.cyan('2. Select your project:'));
203
+ console.log(chalk.gray(` ${projectName}`));
204
+ console.log();
205
+ console.log(chalk.cyan('3. Go to Settings → Git'));
206
+ console.log();
207
+ console.log(chalk.cyan('4. Connect your GitHub/GitLab repository'));
208
+ console.log();
209
+ console.log(chalk.cyan('5. Configure branch deployments:'));
210
+ console.log(chalk.gray(' • Production: main/master branch'));
211
+ console.log(chalk.gray(' • Preview: all other branches'));
212
+ console.log();
213
+ console.log(chalk.green('✨ Once connected, every git push will trigger automatic deployments!'));
214
+ console.log();
215
+ console.log(chalk.gray('Commands available:'));
216
+ console.log(chalk.white(' launch77 deploy:status'), chalk.gray('- View deployment status'));
217
+ console.log(chalk.white(' launch77 deploy:logs'), chalk.gray('- View build/function logs'));
218
+ }
219
+ }
220
+ //# sourceMappingURL=deploy-init-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-init-action.js","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/deploy-init-action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * deploy:init command - One-time Vercel deployment setup
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function deployInitCommand(): Command;
6
+ //# sourceMappingURL=deploy-init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-init.d.ts","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/deploy-init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,wBAAgB,iBAAiB,IAAI,OAAO,CAY3C"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * deploy:init command - One-time Vercel deployment setup
3
+ */
4
+ import { Command } from 'commander';
5
+ export function deployInitCommand() {
6
+ const command = new Command('deploy:init');
7
+ command
8
+ .description('One-time deployment setup for an app')
9
+ .option('-f, --force', 'Force reconnection even if already connected')
10
+ .action(async (options) => {
11
+ const { deployInit } = await import('./deploy-init-action.js');
12
+ await deployInit(options);
13
+ });
14
+ return command;
15
+ }
16
+ //# sourceMappingURL=deploy-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-init.js","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/deploy-init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAA;IAE1C,OAAO;SACJ,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,aAAa,EAAE,8CAA8C,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;QAC9D,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * deploy:logs action - View deployment runtime logs
3
+ */
4
+ export interface DeployLogsOptions {
5
+ json?: boolean;
6
+ deployment?: string;
7
+ }
8
+ /**
9
+ * View Vercel logs
10
+ */
11
+ export declare function deployLogs(options: DeployLogsOptions): Promise<void>;
12
+ //# sourceMappingURL=deploy-logs-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-logs-action.d.ts","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/deploy-logs-action.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,iBAmH1D"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * deploy:logs action - View deployment runtime logs
3
+ */
4
+ /* eslint-disable no-console */
5
+ import chalk from 'chalk';
6
+ import { detectMonorepoContext } from '../../../utils/monorepo.js';
7
+ import { DeployService } from '../services/deploy-svc.js';
8
+ import { getVercelInstallInstructions, isVercelCliInstalled, runVercelCommand } from '../utils/vercel-extended.js';
9
+ /**
10
+ * View Vercel logs
11
+ */
12
+ export async function deployLogs(options) {
13
+ const deployService = new DeployService();
14
+ // Detect monorepo context
15
+ const context = await detectMonorepoContext(process.cwd());
16
+ if (context.location !== 'startup-app') {
17
+ throw new Error('Must be run from within an app directory (e.g., startups/mycompany/apps/myapp)');
18
+ }
19
+ const appPath = process.cwd();
20
+ console.log(chalk.blue(`\n📜 Deployment Logs\n`));
21
+ // Load manifest
22
+ const manifest = await deployService.loadManifest();
23
+ // Check if this is an API app
24
+ if (manifest.type === 'api') {
25
+ console.log(chalk.yellow('⚠️ Railway deployments for API apps are not yet supported'));
26
+ console.log();
27
+ console.log(chalk.cyan('Coming soon! For now, you can view logs at:'));
28
+ console.log(chalk.white(' • Railway.app dashboard'));
29
+ console.log(chalk.white(' • Fly.io dashboard'));
30
+ console.log(chalk.white(' • Render.com dashboard'));
31
+ console.log();
32
+ return;
33
+ }
34
+ // Check if Vercel CLI is installed
35
+ if (!(await isVercelCliInstalled())) {
36
+ console.error(chalk.red('❌ Vercel CLI is not installed'));
37
+ console.log();
38
+ console.log(chalk.yellow('To install, run:'));
39
+ console.log(chalk.cyan(` ${getVercelInstallInstructions()}`));
40
+ console.log();
41
+ process.exit(1);
42
+ }
43
+ // Check if app is connected
44
+ if (!manifest.deployment?.connected) {
45
+ console.log(chalk.yellow('⚠️ App is not connected to Vercel'));
46
+ console.log();
47
+ console.log(chalk.gray('To connect this app, run:'));
48
+ console.log(chalk.white(' launch77 deploy:init'));
49
+ console.log();
50
+ return;
51
+ }
52
+ // Get deployment ID if not provided
53
+ let deploymentId = options.deployment;
54
+ if (!deploymentId) {
55
+ console.log(chalk.gray('Fetching latest deployment...'));
56
+ try {
57
+ const listResult = await runVercelCommand(['ls'], appPath, { silent: true });
58
+ const output = (listResult.stdout || '') + '\n' + (listResult.stderr || '');
59
+ if (output) {
60
+ const urlMatch = output.match(/https:\/\/[^\s]+\.vercel\.app/);
61
+ if (urlMatch) {
62
+ deploymentId = urlMatch[0];
63
+ console.log(chalk.gray(`Using deployment: ${deploymentId}`));
64
+ }
65
+ }
66
+ }
67
+ catch (error) {
68
+ console.log(chalk.yellow('Could not fetch deployment list'));
69
+ }
70
+ }
71
+ if (!deploymentId) {
72
+ console.log(chalk.yellow('No deployments found'));
73
+ console.log(chalk.gray('Deploy your app first with git push or vercel'));
74
+ return;
75
+ }
76
+ // Build Vercel logs command
77
+ const args = ['logs', deploymentId];
78
+ if (options.json) {
79
+ args.push('--json');
80
+ console.log(chalk.gray('Outputting as JSON (pipe to jq for filtering)'));
81
+ }
82
+ else {
83
+ console.log(chalk.gray('Showing runtime logs (Ctrl+C to exit)...'));
84
+ }
85
+ console.log();
86
+ try {
87
+ await runVercelCommand(args, appPath);
88
+ if (!options.json) {
89
+ console.log();
90
+ console.log(chalk.gray('Tips:'));
91
+ console.log(chalk.white(' launch77 deploy:logs --json'), chalk.gray('- Output as JSON'));
92
+ console.log(chalk.white(' launch77 deploy:logs --deployment <id>'), chalk.gray('- Specific deployment'));
93
+ console.log(chalk.white(' launch77 deploy:logs --json | jq \'select(.level == "warning")\''), chalk.gray('- Filter warnings'));
94
+ }
95
+ }
96
+ catch (error) {
97
+ const errorMessage = error instanceof Error ? error.message : String(error);
98
+ const errorObj = error;
99
+ if (errorMessage.includes('not linked') || errorObj.stderr?.includes('not linked')) {
100
+ console.log();
101
+ console.log(chalk.yellow('Local .vercel directory not found'));
102
+ console.log(chalk.gray('This is normal if you cloned the repo.'));
103
+ console.log(chalk.gray('The project exists in Vercel but needs local linking.'));
104
+ console.log();
105
+ console.log(chalk.cyan('To link locally:'));
106
+ console.log(chalk.white(' vercel link'));
107
+ }
108
+ else {
109
+ throw error;
110
+ }
111
+ }
112
+ }
113
+ //# sourceMappingURL=deploy-logs-action.js.map