@hubspot/cli 8.2.0-beta.0 → 8.2.0-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 (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
@@ -0,0 +1,82 @@
1
+ import chalk from 'chalk';
2
+ import { fetchAppMetadataBySourceId } from '@hubspot/local-dev-lib/api/appsDev';
3
+ import { APP_KEY, USER_FACING_TO_INTERNAL_TYPE, } from '@hubspot/project-parsing-lib/constants';
4
+ import { debugError } from '../errorHandlers/index.js';
5
+ import { getProjectDetailUrl } from './urls.js';
6
+ import { commands } from '../../lang/en.js';
7
+ import { uiLine, uiLink } from '../ui/index.js';
8
+ import { uiLogger } from '../ui/logger.js';
9
+ export async function getProjectInfo(project, platformVersion, accountId) {
10
+ const deployedBuild = project.deployedBuild;
11
+ const projectInfo = {
12
+ projectName: project.name,
13
+ platformVersion,
14
+ projectId: project.id,
15
+ deployedBuildId: deployedBuild.buildId,
16
+ autoDeployEnabled: deployedBuild.isAutoDeployEnabled,
17
+ components: [],
18
+ };
19
+ const projectUrl = getProjectDetailUrl(project.name, accountId);
20
+ if (projectUrl) {
21
+ projectInfo.projectUrl = projectUrl;
22
+ }
23
+ const appSubbuild = deployedBuild.subbuildStatuses.find(s => s.buildType === USER_FACING_TO_INTERNAL_TYPE[APP_KEY]);
24
+ if (appSubbuild) {
25
+ try {
26
+ const { data: appMetadata } = await fetchAppMetadataBySourceId(project.id, appSubbuild.buildName, accountId);
27
+ projectInfo.app = {
28
+ name: appMetadata.name,
29
+ id: appMetadata.id,
30
+ uid: appSubbuild.buildName,
31
+ authType: appMetadata.authType,
32
+ distributionType: appMetadata.distributionType,
33
+ };
34
+ }
35
+ catch (err) {
36
+ debugError(err);
37
+ }
38
+ }
39
+ projectInfo.components = deployedBuild.subbuildStatuses
40
+ .filter(s => s.buildType !== USER_FACING_TO_INTERNAL_TYPE[APP_KEY])
41
+ .map(s => ({
42
+ uid: s.buildName,
43
+ type: s.buildType,
44
+ }));
45
+ return projectInfo;
46
+ }
47
+ export function logProjectInfo(projectInfo) {
48
+ uiLogger.log(chalk.bold(commands.project.info.project.title(projectInfo.projectName)));
49
+ uiLine();
50
+ uiLogger.log(commands.project.info.project.platformVersion(projectInfo.platformVersion));
51
+ uiLogger.log(commands.project.info.project.id(projectInfo.projectId));
52
+ uiLogger.log(commands.project.info.project.deployedBuild(projectInfo.deployedBuildId));
53
+ uiLogger.log(commands.project.info.project.autoDeploy(projectInfo.autoDeployEnabled));
54
+ if (projectInfo.projectUrl) {
55
+ uiLogger.log('');
56
+ uiLogger.log(uiLink(commands.project.info.viewProjectLink, projectInfo.projectUrl));
57
+ }
58
+ if (projectInfo.app) {
59
+ uiLogger.log('');
60
+ uiLogger.log(chalk.bold(commands.project.info.app.title));
61
+ uiLine();
62
+ uiLogger.log(commands.project.info.app.name(projectInfo.app.name));
63
+ uiLogger.log(commands.project.info.app.id(projectInfo.app.id));
64
+ uiLogger.log(commands.project.info.app.uid(projectInfo.app.uid));
65
+ if (projectInfo.app.authType) {
66
+ uiLogger.log(commands.project.info.app.authType(projectInfo.app.authType));
67
+ }
68
+ if (projectInfo.app.distributionType) {
69
+ uiLogger.log(commands.project.info.app.distributionType(projectInfo.app.distributionType));
70
+ }
71
+ }
72
+ if (projectInfo.components.length > 0) {
73
+ uiLogger.log('');
74
+ uiLogger.log(chalk.bold(commands.project.info.componentsHeader));
75
+ uiLine();
76
+ const typeColWidth = Math.max(commands.project.info.labels.type.length, ...projectInfo.components.map(c => c.type.length));
77
+ uiLogger.log(`${commands.project.info.labels.type.padEnd(typeColWidth)} ${commands.project.info.labels.uid}`);
78
+ for (const component of projectInfo.components) {
79
+ uiLogger.log(`${component.type.padEnd(typeColWidth)} ${component.uid}`);
80
+ }
81
+ }
82
+ }
@@ -3,8 +3,7 @@ import { ProjectConfig } from '../../types/Projects.js';
3
3
  export declare function logProfileHeader(profileName: string): void;
4
4
  export declare function logProfileFooter(profile: HsProfileFile, includeVariables?: boolean): void;
5
5
  export declare function loadProfile(projectConfig: ProjectConfig | null, projectDir: string | null, profileName: string): HsProfileFile | never;
6
- export declare function enforceProfileUsage(projectConfig: ProjectConfig | null, projectDir: string | null): Promise<void>;
7
- export declare function loadAndValidateProfile(projectConfig: ProjectConfig | null, projectDir: string | null, profileName: string | undefined, silent?: boolean): Promise<number | undefined>;
6
+ export declare function loadAndValidateProfile(projectConfig: ProjectConfig | null, projectDir: string | null, profileName: string, silent?: boolean): Promise<HsProfileFile | never>;
8
7
  type ValidateProjectForProfileOptions = {
9
8
  projectConfig: ProjectConfig;
10
9
  projectDir: string;
@@ -1,7 +1,7 @@
1
1
  import path from 'path';
2
- import { loadHsProfileFile, getHsProfileFilename, getAllHsProfiles, validateProfileVariables, } from '@hubspot/project-parsing-lib/profiles';
2
+ import { loadHsProfileFile, getHsProfileFilename, validateProfileVariables, } from '@hubspot/project-parsing-lib/profiles';
3
3
  import { commands, lib } from '../../lang/en.js';
4
- import { indent, uiBetaTag, uiLine } from '../ui/index.js';
4
+ import { indent, uiLine } from '../ui/index.js';
5
5
  import { uiLogger } from '../ui/logger.js';
6
6
  import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
7
7
  import SpinniesManager from '../ui/SpinniesManager.js';
@@ -9,7 +9,7 @@ import { handleTranslate } from './upload.js';
9
9
  import { getErrorMessage } from '../errorHandlers/index.js';
10
10
  export function logProfileHeader(profileName) {
11
11
  uiLine();
12
- uiBetaTag(lib.projectProfiles.logs.usingProfile(getHsProfileFilename(profileName)));
12
+ uiLogger.log(lib.projectProfiles.logs.usingProfile(getHsProfileFilename(profileName)));
13
13
  uiLogger.log('');
14
14
  }
15
15
  export function logProfileFooter(profile, includeVariables = false) {
@@ -51,19 +51,7 @@ export function loadProfile(projectConfig, projectDir, profileName) {
51
51
  }
52
52
  return profile;
53
53
  }
54
- export async function enforceProfileUsage(projectConfig, projectDir) {
55
- if (projectConfig && projectDir) {
56
- const existingProfiles = await getAllHsProfiles(path.join(projectDir, projectConfig.srcDir));
57
- if (existingProfiles.length > 0) {
58
- throw new Error(lib.projectProfiles.exitIfUsingProfiles.errors.noProfileSpecified);
59
- }
60
- }
61
- }
62
54
  export async function loadAndValidateProfile(projectConfig, projectDir, profileName, silent = false) {
63
- if (!profileName) {
64
- await enforceProfileUsage(projectConfig, projectDir);
65
- return;
66
- }
67
55
  if (!silent) {
68
56
  logProfileHeader(profileName);
69
57
  }
@@ -77,7 +65,7 @@ export async function loadAndValidateProfile(projectConfig, projectDir, profileN
77
65
  throw new Error(lib.projectProfiles.loadProfile.errors.profileNotValid(profileName, validationResult.errors));
78
66
  }
79
67
  }
80
- return profile.accountId;
68
+ return profile;
81
69
  }
82
70
  function formatProfileValidationError(error, leadingIndentationLevel = 0) {
83
71
  // Trim leading whitespace and replace tabs with spaces to reducing indentations
@@ -97,7 +85,7 @@ export async function validateProjectForProfile({ projectConfig, projectDir, pro
97
85
  });
98
86
  }
99
87
  try {
100
- const accountId = await loadAndValidateProfile(projectConfig, projectDir, profileName, true);
88
+ const { accountId } = await loadAndValidateProfile(projectConfig, projectDir, profileName, true);
101
89
  targetAccountId = accountId || derivedAccountId;
102
90
  }
103
91
  catch (error) {
@@ -1,10 +1,20 @@
1
+ import { LoadedProjectConfig } from './config.js';
1
2
  export declare const REQUIRED_PACKAGES_AND_MIN_VERSIONS: {
2
3
  readonly eslint: "9.0.0";
3
- readonly '@typescript-eslint/eslint-plugin': "8.46.4";
4
- readonly '@typescript-eslint/parser': "8.46.4";
4
+ readonly '@eslint/js': "9.0.0";
5
5
  readonly 'typescript-eslint': "8.46.4";
6
+ readonly '@hubspot/eslint-config-ui-extensions': "1.0.0";
7
+ readonly 'eslint-config-prettier': "10.0.0";
8
+ readonly 'eslint-plugin-react': "7.0.0";
9
+ readonly 'eslint-plugin-react-hooks': "7.0.0";
10
+ readonly 'eslint-plugin-unused-imports': "4.0.0";
11
+ readonly prettier: "3.0.0";
6
12
  readonly jiti: "2.6.1";
7
13
  };
14
+ export declare const LINT_SCRIPTS: {
15
+ readonly lint: "eslint .";
16
+ readonly 'lint:fix': "eslint . --fix";
17
+ };
8
18
  export declare function isEslintInstalled(directory: string): boolean;
9
19
  export declare function areAllLintPackagesInstalled(directory: string): boolean;
10
20
  export declare function getMissingLintPackages(directory: string): {
@@ -13,7 +23,10 @@ export declare function getMissingLintPackages(directory: string): {
13
23
  export declare function hasEslintConfig(directory: string): boolean;
14
24
  export declare function hasDeprecatedEslintConfig(directory: string): boolean;
15
25
  export declare function getDeprecatedEslintConfigFiles(directory: string): string[];
16
- export declare function createEslintConfig(directory: string): string;
26
+ export declare function createEslintConfig(directory: string, platformVersion?: string | null): Promise<string>;
27
+ export declare function getUieLintablePackageJsonLocations(projectConfig: LoadedProjectConfig): Promise<string[]>;
28
+ export declare const HUBSPOT_UI_EXTENSIONS_RULE_PREFIX = "@hubspot/ui-extensions/";
29
+ export declare function isHubSpotEslintConfigActive(directory: string): Promise<boolean>;
17
30
  export declare function lintPackagesInDirectory(directory: string, projectDir?: string): Promise<{
18
31
  success: boolean;
19
32
  output: string;
@@ -31,3 +44,8 @@ export declare function displayLintResults(results: Array<{
31
44
  success: boolean;
32
45
  output: string;
33
46
  }>): void;
47
+ export declare function getMissingLintScripts(directory: string): string[];
48
+ export declare function addLintScriptsToPackageJson(directory: string): {
49
+ added: string[];
50
+ relativePath: string;
51
+ };
@@ -3,17 +3,28 @@ import path from 'path';
3
3
  import util from 'util';
4
4
  import semver from 'semver';
5
5
  import { exec as execAsync } from 'node:child_process';
6
+ import { fetchRepoFile } from '@hubspot/local-dev-lib/api/github';
6
7
  import { getProjectPackageJsonLocations, isPackageInstalled, } from '../dependencyManagement.js';
7
8
  import { commands } from '../../lang/en.js';
8
9
  import { uiLogger } from '../ui/logger.js';
9
- import { safeGetPackageJsonCached } from '../npm/packageJson.js';
10
+ import { clearPackageJsonCache, safeGetPackageJsonCached, } from '../npm/packageJson.js';
11
+ import { debugError } from '../errorHandlers/index.js';
12
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
13
+ import { DEFAULT_PROJECT_TEMPLATE_BRANCH, HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, } from '../constants.js';
14
+ import { CARDS_KEY, Components, PAGES_KEY, SETTINGS_KEY, } from '@hubspot/project-parsing-lib/constants';
10
15
  export const REQUIRED_PACKAGES_AND_MIN_VERSIONS = {
11
16
  eslint: '9.0.0',
12
- '@typescript-eslint/eslint-plugin': '8.46.4',
13
- '@typescript-eslint/parser': '8.46.4',
17
+ '@eslint/js': '9.0.0',
14
18
  'typescript-eslint': '8.46.4',
19
+ '@hubspot/eslint-config-ui-extensions': '1.0.0',
20
+ 'eslint-config-prettier': '10.0.0',
21
+ 'eslint-plugin-react': '7.0.0',
22
+ 'eslint-plugin-react-hooks': '7.0.0',
23
+ 'eslint-plugin-unused-imports': '4.0.0',
24
+ prettier: '3.0.0',
15
25
  jiti: '2.6.1',
16
26
  };
27
+ const UIE_ESLINT_CONFIG_PATH_IN_REPO = 'components/cards/src/app/cards/eslint.config.js';
17
28
  const ESLINT_CONFIG_FILES = [
18
29
  'eslint.config.mts',
19
30
  'eslint.config.ts',
@@ -30,28 +41,15 @@ const DEPRECATED_ESLINT_CONFIG_FILES = [
30
41
  '.eslintrc.json',
31
42
  '.eslintrc',
32
43
  ];
33
- const ESLINT_CONFIG_TEMPLATE = `import { defineConfig } from "eslint/config";
34
- import tsParser from "@typescript-eslint/parser";
35
-
36
- export default defineConfig([
37
- {
38
- files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
39
- languageOptions: {
40
- parser: tsParser,
41
- parserOptions: {
42
- ecmaVersion: "latest",
43
- sourceType: "module",
44
- ecmaFeatures: {
45
- jsx: true
46
- }
47
- }
48
- },
49
- rules: {
50
- "no-console": ["warn", { allow: ["warn", "error"] }]
51
- }
52
- },
53
- ]);
54
- `;
44
+ const UIE_COMPONENTS = [
45
+ Components[CARDS_KEY],
46
+ Components[SETTINGS_KEY],
47
+ Components[PAGES_KEY],
48
+ ];
49
+ export const LINT_SCRIPTS = {
50
+ lint: 'eslint .',
51
+ 'lint:fix': 'eslint . --fix',
52
+ };
55
53
  function getPackageVersionFromPackageJson(directory, packageName) {
56
54
  const packageJsonPath = path.join(directory, 'package.json');
57
55
  const packageJson = safeGetPackageJsonCached(packageJsonPath);
@@ -127,10 +125,43 @@ export function getDeprecatedEslintConfigFiles(directory) {
127
125
  return fs.existsSync(configPath);
128
126
  });
129
127
  }
130
- export function createEslintConfig(directory) {
131
- const configPath = path.join(directory, 'eslint.config.mts');
128
+ function repoFileDataToString(data) {
129
+ if (typeof data === 'string') {
130
+ return data;
131
+ }
132
+ if (Buffer.isBuffer(data)) {
133
+ return data.toString('utf-8');
134
+ }
135
+ return String(data);
136
+ }
137
+ export async function createEslintConfig(directory, platformVersion) {
138
+ const versionForRemote = platformVersion && !isLegacyProject(platformVersion)
139
+ ? platformVersion
140
+ : null;
141
+ if (versionForRemote === null) {
142
+ const message = commands.project.lint.createEslintConfigRequiresV2Platform(platformVersion);
143
+ uiLogger.error(message);
144
+ throw new Error(message);
145
+ }
146
+ let fetchedContent = null;
147
+ try {
148
+ const { data } = await fetchRepoFile(HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, `${versionForRemote}/${UIE_ESLINT_CONFIG_PATH_IN_REPO}`, DEFAULT_PROJECT_TEMPLATE_BRANCH);
149
+ const content = repoFileDataToString(data);
150
+ if (content.trim().length > 0) {
151
+ fetchedContent = content;
152
+ }
153
+ }
154
+ catch (error) {
155
+ debugError(error);
156
+ }
157
+ if (fetchedContent === null) {
158
+ const message = commands.project.lint.failedToFetchRemoteEslintConfig(versionForRemote);
159
+ uiLogger.error(message);
160
+ throw new Error(message);
161
+ }
162
+ const configPath = path.join(directory, 'eslint.config.js');
132
163
  try {
133
- fs.writeFileSync(configPath, ESLINT_CONFIG_TEMPLATE, 'utf-8');
164
+ fs.writeFileSync(configPath, fetchedContent, 'utf-8');
134
165
  return path.relative(process.cwd(), configPath);
135
166
  }
136
167
  catch (error) {
@@ -138,6 +169,38 @@ export function createEslintConfig(directory) {
138
169
  throw error;
139
170
  }
140
171
  }
172
+ export async function getUieLintablePackageJsonLocations(projectConfig) {
173
+ if (!projectConfig.projectDir || !projectConfig.projectConfig?.srcDir) {
174
+ return [];
175
+ }
176
+ const srcDirAbsolute = path.resolve(projectConfig.projectDir, projectConfig.projectConfig.srcDir);
177
+ const uiePackageDirPrefixes = UIE_COMPONENTS.map(component => path.join(srcDirAbsolute, component.parentComponent
178
+ ? Components[component.parentComponent].dir
179
+ : '', component.dir));
180
+ const allLocations = await getProjectPackageJsonLocations(projectConfig.projectDir);
181
+ return allLocations.filter(location => {
182
+ const resolvedLocation = path.resolve(location);
183
+ return uiePackageDirPrefixes.some(prefix => resolvedLocation.startsWith(prefix));
184
+ });
185
+ }
186
+ export const HUBSPOT_UI_EXTENSIONS_RULE_PREFIX = '@hubspot/ui-extensions/';
187
+ function getEnvironmentWithoutNpmConfig() {
188
+ return Object.fromEntries(Object.entries(process.env).filter(([key]) => !key.toLowerCase().startsWith('npm_config_')));
189
+ }
190
+ export async function isHubSpotEslintConfigActive(directory) {
191
+ const exec = util.promisify(execAsync);
192
+ try {
193
+ const { stdout } = await exec('npx eslint --print-config ./Component.tsx', {
194
+ cwd: directory,
195
+ });
196
+ const config = JSON.parse(stdout);
197
+ const rules = config.rules ?? {};
198
+ return Object.keys(rules).some(rule => rule.startsWith(HUBSPOT_UI_EXTENSIONS_RULE_PREFIX));
199
+ }
200
+ catch {
201
+ return false;
202
+ }
203
+ }
141
204
  export async function lintPackagesInDirectory(directory, projectDir) {
142
205
  const displayPath = projectDir
143
206
  ? path.relative(projectDir, directory)
@@ -148,6 +211,7 @@ export async function lintPackagesInDirectory(directory, projectDir) {
148
211
  const { stdout, stderr } = await exec(lintCommand, {
149
212
  cwd: directory,
150
213
  maxBuffer: 10 * 1024 * 1024, // 10MB buffer for large outputs
214
+ env: getEnvironmentWithoutNpmConfig(),
151
215
  });
152
216
  let output = `\n${displayPath}:\n`;
153
217
  if (stdout && stdout.trim()) {
@@ -218,3 +282,43 @@ export function displayLintResults(results) {
218
282
  });
219
283
  }
220
284
  }
285
+ export function getMissingLintScripts(directory) {
286
+ const packageJsonPath = path.join(directory, 'package.json');
287
+ const packageJson = safeGetPackageJsonCached(packageJsonPath);
288
+ if (!packageJson) {
289
+ return [];
290
+ }
291
+ return Object.keys(LINT_SCRIPTS).filter(scriptName => !packageJson.scripts?.[scriptName]);
292
+ }
293
+ export function addLintScriptsToPackageJson(directory) {
294
+ const packageJsonPath = path.join(directory, 'package.json');
295
+ try {
296
+ const rawContent = fs.readFileSync(packageJsonPath, 'utf-8');
297
+ const packageJson = JSON.parse(rawContent);
298
+ if (!packageJson.scripts) {
299
+ packageJson.scripts = {};
300
+ }
301
+ const added = [];
302
+ for (const [scriptName, scriptValue] of Object.entries(LINT_SCRIPTS)) {
303
+ if (!packageJson.scripts[scriptName]) {
304
+ packageJson.scripts[scriptName] = scriptValue;
305
+ added.push(scriptName);
306
+ }
307
+ }
308
+ if (added.length > 0) {
309
+ fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n', 'utf-8');
310
+ clearPackageJsonCache();
311
+ }
312
+ return {
313
+ added,
314
+ relativePath: path.relative(process.cwd(), packageJsonPath),
315
+ };
316
+ }
317
+ catch {
318
+ uiLogger.warn(commands.project.lint.failedToAddLintScripts(packageJsonPath));
319
+ return {
320
+ added: [],
321
+ relativePath: path.relative(process.cwd(), packageJsonPath),
322
+ };
323
+ }
324
+ }
@@ -5,6 +5,7 @@ type ProjectUploadResult<T> = {
5
5
  result?: T;
6
6
  uploadError?: unknown;
7
7
  projectNotFound?: boolean;
8
+ projectId?: number;
8
9
  };
9
10
  type HandleProjectUploadArg<T> = {
10
11
  accountId: number;
@@ -16,9 +17,10 @@ type HandleProjectUploadArg<T> = {
16
17
  isUploadCommand?: boolean;
17
18
  sendIR?: boolean;
18
19
  skipValidation?: boolean;
20
+ skipNpmAudit?: boolean;
19
21
  profile?: string;
20
22
  };
21
- export declare function handleProjectUpload<T>({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage, forceCreate, isUploadCommand, sendIR, skipValidation, }: HandleProjectUploadArg<T>): Promise<ProjectUploadResult<T>>;
23
+ export declare function handleProjectUpload<T>({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage, forceCreate, isUploadCommand, sendIR, skipValidation, skipNpmAudit, }: HandleProjectUploadArg<T>): Promise<ProjectUploadResult<T>>;
22
24
  export declare function validateSourceDirectory(srcDir: string, projectConfig: ProjectConfig, projectDir: string): Promise<void>;
23
25
  export declare function validateNoHSMetaMismatch(srcDir: string, projectConfig: ProjectConfig): Promise<void>;
24
26
  type HandleTranslateArg = {
@@ -6,16 +6,20 @@ import { uploadProject } from '@hubspot/local-dev-lib/api/projects';
6
6
  import { shouldIgnoreFile } from '@hubspot/local-dev-lib/ignoreRules';
7
7
  import { isTranslationError, translate, } from '@hubspot/project-parsing-lib/translate';
8
8
  import { projectContainsHsMetaFiles } from '@hubspot/project-parsing-lib/projects';
9
+ import { findAndParsePackageJsonFiles, collectWorkspaceDirectories, collectFileDependencies, } from '@hubspot/project-parsing-lib/workspaces';
9
10
  import SpinniesManager from '../ui/SpinniesManager.js';
10
11
  import { uiAccountDescription } from '../ui/index.js';
11
12
  import util from 'node:util';
12
13
  import { lib } from '../../lang/en.js';
13
14
  import { ensureProjectExists } from './ensureProjectExists.js';
14
15
  import { uiLogger } from '../ui/logger.js';
15
- import { isV2Project } from './platformVersion.js';
16
16
  import ProjectValidationError from '../errors/ProjectValidationError.js';
17
17
  import { walk } from '@hubspot/local-dev-lib/fs';
18
18
  import { LEGACY_CONFIG_FILES } from '../constants.js';
19
+ import { archiveWorkspacesAndDependencies, getPackageJsonPathsToUpdate, getLockfilePathsToUpdate, } from './workspaces.js';
20
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
21
+ import { validateLintConfigOnUpload } from './validateLintConfigOnUpload.js';
22
+ import { runNpmAuditsBeforeProjectUpload } from './npmAuditOnUpload.js';
19
23
  async function uploadProjectFiles(accountId, projectName, filePath, uploadMessage, platformVersion, intermediateRepresentation) {
20
24
  const accountIdentifier = uiAccountDescription(accountId) || `${accountId}`;
21
25
  SpinniesManager.add('upload', {
@@ -42,12 +46,38 @@ async function uploadProjectFiles(accountId, projectName, filePath, uploadMessag
42
46
  }
43
47
  return { buildId, error };
44
48
  }
45
- export async function handleProjectUpload({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage = '', forceCreate = false, isUploadCommand = false, sendIR = false, skipValidation = false, }) {
49
+ export async function handleProjectUpload({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage = '', forceCreate = false, isUploadCommand = false, sendIR = false, skipValidation = false, skipNpmAudit = false, }) {
46
50
  const srcDir = path.resolve(projectDir, projectConfig.srcDir);
47
51
  await validateSourceDirectory(srcDir, projectConfig, projectDir);
48
52
  await validateNoHSMetaMismatch(srcDir, projectConfig);
49
53
  const tempFile = tmp.fileSync({ postfix: '.zip' });
50
54
  uiLogger.debug(lib.projectUpload.handleProjectUpload.compressing(tempFile.name));
55
+ // Collect workspace directories and file: dependencies for v2+ projects only.
56
+ // Versions <= 2025.1 do not support the new npm workspaces bundling behavior.
57
+ let workspaceMappings = [];
58
+ let fileDependencyMappings = [];
59
+ let parsedPackageJsons = [];
60
+ if (!isLegacyProject(projectConfig.platformVersion)) {
61
+ parsedPackageJsons = await findAndParsePackageJsonFiles(srcDir);
62
+ workspaceMappings = await collectWorkspaceDirectories(parsedPackageJsons);
63
+ fileDependencyMappings = await collectFileDependencies(parsedPackageJsons);
64
+ }
65
+ if (isUploadCommand && !skipValidation) {
66
+ await validateLintConfigOnUpload({
67
+ srcDir,
68
+ projectDir,
69
+ parsedPackageJsons,
70
+ isLegacyPlatform: isLegacyProject(projectConfig.platformVersion),
71
+ });
72
+ }
73
+ if (isUploadCommand && !skipNpmAudit) {
74
+ await runNpmAuditsBeforeProjectUpload({
75
+ srcDir,
76
+ projectDir,
77
+ parsedPackageJsons,
78
+ isLegacyPlatform: isLegacyProject(projectConfig.platformVersion),
79
+ });
80
+ }
51
81
  const output = fs.createWriteStream(tempFile.name);
52
82
  const archive = archiver('zip');
53
83
  const result = new Promise((resolve, reject) => output.on('close', async function () {
@@ -68,7 +98,7 @@ export async function handleProjectUpload({ accountId, projectConfig, projectDir
68
98
  return resolve({ uploadError: e });
69
99
  }
70
100
  }
71
- const { projectExists } = await ensureProjectExists(accountId, projectConfig.name, {
101
+ const { projectExists, project } = await ensureProjectExists(accountId, projectConfig.name, {
72
102
  forceCreate,
73
103
  uploadCommand: isUploadCommand,
74
104
  noLogs: true,
@@ -77,13 +107,14 @@ export async function handleProjectUpload({ accountId, projectConfig, projectDir
77
107
  uiLogger.log(lib.projectUpload.handleProjectUpload.projectDoesNotExist(accountId));
78
108
  return resolve({ projectNotFound: true });
79
109
  }
110
+ const projectId = project?.id;
80
111
  const { buildId, error } = await uploadProjectFiles(accountId, projectConfig.name, tempFile.name, uploadMessage, projectConfig.platformVersion, intermediateRepresentation);
81
112
  if (error) {
82
- resolve({ uploadError: error });
113
+ resolve({ uploadError: error, projectId });
83
114
  }
84
115
  else if (callbackFunc) {
85
116
  const uploadResult = await callbackFunc(accountId, projectConfig, tempFile, buildId);
86
- resolve({ result: uploadResult });
117
+ resolve({ result: uploadResult, projectId });
87
118
  }
88
119
  }
89
120
  catch (e) {
@@ -91,8 +122,14 @@ export async function handleProjectUpload({ accountId, projectConfig, projectDir
91
122
  }
92
123
  }));
93
124
  archive.pipe(output);
125
+ const modifiedPackageJsonPaths = getPackageJsonPathsToUpdate(srcDir, workspaceMappings, fileDependencyMappings);
126
+ const lockfilePathsToUpdate = getLockfilePathsToUpdate(srcDir, workspaceMappings, fileDependencyMappings);
94
127
  let loggedIgnoredNodeModule = false;
95
128
  archive.directory(srcDir, false, file => {
129
+ if (modifiedPackageJsonPaths.has(file.name) ||
130
+ lockfilePathsToUpdate.has(file.name)) {
131
+ return false;
132
+ }
96
133
  const ignored = shouldIgnoreFile(file.name, true);
97
134
  if (ignored) {
98
135
  const isNodeModule = file.name.includes('node_modules');
@@ -105,6 +142,8 @@ export async function handleProjectUpload({ accountId, projectConfig, projectDir
105
142
  }
106
143
  return ignored ? false : file;
107
144
  });
145
+ // Archive workspaces and file: dependencies
146
+ await archiveWorkspacesAndDependencies(archive, srcDir, workspaceMappings, fileDependencyMappings);
108
147
  archive.finalize();
109
148
  return result;
110
149
  }
@@ -113,7 +152,7 @@ export async function validateSourceDirectory(srcDir, projectConfig, projectDir)
113
152
  if (!projectFilePaths || projectFilePaths.length === 0) {
114
153
  throw new ProjectValidationError(lib.projectUpload.handleProjectUpload.emptySource(projectConfig.srcDir));
115
154
  }
116
- if (isV2Project(projectConfig.platformVersion)) {
155
+ if (!isLegacyProject(projectConfig.platformVersion)) {
117
156
  projectFilePaths.forEach(filePath => {
118
157
  const filename = path.basename(filePath);
119
158
  if (LEGACY_CONFIG_FILES.includes(filename)) {
@@ -124,7 +163,7 @@ export async function validateSourceDirectory(srcDir, projectConfig, projectDir)
124
163
  }
125
164
  export async function validateNoHSMetaMismatch(srcDir, projectConfig) {
126
165
  const hasHsMetaFiles = await projectContainsHsMetaFiles(srcDir);
127
- if (!isV2Project(projectConfig.platformVersion) && hasHsMetaFiles) {
166
+ if (isLegacyProject(projectConfig.platformVersion) && hasHsMetaFiles) {
128
167
  throw new ProjectValidationError(lib.projectUpload.wrongPlatformVersionMetaFiles);
129
168
  }
130
169
  }
@@ -0,0 +1,9 @@
1
+ import type { ParsedPackageJson } from '@hubspot/project-parsing-lib/workspaces';
2
+ type ValidateLintConfigOnUploadArgs = {
3
+ srcDir: string;
4
+ projectDir: string;
5
+ parsedPackageJsons: ParsedPackageJson[];
6
+ isLegacyPlatform: boolean;
7
+ };
8
+ export declare function validateLintConfigOnUpload({ srcDir, projectDir, parsedPackageJsons, isLegacyPlatform, }: ValidateLintConfigOnUploadArgs): Promise<void>;
9
+ export {};
@@ -0,0 +1,45 @@
1
+ import path from 'path';
2
+ import { lib } from '../../lang/en.js';
3
+ import { uiLogger } from '../ui/logger.js';
4
+ import { areAllLintPackagesInstalled, hasEslintConfig, isHubSpotEslintConfigActive, } from './uieLinting.js';
5
+ export async function validateLintConfigOnUpload({ srcDir, projectDir, parsedPackageJsons, isLegacyPlatform, }) {
6
+ const lintRoots = new Set();
7
+ if (isLegacyPlatform) {
8
+ lintRoots.add(srcDir);
9
+ }
10
+ else {
11
+ for (const { dir } of parsedPackageJsons) {
12
+ lintRoots.add(dir);
13
+ }
14
+ if (lintRoots.size === 0) {
15
+ lintRoots.add(srcDir);
16
+ }
17
+ }
18
+ let hasAnyOutput = false;
19
+ for (const lintRoot of lintRoots) {
20
+ const relativeRoot = path.relative(projectDir, lintRoot) || '.';
21
+ let warnMessage;
22
+ if (!areAllLintPackagesInstalled(lintRoot)) {
23
+ warnMessage =
24
+ lib.projectUpload.handleProjectUpload.lintPackagesNotConfigured(relativeRoot);
25
+ }
26
+ else if (!hasEslintConfig(lintRoot)) {
27
+ warnMessage =
28
+ lib.projectUpload.handleProjectUpload.lintConfigNotFound(relativeRoot);
29
+ }
30
+ else if (!(await isHubSpotEslintConfigActive(lintRoot))) {
31
+ warnMessage =
32
+ lib.projectUpload.handleProjectUpload.lintHubSpotRulesNotActive(relativeRoot);
33
+ }
34
+ if (warnMessage) {
35
+ if (!hasAnyOutput) {
36
+ uiLogger.log('');
37
+ hasAnyOutput = true;
38
+ }
39
+ uiLogger.warn(warnMessage);
40
+ }
41
+ }
42
+ if (hasAnyOutput) {
43
+ uiLogger.log('');
44
+ }
45
+ }
@@ -0,0 +1,60 @@
1
+ import archiver from 'archiver';
2
+ import { WorkspaceMapping, FileDependencyMapping, FileDependencyKind, LocalDependencyProtocol } from '@hubspot/project-parsing-lib/workspaces';
3
+ export type FileDepArchiveEntry = {
4
+ archivePath: string;
5
+ protocol: LocalDependencyProtocol;
6
+ };
7
+ /**
8
+ * Result of archiving workspaces and file dependencies
9
+ */
10
+ export type WorkspaceArchiveResult = {
11
+ packageWorkspaces: Map<string, string[]>;
12
+ packageFileDeps: Map<string, Map<string, FileDepArchiveEntry>>;
13
+ };
14
+ /**
15
+ * Generates a short hash of the input string for use in workspace paths.
16
+ * Uses SHA256 truncated to 8 hex characters (4 billion possibilities).
17
+ */
18
+ export declare function shortHash(input: string): string;
19
+ /**
20
+ * Converts native path separators to POSIX forward slashes.
21
+ *
22
+ * Zip entry names and npm workspace globs are POSIX-only. On Windows,
23
+ * `path.relative` returns backslash-separated paths; archiver normalizes
24
+ * its appended entry names to forward slashes but its filter callback
25
+ * receives forward-slashed names too. Without this normalization, lookups
26
+ * in our exclusion Sets miss on Windows and a file gets archived twice.
27
+ */
28
+ export declare function toPosixPath(p: string): string;
29
+ /**
30
+ * Determines the archive path for an external workspace or file: dependency.
31
+ *
32
+ * For directories, produces `_workspaces/<basename>-<hash>`.
33
+ * For tarballs, produces `_workspaces/<basename-no-ext>-<hash>/<original-basename>`,
34
+ * so the rewritten package.json reference still ends in the original filename.
35
+ *
36
+ * The hash prevents collisions between different paths with the same basename.
37
+ */
38
+ export declare function computeExternalArchivePath(absolutePath: string, kind?: FileDependencyKind): string;
39
+ /**
40
+ * Updates package.json files in the archive to reflect new workspace and file: dependency paths.
41
+ *
42
+ * Workspace entries in packageWorkspaces are already in final form:
43
+ * - Internal workspaces: relative paths (e.g. "../packages/utils")
44
+ * - External workspaces: relative paths (e.g. "../_workspaces/logger-abc")
45
+ *
46
+ * Only external file: dependencies appear in packageFileDeps; internal ones
47
+ * keep their original file: references and are left untouched.
48
+ */
49
+ export declare function updatePackageJsonInArchive(archive: archiver.Archiver, srcDir: string, packageWorkspaces: Map<string, string[]>, packageFileDeps: Map<string, Map<string, FileDepArchiveEntry>>): Promise<void>;
50
+ export declare function rewriteLockfileForExternalDeps(lockfileContent: Record<string, unknown>, pathMappings: Array<{
51
+ oldPath: string;
52
+ newPath: string;
53
+ }>): Record<string, unknown>;
54
+ export declare function getPackageJsonPathsToUpdate(srcDir: string, workspaceMappings: WorkspaceMapping[], fileDependencyMappings: FileDependencyMapping[]): Set<string>;
55
+ export declare function getLockfilePathsToUpdate(srcDir: string, workspaceMappings: WorkspaceMapping[], fileDependencyMappings: FileDependencyMapping[]): Set<string>;
56
+ /**
57
+ * Main orchestration function that handles archiving of workspaces and file dependencies.
58
+ * This is the clean integration point for upload.ts.
59
+ */
60
+ export declare function archiveWorkspacesAndDependencies(archive: archiver.Archiver, srcDir: string, workspaceMappings: WorkspaceMapping[], fileDependencyMappings: FileDependencyMapping[]): Promise<WorkspaceArchiveResult>;