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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) 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.js +17 -17
  78. package/commands/project/installDeps.js +9 -6
  79. package/commands/project/lint.js +11 -8
  80. package/commands/project/list.js +14 -14
  81. package/commands/project/listBuilds.js +8 -6
  82. package/commands/project/logs.js +5 -6
  83. package/commands/project/migrate.js +8 -8
  84. package/commands/project/open.js +5 -6
  85. package/commands/project/profile/add.js +12 -8
  86. package/commands/project/profile/delete.js +15 -11
  87. package/commands/project/updateDeps.js +9 -6
  88. package/commands/project/upload.js +31 -17
  89. package/commands/project/validate.js +11 -11
  90. package/commands/project/watch.js +20 -20
  91. package/commands/project.js +2 -0
  92. package/commands/sandbox/create.js +15 -15
  93. package/commands/sandbox/delete.js +13 -14
  94. package/commands/secret/addSecret.js +6 -7
  95. package/commands/secret/deleteSecret.js +5 -6
  96. package/commands/secret/listSecret.js +2 -3
  97. package/commands/secret/updateSecret.js +4 -5
  98. package/commands/testAccount/create.d.ts +1 -1
  99. package/commands/testAccount/create.js +20 -16
  100. package/commands/testAccount/createConfig.js +7 -8
  101. package/commands/testAccount/delete.js +27 -18
  102. package/commands/testAccount/importData.js +6 -7
  103. package/commands/upgrade.js +9 -10
  104. package/lang/en.d.ts +94 -7
  105. package/lang/en.js +94 -10
  106. package/lib/accountAuth.js +2 -2
  107. package/lib/buildAccount.js +3 -3
  108. package/lib/constants.d.ts +0 -1
  109. package/lib/constants.js +0 -1
  110. package/lib/doctor/Diagnosis.js +5 -5
  111. package/lib/errorHandlers/index.js +4 -3
  112. package/lib/errorHandlers/suppressError.js +4 -0
  113. package/lib/errors/PromptExitError.d.ts +4 -2
  114. package/lib/errors/PromptExitError.js +3 -0
  115. package/lib/hasFeature.js +1 -2
  116. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  117. package/lib/process.d.ts +1 -1
  118. package/lib/process.js +10 -3
  119. package/lib/projects/create/v2.js +1 -2
  120. package/lib/projects/delete.d.ts +13 -0
  121. package/lib/projects/delete.js +193 -0
  122. package/lib/projects/localDev/AppDevModeInterface.js +11 -11
  123. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +3 -1
  124. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
  125. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  126. package/lib/projects/localDev/DevSessionManager.js +31 -19
  127. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +3 -0
  128. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +16 -12
  129. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  130. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  131. package/lib/projects/localDev/LocalDevState.js +3 -1
  132. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  133. package/lib/projects/localDev/helpers/account.js +16 -19
  134. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  135. package/lib/projects/localDev/helpers/process.js +4 -10
  136. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  137. package/lib/projects/localDev/helpers/project.js +31 -15
  138. package/lib/projects/projectInfo.d.ts +3 -20
  139. package/lib/projects/projectInfo.js +32 -54
  140. package/lib/projects/projectProfiles.d.ts +1 -2
  141. package/lib/projects/projectProfiles.js +5 -17
  142. package/lib/projects/upload.js +19 -0
  143. package/lib/projects/workspaces.d.ts +42 -0
  144. package/lib/projects/workspaces.js +350 -0
  145. package/lib/prompts/createApiSamplePrompt.js +4 -0
  146. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  147. package/lib/prompts/projectProfilePrompt.js +46 -0
  148. package/lib/prompts/promptUtils.js +3 -2
  149. package/lib/prompts/selectHubDBTablePrompt.js +2 -2
  150. package/lib/prompts/selectPublicAppForMigrationPrompt.js +2 -2
  151. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  152. package/lib/theme/cmsDevServerProcess.js +7 -6
  153. package/lib/ui/SpinniesManager.d.ts +1 -0
  154. package/lib/ui/SpinniesManager.js +20 -6
  155. package/lib/ui/spinniesUtils.d.ts +0 -1
  156. package/lib/ui/spinniesUtils.js +6 -16
  157. package/lib/usageTracking.d.ts +3 -4
  158. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  159. package/lib/yargs/makeYargsBuilder.js +33 -0
  160. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  161. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  162. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  163. package/lib/yargs/strictEnforceBoolean.js +13 -0
  164. package/lib/yargsUtils.d.ts +3 -16
  165. package/lib/yargsUtils.js +3 -48
  166. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +1 -1
  167. package/package.json +10 -5
  168. package/types/LocalDev.d.ts +5 -0
  169. package/types/Projects.d.ts +19 -0
  170. package/types/Yargs.d.ts +18 -1
  171. package/api/__tests__/migrate.test.d.ts +0 -1
  172. package/api/__tests__/migrate.test.js +0 -199
  173. package/commands/__tests__/account.test.d.ts +0 -1
  174. package/commands/__tests__/account.test.js +0 -69
  175. package/commands/__tests__/auth.test.d.ts +0 -1
  176. package/commands/__tests__/auth.test.js +0 -43
  177. package/commands/__tests__/cms.test.d.ts +0 -1
  178. package/commands/__tests__/cms.test.js +0 -87
  179. package/commands/__tests__/config.test.d.ts +0 -1
  180. package/commands/__tests__/config.test.js +0 -44
  181. package/commands/__tests__/customObject.test.d.ts +0 -1
  182. package/commands/__tests__/customObject.test.js +0 -68
  183. package/commands/__tests__/doctor.test.d.ts +0 -1
  184. package/commands/__tests__/doctor.test.js +0 -132
  185. package/commands/__tests__/feedback.test.d.ts +0 -1
  186. package/commands/__tests__/feedback.test.js +0 -24
  187. package/commands/__tests__/filemanager.test.d.ts +0 -1
  188. package/commands/__tests__/filemanager.test.js +0 -45
  189. package/commands/__tests__/getStarted.test.d.ts +0 -1
  190. package/commands/__tests__/getStarted.test.js +0 -173
  191. package/commands/__tests__/hubdb.test.d.ts +0 -1
  192. package/commands/__tests__/hubdb.test.js +0 -50
  193. package/commands/__tests__/init.test.d.ts +0 -1
  194. package/commands/__tests__/init.test.js +0 -42
  195. package/commands/__tests__/mcp.test.d.ts +0 -1
  196. package/commands/__tests__/mcp.test.js +0 -46
  197. package/commands/__tests__/open.test.d.ts +0 -1
  198. package/commands/__tests__/open.test.js +0 -58
  199. package/commands/__tests__/project.test.d.ts +0 -1
  200. package/commands/__tests__/project.test.js +0 -125
  201. package/commands/__tests__/sandbox.test.d.ts +0 -1
  202. package/commands/__tests__/sandbox.test.js +0 -44
  203. package/commands/__tests__/secret.test.d.ts +0 -1
  204. package/commands/__tests__/secret.test.js +0 -49
  205. package/commands/__tests__/testAccount.test.d.ts +0 -1
  206. package/commands/__tests__/testAccount.test.js +0 -57
  207. package/commands/__tests__/upgrade.test.d.ts +0 -1
  208. package/commands/__tests__/upgrade.test.js +0 -309
  209. package/commands/account/__tests__/auth.test.d.ts +0 -1
  210. package/commands/account/__tests__/auth.test.js +0 -206
  211. package/commands/account/__tests__/clean.test.d.ts +0 -1
  212. package/commands/account/__tests__/clean.test.js +0 -28
  213. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  214. package/commands/account/__tests__/createOverride.test.js +0 -32
  215. package/commands/account/__tests__/info.test.d.ts +0 -1
  216. package/commands/account/__tests__/info.test.js +0 -28
  217. package/commands/account/__tests__/list.test.d.ts +0 -1
  218. package/commands/account/__tests__/list.test.js +0 -153
  219. package/commands/account/__tests__/remove.test.d.ts +0 -1
  220. package/commands/account/__tests__/remove.test.js +0 -36
  221. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  222. package/commands/account/__tests__/removeOverride.js +0 -25
  223. package/commands/account/__tests__/rename.test.d.ts +0 -1
  224. package/commands/account/__tests__/rename.test.js +0 -82
  225. package/commands/account/__tests__/use.test.d.ts +0 -1
  226. package/commands/account/__tests__/use.test.js +0 -170
  227. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  228. package/commands/app/__tests__/migrate.test.js +0 -111
  229. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  230. package/commands/app/secret/__tests__/add.test.js +0 -140
  231. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  232. package/commands/app/secret/__tests__/delete.test.js +0 -28
  233. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  234. package/commands/app/secret/__tests__/list.test.js +0 -25
  235. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  236. package/commands/app/secret/__tests__/update.test.js +0 -28
  237. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  238. package/commands/cms/__tests__/delete.test.js +0 -39
  239. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  240. package/commands/cms/__tests__/fetch.test.js +0 -156
  241. package/commands/cms/__tests__/function.test.d.ts +0 -1
  242. package/commands/cms/__tests__/function.test.js +0 -50
  243. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  244. package/commands/cms/__tests__/lint.test.js +0 -33
  245. package/commands/cms/__tests__/list.test.d.ts +0 -1
  246. package/commands/cms/__tests__/list.test.js +0 -42
  247. package/commands/cms/__tests__/module.test.d.ts +0 -1
  248. package/commands/cms/__tests__/module.test.js +0 -45
  249. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  250. package/commands/cms/__tests__/mv.test.js +0 -46
  251. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  252. package/commands/cms/__tests__/theme.test.js +0 -54
  253. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  254. package/commands/cms/__tests__/upload.test.js +0 -312
  255. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  256. package/commands/cms/__tests__/watch.test.js +0 -204
  257. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  258. package/commands/cms/function/__tests__/logs.test.js +0 -70
  259. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  260. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  261. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  262. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  263. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  264. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  265. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  266. package/commands/customObject/__tests__/create.test.js +0 -40
  267. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  268. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  269. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  270. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  271. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  272. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  273. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  274. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  275. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  276. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  277. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  278. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  279. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  280. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  281. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  282. package/commands/filemanager/__tests__/upload.test.js +0 -191
  283. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  284. package/commands/hubdb/__tests__/clear.test.js +0 -28
  285. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  286. package/commands/hubdb/__tests__/create.test.js +0 -28
  287. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  288. package/commands/hubdb/__tests__/delete.test.js +0 -28
  289. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  290. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  291. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  292. package/commands/hubdb/__tests__/list.test.js +0 -88
  293. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  294. package/commands/mcp/__tests__/setup.test.js +0 -26
  295. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  296. package/commands/mcp/__tests__/start.test.js +0 -144
  297. package/commands/project/__tests__/add.test.d.ts +0 -1
  298. package/commands/project/__tests__/add.test.js +0 -107
  299. package/commands/project/__tests__/create.test.d.ts +0 -1
  300. package/commands/project/__tests__/create.test.js +0 -97
  301. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  302. package/commands/project/__tests__/deploy.test.js +0 -307
  303. package/commands/project/__tests__/dev.test.d.ts +0 -1
  304. package/commands/project/__tests__/dev.test.js +0 -273
  305. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  306. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  307. package/commands/project/__tests__/download.test.d.ts +0 -1
  308. package/commands/project/__tests__/download.test.js +0 -39
  309. package/commands/project/__tests__/info.test.d.ts +0 -1
  310. package/commands/project/__tests__/info.test.js +0 -145
  311. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  312. package/commands/project/__tests__/installDeps.test.js +0 -140
  313. package/commands/project/__tests__/lint.test.d.ts +0 -1
  314. package/commands/project/__tests__/lint.test.js +0 -704
  315. package/commands/project/__tests__/list.test.d.ts +0 -1
  316. package/commands/project/__tests__/list.test.js +0 -31
  317. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  318. package/commands/project/__tests__/listBuilds.test.js +0 -38
  319. package/commands/project/__tests__/logs.test.d.ts +0 -1
  320. package/commands/project/__tests__/logs.test.js +0 -202
  321. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  322. package/commands/project/__tests__/migrate.test.js +0 -106
  323. package/commands/project/__tests__/open.test.d.ts +0 -1
  324. package/commands/project/__tests__/open.test.js +0 -39
  325. package/commands/project/__tests__/profile.test.d.ts +0 -1
  326. package/commands/project/__tests__/profile.test.js +0 -42
  327. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  328. package/commands/project/__tests__/updateDeps.test.js +0 -140
  329. package/commands/project/__tests__/upload.test.d.ts +0 -1
  330. package/commands/project/__tests__/upload.test.js +0 -234
  331. package/commands/project/__tests__/validate.test.d.ts +0 -1
  332. package/commands/project/__tests__/validate.test.js +0 -381
  333. package/commands/project/__tests__/watch.test.d.ts +0 -1
  334. package/commands/project/__tests__/watch.test.js +0 -35
  335. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  336. package/commands/sandbox/__tests__/create.test.js +0 -198
  337. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  338. package/commands/sandbox/__tests__/delete.test.js +0 -31
  339. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  340. package/commands/secret/__tests__/addSecret.test.js +0 -162
  341. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  342. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  343. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  344. package/commands/secret/__tests__/listSecret.test.js +0 -29
  345. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  346. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  347. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  348. package/commands/testAccount/__tests__/create.test.js +0 -106
  349. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  350. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  351. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  352. package/commands/testAccount/__tests__/delete.test.js +0 -29
  353. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  354. package/commands/testAccount/__tests__/importData.test.js +0 -92
  355. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  356. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  357. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  358. package/lib/__tests__/accountAuth.test.js +0 -258
  359. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  360. package/lib/__tests__/accountTypes.test.js +0 -98
  361. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  362. package/lib/__tests__/buildAccount.test.js +0 -211
  363. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  364. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  365. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  366. package/lib/__tests__/commandSuggestion.test.js +0 -121
  367. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  368. package/lib/__tests__/commonOpts.test.js +0 -80
  369. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  370. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  371. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  372. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  373. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  374. package/lib/__tests__/hasFeature.test.js +0 -167
  375. package/lib/__tests__/http.test.d.ts +0 -1
  376. package/lib/__tests__/http.test.js +0 -40
  377. package/lib/__tests__/importData.test.d.ts +0 -1
  378. package/lib/__tests__/importData.test.js +0 -98
  379. package/lib/__tests__/npmCli.test.d.ts +0 -1
  380. package/lib/__tests__/npmCli.test.js +0 -84
  381. package/lib/__tests__/oauth.test.d.ts +0 -1
  382. package/lib/__tests__/oauth.test.js +0 -109
  383. package/lib/__tests__/parsing.test.d.ts +0 -1
  384. package/lib/__tests__/parsing.test.js +0 -34
  385. package/lib/__tests__/polling.test.d.ts +0 -1
  386. package/lib/__tests__/polling.test.js +0 -76
  387. package/lib/__tests__/process.test.d.ts +0 -1
  388. package/lib/__tests__/process.test.js +0 -89
  389. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  390. package/lib/__tests__/sandboxes.test.js +0 -128
  391. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  392. package/lib/__tests__/serverlessLogs.test.js +0 -163
  393. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  394. package/lib/__tests__/usageTracking.test.js +0 -197
  395. package/lib/__tests__/validation.test.d.ts +0 -1
  396. package/lib/__tests__/validation.test.js +0 -143
  397. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  398. package/lib/__tests__/yargsUtils.test.js +0 -124
  399. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  400. package/lib/app/__tests__/migrate.test.js +0 -638
  401. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  402. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  403. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  404. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  405. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  406. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  407. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  408. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  409. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  410. package/lib/mcp/__tests__/setup.test.js +0 -523
  411. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  412. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  413. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  414. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  415. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  416. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  417. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  418. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  419. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  420. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  421. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  422. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  423. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  424. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  425. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  426. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  427. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  428. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  429. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  430. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  431. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  432. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  433. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  434. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  435. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  436. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  437. package/lib/projects/__tests__/components.test.d.ts +0 -1
  438. package/lib/projects/__tests__/components.test.js +0 -440
  439. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  440. package/lib/projects/__tests__/deploy.test.js +0 -231
  441. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  442. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  443. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  444. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  445. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  446. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  447. package/lib/projects/__tests__/projectInfo.test.d.ts +0 -1
  448. package/lib/projects/__tests__/projectInfo.test.js +0 -114
  449. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  450. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  451. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  452. package/lib/projects/__tests__/projects.test.js +0 -58
  453. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  454. package/lib/projects/__tests__/structure.test.js +0 -210
  455. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  456. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  457. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  458. package/lib/projects/__tests__/upload.test.js +0 -183
  459. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  460. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  461. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  462. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  463. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  464. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  465. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  466. package/lib/projects/create/__tests__/v2.test.js +0 -257
  467. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  468. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  469. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  470. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  471. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  472. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  473. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  474. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  475. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  476. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  477. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  478. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  479. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  480. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  481. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  482. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  483. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  484. package/lib/theme/__tests__/migrate.test.js +0 -247
  485. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  486. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  487. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  488. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  489. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  490. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  491. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  492. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  493. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  494. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  495. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  496. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  497. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  498. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  499. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  500. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  501. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  502. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  503. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  504. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  505. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  506. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  507. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  508. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  509. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  510. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  511. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  512. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  513. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  514. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  515. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  516. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  517. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  518. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  519. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  520. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  521. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  522. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  523. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  524. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  525. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  526. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  527. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  528. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  529. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  530. package/mcp-server/utils/__tests__/command.test.js +0 -275
  531. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  532. package/mcp-server/utils/__tests__/content.test.js +0 -164
  533. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  534. 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 {};