@hubspot/cli 8.3.0 → 8.4.0-beta.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 (522) hide show
  1. package/bin/cli.js +2 -0
  2. package/commands/account/auth.js +12 -22
  3. package/commands/account/clean.js +5 -6
  4. package/commands/account/createOverride.js +7 -7
  5. package/commands/account/info.js +2 -1
  6. package/commands/account/list.js +3 -5
  7. package/commands/account/remove.js +2 -3
  8. package/commands/account/removeOverride.js +8 -10
  9. package/commands/account/rename.js +5 -6
  10. package/commands/account/use.js +8 -19
  11. package/commands/api.d.ts +10 -0
  12. package/commands/api.js +164 -0
  13. package/commands/app/migrate.js +8 -8
  14. package/commands/app/secret/add.js +6 -7
  15. package/commands/app/secret/delete.js +9 -10
  16. package/commands/app/secret/list.js +6 -7
  17. package/commands/app/secret/update.js +8 -9
  18. package/commands/auth.js +12 -12
  19. package/commands/cms/app/create.js +9 -5
  20. package/commands/cms/convertFields.js +8 -8
  21. package/commands/cms/delete.js +2 -3
  22. package/commands/cms/fetch.js +7 -7
  23. package/commands/cms/function/create.js +9 -5
  24. package/commands/cms/function/deploy.js +2 -3
  25. package/commands/cms/function/list.js +11 -7
  26. package/commands/cms/function/logs.js +17 -23
  27. package/commands/cms/function/server.js +2 -3
  28. package/commands/cms/getReactModule.js +7 -8
  29. package/commands/cms/lighthouseScore.js +25 -24
  30. package/commands/cms/lint.js +4 -5
  31. package/commands/cms/list.js +5 -6
  32. package/commands/cms/module/create.js +9 -5
  33. package/commands/cms/module/marketplace-validate.js +7 -8
  34. package/commands/cms/mv.js +2 -3
  35. package/commands/cms/template/create.js +10 -6
  36. package/commands/cms/theme/create.js +5 -5
  37. package/commands/cms/theme/generate-selectors.js +5 -4
  38. package/commands/cms/theme/marketplace-validate.js +8 -9
  39. package/commands/cms/theme/preview.js +16 -8
  40. package/commands/cms/upload.js +15 -12
  41. package/commands/cms/watch.js +5 -5
  42. package/commands/cms/webpack/create.js +5 -5
  43. package/commands/completion.js +3 -5
  44. package/commands/config/migrate.js +6 -7
  45. package/commands/config/set.js +5 -6
  46. package/commands/customObject/create.js +4 -5
  47. package/commands/customObject/createSchema.js +4 -5
  48. package/commands/customObject/deleteSchema.js +4 -5
  49. package/commands/customObject/fetchAllSchemas.js +2 -3
  50. package/commands/customObject/fetchSchema.js +2 -3
  51. package/commands/customObject/listSchemas.js +2 -3
  52. package/commands/customObject/updateSchema.js +4 -5
  53. package/commands/doctor.js +8 -8
  54. package/commands/feedback.js +6 -4
  55. package/commands/filemanager/fetch.js +5 -6
  56. package/commands/filemanager/upload.js +5 -5
  57. package/commands/getStarted.js +14 -16
  58. package/commands/hubdb/clear.js +5 -6
  59. package/commands/hubdb/create.js +4 -5
  60. package/commands/hubdb/delete.js +8 -9
  61. package/commands/hubdb/fetch.js +5 -6
  62. package/commands/hubdb/list.js +16 -14
  63. package/commands/init.js +14 -17
  64. package/commands/mcp/setup.js +5 -6
  65. package/commands/mcp/start.js +2 -3
  66. package/commands/open.js +4 -5
  67. package/commands/project/add.js +10 -5
  68. package/commands/project/create.js +10 -10
  69. package/commands/project/delete.d.ts +7 -0
  70. package/commands/project/delete.js +74 -0
  71. package/commands/project/deploy.js +36 -34
  72. package/commands/project/dev/deprecatedFlow.js +42 -15
  73. package/commands/project/dev/index.d.ts +3 -3
  74. package/commands/project/dev/index.js +24 -30
  75. package/commands/project/dev/unifiedFlow.js +37 -14
  76. package/commands/project/download.js +10 -11
  77. package/commands/project/info.d.ts +4 -0
  78. package/commands/project/info.js +67 -0
  79. package/commands/project/installDeps.js +9 -6
  80. package/commands/project/lint.js +11 -8
  81. package/commands/project/list.js +14 -14
  82. package/commands/project/listBuilds.js +8 -6
  83. package/commands/project/logs.js +5 -6
  84. package/commands/project/migrate.js +8 -8
  85. package/commands/project/open.js +5 -6
  86. package/commands/project/profile/add.js +12 -8
  87. package/commands/project/profile/delete.js +15 -11
  88. package/commands/project/updateDeps.js +9 -6
  89. package/commands/project/upload.js +31 -17
  90. package/commands/project/validate.js +11 -11
  91. package/commands/project/watch.js +20 -20
  92. package/commands/project.js +4 -0
  93. package/commands/sandbox/create.js +15 -15
  94. package/commands/sandbox/delete.js +13 -14
  95. package/commands/secret/addSecret.js +6 -7
  96. package/commands/secret/deleteSecret.js +5 -6
  97. package/commands/secret/listSecret.js +2 -3
  98. package/commands/secret/updateSecret.js +4 -5
  99. package/commands/testAccount/create.d.ts +1 -1
  100. package/commands/testAccount/create.js +20 -16
  101. package/commands/testAccount/createConfig.js +7 -8
  102. package/commands/testAccount/delete.js +27 -18
  103. package/commands/testAccount/importData.js +6 -7
  104. package/commands/upgrade.js +9 -10
  105. package/lang/en.d.ts +114 -5
  106. package/lang/en.js +111 -5
  107. package/lib/accountAuth.js +2 -2
  108. package/lib/buildAccount.js +3 -3
  109. package/lib/doctor/Diagnosis.js +5 -5
  110. package/lib/errorHandlers/index.js +4 -3
  111. package/lib/errorHandlers/suppressError.js +4 -0
  112. package/lib/errors/PromptExitError.d.ts +4 -2
  113. package/lib/errors/PromptExitError.js +3 -0
  114. package/lib/process.d.ts +1 -1
  115. package/lib/process.js +10 -3
  116. package/lib/projects/delete.d.ts +13 -0
  117. package/lib/projects/delete.js +193 -0
  118. package/lib/projects/localDev/AppDevModeInterface.js +11 -11
  119. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +3 -1
  120. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
  121. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  122. package/lib/projects/localDev/DevSessionManager.js +31 -19
  123. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +3 -0
  124. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +16 -12
  125. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  126. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  127. package/lib/projects/localDev/LocalDevState.js +3 -1
  128. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  129. package/lib/projects/localDev/helpers/account.js +16 -19
  130. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  131. package/lib/projects/localDev/helpers/process.js +4 -10
  132. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  133. package/lib/projects/localDev/helpers/project.js +31 -15
  134. package/lib/projects/projectInfo.d.ts +5 -0
  135. package/lib/projects/projectInfo.js +82 -0
  136. package/lib/projects/projectProfiles.d.ts +1 -2
  137. package/lib/projects/projectProfiles.js +5 -17
  138. package/lib/prompts/createApiSamplePrompt.js +4 -0
  139. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  140. package/lib/prompts/projectProfilePrompt.js +46 -0
  141. package/lib/prompts/promptUtils.js +3 -2
  142. package/lib/prompts/selectHubDBTablePrompt.js +2 -2
  143. package/lib/prompts/selectPublicAppForMigrationPrompt.js +2 -2
  144. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  145. package/lib/theme/cmsDevServerProcess.js +7 -6
  146. package/lib/ui/SpinniesManager.d.ts +1 -0
  147. package/lib/ui/SpinniesManager.js +20 -6
  148. package/lib/ui/spinniesUtils.d.ts +0 -1
  149. package/lib/ui/spinniesUtils.js +6 -16
  150. package/lib/usageTracking.d.ts +3 -4
  151. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  152. package/lib/yargs/makeYargsBuilder.js +33 -0
  153. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  154. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  155. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  156. package/lib/yargs/strictEnforceBoolean.js +13 -0
  157. package/lib/yargsUtils.d.ts +3 -16
  158. package/lib/yargsUtils.js +3 -48
  159. package/package.json +9 -4
  160. package/types/LocalDev.d.ts +5 -0
  161. package/types/Projects.d.ts +19 -0
  162. package/types/Yargs.d.ts +18 -1
  163. package/api/__tests__/migrate.test.d.ts +0 -1
  164. package/api/__tests__/migrate.test.js +0 -199
  165. package/commands/__tests__/account.test.d.ts +0 -1
  166. package/commands/__tests__/account.test.js +0 -69
  167. package/commands/__tests__/auth.test.d.ts +0 -1
  168. package/commands/__tests__/auth.test.js +0 -43
  169. package/commands/__tests__/cms.test.d.ts +0 -1
  170. package/commands/__tests__/cms.test.js +0 -87
  171. package/commands/__tests__/config.test.d.ts +0 -1
  172. package/commands/__tests__/config.test.js +0 -44
  173. package/commands/__tests__/customObject.test.d.ts +0 -1
  174. package/commands/__tests__/customObject.test.js +0 -68
  175. package/commands/__tests__/doctor.test.d.ts +0 -1
  176. package/commands/__tests__/doctor.test.js +0 -132
  177. package/commands/__tests__/feedback.test.d.ts +0 -1
  178. package/commands/__tests__/feedback.test.js +0 -24
  179. package/commands/__tests__/filemanager.test.d.ts +0 -1
  180. package/commands/__tests__/filemanager.test.js +0 -45
  181. package/commands/__tests__/getStarted.test.d.ts +0 -1
  182. package/commands/__tests__/getStarted.test.js +0 -173
  183. package/commands/__tests__/hubdb.test.d.ts +0 -1
  184. package/commands/__tests__/hubdb.test.js +0 -50
  185. package/commands/__tests__/init.test.d.ts +0 -1
  186. package/commands/__tests__/init.test.js +0 -42
  187. package/commands/__tests__/mcp.test.d.ts +0 -1
  188. package/commands/__tests__/mcp.test.js +0 -46
  189. package/commands/__tests__/open.test.d.ts +0 -1
  190. package/commands/__tests__/open.test.js +0 -58
  191. package/commands/__tests__/project.test.d.ts +0 -1
  192. package/commands/__tests__/project.test.js +0 -125
  193. package/commands/__tests__/sandbox.test.d.ts +0 -1
  194. package/commands/__tests__/sandbox.test.js +0 -44
  195. package/commands/__tests__/secret.test.d.ts +0 -1
  196. package/commands/__tests__/secret.test.js +0 -49
  197. package/commands/__tests__/testAccount.test.d.ts +0 -1
  198. package/commands/__tests__/testAccount.test.js +0 -57
  199. package/commands/__tests__/upgrade.test.d.ts +0 -1
  200. package/commands/__tests__/upgrade.test.js +0 -309
  201. package/commands/account/__tests__/auth.test.d.ts +0 -1
  202. package/commands/account/__tests__/auth.test.js +0 -206
  203. package/commands/account/__tests__/clean.test.d.ts +0 -1
  204. package/commands/account/__tests__/clean.test.js +0 -28
  205. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  206. package/commands/account/__tests__/createOverride.test.js +0 -32
  207. package/commands/account/__tests__/info.test.d.ts +0 -1
  208. package/commands/account/__tests__/info.test.js +0 -28
  209. package/commands/account/__tests__/list.test.d.ts +0 -1
  210. package/commands/account/__tests__/list.test.js +0 -153
  211. package/commands/account/__tests__/remove.test.d.ts +0 -1
  212. package/commands/account/__tests__/remove.test.js +0 -36
  213. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  214. package/commands/account/__tests__/removeOverride.js +0 -25
  215. package/commands/account/__tests__/rename.test.d.ts +0 -1
  216. package/commands/account/__tests__/rename.test.js +0 -82
  217. package/commands/account/__tests__/use.test.d.ts +0 -1
  218. package/commands/account/__tests__/use.test.js +0 -170
  219. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  220. package/commands/app/__tests__/migrate.test.js +0 -111
  221. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  222. package/commands/app/secret/__tests__/add.test.js +0 -140
  223. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  224. package/commands/app/secret/__tests__/delete.test.js +0 -28
  225. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  226. package/commands/app/secret/__tests__/list.test.js +0 -25
  227. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  228. package/commands/app/secret/__tests__/update.test.js +0 -28
  229. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  230. package/commands/cms/__tests__/delete.test.js +0 -39
  231. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  232. package/commands/cms/__tests__/fetch.test.js +0 -156
  233. package/commands/cms/__tests__/function.test.d.ts +0 -1
  234. package/commands/cms/__tests__/function.test.js +0 -50
  235. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  236. package/commands/cms/__tests__/lint.test.js +0 -33
  237. package/commands/cms/__tests__/list.test.d.ts +0 -1
  238. package/commands/cms/__tests__/list.test.js +0 -42
  239. package/commands/cms/__tests__/module.test.d.ts +0 -1
  240. package/commands/cms/__tests__/module.test.js +0 -45
  241. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  242. package/commands/cms/__tests__/mv.test.js +0 -46
  243. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  244. package/commands/cms/__tests__/theme.test.js +0 -54
  245. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  246. package/commands/cms/__tests__/upload.test.js +0 -312
  247. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  248. package/commands/cms/__tests__/watch.test.js +0 -204
  249. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  250. package/commands/cms/function/__tests__/logs.test.js +0 -70
  251. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  252. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  253. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  254. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  255. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  256. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  257. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  258. package/commands/customObject/__tests__/create.test.js +0 -40
  259. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  260. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  261. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  262. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  263. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  264. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  265. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  266. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  267. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  268. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  269. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  270. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  271. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  272. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  273. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  274. package/commands/filemanager/__tests__/upload.test.js +0 -191
  275. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  276. package/commands/hubdb/__tests__/clear.test.js +0 -28
  277. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  278. package/commands/hubdb/__tests__/create.test.js +0 -28
  279. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  280. package/commands/hubdb/__tests__/delete.test.js +0 -28
  281. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  282. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  283. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  284. package/commands/hubdb/__tests__/list.test.js +0 -88
  285. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  286. package/commands/mcp/__tests__/setup.test.js +0 -26
  287. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  288. package/commands/mcp/__tests__/start.test.js +0 -144
  289. package/commands/project/__tests__/add.test.d.ts +0 -1
  290. package/commands/project/__tests__/add.test.js +0 -107
  291. package/commands/project/__tests__/create.test.d.ts +0 -1
  292. package/commands/project/__tests__/create.test.js +0 -97
  293. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  294. package/commands/project/__tests__/deploy.test.js +0 -307
  295. package/commands/project/__tests__/dev.test.d.ts +0 -1
  296. package/commands/project/__tests__/dev.test.js +0 -273
  297. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  298. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  299. package/commands/project/__tests__/download.test.d.ts +0 -1
  300. package/commands/project/__tests__/download.test.js +0 -39
  301. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  302. package/commands/project/__tests__/installDeps.test.js +0 -140
  303. package/commands/project/__tests__/lint.test.d.ts +0 -1
  304. package/commands/project/__tests__/lint.test.js +0 -704
  305. package/commands/project/__tests__/list.test.d.ts +0 -1
  306. package/commands/project/__tests__/list.test.js +0 -31
  307. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  308. package/commands/project/__tests__/listBuilds.test.js +0 -38
  309. package/commands/project/__tests__/logs.test.d.ts +0 -1
  310. package/commands/project/__tests__/logs.test.js +0 -202
  311. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  312. package/commands/project/__tests__/migrate.test.js +0 -106
  313. package/commands/project/__tests__/open.test.d.ts +0 -1
  314. package/commands/project/__tests__/open.test.js +0 -39
  315. package/commands/project/__tests__/profile.test.d.ts +0 -1
  316. package/commands/project/__tests__/profile.test.js +0 -42
  317. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  318. package/commands/project/__tests__/updateDeps.test.js +0 -140
  319. package/commands/project/__tests__/upload.test.d.ts +0 -1
  320. package/commands/project/__tests__/upload.test.js +0 -234
  321. package/commands/project/__tests__/validate.test.d.ts +0 -1
  322. package/commands/project/__tests__/validate.test.js +0 -381
  323. package/commands/project/__tests__/watch.test.d.ts +0 -1
  324. package/commands/project/__tests__/watch.test.js +0 -35
  325. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  326. package/commands/sandbox/__tests__/create.test.js +0 -198
  327. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  328. package/commands/sandbox/__tests__/delete.test.js +0 -31
  329. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  330. package/commands/secret/__tests__/addSecret.test.js +0 -162
  331. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  332. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  333. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  334. package/commands/secret/__tests__/listSecret.test.js +0 -29
  335. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  336. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  337. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  338. package/commands/testAccount/__tests__/create.test.js +0 -106
  339. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  340. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  341. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  342. package/commands/testAccount/__tests__/delete.test.js +0 -29
  343. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  344. package/commands/testAccount/__tests__/importData.test.js +0 -92
  345. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  346. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  347. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  348. package/lib/__tests__/accountAuth.test.js +0 -258
  349. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  350. package/lib/__tests__/accountTypes.test.js +0 -98
  351. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  352. package/lib/__tests__/buildAccount.test.js +0 -211
  353. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  354. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  355. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  356. package/lib/__tests__/commandSuggestion.test.js +0 -121
  357. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  358. package/lib/__tests__/commonOpts.test.js +0 -80
  359. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  360. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  361. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  362. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  363. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  364. package/lib/__tests__/hasFeature.test.js +0 -167
  365. package/lib/__tests__/http.test.d.ts +0 -1
  366. package/lib/__tests__/http.test.js +0 -40
  367. package/lib/__tests__/importData.test.d.ts +0 -1
  368. package/lib/__tests__/importData.test.js +0 -98
  369. package/lib/__tests__/npmCli.test.d.ts +0 -1
  370. package/lib/__tests__/npmCli.test.js +0 -84
  371. package/lib/__tests__/oauth.test.d.ts +0 -1
  372. package/lib/__tests__/oauth.test.js +0 -109
  373. package/lib/__tests__/parsing.test.d.ts +0 -1
  374. package/lib/__tests__/parsing.test.js +0 -34
  375. package/lib/__tests__/polling.test.d.ts +0 -1
  376. package/lib/__tests__/polling.test.js +0 -76
  377. package/lib/__tests__/process.test.d.ts +0 -1
  378. package/lib/__tests__/process.test.js +0 -89
  379. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  380. package/lib/__tests__/sandboxes.test.js +0 -128
  381. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  382. package/lib/__tests__/serverlessLogs.test.js +0 -163
  383. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  384. package/lib/__tests__/usageTracking.test.js +0 -197
  385. package/lib/__tests__/validation.test.d.ts +0 -1
  386. package/lib/__tests__/validation.test.js +0 -143
  387. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  388. package/lib/__tests__/yargsUtils.test.js +0 -124
  389. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  390. package/lib/app/__tests__/migrate.test.js +0 -638
  391. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  392. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  393. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  394. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  395. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  396. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  397. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  398. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  399. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  400. package/lib/mcp/__tests__/setup.test.js +0 -523
  401. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  402. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  403. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  404. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  405. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  406. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  407. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  408. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  409. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  410. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  411. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  412. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  413. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  414. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  415. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  416. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  417. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  418. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  419. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  420. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  421. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  422. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  423. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  424. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  425. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  426. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  427. package/lib/projects/__tests__/components.test.d.ts +0 -1
  428. package/lib/projects/__tests__/components.test.js +0 -440
  429. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  430. package/lib/projects/__tests__/deploy.test.js +0 -231
  431. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  432. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  433. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  434. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  435. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  436. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  437. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  438. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  439. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  440. package/lib/projects/__tests__/projects.test.js +0 -58
  441. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  442. package/lib/projects/__tests__/structure.test.js +0 -210
  443. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  444. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  445. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  446. package/lib/projects/__tests__/upload.test.js +0 -183
  447. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  448. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  449. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  450. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  451. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  452. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  453. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  454. package/lib/projects/create/__tests__/v2.test.js +0 -257
  455. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  456. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  457. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  458. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  459. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  460. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  461. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  462. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  463. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  464. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  465. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  466. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  467. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  468. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  469. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  470. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  471. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  472. package/lib/theme/__tests__/migrate.test.js +0 -247
  473. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  474. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  475. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  476. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  477. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  478. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  479. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  480. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  481. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  482. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  483. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  484. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  485. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  486. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  487. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  488. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  489. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  490. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  491. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  492. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  493. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  494. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  495. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  496. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  497. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  498. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  499. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  500. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  501. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  502. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  503. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  504. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  505. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  506. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  507. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  508. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  509. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  510. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  511. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  512. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  513. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  514. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  515. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  516. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  517. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  518. package/mcp-server/utils/__tests__/command.test.js +0 -275
  519. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  520. package/mcp-server/utils/__tests__/content.test.js +0 -164
  521. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  522. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -1,441 +0,0 @@
1
- import path from 'path';
2
- import { loadHsProfileFile, getHsProfileFilename, getAllHsProfiles, validateProfileVariables, } from '@hubspot/project-parsing-lib/profiles';
3
- import { lib } from '../../../lang/en.js';
4
- import { uiBetaTag, uiLine } from '../../ui/index.js';
5
- import { uiLogger } from '../../ui/logger.js';
6
- import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
7
- import { logProfileHeader, logProfileFooter, loadProfile, enforceProfileUsage, loadAndValidateProfile, validateProjectForProfile, } from '../projectProfiles.js';
8
- import { handleTranslate } from '../upload.js';
9
- import SpinniesManager from '../../ui/SpinniesManager.js';
10
- import { commands } from '../../../lang/en.js';
11
- // Mock dependencies
12
- vi.mock('@hubspot/project-parsing-lib/profiles');
13
- vi.mock('@hubspot/local-dev-lib/config');
14
- vi.mock('../../ui', async (importOriginal) => {
15
- const actual = (await importOriginal());
16
- return {
17
- ...actual,
18
- uiBetaTag: vi.fn(),
19
- uiLine: vi.fn(),
20
- indent: vi.fn((level) => ' '.repeat(level)),
21
- };
22
- });
23
- vi.mock('../../../lang/en');
24
- vi.mock('../upload');
25
- vi.mock('../../ui/SpinniesManager');
26
- const mockedLoadHsProfileFile = loadHsProfileFile;
27
- const mockedGetHsProfileFilename = getHsProfileFilename;
28
- const mockedGetAllHsProfiles = getAllHsProfiles;
29
- const mockedValidateProfileVariables = validateProfileVariables;
30
- const mockedGetConfigAccountById = getConfigAccountById;
31
- const mockedUiBetaTag = uiBetaTag;
32
- const mockedUiLine = uiLine;
33
- const mockedUiLogger = uiLogger;
34
- describe('lib/projectProfiles', () => {
35
- describe('logProfileHeader()', () => {
36
- it('should log profile header with correct format', () => {
37
- const profileName = 'test-profile';
38
- const filename = 'test-profile.hsprofile';
39
- mockedGetHsProfileFilename.mockReturnValue(filename);
40
- logProfileHeader(profileName);
41
- expect(mockedUiLine).toHaveBeenCalled();
42
- expect(mockedUiBetaTag).toHaveBeenCalledWith(lib.projectProfiles.logs.usingProfile(filename));
43
- expect(mockedUiLogger.log).toHaveBeenCalledWith('');
44
- });
45
- });
46
- describe('logProfileFooter()', () => {
47
- const mockProfile = {
48
- accountId: 123,
49
- variables: {
50
- key1: 'value1',
51
- key2: 'value2',
52
- },
53
- };
54
- it('should log profile footer with account ID', () => {
55
- logProfileFooter(mockProfile);
56
- expect(mockedUiLogger.log).toHaveBeenCalledWith(lib.projectProfiles.logs.profileTargetAccount(mockProfile.accountId));
57
- expect(mockedUiLine).toHaveBeenCalled();
58
- expect(mockedUiLogger.log).toHaveBeenCalledWith('');
59
- });
60
- it('should log variables when includeVariables is true', () => {
61
- logProfileFooter(mockProfile, true);
62
- expect(mockedUiLogger.log).toHaveBeenCalledWith(lib.projectProfiles.logs.profileTargetAccount(mockProfile.accountId));
63
- expect(mockedUiLogger.log).toHaveBeenCalledWith('');
64
- expect(mockedUiLogger.log).toHaveBeenCalledWith(lib.projectProfiles.logs.profileVariables);
65
- expect(mockedUiLogger.log).toHaveBeenCalledWith(' key1: value1');
66
- expect(mockedUiLogger.log).toHaveBeenCalledWith(' key2: value2');
67
- expect(mockedUiLine).toHaveBeenCalled();
68
- expect(mockedUiLogger.log).toHaveBeenCalledWith('');
69
- });
70
- });
71
- describe('loadProfile()', () => {
72
- const mockProjectConfig = {
73
- srcDir: 'src',
74
- name: 'test-project',
75
- platformVersion: '1.0.0',
76
- };
77
- const mockProjectDir = '/test/project';
78
- const mockProfileName = 'test-profile';
79
- const mockProfile = {
80
- accountId: 123,
81
- };
82
- it('should throw error when project config is missing', () => {
83
- expect(() => loadProfile(null, mockProjectDir, mockProfileName)).toThrow(lib.projectProfiles.loadProfile.errors.noProjectConfig);
84
- });
85
- it('should throw error when project dir is missing', () => {
86
- expect(() => loadProfile(mockProjectConfig, null, mockProfileName)).toThrow(lib.projectProfiles.loadProfile.errors.noProjectConfig);
87
- });
88
- it('should throw error when profile is not found', () => {
89
- mockedLoadHsProfileFile.mockReturnValue(null);
90
- const filename = 'test-profile.hsprofile';
91
- mockedGetHsProfileFilename.mockReturnValue(filename);
92
- expect(() => loadProfile(mockProjectConfig, mockProjectDir, mockProfileName)).toThrow(lib.projectProfiles.loadProfile.errors.profileNotFound(filename));
93
- });
94
- it('should throw error when profile has no account ID', () => {
95
- mockedLoadHsProfileFile.mockReturnValue({});
96
- const filename = 'test-profile.hsprofile';
97
- mockedGetHsProfileFilename.mockReturnValue(filename);
98
- expect(() => loadProfile(mockProjectConfig, mockProjectDir, mockProfileName)).toThrow(lib.projectProfiles.loadProfile.errors.missingAccountId(filename));
99
- });
100
- it('should throw error when profile loading fails', () => {
101
- mockedLoadHsProfileFile.mockImplementation(() => {
102
- throw new Error('Load failed');
103
- });
104
- const filename = 'test-profile.hsprofile';
105
- mockedGetHsProfileFilename.mockReturnValue(filename);
106
- expect(() => loadProfile(mockProjectConfig, mockProjectDir, mockProfileName)).toThrow(lib.projectProfiles.loadProfile.errors.failedToLoadProfile(filename));
107
- });
108
- it('should throw error when account is not found in config', () => {
109
- mockedLoadHsProfileFile.mockReturnValue(mockProfile);
110
- mockedGetConfigAccountById.mockImplementation(() => {
111
- throw new Error('Account not found');
112
- });
113
- const filename = 'test-profile.hsprofile';
114
- mockedGetHsProfileFilename.mockReturnValue(filename);
115
- expect(() => loadProfile(mockProjectConfig, mockProjectDir, mockProfileName)).toThrow(lib.projectProfiles.loadProfile.errors.listedAccountNotFound(mockProfile.accountId, filename));
116
- });
117
- it('should return profile when loading succeeds', () => {
118
- mockedLoadHsProfileFile.mockReturnValue(mockProfile);
119
- mockedGetConfigAccountById.mockReturnValue({
120
- accountId: mockProfile.accountId,
121
- });
122
- const result = loadProfile(mockProjectConfig, mockProjectDir, mockProfileName);
123
- expect(result).toEqual(mockProfile);
124
- expect(mockedLoadHsProfileFile).toHaveBeenCalledWith(path.join(mockProjectDir, mockProjectConfig.srcDir), mockProfileName);
125
- expect(mockedGetConfigAccountById).toHaveBeenCalledWith(mockProfile.accountId);
126
- });
127
- });
128
- describe('enforceProfileUsage()', () => {
129
- const mockProjectConfig = {
130
- srcDir: 'src',
131
- name: 'test-project',
132
- platformVersion: '1.0.0',
133
- };
134
- const mockProjectDir = '/test/project';
135
- it('should not throw when no profiles exist', async () => {
136
- mockedGetAllHsProfiles.mockResolvedValue([]);
137
- await expect(enforceProfileUsage(mockProjectConfig, mockProjectDir)).resolves.toBeUndefined();
138
- });
139
- it('should throw error when profiles exist', async () => {
140
- mockedGetAllHsProfiles.mockResolvedValue(['profile1', 'profile2']);
141
- await expect(enforceProfileUsage(mockProjectConfig, mockProjectDir)).rejects.toThrow(lib.projectProfiles.exitIfUsingProfiles.errors.noProfileSpecified);
142
- });
143
- it('should not throw when project config is null', async () => {
144
- await expect(enforceProfileUsage(null, mockProjectDir)).resolves.toBeUndefined();
145
- });
146
- it('should not throw when project dir is null', async () => {
147
- await expect(enforceProfileUsage(mockProjectConfig, null)).resolves.toBeUndefined();
148
- });
149
- });
150
- describe('loadAndValidateProfile()', () => {
151
- const mockProjectConfig = {
152
- srcDir: 'src',
153
- name: 'test-project',
154
- platformVersion: '1.0.0',
155
- };
156
- const mockProjectDir = '/test/project';
157
- const mockProfileName = 'test-profile';
158
- const mockProfile = {
159
- accountId: 123,
160
- variables: {
161
- key1: 'value1',
162
- key2: 'value2',
163
- },
164
- };
165
- it('should enforce profile usage when no profile name provided', async () => {
166
- mockedGetAllHsProfiles.mockResolvedValue([]);
167
- const result = await loadAndValidateProfile(mockProjectConfig, mockProjectDir, undefined);
168
- expect(result).toBeUndefined();
169
- expect(mockedGetAllHsProfiles).toHaveBeenCalledWith(path.join(mockProjectDir, mockProjectConfig.srcDir));
170
- });
171
- it('should throw when profiles exist but no profile name provided', async () => {
172
- mockedGetAllHsProfiles.mockResolvedValue(['profile1']);
173
- await expect(loadAndValidateProfile(mockProjectConfig, mockProjectDir, undefined)).rejects.toThrow(lib.projectProfiles.exitIfUsingProfiles.errors.noProfileSpecified);
174
- });
175
- it('should load and return account ID when profile is valid', async () => {
176
- mockedLoadHsProfileFile.mockReturnValue(mockProfile);
177
- mockedGetConfigAccountById.mockReturnValue({
178
- accountId: mockProfile.accountId,
179
- });
180
- mockedGetHsProfileFilename.mockReturnValue('test-profile.hsprofile');
181
- mockedValidateProfileVariables.mockReturnValue({ success: true });
182
- const result = await loadAndValidateProfile(mockProjectConfig, mockProjectDir, mockProfileName);
183
- expect(result).toBe(mockProfile.accountId);
184
- expect(mockedLoadHsProfileFile).toHaveBeenCalledWith(path.join(mockProjectDir, mockProjectConfig.srcDir), mockProfileName);
185
- expect(mockedValidateProfileVariables).toHaveBeenCalledWith(mockProfile.variables, mockProfileName);
186
- });
187
- it('should log profile header and footer when not silent', async () => {
188
- mockedLoadHsProfileFile.mockReturnValue(mockProfile);
189
- mockedGetConfigAccountById.mockReturnValue({
190
- accountId: mockProfile.accountId,
191
- });
192
- mockedGetHsProfileFilename.mockReturnValue('test-profile.hsprofile');
193
- mockedValidateProfileVariables.mockReturnValue({ success: true });
194
- await loadAndValidateProfile(mockProjectConfig, mockProjectDir, mockProfileName, false);
195
- expect(mockedUiBetaTag).toHaveBeenCalled();
196
- expect(mockedUiLine).toHaveBeenCalled();
197
- expect(mockedUiLogger.log).toHaveBeenCalled();
198
- });
199
- it('should not log when silent is true', async () => {
200
- mockedLoadHsProfileFile.mockReturnValue(mockProfile);
201
- mockedGetConfigAccountById.mockReturnValue({
202
- accountId: mockProfile.accountId,
203
- });
204
- mockedValidateProfileVariables.mockReturnValue({ success: true });
205
- await loadAndValidateProfile(mockProjectConfig, mockProjectDir, mockProfileName, true);
206
- expect(mockedUiBetaTag).not.toHaveBeenCalled();
207
- expect(mockedUiLine).not.toHaveBeenCalled();
208
- });
209
- it('should throw error when profile variables are invalid', async () => {
210
- const invalidProfile = {
211
- accountId: 123,
212
- variables: {
213
- invalid: 'value',
214
- },
215
- };
216
- const validationErrors = ['Variable "invalid" is not allowed'];
217
- mockedLoadHsProfileFile.mockReturnValue(invalidProfile);
218
- mockedGetConfigAccountById.mockReturnValue({
219
- accountId: invalidProfile.accountId,
220
- });
221
- mockedGetHsProfileFilename.mockReturnValue('test-profile.hsprofile');
222
- mockedValidateProfileVariables.mockReturnValue({
223
- success: false,
224
- errors: validationErrors,
225
- });
226
- await expect(loadAndValidateProfile(mockProjectConfig, mockProjectDir, mockProfileName)).rejects.toThrow(lib.projectProfiles.loadProfile.errors.profileNotValid('test-profile.hsprofile', validationErrors));
227
- });
228
- it('should not validate when profile has no variables', async () => {
229
- const profileWithoutVars = {
230
- accountId: 123,
231
- };
232
- mockedLoadHsProfileFile.mockReturnValue(profileWithoutVars);
233
- mockedGetConfigAccountById.mockReturnValue({
234
- accountId: profileWithoutVars.accountId,
235
- });
236
- mockedGetHsProfileFilename.mockReturnValue('test-profile.hsprofile');
237
- const result = await loadAndValidateProfile(mockProjectConfig, mockProjectDir, mockProfileName);
238
- expect(result).toBe(profileWithoutVars.accountId);
239
- expect(mockedValidateProfileVariables).not.toHaveBeenCalled();
240
- });
241
- });
242
- describe('validateProjectForProfile()', () => {
243
- const mockProjectConfig = {
244
- srcDir: 'src',
245
- name: 'test-project',
246
- platformVersion: '2025.2',
247
- };
248
- const mockProjectDir = '/test/project';
249
- const mockProfileName = 'test-profile';
250
- const mockDerivedAccountId = 123;
251
- const mockProfileFilename = 'test-profile.hsprofile';
252
- const mockProfile = {
253
- accountId: mockDerivedAccountId,
254
- };
255
- beforeEach(() => {
256
- mockedGetHsProfileFilename.mockReturnValue(mockProfileFilename);
257
- vi.mocked(SpinniesManager.init);
258
- vi.mocked(SpinniesManager.add);
259
- vi.mocked(SpinniesManager.succeed);
260
- vi.mocked(SpinniesManager.fail);
261
- // Mock dependencies for loadAndValidateProfile
262
- mockedGetAllHsProfiles.mockResolvedValue([]);
263
- mockedLoadHsProfileFile.mockReturnValue(mockProfile);
264
- mockedGetConfigAccountById.mockReturnValue({
265
- accountId: mockDerivedAccountId,
266
- });
267
- mockedValidateProfileVariables.mockReturnValue({ success: true });
268
- vi.mocked(handleTranslate).mockResolvedValue(undefined);
269
- });
270
- it('should return empty array when validation succeeds', async () => {
271
- const result = await validateProjectForProfile({
272
- projectConfig: mockProjectConfig,
273
- projectDir: mockProjectDir,
274
- profileName: mockProfileName,
275
- derivedAccountId: mockDerivedAccountId,
276
- });
277
- expect(result).toEqual([]);
278
- expect(SpinniesManager.add).toHaveBeenCalledWith(`validatingProfile-${mockProfileName}`, {
279
- text: commands.project.validate.spinners.validatingProfile(mockProfileFilename),
280
- indent: 0,
281
- });
282
- expect(SpinniesManager.succeed).toHaveBeenCalledWith(`validatingProfile-${mockProfileName}`, {
283
- text: commands.project.validate.spinners.profileValidationSucceeded(mockProfileFilename),
284
- succeedColor: 'white',
285
- });
286
- });
287
- it('should call handleTranslate with profile account ID from profile', async () => {
288
- await validateProjectForProfile({
289
- projectConfig: mockProjectConfig,
290
- projectDir: mockProjectDir,
291
- profileName: mockProfileName,
292
- derivedAccountId: mockDerivedAccountId,
293
- });
294
- expect(handleTranslate).toHaveBeenCalledWith({
295
- projectDir: mockProjectDir,
296
- projectConfig: mockProjectConfig,
297
- accountId: mockDerivedAccountId,
298
- skipValidation: false,
299
- profile: mockProfileName,
300
- includeTranslationErrorMessage: false,
301
- });
302
- });
303
- it('should call handleTranslate with different profile account ID when profile has different ID', async () => {
304
- const profileAccountId = 456;
305
- const profileWithDifferentId = {
306
- accountId: profileAccountId,
307
- };
308
- mockedLoadHsProfileFile.mockReturnValue(profileWithDifferentId);
309
- mockedGetConfigAccountById.mockReturnValue({
310
- accountId: profileAccountId,
311
- });
312
- await validateProjectForProfile({
313
- projectConfig: mockProjectConfig,
314
- projectDir: mockProjectDir,
315
- profileName: mockProfileName,
316
- derivedAccountId: mockDerivedAccountId,
317
- });
318
- expect(handleTranslate).toHaveBeenCalledWith({
319
- projectDir: mockProjectDir,
320
- projectConfig: mockProjectConfig,
321
- accountId: profileAccountId,
322
- skipValidation: false,
323
- profile: mockProfileName,
324
- includeTranslationErrorMessage: false,
325
- });
326
- });
327
- it('should return error when profile has no accountId', async () => {
328
- // @ts-expect-error causing an error on purpose
329
- const profileWithoutId = {};
330
- mockedLoadHsProfileFile.mockReturnValue(profileWithoutId);
331
- const result = await validateProjectForProfile({
332
- projectConfig: mockProjectConfig,
333
- projectDir: mockProjectDir,
334
- profileName: mockProfileName,
335
- derivedAccountId: mockDerivedAccountId,
336
- });
337
- expect(result.length).toBeGreaterThan(0);
338
- expect(SpinniesManager.fail).toHaveBeenCalled();
339
- expect(handleTranslate).not.toHaveBeenCalled();
340
- });
341
- it('should indent spinners when indentSpinners is true', async () => {
342
- await validateProjectForProfile({
343
- projectConfig: mockProjectConfig,
344
- projectDir: mockProjectDir,
345
- profileName: mockProfileName,
346
- derivedAccountId: mockDerivedAccountId,
347
- indentSpinners: true,
348
- });
349
- expect(SpinniesManager.add).toHaveBeenCalledWith(`validatingProfile-${mockProfileName}`, {
350
- text: commands.project.validate.spinners.validatingProfile(mockProfileFilename),
351
- indent: 2,
352
- });
353
- });
354
- it('should not indent spinners when indentSpinners is false', async () => {
355
- await validateProjectForProfile({
356
- projectConfig: mockProjectConfig,
357
- projectDir: mockProjectDir,
358
- profileName: mockProfileName,
359
- derivedAccountId: mockDerivedAccountId,
360
- indentSpinners: false,
361
- });
362
- expect(SpinniesManager.add).toHaveBeenCalledWith(`validatingProfile-${mockProfileName}`, {
363
- text: commands.project.validate.spinners.validatingProfile(mockProfileFilename),
364
- indent: 0,
365
- });
366
- });
367
- it('should return error array when profile loading fails', async () => {
368
- mockedLoadHsProfileFile.mockReturnValue(null);
369
- const result = await validateProjectForProfile({
370
- projectConfig: mockProjectConfig,
371
- projectDir: mockProjectDir,
372
- profileName: mockProfileName,
373
- derivedAccountId: mockDerivedAccountId,
374
- });
375
- expect(result.length).toBeGreaterThan(0);
376
- expect(SpinniesManager.fail).toHaveBeenCalledWith(`validatingProfile-${mockProfileName}`, {
377
- text: commands.project.validate.spinners.profileValidationFailed(mockProfileFilename),
378
- failColor: 'white',
379
- });
380
- expect(handleTranslate).not.toHaveBeenCalled();
381
- });
382
- it('should return error when profile file loading throws', async () => {
383
- mockedLoadHsProfileFile.mockImplementation(() => {
384
- throw new Error('Failed to load profile file');
385
- });
386
- const result = await validateProjectForProfile({
387
- projectConfig: mockProjectConfig,
388
- projectDir: mockProjectDir,
389
- profileName: mockProfileName,
390
- derivedAccountId: mockDerivedAccountId,
391
- });
392
- expect(result.length).toBeGreaterThan(0);
393
- expect(SpinniesManager.fail).toHaveBeenCalledWith(`validatingProfile-${mockProfileName}`, {
394
- text: commands.project.validate.spinners.profileValidationFailed(mockProfileFilename),
395
- failColor: 'white',
396
- });
397
- expect(handleTranslate).not.toHaveBeenCalled();
398
- });
399
- it('should return error array when translation fails', async () => {
400
- const error = new Error('Translation failed');
401
- vi.mocked(handleTranslate).mockRejectedValue(error);
402
- const result = await validateProjectForProfile({
403
- projectConfig: mockProjectConfig,
404
- projectDir: mockProjectDir,
405
- profileName: mockProfileName,
406
- derivedAccountId: mockDerivedAccountId,
407
- });
408
- expect(result).toHaveLength(2);
409
- expect(result[0]).toBe(commands.project.validate.failureWithProfile(mockProfileName));
410
- expect(result[1]).toBe(` ${error.message}\n`);
411
- expect(SpinniesManager.fail).toHaveBeenCalledWith(`validatingProfile-${mockProfileName}`, {
412
- text: commands.project.validate.spinners.invalidWithProfile(mockProfileName),
413
- failColor: 'white',
414
- });
415
- });
416
- it('should return string error when translation fails with non-Error', async () => {
417
- const error = 'Translation error';
418
- vi.mocked(handleTranslate).mockRejectedValue(error);
419
- const result = await validateProjectForProfile({
420
- projectConfig: mockProjectConfig,
421
- projectDir: mockProjectDir,
422
- profileName: mockProfileName,
423
- derivedAccountId: mockDerivedAccountId,
424
- });
425
- expect(result).toHaveLength(2);
426
- expect(result[0]).toBe(commands.project.validate.failureWithProfile(mockProfileName));
427
- expect(result[1]).toBe(` ${error}\n`);
428
- });
429
- it('should use correct spinner name based on profile name', async () => {
430
- const customProfileName = 'custom-profile';
431
- await validateProjectForProfile({
432
- projectConfig: mockProjectConfig,
433
- projectDir: mockProjectDir,
434
- profileName: customProfileName,
435
- derivedAccountId: mockDerivedAccountId,
436
- });
437
- expect(SpinniesManager.add).toHaveBeenCalledWith(`validatingProfile-${customProfileName}`, expect.any(Object));
438
- expect(SpinniesManager.succeed).toHaveBeenCalledWith(`validatingProfile-${customProfileName}`, expect.any(Object));
439
- });
440
- });
441
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,58 +0,0 @@
1
- import fs from 'fs';
2
- import os from 'os';
3
- import path from 'path';
4
- import { validateProjectConfig } from '../../projects/config.js';
5
- import ProjectValidationError from '../../errors/ProjectValidationError.js';
6
- describe('lib/projects', () => {
7
- describe('validateProjectConfig()', () => {
8
- let projectDir;
9
- beforeAll(() => {
10
- projectDir = fs.mkdtempSync(path.join(os.tmpdir(), 'projects-'));
11
- fs.mkdirSync(path.join(projectDir, 'src'));
12
- });
13
- it('rejects undefined configuration', () => {
14
- // @ts-ignore Testing invalid input
15
- expect(() => validateProjectConfig(null, projectDir)).toThrow(/.*Unable to locate a project configuration file. Try running again from a project directory, or run*/);
16
- });
17
- it('rejects configuration with missing name', () => {
18
- // @ts-ignore Testing invalid input
19
- expect(() => validateProjectConfig({ srcDir: '.' }, projectDir)).toThrow(/missing required field.*name/);
20
- });
21
- it('rejects configuration with missing srcDir', () => {
22
- expect(() =>
23
- // @ts-ignore Testing invalid input
24
- validateProjectConfig({ name: 'hello' }, projectDir)).toThrow(/missing required field.*srcDir/);
25
- });
26
- it('rejects configuration with both name and srcDir missing', () => {
27
- // @ts-ignore Testing invalid input
28
- expect(() => validateProjectConfig({}, projectDir)).toThrow(/missing required fields:.*name.*srcDir/);
29
- });
30
- describe('rejects configuration with srcDir outside project directory', () => {
31
- it('for parent directory', () => {
32
- expect(() => validateProjectConfig({ name: 'hello', srcDir: '..', platformVersion: '' }, projectDir)).toThrow(/srcDir: "\.\."/);
33
- });
34
- it('for root directory', () => {
35
- expect(() => validateProjectConfig({ name: 'hello', srcDir: '/', platformVersion: '' }, projectDir)).toThrow(/srcDir: "\/"/);
36
- });
37
- it('for complicated directory', () => {
38
- const srcDir = './src/././../src/../../src';
39
- expect(() => validateProjectConfig({ name: 'hello', srcDir, platformVersion: '' }, projectDir)).toThrow(ProjectValidationError);
40
- expect(() => validateProjectConfig({ name: 'hello', srcDir, platformVersion: '' }, projectDir)).toThrow(/srcDir:/);
41
- });
42
- });
43
- it('rejects configuration with srcDir that does not exist', () => {
44
- expect(() => validateProjectConfig({ name: 'hello', srcDir: 'foo', platformVersion: '' }, projectDir)).toThrow(/.*could not be found in.*/);
45
- });
46
- describe('accepts configuration with valid srcDir', () => {
47
- it('for current directory', () => {
48
- expect(() => validateProjectConfig({ name: 'hello', srcDir: '.', platformVersion: '' }, projectDir)).not.toThrow();
49
- });
50
- it('for relative directory', () => {
51
- expect(() => validateProjectConfig({ name: 'hello', srcDir: './src', platformVersion: '' }, projectDir)).not.toThrow();
52
- });
53
- it('for implied relative directory', () => {
54
- expect(() => validateProjectConfig({ name: 'hello', srcDir: 'src', platformVersion: '' }, projectDir)).not.toThrow();
55
- });
56
- });
57
- });
58
- });
@@ -1 +0,0 @@
1
- export {};