@hubspot/cli 7.7.21-experimental.0 → 7.7.21-experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/api/__tests__/migrate.test.js +29 -27
  2. package/api/migrate.js +22 -14
  3. package/bin/cli.js +101 -92
  4. package/bin/hs +2 -2
  5. package/bin/hscms +2 -2
  6. package/bin/silenceErrors.js +2 -1
  7. package/commands/__tests__/account.test.js +34 -29
  8. package/commands/__tests__/auth.test.js +16 -11
  9. package/commands/__tests__/cms.test.js +20 -15
  10. package/commands/__tests__/config.test.js +19 -14
  11. package/commands/__tests__/create.test.js +15 -10
  12. package/commands/__tests__/customObject.test.js +19 -14
  13. package/commands/__tests__/doctor.test.js +48 -43
  14. package/commands/__tests__/feedback.test.js +45 -7
  15. package/commands/__tests__/fetch.test.js +28 -29
  16. package/commands/__tests__/filemanager.test.js +19 -14
  17. package/commands/__tests__/function.test.js +21 -16
  18. package/commands/__tests__/getStarted.test.js +50 -55
  19. package/commands/__tests__/hubdb.test.js +22 -17
  20. package/commands/__tests__/init.test.js +17 -12
  21. package/commands/__tests__/lint.test.js +18 -13
  22. package/commands/__tests__/list.test.js +23 -18
  23. package/commands/__tests__/logs.test.js +27 -28
  24. package/commands/__tests__/mcp.test.js +19 -14
  25. package/commands/__tests__/mv.test.js +52 -14
  26. package/commands/__tests__/open.test.js +51 -13
  27. package/commands/__tests__/project.test.js +49 -44
  28. package/commands/__tests__/remove.test.js +51 -13
  29. package/commands/__tests__/sandbox.test.js +19 -14
  30. package/commands/__tests__/secret.test.js +21 -16
  31. package/commands/__tests__/testAccount.test.js +21 -16
  32. package/commands/__tests__/theme.test.js +20 -15
  33. package/commands/account/__tests__/auth.test.js +16 -11
  34. package/commands/account/__tests__/clean.test.js +17 -12
  35. package/commands/account/__tests__/createOverride.test.js +15 -10
  36. package/commands/account/__tests__/info.test.js +16 -11
  37. package/commands/account/__tests__/list.test.js +16 -11
  38. package/commands/account/__tests__/remove.test.js +18 -13
  39. package/commands/account/__tests__/removeOverride.js +13 -8
  40. package/commands/account/__tests__/rename.test.js +20 -15
  41. package/commands/account/__tests__/use.test.js +15 -10
  42. package/commands/account/auth.d.ts +1 -1
  43. package/commands/account/auth.js +67 -65
  44. package/commands/account/clean.d.ts +1 -1
  45. package/commands/account/clean.js +60 -55
  46. package/commands/account/createOverride.d.ts +1 -1
  47. package/commands/account/createOverride.js +57 -52
  48. package/commands/account/info.d.ts +1 -1
  49. package/commands/account/info.js +35 -33
  50. package/commands/account/list.d.ts +1 -1
  51. package/commands/account/list.js +45 -43
  52. package/commands/account/remove.d.ts +1 -1
  53. package/commands/account/remove.js +42 -37
  54. package/commands/account/removeOverride.d.ts +1 -1
  55. package/commands/account/removeOverride.js +43 -38
  56. package/commands/account/rename.d.ts +1 -1
  57. package/commands/account/rename.js +20 -18
  58. package/commands/account/use.d.ts +1 -1
  59. package/commands/account/use.js +31 -29
  60. package/commands/account.d.ts +1 -1
  61. package/commands/account.js +28 -23
  62. package/commands/app/__tests__/install.test.js +52 -0
  63. package/commands/app/__tests__/migrate.test.js +34 -29
  64. package/commands/app/install.d.ts +8 -0
  65. package/commands/app/install.js +127 -0
  66. package/commands/app/migrate.d.ts +2 -2
  67. package/commands/app/migrate.js +43 -40
  68. package/commands/app/secret/__tests__/add.test.js +11 -6
  69. package/commands/app/secret/__tests__/delete.test.js +11 -6
  70. package/commands/app/secret/__tests__/list.test.js +11 -6
  71. package/commands/app/secret/__tests__/update.test.js +11 -6
  72. package/commands/app/secret/add.d.ts +1 -1
  73. package/commands/app/secret/add.js +30 -28
  74. package/commands/app/secret/delete.d.ts +1 -1
  75. package/commands/app/secret/delete.js +36 -34
  76. package/commands/app/secret/list.d.ts +1 -1
  77. package/commands/app/secret/list.js +27 -25
  78. package/commands/app/secret/update.d.ts +1 -1
  79. package/commands/app/secret/update.js +34 -32
  80. package/commands/app/secret.d.ts +1 -1
  81. package/commands/app/secret.js +17 -12
  82. package/commands/app.d.ts +1 -1
  83. package/commands/app.js +16 -6
  84. package/commands/auth.d.ts +1 -1
  85. package/commands/auth.js +72 -70
  86. package/commands/cms/convertFields.d.ts +1 -1
  87. package/commands/cms/convertFields.js +39 -34
  88. package/commands/cms/getReactModule.d.ts +1 -1
  89. package/commands/cms/getReactModule.js +37 -32
  90. package/commands/cms/lighthouseScore.d.ts +1 -1
  91. package/commands/cms/lighthouseScore.js +72 -67
  92. package/commands/cms.d.ts +1 -1
  93. package/commands/cms.js +16 -11
  94. package/commands/completion.d.ts +1 -1
  95. package/commands/completion.js +15 -10
  96. package/commands/config/migrate.d.ts +1 -1
  97. package/commands/config/migrate.js +32 -27
  98. package/commands/config/set.d.ts +1 -1
  99. package/commands/config/set.js +25 -23
  100. package/commands/config.d.ts +1 -1
  101. package/commands/config.js +13 -8
  102. package/commands/create/api-sample.d.ts +1 -1
  103. package/commands/create/api-sample.js +33 -28
  104. package/commands/create/app.d.ts +1 -1
  105. package/commands/create/app.js +5 -3
  106. package/commands/create/function.d.ts +1 -1
  107. package/commands/create/function.js +11 -9
  108. package/commands/create/index.d.ts +1 -1
  109. package/commands/create/index.js +24 -19
  110. package/commands/create/module.d.ts +1 -1
  111. package/commands/create/module.js +14 -12
  112. package/commands/create/react-app.d.ts +1 -1
  113. package/commands/create/react-app.js +5 -3
  114. package/commands/create/template.d.ts +1 -1
  115. package/commands/create/template.js +14 -12
  116. package/commands/create/vue-app.d.ts +1 -1
  117. package/commands/create/vue-app.js +5 -3
  118. package/commands/create/webpack-serverless.d.ts +1 -1
  119. package/commands/create/webpack-serverless.js +5 -3
  120. package/commands/create/website-theme.d.ts +1 -1
  121. package/commands/create/website-theme.js +7 -5
  122. package/commands/create.d.ts +2 -2
  123. package/commands/create.js +35 -30
  124. package/commands/customObject/__tests__/create.test.js +18 -13
  125. package/commands/customObject/__tests__/schema.test.js +23 -18
  126. package/commands/customObject/create.d.ts +1 -1
  127. package/commands/customObject/create.js +30 -28
  128. package/commands/customObject/schema/__tests__/create.test.js +18 -13
  129. package/commands/customObject/schema/__tests__/delete.test.js +18 -13
  130. package/commands/customObject/schema/__tests__/fetch-all.test.js +18 -13
  131. package/commands/customObject/schema/__tests__/fetch.test.js +18 -13
  132. package/commands/customObject/schema/__tests__/list.test.js +18 -13
  133. package/commands/customObject/schema/__tests__/update.test.js +18 -13
  134. package/commands/customObject/schema/create.d.ts +1 -1
  135. package/commands/customObject/schema/create.js +30 -28
  136. package/commands/customObject/schema/delete.d.ts +1 -1
  137. package/commands/customObject/schema/delete.js +26 -24
  138. package/commands/customObject/schema/fetch-all.d.ts +1 -1
  139. package/commands/customObject/schema/fetch-all.js +24 -22
  140. package/commands/customObject/schema/fetch.d.ts +1 -1
  141. package/commands/customObject/schema/fetch.js +26 -24
  142. package/commands/customObject/schema/list.d.ts +1 -1
  143. package/commands/customObject/schema/list.js +15 -13
  144. package/commands/customObject/schema/update.d.ts +1 -1
  145. package/commands/customObject/schema/update.js +34 -32
  146. package/commands/customObject/schema.d.ts +1 -1
  147. package/commands/customObject/schema.js +22 -17
  148. package/commands/customObject.d.ts +1 -1
  149. package/commands/customObject.js +18 -13
  150. package/commands/doctor.d.ts +1 -1
  151. package/commands/doctor.js +33 -28
  152. package/commands/feedback.d.ts +1 -1
  153. package/commands/feedback.js +24 -19
  154. package/commands/fetch.d.ts +1 -1
  155. package/commands/fetch.js +30 -28
  156. package/commands/filemanager/__tests__/fetch.test.js +22 -17
  157. package/commands/filemanager/__tests__/upload.test.js +20 -15
  158. package/commands/filemanager/fetch.d.ts +1 -1
  159. package/commands/filemanager/fetch.js +25 -23
  160. package/commands/filemanager/upload.d.ts +1 -1
  161. package/commands/filemanager/upload.js +44 -39
  162. package/commands/filemanager.d.ts +1 -1
  163. package/commands/filemanager.js +13 -8
  164. package/commands/function/deploy.d.ts +1 -1
  165. package/commands/function/deploy.js +40 -35
  166. package/commands/function/list.d.ts +1 -1
  167. package/commands/function/list.js +29 -24
  168. package/commands/function/server.d.ts +1 -1
  169. package/commands/function/server.js +17 -15
  170. package/commands/function.d.ts +1 -1
  171. package/commands/function.js +18 -12
  172. package/commands/getStarted.d.ts +1 -1
  173. package/commands/getStarted.js +131 -140
  174. package/commands/hubdb/__tests__/clear.test.js +18 -13
  175. package/commands/hubdb/__tests__/create.test.js +18 -13
  176. package/commands/hubdb/__tests__/delete.test.js +18 -13
  177. package/commands/hubdb/__tests__/fetch.test.js +18 -13
  178. package/commands/hubdb/__tests__/list.test.js +28 -23
  179. package/commands/hubdb/clear.d.ts +1 -1
  180. package/commands/hubdb/clear.js +22 -20
  181. package/commands/hubdb/create.d.ts +1 -1
  182. package/commands/hubdb/create.js +35 -30
  183. package/commands/hubdb/delete.d.ts +1 -1
  184. package/commands/hubdb/delete.js +26 -24
  185. package/commands/hubdb/fetch.d.ts +1 -1
  186. package/commands/hubdb/fetch.js +19 -17
  187. package/commands/hubdb/list.d.ts +1 -1
  188. package/commands/hubdb/list.js +35 -33
  189. package/commands/hubdb.d.ts +1 -1
  190. package/commands/hubdb.js +24 -18
  191. package/commands/init.d.ts +1 -1
  192. package/commands/init.js +88 -83
  193. package/commands/lint.d.ts +1 -1
  194. package/commands/lint.js +26 -24
  195. package/commands/list.d.ts +1 -1
  196. package/commands/list.js +37 -32
  197. package/commands/logs.d.ts +1 -1
  198. package/commands/logs.js +37 -35
  199. package/commands/mcp/__tests__/setup.test.js +12 -7
  200. package/commands/mcp/__tests__/start.test.js +12 -7
  201. package/commands/mcp/setup.d.ts +1 -1
  202. package/commands/mcp/setup.js +20 -17
  203. package/commands/mcp/start.d.ts +5 -2
  204. package/commands/mcp/start.js +41 -31
  205. package/commands/mcp.d.ts +1 -1
  206. package/commands/mcp.js +12 -7
  207. package/commands/module/marketplace-validate.d.ts +1 -1
  208. package/commands/module/marketplace-validate.js +26 -21
  209. package/commands/module.d.ts +1 -1
  210. package/commands/module.js +13 -7
  211. package/commands/mv.d.ts +1 -1
  212. package/commands/mv.js +22 -20
  213. package/commands/open.d.ts +1 -1
  214. package/commands/open.js +21 -19
  215. package/commands/project/__tests__/add.test.js +15 -10
  216. package/commands/project/__tests__/create.test.js +19 -14
  217. package/commands/project/__tests__/deploy.test.js +143 -103
  218. package/commands/project/__tests__/devUnifiedFlow.test.js +157 -148
  219. package/commands/project/__tests__/download.test.js +19 -14
  220. package/commands/project/__tests__/installDeps.test.js +70 -32
  221. package/commands/project/__tests__/listBuilds.test.js +19 -14
  222. package/commands/project/__tests__/logs.test.js +94 -56
  223. package/commands/project/__tests__/migrate.test.js +30 -25
  224. package/commands/project/__tests__/migrateApp.test.js +22 -17
  225. package/commands/project/__tests__/open.test.js +21 -16
  226. package/commands/project/__tests__/profile.test.js +19 -14
  227. package/commands/project/__tests__/upload.test.js +23 -18
  228. package/commands/project/__tests__/watch.test.js +19 -14
  229. package/commands/project/add.d.ts +1 -1
  230. package/commands/project/add.js +36 -34
  231. package/commands/project/cloneApp.d.ts +1 -1
  232. package/commands/project/cloneApp.js +72 -67
  233. package/commands/project/create.d.ts +2 -2
  234. package/commands/project/create.js +68 -63
  235. package/commands/project/deploy.d.ts +3 -2
  236. package/commands/project/deploy.js +102 -91
  237. package/commands/project/dev/deprecatedFlow.d.ts +2 -2
  238. package/commands/project/dev/deprecatedFlow.js +58 -52
  239. package/commands/project/dev/index.d.ts +1 -1
  240. package/commands/project/dev/index.js +47 -44
  241. package/commands/project/dev/unifiedFlow.d.ts +3 -3
  242. package/commands/project/dev/unifiedFlow.js +74 -67
  243. package/commands/project/download.d.ts +1 -1
  244. package/commands/project/download.js +40 -35
  245. package/commands/project/installDeps.d.ts +1 -1
  246. package/commands/project/installDeps.js +34 -29
  247. package/commands/project/listBuilds.d.ts +1 -1
  248. package/commands/project/listBuilds.js +45 -40
  249. package/commands/project/logs.d.ts +1 -1
  250. package/commands/project/logs.js +54 -52
  251. package/commands/project/migrate.d.ts +1 -1
  252. package/commands/project/migrate.js +26 -24
  253. package/commands/project/migrateApp.d.ts +2 -2
  254. package/commands/project/migrateApp.js +20 -18
  255. package/commands/project/open.d.ts +1 -1
  256. package/commands/project/open.js +30 -25
  257. package/commands/project/profile/add.d.ts +1 -1
  258. package/commands/project/profile/add.js +73 -68
  259. package/commands/project/profile/delete.d.ts +1 -1
  260. package/commands/project/profile/delete.js +56 -51
  261. package/commands/project/profile.d.ts +1 -1
  262. package/commands/project/profile.js +14 -9
  263. package/commands/project/upload.d.ts +1 -1
  264. package/commands/project/upload.js +55 -50
  265. package/commands/project/validate.d.ts +1 -1
  266. package/commands/project/validate.js +40 -35
  267. package/commands/project/watch.d.ts +1 -1
  268. package/commands/project/watch.js +61 -59
  269. package/commands/project.d.ts +1 -1
  270. package/commands/project.js +43 -38
  271. package/commands/remove.d.ts +1 -1
  272. package/commands/remove.js +17 -15
  273. package/commands/sandbox/__tests__/create.test.js +20 -15
  274. package/commands/sandbox/__tests__/delete.test.js +20 -15
  275. package/commands/sandbox/create.d.ts +1 -1
  276. package/commands/sandbox/create.js +69 -67
  277. package/commands/sandbox/delete.d.ts +1 -1
  278. package/commands/sandbox/delete.js +96 -94
  279. package/commands/sandbox.d.ts +1 -1
  280. package/commands/sandbox.js +14 -9
  281. package/commands/secret/__tests__/addSecret.test.js +18 -13
  282. package/commands/secret/__tests__/deleteSecret.test.js +18 -13
  283. package/commands/secret/__tests__/listSecret.test.js +18 -13
  284. package/commands/secret/__tests__/updateSecret.test.js +18 -13
  285. package/commands/secret/addSecret.d.ts +1 -1
  286. package/commands/secret/addSecret.js +28 -26
  287. package/commands/secret/deleteSecret.d.ts +1 -1
  288. package/commands/secret/deleteSecret.js +29 -27
  289. package/commands/secret/listSecret.d.ts +1 -1
  290. package/commands/secret/listSecret.js +21 -19
  291. package/commands/secret/updateSecret.d.ts +1 -1
  292. package/commands/secret/updateSecret.js +27 -25
  293. package/commands/secret.d.ts +1 -1
  294. package/commands/secret.js +18 -13
  295. package/commands/testAccount/__tests__/create.test.js +22 -17
  296. package/commands/testAccount/__tests__/createConfig.test.js +11 -9
  297. package/commands/testAccount/__tests__/delete.test.js +20 -15
  298. package/commands/testAccount/create.d.ts +1 -1
  299. package/commands/testAccount/create.js +57 -62
  300. package/commands/testAccount/createConfig.d.ts +1 -3
  301. package/commands/testAccount/createConfig.js +47 -43
  302. package/commands/testAccount/delete.d.ts +1 -1
  303. package/commands/testAccount/delete.js +19 -17
  304. package/commands/testAccount.d.ts +1 -1
  305. package/commands/testAccount.js +15 -10
  306. package/commands/theme/__tests__/generate-selectors.test.js +12 -7
  307. package/commands/theme/__tests__/marketplace-validate.test.js +19 -14
  308. package/commands/theme/__tests__/preview.test.js +17 -12
  309. package/commands/theme/generate-selectors.d.ts +1 -1
  310. package/commands/theme/generate-selectors.js +28 -23
  311. package/commands/theme/marketplace-validate.d.ts +1 -1
  312. package/commands/theme/marketplace-validate.js +24 -19
  313. package/commands/theme/preview.d.ts +1 -1
  314. package/commands/theme/preview.js +65 -60
  315. package/commands/theme.d.ts +1 -1
  316. package/commands/theme.js +16 -11
  317. package/commands/upload.d.ts +1 -1
  318. package/commands/upload.js +82 -77
  319. package/commands/watch.d.ts +1 -1
  320. package/commands/watch.js +51 -45
  321. package/lang/en.d.ts +62 -23
  322. package/lang/en.js +434 -389
  323. package/lang/en.lyaml +0 -26
  324. package/lib/__tests__/accountTypes.test.js +22 -20
  325. package/lib/__tests__/buildAccount.test.js +90 -27
  326. package/lib/__tests__/commonOpts.test.js +22 -20
  327. package/lib/__tests__/dependencyManagement.test.js +51 -46
  328. package/lib/__tests__/developerTestAccounts.test.js +62 -27
  329. package/lib/__tests__/hasFeature.test.js +8 -6
  330. package/lib/__tests__/npm.test.js +20 -15
  331. package/lib/__tests__/oauth.test.js +28 -23
  332. package/lib/__tests__/parsing.test.js +20 -18
  333. package/lib/__tests__/polling.test.js +26 -24
  334. package/lib/__tests__/process.test.js +19 -14
  335. package/lib/__tests__/projectProfiles.test.js +39 -34
  336. package/lib/__tests__/sandboxSync.test.js +35 -30
  337. package/lib/__tests__/sandboxes.test.js +31 -29
  338. package/lib/__tests__/serverlessLogs.test.js +13 -8
  339. package/lib/__tests__/usageTracking.test.js +42 -47
  340. package/lib/__tests__/validation.test.js +20 -18
  341. package/lib/__tests__/yargsUtils.test.js +41 -6
  342. package/lib/accountTypes.js +34 -24
  343. package/lib/app/__tests__/migrate.test.js +99 -94
  344. package/lib/app/__tests__/migrate_legacy.test.js +31 -29
  345. package/lib/app/migrate.d.ts +3 -3
  346. package/lib/app/migrate.js +145 -127
  347. package/lib/app/migrate_legacy.d.ts +1 -1
  348. package/lib/app/migrate_legacy.js +78 -72
  349. package/lib/app/urls.js +9 -5
  350. package/lib/buildAccount.d.ts +8 -2
  351. package/lib/buildAccount.js +119 -61
  352. package/lib/commonOpts.d.ts +1 -1
  353. package/lib/commonOpts.js +59 -42
  354. package/lib/configMigrate.js +38 -34
  355. package/lib/configOptions.js +40 -34
  356. package/lib/constants.js +34 -31
  357. package/lib/customObject.js +6 -2
  358. package/lib/dependencyManagement.js +45 -37
  359. package/lib/developerTestAccounts.d.ts +1 -1
  360. package/lib/developerTestAccounts.js +39 -34
  361. package/lib/doctor/Diagnosis.d.ts +1 -1
  362. package/lib/doctor/Diagnosis.js +29 -25
  363. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  364. package/lib/doctor/DiagnosticInfoBuilder.js +37 -30
  365. package/lib/doctor/Doctor.d.ts +1 -1
  366. package/lib/doctor/Doctor.js +101 -94
  367. package/lib/doctor/__tests__/Diagnosis.test.js +14 -9
  368. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +34 -29
  369. package/lib/doctor/__tests__/Doctor.test.js +26 -24
  370. package/lib/enums/exitCodes.js +4 -1
  371. package/lib/errorHandlers/index.js +41 -32
  372. package/lib/errorHandlers/suppressError.d.ts +1 -1
  373. package/lib/errorHandlers/suppressError.js +31 -28
  374. package/lib/filesystem.js +15 -8
  375. package/lib/generateSelectors.js +29 -18
  376. package/lib/hasFeature.d.ts +1 -1
  377. package/lib/hasFeature.js +6 -3
  378. package/lib/interpolation.js +18 -11
  379. package/lib/lang.d.ts +1 -1
  380. package/lib/lang.js +27 -22
  381. package/lib/links.js +24 -16
  382. package/lib/marketplaceValidate.js +39 -29
  383. package/lib/mcp/setup.js +105 -72
  384. package/lib/middleware/__test__/configMiddleware.test.js +55 -20
  385. package/lib/middleware/__test__/gitMiddleware.test.js +42 -7
  386. package/lib/middleware/__test__/notificationsMiddleware.test.js +4 -2
  387. package/lib/middleware/__test__/requestMiddleware.test.js +11 -6
  388. package/lib/middleware/__test__/utils.test.js +11 -9
  389. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +44 -9
  390. package/lib/middleware/autoUpdateMiddleware.js +40 -33
  391. package/lib/middleware/configMiddleware.js +42 -36
  392. package/lib/middleware/fireAlarmMiddleware.js +18 -12
  393. package/lib/middleware/gitMiddleware.js +8 -5
  394. package/lib/middleware/notificationsMiddleware.js +23 -16
  395. package/lib/middleware/requestMiddleware.js +10 -4
  396. package/lib/middleware/utils.js +4 -1
  397. package/lib/middleware/yargsChecksMiddleware.js +13 -10
  398. package/lib/npm.js +23 -14
  399. package/lib/oauth.js +35 -29
  400. package/lib/parsing.js +6 -3
  401. package/lib/polling.js +15 -11
  402. package/lib/process.js +19 -11
  403. package/lib/projectProfiles.d.ts +2 -2
  404. package/lib/projectProfiles.js +42 -32
  405. package/lib/projects/ProjectLogsManager.js +21 -18
  406. package/lib/projects/__tests__/AppDevModeInterface.test.js +145 -140
  407. package/lib/projects/__tests__/LocalDevProcess.test.js +73 -68
  408. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +37 -32
  409. package/lib/projects/__tests__/ProjectLogsManager.test.js +58 -56
  410. package/lib/projects/__tests__/buildAndDeploy.test.js +9 -7
  411. package/lib/projects/__tests__/components.test.js +14 -9
  412. package/lib/projects/__tests__/projects.test.js +40 -35
  413. package/lib/projects/__tests__/structure.test.js +81 -43
  414. package/lib/projects/add/__tests__/legacyAddComponent.test.js +28 -26
  415. package/lib/projects/add/__tests__/v3AddComponent.test.js +30 -25
  416. package/lib/projects/add/legacyAddComponent.d.ts +1 -1
  417. package/lib/projects/add/legacyAddComponent.js +30 -24
  418. package/lib/projects/add/v3AddComponent.d.ts +1 -1
  419. package/lib/projects/add/v3AddComponent.js +42 -36
  420. package/lib/projects/buildAndDeploy.d.ts +1 -1
  421. package/lib/projects/buildAndDeploy.js +97 -88
  422. package/lib/projects/components.js +25 -19
  423. package/lib/projects/config.d.ts +1 -1
  424. package/lib/projects/config.js +41 -32
  425. package/lib/projects/create/__tests__/legacy.test.js +57 -22
  426. package/lib/projects/create/__tests__/v3.test.js +7 -5
  427. package/lib/projects/create/index.d.ts +3 -3
  428. package/lib/projects/create/index.js +22 -19
  429. package/lib/projects/create/legacy.d.ts +1 -1
  430. package/lib/projects/create/legacy.js +31 -25
  431. package/lib/projects/create/v3.d.ts +3 -3
  432. package/lib/projects/create/v3.js +59 -49
  433. package/lib/projects/ensureProjectExists.js +37 -31
  434. package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
  435. package/lib/projects/localDev/AppDevModeInterface.js +60 -58
  436. package/lib/projects/localDev/DevServerManager.d.ts +1 -1
  437. package/lib/projects/localDev/DevServerManager.js +24 -24
  438. package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
  439. package/lib/projects/localDev/DevServerManagerV2.js +20 -17
  440. package/lib/projects/localDev/LocalDevLogger.d.ts +1 -1
  441. package/lib/projects/localDev/LocalDevLogger.js +64 -59
  442. package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
  443. package/lib/projects/localDev/LocalDevManager.js +111 -106
  444. package/lib/projects/localDev/LocalDevProcess.d.ts +4 -4
  445. package/lib/projects/localDev/LocalDevProcess.js +30 -25
  446. package/lib/projects/localDev/LocalDevState.d.ts +3 -3
  447. package/lib/projects/localDev/LocalDevState.js +5 -3
  448. package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
  449. package/lib/projects/localDev/LocalDevWatcher.js +11 -6
  450. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +1 -1
  451. package/lib/projects/localDev/LocalDevWebsocketServer.js +27 -25
  452. package/lib/projects/localDev/helpers.d.ts +4 -4
  453. package/lib/projects/localDev/helpers.js +174 -156
  454. package/lib/projects/structure.d.ts +4 -4
  455. package/lib/projects/structure.js +78 -32
  456. package/lib/projects/ui.js +13 -10
  457. package/lib/projects/upload.d.ts +3 -2
  458. package/lib/projects/upload.js +65 -55
  459. package/lib/projects/urls.js +24 -14
  460. package/lib/projects/watch.d.ts +1 -1
  461. package/lib/projects/watch.js +54 -48
  462. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +11 -9
  463. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +16 -11
  464. package/lib/prompts/accountNamePrompt.d.ts +1 -1
  465. package/lib/prompts/accountNamePrompt.js +31 -26
  466. package/lib/prompts/accountsPrompt.js +15 -12
  467. package/lib/prompts/cmsFieldPrompt.js +19 -13
  468. package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
  469. package/lib/prompts/createApiSamplePrompt.js +12 -9
  470. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +11 -10
  471. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +88 -43
  472. package/lib/prompts/createFunctionPrompt.js +20 -17
  473. package/lib/prompts/createModulePrompt.js +15 -12
  474. package/lib/prompts/createTemplatePrompt.js +8 -5
  475. package/lib/prompts/downloadProjectPrompt.js +20 -17
  476. package/lib/prompts/installAppPrompt.js +26 -19
  477. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
  478. package/lib/prompts/personalAccessKeyPrompt.js +47 -40
  479. package/lib/prompts/previewPrompt.js +22 -15
  480. package/lib/prompts/projectAddPrompt.d.ts +1 -1
  481. package/lib/prompts/projectAddPrompt.js +18 -14
  482. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
  483. package/lib/prompts/projectDevTargetAccountPrompt.js +54 -48
  484. package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
  485. package/lib/prompts/projectNameAndDestPrompt.js +29 -22
  486. package/lib/prompts/projectNamePrompt.js +14 -11
  487. package/lib/prompts/projectsLogsPrompt.js +8 -5
  488. package/lib/prompts/promptUtils.d.ts +1 -1
  489. package/lib/prompts/promptUtils.js +87 -70
  490. package/lib/prompts/sandboxesPrompt.d.ts +1 -1
  491. package/lib/prompts/sandboxesPrompt.js +30 -26
  492. package/lib/prompts/secretPrompt.js +15 -10
  493. package/lib/prompts/selectAppPrompt.js +14 -11
  494. package/lib/prompts/selectHubDBTablePrompt.js +30 -24
  495. package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
  496. package/lib/prompts/selectProjectTemplatePrompt.js +13 -10
  497. package/lib/prompts/selectPublicAppForMigrationPrompt.js +25 -22
  498. package/lib/prompts/setAsDefaultAccountPrompt.js +16 -13
  499. package/lib/prompts/uploadPrompt.js +17 -11
  500. package/lib/sandboxSync.d.ts +1 -1
  501. package/lib/sandboxSync.js +65 -58
  502. package/lib/sandboxes.d.ts +1 -1
  503. package/lib/sandboxes.js +76 -68
  504. package/lib/schema.js +23 -12
  505. package/lib/serverlessLogs.js +52 -45
  506. package/lib/testUtils.js +8 -4
  507. package/lib/ui/SpinniesManager.d.ts +1 -1
  508. package/lib/ui/SpinniesManager.js +34 -29
  509. package/lib/ui/boxen.js +14 -11
  510. package/lib/ui/git.js +20 -14
  511. package/lib/ui/index.js +74 -56
  512. package/lib/ui/logger.js +13 -10
  513. package/lib/ui/serverlessFunctionLogs.js +20 -14
  514. package/lib/ui/spinniesUtils.js +39 -24
  515. package/lib/ui/supportHyperlinks.js +6 -3
  516. package/lib/ui/supportsColor.js +17 -11
  517. package/lib/ui/table.js +13 -6
  518. package/lib/upload.js +21 -15
  519. package/lib/usageTracking.d.ts +11 -0
  520. package/lib/usageTracking.js +95 -95
  521. package/lib/utils/hasFlag.js +8 -2
  522. package/lib/validation.js +87 -48
  523. package/lib/yargsUtils.d.ts +1 -1
  524. package/lib/yargsUtils.js +16 -13
  525. package/mcp-server/server.js +8 -6
  526. package/mcp-server/tools/index.js +16 -13
  527. package/mcp-server/tools/project/AddFeatureToProject.d.ts +1 -1
  528. package/mcp-server/tools/project/AddFeatureToProject.js +41 -34
  529. package/mcp-server/tools/project/CreateProjectTool.d.ts +3 -3
  530. package/mcp-server/tools/project/CreateProjectTool.js +52 -45
  531. package/mcp-server/tools/project/DeployProject.d.ts +1 -1
  532. package/mcp-server/tools/project/DeployProject.js +24 -17
  533. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
  534. package/mcp-server/tools/project/GuidedWalkthroughTool.js +27 -20
  535. package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
  536. package/mcp-server/tools/project/UploadProjectTools.js +21 -11
  537. package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
  538. package/mcp-server/tools/project/ValidateProjectTool.js +19 -12
  539. package/mcp-server/tools/project/__tests__/AddFeatureToProject.test.js +15 -12
  540. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +16 -13
  541. package/mcp-server/tools/project/__tests__/DeployProject.test.js +9 -6
  542. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +7 -4
  543. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +7 -4
  544. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +7 -4
  545. package/mcp-server/tools/project/constants.js +9 -3
  546. package/mcp-server/types.js +5 -1
  547. package/mcp-server/utils/__tests__/command.test.js +11 -9
  548. package/mcp-server/utils/__tests__/project.test.js +26 -18
  549. package/mcp-server/utils/command.d.ts +1 -1
  550. package/mcp-server/utils/command.js +11 -4
  551. package/mcp-server/utils/content.d.ts +1 -1
  552. package/mcp-server/utils/content.js +6 -2
  553. package/mcp-server/utils/project.js +17 -8
  554. package/mcp-server/utils/toolUsageTracking.d.ts +1 -0
  555. package/mcp-server/utils/toolUsageTracking.js +25 -0
  556. package/package.json +13 -17
  557. package/types/{cms.d.ts → Cms.d.ts} +1 -1
  558. package/types/Cms.js +2 -0
  559. package/types/LocalDev.d.ts +4 -4
  560. package/types/LocalDev.js +2 -1
  561. package/types/ProjectComponents.d.ts +2 -2
  562. package/types/ProjectComponents.js +2 -1
  563. package/types/Projects.d.ts +1 -1
  564. package/types/Projects.js +5 -2
  565. package/types/Prompts.js +2 -1
  566. package/types/Sandboxes.js +2 -0
  567. package/types/Yargs.js +2 -1
  568. package/types/sandboxes.js +0 -1
  569. /package/{types/cms.js → commands/app/__tests__/install.test.d.ts} +0 -0
  570. /package/types/{sandboxes.d.ts → Sandboxes.d.ts} +0 -0
@@ -1,7 +1,12 @@
1
- import fs from 'fs';
2
- import { handleComponentCollision } from '../components.js';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const components_1 = require("../components");
3
8
  vi.mock('fs');
4
- const mockedFs = vi.mocked(fs);
9
+ const mockedFs = vi.mocked(fs_1.default);
5
10
  describe('lib/projects/components', () => {
6
11
  describe('handleComponentCollision()', () => {
7
12
  const mockCollision = {
@@ -23,7 +28,7 @@ describe('lib/projects/components', () => {
23
28
  collisions: ['component.js', 'utils.ts'],
24
29
  };
25
30
  mockedFs.copyFileSync.mockImplementation(() => { });
26
- handleComponentCollision(collision);
31
+ (0, components_1.handleComponentCollision)(collision);
27
32
  expect(mockedFs.copyFileSync).toHaveBeenCalledTimes(2);
28
33
  expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/component.js', '/dest/path/component-1234567890.js');
29
34
  expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/utils.ts', '/dest/path/utils-1234567890.ts');
@@ -45,7 +50,7 @@ describe('lib/projects/components', () => {
45
50
  value: '.module.meta.json',
46
51
  writable: false,
47
52
  });
48
- handleComponentCollision(collision);
53
+ (0, components_1.handleComponentCollision)(collision);
49
54
  expect(mockedFs.readFileSync).toHaveBeenCalledWith('/src/path/component.module.meta.json', 'utf-8');
50
55
  expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/dest/path/component-1234567890.module.meta.json', expect.stringContaining('source-1234567890.js'));
51
56
  expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/source.js', '/dest/path/source-1234567890.js');
@@ -82,7 +87,7 @@ describe('lib/projects/components', () => {
82
87
  mockedFs.writeFileSync.mockImplementation(() => { });
83
88
  // Mock console.log to avoid output during tests
84
89
  const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
85
- handleComponentCollision(collision);
90
+ (0, components_1.handleComponentCollision)(collision);
86
91
  const expectedMergedPackageJson = {
87
92
  name: 'existing-package',
88
93
  dependencies: {
@@ -126,7 +131,7 @@ describe('lib/projects/components', () => {
126
131
  writable: false,
127
132
  });
128
133
  const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
129
- handleComponentCollision(collision);
134
+ (0, components_1.handleComponentCollision)(collision);
130
135
  // Verify source files are copied with new names
131
136
  expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/component.js', '/dest/path/component-1234567890.js');
132
137
  expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/utils.ts', '/dest/path/utils-1234567890.ts');
@@ -141,7 +146,7 @@ describe('lib/projects/components', () => {
141
146
  ...mockCollision,
142
147
  collisions: [],
143
148
  };
144
- handleComponentCollision(collision);
149
+ (0, components_1.handleComponentCollision)(collision);
145
150
  expect(mockedFs.copyFileSync).not.toHaveBeenCalled();
146
151
  expect(mockedFs.readFileSync).not.toHaveBeenCalled();
147
152
  expect(mockedFs.writeFileSync).not.toHaveBeenCalled();
@@ -169,7 +174,7 @@ describe('lib/projects/components', () => {
169
174
  mockedFs.copyFileSync.mockImplementation(() => { });
170
175
  // Mock console.log for package.json handling
171
176
  const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
172
- handleComponentCollision(collision);
177
+ (0, components_1.handleComponentCollision)(collision);
173
178
  // Should copy 2 source files
174
179
  expect(mockedFs.copyFileSync).toHaveBeenCalledTimes(2);
175
180
  // Should handle 2 metafiles
@@ -1,17 +1,22 @@
1
- import fs from 'fs';
2
- import os from 'os';
3
- import path from 'path';
4
- import { EXIT_CODES } from '../../enums/exitCodes.js';
5
- import { validateProjectConfig } from '../../projects/config.js';
6
- import { logger } from '@hubspot/local-dev-lib/logger';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const os_1 = __importDefault(require("os"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const exitCodes_1 = require("../../enums/exitCodes");
10
+ const config_1 = require("../../projects/config");
11
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
7
12
  vi.mock('@hubspot/local-dev-lib/logger');
8
13
  describe('lib/projects', () => {
9
14
  describe('validateProjectConfig()', () => {
10
15
  let projectDir;
11
16
  let exitMock;
12
17
  beforeAll(() => {
13
- projectDir = fs.mkdtempSync(path.join(os.tmpdir(), 'projects-'));
14
- fs.mkdirSync(path.join(projectDir, 'src'));
18
+ projectDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'projects-'));
19
+ fs_1.default.mkdirSync(path_1.default.join(projectDir, 'src'));
15
20
  });
16
21
  beforeEach(() => {
17
22
  // @ts-expect-error - Mocking process.exit
@@ -24,60 +29,60 @@ describe('lib/projects', () => {
24
29
  });
25
30
  it('rejects undefined configuration', () => {
26
31
  // @ts-ignore Testing invalid input
27
- validateProjectConfig(null, projectDir);
28
- expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
29
- expect(logger.error).toHaveBeenCalledWith(expect.stringMatching(/.*Unable to locate a project configuration file. Try running again from a project directory, or run*/));
32
+ (0, config_1.validateProjectConfig)(null, projectDir);
33
+ expect(exitMock).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
34
+ expect(logger_1.logger.error).toHaveBeenCalledWith(expect.stringMatching(/.*Unable to locate a project configuration file. Try running again from a project directory, or run*/));
30
35
  });
31
36
  it('rejects configuration with missing name', () => {
32
37
  // @ts-ignore Testing invalid input
33
- validateProjectConfig({ srcDir: '.' }, projectDir);
34
- expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
35
- expect(logger.error).toHaveBeenCalledWith(expect.stringMatching(/.*missing required fields*/));
38
+ (0, config_1.validateProjectConfig)({ srcDir: '.' }, projectDir);
39
+ expect(exitMock).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
40
+ expect(logger_1.logger.error).toHaveBeenCalledWith(expect.stringMatching(/.*missing required fields*/));
36
41
  });
37
42
  it('rejects configuration with missing srcDir', () => {
38
43
  // @ts-ignore Testing invalid input
39
- validateProjectConfig({ name: 'hello' }, projectDir);
40
- expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
41
- expect(logger.error).toHaveBeenCalledWith(expect.stringMatching(/.*missing required fields.*/));
44
+ (0, config_1.validateProjectConfig)({ name: 'hello' }, projectDir);
45
+ expect(exitMock).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
46
+ expect(logger_1.logger.error).toHaveBeenCalledWith(expect.stringMatching(/.*missing required fields.*/));
42
47
  });
43
48
  describe('rejects configuration with srcDir outside project directory', () => {
44
49
  it('for parent directory', () => {
45
- validateProjectConfig({ name: 'hello', srcDir: '..', platformVersion: '' }, projectDir);
46
- expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
47
- expect(logger.error).toHaveBeenCalledWith(expect.stringContaining('srcDir: ".."'));
50
+ (0, config_1.validateProjectConfig)({ name: 'hello', srcDir: '..', platformVersion: '' }, projectDir);
51
+ expect(exitMock).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
52
+ expect(logger_1.logger.error).toHaveBeenCalledWith(expect.stringContaining('srcDir: ".."'));
48
53
  });
49
54
  it('for root directory', () => {
50
- validateProjectConfig({ name: 'hello', srcDir: '/', platformVersion: '' }, projectDir);
51
- expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
52
- expect(logger.error).toHaveBeenCalledWith(expect.stringContaining('srcDir: "/"'));
55
+ (0, config_1.validateProjectConfig)({ name: 'hello', srcDir: '/', platformVersion: '' }, projectDir);
56
+ expect(exitMock).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
57
+ expect(logger_1.logger.error).toHaveBeenCalledWith(expect.stringContaining('srcDir: "/"'));
53
58
  });
54
59
  it('for complicated directory', () => {
55
60
  const srcDir = './src/././../src/../../src';
56
- validateProjectConfig({ name: 'hello', srcDir, platformVersion: '' }, projectDir);
57
- expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
58
- expect(logger.error).toHaveBeenCalledWith(expect.stringContaining(`srcDir: "${srcDir}"`));
61
+ (0, config_1.validateProjectConfig)({ name: 'hello', srcDir, platformVersion: '' }, projectDir);
62
+ expect(exitMock).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
63
+ expect(logger_1.logger.error).toHaveBeenCalledWith(expect.stringContaining(`srcDir: "${srcDir}"`));
59
64
  });
60
65
  });
61
66
  it('rejects configuration with srcDir that does not exist', () => {
62
- validateProjectConfig({ name: 'hello', srcDir: 'foo', platformVersion: '' }, projectDir);
63
- expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
64
- expect(logger.error).toHaveBeenCalledWith(expect.stringMatching(/.*could not be found in.*/));
67
+ (0, config_1.validateProjectConfig)({ name: 'hello', srcDir: 'foo', platformVersion: '' }, projectDir);
68
+ expect(exitMock).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
69
+ expect(logger_1.logger.error).toHaveBeenCalledWith(expect.stringMatching(/.*could not be found in.*/));
65
70
  });
66
71
  describe('accepts configuration with valid srcDir', () => {
67
72
  it('for current directory', () => {
68
- validateProjectConfig({ name: 'hello', srcDir: '.', platformVersion: '' }, projectDir);
73
+ (0, config_1.validateProjectConfig)({ name: 'hello', srcDir: '.', platformVersion: '' }, projectDir);
69
74
  expect(exitMock).not.toHaveBeenCalled();
70
- expect(logger.error).not.toHaveBeenCalled();
75
+ expect(logger_1.logger.error).not.toHaveBeenCalled();
71
76
  });
72
77
  it('for relative directory', () => {
73
- validateProjectConfig({ name: 'hello', srcDir: './src', platformVersion: '' }, projectDir);
78
+ (0, config_1.validateProjectConfig)({ name: 'hello', srcDir: './src', platformVersion: '' }, projectDir);
74
79
  expect(exitMock).not.toHaveBeenCalled();
75
- expect(logger.error).not.toHaveBeenCalled();
80
+ expect(logger_1.logger.error).not.toHaveBeenCalled();
76
81
  });
77
82
  it('for implied relative directory', () => {
78
- validateProjectConfig({ name: 'hello', srcDir: 'src', platformVersion: '' }, projectDir);
83
+ (0, config_1.validateProjectConfig)({ name: 'hello', srcDir: 'src', platformVersion: '' }, projectDir);
79
84
  expect(exitMock).not.toHaveBeenCalled();
80
- expect(logger.error).not.toHaveBeenCalled();
85
+ expect(logger_1.logger.error).not.toHaveBeenCalled();
81
86
  });
82
87
  });
83
88
  });
@@ -1,12 +1,50 @@
1
- import fs from 'fs';
2
- import * as HSfs from '@hubspot/local-dev-lib/fs';
3
- import { logger } from '@hubspot/local-dev-lib/logger';
4
- import { getComponentTypeFromConfigFile, loadConfigFile, getAppCardConfigs, getIsLegacyApp, componentIsApp, findProjectComponents, getProjectComponentTypes, getComponentUid, componentIsPublicApp, } from '../structure.js';
5
- import { ComponentTypes } from '../../../types/Projects.js';
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const fs_1 = __importDefault(require("fs"));
40
+ const HSfs = __importStar(require("@hubspot/local-dev-lib/fs"));
41
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
42
+ const structure_1 = require("../structure");
43
+ const Projects_1 = require("../../../types/Projects");
6
44
  vi.mock('fs');
7
45
  vi.mock('@hubspot/local-dev-lib/fs');
8
46
  vi.mock('@hubspot/local-dev-lib/logger');
9
- const mockedReadFileSync = fs.readFileSync;
47
+ const mockedReadFileSync = fs_1.default.readFileSync;
10
48
  const mockedWalk = HSfs.walk;
11
49
  const getMockPrivateAppConfig = (cards = []) => ({
12
50
  name: 'test-app',
@@ -23,43 +61,43 @@ const getMockPrivateAppConfig = (cards = []) => ({
23
61
  describe('lib/projects/structure', () => {
24
62
  describe('getComponentTypeFromConfigFile()', () => {
25
63
  it('returns correct type for public app config', () => {
26
- expect(getComponentTypeFromConfigFile('public-app.json')).toBe(ComponentTypes.PublicApp);
64
+ expect((0, structure_1.getComponentTypeFromConfigFile)('public-app.json')).toBe(Projects_1.ComponentTypes.PublicApp);
27
65
  });
28
66
  it('returns correct type for private app config', () => {
29
- expect(getComponentTypeFromConfigFile('app.json')).toBe(ComponentTypes.PrivateApp);
67
+ expect((0, structure_1.getComponentTypeFromConfigFile)('app.json')).toBe(Projects_1.ComponentTypes.PrivateApp);
30
68
  });
31
69
  it('returns correct type for theme config', () => {
32
- expect(getComponentTypeFromConfigFile('theme.json')).toBe(ComponentTypes.HublTheme);
70
+ expect((0, structure_1.getComponentTypeFromConfigFile)('theme.json')).toBe(Projects_1.ComponentTypes.HublTheme);
33
71
  });
34
72
  it('returns null for unknown config file', () => {
35
- expect(getComponentTypeFromConfigFile('unknown.json')).toBeNull();
73
+ expect((0, structure_1.getComponentTypeFromConfigFile)('unknown.json')).toBeNull();
36
74
  });
37
75
  });
38
76
  describe('loadConfigFile()', () => {
39
77
  it('returns parsed JSON when file exists', () => {
40
78
  const mockConfig = { name: 'test-app' };
41
79
  mockedReadFileSync.mockReturnValue(JSON.stringify(mockConfig));
42
- expect(loadConfigFile('test/path/app.json')).toEqual(mockConfig);
80
+ expect((0, structure_1.loadConfigFile)('test/path/app.json')).toEqual(mockConfig);
43
81
  });
44
82
  it('returns null when file read fails', () => {
45
83
  mockedReadFileSync.mockImplementation(() => {
46
84
  throw new Error('File not found');
47
85
  });
48
- expect(loadConfigFile('nonexistent/path/app.json')).toBeNull();
49
- expect(logger.debug).toHaveBeenCalled();
86
+ expect((0, structure_1.loadConfigFile)('nonexistent/path/app.json')).toBeNull();
87
+ expect(logger_1.logger.debug).toHaveBeenCalled();
50
88
  });
51
89
  });
52
90
  describe('getAppCardConfigs()', () => {
53
91
  const mockAppPath = '/test/path';
54
92
  it('returns empty array when no cards exist', () => {
55
93
  const appConfig = getMockPrivateAppConfig();
56
- expect(getAppCardConfigs(appConfig, mockAppPath)).toEqual([]);
94
+ expect((0, structure_1.getAppCardConfigs)(appConfig, mockAppPath)).toEqual([]);
57
95
  });
58
96
  it('returns array of card configs when valid cards exist', () => {
59
97
  const mockCardConfig = { type: 'crm-card' };
60
98
  mockedReadFileSync.mockReturnValue(JSON.stringify(mockCardConfig));
61
99
  const appConfig = getMockPrivateAppConfig([{ file: 'card.json' }]);
62
- expect(getAppCardConfigs(appConfig, mockAppPath)).toEqual([
100
+ expect((0, structure_1.getAppCardConfigs)(appConfig, mockAppPath)).toEqual([
63
101
  mockCardConfig,
64
102
  ]);
65
103
  });
@@ -70,11 +108,11 @@ describe('lib/projects/structure', () => {
70
108
  const cardConfig = { type: 'crm-card' };
71
109
  const appConfig = getMockPrivateAppConfig([{ file: 'card.json' }]);
72
110
  mockedReadFileSync.mockReturnValue(JSON.stringify(cardConfig));
73
- expect(getIsLegacyApp(appConfig, mockAppPath)).toBe(true);
111
+ expect((0, structure_1.getIsLegacyApp)(appConfig, mockAppPath)).toBe(true);
74
112
  });
75
113
  it('returns false when the app has no cards', () => {
76
114
  const appConfig = getMockPrivateAppConfig();
77
- expect(getIsLegacyApp(appConfig, mockAppPath)).toBe(false);
115
+ expect((0, structure_1.getIsLegacyApp)(appConfig, mockAppPath)).toBe(false);
78
116
  });
79
117
  it('returns false for non-legacy app', () => {
80
118
  const cardConfig = {
@@ -82,20 +120,20 @@ describe('lib/projects/structure', () => {
82
120
  };
83
121
  const appConfig = getMockPrivateAppConfig([{ file: 'card.json' }]);
84
122
  mockedReadFileSync.mockReturnValue(JSON.stringify(cardConfig));
85
- expect(getIsLegacyApp(appConfig, mockAppPath)).toBe(false);
123
+ expect((0, structure_1.getIsLegacyApp)(appConfig, mockAppPath)).toBe(false);
86
124
  });
87
125
  });
88
126
  describe('findProjectComponents()', () => {
89
127
  it('returns an empty array of components when no components are found', async () => {
90
128
  mockedWalk.mockReturnValue([]);
91
- const components = await findProjectComponents('');
129
+ const components = await (0, structure_1.findProjectComponents)('');
92
130
  expect(components).toEqual([]);
93
131
  });
94
132
  it('returns an array of components when components are found', async () => {
95
133
  const cardConfig = { type: 'crm-card' };
96
134
  const appConfig = getMockPrivateAppConfig();
97
135
  const component = {
98
- type: ComponentTypes.PrivateApp,
136
+ type: Projects_1.ComponentTypes.PrivateApp,
99
137
  config: appConfig,
100
138
  runnable: true,
101
139
  path: '',
@@ -104,108 +142,108 @@ describe('lib/projects/structure', () => {
104
142
  mockedReadFileSync
105
143
  .mockReturnValueOnce(JSON.stringify(appConfig))
106
144
  .mockReturnValueOnce(JSON.stringify(cardConfig));
107
- const components = await findProjectComponents('');
145
+ const components = await (0, structure_1.findProjectComponents)('');
108
146
  expect(components).toEqual([component]);
109
147
  });
110
148
  });
111
149
  describe('getProjectComponentTypes()', () => {
112
150
  it('returns the correct component types', () => {
113
151
  const component = {
114
- type: ComponentTypes.PrivateApp,
152
+ type: Projects_1.ComponentTypes.PrivateApp,
115
153
  config: getMockPrivateAppConfig(),
116
154
  runnable: true,
117
155
  path: 'test/path',
118
156
  };
119
157
  const components = [component];
120
- expect(getProjectComponentTypes(components)).toEqual({
121
- [ComponentTypes.PrivateApp]: true,
158
+ expect((0, structure_1.getProjectComponentTypes)(components)).toEqual({
159
+ [Projects_1.ComponentTypes.PrivateApp]: true,
122
160
  });
123
161
  });
124
162
  it('returns the correct component types for multiple components', () => {
125
163
  const component1 = {
126
- type: ComponentTypes.PrivateApp,
164
+ type: Projects_1.ComponentTypes.PrivateApp,
127
165
  config: getMockPrivateAppConfig(),
128
166
  runnable: true,
129
167
  path: 'test/path',
130
168
  };
131
169
  const component2 = {
132
- type: ComponentTypes.PublicApp,
170
+ type: Projects_1.ComponentTypes.PublicApp,
133
171
  // Config doesn't matter for this test so we can use a private app config
134
172
  config: getMockPrivateAppConfig(),
135
173
  runnable: true,
136
174
  path: 'test/path',
137
175
  };
138
176
  const components = [component1, component2];
139
- expect(getProjectComponentTypes(components)).toEqual({
140
- [ComponentTypes.PrivateApp]: true,
141
- [ComponentTypes.PublicApp]: true,
177
+ expect((0, structure_1.getProjectComponentTypes)(components)).toEqual({
178
+ [Projects_1.ComponentTypes.PrivateApp]: true,
179
+ [Projects_1.ComponentTypes.PublicApp]: true,
142
180
  });
143
181
  });
144
182
  it('returns an empty object when no components are provided', () => {
145
183
  const components = [];
146
- expect(getProjectComponentTypes(components)).toEqual({});
184
+ expect((0, structure_1.getProjectComponentTypes)(components)).toEqual({});
147
185
  });
148
186
  });
149
187
  describe('getComponentUid()', () => {
150
188
  it('returns uid from the component config', () => {
151
189
  const component = {
152
- type: ComponentTypes.PrivateApp,
190
+ type: Projects_1.ComponentTypes.PrivateApp,
153
191
  config: getMockPrivateAppConfig(),
154
192
  runnable: true,
155
193
  path: 'test/path',
156
194
  };
157
- expect(getComponentUid(component)).toBe(component.config.uid);
195
+ expect((0, structure_1.getComponentUid)(component)).toBe(component.config.uid);
158
196
  });
159
197
  it('returns null for null input', () => {
160
- expect(getComponentUid(null)).toBeNull();
198
+ expect((0, structure_1.getComponentUid)(null)).toBeNull();
161
199
  });
162
200
  });
163
201
  describe('componentIsApp()', () => {
164
202
  it('returns true for public app component', () => {
165
203
  const component = {
166
- type: ComponentTypes.PublicApp,
204
+ type: Projects_1.ComponentTypes.PublicApp,
167
205
  // Config doesn't matter for this test so we can use a private app config
168
206
  config: getMockPrivateAppConfig(),
169
207
  runnable: true,
170
208
  path: 'test/path',
171
209
  };
172
- expect(componentIsApp(component)).toBe(true);
210
+ expect((0, structure_1.componentIsApp)(component)).toBe(true);
173
211
  });
174
212
  it('returns true for private app component', () => {
175
213
  const component = {
176
- type: ComponentTypes.PrivateApp,
214
+ type: Projects_1.ComponentTypes.PrivateApp,
177
215
  config: getMockPrivateAppConfig(),
178
216
  runnable: true,
179
217
  path: 'test/path',
180
218
  };
181
- expect(componentIsApp(component)).toBe(true);
219
+ expect((0, structure_1.componentIsApp)(component)).toBe(true);
182
220
  });
183
221
  it('returns false for null input', () => {
184
- expect(componentIsApp(null)).toBe(false);
222
+ expect((0, structure_1.componentIsApp)(null)).toBe(false);
185
223
  });
186
224
  });
187
225
  describe('componentIsPublicApp()', () => {
188
226
  it('returns true for public app component', () => {
189
227
  const component = {
190
- type: ComponentTypes.PublicApp,
228
+ type: Projects_1.ComponentTypes.PublicApp,
191
229
  // Config doesn't matter for this test so we can use a private app config
192
230
  config: getMockPrivateAppConfig(),
193
231
  runnable: true,
194
232
  path: 'test/path',
195
233
  };
196
- expect(componentIsPublicApp(component)).toBe(true);
234
+ expect((0, structure_1.componentIsPublicApp)(component)).toBe(true);
197
235
  });
198
236
  it('returns false for private app component', () => {
199
237
  const component = {
200
- type: ComponentTypes.PrivateApp,
238
+ type: Projects_1.ComponentTypes.PrivateApp,
201
239
  config: getMockPrivateAppConfig(),
202
240
  runnable: true,
203
241
  path: 'test/path',
204
242
  };
205
- expect(componentIsPublicApp(component)).toBe(false);
243
+ expect((0, structure_1.componentIsPublicApp)(component)).toBe(false);
206
244
  });
207
245
  it('returns false for null input', () => {
208
- expect(componentIsPublicApp(null)).toBe(false);
246
+ expect((0, structure_1.componentIsPublicApp)(null)).toBe(false);
209
247
  });
210
248
  });
211
249
  });
@@ -1,21 +1,23 @@
1
- import { legacyAddComponent } from '../legacyAddComponent.js';
2
- import { findProjectComponents } from '../../structure.js';
3
- import { getProjectComponentListFromRepo } from '../../create/legacy.js';
4
- import { projectAddPrompt } from '../../../prompts/projectAddPrompt.js';
5
- import { logger } from '@hubspot/local-dev-lib/logger';
6
- import { cloneGithubRepo } from '@hubspot/local-dev-lib/github';
7
- import { ComponentTypes, } from '../../../../types/Projects.js';
8
- import { commands } from '../../../../lang/en.js';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const legacyAddComponent_1 = require("../legacyAddComponent");
4
+ const structure_1 = require("../../structure");
5
+ const legacy_1 = require("../../create/legacy");
6
+ const projectAddPrompt_1 = require("../../../prompts/projectAddPrompt");
7
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
8
+ const github_1 = require("@hubspot/local-dev-lib/github");
9
+ const Projects_1 = require("../../../../types/Projects");
10
+ const en_1 = require("../../../../lang/en");
9
11
  vi.mock('../../structure');
10
12
  vi.mock('../../create/legacy');
11
13
  vi.mock('../../../prompts/projectAddPrompt');
12
14
  vi.mock('@hubspot/local-dev-lib/logger');
13
15
  vi.mock('@hubspot/local-dev-lib/github');
14
- const mockedFindProjectComponents = vi.mocked(findProjectComponents);
15
- const mockedGetProjectComponentListFromRepo = vi.mocked(getProjectComponentListFromRepo);
16
- const mockedProjectAddPrompt = vi.mocked(projectAddPrompt);
17
- const mockedLogger = vi.mocked(logger);
18
- const mockedCloneGithubRepo = vi.mocked(cloneGithubRepo);
16
+ const mockedFindProjectComponents = vi.mocked(structure_1.findProjectComponents);
17
+ const mockedGetProjectComponentListFromRepo = vi.mocked(legacy_1.getProjectComponentListFromRepo);
18
+ const mockedProjectAddPrompt = vi.mocked(projectAddPrompt_1.projectAddPrompt);
19
+ const mockedLogger = vi.mocked(logger_1.logger);
20
+ const mockedCloneGithubRepo = vi.mocked(github_1.cloneGithubRepo);
19
21
  describe('lib/projects/add/legacyAddComponent', () => {
20
22
  const mockProjectConfig = {
21
23
  name: 'test-project',
@@ -31,7 +33,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
31
33
  it('successfully adds a component to a project without public apps', async () => {
32
34
  const mockComponents = [
33
35
  {
34
- type: ComponentTypes.PrivateApp,
36
+ type: Projects_1.ComponentTypes.PrivateApp,
35
37
  config: {
36
38
  name: 'private-app',
37
39
  description: '',
@@ -58,7 +60,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
58
60
  mockedGetProjectComponentListFromRepo.mockResolvedValue(mockComponentList);
59
61
  mockedProjectAddPrompt.mockResolvedValue(mockPromptResponse);
60
62
  mockedCloneGithubRepo.mockResolvedValue(true);
61
- await legacyAddComponent(mockArgs, projectDir, mockProjectConfig);
63
+ await (0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig);
62
64
  expect(mockedFindProjectComponents).toHaveBeenCalledWith(projectDir);
63
65
  expect(mockedGetProjectComponentListFromRepo).toHaveBeenCalledWith('v1');
64
66
  expect(mockedProjectAddPrompt).toHaveBeenCalledWith(mockComponentList, mockArgs);
@@ -67,13 +69,13 @@ describe('lib/projects/add/legacyAddComponent', () => {
67
69
  branch: 'main',
68
70
  hideLogs: true,
69
71
  }));
70
- expect(mockedLogger.log).toHaveBeenCalledWith(commands.project.add.creatingComponent('test-project'));
71
- expect(mockedLogger.success).toHaveBeenCalledWith(commands.project.add.success('new-component'));
72
+ expect(mockedLogger.log).toHaveBeenCalledWith(en_1.commands.project.add.creatingComponent('test-project'));
73
+ expect(mockedLogger.success).toHaveBeenCalledWith(en_1.commands.project.add.success('new-component'));
72
74
  });
73
75
  it('throws an error when project contains a public app', async () => {
74
76
  const mockComponents = [
75
77
  {
76
- type: ComponentTypes.PublicApp,
78
+ type: Projects_1.ComponentTypes.PublicApp,
77
79
  config: {
78
80
  name: 'public-app',
79
81
  uid: '',
@@ -97,7 +99,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
97
99
  },
98
100
  ];
99
101
  mockedFindProjectComponents.mockResolvedValue(mockComponents);
100
- await expect(legacyAddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(commands.project.add.error.projectContainsPublicApp);
102
+ await expect((0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(en_1.commands.project.add.error.projectContainsPublicApp);
101
103
  expect(mockedGetProjectComponentListFromRepo).not.toHaveBeenCalled();
102
104
  expect(mockedProjectAddPrompt).not.toHaveBeenCalled();
103
105
  expect(mockedCloneGithubRepo).not.toHaveBeenCalled();
@@ -118,7 +120,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
118
120
  mockedGetProjectComponentListFromRepo.mockResolvedValue(mockComponentList);
119
121
  mockedProjectAddPrompt.mockResolvedValue(mockPromptResponse);
120
122
  mockedCloneGithubRepo.mockResolvedValue(true);
121
- await legacyAddComponent(mockArgs, projectDir, mockProjectConfig);
123
+ await (0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig);
122
124
  expect(mockedGetProjectComponentListFromRepo).toHaveBeenCalledWith('v1');
123
125
  expect(mockedProjectAddPrompt).toHaveBeenCalledWith(mockComponentList, mockArgs);
124
126
  expect(mockedCloneGithubRepo).toHaveBeenCalled();
@@ -126,7 +128,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
126
128
  it('throws an error when component list is empty', async () => {
127
129
  const mockComponents = [
128
130
  {
129
- type: ComponentTypes.PrivateApp,
131
+ type: Projects_1.ComponentTypes.PrivateApp,
130
132
  config: {
131
133
  name: 'private-app',
132
134
  description: '',
@@ -140,14 +142,14 @@ describe('lib/projects/add/legacyAddComponent', () => {
140
142
  ];
141
143
  mockedFindProjectComponents.mockResolvedValue(mockComponents);
142
144
  mockedGetProjectComponentListFromRepo.mockResolvedValue([]);
143
- await expect(legacyAddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(commands.project.add.error.failedToFetchComponentList);
145
+ await expect((0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(en_1.commands.project.add.error.failedToFetchComponentList);
144
146
  expect(mockedProjectAddPrompt).not.toHaveBeenCalled();
145
147
  expect(mockedCloneGithubRepo).not.toHaveBeenCalled();
146
148
  });
147
149
  it('throws an error when component list is null', async () => {
148
150
  const mockComponents = [
149
151
  {
150
- type: ComponentTypes.PrivateApp,
152
+ type: Projects_1.ComponentTypes.PrivateApp,
151
153
  config: {
152
154
  name: 'private-app',
153
155
  description: '',
@@ -162,14 +164,14 @@ describe('lib/projects/add/legacyAddComponent', () => {
162
164
  mockedFindProjectComponents.mockResolvedValue(mockComponents);
163
165
  // @ts-expect-error Breaking stuff on purpose
164
166
  mockedGetProjectComponentListFromRepo.mockResolvedValue(null);
165
- await expect(legacyAddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(commands.project.add.error.failedToFetchComponentList);
167
+ await expect((0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(en_1.commands.project.add.error.failedToFetchComponentList);
166
168
  expect(mockedProjectAddPrompt).not.toHaveBeenCalled();
167
169
  expect(mockedCloneGithubRepo).not.toHaveBeenCalled();
168
170
  });
169
171
  it('throws an error when cloning fails', async () => {
170
172
  const mockComponents = [
171
173
  {
172
- type: ComponentTypes.PrivateApp,
174
+ type: Projects_1.ComponentTypes.PrivateApp,
173
175
  config: {
174
176
  name: 'private-app',
175
177
  description: '',
@@ -196,7 +198,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
196
198
  mockedGetProjectComponentListFromRepo.mockResolvedValue(mockComponentList);
197
199
  mockedProjectAddPrompt.mockResolvedValue(mockPromptResponse);
198
200
  mockedCloneGithubRepo.mockRejectedValue(new Error('Clone failed'));
199
- await expect(legacyAddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(commands.project.add.error.failedToDownloadComponent);
201
+ await expect((0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(en_1.commands.project.add.error.failedToDownloadComponent);
200
202
  expect(mockedCloneGithubRepo).toHaveBeenCalled();
201
203
  expect(mockedLogger.success).not.toHaveBeenCalled();
202
204
  });