@hubspot/cli 8.2.0-beta.0 → 8.2.0-experimental.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (700) hide show
  1. package/api/migrate.js +8 -4
  2. package/api/releases.d.ts +36 -0
  3. package/api/releases.js +41 -0
  4. package/bin/cli.js +12 -6
  5. package/commands/account/auth.d.ts +3 -1
  6. package/commands/account/auth.js +23 -7
  7. package/commands/account/clean.js +7 -6
  8. package/commands/account/createOverride.js +10 -7
  9. package/commands/account/info.js +36 -17
  10. package/commands/account/link.d.ts +4 -0
  11. package/commands/account/link.js +87 -0
  12. package/commands/account/list.js +32 -76
  13. package/commands/account/remove.js +4 -3
  14. package/commands/account/removeOverride.js +11 -10
  15. package/commands/account/rename.js +5 -6
  16. package/commands/account/unlink.d.ts +4 -0
  17. package/commands/account/unlink.js +68 -0
  18. package/commands/account/use.js +75 -6
  19. package/commands/account.js +4 -0
  20. package/commands/api.d.ts +10 -0
  21. package/commands/api.js +164 -0
  22. package/commands/app/logDetails.d.ts +9 -0
  23. package/commands/app/logDetails.js +86 -0
  24. package/commands/app/logs.d.ts +13 -0
  25. package/commands/app/logs.js +122 -0
  26. package/commands/app/migrate.js +13 -13
  27. package/commands/app/secret/add.js +6 -7
  28. package/commands/app/secret/delete.js +9 -10
  29. package/commands/app/secret/list.js +6 -7
  30. package/commands/app/secret/update.js +8 -9
  31. package/commands/app.js +8 -1
  32. package/commands/auth.js +20 -16
  33. package/commands/cms/app/create.js +9 -5
  34. package/commands/cms/convertFields.js +8 -8
  35. package/commands/cms/delete.js +2 -3
  36. package/commands/cms/fetch.js +7 -7
  37. package/commands/cms/function/create.js +9 -5
  38. package/commands/cms/function/deploy.js +2 -3
  39. package/commands/cms/function/list.js +11 -7
  40. package/commands/cms/function/logs.js +17 -23
  41. package/commands/cms/function/server.js +2 -3
  42. package/commands/cms/getReactModule.js +7 -8
  43. package/commands/cms/lighthouseScore.js +25 -24
  44. package/commands/cms/lint.js +4 -5
  45. package/commands/cms/list.js +5 -6
  46. package/commands/cms/module/create.js +15 -5
  47. package/commands/cms/module/marketplace-validate.js +7 -8
  48. package/commands/cms/mv.js +2 -3
  49. package/commands/cms/template/create.js +10 -6
  50. package/commands/cms/theme/create.js +5 -5
  51. package/commands/cms/theme/generate-selectors.js +5 -4
  52. package/commands/cms/theme/marketplace-validate.js +8 -9
  53. package/commands/cms/theme/preview.js +16 -8
  54. package/commands/cms/upload.js +15 -12
  55. package/commands/cms/watch.js +5 -5
  56. package/commands/cms/webpack/create.js +5 -5
  57. package/commands/completion.js +3 -5
  58. package/commands/config/migrate.js +6 -7
  59. package/commands/config/set.js +5 -6
  60. package/commands/customObject/create.js +4 -5
  61. package/commands/customObject/createSchema.js +4 -5
  62. package/commands/customObject/deleteSchema.js +4 -5
  63. package/commands/customObject/fetchAllSchemas.js +2 -3
  64. package/commands/customObject/fetchSchema.js +2 -3
  65. package/commands/customObject/listSchemas.js +2 -3
  66. package/commands/customObject/updateSchema.js +4 -5
  67. package/commands/doctor.js +8 -8
  68. package/commands/feedback.js +6 -4
  69. package/commands/filemanager/fetch.js +5 -6
  70. package/commands/filemanager/upload.js +5 -5
  71. package/commands/getStarted.js +17 -19
  72. package/commands/hubdb/clear.js +6 -3
  73. package/commands/hubdb/create.js +4 -5
  74. package/commands/hubdb/delete.js +9 -6
  75. package/commands/hubdb/fetch.js +6 -3
  76. package/commands/hubdb/list.js +16 -14
  77. package/commands/init.js +16 -15
  78. package/commands/mcp/setup.js +5 -6
  79. package/commands/mcp/start.js +2 -3
  80. package/commands/open.js +4 -5
  81. package/commands/project/add.js +13 -8
  82. package/commands/project/appInstallStatus.d.ts +4 -0
  83. package/commands/project/appInstallStatus.js +133 -0
  84. package/commands/project/create.js +28 -17
  85. package/commands/project/delete.d.ts +7 -0
  86. package/commands/project/delete.js +74 -0
  87. package/commands/project/deploy.js +39 -36
  88. package/commands/project/dev/deprecatedFlow.js +62 -17
  89. package/commands/project/dev/index.d.ts +3 -3
  90. package/commands/project/dev/index.js +59 -48
  91. package/commands/project/dev/unifiedFlow.js +70 -21
  92. package/commands/project/download.js +12 -9
  93. package/commands/project/info.d.ts +4 -0
  94. package/commands/project/info.js +68 -0
  95. package/commands/project/installDeps.js +9 -6
  96. package/commands/project/lint.js +43 -12
  97. package/commands/project/list.d.ts +2 -2
  98. package/commands/project/list.js +15 -14
  99. package/commands/project/listBuilds.js +8 -6
  100. package/commands/project/logs.js +5 -6
  101. package/commands/project/migrate.js +18 -18
  102. package/commands/project/open.js +5 -6
  103. package/commands/project/profile/add.js +12 -8
  104. package/commands/project/profile/delete.js +15 -11
  105. package/commands/project/release/create.d.ts +7 -0
  106. package/commands/project/release/create.js +159 -0
  107. package/commands/project/release/info.d.ts +6 -0
  108. package/commands/project/release/info.js +147 -0
  109. package/commands/project/release/list.d.ts +6 -0
  110. package/commands/project/release/list.js +111 -0
  111. package/commands/project/release.d.ts +3 -0
  112. package/commands/project/release.js +20 -0
  113. package/commands/project/updateDeps.js +9 -6
  114. package/commands/project/upload.d.ts +3 -0
  115. package/commands/project/upload.js +107 -25
  116. package/commands/project/validate.js +12 -12
  117. package/commands/project/watch.js +22 -22
  118. package/commands/project.js +14 -3
  119. package/commands/sandbox/create.js +18 -45
  120. package/commands/sandbox/delete.js +13 -14
  121. package/commands/secret/addSecret.js +6 -7
  122. package/commands/secret/deleteSecret.js +5 -6
  123. package/commands/secret/listSecret.js +2 -3
  124. package/commands/secret/updateSecret.js +4 -5
  125. package/commands/testAccount/create.d.ts +1 -1
  126. package/commands/testAccount/create.js +25 -17
  127. package/commands/testAccount/createConfig.js +7 -8
  128. package/commands/testAccount/delete.js +27 -18
  129. package/commands/testAccount/importData.js +6 -7
  130. package/commands/upgrade.js +9 -10
  131. package/lang/en.d.ts +441 -9
  132. package/lang/en.js +456 -22
  133. package/lib/CLIWebSocketServer.d.ts +5 -3
  134. package/lib/CLIWebSocketServer.js +31 -4
  135. package/lib/accountAuth.d.ts +3 -1
  136. package/lib/accountAuth.js +47 -17
  137. package/lib/api/usageTracking.d.ts +30 -0
  138. package/lib/api/usageTracking.js +11 -0
  139. package/lib/app/logs.d.ts +38 -0
  140. package/lib/app/logs.js +225 -0
  141. package/lib/app/migrate.js +18 -5
  142. package/lib/app/urls.d.ts +2 -0
  143. package/lib/app/urls.js +7 -0
  144. package/lib/auth/awaitPersonalAccessKeyOverWebsocket.d.ts +4 -0
  145. package/lib/auth/awaitPersonalAccessKeyOverWebsocket.js +145 -0
  146. package/lib/buildAccount.d.ts +1 -6
  147. package/lib/buildAccount.js +10 -43
  148. package/lib/commonOpts.js +0 -1
  149. package/lib/constants.d.ts +10 -3
  150. package/lib/constants.js +12 -3
  151. package/lib/doctor/Diagnosis.js +5 -5
  152. package/lib/doctor/Doctor.js +7 -7
  153. package/lib/errorHandlers/index.js +4 -3
  154. package/lib/errorHandlers/suppressError.js +4 -0
  155. package/lib/errors/PromptExitError.d.ts +6 -0
  156. package/lib/errors/PromptExitError.js +11 -0
  157. package/lib/getStartedV2Actions.js +3 -3
  158. package/lib/hasFeature.js +1 -2
  159. package/lib/link/accountTableUtils.d.ts +10 -0
  160. package/lib/link/accountTableUtils.js +39 -0
  161. package/lib/link/index.d.ts +18 -0
  162. package/lib/link/index.js +185 -0
  163. package/lib/link/linkUtils.d.ts +5 -0
  164. package/lib/link/linkUtils.js +49 -0
  165. package/lib/link/prompts.d.ts +7 -0
  166. package/lib/link/prompts.js +126 -0
  167. package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
  168. package/lib/link/renderLinkedAccountsTable.js +14 -0
  169. package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
  170. package/lib/link/warnIfLinkedDirectory.js +9 -0
  171. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  172. package/lib/middleware/commandTargetingUtils.js +1 -0
  173. package/lib/process.d.ts +1 -1
  174. package/lib/process.js +10 -3
  175. package/lib/projects/ProjectLogsManager.js +6 -3
  176. package/lib/projects/components.js +15 -4
  177. package/lib/projects/create/index.js +2 -2
  178. package/lib/projects/create/legacy.js +2 -2
  179. package/lib/projects/create/v2.js +4 -5
  180. package/lib/projects/delete.d.ts +13 -0
  181. package/lib/projects/delete.js +193 -0
  182. package/lib/projects/deploy.d.ts +1 -1
  183. package/lib/projects/deploy.js +2 -2
  184. package/lib/projects/localDev/AppDevModeInterface.js +13 -9
  185. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +4 -1
  186. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +3 -3
  187. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  188. package/lib/projects/localDev/DevSessionManager.js +31 -19
  189. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +5 -0
  190. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +21 -10
  191. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  192. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  193. package/lib/projects/localDev/LocalDevState.js +3 -1
  194. package/lib/projects/localDev/LocalDevWebsocketServer.js +1 -1
  195. package/lib/projects/localDev/UIExtensionsDevModeInterface.js +2 -0
  196. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  197. package/lib/projects/localDev/helpers/account.js +21 -30
  198. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  199. package/lib/projects/localDev/helpers/process.js +4 -10
  200. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  201. package/lib/projects/localDev/helpers/project.js +32 -16
  202. package/lib/projects/npmAuditOnUpload.d.ts +10 -0
  203. package/lib/projects/npmAuditOnUpload.js +73 -0
  204. package/lib/projects/pollProjectBuildAndDeploy.d.ts +5 -1
  205. package/lib/projects/pollProjectBuildAndDeploy.js +3 -2
  206. package/lib/projects/preview.d.ts +7 -0
  207. package/lib/projects/preview.js +48 -0
  208. package/lib/projects/projectInfo.d.ts +5 -0
  209. package/lib/projects/projectInfo.js +82 -0
  210. package/lib/projects/projectProfiles.d.ts +1 -2
  211. package/lib/projects/projectProfiles.js +5 -17
  212. package/lib/projects/uieLinting.d.ts +21 -3
  213. package/lib/projects/uieLinting.js +132 -28
  214. package/lib/projects/upload.d.ts +3 -1
  215. package/lib/projects/upload.js +46 -7
  216. package/lib/projects/validateLintConfigOnUpload.d.ts +9 -0
  217. package/lib/projects/validateLintConfigOnUpload.js +45 -0
  218. package/lib/projects/workspaces.d.ts +60 -0
  219. package/lib/projects/workspaces.js +411 -0
  220. package/lib/prompts/createApiSamplePrompt.js +4 -0
  221. package/lib/prompts/downloadProjectPrompt.js +11 -10
  222. package/lib/prompts/installAppPrompt.js +3 -2
  223. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -5
  224. package/lib/prompts/personalAccessKeyPrompt.js +10 -7
  225. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
  226. package/lib/prompts/projectDevTargetAccountPrompt.js +23 -16
  227. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  228. package/lib/prompts/projectProfilePrompt.js +46 -0
  229. package/lib/prompts/projectsLogsPrompt.js +3 -0
  230. package/lib/prompts/promptUtils.js +4 -2
  231. package/lib/prompts/selectAppPrompt.js +1 -0
  232. package/lib/prompts/selectHubDBTablePrompt.js +8 -4
  233. package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
  234. package/lib/prompts/setAsDefaultAccountPrompt.js +2 -1
  235. package/lib/sandboxes.d.ts +1 -9
  236. package/lib/sandboxes.js +0 -21
  237. package/lib/serverlessLogs.js +2 -2
  238. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  239. package/lib/theme/cmsDevServerProcess.js +8 -7
  240. package/lib/theme/migrate.d.ts +1 -1
  241. package/lib/theme/migrate.js +1 -5
  242. package/lib/ui/SpinniesManager.d.ts +1 -0
  243. package/lib/ui/SpinniesManager.js +22 -6
  244. package/lib/ui/accountTable.d.ts +8 -0
  245. package/lib/ui/accountTable.js +67 -0
  246. package/lib/ui/appLogs.d.ts +32 -0
  247. package/lib/ui/appLogs.js +175 -0
  248. package/lib/ui/spinniesUtils.d.ts +0 -1
  249. package/lib/ui/spinniesUtils.js +6 -16
  250. package/lib/usageTracking.d.ts +9 -20
  251. package/lib/usageTracking.js +68 -30
  252. package/lib/yargs/makeWrappedYargsHandler.d.ts +3 -0
  253. package/lib/yargs/makeWrappedYargsHandler.js +121 -0
  254. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  255. package/lib/yargs/makeYargsBuilder.js +33 -0
  256. package/lib/yargs/parseYargsOrExit.d.ts +4 -0
  257. package/lib/yargs/parseYargsOrExit.js +25 -0
  258. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  259. package/lib/yargs/strictEnforceBoolean.js +13 -0
  260. package/lib/yargsUtils.d.ts +3 -16
  261. package/lib/yargsUtils.js +3 -48
  262. package/mcp-server/Tool.d.ts +15 -0
  263. package/mcp-server/Tool.js +53 -0
  264. package/mcp-server/server.js +43 -3
  265. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +4 -2
  266. package/mcp-server/tools/cms/HsCreateFunctionTool.js +10 -8
  267. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -2
  268. package/mcp-server/tools/cms/HsCreateModuleTool.js +12 -11
  269. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +4 -2
  270. package/mcp-server/tools/cms/HsCreateTemplateTool.js +10 -8
  271. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +4 -2
  272. package/mcp-server/tools/cms/HsFunctionLogsTool.js +10 -9
  273. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +4 -2
  274. package/mcp-server/tools/cms/HsListFunctionsTool.js +10 -9
  275. package/mcp-server/tools/cms/HsListTool.d.ts +4 -2
  276. package/mcp-server/tools/cms/HsListTool.js +10 -8
  277. package/mcp-server/tools/index.d.ts +3 -2
  278. package/mcp-server/tools/index.js +24 -22
  279. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +6 -3
  280. package/mcp-server/tools/project/AddFeatureToProjectTool.js +9 -7
  281. package/mcp-server/tools/project/CreateProjectTool.d.ts +6 -3
  282. package/mcp-server/tools/project/CreateProjectTool.js +10 -7
  283. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +4 -2
  284. package/mcp-server/tools/project/CreateTestAccountTool.js +21 -9
  285. package/mcp-server/tools/project/DeployProjectTool.d.ts +4 -2
  286. package/mcp-server/tools/project/DeployProjectTool.js +5 -7
  287. package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
  288. package/mcp-server/tools/project/DocFetchTool.js +8 -6
  289. package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
  290. package/mcp-server/tools/project/DocsSearchTool.js +32 -9
  291. package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
  292. package/mcp-server/tools/project/FindProjectsTool.js +60 -0
  293. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +4 -2
  294. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +8 -6
  295. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +4 -2
  296. package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
  297. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +4 -2
  298. package/mcp-server/tools/project/GetBuildLogsTool.js +9 -7
  299. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +4 -2
  300. package/mcp-server/tools/project/GetBuildStatusTool.js +9 -7
  301. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -2
  302. package/mcp-server/tools/project/GetConfigValuesTool.js +12 -7
  303. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +4 -2
  304. package/mcp-server/tools/project/GuidedWalkthroughTool.js +4 -6
  305. package/mcp-server/tools/project/UploadProjectTools.d.ts +4 -2
  306. package/mcp-server/tools/project/UploadProjectTools.js +10 -8
  307. package/mcp-server/tools/project/ValidateProjectTool.d.ts +4 -2
  308. package/mcp-server/tools/project/ValidateProjectTool.js +9 -7
  309. package/mcp-server/tools/project/constants.d.ts +2 -1
  310. package/mcp-server/tools/project/constants.js +2 -1
  311. package/mcp-server/types.d.ts +0 -7
  312. package/mcp-server/types.js +1 -13
  313. package/mcp-server/utils/command.js +3 -1
  314. package/mcp-server/utils/config.js +1 -0
  315. package/mcp-server/utils/logger.d.ts +10 -0
  316. package/mcp-server/utils/logger.js +29 -0
  317. package/mcp-server/utils/toolUsageTracking.js +10 -8
  318. package/package.json +16 -11
  319. package/types/Link.d.ts +32 -0
  320. package/types/Link.js +5 -0
  321. package/types/LocalDev.d.ts +5 -0
  322. package/types/PackageJson.d.ts +1 -0
  323. package/types/Projects.d.ts +19 -0
  324. package/types/Prompts.d.ts +1 -0
  325. package/types/Yargs.d.ts +19 -1
  326. package/ui/components/ActionSection.d.ts +1 -1
  327. package/ui/components/InputField.d.ts +1 -1
  328. package/ui/components/SelectInput.d.ts +1 -1
  329. package/ui/components/StatusIcon.d.ts +1 -1
  330. package/ui/components/Table.d.ts +5 -5
  331. package/ui/components/getStarted/GetStartedFlow.d.ts +1 -1
  332. package/ui/components/getStarted/screens/InstallationScreen.d.ts +1 -1
  333. package/ui/components/getStarted/screens/ProjectSetupScreen.d.ts +1 -1
  334. package/ui/components/getStarted/screens/UploadScreen.d.ts +1 -1
  335. package/api/__tests__/migrate.test.d.ts +0 -1
  336. package/api/__tests__/migrate.test.js +0 -199
  337. package/commands/__tests__/account.test.d.ts +0 -1
  338. package/commands/__tests__/account.test.js +0 -69
  339. package/commands/__tests__/auth.test.d.ts +0 -1
  340. package/commands/__tests__/auth.test.js +0 -43
  341. package/commands/__tests__/cms.test.d.ts +0 -1
  342. package/commands/__tests__/cms.test.js +0 -87
  343. package/commands/__tests__/config.test.d.ts +0 -1
  344. package/commands/__tests__/config.test.js +0 -44
  345. package/commands/__tests__/customObject.test.d.ts +0 -1
  346. package/commands/__tests__/customObject.test.js +0 -68
  347. package/commands/__tests__/doctor.test.d.ts +0 -1
  348. package/commands/__tests__/doctor.test.js +0 -132
  349. package/commands/__tests__/feedback.test.d.ts +0 -1
  350. package/commands/__tests__/feedback.test.js +0 -24
  351. package/commands/__tests__/filemanager.test.d.ts +0 -1
  352. package/commands/__tests__/filemanager.test.js +0 -45
  353. package/commands/__tests__/getStarted.test.d.ts +0 -1
  354. package/commands/__tests__/getStarted.test.js +0 -173
  355. package/commands/__tests__/hubdb.test.d.ts +0 -1
  356. package/commands/__tests__/hubdb.test.js +0 -50
  357. package/commands/__tests__/init.test.d.ts +0 -1
  358. package/commands/__tests__/init.test.js +0 -42
  359. package/commands/__tests__/mcp.test.d.ts +0 -1
  360. package/commands/__tests__/mcp.test.js +0 -46
  361. package/commands/__tests__/open.test.d.ts +0 -1
  362. package/commands/__tests__/open.test.js +0 -58
  363. package/commands/__tests__/project.test.d.ts +0 -1
  364. package/commands/__tests__/project.test.js +0 -125
  365. package/commands/__tests__/sandbox.test.d.ts +0 -1
  366. package/commands/__tests__/sandbox.test.js +0 -44
  367. package/commands/__tests__/secret.test.d.ts +0 -1
  368. package/commands/__tests__/secret.test.js +0 -49
  369. package/commands/__tests__/testAccount.test.d.ts +0 -1
  370. package/commands/__tests__/testAccount.test.js +0 -57
  371. package/commands/__tests__/upgrade.test.d.ts +0 -1
  372. package/commands/__tests__/upgrade.test.js +0 -309
  373. package/commands/account/__tests__/auth.test.d.ts +0 -1
  374. package/commands/account/__tests__/auth.test.js +0 -206
  375. package/commands/account/__tests__/clean.test.d.ts +0 -1
  376. package/commands/account/__tests__/clean.test.js +0 -28
  377. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  378. package/commands/account/__tests__/createOverride.test.js +0 -32
  379. package/commands/account/__tests__/info.test.d.ts +0 -1
  380. package/commands/account/__tests__/info.test.js +0 -28
  381. package/commands/account/__tests__/list.test.d.ts +0 -1
  382. package/commands/account/__tests__/list.test.js +0 -153
  383. package/commands/account/__tests__/remove.test.d.ts +0 -1
  384. package/commands/account/__tests__/remove.test.js +0 -36
  385. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  386. package/commands/account/__tests__/removeOverride.js +0 -25
  387. package/commands/account/__tests__/rename.test.d.ts +0 -1
  388. package/commands/account/__tests__/rename.test.js +0 -82
  389. package/commands/account/__tests__/use.test.d.ts +0 -1
  390. package/commands/account/__tests__/use.test.js +0 -170
  391. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  392. package/commands/app/__tests__/migrate.test.js +0 -111
  393. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  394. package/commands/app/secret/__tests__/add.test.js +0 -140
  395. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  396. package/commands/app/secret/__tests__/delete.test.js +0 -28
  397. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  398. package/commands/app/secret/__tests__/list.test.js +0 -25
  399. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  400. package/commands/app/secret/__tests__/update.test.js +0 -28
  401. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  402. package/commands/cms/__tests__/delete.test.js +0 -39
  403. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  404. package/commands/cms/__tests__/fetch.test.js +0 -156
  405. package/commands/cms/__tests__/function.test.d.ts +0 -1
  406. package/commands/cms/__tests__/function.test.js +0 -50
  407. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  408. package/commands/cms/__tests__/lint.test.js +0 -33
  409. package/commands/cms/__tests__/list.test.d.ts +0 -1
  410. package/commands/cms/__tests__/list.test.js +0 -42
  411. package/commands/cms/__tests__/module.test.d.ts +0 -1
  412. package/commands/cms/__tests__/module.test.js +0 -45
  413. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  414. package/commands/cms/__tests__/mv.test.js +0 -46
  415. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  416. package/commands/cms/__tests__/theme.test.js +0 -54
  417. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  418. package/commands/cms/__tests__/upload.test.js +0 -308
  419. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  420. package/commands/cms/__tests__/watch.test.js +0 -204
  421. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  422. package/commands/cms/function/__tests__/logs.test.js +0 -70
  423. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  424. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  425. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  426. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  427. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  428. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  429. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  430. package/commands/customObject/__tests__/create.test.js +0 -40
  431. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  432. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  433. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  434. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  435. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  436. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  437. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  438. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  439. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  440. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  441. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  442. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  443. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  444. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  445. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  446. package/commands/filemanager/__tests__/upload.test.js +0 -191
  447. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  448. package/commands/hubdb/__tests__/clear.test.js +0 -28
  449. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  450. package/commands/hubdb/__tests__/create.test.js +0 -28
  451. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  452. package/commands/hubdb/__tests__/delete.test.js +0 -28
  453. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  454. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  455. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  456. package/commands/hubdb/__tests__/list.test.js +0 -88
  457. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  458. package/commands/mcp/__tests__/setup.test.js +0 -26
  459. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  460. package/commands/mcp/__tests__/start.test.js +0 -144
  461. package/commands/project/__tests__/add.test.d.ts +0 -1
  462. package/commands/project/__tests__/add.test.js +0 -107
  463. package/commands/project/__tests__/create.test.d.ts +0 -1
  464. package/commands/project/__tests__/create.test.js +0 -97
  465. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  466. package/commands/project/__tests__/deploy.test.js +0 -307
  467. package/commands/project/__tests__/dev.test.d.ts +0 -1
  468. package/commands/project/__tests__/dev.test.js +0 -273
  469. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  470. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  471. package/commands/project/__tests__/download.test.d.ts +0 -1
  472. package/commands/project/__tests__/download.test.js +0 -39
  473. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  474. package/commands/project/__tests__/installDeps.test.js +0 -140
  475. package/commands/project/__tests__/lint.test.d.ts +0 -1
  476. package/commands/project/__tests__/lint.test.js +0 -704
  477. package/commands/project/__tests__/list.test.d.ts +0 -1
  478. package/commands/project/__tests__/list.test.js +0 -31
  479. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  480. package/commands/project/__tests__/listBuilds.test.js +0 -38
  481. package/commands/project/__tests__/logs.test.d.ts +0 -1
  482. package/commands/project/__tests__/logs.test.js +0 -202
  483. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  484. package/commands/project/__tests__/migrate.test.js +0 -106
  485. package/commands/project/__tests__/open.test.d.ts +0 -1
  486. package/commands/project/__tests__/open.test.js +0 -39
  487. package/commands/project/__tests__/profile.test.d.ts +0 -1
  488. package/commands/project/__tests__/profile.test.js +0 -42
  489. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  490. package/commands/project/__tests__/updateDeps.test.js +0 -140
  491. package/commands/project/__tests__/upload.test.d.ts +0 -1
  492. package/commands/project/__tests__/upload.test.js +0 -234
  493. package/commands/project/__tests__/validate.test.d.ts +0 -1
  494. package/commands/project/__tests__/validate.test.js +0 -381
  495. package/commands/project/__tests__/watch.test.d.ts +0 -1
  496. package/commands/project/__tests__/watch.test.js +0 -35
  497. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  498. package/commands/sandbox/__tests__/create.test.js +0 -245
  499. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  500. package/commands/sandbox/__tests__/delete.test.js +0 -31
  501. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  502. package/commands/secret/__tests__/addSecret.test.js +0 -162
  503. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  504. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  505. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  506. package/commands/secret/__tests__/listSecret.test.js +0 -29
  507. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  508. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  509. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  510. package/commands/testAccount/__tests__/create.test.js +0 -106
  511. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  512. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  513. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  514. package/commands/testAccount/__tests__/delete.test.js +0 -29
  515. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  516. package/commands/testAccount/__tests__/importData.test.js +0 -92
  517. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  518. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  519. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  520. package/lib/__tests__/accountAuth.test.js +0 -258
  521. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  522. package/lib/__tests__/accountTypes.test.js +0 -98
  523. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  524. package/lib/__tests__/buildAccount.test.js +0 -262
  525. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  526. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  527. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  528. package/lib/__tests__/commandSuggestion.test.js +0 -121
  529. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  530. package/lib/__tests__/commonOpts.test.js +0 -80
  531. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  532. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  533. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  534. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  535. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  536. package/lib/__tests__/hasFeature.test.js +0 -167
  537. package/lib/__tests__/http.test.d.ts +0 -1
  538. package/lib/__tests__/http.test.js +0 -40
  539. package/lib/__tests__/importData.test.d.ts +0 -1
  540. package/lib/__tests__/importData.test.js +0 -98
  541. package/lib/__tests__/npmCli.test.d.ts +0 -1
  542. package/lib/__tests__/npmCli.test.js +0 -84
  543. package/lib/__tests__/oauth.test.d.ts +0 -1
  544. package/lib/__tests__/oauth.test.js +0 -109
  545. package/lib/__tests__/parsing.test.d.ts +0 -1
  546. package/lib/__tests__/parsing.test.js +0 -34
  547. package/lib/__tests__/polling.test.d.ts +0 -1
  548. package/lib/__tests__/polling.test.js +0 -76
  549. package/lib/__tests__/process.test.d.ts +0 -1
  550. package/lib/__tests__/process.test.js +0 -89
  551. package/lib/__tests__/sandboxSync.test.d.ts +0 -1
  552. package/lib/__tests__/sandboxSync.test.js +0 -147
  553. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  554. package/lib/__tests__/sandboxes.test.js +0 -156
  555. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  556. package/lib/__tests__/serverlessLogs.test.js +0 -163
  557. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  558. package/lib/__tests__/usageTracking.test.js +0 -197
  559. package/lib/__tests__/validation.test.d.ts +0 -1
  560. package/lib/__tests__/validation.test.js +0 -143
  561. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  562. package/lib/__tests__/yargsUtils.test.js +0 -124
  563. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  564. package/lib/app/__tests__/migrate.test.js +0 -638
  565. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  566. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  567. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  568. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  569. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  570. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  571. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  572. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  573. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  574. package/lib/mcp/__tests__/setup.test.js +0 -523
  575. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  576. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  577. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  578. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  579. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  580. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  581. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  582. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  583. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  584. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  585. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  586. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  587. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  588. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  589. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  590. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  591. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  592. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  593. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  594. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  595. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  596. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  597. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  598. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  599. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  600. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  601. package/lib/projects/__tests__/components.test.d.ts +0 -1
  602. package/lib/projects/__tests__/components.test.js +0 -426
  603. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  604. package/lib/projects/__tests__/deploy.test.js +0 -231
  605. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  606. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  607. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  608. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  609. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  610. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  611. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  612. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  613. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  614. package/lib/projects/__tests__/projects.test.js +0 -58
  615. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  616. package/lib/projects/__tests__/structure.test.js +0 -210
  617. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  618. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  619. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  620. package/lib/projects/__tests__/upload.test.js +0 -183
  621. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  622. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  623. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  624. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  625. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  626. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  627. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  628. package/lib/projects/create/__tests__/v2.test.js +0 -257
  629. package/lib/projects/platformVersion.d.ts +0 -9
  630. package/lib/projects/platformVersion.js +0 -39
  631. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  632. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  633. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  634. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  635. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  636. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  637. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  638. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  639. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  640. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  641. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  642. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  643. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  644. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  645. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  646. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  647. package/lib/sandboxSync.d.ts +0 -4
  648. package/lib/sandboxSync.js +0 -102
  649. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  650. package/lib/theme/__tests__/migrate.test.js +0 -256
  651. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  652. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  653. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  654. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  655. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  656. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  657. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  658. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  659. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  660. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  661. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  662. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  663. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  664. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  665. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  666. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  667. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  668. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  669. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  670. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -132
  671. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  672. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  673. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  674. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  675. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  676. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  677. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  678. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  679. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  680. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  681. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  682. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  683. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  684. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  685. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  686. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  687. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  688. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  689. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  690. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  691. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  692. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  693. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  694. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  695. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  696. package/mcp-server/utils/__tests__/command.test.js +0 -275
  697. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  698. package/mcp-server/utils/__tests__/content.test.js +0 -164
  699. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  700. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -1,46 +0,0 @@
1
- import yargs from 'yargs';
2
- import * as commonOpts from '../../../lib/commonOpts.js';
3
- import mvCommand from '../mv.js';
4
- vi.mock('../../../lib/commonOpts');
5
- const positionalSpy = vi
6
- .spyOn(yargs, 'positional')
7
- .mockReturnValue(yargs);
8
- describe('commands/cms/mv', () => {
9
- describe('command', () => {
10
- it('should have the correct command structure', () => {
11
- expect(mvCommand.command).toBe('mv <srcPath> <destPath>');
12
- });
13
- });
14
- describe('describe', () => {
15
- it('should provide a description', () => {
16
- expect(mvCommand.describe).toBeDefined();
17
- });
18
- });
19
- describe('builder', () => {
20
- it('should support the correct options', () => {
21
- mvCommand.builder(yargs);
22
- expect(commonOpts.addGlobalOptions).toHaveBeenCalledTimes(1);
23
- expect(commonOpts.addGlobalOptions).toHaveBeenCalledWith(yargs);
24
- expect(commonOpts.addConfigOptions).toHaveBeenCalledTimes(1);
25
- expect(commonOpts.addConfigOptions).toHaveBeenCalledWith(yargs);
26
- expect(commonOpts.addAccountOptions).toHaveBeenCalledTimes(1);
27
- expect(commonOpts.addAccountOptions).toHaveBeenCalledWith(yargs);
28
- expect(commonOpts.addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
29
- expect(commonOpts.addUseEnvironmentOptions).toHaveBeenCalledWith(yargs);
30
- });
31
- it('should add the srcPath positional argument', () => {
32
- mvCommand.builder(yargs);
33
- expect(positionalSpy).toHaveBeenCalledWith('srcPath', {
34
- describe: 'Remote hubspot path',
35
- type: 'string',
36
- });
37
- });
38
- it('should add the destPath positional argument', () => {
39
- mvCommand.builder(yargs);
40
- expect(positionalSpy).toHaveBeenCalledWith('destPath', {
41
- describe: 'Remote hubspot path',
42
- type: 'string',
43
- });
44
- });
45
- });
46
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,54 +0,0 @@
1
- import yargs from 'yargs';
2
- import preview from '../theme/preview.js';
3
- import generateSelectors from '../theme/generate-selectors.js';
4
- import marketplaceValidate from '../theme/marketplace-validate.js';
5
- import create from '../theme/create.js';
6
- import themeCommands from '../theme.js';
7
- vi.mock('../theme/preview');
8
- vi.mock('../theme/generate-selectors');
9
- vi.mock('../theme/marketplace-validate');
10
- vi.mock('../theme/create');
11
- vi.mock('../../lib/commonOpts');
12
- const commandSpy = vi
13
- .spyOn(yargs, 'command')
14
- .mockReturnValue(yargs);
15
- const demandCommandSpy = vi
16
- .spyOn(yargs, 'demandCommand')
17
- .mockReturnValue(yargs);
18
- describe('commands/cms/theme', () => {
19
- describe('command', () => {
20
- it('should have the correct command structure', () => {
21
- expect(themeCommands.command).toEqual(['theme', 'themes']);
22
- });
23
- });
24
- describe('describe', () => {
25
- it('should provide a description', () => {
26
- expect(themeCommands.describe).toBeDefined();
27
- });
28
- });
29
- describe('builder', () => {
30
- beforeEach(() => {
31
- commandSpy.mockClear();
32
- demandCommandSpy.mockClear();
33
- });
34
- const subcommands = [
35
- preview,
36
- generateSelectors,
37
- marketplaceValidate,
38
- create,
39
- ];
40
- it('should demand the command takes one positional argument', () => {
41
- themeCommands.builder(yargs);
42
- expect(demandCommandSpy).toHaveBeenCalledTimes(1);
43
- expect(demandCommandSpy).toHaveBeenCalledWith(1, '');
44
- });
45
- it('should add the correct number of sub commands', () => {
46
- themeCommands.builder(yargs);
47
- expect(commandSpy).toHaveBeenCalledTimes(subcommands.length);
48
- });
49
- it.each(subcommands)('should attach the %s subcommand', module => {
50
- themeCommands.builder(yargs);
51
- expect(commandSpy).toHaveBeenCalledWith(module);
52
- });
53
- });
54
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,308 +0,0 @@
1
- import yargs from 'yargs';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import * as uploadFolderLib from '@hubspot/local-dev-lib/cms/uploadFolder';
5
- import * as fileMapperLib from '@hubspot/local-dev-lib/api/fileMapper';
6
- import * as pathLib from '@hubspot/local-dev-lib/path';
7
- import * as modulesLib from '@hubspot/local-dev-lib/cms/modules';
8
- import * as ignoreRulesLib from '@hubspot/local-dev-lib/ignoreRules';
9
- import * as themesLib from '@hubspot/local-dev-lib/cms/themes';
10
- import * as configLib from '@hubspot/local-dev-lib/config';
11
- import { uiLogger } from '../../../lib/ui/logger.js';
12
- import * as errorHandlers from '../../../lib/errorHandlers/index.js';
13
- import * as commonOpts from '../../../lib/commonOpts.js';
14
- import * as uploadPromptLib from '../../../lib/prompts/uploadPrompt.js';
15
- import * as promptUtilsLib from '../../../lib/prompts/promptUtils.js';
16
- import * as validationLib from '../../../lib/validation.js';
17
- import * as usageTrackingLib from '../../../lib/usageTracking.js';
18
- import * as uploadLib from '../../../lib/upload.js';
19
- import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
20
- import uploadCommand from '../upload.js';
21
- vi.mock('fs');
22
- vi.mock('@hubspot/local-dev-lib/cms/uploadFolder');
23
- vi.mock('@hubspot/local-dev-lib/api/fileMapper');
24
- vi.mock('@hubspot/local-dev-lib/path');
25
- vi.mock('@hubspot/local-dev-lib/cms/modules');
26
- vi.mock('@hubspot/local-dev-lib/ignoreRules');
27
- vi.mock('@hubspot/local-dev-lib/cms/themes');
28
- vi.mock('@hubspot/local-dev-lib/config');
29
- vi.mock('../../../lib/errorHandlers/index.js');
30
- vi.mock('../../../lib/commonOpts.js');
31
- vi.mock('../../../lib/prompts/uploadPrompt.js');
32
- vi.mock('../../../lib/prompts/promptUtils.js');
33
- vi.mock('../../../lib/validation.js');
34
- vi.mock('../../../lib/upload.js');
35
- const uploadFolderSpy = vi.spyOn(uploadFolderLib, 'uploadFolder');
36
- const uploadSpy = vi.spyOn(fileMapperLib, 'upload');
37
- const deleteFileSpy = vi.spyOn(fileMapperLib, 'deleteFile');
38
- const statSyncSpy = vi.spyOn(fs, 'statSync');
39
- const validateSrcAndDestPathsSpy = vi.spyOn(modulesLib, 'validateSrcAndDestPaths');
40
- const shouldIgnoreFileSpy = vi.spyOn(ignoreRulesLib, 'shouldIgnoreFile');
41
- const isAllowedExtensionSpy = vi.spyOn(pathLib, 'isAllowedExtension');
42
- const getCwdSpy = vi.spyOn(pathLib, 'getCwd');
43
- const convertToUnixPathSpy = vi.spyOn(pathLib, 'convertToUnixPath');
44
- const uploadPromptSpy = vi.spyOn(uploadPromptLib, 'uploadPrompt');
45
- const confirmPromptSpy = vi.spyOn(promptUtilsLib, 'confirmPrompt');
46
- const validateCmsPublishModeSpy = vi.spyOn(validationLib, 'validateCmsPublishMode');
47
- const trackCommandUsageSpy = vi.spyOn(usageTrackingLib, 'trackCommandUsage');
48
- const getUploadableFileListSpy = vi.spyOn(uploadLib, 'getUploadableFileList');
49
- const getCmsPublishModeSpy = vi.spyOn(commonOpts, 'getCmsPublishMode');
50
- const getThemePreviewUrlSpy = vi.spyOn(themesLib, 'getThemePreviewUrl');
51
- const getThemeJSONPathSpy = vi.spyOn(themesLib, 'getThemeJSONPath');
52
- const hasUploadErrorsSpy = vi.spyOn(uploadFolderLib, 'hasUploadErrors');
53
- const processExitSpy = vi.spyOn(process, 'exit');
54
- const logErrorSpy = vi.spyOn(errorHandlers, 'logError');
55
- const getConfigAccountIfExistsSpy = vi.spyOn(configLib, 'getConfigAccountIfExists');
56
- describe('commands/cms/upload', () => {
57
- beforeEach(() => {
58
- // @ts-expect-error Mock implementation
59
- processExitSpy.mockImplementation(() => { });
60
- getCwdSpy.mockReturnValue('/test/cwd');
61
- convertToUnixPathSpy.mockImplementation(p => p.replace(/\\/g, '/'));
62
- validateCmsPublishModeSpy.mockReturnValue(true);
63
- getCmsPublishModeSpy.mockReturnValue('publish');
64
- uploadPromptSpy.mockResolvedValue({ src: '', dest: '' });
65
- validateSrcAndDestPathsSpy.mockResolvedValue([]);
66
- getThemeJSONPathSpy.mockReturnValue(null);
67
- getThemePreviewUrlSpy.mockReturnValue(undefined);
68
- // Mock config to prevent reading actual config file in CI
69
- getConfigAccountIfExistsSpy.mockReturnValue(undefined);
70
- });
71
- describe('command', () => {
72
- it('should have the correct command structure', () => {
73
- expect(uploadCommand.command).toEqual('upload [src] [dest]');
74
- });
75
- });
76
- describe('describe', () => {
77
- it('should provide a description', () => {
78
- expect(uploadCommand.describe).toBeDefined();
79
- });
80
- });
81
- describe('builder', () => {
82
- it('should support the correct options', () => {
83
- const optionsSpy = vi.spyOn(yargs, 'option');
84
- const positionalSpy = vi.spyOn(yargs, 'positional');
85
- uploadCommand.builder(yargs);
86
- expect(positionalSpy).toHaveBeenCalledWith('src', expect.objectContaining({ type: 'string' }));
87
- expect(positionalSpy).toHaveBeenCalledWith('dest', expect.objectContaining({ type: 'string' }));
88
- expect(optionsSpy).toHaveBeenCalledWith('field-options', expect.objectContaining({ type: 'array' }));
89
- expect(optionsSpy).toHaveBeenCalledWith('save-output', expect.objectContaining({ type: 'boolean' }));
90
- expect(optionsSpy).toHaveBeenCalledWith('convert-fields', expect.objectContaining({ type: 'boolean' }));
91
- expect(optionsSpy).toHaveBeenCalledWith('clean', expect.objectContaining({ type: 'boolean' }));
92
- expect(optionsSpy).toHaveBeenCalledWith('force', expect.objectContaining({ type: 'boolean' }));
93
- });
94
- });
95
- describe('handler', () => {
96
- let args;
97
- beforeEach(() => {
98
- args = {
99
- src: 'test.js',
100
- dest: '/dest/test.js',
101
- derivedAccountId: 123456,
102
- };
103
- });
104
- describe('validation', () => {
105
- it('should exit if CMS publish mode validation fails', async () => {
106
- validateCmsPublishModeSpy.mockReturnValue(false);
107
- await uploadCommand.handler(args);
108
- expect(validateCmsPublishModeSpy).toHaveBeenCalledWith(args);
109
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.WARNING);
110
- });
111
- it('should prompt for src and dest when not provided', async () => {
112
- delete args.src;
113
- delete args.dest;
114
- uploadPromptSpy.mockResolvedValue({
115
- src: 'prompted.js',
116
- dest: '/prompted/dest.js',
117
- });
118
- statSyncSpy.mockReturnValue({
119
- isFile: () => true,
120
- isDirectory: () => false,
121
- });
122
- isAllowedExtensionSpy.mockReturnValue(true);
123
- shouldIgnoreFileSpy.mockReturnValue(false);
124
- // @ts-expect-error Mock return value doesn't need full type implementation
125
- uploadSpy.mockResolvedValue({});
126
- await uploadCommand.handler(args);
127
- expect(uploadPromptSpy).toHaveBeenCalledWith(args);
128
- expect(uploadSpy).toHaveBeenCalled();
129
- });
130
- it('should error if dest is not provided', async () => {
131
- args.dest = '';
132
- uploadPromptSpy.mockResolvedValue({ src: 'test.js', dest: '' });
133
- await uploadCommand.handler(args);
134
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('destination'));
135
- });
136
- it('should error if src path is invalid', async () => {
137
- statSyncSpy.mockImplementation(() => {
138
- throw new Error('File not found');
139
- });
140
- await uploadCommand.handler(args);
141
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('path to a file or folder'));
142
- });
143
- it('should error if src path is not a file or directory', async () => {
144
- statSyncSpy.mockReturnValue({
145
- isFile: () => false,
146
- isDirectory: () => false,
147
- });
148
- await uploadCommand.handler(args);
149
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('path to a file or folder'));
150
- });
151
- it('should exit if src/dest validation fails', async () => {
152
- statSyncSpy.mockReturnValue({
153
- isFile: () => true,
154
- isDirectory: () => false,
155
- });
156
- validateSrcAndDestPathsSpy.mockResolvedValue([
157
- { id: '1', message: 'Invalid path' },
158
- ]);
159
- await uploadCommand.handler(args);
160
- expect(uiLogger.error).toHaveBeenCalledWith('Invalid path');
161
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.WARNING);
162
- });
163
- });
164
- describe('file upload', () => {
165
- beforeEach(() => {
166
- statSyncSpy.mockReturnValue({
167
- isFile: () => true,
168
- isDirectory: () => false,
169
- });
170
- isAllowedExtensionSpy.mockReturnValue(true);
171
- shouldIgnoreFileSpy.mockReturnValue(false);
172
- });
173
- it('should track command usage for file uploads', async () => {
174
- // @ts-expect-error Mock return value doesn't need full type implementation
175
- uploadSpy.mockResolvedValue({});
176
- await uploadCommand.handler(args);
177
- expect(trackCommandUsageSpy).toHaveBeenCalledWith('upload', { mode: 'publish', type: 'file' }, 123456);
178
- });
179
- it('should upload a file successfully', async () => {
180
- // @ts-expect-error Mock return value doesn't need full type implementation
181
- uploadSpy.mockResolvedValue({});
182
- await uploadCommand.handler(args);
183
- expect(uploadSpy).toHaveBeenCalledWith(123456, path.resolve('/test/cwd', 'test.js'), '/dest/test.js', expect.any(Object));
184
- expect(uiLogger.success).toHaveBeenCalledWith(expect.stringMatching(/uploaded/i));
185
- });
186
- it('should error if file has disallowed extension', async () => {
187
- isAllowedExtensionSpy.mockReturnValue(false);
188
- await uploadCommand.handler(args);
189
- expect(uploadSpy).not.toHaveBeenCalled();
190
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('path to a file or folder'));
191
- });
192
- it('should error if file is ignored', async () => {
193
- shouldIgnoreFileSpy.mockReturnValue(true);
194
- await uploadCommand.handler(args);
195
- expect(uploadSpy).not.toHaveBeenCalled();
196
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('ignored'));
197
- });
198
- it('should handle upload errors', async () => {
199
- vi.useFakeTimers();
200
- const error = new Error('Upload failed');
201
- uploadSpy.mockRejectedValue(error);
202
- await uploadCommand.handler(args);
203
- await vi.runAllTimersAsync();
204
- expect(uiLogger.error).toHaveBeenCalled();
205
- expect(logErrorSpy).toHaveBeenCalledWith(error, expect.any(errorHandlers.ApiErrorContext));
206
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.WARNING);
207
- vi.useRealTimers();
208
- });
209
- it('should log theme preview URL if available', async () => {
210
- getThemePreviewUrlSpy.mockReturnValue('http://preview.url');
211
- // @ts-expect-error Mock return value doesn't need full type implementation
212
- uploadSpy.mockResolvedValue({});
213
- await uploadCommand.handler(args);
214
- expect(getThemePreviewUrlSpy).toHaveBeenCalledWith('test.js', 123456);
215
- expect(uiLogger.log).toHaveBeenCalledWith(expect.stringContaining('http://preview.url'));
216
- });
217
- });
218
- describe('folder upload', () => {
219
- beforeEach(() => {
220
- statSyncSpy.mockReturnValue({
221
- isFile: () => false,
222
- isDirectory: () => true,
223
- });
224
- getUploadableFileListSpy.mockResolvedValue([]);
225
- uploadFolderSpy.mockResolvedValue([]);
226
- hasUploadErrorsSpy.mockReturnValue(false);
227
- });
228
- it('should track command usage for folder uploads', async () => {
229
- await uploadCommand.handler(args);
230
- expect(trackCommandUsageSpy).toHaveBeenCalledWith('upload', { mode: 'publish', type: 'folder' }, 123456);
231
- });
232
- it('should upload a folder successfully', async () => {
233
- await uploadCommand.handler(args);
234
- expect(uploadFolderSpy).toHaveBeenCalledWith(123456, path.resolve('/test/cwd', 'test.js'), '/dest/test.js', {}, expect.objectContaining({
235
- convertFields: undefined,
236
- saveOutput: undefined,
237
- }), []);
238
- expect(uiLogger.success).toHaveBeenCalledWith(expect.stringContaining('complete'));
239
- });
240
- it('should handle clean upload with confirmation', async () => {
241
- args.clean = true;
242
- confirmPromptSpy.mockResolvedValue(true);
243
- // @ts-expect-error Mock return value doesn't need full type implementation
244
- deleteFileSpy.mockResolvedValue({});
245
- await uploadCommand.handler(args);
246
- expect(confirmPromptSpy).toHaveBeenCalled();
247
- expect(deleteFileSpy).toHaveBeenCalledWith(123456, '/dest/test.js');
248
- // Check that log was called multiple times (upload message + cleaning message)
249
- expect(uiLogger.log).toHaveBeenCalled();
250
- });
251
- it('should skip clean upload if not confirmed', async () => {
252
- args.clean = true;
253
- confirmPromptSpy.mockResolvedValue(false);
254
- await uploadCommand.handler(args);
255
- expect(deleteFileSpy).not.toHaveBeenCalled();
256
- });
257
- it('should force clean upload without confirmation', async () => {
258
- args.clean = true;
259
- args.force = true;
260
- // @ts-expect-error Mock return value doesn't need full type implementation
261
- deleteFileSpy.mockResolvedValue({});
262
- await uploadCommand.handler(args);
263
- expect(confirmPromptSpy).not.toHaveBeenCalled();
264
- expect(deleteFileSpy).toHaveBeenCalledWith(123456, '/dest/test.js');
265
- });
266
- it('should handle delete errors during clean upload', async () => {
267
- args.clean = true;
268
- args.force = true;
269
- const error = new Error('Delete failed');
270
- deleteFileSpy.mockRejectedValue(error);
271
- await uploadCommand.handler(args);
272
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('Deleting'));
273
- });
274
- it('should error if folder upload has errors', async () => {
275
- hasUploadErrorsSpy.mockReturnValue(true);
276
- await uploadCommand.handler(args);
277
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('failed'));
278
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.WARNING);
279
- });
280
- it('should handle folder upload errors', async () => {
281
- vi.useFakeTimers();
282
- const error = new Error('Folder upload failed');
283
- uploadFolderSpy.mockRejectedValue(error);
284
- await uploadCommand.handler(args);
285
- await vi.runAllTimersAsync();
286
- expect(uiLogger.error).toHaveBeenCalled();
287
- expect(logErrorSpy).toHaveBeenCalledWith(error, {
288
- accountId: 123456,
289
- });
290
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.WARNING);
291
- vi.useRealTimers();
292
- });
293
- it('should pass convertFields option to uploadFolder', async () => {
294
- args.convertFields = true;
295
- await uploadCommand.handler(args);
296
- expect(uploadFolderSpy).toHaveBeenCalledWith(123456, expect.any(String), expect.any(String), {}, expect.objectContaining({
297
- convertFields: true,
298
- }), expect.any(Array));
299
- });
300
- it('should generate uploadable file list with convertFields', async () => {
301
- args.convertFields = true;
302
- getUploadableFileListSpy.mockResolvedValue(['file1.js', 'file2.js']);
303
- await uploadCommand.handler(args);
304
- expect(getUploadableFileListSpy).toHaveBeenCalledWith(path.resolve('/test/cwd', 'test.js'), true);
305
- });
306
- });
307
- });
308
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,204 +0,0 @@
1
- import yargs from 'yargs';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import { AxiosError } from 'axios';
5
- import * as watchLib from '@hubspot/local-dev-lib/cms/watch';
6
- import * as pathLib from '@hubspot/local-dev-lib/path';
7
- import * as configLib from '@hubspot/local-dev-lib/config';
8
- import { uiLogger } from '../../../lib/ui/logger.js';
9
- import * as commonOpts from '../../../lib/commonOpts.js';
10
- import * as uploadPromptLib from '../../../lib/prompts/uploadPrompt.js';
11
- import * as validationLib from '../../../lib/validation.js';
12
- import * as usageTrackingLib from '../../../lib/usageTracking.js';
13
- import * as uploadLib from '../../../lib/upload.js';
14
- import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
15
- import watchCommand from '../watch.js';
16
- vi.mock('fs');
17
- vi.mock('@hubspot/local-dev-lib/cms/watch');
18
- vi.mock('@hubspot/local-dev-lib/path');
19
- vi.mock('@hubspot/local-dev-lib/config');
20
- vi.mock('../../../lib/commonOpts.js');
21
- vi.mock('../../../lib/prompts/uploadPrompt.js');
22
- vi.mock('../../../lib/validation.js');
23
- vi.mock('../../../lib/upload.js');
24
- const watchSpy = vi.spyOn(watchLib, 'watch');
25
- const statSyncSpy = vi.spyOn(fs, 'statSync');
26
- const getCwdSpy = vi.spyOn(pathLib, 'getCwd');
27
- const uploadPromptSpy = vi.spyOn(uploadPromptLib, 'uploadPrompt');
28
- const validateCmsPublishModeSpy = vi.spyOn(validationLib, 'validateCmsPublishMode');
29
- const getCmsPublishModeSpy = vi.spyOn(commonOpts, 'getCmsPublishMode');
30
- const trackCommandUsageSpy = vi.spyOn(usageTrackingLib, 'trackCommandUsage');
31
- const getUploadableFileListSpy = vi.spyOn(uploadLib, 'getUploadableFileList');
32
- const processExitSpy = vi.spyOn(process, 'exit');
33
- const getConfigAccountIfExistsSpy = vi.spyOn(configLib, 'getConfigAccountIfExists');
34
- describe('commands/cms/watch', () => {
35
- beforeEach(() => {
36
- // @ts-expect-error Mock implementation
37
- processExitSpy.mockImplementation(() => { });
38
- getCwdSpy.mockReturnValue('/test/cwd');
39
- validateCmsPublishModeSpy.mockReturnValue(true);
40
- getCmsPublishModeSpy.mockReturnValue('publish');
41
- uploadPromptSpy.mockResolvedValue({ src: '', dest: '' });
42
- // @ts-expect-error Mock return value doesn't need full type implementation
43
- watchSpy.mockImplementation(() => ({}));
44
- getUploadableFileListSpy.mockResolvedValue([]);
45
- // Mock config to prevent reading actual config file in CI
46
- getConfigAccountIfExistsSpy.mockReturnValue(undefined);
47
- });
48
- describe('command', () => {
49
- it('should have the correct command structure', () => {
50
- expect(watchCommand.command).toEqual('watch [src] [dest]');
51
- });
52
- });
53
- describe('describe', () => {
54
- it('should provide a description', () => {
55
- expect(watchCommand.describe).toBeDefined();
56
- });
57
- });
58
- describe('builder', () => {
59
- it('should support the correct options', () => {
60
- const positionalSpy = vi.spyOn(yargs, 'positional');
61
- const optionSpy = vi.spyOn(yargs, 'option');
62
- watchCommand.builder(yargs);
63
- expect(positionalSpy).toHaveBeenCalledWith('src', expect.objectContaining({ type: 'string' }));
64
- expect(positionalSpy).toHaveBeenCalledWith('dest', expect.objectContaining({ type: 'string' }));
65
- expect(optionSpy).toHaveBeenCalledWith('remove', expect.objectContaining({ type: 'boolean', alias: 'r' }));
66
- expect(optionSpy).toHaveBeenCalledWith('initial-upload', expect.objectContaining({ type: 'boolean', alias: 'i' }));
67
- expect(optionSpy).toHaveBeenCalledWith('notify', expect.objectContaining({ type: 'string', alias: 'n' }));
68
- expect(optionSpy).toHaveBeenCalledWith('convert-fields', expect.objectContaining({ type: 'boolean' }));
69
- });
70
- });
71
- describe('handler', () => {
72
- let args;
73
- beforeEach(() => {
74
- args = {
75
- src: 'src',
76
- dest: '/dest',
77
- derivedAccountId: 123456,
78
- remove: false,
79
- initialUpload: false,
80
- };
81
- statSyncSpy.mockReturnValue({
82
- isFile: () => false,
83
- isDirectory: () => true,
84
- });
85
- });
86
- describe('validation', () => {
87
- it('should exit if CMS publish mode validation fails', async () => {
88
- validateCmsPublishModeSpy.mockReturnValue(false);
89
- await watchCommand.handler(args);
90
- expect(validateCmsPublishModeSpy).toHaveBeenCalledWith(args);
91
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
92
- });
93
- it('should prompt for src and dest when not provided', async () => {
94
- delete args.src;
95
- delete args.dest;
96
- uploadPromptSpy.mockResolvedValue({
97
- src: 'prompted-src',
98
- dest: '/prompted-dest',
99
- });
100
- await watchCommand.handler(args);
101
- expect(uploadPromptSpy).toHaveBeenCalledWith(args);
102
- });
103
- it('should error if src path is invalid', async () => {
104
- statSyncSpy.mockImplementation(() => {
105
- throw new Error('File not found');
106
- });
107
- await watchCommand.handler(args);
108
- expect(uiLogger.log).toHaveBeenCalledWith(expect.stringContaining('path to a directory'));
109
- expect(watchSpy).not.toHaveBeenCalled();
110
- });
111
- it('should error if src path is not a directory', async () => {
112
- statSyncSpy.mockReturnValue({
113
- isFile: () => true,
114
- isDirectory: () => false,
115
- });
116
- await watchCommand.handler(args);
117
- expect(uiLogger.log).toHaveBeenCalledWith(expect.stringContaining('path to a directory'));
118
- expect(watchSpy).not.toHaveBeenCalled();
119
- });
120
- it('should error if dest is not provided', async () => {
121
- args.dest = '';
122
- uploadPromptSpy.mockResolvedValue({ src: 'src', dest: '' });
123
- await watchCommand.handler(args);
124
- expect(uiLogger.log).toHaveBeenCalledWith(expect.stringContaining('destination'));
125
- expect(watchSpy).not.toHaveBeenCalled();
126
- });
127
- });
128
- describe('watch execution', () => {
129
- it('should track command usage', async () => {
130
- await watchCommand.handler(args);
131
- expect(trackCommandUsageSpy).toHaveBeenCalledWith('watch', { mode: 'publish' }, 123456);
132
- });
133
- it('should start watching without initial upload by default', async () => {
134
- await watchCommand.handler(args);
135
- expect(getUploadableFileListSpy).not.toHaveBeenCalled();
136
- expect(watchSpy).toHaveBeenCalledWith(123456, path.resolve('/test/cwd', 'src'), '/dest', expect.objectContaining({
137
- cmsPublishMode: 'publish',
138
- remove: false,
139
- disableInitial: true,
140
- }), null, expect.any(Function), undefined, expect.any(Function));
141
- });
142
- it('should generate uploadable file list when initialUpload is true', async () => {
143
- args.initialUpload = true;
144
- getUploadableFileListSpy.mockResolvedValue(['file1.js', 'file2.js']);
145
- await watchCommand.handler(args);
146
- expect(getUploadableFileListSpy).toHaveBeenCalledWith(path.resolve('/test/cwd', 'src'), undefined);
147
- expect(watchSpy).toHaveBeenCalledWith(123456, expect.any(String), expect.any(String), expect.objectContaining({
148
- disableInitial: false,
149
- filePaths: ['file1.js', 'file2.js'],
150
- }), null, expect.any(Function), undefined, expect.any(Function));
151
- });
152
- it('should pass remove option to watch', async () => {
153
- args.remove = true;
154
- await watchCommand.handler(args);
155
- expect(watchSpy).toHaveBeenCalledWith(123456, expect.any(String), expect.any(String), expect.objectContaining({
156
- remove: true,
157
- }), null, expect.any(Function), undefined, expect.any(Function));
158
- });
159
- it('should pass notify option to watch', async () => {
160
- args.notify = 'http://notify.url';
161
- await watchCommand.handler(args);
162
- expect(watchSpy).toHaveBeenCalledWith(123456, expect.any(String), expect.any(String), expect.objectContaining({
163
- notify: 'http://notify.url',
164
- }), null, expect.any(Function), undefined, expect.any(Function));
165
- });
166
- it('should pass convertFields to getUploadableFileList', async () => {
167
- args.initialUpload = true;
168
- args.convertFields = true;
169
- await watchCommand.handler(args);
170
- expect(getUploadableFileListSpy).toHaveBeenCalledWith(expect.any(String), true);
171
- });
172
- it('should pass command options to watch', async () => {
173
- args.saveOutput = true;
174
- args.fieldOptions = ['option1'];
175
- await watchCommand.handler(args);
176
- expect(watchSpy).toHaveBeenCalledWith(123456, expect.any(String), expect.any(String), expect.objectContaining({
177
- commandOptions: expect.objectContaining({
178
- saveOutput: true,
179
- fieldOptions: ['option1'],
180
- }),
181
- }), null, expect.any(Function), undefined, expect.any(Function));
182
- });
183
- });
184
- describe('error handlers', () => {
185
- it('should provide error handler for folder errors', async () => {
186
- await watchCommand.handler(args);
187
- const folderErrorHandler = watchSpy.mock.calls[0][5];
188
- const error = new AxiosError('Folder error');
189
- // @ts-expect-error Axios version mismatch between test and implementation
190
- folderErrorHandler?.(error);
191
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('failures'));
192
- });
193
- it('should provide error handler factory for file errors', async () => {
194
- await watchCommand.handler(args);
195
- const fileErrorHandlerFactory = watchSpy.mock.calls[0][7];
196
- const fileErrorHandler = fileErrorHandlerFactory?.('test.js', '/dest/test.js', 123456);
197
- const error = new AxiosError('File error');
198
- // @ts-expect-error Axios version mismatch between test and implementation
199
- fileErrorHandler?.(error);
200
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('test.js'));
201
- });
202
- });
203
- });
204
- });
@@ -1 +0,0 @@
1
- export {};