@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,163 @@
1
+ import * as path from 'path';
2
+ import chalk from 'chalk';
3
+ import fs from 'fs-extra';
4
+ import ora from 'ora';
5
+ import prettier from 'prettier';
6
+ import { scanUILibrary } from '../scanners/ui-component-scanner.js';
7
+ import { generateExamplesFiles } from '../utils/examples-generator.js';
8
+ import { generateQualityReport, printQualityReport } from '../utils/quality-reporter.js';
9
+ /**
10
+ * Catalog Service
11
+ *
12
+ * Scans Launch77 artifacts and generates catalog.json
13
+ */
14
+ export class CatalogService {
15
+ /**
16
+ * Scan Launch77 codebase and generate catalog.json
17
+ */
18
+ async scanCatalog(context, options = {}) {
19
+ const strict = options.strict !== false; // Default to true (strict mode)
20
+ const quiet = options.quiet || false;
21
+ console.log(chalk.blue('\nšŸ” Scanning Launch77 artifacts...\n'));
22
+ const launch77Root = path.join(context.monorepoRoot, 'launch77');
23
+ const spinner = ora('Scanning codebase...').start();
24
+ // Phase 1: Scan all UI components deterministically (with validation)
25
+ const { components: uiComponents, validations, excluded } = await this.scanAllUIComponents(launch77Root);
26
+ spinner.succeed(`Found ${uiComponents.length} UI components`);
27
+ console.log(chalk.gray(` • ${uiComponents.length} UI components`));
28
+ if (excluded > 0) {
29
+ console.log(chalk.gray(` • ${excluded} excluded (@launch77-ignore)`));
30
+ }
31
+ // Generate quality report
32
+ const totalScanned = uiComponents.length + excluded;
33
+ const qualityReport = generateQualityReport(totalScanned, excluded, validations);
34
+ // Print quality report unless in quiet mode
35
+ if (!quiet) {
36
+ printQualityReport(qualityReport, strict);
37
+ }
38
+ // In strict mode, fail if there are validation errors
39
+ if (strict && qualityReport.errors.length > 0) {
40
+ throw new Error('Catalog validation failed in strict mode');
41
+ }
42
+ console.log(chalk.blue('\nšŸ“ Generating catalog with deterministic data...\n'));
43
+ console.log(chalk.green(' āœ“ All required fields populated'));
44
+ console.log(chalk.green(' āœ“ Props extracted via TypeScript AST'));
45
+ // Read existing catalog to check if content changed
46
+ const catalogPath = path.join(launch77Root, 'catalog.json');
47
+ const hasChanges = await this.catalogHasChanges(catalogPath, {
48
+ uiComponents,
49
+ });
50
+ // Get current or next version
51
+ const newVersion = hasChanges ? await this.getNextVersion(catalogPath) : await this.getCurrentVersion(catalogPath);
52
+ if (!hasChanges) {
53
+ console.log(chalk.gray('\n ℹ No changes detected - version unchanged\n'));
54
+ }
55
+ // Generate examples.generated.ts files for UI libraries with examples
56
+ console.log(chalk.blue('\nšŸ“¦ Generating examples exports...'));
57
+ await generateExamplesFiles(uiComponents, launch77Root);
58
+ console.log(chalk.green(' āœ“ Generated examples.generated.ts files'));
59
+ // Build catalog object
60
+ const catalog = {
61
+ $schema: './schemas/catalog.schema.json',
62
+ version: newVersion,
63
+ description: 'Launch77 Platform Artifact Catalog - UI Components',
64
+ uiComponents,
65
+ };
66
+ // Save catalog (no AI enrichment - metadata comes from source code)
67
+ // Use Prettier programmatically to match pre-commit formatting
68
+ const prettierConfig = await prettier.resolveConfig(catalogPath);
69
+ const formatted = await prettier.format(JSON.stringify(catalog, null, 2), {
70
+ ...prettierConfig,
71
+ parser: 'json',
72
+ filepath: catalogPath,
73
+ });
74
+ await fs.writeFile(catalogPath, formatted);
75
+ console.log(chalk.blue('\nšŸ’¾ Writing catalog.json...\n'));
76
+ console.log(chalk.green(` āœ“ Saved to ${path.relative(process.cwd(), catalogPath)}`));
77
+ // Sync catalog to Launch77 marketing site
78
+ const marketingSiteCatalogPath = path.join(context.monorepoRoot, 'startups/launch77/apps/marketing/src/catalog.json');
79
+ if (await fs.pathExists(path.dirname(marketingSiteCatalogPath))) {
80
+ await fs.writeFile(marketingSiteCatalogPath, formatted);
81
+ console.log(chalk.green(` āœ“ Synced to marketing site`));
82
+ }
83
+ const totalArtifacts = catalog.uiComponents.length;
84
+ console.log(chalk.green(`\nāœ… Done! ${totalArtifacts} UI components cataloged (version ${newVersion}).\n`));
85
+ return {
86
+ catalogPath,
87
+ version: newVersion,
88
+ totalArtifacts,
89
+ };
90
+ }
91
+ /**
92
+ * Scan all UI components from @launch77/ui and @launch/marketing-ui
93
+ */
94
+ async scanAllUIComponents(launch77Root) {
95
+ const components = [];
96
+ const validations = [];
97
+ let excluded = 0;
98
+ const uiLibraries = [
99
+ { path: path.join(launch77Root, 'libraries/ui'), package: '@launch77/ui' },
100
+ { path: path.join(launch77Root, 'libraries/marketing-ui'), package: '@launch/marketing-ui' },
101
+ ];
102
+ for (const lib of uiLibraries) {
103
+ if (await fs.pathExists(lib.path)) {
104
+ const result = await scanUILibrary(lib.path, lib.package);
105
+ components.push(...result.components);
106
+ validations.push(...result.validations);
107
+ excluded += result.excluded;
108
+ }
109
+ }
110
+ return { components, validations, excluded };
111
+ }
112
+ /**
113
+ * Check if catalog content has changed (excluding version field)
114
+ */
115
+ async catalogHasChanges(catalogPath, newContent) {
116
+ if (!(await fs.pathExists(catalogPath))) {
117
+ return true; // No existing catalog = changes
118
+ }
119
+ try {
120
+ const existingCatalog = await fs.readJson(catalogPath);
121
+ // Compare content without version fields
122
+ const existingContent = {
123
+ uiComponents: existingCatalog.uiComponents || [],
124
+ };
125
+ return JSON.stringify(existingContent) !== JSON.stringify(newContent);
126
+ }
127
+ catch (error) {
128
+ return true; // Error reading = treat as changes
129
+ }
130
+ }
131
+ /**
132
+ * Get current version from existing catalog
133
+ */
134
+ async getCurrentVersion(catalogPath) {
135
+ if (!(await fs.pathExists(catalogPath))) {
136
+ return '1.0.0';
137
+ }
138
+ try {
139
+ const existingCatalog = await fs.readJson(catalogPath);
140
+ return existingCatalog.version || '1.0.0';
141
+ }
142
+ catch (error) {
143
+ return '1.0.0';
144
+ }
145
+ }
146
+ /**
147
+ * Get the next version by incrementing the patch version of existing catalog
148
+ * If no catalog exists, start at 1.0.0
149
+ */
150
+ async getNextVersion(catalogPath) {
151
+ const currentVersion = await this.getCurrentVersion(catalogPath);
152
+ // Parse version (major.minor.patch)
153
+ const versionParts = currentVersion.split('.');
154
+ const major = parseInt(versionParts[0] || '1', 10);
155
+ const minor = parseInt(versionParts[1] || '0', 10);
156
+ const patch = parseInt(versionParts[2] || '0', 10);
157
+ // Increment patch version
158
+ const newVersion = `${major}.${minor}.${patch + 1}`;
159
+ console.log(chalk.gray(` Version: ${chalk.white(currentVersion)} → ${chalk.white(newVersion)}\n`));
160
+ return newVersion;
161
+ }
162
+ }
163
+ //# sourceMappingURL=catalog-svc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-svc.js","sourceRoot":"","sources":["../../../../src/modules/catalog/services/catalog-svc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Shared types for the Launch77 catalog system
3
+ */
4
+ /**
5
+ * UI Component catalog structure
6
+ * Generated by individual component libraries during build
7
+ */
8
+ export interface UiComponentCatalog {
9
+ $schema?: string;
10
+ catalogType: 'ui-components';
11
+ catalogVersion: string;
12
+ packageName: string;
13
+ packageVersion: string;
14
+ generatedAt: string;
15
+ components: UiComponent[];
16
+ }
17
+ /**
18
+ * Complete UI component metadata in catalog
19
+ */
20
+ export interface UiComponent {
21
+ id: string;
22
+ kind: 'ui_component';
23
+ name: string;
24
+ packageName: string;
25
+ category: string;
26
+ description: string;
27
+ tags: string[];
28
+ props?: string[];
29
+ sourcePath?: string;
30
+ library?: string;
31
+ guidance?: ComponentGuidance;
32
+ example?: string;
33
+ examples?: ComponentExamples;
34
+ }
35
+ /**
36
+ * Component usage guidance
37
+ */
38
+ export interface ComponentGuidance {
39
+ whenToUse: string;
40
+ whenNotToUse: string;
41
+ }
42
+ /**
43
+ * Component examples reference
44
+ */
45
+ export interface ComponentExamples {
46
+ module: string;
47
+ export: string;
48
+ sourcePath: string;
49
+ }
50
+ /**
51
+ * Component metadata extracted from JSDoc
52
+ */
53
+ export interface ComponentMetadata {
54
+ description: string;
55
+ category: string;
56
+ whenToUse: string;
57
+ whenNotToUse: string;
58
+ tags: string[];
59
+ example: string;
60
+ ignored: boolean;
61
+ ignoreReason?: string;
62
+ }
63
+ /**
64
+ * Validation result for a single component
65
+ */
66
+ export interface ValidationResult {
67
+ valid: boolean;
68
+ errors: string[];
69
+ warnings: string[];
70
+ componentName: string;
71
+ filePath: string;
72
+ }
73
+ /**
74
+ * Quality report for catalog generation
75
+ */
76
+ export interface QualityReport {
77
+ totalComponents: number;
78
+ withMetadata: number;
79
+ missingMetadata: number;
80
+ excluded: number;
81
+ errors: ValidationResult[];
82
+ warnings: ValidationResult[];
83
+ qualityScore: number;
84
+ }
85
+ /**
86
+ * Catalog generation configuration
87
+ */
88
+ export interface CatalogConfig {
89
+ type: 'ui-components';
90
+ packageName: string;
91
+ sourceDir: string;
92
+ componentsDir: string;
93
+ exportsFile: string;
94
+ outputFile: string;
95
+ catalogVersion: string;
96
+ validation: ValidationConfig;
97
+ }
98
+ /**
99
+ * Validation rules configuration
100
+ */
101
+ export interface ValidationConfig {
102
+ strict: boolean;
103
+ requireCategory: boolean;
104
+ requireDescription: boolean;
105
+ minDescriptionLength: number;
106
+ requireWhenToUse: boolean;
107
+ requireWhenNotToUse: boolean;
108
+ minTags: number;
109
+ }
110
+ /**
111
+ * Result of catalog generation
112
+ */
113
+ export interface GenerationResult {
114
+ success: boolean;
115
+ catalogFile: string;
116
+ qualityReport: QualityReport;
117
+ errors: ValidationResult[];
118
+ warnings: ValidationResult[];
119
+ }
120
+ //# sourceMappingURL=catalog-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-types.d.ts","sourceRoot":"","sources":["../../../../src/modules/catalog/types/catalog-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared types for the Launch77 catalog system
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=catalog-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-types.js","sourceRoot":"","sources":["../../../../src/modules/catalog/types/catalog-types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,6 @@
1
+ import type { UiComponent } from '../types/catalog-types.js';
2
+ /**
3
+ * Generate examples.generated.ts files for each library that has components with examples
4
+ */
5
+ export declare function generateExamplesFiles(components: UiComponent[], launch77Root: string): Promise<void>;
6
+ //# sourceMappingURL=examples-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"examples-generator.d.ts","sourceRoot":"","sources":["../../../../src/modules/catalog/utils/examples-generator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B1G"}
@@ -0,0 +1,55 @@
1
+ import * as path from 'path';
2
+ import fs from 'fs-extra';
3
+ /**
4
+ * Generate examples.generated.ts files for each library that has components with examples
5
+ */
6
+ export async function generateExamplesFiles(components, launch77Root) {
7
+ // Group components by package
8
+ const componentsByPackage = new Map();
9
+ for (const component of components) {
10
+ if (component.examples) {
11
+ const existing = componentsByPackage.get(component.packageName) || [];
12
+ existing.push(component);
13
+ componentsByPackage.set(component.packageName, existing);
14
+ }
15
+ }
16
+ // Generate examples file for each package
17
+ for (const [packageName, packageComponents] of componentsByPackage) {
18
+ // Determine library path based on package name
19
+ // Extract library name from scoped package (e.g., @launch77/ui -> ui)
20
+ const libraryName = packageName.split('/').pop() || packageName;
21
+ const libraryPath = path.join(launch77Root, 'libraries', libraryName);
22
+ const examplesFilePath = path.join(libraryPath, 'src', 'examples.generated.ts');
23
+ // Generate content
24
+ const content = generateExamplesContent(packageComponents, libraryName);
25
+ // Write file
26
+ await fs.writeFile(examplesFilePath, content, 'utf-8');
27
+ console.log(` āœ“ Generated ${packageName}/examples`);
28
+ }
29
+ }
30
+ function generateExamplesContent(components, _libraryName) {
31
+ const lines = ['// AUTO-GENERATED by launch77 scan - DO NOT EDIT', "// This file is automatically generated when running 'launch77 scan'", '// To add new examples, create a ComponentName.examples.tsx file next to your component', ''];
32
+ // Sort components alphabetically for deterministic output
33
+ const sortedComponents = [...components].sort((a, b) => a.name.localeCompare(b.name));
34
+ // Add export statements
35
+ for (const component of sortedComponents) {
36
+ if (component.examples && component.examples.sourcePath) {
37
+ // Extract relative path from sourcePath
38
+ // e.g., "launch77/libraries/ui/src/components/Button/Button.examples.tsx"
39
+ // becomes "./components/Button/Button.examples"
40
+ const sourcePath = component.examples.sourcePath;
41
+ const srcIndex = sourcePath.indexOf('/src/');
42
+ if (srcIndex !== -1) {
43
+ const relativePath = sourcePath
44
+ .substring(srcIndex + 5) // Skip "/src/"
45
+ .replace(/\.tsx$/, ''); // Remove extension
46
+ // Export structured examples using ComponentNameExamples convention
47
+ // e.g., Button -> ButtonExamples, CTAButton -> CTAButtonExamples
48
+ const structuredExportName = `${component.name}Examples`;
49
+ lines.push(`export { ${structuredExportName} } from './${relativePath}'`);
50
+ }
51
+ }
52
+ }
53
+ return lines.join('\n') + '\n';
54
+ }
55
+ //# sourceMappingURL=examples-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"examples-generator.js","sourceRoot":"","sources":["../../../../src/modules/catalog/utils/examples-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,MAAM,UAAU,CAAA;AAIzB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,UAAyB,EAAE,YAAoB;IACzF,8BAA8B;IAC9B,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAyB,CAAA;IAE5D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;YACrE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACxB,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,IAAI,mBAAmB,EAAE,CAAC;QACnE,+CAA+C;QAC/C,sEAAsE;QACtE,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,WAAW,CAAA;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;QACrE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAA;QAE/E,mBAAmB;QACnB,MAAM,OAAO,GAAG,uBAAuB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAA;QAEvE,aAAa;QACb,MAAM,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAEtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,WAAW,CAAC,CAAA;IACtD,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,UAAyB,EAAE,YAAoB;IAC9E,MAAM,KAAK,GAAa,CAAC,kDAAkD,EAAE,sEAAsE,EAAE,yFAAyF,EAAE,EAAE,CAAC,CAAA;IAEnP,0DAA0D;IAC1D,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAErF,wBAAwB;IACxB,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACzC,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxD,wCAAwC;YACxC,0EAA0E;YAC1E,gDAAgD;YAChD,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAA;YAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC5C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,YAAY,GAAG,UAAU;qBAC5B,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,eAAe;qBACvC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA,CAAC,mBAAmB;gBAE5C,oEAAoE;gBACpE,iEAAiE;gBACjE,MAAM,oBAAoB,GAAG,GAAG,SAAS,CAAC,IAAI,UAAU,CAAA;gBACxD,KAAK,CAAC,IAAI,CAAC,YAAY,oBAAoB,cAAc,YAAY,GAAG,CAAC,CAAA;YAC3E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAChC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Generate and display catalog quality reports
3
+ */
4
+ import type { ValidationResult, QualityReport } from '../types/catalog-types.js';
5
+ /**
6
+ * Generate quality report from validation results
7
+ */
8
+ export declare function generateQualityReport(totalScanned: number, excluded: number, validations: ValidationResult[]): QualityReport;
9
+ /**
10
+ * Print quality report to console
11
+ */
12
+ export declare function printQualityReport(report: QualityReport, strict: boolean): void;
13
+ //# sourceMappingURL=quality-reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-reporter.d.ts","sourceRoot":"","sources":["../../../../src/modules/catalog/utils/quality-reporter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEhF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,aAAa,CAe5H;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CA4C/E"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Generate and display catalog quality reports
3
+ */
4
+ import chalk from 'chalk';
5
+ /**
6
+ * Generate quality report from validation results
7
+ */
8
+ export function generateQualityReport(totalScanned, excluded, validations) {
9
+ const errors = validations.filter((v) => !v.valid);
10
+ const withMetadata = validations.filter((v) => v.valid);
11
+ const qualityScore = totalScanned > 0 ? Math.round((withMetadata.length / totalScanned) * 100) : 100;
12
+ return {
13
+ totalComponents: totalScanned,
14
+ withMetadata: withMetadata.length,
15
+ missingMetadata: errors.length,
16
+ excluded,
17
+ errors,
18
+ warnings: validations.filter((v) => v.warnings.length > 0),
19
+ qualityScore,
20
+ };
21
+ }
22
+ /**
23
+ * Print quality report to console
24
+ */
25
+ export function printQualityReport(report, strict) {
26
+ console.log(chalk.blue('\nšŸ“Š Catalog Quality Report\n'));
27
+ console.log(chalk.gray(` Total components scanned: ${report.totalComponents}`));
28
+ console.log(chalk.green(` āœ“ With metadata: ${report.withMetadata} (${report.qualityScore}%)`));
29
+ if (report.missingMetadata > 0) {
30
+ console.log(chalk.red(` āœ— Missing metadata: ${report.missingMetadata}`));
31
+ }
32
+ if (report.excluded > 0) {
33
+ console.log(chalk.gray(` ℹ Excluded: ${report.excluded}`));
34
+ }
35
+ // Show errors
36
+ if (report.errors.length > 0) {
37
+ console.log(chalk.red('\n āŒ Components missing metadata:\n'));
38
+ report.errors.forEach((err) => {
39
+ console.log(chalk.red(` - ${err.componentName}`));
40
+ console.log(chalk.gray(` ${err.filePath}`));
41
+ err.errors.forEach((e) => console.log(chalk.gray(` • ${e}`)));
42
+ });
43
+ }
44
+ // Show warnings (limit to 5)
45
+ if (report.warnings.length > 0 && !strict) {
46
+ console.log(chalk.yellow('\n āš ļø Metadata warnings:\n'));
47
+ report.warnings.slice(0, 5).forEach((warn) => {
48
+ console.log(chalk.yellow(` - ${warn.componentName}`));
49
+ warn.warnings.forEach((w) => console.log(chalk.gray(` • ${w}`)));
50
+ });
51
+ if (report.warnings.length > 5) {
52
+ console.log(chalk.gray(`\n ... and ${report.warnings.length - 5} more`));
53
+ }
54
+ }
55
+ console.log();
56
+ // Help message if there are errors
57
+ if (report.errors.length > 0) {
58
+ console.log(chalk.blue('šŸ’” To fix:\n'));
59
+ console.log(chalk.gray(' • Add @launch77-component JSDoc to public components'));
60
+ console.log(chalk.gray(' • Add @launch77-ignore to exclude internal components'));
61
+ console.log(chalk.gray(' • See: launch77/docs/CATALOG_METADATA_GUIDE.md\n'));
62
+ }
63
+ }
64
+ //# sourceMappingURL=quality-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-reporter.js","sourceRoot":"","sources":["../../../../src/modules/catalog/utils/quality-reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Validate component names for Launch77 catalog
3
+ */
4
+ export interface ComponentNameValidation {
5
+ valid: boolean;
6
+ errors: string[];
7
+ }
8
+ /**
9
+ * Validate a component name against Launch77 naming conventions
10
+ *
11
+ * Rules:
12
+ * - Must start with uppercase letter (A-Z)
13
+ * - Only alphanumeric characters (no symbols, spaces, or special characters)
14
+ * - Maximum 50 characters
15
+ *
16
+ * @param name - Component name to validate
17
+ * @returns Validation result with errors if invalid
18
+ */
19
+ export declare function validateComponentName(name: string): ComponentNameValidation;
20
+ //# sourceMappingURL=component-name-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-name-validator.d.ts","sourceRoot":"","sources":["../../../../src/modules/catalog/validators/component-name-validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CAmB3E"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Validate component names for Launch77 catalog
3
+ */
4
+ const VALID_COMPONENT_NAME = /^[A-Z][a-zA-Z0-9]*$/;
5
+ const MAX_COMPONENT_NAME_LENGTH = 50;
6
+ /**
7
+ * Validate a component name against Launch77 naming conventions
8
+ *
9
+ * Rules:
10
+ * - Must start with uppercase letter (A-Z)
11
+ * - Only alphanumeric characters (no symbols, spaces, or special characters)
12
+ * - Maximum 50 characters
13
+ *
14
+ * @param name - Component name to validate
15
+ * @returns Validation result with errors if invalid
16
+ */
17
+ export function validateComponentName(name) {
18
+ const errors = [];
19
+ if (!name || name.length === 0) {
20
+ errors.push('Component name cannot be empty');
21
+ }
22
+ if (name.length > MAX_COMPONENT_NAME_LENGTH) {
23
+ errors.push(`Component name exceeds maximum length of ${MAX_COMPONENT_NAME_LENGTH} characters`);
24
+ }
25
+ if (!VALID_COMPONENT_NAME.test(name)) {
26
+ errors.push('Component name must be PascalCase (start with uppercase letter A-Z, alphanumeric only)');
27
+ }
28
+ return {
29
+ valid: errors.length === 0,
30
+ errors,
31
+ };
32
+ }
33
+ //# sourceMappingURL=component-name-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-name-validator.js","sourceRoot":"","sources":["../../../../src/modules/catalog/validators/component-name-validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,oBAAoB,GAAG,qBAAqB,CAAA;AAClD,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAOpC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,yBAAyB,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,4CAA4C,yBAAyB,aAAa,CAAC,CAAA;IACjG,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAA;IACvG,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=component-name-validator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-name-validator.test.d.ts","sourceRoot":"","sources":["../../../../src/modules/catalog/validators/component-name-validator.test.ts"],"names":[],"mappings":""}