@hubspot/cli 8.0.10-experimental.5 → 8.0.10-experimental.7

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 (368) hide show
  1. package/commands/getStarted.js +1 -1
  2. package/lang/en.js +1 -1
  3. package/lib/app/migrate.js +10 -5
  4. package/lib/getStartedV2Actions.js +1 -1
  5. package/lib/projects/components.js +3 -2
  6. package/lib/projects/create/v2.js +1 -1
  7. package/lib/ui/SpinniesManager.js +2 -0
  8. package/package.json +6 -2
  9. package/api/__tests__/migrate.test.d.ts +0 -1
  10. package/api/__tests__/migrate.test.js +0 -199
  11. package/commands/__tests__/account.test.d.ts +0 -1
  12. package/commands/__tests__/account.test.js +0 -69
  13. package/commands/__tests__/auth.test.d.ts +0 -1
  14. package/commands/__tests__/auth.test.js +0 -43
  15. package/commands/__tests__/cms.test.d.ts +0 -1
  16. package/commands/__tests__/cms.test.js +0 -87
  17. package/commands/__tests__/config.test.d.ts +0 -1
  18. package/commands/__tests__/config.test.js +0 -44
  19. package/commands/__tests__/customObject.test.d.ts +0 -1
  20. package/commands/__tests__/customObject.test.js +0 -68
  21. package/commands/__tests__/doctor.test.d.ts +0 -1
  22. package/commands/__tests__/doctor.test.js +0 -132
  23. package/commands/__tests__/feedback.test.d.ts +0 -1
  24. package/commands/__tests__/feedback.test.js +0 -24
  25. package/commands/__tests__/filemanager.test.d.ts +0 -1
  26. package/commands/__tests__/filemanager.test.js +0 -45
  27. package/commands/__tests__/getStarted.test.d.ts +0 -1
  28. package/commands/__tests__/getStarted.test.js +0 -173
  29. package/commands/__tests__/hubdb.test.d.ts +0 -1
  30. package/commands/__tests__/hubdb.test.js +0 -50
  31. package/commands/__tests__/init.test.d.ts +0 -1
  32. package/commands/__tests__/init.test.js +0 -42
  33. package/commands/__tests__/mcp.test.d.ts +0 -1
  34. package/commands/__tests__/mcp.test.js +0 -46
  35. package/commands/__tests__/open.test.d.ts +0 -1
  36. package/commands/__tests__/open.test.js +0 -58
  37. package/commands/__tests__/project.test.d.ts +0 -1
  38. package/commands/__tests__/project.test.js +0 -125
  39. package/commands/__tests__/sandbox.test.d.ts +0 -1
  40. package/commands/__tests__/sandbox.test.js +0 -44
  41. package/commands/__tests__/secret.test.d.ts +0 -1
  42. package/commands/__tests__/secret.test.js +0 -49
  43. package/commands/__tests__/testAccount.test.d.ts +0 -1
  44. package/commands/__tests__/testAccount.test.js +0 -57
  45. package/commands/__tests__/upgrade.test.d.ts +0 -1
  46. package/commands/__tests__/upgrade.test.js +0 -309
  47. package/commands/account/__tests__/auth.test.d.ts +0 -1
  48. package/commands/account/__tests__/auth.test.js +0 -206
  49. package/commands/account/__tests__/clean.test.d.ts +0 -1
  50. package/commands/account/__tests__/clean.test.js +0 -28
  51. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  52. package/commands/account/__tests__/createOverride.test.js +0 -32
  53. package/commands/account/__tests__/info.test.d.ts +0 -1
  54. package/commands/account/__tests__/info.test.js +0 -28
  55. package/commands/account/__tests__/list.test.d.ts +0 -1
  56. package/commands/account/__tests__/list.test.js +0 -153
  57. package/commands/account/__tests__/remove.test.d.ts +0 -1
  58. package/commands/account/__tests__/remove.test.js +0 -36
  59. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  60. package/commands/account/__tests__/removeOverride.js +0 -25
  61. package/commands/account/__tests__/rename.test.d.ts +0 -1
  62. package/commands/account/__tests__/rename.test.js +0 -82
  63. package/commands/account/__tests__/use.test.d.ts +0 -1
  64. package/commands/account/__tests__/use.test.js +0 -170
  65. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  66. package/commands/app/__tests__/migrate.test.js +0 -111
  67. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  68. package/commands/app/secret/__tests__/add.test.js +0 -140
  69. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  70. package/commands/app/secret/__tests__/delete.test.js +0 -28
  71. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  72. package/commands/app/secret/__tests__/list.test.js +0 -25
  73. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  74. package/commands/app/secret/__tests__/update.test.js +0 -28
  75. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  76. package/commands/cms/__tests__/delete.test.js +0 -39
  77. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  78. package/commands/cms/__tests__/fetch.test.js +0 -156
  79. package/commands/cms/__tests__/function.test.d.ts +0 -1
  80. package/commands/cms/__tests__/function.test.js +0 -50
  81. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  82. package/commands/cms/__tests__/lint.test.js +0 -33
  83. package/commands/cms/__tests__/list.test.d.ts +0 -1
  84. package/commands/cms/__tests__/list.test.js +0 -42
  85. package/commands/cms/__tests__/module.test.d.ts +0 -1
  86. package/commands/cms/__tests__/module.test.js +0 -45
  87. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  88. package/commands/cms/__tests__/mv.test.js +0 -46
  89. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  90. package/commands/cms/__tests__/theme.test.js +0 -54
  91. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  92. package/commands/cms/__tests__/upload.test.js +0 -312
  93. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  94. package/commands/cms/__tests__/watch.test.js +0 -204
  95. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  96. package/commands/cms/function/__tests__/logs.test.js +0 -70
  97. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  98. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  99. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  100. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  101. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  102. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  103. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  104. package/commands/customObject/__tests__/create.test.js +0 -40
  105. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  106. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  107. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  108. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  109. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  110. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  111. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  112. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  113. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  114. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  115. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  116. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  117. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  118. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  119. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  120. package/commands/filemanager/__tests__/upload.test.js +0 -191
  121. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  122. package/commands/hubdb/__tests__/clear.test.js +0 -28
  123. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  124. package/commands/hubdb/__tests__/create.test.js +0 -28
  125. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  126. package/commands/hubdb/__tests__/delete.test.js +0 -28
  127. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  128. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  129. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  130. package/commands/hubdb/__tests__/list.test.js +0 -88
  131. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  132. package/commands/mcp/__tests__/setup.test.js +0 -26
  133. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  134. package/commands/mcp/__tests__/start.test.js +0 -144
  135. package/commands/project/__tests__/add.test.d.ts +0 -1
  136. package/commands/project/__tests__/add.test.js +0 -107
  137. package/commands/project/__tests__/create.test.d.ts +0 -1
  138. package/commands/project/__tests__/create.test.js +0 -97
  139. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  140. package/commands/project/__tests__/deploy.test.js +0 -307
  141. package/commands/project/__tests__/dev.test.d.ts +0 -1
  142. package/commands/project/__tests__/dev.test.js +0 -273
  143. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  144. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  145. package/commands/project/__tests__/download.test.d.ts +0 -1
  146. package/commands/project/__tests__/download.test.js +0 -39
  147. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  148. package/commands/project/__tests__/installDeps.test.js +0 -140
  149. package/commands/project/__tests__/lint.test.d.ts +0 -1
  150. package/commands/project/__tests__/lint.test.js +0 -704
  151. package/commands/project/__tests__/list.test.d.ts +0 -1
  152. package/commands/project/__tests__/list.test.js +0 -31
  153. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  154. package/commands/project/__tests__/listBuilds.test.js +0 -38
  155. package/commands/project/__tests__/logs.test.d.ts +0 -1
  156. package/commands/project/__tests__/logs.test.js +0 -202
  157. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  158. package/commands/project/__tests__/migrate.test.js +0 -106
  159. package/commands/project/__tests__/open.test.d.ts +0 -1
  160. package/commands/project/__tests__/open.test.js +0 -39
  161. package/commands/project/__tests__/profile.test.d.ts +0 -1
  162. package/commands/project/__tests__/profile.test.js +0 -42
  163. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  164. package/commands/project/__tests__/updateDeps.test.js +0 -140
  165. package/commands/project/__tests__/upload.test.d.ts +0 -1
  166. package/commands/project/__tests__/upload.test.js +0 -234
  167. package/commands/project/__tests__/validate.test.d.ts +0 -1
  168. package/commands/project/__tests__/validate.test.js +0 -381
  169. package/commands/project/__tests__/watch.test.d.ts +0 -1
  170. package/commands/project/__tests__/watch.test.js +0 -35
  171. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  172. package/commands/sandbox/__tests__/create.test.js +0 -198
  173. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  174. package/commands/sandbox/__tests__/delete.test.js +0 -31
  175. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  176. package/commands/secret/__tests__/addSecret.test.js +0 -162
  177. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  178. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  179. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  180. package/commands/secret/__tests__/listSecret.test.js +0 -29
  181. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  182. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  183. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  184. package/commands/testAccount/__tests__/create.test.js +0 -106
  185. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  186. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  187. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  188. package/commands/testAccount/__tests__/delete.test.js +0 -29
  189. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  190. package/commands/testAccount/__tests__/importData.test.js +0 -92
  191. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  192. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  193. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  194. package/lib/__tests__/accountAuth.test.js +0 -258
  195. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  196. package/lib/__tests__/accountTypes.test.js +0 -98
  197. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  198. package/lib/__tests__/buildAccount.test.js +0 -211
  199. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  200. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  201. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  202. package/lib/__tests__/commandSuggestion.test.js +0 -121
  203. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  204. package/lib/__tests__/commonOpts.test.js +0 -80
  205. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  206. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  207. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  208. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  209. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  210. package/lib/__tests__/hasFeature.test.js +0 -167
  211. package/lib/__tests__/http.test.d.ts +0 -1
  212. package/lib/__tests__/http.test.js +0 -40
  213. package/lib/__tests__/importData.test.d.ts +0 -1
  214. package/lib/__tests__/importData.test.js +0 -98
  215. package/lib/__tests__/npmCli.test.d.ts +0 -1
  216. package/lib/__tests__/npmCli.test.js +0 -84
  217. package/lib/__tests__/oauth.test.d.ts +0 -1
  218. package/lib/__tests__/oauth.test.js +0 -109
  219. package/lib/__tests__/parsing.test.d.ts +0 -1
  220. package/lib/__tests__/parsing.test.js +0 -34
  221. package/lib/__tests__/polling.test.d.ts +0 -1
  222. package/lib/__tests__/polling.test.js +0 -76
  223. package/lib/__tests__/process.test.d.ts +0 -1
  224. package/lib/__tests__/process.test.js +0 -89
  225. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  226. package/lib/__tests__/sandboxes.test.js +0 -128
  227. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  228. package/lib/__tests__/serverlessLogs.test.js +0 -163
  229. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  230. package/lib/__tests__/usageTracking.test.js +0 -197
  231. package/lib/__tests__/validation.test.d.ts +0 -1
  232. package/lib/__tests__/validation.test.js +0 -143
  233. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  234. package/lib/__tests__/yargsUtils.test.js +0 -124
  235. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  236. package/lib/app/__tests__/migrate.test.js +0 -638
  237. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  238. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  239. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  240. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  241. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  242. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  243. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  244. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  245. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  246. package/lib/mcp/__tests__/setup.test.js +0 -523
  247. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  248. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  249. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  250. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  251. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  252. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  253. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  254. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  255. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  256. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  257. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  258. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  259. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  260. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  261. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  262. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  263. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  264. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  265. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  266. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  267. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  268. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  269. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  270. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  271. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  272. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  273. package/lib/projects/__tests__/components.test.d.ts +0 -1
  274. package/lib/projects/__tests__/components.test.js +0 -440
  275. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  276. package/lib/projects/__tests__/deploy.test.js +0 -231
  277. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  278. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  279. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  280. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  281. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  282. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  283. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  284. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  285. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  286. package/lib/projects/__tests__/projects.test.js +0 -58
  287. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  288. package/lib/projects/__tests__/structure.test.js +0 -210
  289. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  290. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  291. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  292. package/lib/projects/__tests__/upload.test.js +0 -183
  293. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  294. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  295. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  296. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  297. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  298. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  299. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  300. package/lib/projects/create/__tests__/v2.test.js +0 -257
  301. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  302. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  303. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  304. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  305. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  306. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  307. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  308. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  309. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  310. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  311. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  312. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  313. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  314. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  315. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  316. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  317. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  318. package/lib/theme/__tests__/migrate.test.js +0 -247
  319. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  320. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  321. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  322. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  323. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  324. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  325. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  326. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  327. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  328. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  329. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  330. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  331. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  332. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  333. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  334. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  335. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  336. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  337. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  338. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  339. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  340. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  341. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  342. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  343. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  344. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  345. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  346. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  347. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  348. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  349. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  350. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  351. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  352. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  353. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  354. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  355. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  356. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  357. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  358. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  359. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  360. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  361. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  362. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  363. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  364. package/mcp-server/utils/__tests__/command.test.js +0 -275
  365. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  366. package/mcp-server/utils/__tests__/content.test.js +0 -164
  367. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  368. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -1,160 +0,0 @@
1
- import { vi, describe, it, expect, beforeEach } from 'vitest';
2
- import UIExtensionsDevModeInterface from '../localDev/UIExtensionsDevModeInterface.js';
3
- import LocalDevState from '../localDev/LocalDevState.js';
4
- import { DevModeUnifiedInterface } from '@hubspot/ui-extensions-dev-server';
5
- import { requestPorts } from '@hubspot/local-dev-lib/portManager';
6
- import { logger } from '@hubspot/local-dev-lib/logger';
7
- import { getHubSpotApiOrigin, getHubSpotWebsiteOrigin, } from '@hubspot/local-dev-lib/urls';
8
- import { ENVIRONMENTS } from '@hubspot/local-dev-lib/constants/environments';
9
- vi.mock('@hubspot/ui-extensions-dev-server', () => ({
10
- DevModeUnifiedInterface: {
11
- setup: vi.fn().mockResolvedValue(undefined),
12
- start: vi.fn().mockResolvedValue(undefined),
13
- fileChange: vi.fn().mockResolvedValue(undefined),
14
- cleanup: vi.fn().mockResolvedValue(undefined),
15
- },
16
- }));
17
- vi.mock('@hubspot/local-dev-lib/portManager', () => ({
18
- requestPorts: vi.fn().mockResolvedValue({ 'test-port': 8080 }),
19
- }));
20
- vi.mock('@hubspot/local-dev-lib/urls', () => ({
21
- getHubSpotApiOrigin: vi.fn().mockReturnValue('https://api.hubspot.com'),
22
- getHubSpotWebsiteOrigin: vi.fn().mockReturnValue('https://app.hubspot.com'),
23
- }));
24
- describe('UIExtensionsDevModeInterface', () => {
25
- let uiExtensionsInterface;
26
- let mockLocalDevState;
27
- beforeEach(() => {
28
- vi.mocked(DevModeUnifiedInterface.setup).mockResolvedValue(undefined);
29
- vi.mocked(DevModeUnifiedInterface.start).mockResolvedValue(undefined);
30
- vi.mocked(DevModeUnifiedInterface.fileChange).mockResolvedValue(undefined);
31
- vi.mocked(DevModeUnifiedInterface.cleanup).mockResolvedValue(undefined);
32
- mockLocalDevState = new LocalDevState({
33
- targetProjectAccountId: 123,
34
- targetTestingAccountId: 456,
35
- projectConfig: {
36
- name: 'test-ui-extensions-project',
37
- srcDir: 'src',
38
- platformVersion: '1.0.0',
39
- },
40
- projectDir: '/test/ui-extensions-project',
41
- projectData: {
42
- name: 'test-ui-extensions-project',
43
- id: 789,
44
- createdAt: Date.now(),
45
- deletedAt: 0,
46
- isLocked: false,
47
- portalId: 123,
48
- updatedAt: Date.now(),
49
- },
50
- debug: false,
51
- initialProjectNodes: {
52
- 'test-component': {
53
- uid: 'test-component-uid',
54
- componentType: 'UI_EXTENSION',
55
- config: {
56
- name: 'Test UI Extension',
57
- type: 'card',
58
- },
59
- localDev: {
60
- componentRoot: '/test/path',
61
- componentConfigPath: '/test/path/config.json',
62
- configUpdatedSinceLastUpload: false,
63
- removed: false,
64
- parsingErrors: [],
65
- },
66
- componentDeps: {},
67
- metaFilePath: '/test/path',
68
- files: [],
69
- },
70
- },
71
- initialProjectProfileData: {
72
- testVariable: 'testValue',
73
- },
74
- profile: 'test',
75
- env: ENVIRONMENTS.QA,
76
- });
77
- uiExtensionsInterface = new UIExtensionsDevModeInterface({
78
- localDevState: mockLocalDevState,
79
- });
80
- });
81
- describe('constructor', () => {
82
- it('should store the localDevState reference', () => {
83
- expect(uiExtensionsInterface.localDevState).toBe(mockLocalDevState);
84
- });
85
- });
86
- describe('setup', () => {
87
- it('should call DevModeUnifiedInterface.setup with correct parameters', async () => {
88
- await uiExtensionsInterface.setup();
89
- expect(DevModeUnifiedInterface.setup).toHaveBeenCalledWith({
90
- components: mockLocalDevState.projectNodes,
91
- profileData: mockLocalDevState.projectProfileData,
92
- logger,
93
- urls: {
94
- api: 'https://api.hubspot.com',
95
- web: 'https://app.hubspot.com',
96
- },
97
- });
98
- });
99
- it('should use correct URLs based on environment', async () => {
100
- await uiExtensionsInterface.setup();
101
- expect(getHubSpotApiOrigin).toHaveBeenCalledWith(mockLocalDevState.env);
102
- expect(getHubSpotWebsiteOrigin).toHaveBeenCalledWith(mockLocalDevState.env);
103
- });
104
- it('should pass project nodes and profile data from state', async () => {
105
- await uiExtensionsInterface.setup();
106
- const setupCall = vi.mocked(DevModeUnifiedInterface.setup).mock
107
- .calls[0][0];
108
- expect(setupCall.components).toStrictEqual(mockLocalDevState.projectNodes);
109
- expect(setupCall.profileData).toStrictEqual(mockLocalDevState.projectProfileData);
110
- });
111
- });
112
- describe('start', () => {
113
- it('should call DevModeUnifiedInterface.start with correct parameters', async () => {
114
- await uiExtensionsInterface.start();
115
- expect(DevModeUnifiedInterface.start).toHaveBeenCalledWith({
116
- accountId: mockLocalDevState.targetTestingAccountId,
117
- projectConfig: mockLocalDevState.projectConfig,
118
- requestPorts,
119
- });
120
- });
121
- it('should use targetTestingAccountId from state', async () => {
122
- await uiExtensionsInterface.start();
123
- const startCall = vi.mocked(DevModeUnifiedInterface.start).mock
124
- .calls[0][0];
125
- expect(startCall.accountId).toBe(456); // targetTestingAccountId
126
- });
127
- it('should pass project config from state', async () => {
128
- await uiExtensionsInterface.start();
129
- const startCall = vi.mocked(DevModeUnifiedInterface.start).mock
130
- .calls[0][0];
131
- expect(startCall.projectConfig).toStrictEqual(mockLocalDevState.projectConfig);
132
- });
133
- });
134
- describe('fileChange', () => {
135
- it('should call DevModeUnifiedInterface.fileChange with correct parameters', async () => {
136
- const filePath = 'src/components/TestCard.tsx';
137
- const event = 'change';
138
- await uiExtensionsInterface.fileChange(filePath, event);
139
- expect(DevModeUnifiedInterface.fileChange).toHaveBeenCalledWith(filePath, event);
140
- });
141
- it('should handle different file events', async () => {
142
- const testCases = [
143
- { filePath: 'src/components/Card.tsx', event: 'add' },
144
- { filePath: 'src/styles/main.css', event: 'change' },
145
- { filePath: 'src/config.json', event: 'unlink' },
146
- ];
147
- for (const testCase of testCases) {
148
- await uiExtensionsInterface.fileChange(testCase.filePath, testCase.event);
149
- expect(DevModeUnifiedInterface.fileChange).toHaveBeenCalledWith(testCase.filePath, testCase.event);
150
- }
151
- expect(DevModeUnifiedInterface.fileChange).toHaveBeenCalledTimes(3);
152
- });
153
- });
154
- describe('cleanup', () => {
155
- it('should call DevModeUnifiedInterface.cleanup', async () => {
156
- await uiExtensionsInterface.cleanup();
157
- expect(DevModeUnifiedInterface.cleanup).toHaveBeenCalledWith();
158
- });
159
- });
160
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,440 +0,0 @@
1
- import fs from 'fs';
2
- import { handleComponentCollision, updateHsMetaFilesWithAutoGeneratedFields, } from '../components.js';
3
- import { uiLogger } from '../../ui/logger.js';
4
- import { coerceToValidUid } from '@hubspot/project-parsing-lib/uid';
5
- import { fileExists } from '../../validation.js';
6
- vi.mock('fs');
7
- vi.mock('../../validation.js');
8
- vi.mock('@hubspot/project-parsing-lib/uid', () => ({
9
- coerceToValidUid: vi.fn(),
10
- }));
11
- vi.mock('@hubspot/project-parsing-lib/constants', () => ({
12
- METAFILE_EXTENSION: '.module.meta.json',
13
- APP_KEY: 'app',
14
- }));
15
- const mockedFs = vi.mocked(fs);
16
- const mockCoerceToValidUid = vi.mocked(coerceToValidUid);
17
- const mockedFileExists = vi.mocked(fileExists);
18
- describe('lib/projects/components', () => {
19
- describe('handleComponentCollision()', () => {
20
- const mockCollision = {
21
- dest: '/dest/path',
22
- src: '/src/path',
23
- collisions: [],
24
- };
25
- beforeEach(() => {
26
- vi.resetAllMocks();
27
- // Default: fileExists returns false (file doesn't exist)
28
- mockedFileExists.mockReturnValue(false);
29
- });
30
- afterEach(() => {
31
- vi.restoreAllMocks();
32
- });
33
- it('handles source file collisions by renaming them with sequential numbers', () => {
34
- const collision = {
35
- ...mockCollision,
36
- collisions: ['component.js', 'utils.ts'],
37
- };
38
- mockedFs.copyFileSync.mockImplementation(() => { });
39
- handleComponentCollision(collision);
40
- expect(mockedFs.copyFileSync).toHaveBeenCalledTimes(2);
41
- expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/component.js', '/dest/path/component-2.js');
42
- expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/utils.ts', '/dest/path/utils-2.ts');
43
- });
44
- it('handles metafile collisions by renaming and updating references', () => {
45
- const collision = {
46
- ...mockCollision,
47
- collisions: ['component.module.meta.json', 'source.js'],
48
- };
49
- const mockMetaContent = JSON.stringify({
50
- file: 'source.js',
51
- label: 'Test Component',
52
- });
53
- mockedFs.readFileSync.mockReturnValue(mockMetaContent);
54
- mockedFs.writeFileSync.mockImplementation(() => { });
55
- mockedFs.copyFileSync.mockImplementation(() => { });
56
- handleComponentCollision(collision);
57
- expect(mockedFs.readFileSync).toHaveBeenCalledWith('/src/path/component.module.meta.json', 'utf-8');
58
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/dest/path/component-2.module.meta.json', expect.stringContaining('source-2.js'));
59
- expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/source.js', '/dest/path/source-2.js');
60
- });
61
- it('handles package.json collisions by merging dependencies', () => {
62
- const collision = {
63
- ...mockCollision,
64
- collisions: ['package.json'],
65
- };
66
- const existingPackageJson = {
67
- name: 'existing-package',
68
- dependencies: {
69
- existing: '1.0.0',
70
- shared: '1.0.0',
71
- },
72
- devDependencies: {
73
- 'existing-dev': '1.0.0',
74
- },
75
- };
76
- const newPackageJson = {
77
- name: 'new-package',
78
- dependencies: {
79
- new: '2.0.0',
80
- shared: '2.0.0',
81
- },
82
- devDependencies: {
83
- 'new-dev': '2.0.0',
84
- 'existing-dev': '2.0.0',
85
- },
86
- };
87
- mockedFs.readFileSync
88
- .mockReturnValueOnce(JSON.stringify(existingPackageJson))
89
- .mockReturnValueOnce(JSON.stringify(newPackageJson));
90
- mockedFs.writeFileSync.mockImplementation(() => { });
91
- // Mock console.log to avoid output during tests
92
- const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
93
- handleComponentCollision(collision);
94
- const expectedMergedPackageJson = {
95
- name: 'existing-package',
96
- dependencies: {
97
- new: '2.0.0',
98
- shared: '1.0.0',
99
- existing: '1.0.0',
100
- },
101
- devDependencies: {
102
- 'new-dev': '2.0.0',
103
- 'existing-dev': '1.0.0',
104
- },
105
- };
106
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/dest/path/package.json', JSON.stringify(expectedMergedPackageJson, null, 2));
107
- consoleSpy.mockRestore();
108
- });
109
- it('handles mixed collision types (source files, metafiles, and package.json)', () => {
110
- const collision = {
111
- ...mockCollision,
112
- collisions: [
113
- 'component.js',
114
- 'component.module.meta.json',
115
- 'package.json',
116
- 'utils.ts',
117
- ],
118
- };
119
- const mockMetaContent = JSON.stringify({
120
- file: 'component.js',
121
- label: 'Test Component',
122
- });
123
- const existingPackageJson = { name: 'existing' };
124
- const newPackageJson = { name: 'new', dependencies: { test: '1.0.0' } };
125
- mockedFs.readFileSync
126
- .mockReturnValueOnce(mockMetaContent)
127
- .mockReturnValueOnce(JSON.stringify(existingPackageJson))
128
- .mockReturnValueOnce(JSON.stringify(newPackageJson));
129
- mockedFs.writeFileSync.mockImplementation(() => { });
130
- mockedFs.copyFileSync.mockImplementation(() => { });
131
- const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
132
- handleComponentCollision(collision);
133
- // Verify source files are copied with new names
134
- expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/component.js', '/dest/path/component-2.js');
135
- expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/utils.ts', '/dest/path/utils-2.ts');
136
- // Verify metafile is updated and written with new name
137
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/dest/path/component-2.module.meta.json', expect.stringContaining('component-2.js'));
138
- // Verify package.json is merged
139
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/dest/path/package.json', expect.stringContaining('"dependencies"'));
140
- consoleSpy.mockRestore();
141
- });
142
- it('handles empty collisions array gracefully', () => {
143
- const collision = {
144
- ...mockCollision,
145
- collisions: [],
146
- };
147
- handleComponentCollision(collision);
148
- expect(mockedFs.copyFileSync).not.toHaveBeenCalled();
149
- expect(mockedFs.readFileSync).not.toHaveBeenCalled();
150
- expect(mockedFs.writeFileSync).not.toHaveBeenCalled();
151
- });
152
- it('correctly categorizes different file types', () => {
153
- const collision = {
154
- ...mockCollision,
155
- collisions: [
156
- 'regular.js',
157
- 'nested/path/file.ts',
158
- 'component.meta.json',
159
- 'another.meta.json',
160
- 'package.json',
161
- ],
162
- };
163
- const mockMetaContent = '{}';
164
- mockedFs.readFileSync.mockReturnValue(mockMetaContent);
165
- mockedFs.writeFileSync.mockImplementation(() => { });
166
- // Track what files are being copied to debug the issue
167
- mockedFs.copyFileSync.mockImplementation(() => { });
168
- // Mock console.log for package.json handling
169
- const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
170
- handleComponentCollision(collision);
171
- expect(mockedFs.readFileSync).toHaveBeenCalledTimes(2);
172
- // Should handle 2 metafiles
173
- expect(mockedFs.readFileSync).toHaveBeenCalledWith('/dest/path/package.json', 'utf-8');
174
- expect(mockedFs.readFileSync).toHaveBeenCalledWith('/src/path/package.json', 'utf-8');
175
- consoleSpy.mockRestore();
176
- });
177
- it('skips tooling config files on collision instead of renaming them', () => {
178
- const collision = {
179
- ...mockCollision,
180
- collisions: [
181
- 'src/app/cards/.prettierrc.json',
182
- 'src/app/cards/component.js',
183
- 'src/app/cards/eslint.config.js',
184
- ],
185
- };
186
- mockedFs.copyFileSync.mockImplementation(() => { });
187
- handleComponentCollision(collision);
188
- expect(mockedFs.copyFileSync).toHaveBeenCalledTimes(1);
189
- expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/src/app/cards/component.js', '/dest/path/src/app/cards/component-2.js');
190
- });
191
- it('falls back to timestamp when maxAttempts is exhausted', () => {
192
- const collision = {
193
- ...mockCollision,
194
- collisions: ['component.js'],
195
- };
196
- // Mock Date.now to return a consistent timestamp
197
- const mockTimestamp = 1234567890;
198
- vi.spyOn(Date, 'now').mockReturnValue(mockTimestamp);
199
- // Mock fileExists to return true 10 times (exhausting maxAttempts)
200
- // The function starts with differentiator = 1, then increments to 2, 3, etc.
201
- // It will try 10 times (differentiators 2-11), and if all return true,
202
- // maxAttempts will be 0 and it will fall back to timestamp
203
- mockedFileExists.mockReturnValue(true);
204
- mockedFs.copyFileSync.mockImplementation(() => { });
205
- handleComponentCollision(collision);
206
- // Should use timestamp as differentiator
207
- expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/component.js', `/dest/path/component-${mockTimestamp}.js`);
208
- vi.restoreAllMocks();
209
- });
210
- it('falls back to timestamp when fileExists throws an error', () => {
211
- const collision = {
212
- ...mockCollision,
213
- collisions: ['component.js'],
214
- };
215
- // Mock Date.now to return a consistent timestamp
216
- const mockTimestamp = 9876543210;
217
- vi.spyOn(Date, 'now').mockReturnValue(mockTimestamp);
218
- // Mock fileExists to throw an error
219
- const mockError = new Error('File system error');
220
- mockedFileExists.mockImplementation(() => {
221
- throw mockError;
222
- });
223
- mockedFs.copyFileSync.mockImplementation(() => { });
224
- const mockUiLogger = vi.mocked(uiLogger);
225
- handleComponentCollision(collision);
226
- // Should log debug message about the error
227
- expect(mockUiLogger.debug).toHaveBeenCalledWith('Failed to check files for filename differentiator. Falling back to timestamp.');
228
- // Should use timestamp as differentiator
229
- expect(mockedFs.copyFileSync).toHaveBeenCalledWith('/src/path/component.js', `/dest/path/component-${mockTimestamp}.js`);
230
- vi.restoreAllMocks();
231
- });
232
- });
233
- describe('updateHsMetaFilesWithAutoGeneratedFields()', () => {
234
- beforeEach(() => {
235
- vi.resetAllMocks();
236
- mockCoerceToValidUid.mockImplementation((input) => input);
237
- });
238
- afterEach(() => {
239
- vi.restoreAllMocks();
240
- });
241
- it('updates component metadata files with project-specific UIDs', () => {
242
- const projectName = 'my-project';
243
- const hsMetaFilePaths = [
244
- '/path/to/component1.meta.json',
245
- '/path/to/component2.meta.json',
246
- ];
247
- const component1 = {
248
- type: 'card',
249
- uid: 'old-uid-1',
250
- config: {
251
- name: 'Old Name',
252
- },
253
- };
254
- const component2 = {
255
- type: 'function',
256
- uid: 'old-uid-2',
257
- };
258
- mockedFs.readFileSync
259
- .mockReturnValueOnce(JSON.stringify(component1))
260
- .mockReturnValueOnce(JSON.stringify(component2));
261
- mockedFs.writeFileSync.mockImplementation(() => { });
262
- mockCoerceToValidUid
263
- .mockReturnValueOnce('card-my-project')
264
- .mockReturnValueOnce('function-my-project');
265
- updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMetaFilePaths);
266
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('my-project_card');
267
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('my-project_function');
268
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('my-project_card');
269
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('my-project_function');
270
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/path/to/component1.meta.json', JSON.stringify({
271
- type: 'card',
272
- uid: 'card_my_project',
273
- config: {
274
- name: 'Old Name',
275
- },
276
- }, null, 2));
277
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/path/to/component2.meta.json', JSON.stringify({
278
- type: 'function',
279
- uid: 'function_my_project',
280
- }, null, 2));
281
- });
282
- it('handles app components by updating both uid and config.name', () => {
283
- const projectName = 'test-app';
284
- const hsMetaFilePaths = ['/path/to/app.meta.json'];
285
- const appComponent = {
286
- type: 'app',
287
- uid: 'old-app-uid',
288
- config: {
289
- name: 'Old App Name',
290
- other: 'property',
291
- },
292
- };
293
- mockedFs.readFileSync.mockReturnValue(JSON.stringify(appComponent));
294
- mockedFs.writeFileSync.mockImplementation(() => { });
295
- mockCoerceToValidUid.mockReturnValue('app-test-app');
296
- updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMetaFilePaths);
297
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('test-app_app');
298
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/path/to/app.meta.json', JSON.stringify({
299
- type: 'app',
300
- uid: 'app_test_app',
301
- config: {
302
- name: 'test-app-App',
303
- other: 'property',
304
- },
305
- }, null, 2));
306
- });
307
- it('handles UID collisions by using differentiators', () => {
308
- const projectName = 'collision-project';
309
- const hsMetaFilePaths = ['/path/to/component1.meta.json'];
310
- const existingUids = ['card_collision_project'];
311
- const component1 = { type: 'card', uid: 'old-uid-1' };
312
- mockedFs.readFileSync.mockReturnValue(JSON.stringify(component1));
313
- mockedFs.writeFileSync.mockImplementation(() => { });
314
- // First call for getBaseUid() check, second call when adding differentiator
315
- mockCoerceToValidUid
316
- .mockReturnValueOnce('card-collision-project')
317
- .mockReturnValueOnce('card-collision-project');
318
- updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMetaFilePaths, existingUids);
319
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('collision-project_card');
320
- // getBaseUid() is called twice - once for initial check, once when adding differentiator
321
- expect(mockCoerceToValidUid).toHaveBeenCalledTimes(2);
322
- // The differentiator is appended with a hyphen, so the final UID has a hyphen before the number
323
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/path/to/component1.meta.json', JSON.stringify({
324
- type: 'card',
325
- uid: 'card_collision_project_2',
326
- }, null, 2));
327
- });
328
- it('falls back to original uid when coerceToValidUid returns null', () => {
329
- const projectName = 'fallback-project';
330
- const hsMetaFilePaths = ['/path/to/component.meta.json'];
331
- const component = {
332
- type: 'card',
333
- uid: 'original-uid',
334
- };
335
- mockedFs.readFileSync.mockReturnValue(JSON.stringify(component));
336
- mockedFs.writeFileSync.mockImplementation(() => { });
337
- mockCoerceToValidUid.mockReturnValue(undefined);
338
- updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMetaFilePaths);
339
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/path/to/component.meta.json', JSON.stringify({
340
- type: 'card',
341
- uid: 'original-uid',
342
- }, null, 2));
343
- });
344
- it('handles empty hsMetaFilePaths array', () => {
345
- const projectName = 'empty-project';
346
- const hsMetaFilePaths = [];
347
- updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMetaFilePaths);
348
- expect(mockedFs.readFileSync).not.toHaveBeenCalled();
349
- expect(mockedFs.writeFileSync).not.toHaveBeenCalled();
350
- });
351
- it('handles components without config property for app type', () => {
352
- const projectName = 'no-config-project';
353
- const hsMetaFilePaths = ['/path/to/app.meta.json'];
354
- const appComponent = {
355
- type: 'app',
356
- uid: 'app-uid',
357
- // No config property
358
- };
359
- mockedFs.readFileSync.mockReturnValue(JSON.stringify(appComponent));
360
- mockedFs.writeFileSync.mockImplementation(() => { });
361
- mockCoerceToValidUid.mockReturnValue('app-no-config-project');
362
- updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMetaFilePaths);
363
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('no-config-project_app');
364
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/path/to/app.meta.json', JSON.stringify({
365
- type: 'app',
366
- uid: 'app_no_config_project',
367
- }, null, 2));
368
- });
369
- it('replaces hyphens with underscores in coerced UIDs', () => {
370
- const projectName = 'my-project';
371
- const hsMetaFilePaths = ['/path/to/component.meta.json'];
372
- const component = {
373
- type: 'card',
374
- uid: 'old-uid',
375
- };
376
- mockedFs.readFileSync.mockReturnValue(JSON.stringify(component));
377
- mockedFs.writeFileSync.mockImplementation(() => { });
378
- // coerceToValidUid returns a value with hyphens that should be converted to underscores
379
- mockCoerceToValidUid.mockReturnValue('my-project-card-with-hyphens');
380
- updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMetaFilePaths);
381
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('my-project_card');
382
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/path/to/component.meta.json', JSON.stringify({
383
- type: 'card',
384
- uid: 'my_project_card_with_hyphens',
385
- }, null, 2));
386
- });
387
- it('handles UIDs with multiple hyphens correctly', () => {
388
- const projectName = 'test-project';
389
- const hsMetaFilePaths = ['/path/to/component.meta.json'];
390
- const component = {
391
- type: 'custom-object',
392
- uid: 'old-uid',
393
- };
394
- mockedFs.readFileSync.mockReturnValue(JSON.stringify(component));
395
- mockedFs.writeFileSync.mockImplementation(() => { });
396
- mockCoerceToValidUid.mockReturnValue('test-project-custom-object-type');
397
- updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMetaFilePaths);
398
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('test-project_custom-object');
399
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/path/to/component.meta.json', JSON.stringify({
400
- type: 'custom-object',
401
- uid: 'test_project_custom_object_type',
402
- }, null, 2));
403
- });
404
- it('preserves UIDs without hyphens unchanged', () => {
405
- const projectName = 'simpleproject';
406
- const hsMetaFilePaths = ['/path/to/component.meta.json'];
407
- const component = {
408
- type: 'card',
409
- uid: 'old-uid',
410
- };
411
- mockedFs.readFileSync.mockReturnValue(JSON.stringify(component));
412
- mockedFs.writeFileSync.mockImplementation(() => { });
413
- // coerceToValidUid returns a value without hyphens
414
- mockCoerceToValidUid.mockReturnValue('simpleprojectcard');
415
- updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMetaFilePaths);
416
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('simpleproject_card');
417
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/path/to/component.meta.json', JSON.stringify({
418
- type: 'card',
419
- uid: 'simpleprojectcard',
420
- }, null, 2));
421
- });
422
- it('handles project names with hyphens in UID generation', () => {
423
- const projectName = 'my-super-project';
424
- const hsMetaFilePaths = ['/path/to/component.meta.json'];
425
- const component = {
426
- type: 'function',
427
- uid: 'old-uid',
428
- };
429
- mockedFs.readFileSync.mockReturnValue(JSON.stringify(component));
430
- mockedFs.writeFileSync.mockImplementation(() => { });
431
- mockCoerceToValidUid.mockReturnValue('my-super-project-function');
432
- updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMetaFilePaths);
433
- expect(mockCoerceToValidUid).toHaveBeenCalledWith('my-super-project_function');
434
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith('/path/to/component.meta.json', JSON.stringify({
435
- type: 'function',
436
- uid: 'my_super_project_function',
437
- }, null, 2));
438
- });
439
- });
440
- });
@@ -1 +0,0 @@
1
- export {};