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