@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
package/.eslintrc.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": ["../../.eslintrc.js"],
3
+ "rules": {
4
+ "no-console": "off"
5
+ }
6
+ }
@@ -0,0 +1,6 @@
1
+ # CI/CD Build Environment Variables
2
+ # These values allow Next.js to build and prerender static pages in CI
3
+ # Real production values are set in deployment platform (Vercel)
4
+ NEXT_PUBLIC_SITE_URL=http://localhost:3000
5
+ NEXT_PUBLIC_API_URL=http://localhost:4000/graphql
6
+ NEXT_PUBLIC_GTM_ID=
@@ -0,0 +1,9 @@
1
+ # Site Configuration
2
+ NEXT_PUBLIC_SITE_URL=http://localhost:3000
3
+
4
+ # Analytics
5
+ # Get your GTM ID from Google Tag Manager (format: GTM-XXXXXXX)
6
+ NEXT_PUBLIC_GTM_ID=
7
+
8
+ # Feature Flags (optional)
9
+ # NEXT_PUBLIC_ENABLE_ANALYTICS=true
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": ["next/core-web-vitals"],
3
+ "rules": {
4
+ "import/order": "off"
5
+ }
6
+ }
@@ -0,0 +1,80 @@
1
+ # {{appName}}
2
+
3
+ {{#if startupName}}Part of the {{startupName}} startup{{/if}}
4
+
5
+ A web application built with the Launch77 Platform.
6
+
7
+ ## Getting Started
8
+
9
+ 1. Install dependencies (from monorepo root):
10
+ ```bash
11
+ npm install
12
+ ```
13
+
14
+ 2. Set up environment variables:
15
+ ```bash
16
+ cp .env.example .env.local
17
+ ```
18
+
19
+ 3. Run the development server:
20
+ ```bash
21
+ npm run dev
22
+ ```
23
+
24
+ Open [http://localhost:{{port}}](http://localhost:{{port}}) in your browser.
25
+
26
+ ## Available Scripts
27
+
28
+ - `npm run dev` - Start development server
29
+ - `npm run build` - Build for production
30
+ - `npm run start` - Start production server
31
+ - `npm run lint` - Run ESLint
32
+ - `npm run typecheck` - Run TypeScript type checking
33
+
34
+ ## Launch77 Packages
35
+
36
+ This app uses the following Launch77 platform packages:
37
+
38
+ - **@launch77/ui** - Shared component library
39
+ - **@launch77/theme** - Tailwind preset and design tokens
40
+
41
+ ## Project Structure
42
+
43
+ ```
44
+ app/
45
+ ├── layout.tsx # Root layout
46
+ ├── page.tsx # Homepage
47
+ ├── dashboard/ # Example dashboard page
48
+ ├── about/ # About page
49
+ └── globals.css # Global styles (imports @launch77/theme)
50
+ ```
51
+
52
+ ## Next Steps
53
+
54
+ 1. **Add Authentication**: Implement login/register pages and protect routes
55
+ 2. **Connect to API**: Set up API client to connect to your backend
56
+ 3. **Add Features**: Build out your application features
57
+
58
+ ## Using UI Components
59
+
60
+ ```tsx
61
+ import { Button, Card, Input } from '@launch77/ui'
62
+
63
+ export default function MyPage() {
64
+ return (
65
+ <Card>
66
+ <Input placeholder="Enter text" />
67
+ <Button>Submit</Button>
68
+ </Card>
69
+ )
70
+ }
71
+ ```
72
+
73
+ ## Customizing Theme
74
+
75
+ Extend `tailwind.config.ts` for theme customization.
76
+
77
+ ## Learn More
78
+
79
+ - [Next.js Documentation](https://nextjs.org/docs)
80
+ - [Launch77 Platform Docs](../../README.md)
@@ -0,0 +1,41 @@
1
+ import Link from 'next/link'
2
+
3
+ export default function AboutPage() {
4
+ return (
5
+ <div className="min-h-screen bg-gray-50">
6
+ <nav className="border-b border-gray-200">
7
+ <div className="max-w-7xl mx-auto px-4 py-4">
8
+ <div className="flex items-center justify-between">
9
+ <h1 className="text-xl font-bold text-gray-900">{{appName}}</h1>
10
+ <Link
11
+ href="/"
12
+ className="px-4 py-2 text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-100 rounded-md transition-colors"
13
+ >
14
+ Home
15
+ </Link>
16
+ </div>
17
+ </div>
18
+ </nav>
19
+
20
+ <main className="max-w-3xl mx-auto px-4 py-16">
21
+ <h1 className="text-4xl font-bold text-gray-900 mb-4">
22
+ About {{appName}}
23
+ </h1>
24
+ <div className="prose prose-slate">
25
+ <p className="text-lg text-gray-600 mb-4">
26
+ This is a web application built with the Launch77 Platform.
27
+ </p>
28
+ <p className="text-gray-600 mb-4">
29
+ Launch77 provides a modern development environment with:
30
+ </p>
31
+ <ul className="list-disc list-inside text-gray-600 mb-4 space-y-2">
32
+ <li>Next.js for server-side rendering and routing</li>
33
+ <li>Tailwind CSS for styling</li>
34
+ <li>TypeScript for type safety</li>
35
+ <li>Plugin-based architecture for adding capabilities</li>
36
+ </ul>
37
+ </div>
38
+ </main>
39
+ </div>
40
+ )
41
+ }
@@ -0,0 +1,51 @@
1
+ import Link from 'next/link'
2
+
3
+ export default function DashboardPage() {
4
+ return (
5
+ <div className="min-h-screen bg-gray-50">
6
+ <nav className="border-b border-gray-200">
7
+ <div className="max-w-7xl mx-auto px-4 py-4">
8
+ <div className="flex items-center justify-between">
9
+ <h1 className="text-xl font-bold text-gray-900">{{appName}}</h1>
10
+ <Link
11
+ href="/"
12
+ className="px-4 py-2 text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-100 rounded-md transition-colors"
13
+ >
14
+ Home
15
+ </Link>
16
+ </div>
17
+ </div>
18
+ </nav>
19
+
20
+ <main className="max-w-7xl mx-auto px-4 py-8">
21
+ <div className="mb-8">
22
+ <h2 className="text-3xl font-bold text-gray-900 mb-2">Dashboard</h2>
23
+ <p className="text-gray-600">
24
+ This is a protected page example. Add your authentication logic here.
25
+ </p>
26
+ </div>
27
+
28
+ <div className="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
29
+ <div className="rounded-lg border border-gray-200 bg-white p-6">
30
+ <h3 className="font-semibold text-gray-900 mb-2">Card 1</h3>
31
+ <p className="text-sm text-gray-600">
32
+ Example content for your dashboard
33
+ </p>
34
+ </div>
35
+ <div className="rounded-lg border border-gray-200 bg-white p-6">
36
+ <h3 className="font-semibold text-gray-900 mb-2">Card 2</h3>
37
+ <p className="text-sm text-gray-600">
38
+ Example content for your dashboard
39
+ </p>
40
+ </div>
41
+ <div className="rounded-lg border border-gray-200 bg-white p-6">
42
+ <h3 className="font-semibold text-gray-900 mb-2">Card 3</h3>
43
+ <p className="text-sm text-gray-600">
44
+ Example content for your dashboard
45
+ </p>
46
+ </div>
47
+ </div>
48
+ </main>
49
+ </div>
50
+ )
51
+ }
@@ -0,0 +1,31 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ /* Base resets and accessibility styles */
6
+ @layer base {
7
+ html {
8
+ scroll-behavior: smooth;
9
+ }
10
+
11
+ body {
12
+ @apply antialiased;
13
+ }
14
+
15
+ /* Focus styles for accessibility */
16
+ :focus-visible {
17
+ @apply outline-none ring-2 ring-blue-500 ring-offset-2;
18
+ }
19
+
20
+ /* Reduced motion support */
21
+ @media (prefers-reduced-motion: reduce) {
22
+ *,
23
+ *::before,
24
+ *::after {
25
+ animation-duration: 0.01ms !important;
26
+ animation-iteration-count: 1 !important;
27
+ transition-duration: 0.01ms !important;
28
+ scroll-behavior: auto !important;
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,26 @@
1
+ import type { Metadata } from 'next'
2
+ import { Inter } from 'next/font/google'
3
+
4
+ import './globals.css'
5
+
6
+ const inter = Inter({ subsets: ['latin'] })
7
+
8
+ export const metadata: Metadata = {
9
+ title: '{{appName}}',
10
+ description: '{{appName}} - Built with Launch77 Platform',
11
+ icons: {
12
+ icon: '/favicon.ico',
13
+ },
14
+ }
15
+
16
+ export default function RootLayout({
17
+ children,
18
+ }: {
19
+ children: React.ReactNode
20
+ }) {
21
+ return (
22
+ <html lang="en" className={`${inter.className} scroll-smooth`}>
23
+ <body>{children}</body>
24
+ </html>
25
+ )
26
+ }
@@ -0,0 +1,30 @@
1
+ import Link from 'next/link'
2
+
3
+ export default function HomePage() {
4
+ return (
5
+ <main className="min-h-screen flex items-center justify-center bg-gray-50">
6
+ <div className="max-w-2xl mx-auto px-4 py-16 text-center">
7
+ <h1 className="text-4xl font-bold text-gray-900 mb-4">
8
+ Welcome to {{appName}}
9
+ </h1>
10
+ <p className="text-lg text-gray-600 mb-8">
11
+ Built with the Launch77 Platform
12
+ </p>
13
+ <div className="flex gap-4 justify-center">
14
+ <Link
15
+ href="/dashboard"
16
+ className="inline-flex items-center justify-center px-6 py-3 text-base font-medium text-white bg-blue-600 hover:bg-blue-700 rounded-lg transition-colors"
17
+ >
18
+ Go to Dashboard
19
+ </Link>
20
+ <Link
21
+ href="/about"
22
+ className="inline-flex items-center justify-center px-6 py-3 text-base font-medium text-gray-700 bg-white hover:bg-gray-50 border border-gray-300 rounded-lg transition-colors"
23
+ >
24
+ Learn More
25
+ </Link>
26
+ </div>
27
+ </div>
28
+ </main>
29
+ )
30
+ }
@@ -0,0 +1,99 @@
1
+ // Load .env.ci in CI environments for build-time placeholder variables
2
+ // This allows static page generation to succeed without real env values
3
+ // Real values come from deployment platform (Vercel/Railway)
4
+ if (process.env.CI === 'true') {
5
+ const path = require('path')
6
+ require('dotenv').config({ path: path.join(__dirname, '.env.ci') })
7
+ }
8
+
9
+ /** @type {import('next').NextConfig} */
10
+ const nextConfig = {
11
+ reactStrictMode: true,
12
+ images: {
13
+ formats: ['image/avif', 'image/webp'],
14
+ deviceSizes: [640, 750, 1080, 1200, 1920],
15
+ imageSizes: [16, 32, 48, 64, 96, 128, 256],
16
+ minimumCacheTTL: 60 * 60 * 24 * 365, // 1 year
17
+ },
18
+ compress: true,
19
+ poweredByHeader: false,
20
+ swcMinify: true,
21
+ compiler: {
22
+ removeConsole: process.env.NODE_ENV === 'production',
23
+ },
24
+ headers: async () => [
25
+ {
26
+ source: '/:path*',
27
+ headers: [
28
+ {
29
+ key: 'X-DNS-Prefetch-Control',
30
+ value: 'on',
31
+ },
32
+ {
33
+ key: 'X-Content-Type-Options',
34
+ value: 'nosniff',
35
+ },
36
+ {
37
+ key: 'X-Frame-Options',
38
+ value: 'SAMEORIGIN',
39
+ },
40
+ {
41
+ key: 'X-XSS-Protection',
42
+ value: '1; mode=block',
43
+ },
44
+ {
45
+ key: 'Referrer-Policy',
46
+ value: 'origin-when-cross-origin',
47
+ },
48
+ ],
49
+ },
50
+ // Cache static assets aggressively
51
+ {
52
+ source: '/(.*).jpg',
53
+ headers: [
54
+ {
55
+ key: 'Cache-Control',
56
+ value: 'public, max-age=31536000, immutable',
57
+ },
58
+ ],
59
+ },
60
+ {
61
+ source: '/(.*).png',
62
+ headers: [
63
+ {
64
+ key: 'Cache-Control',
65
+ value: 'public, max-age=31536000, immutable',
66
+ },
67
+ ],
68
+ },
69
+ {
70
+ source: '/(.*).svg',
71
+ headers: [
72
+ {
73
+ key: 'Cache-Control',
74
+ value: 'public, max-age=31536000, immutable',
75
+ },
76
+ ],
77
+ },
78
+ {
79
+ source: '/(.*).webp',
80
+ headers: [
81
+ {
82
+ key: 'Cache-Control',
83
+ value: 'public, max-age=31536000, immutable',
84
+ },
85
+ ],
86
+ },
87
+ {
88
+ source: '/_next/static/(.*)',
89
+ headers: [
90
+ {
91
+ key: 'Cache-Control',
92
+ value: 'public, max-age=31536000, immutable',
93
+ },
94
+ ],
95
+ },
96
+ ],
97
+ }
98
+
99
+ module.exports = nextConfig
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "{{#if startupName}}@{{startupName}}/{{appName}}{{else}}{{appName}}{{/if}}",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "description": "{{appName}}{{#if startupName}} ({{startupName}}){{/if}} - Built with Launch77 Platform",
6
+ "scripts": {
7
+ "dev": "next dev{{#if port}} -p {{port}}{{/if}}",
8
+ "build": "next build",
9
+ "start": "next start{{#if port}} -p {{port}}{{/if}}",
10
+ "test": "echo \"No tests configured\" && exit 0",
11
+ "lint": "next lint",
12
+ "typecheck": "tsc --noEmit"
13
+ },
14
+ "dependencies": {
15
+ "next": "^14.2.0",
16
+ "react": "^18.3.1",
17
+ "react-dom": "^18.3.1"
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^20.0.0",
21
+ "@types/react": "^18.2.79",
22
+ "@types/react-dom": "^18.2.25",
23
+ "autoprefixer": "^10.4.21",
24
+ "eslint": "^8.56.0",
25
+ "eslint-config-next": "^14.2.0",
26
+ "postcss": "^8.5.6",
27
+ "tailwindcss": "^3.4.17",
28
+ "typescript": "^5.3.0"
29
+ }
30
+ }
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ }
@@ -0,0 +1,24 @@
1
+ import type { Config } from 'tailwindcss'
2
+
3
+ const config: Config = {
4
+ content: [
5
+ './app/**/*.{js,ts,jsx,tsx,mdx}',
6
+ './components/**/*.{js,ts,jsx,tsx,mdx}',
7
+ './lib/**/*.{js,ts,jsx,tsx,mdx}',
8
+ ],
9
+ theme: {
10
+ extend: {
11
+ // Add your custom theme extensions here
12
+ // Example:
13
+ // colors: {
14
+ // brand: {
15
+ // 500: '#FF5816',
16
+ // 600: '#F03D00',
17
+ // },
18
+ // },
19
+ },
20
+ },
21
+ plugins: [],
22
+ }
23
+
24
+ export default config
@@ -0,0 +1,29 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "target": "ES2020",
5
+ "lib": ["dom", "dom.iterable", "esnext"],
6
+ "allowJs": true,
7
+ "skipLibCheck": true,
8
+ "strict": true,
9
+ "noEmit": true,
10
+ "esModuleInterop": true,
11
+ "module": "esnext",
12
+ "moduleResolution": "bundler",
13
+ "resolveJsonModule": true,
14
+ "isolatedModules": true,
15
+ "jsx": "preserve",
16
+ "incremental": true,
17
+ "plugins": [
18
+ {
19
+ "name": "next"
20
+ }
21
+ ],
22
+ "paths": {
23
+ "@/*": ["./*"]
24
+ },
25
+ "baseUrl": "."
26
+ },
27
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
28
+ "exclude": ["node_modules"]
29
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "buildCommand": "cd ../../../.. && npx turbo build --filter={{packageName}}",
3
+ "installCommand": "cd ../../../.. && npm install",
4
+ "outputDirectory": ".next",
5
+ "framework": "nextjs",
6
+ "ignoreCommand": "npx turbo-ignore"
7
+ }
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { createAppCommand, deleteAppCommand, generateManifestCommand, validateManifestCommand } from './modules/app/index.js';
4
+ import { scanCommand, createGenerateCommand } from './modules/catalog/index.js';
5
+ import { deployInitCommand, deployLogsCommand, deployStatusCommand } from './modules/deploy/index.js';
6
+ import { pluginInstallCommand } from './modules/plugin/index.js';
7
+ import { createStartupCommand } from './modules/startup/index.js';
8
+ import { getPackageVersion } from './utils/version.js';
9
+ import { initWorkspaceCommand } from './modules/workspace/index.js';
10
+ const program = new Command()
11
+ .name('launch77')
12
+ .description('Launch77 Platform CLI')
13
+ .version(getPackageVersion(import.meta.url));
14
+ // Register module commands
15
+ program.addCommand(initWorkspaceCommand());
16
+ program.addCommand(createStartupCommand());
17
+ program.addCommand(createAppCommand());
18
+ program.addCommand(deleteAppCommand());
19
+ program.addCommand(generateManifestCommand());
20
+ program.addCommand(validateManifestCommand());
21
+ program.addCommand(pluginInstallCommand());
22
+ program.addCommand(scanCommand());
23
+ program.addCommand(createGenerateCommand());
24
+ // Deploy commands
25
+ program.addCommand(deployInitCommand());
26
+ program.addCommand(deployStatusCommand());
27
+ program.addCommand(deployLogsCommand());
28
+ program.parse();
29
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAC7H,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,uBAAuB,CAAC;KACpC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAE9C,2BAA2B;AAC3B,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAA;AAC1C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAA;AAC1C,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAA;AACtC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAA;AACtC,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAA;AAC7C,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAA;AAC7C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAA;AAC1C,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAA;AAE3C,kBAAkB;AAClB,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACvC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAA;AACzC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAA;AAEvC,OAAO,CAAC,KAAK,EAAE,CAAA"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Check if a file or directory exists
3
+ */
4
+ export declare function exists(path: string): Promise<boolean>;
5
+ /**
6
+ * Ensure a directory exists, creating it if necessary
7
+ */
8
+ export declare function ensureDir(path: string): Promise<void>;
9
+ /**
10
+ * Write a file with content
11
+ */
12
+ export declare function writeFile(path: string, content: string): Promise<void>;
13
+ /**
14
+ * Write JSON to a file with formatting
15
+ */
16
+ export declare function writeJSON(path: string, data: unknown, spaces?: number): Promise<void>;
17
+ /**
18
+ * Read a file's content
19
+ */
20
+ export declare function readFile(path: string): Promise<string>;
21
+ /**
22
+ * Read JSON from a file
23
+ */
24
+ export declare function readJSON<T = unknown>(path: string): Promise<T>;
25
+ /**
26
+ * Copy a file or directory
27
+ */
28
+ export declare function copy(src: string, dest: string): Promise<void>;
29
+ /**
30
+ * Read directory contents
31
+ */
32
+ export declare function readdir(path: string): Promise<string[]>;
33
+ /**
34
+ * Read directory with file types
35
+ */
36
+ export declare function readdirWithTypes(path: string): Promise<Array<{
37
+ name: string;
38
+ isDirectory: boolean;
39
+ isFile: boolean;
40
+ }>>;
41
+ //# sourceMappingURL=filesystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/infrastructure/filesystem.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3D;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5E;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5D;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEpE;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE7D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAO5H"}
@@ -0,0 +1,61 @@
1
+ import fs from 'fs-extra';
2
+ /**
3
+ * Check if a file or directory exists
4
+ */
5
+ export async function exists(path) {
6
+ return fs.pathExists(path);
7
+ }
8
+ /**
9
+ * Ensure a directory exists, creating it if necessary
10
+ */
11
+ export async function ensureDir(path) {
12
+ await fs.ensureDir(path);
13
+ }
14
+ /**
15
+ * Write a file with content
16
+ */
17
+ export async function writeFile(path, content) {
18
+ await fs.writeFile(path, content, 'utf-8');
19
+ }
20
+ /**
21
+ * Write JSON to a file with formatting
22
+ */
23
+ export async function writeJSON(path, data, spaces = 2) {
24
+ await fs.writeJSON(path, data, { spaces });
25
+ }
26
+ /**
27
+ * Read a file's content
28
+ */
29
+ export async function readFile(path) {
30
+ return fs.readFile(path, 'utf-8');
31
+ }
32
+ /**
33
+ * Read JSON from a file
34
+ */
35
+ export async function readJSON(path) {
36
+ return fs.readJSON(path);
37
+ }
38
+ /**
39
+ * Copy a file or directory
40
+ */
41
+ export async function copy(src, dest) {
42
+ await fs.copy(src, dest);
43
+ }
44
+ /**
45
+ * Read directory contents
46
+ */
47
+ export async function readdir(path) {
48
+ return fs.readdir(path);
49
+ }
50
+ /**
51
+ * Read directory with file types
52
+ */
53
+ export async function readdirWithTypes(path) {
54
+ const entries = await fs.readdir(path, { withFileTypes: true });
55
+ return entries.map((entry) => ({
56
+ name: entry.name,
57
+ isDirectory: entry.isDirectory(),
58
+ isFile: entry.isFile(),
59
+ }));
60
+ }
61
+ //# sourceMappingURL=filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/infrastructure/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AAEzB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,OAAe;IAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,IAAa,EAAE,MAAM,GAAG,CAAC;IACrE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAc,IAAY;IACtD,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,IAAY;IAClD,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAY;IACxC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;QAChC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;KACvB,CAAC,CAAC,CAAA;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Run npm install in a directory
3
+ */
4
+ export declare function runNpmInstall(cwd: string): Promise<void>;
5
+ /**
6
+ * Alias for runNpmInstall
7
+ */
8
+ export declare function install(cwd: string): Promise<void>;
9
+ //# sourceMappingURL=npm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/infrastructure/npm.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9D;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD"}