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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/bin/cli.js +2 -0
  2. package/commands/account/auth.js +12 -22
  3. package/commands/account/clean.js +5 -6
  4. package/commands/account/createOverride.js +7 -7
  5. package/commands/account/info.js +2 -1
  6. package/commands/account/list.js +3 -5
  7. package/commands/account/remove.js +2 -3
  8. package/commands/account/removeOverride.js +8 -10
  9. package/commands/account/rename.js +5 -6
  10. package/commands/account/use.js +8 -19
  11. package/commands/api.d.ts +10 -0
  12. package/commands/api.js +164 -0
  13. package/commands/app/migrate.js +8 -8
  14. package/commands/app/secret/add.js +6 -7
  15. package/commands/app/secret/delete.js +9 -10
  16. package/commands/app/secret/list.js +6 -7
  17. package/commands/app/secret/update.js +8 -9
  18. package/commands/auth.js +12 -12
  19. package/commands/cms/app/create.js +9 -5
  20. package/commands/cms/convertFields.js +8 -8
  21. package/commands/cms/delete.js +2 -3
  22. package/commands/cms/fetch.js +7 -7
  23. package/commands/cms/function/create.js +9 -5
  24. package/commands/cms/function/deploy.js +2 -3
  25. package/commands/cms/function/list.js +11 -7
  26. package/commands/cms/function/logs.js +17 -23
  27. package/commands/cms/function/server.js +2 -3
  28. package/commands/cms/getReactModule.js +7 -8
  29. package/commands/cms/lighthouseScore.js +25 -24
  30. package/commands/cms/lint.js +4 -5
  31. package/commands/cms/list.js +5 -6
  32. package/commands/cms/module/create.js +9 -5
  33. package/commands/cms/module/marketplace-validate.js +7 -8
  34. package/commands/cms/mv.js +2 -3
  35. package/commands/cms/template/create.js +10 -6
  36. package/commands/cms/theme/create.js +5 -5
  37. package/commands/cms/theme/generate-selectors.js +5 -4
  38. package/commands/cms/theme/marketplace-validate.js +8 -9
  39. package/commands/cms/theme/preview.js +16 -8
  40. package/commands/cms/upload.js +15 -12
  41. package/commands/cms/watch.js +5 -5
  42. package/commands/cms/webpack/create.js +5 -5
  43. package/commands/completion.js +3 -5
  44. package/commands/config/migrate.js +6 -7
  45. package/commands/config/set.js +5 -6
  46. package/commands/customObject/create.js +4 -5
  47. package/commands/customObject/createSchema.js +4 -5
  48. package/commands/customObject/deleteSchema.js +4 -5
  49. package/commands/customObject/fetchAllSchemas.js +2 -3
  50. package/commands/customObject/fetchSchema.js +2 -3
  51. package/commands/customObject/listSchemas.js +2 -3
  52. package/commands/customObject/updateSchema.js +4 -5
  53. package/commands/doctor.js +8 -8
  54. package/commands/feedback.js +6 -4
  55. package/commands/filemanager/fetch.js +5 -6
  56. package/commands/filemanager/upload.js +5 -5
  57. package/commands/getStarted.js +14 -16
  58. package/commands/hubdb/clear.js +5 -6
  59. package/commands/hubdb/create.js +4 -5
  60. package/commands/hubdb/delete.js +8 -9
  61. package/commands/hubdb/fetch.js +5 -6
  62. package/commands/hubdb/list.js +16 -14
  63. package/commands/init.js +14 -17
  64. package/commands/mcp/setup.js +5 -6
  65. package/commands/mcp/start.js +2 -3
  66. package/commands/open.js +4 -5
  67. package/commands/project/add.js +10 -5
  68. package/commands/project/create.js +10 -10
  69. package/commands/project/delete.d.ts +7 -0
  70. package/commands/project/delete.js +74 -0
  71. package/commands/project/deploy.js +36 -34
  72. package/commands/project/dev/deprecatedFlow.js +42 -15
  73. package/commands/project/dev/index.d.ts +3 -3
  74. package/commands/project/dev/index.js +24 -30
  75. package/commands/project/dev/unifiedFlow.js +37 -14
  76. package/commands/project/download.js +10 -11
  77. package/commands/project/info.js +17 -17
  78. package/commands/project/installDeps.js +9 -6
  79. package/commands/project/lint.js +11 -8
  80. package/commands/project/list.js +14 -14
  81. package/commands/project/listBuilds.js +8 -6
  82. package/commands/project/logs.js +5 -6
  83. package/commands/project/migrate.js +8 -8
  84. package/commands/project/open.js +5 -6
  85. package/commands/project/profile/add.js +12 -8
  86. package/commands/project/profile/delete.js +15 -11
  87. package/commands/project/updateDeps.js +9 -6
  88. package/commands/project/upload.js +31 -17
  89. package/commands/project/validate.js +11 -11
  90. package/commands/project/watch.js +20 -20
  91. package/commands/project.js +2 -0
  92. package/commands/sandbox/create.js +15 -15
  93. package/commands/sandbox/delete.js +13 -14
  94. package/commands/secret/addSecret.js +6 -7
  95. package/commands/secret/deleteSecret.js +5 -6
  96. package/commands/secret/listSecret.js +2 -3
  97. package/commands/secret/updateSecret.js +4 -5
  98. package/commands/testAccount/create.d.ts +1 -1
  99. package/commands/testAccount/create.js +20 -16
  100. package/commands/testAccount/createConfig.js +7 -8
  101. package/commands/testAccount/delete.js +27 -18
  102. package/commands/testAccount/importData.js +6 -7
  103. package/commands/upgrade.js +9 -10
  104. package/lang/en.d.ts +94 -7
  105. package/lang/en.js +94 -10
  106. package/lib/accountAuth.js +2 -2
  107. package/lib/buildAccount.js +3 -3
  108. package/lib/constants.d.ts +0 -1
  109. package/lib/constants.js +0 -1
  110. package/lib/doctor/Diagnosis.js +5 -5
  111. package/lib/errorHandlers/index.js +4 -3
  112. package/lib/errorHandlers/suppressError.js +4 -0
  113. package/lib/errors/PromptExitError.d.ts +4 -2
  114. package/lib/errors/PromptExitError.js +3 -0
  115. package/lib/hasFeature.js +1 -2
  116. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  117. package/lib/process.d.ts +1 -1
  118. package/lib/process.js +10 -3
  119. package/lib/projects/create/v2.js +1 -2
  120. package/lib/projects/delete.d.ts +13 -0
  121. package/lib/projects/delete.js +193 -0
  122. package/lib/projects/localDev/AppDevModeInterface.js +11 -11
  123. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +3 -1
  124. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
  125. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  126. package/lib/projects/localDev/DevSessionManager.js +31 -19
  127. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +3 -0
  128. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +16 -12
  129. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  130. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  131. package/lib/projects/localDev/LocalDevState.js +3 -1
  132. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  133. package/lib/projects/localDev/helpers/account.js +16 -19
  134. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  135. package/lib/projects/localDev/helpers/process.js +4 -10
  136. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  137. package/lib/projects/localDev/helpers/project.js +31 -15
  138. package/lib/projects/projectInfo.d.ts +3 -20
  139. package/lib/projects/projectInfo.js +32 -54
  140. package/lib/projects/projectProfiles.d.ts +1 -2
  141. package/lib/projects/projectProfiles.js +5 -17
  142. package/lib/projects/upload.js +19 -0
  143. package/lib/projects/workspaces.d.ts +42 -0
  144. package/lib/projects/workspaces.js +350 -0
  145. package/lib/prompts/createApiSamplePrompt.js +4 -0
  146. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  147. package/lib/prompts/projectProfilePrompt.js +46 -0
  148. package/lib/prompts/promptUtils.js +3 -2
  149. package/lib/prompts/selectHubDBTablePrompt.js +2 -2
  150. package/lib/prompts/selectPublicAppForMigrationPrompt.js +2 -2
  151. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  152. package/lib/theme/cmsDevServerProcess.js +7 -6
  153. package/lib/ui/SpinniesManager.d.ts +1 -0
  154. package/lib/ui/SpinniesManager.js +20 -6
  155. package/lib/ui/spinniesUtils.d.ts +0 -1
  156. package/lib/ui/spinniesUtils.js +6 -16
  157. package/lib/usageTracking.d.ts +3 -4
  158. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  159. package/lib/yargs/makeYargsBuilder.js +33 -0
  160. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  161. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  162. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  163. package/lib/yargs/strictEnforceBoolean.js +13 -0
  164. package/lib/yargsUtils.d.ts +3 -16
  165. package/lib/yargsUtils.js +3 -48
  166. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +1 -1
  167. package/package.json +10 -5
  168. package/types/LocalDev.d.ts +5 -0
  169. package/types/Projects.d.ts +19 -0
  170. package/types/Yargs.d.ts +18 -1
  171. package/api/__tests__/migrate.test.d.ts +0 -1
  172. package/api/__tests__/migrate.test.js +0 -199
  173. package/commands/__tests__/account.test.d.ts +0 -1
  174. package/commands/__tests__/account.test.js +0 -69
  175. package/commands/__tests__/auth.test.d.ts +0 -1
  176. package/commands/__tests__/auth.test.js +0 -43
  177. package/commands/__tests__/cms.test.d.ts +0 -1
  178. package/commands/__tests__/cms.test.js +0 -87
  179. package/commands/__tests__/config.test.d.ts +0 -1
  180. package/commands/__tests__/config.test.js +0 -44
  181. package/commands/__tests__/customObject.test.d.ts +0 -1
  182. package/commands/__tests__/customObject.test.js +0 -68
  183. package/commands/__tests__/doctor.test.d.ts +0 -1
  184. package/commands/__tests__/doctor.test.js +0 -132
  185. package/commands/__tests__/feedback.test.d.ts +0 -1
  186. package/commands/__tests__/feedback.test.js +0 -24
  187. package/commands/__tests__/filemanager.test.d.ts +0 -1
  188. package/commands/__tests__/filemanager.test.js +0 -45
  189. package/commands/__tests__/getStarted.test.d.ts +0 -1
  190. package/commands/__tests__/getStarted.test.js +0 -173
  191. package/commands/__tests__/hubdb.test.d.ts +0 -1
  192. package/commands/__tests__/hubdb.test.js +0 -50
  193. package/commands/__tests__/init.test.d.ts +0 -1
  194. package/commands/__tests__/init.test.js +0 -42
  195. package/commands/__tests__/mcp.test.d.ts +0 -1
  196. package/commands/__tests__/mcp.test.js +0 -46
  197. package/commands/__tests__/open.test.d.ts +0 -1
  198. package/commands/__tests__/open.test.js +0 -58
  199. package/commands/__tests__/project.test.d.ts +0 -1
  200. package/commands/__tests__/project.test.js +0 -125
  201. package/commands/__tests__/sandbox.test.d.ts +0 -1
  202. package/commands/__tests__/sandbox.test.js +0 -44
  203. package/commands/__tests__/secret.test.d.ts +0 -1
  204. package/commands/__tests__/secret.test.js +0 -49
  205. package/commands/__tests__/testAccount.test.d.ts +0 -1
  206. package/commands/__tests__/testAccount.test.js +0 -57
  207. package/commands/__tests__/upgrade.test.d.ts +0 -1
  208. package/commands/__tests__/upgrade.test.js +0 -309
  209. package/commands/account/__tests__/auth.test.d.ts +0 -1
  210. package/commands/account/__tests__/auth.test.js +0 -206
  211. package/commands/account/__tests__/clean.test.d.ts +0 -1
  212. package/commands/account/__tests__/clean.test.js +0 -28
  213. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  214. package/commands/account/__tests__/createOverride.test.js +0 -32
  215. package/commands/account/__tests__/info.test.d.ts +0 -1
  216. package/commands/account/__tests__/info.test.js +0 -28
  217. package/commands/account/__tests__/list.test.d.ts +0 -1
  218. package/commands/account/__tests__/list.test.js +0 -153
  219. package/commands/account/__tests__/remove.test.d.ts +0 -1
  220. package/commands/account/__tests__/remove.test.js +0 -36
  221. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  222. package/commands/account/__tests__/removeOverride.js +0 -25
  223. package/commands/account/__tests__/rename.test.d.ts +0 -1
  224. package/commands/account/__tests__/rename.test.js +0 -82
  225. package/commands/account/__tests__/use.test.d.ts +0 -1
  226. package/commands/account/__tests__/use.test.js +0 -170
  227. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  228. package/commands/app/__tests__/migrate.test.js +0 -111
  229. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  230. package/commands/app/secret/__tests__/add.test.js +0 -140
  231. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  232. package/commands/app/secret/__tests__/delete.test.js +0 -28
  233. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  234. package/commands/app/secret/__tests__/list.test.js +0 -25
  235. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  236. package/commands/app/secret/__tests__/update.test.js +0 -28
  237. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  238. package/commands/cms/__tests__/delete.test.js +0 -39
  239. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  240. package/commands/cms/__tests__/fetch.test.js +0 -156
  241. package/commands/cms/__tests__/function.test.d.ts +0 -1
  242. package/commands/cms/__tests__/function.test.js +0 -50
  243. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  244. package/commands/cms/__tests__/lint.test.js +0 -33
  245. package/commands/cms/__tests__/list.test.d.ts +0 -1
  246. package/commands/cms/__tests__/list.test.js +0 -42
  247. package/commands/cms/__tests__/module.test.d.ts +0 -1
  248. package/commands/cms/__tests__/module.test.js +0 -45
  249. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  250. package/commands/cms/__tests__/mv.test.js +0 -46
  251. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  252. package/commands/cms/__tests__/theme.test.js +0 -54
  253. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  254. package/commands/cms/__tests__/upload.test.js +0 -312
  255. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  256. package/commands/cms/__tests__/watch.test.js +0 -204
  257. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  258. package/commands/cms/function/__tests__/logs.test.js +0 -70
  259. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  260. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  261. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  262. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  263. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  264. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  265. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  266. package/commands/customObject/__tests__/create.test.js +0 -40
  267. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  268. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  269. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  270. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  271. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  272. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  273. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  274. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  275. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  276. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  277. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  278. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  279. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  280. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  281. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  282. package/commands/filemanager/__tests__/upload.test.js +0 -191
  283. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  284. package/commands/hubdb/__tests__/clear.test.js +0 -28
  285. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  286. package/commands/hubdb/__tests__/create.test.js +0 -28
  287. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  288. package/commands/hubdb/__tests__/delete.test.js +0 -28
  289. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  290. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  291. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  292. package/commands/hubdb/__tests__/list.test.js +0 -88
  293. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  294. package/commands/mcp/__tests__/setup.test.js +0 -26
  295. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  296. package/commands/mcp/__tests__/start.test.js +0 -144
  297. package/commands/project/__tests__/add.test.d.ts +0 -1
  298. package/commands/project/__tests__/add.test.js +0 -107
  299. package/commands/project/__tests__/create.test.d.ts +0 -1
  300. package/commands/project/__tests__/create.test.js +0 -97
  301. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  302. package/commands/project/__tests__/deploy.test.js +0 -307
  303. package/commands/project/__tests__/dev.test.d.ts +0 -1
  304. package/commands/project/__tests__/dev.test.js +0 -273
  305. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  306. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  307. package/commands/project/__tests__/download.test.d.ts +0 -1
  308. package/commands/project/__tests__/download.test.js +0 -39
  309. package/commands/project/__tests__/info.test.d.ts +0 -1
  310. package/commands/project/__tests__/info.test.js +0 -145
  311. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  312. package/commands/project/__tests__/installDeps.test.js +0 -140
  313. package/commands/project/__tests__/lint.test.d.ts +0 -1
  314. package/commands/project/__tests__/lint.test.js +0 -704
  315. package/commands/project/__tests__/list.test.d.ts +0 -1
  316. package/commands/project/__tests__/list.test.js +0 -31
  317. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  318. package/commands/project/__tests__/listBuilds.test.js +0 -38
  319. package/commands/project/__tests__/logs.test.d.ts +0 -1
  320. package/commands/project/__tests__/logs.test.js +0 -202
  321. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  322. package/commands/project/__tests__/migrate.test.js +0 -106
  323. package/commands/project/__tests__/open.test.d.ts +0 -1
  324. package/commands/project/__tests__/open.test.js +0 -39
  325. package/commands/project/__tests__/profile.test.d.ts +0 -1
  326. package/commands/project/__tests__/profile.test.js +0 -42
  327. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  328. package/commands/project/__tests__/updateDeps.test.js +0 -140
  329. package/commands/project/__tests__/upload.test.d.ts +0 -1
  330. package/commands/project/__tests__/upload.test.js +0 -234
  331. package/commands/project/__tests__/validate.test.d.ts +0 -1
  332. package/commands/project/__tests__/validate.test.js +0 -381
  333. package/commands/project/__tests__/watch.test.d.ts +0 -1
  334. package/commands/project/__tests__/watch.test.js +0 -35
  335. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  336. package/commands/sandbox/__tests__/create.test.js +0 -198
  337. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  338. package/commands/sandbox/__tests__/delete.test.js +0 -31
  339. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  340. package/commands/secret/__tests__/addSecret.test.js +0 -162
  341. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  342. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  343. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  344. package/commands/secret/__tests__/listSecret.test.js +0 -29
  345. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  346. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  347. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  348. package/commands/testAccount/__tests__/create.test.js +0 -106
  349. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  350. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  351. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  352. package/commands/testAccount/__tests__/delete.test.js +0 -29
  353. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  354. package/commands/testAccount/__tests__/importData.test.js +0 -92
  355. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  356. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  357. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  358. package/lib/__tests__/accountAuth.test.js +0 -258
  359. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  360. package/lib/__tests__/accountTypes.test.js +0 -98
  361. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  362. package/lib/__tests__/buildAccount.test.js +0 -211
  363. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  364. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  365. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  366. package/lib/__tests__/commandSuggestion.test.js +0 -121
  367. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  368. package/lib/__tests__/commonOpts.test.js +0 -80
  369. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  370. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  371. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  372. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  373. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  374. package/lib/__tests__/hasFeature.test.js +0 -167
  375. package/lib/__tests__/http.test.d.ts +0 -1
  376. package/lib/__tests__/http.test.js +0 -40
  377. package/lib/__tests__/importData.test.d.ts +0 -1
  378. package/lib/__tests__/importData.test.js +0 -98
  379. package/lib/__tests__/npmCli.test.d.ts +0 -1
  380. package/lib/__tests__/npmCli.test.js +0 -84
  381. package/lib/__tests__/oauth.test.d.ts +0 -1
  382. package/lib/__tests__/oauth.test.js +0 -109
  383. package/lib/__tests__/parsing.test.d.ts +0 -1
  384. package/lib/__tests__/parsing.test.js +0 -34
  385. package/lib/__tests__/polling.test.d.ts +0 -1
  386. package/lib/__tests__/polling.test.js +0 -76
  387. package/lib/__tests__/process.test.d.ts +0 -1
  388. package/lib/__tests__/process.test.js +0 -89
  389. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  390. package/lib/__tests__/sandboxes.test.js +0 -128
  391. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  392. package/lib/__tests__/serverlessLogs.test.js +0 -163
  393. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  394. package/lib/__tests__/usageTracking.test.js +0 -197
  395. package/lib/__tests__/validation.test.d.ts +0 -1
  396. package/lib/__tests__/validation.test.js +0 -143
  397. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  398. package/lib/__tests__/yargsUtils.test.js +0 -124
  399. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  400. package/lib/app/__tests__/migrate.test.js +0 -638
  401. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  402. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  403. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  404. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  405. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  406. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  407. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  408. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  409. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  410. package/lib/mcp/__tests__/setup.test.js +0 -523
  411. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  412. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  413. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  414. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  415. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  416. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  417. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  418. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  419. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  420. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  421. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  422. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  423. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  424. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  425. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  426. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  427. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  428. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  429. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  430. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  431. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  432. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  433. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  434. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  435. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  436. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  437. package/lib/projects/__tests__/components.test.d.ts +0 -1
  438. package/lib/projects/__tests__/components.test.js +0 -440
  439. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  440. package/lib/projects/__tests__/deploy.test.js +0 -231
  441. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  442. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  443. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  444. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  445. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  446. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  447. package/lib/projects/__tests__/projectInfo.test.d.ts +0 -1
  448. package/lib/projects/__tests__/projectInfo.test.js +0 -114
  449. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  450. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  451. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  452. package/lib/projects/__tests__/projects.test.js +0 -58
  453. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  454. package/lib/projects/__tests__/structure.test.js +0 -210
  455. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  456. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  457. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  458. package/lib/projects/__tests__/upload.test.js +0 -183
  459. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  460. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  461. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  462. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  463. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  464. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  465. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  466. package/lib/projects/create/__tests__/v2.test.js +0 -257
  467. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  468. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  469. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  470. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  471. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  472. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  473. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  474. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  475. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  476. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  477. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  478. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  479. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  480. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  481. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  482. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  483. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  484. package/lib/theme/__tests__/migrate.test.js +0 -247
  485. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  486. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  487. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  488. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  489. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  490. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  491. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  492. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  493. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  494. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  495. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  496. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  497. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  498. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  499. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  500. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  501. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  502. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  503. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  504. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  505. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  506. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  507. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  508. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  509. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  510. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  511. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  512. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  513. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  514. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  515. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  516. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  517. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  518. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  519. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  520. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  521. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  522. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  523. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  524. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  525. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  526. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  527. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  528. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  529. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  530. package/mcp-server/utils/__tests__/command.test.js +0 -275
  531. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  532. package/mcp-server/utils/__tests__/content.test.js +0 -164
  533. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  534. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -1,541 +0,0 @@
1
- import { vi } from 'vitest';
2
- // Mock the ui-extensions-dev-server module
3
- vi.mock('@hubspot/ui-extensions-dev-server', () => {
4
- return {
5
- DevModeUnifiedInterface: {
6
- setup: vi.fn().mockResolvedValue(undefined),
7
- start: vi.fn().mockResolvedValue(undefined),
8
- fileChange: vi.fn().mockResolvedValue(undefined),
9
- cleanup: vi.fn().mockResolvedValue(undefined),
10
- },
11
- };
12
- });
13
- import { fetchAppInstallationData } from '@hubspot/local-dev-lib/api/localDevAuth';
14
- import { fetchAppMetadataBySourceId, fetchPublicAppProductionInstallCounts, installStaticAuthAppOnTestAccount, } from '@hubspot/local-dev-lib/api/appsDev';
15
- import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
16
- import AppDevModeInterface from '../localDev/AppDevModeInterface.js';
17
- import LocalDevState from '../localDev/LocalDevState.js';
18
- import LocalDevLogger from '../localDev/LocalDevLogger.js';
19
- import { installAppAutoPrompt, installAppBrowserPrompt, } from '../../prompts/installAppPrompt.js';
20
- import { confirmPrompt } from '../../prompts/promptUtils.js';
21
- import { getOauthAppInstallUrl, getStaticAuthAppInstallUrl, } from '../../app/urls.js';
22
- import { isDeveloperTestAccount, isSandbox } from '../../accountTypes.js';
23
- import { logError } from '../../errorHandlers/index.js';
24
- import { isServerRunningAtUrl } from '../../http.js';
25
- import { APP_AUTH_TYPES, APP_DISTRIBUTION_TYPES, APP_INSTALLATION_STATES, LOCAL_DEV_SERVER_MESSAGE_TYPES, } from '../../constants.js';
26
- import { ENVIRONMENTS } from '@hubspot/local-dev-lib/constants/environments';
27
- vi.mock('@hubspot/local-dev-lib/api/localDevAuth');
28
- vi.mock('@hubspot/local-dev-lib/api/appsDev');
29
- vi.mock('@hubspot/local-dev-lib/portManager');
30
- vi.mock('@hubspot/local-dev-lib/config');
31
- vi.mock('../../prompts/installAppPrompt');
32
- vi.mock('../../prompts/promptUtils');
33
- vi.mock('../../app/urls');
34
- vi.mock('../../accountTypes');
35
- vi.mock('../../errorHandlers/index');
36
- vi.mock('../localDev/LocalDevState');
37
- vi.mock('../localDev/LocalDevLogger');
38
- vi.mock('../../ui/SpinniesManager');
39
- vi.mock('../../http');
40
- describe('AppDevModeInterface', () => {
41
- let appDevModeInterface;
42
- let mockLocalDevState;
43
- let mockLocalDevLogger;
44
- const mockProjectConfig = {
45
- name: 'test-project',
46
- srcDir: 'src',
47
- platformVersion: '1.0.0',
48
- };
49
- const mockProjectData = {
50
- createdAt: 123,
51
- deletedAt: 123,
52
- id: 123,
53
- isLocked: false,
54
- name: 'my-project',
55
- portalId: 123,
56
- updatedAt: 123,
57
- };
58
- const mockAppNode = {
59
- uid: 'test-app-uid',
60
- componentType: 'APPLICATION',
61
- config: {
62
- name: 'Test App',
63
- description: 'Test app description',
64
- logo: 'logo.png',
65
- auth: {
66
- type: APP_AUTH_TYPES.STATIC,
67
- requiredScopes: ['test-scope'],
68
- optionalScopes: [],
69
- conditionallyRequiredScopes: [],
70
- redirectUrls: ['http://localhost:3000'],
71
- },
72
- distribution: APP_DISTRIBUTION_TYPES.PRIVATE,
73
- },
74
- localDev: {
75
- componentRoot: '/test/path',
76
- componentConfigPath: '/test/path/config.json',
77
- configUpdatedSinceLastUpload: false,
78
- removed: false,
79
- parsingErrors: [],
80
- },
81
- componentDeps: {},
82
- metaFilePath: '/test/path',
83
- files: [],
84
- };
85
- const mockAppData = {
86
- id: 123,
87
- clientId: 'test-client-id',
88
- name: 'Test App',
89
- installationState: APP_INSTALLATION_STATES.NOT_INSTALLED,
90
- scopeGroupIds: [1, 2, 3],
91
- };
92
- const mockPublicApp = {
93
- id: 123,
94
- clientId: 'test-client-id',
95
- name: 'Test App',
96
- sourceId: 'test-app-uid',
97
- scopeGroupIds: [1, 2, 3],
98
- };
99
- beforeEach(() => {
100
- mockLocalDevState = {
101
- targetProjectAccountId: 12345,
102
- targetTestingAccountId: 67890,
103
- projectConfig: mockProjectConfig,
104
- projectDir: '/test/project',
105
- projectData: mockProjectData,
106
- projectId: 999,
107
- env: ENVIRONMENTS.PROD,
108
- projectNodes: { [mockAppNode.uid]: mockAppNode },
109
- getAppDataByUid: vi.fn(),
110
- setAppDataForUid: vi.fn(),
111
- addListener: vi.fn(),
112
- addUploadWarning: vi.fn(),
113
- removeListener: vi.fn(),
114
- };
115
- mockLocalDevLogger = {};
116
- // Mock constructors
117
- LocalDevState.mockImplementation(() => mockLocalDevState);
118
- LocalDevLogger.mockImplementation(() => mockLocalDevLogger);
119
- // Mock external dependencies
120
- fetchAppMetadataBySourceId.mockResolvedValue({
121
- data: mockPublicApp,
122
- });
123
- fetchPublicAppProductionInstallCounts.mockResolvedValue({
124
- data: { uniquePortalInstallCount: 5 },
125
- });
126
- fetchAppInstallationData.mockResolvedValue({
127
- data: {
128
- isInstalledWithScopeGroups: true,
129
- previouslyAuthorizedScopeGroups: [],
130
- },
131
- });
132
- getConfigAccountById.mockReturnValue({
133
- parentAccountId: 12345,
134
- });
135
- isDeveloperTestAccount.mockReturnValue(true);
136
- isSandbox.mockReturnValue(false);
137
- getOauthAppInstallUrl.mockReturnValue('http://oauth-install-url');
138
- getStaticAuthAppInstallUrl.mockReturnValue('http://static-install-url');
139
- installAppAutoPrompt.mockResolvedValue(true);
140
- installAppBrowserPrompt.mockImplementation(async () => {
141
- setTimeout(() => {
142
- const addListenerCall = mockLocalDevState.addListener.mock.calls.find(call => call[0] === 'devServerMessage');
143
- if (addListenerCall) {
144
- const callback = addListenerCall[1];
145
- callback(LOCAL_DEV_SERVER_MESSAGE_TYPES.STATIC_AUTH_APP_INSTALL_SUCCESS);
146
- }
147
- }, 0);
148
- return undefined;
149
- });
150
- confirmPrompt.mockResolvedValue(true);
151
- installStaticAuthAppOnTestAccount.mockResolvedValue(undefined);
152
- isServerRunningAtUrl.mockResolvedValue(true);
153
- // Mock process.exit
154
- vi.spyOn(global.process, 'exit').mockImplementation((code) => {
155
- throw new Error(`Process.exit called with code ${code}`);
156
- });
157
- appDevModeInterface = new AppDevModeInterface({
158
- localDevState: mockLocalDevState,
159
- localDevLogger: mockLocalDevLogger,
160
- });
161
- });
162
- describe('constructor', () => {
163
- it('should initialize with valid state', () => {
164
- expect(appDevModeInterface).toBeInstanceOf(AppDevModeInterface);
165
- expect(appDevModeInterface.localDevState).toBe(mockLocalDevState);
166
- expect(appDevModeInterface.localDevLogger).toBe(mockLocalDevLogger);
167
- });
168
- it('should exit if targetProjectAccountId is missing', () => {
169
- const mockLocalDevStateWithoutAccountId = {
170
- ...mockLocalDevState,
171
- targetProjectAccountId: null,
172
- };
173
- expect(() => {
174
- new AppDevModeInterface({
175
- localDevState: mockLocalDevStateWithoutAccountId,
176
- localDevLogger: mockLocalDevLogger,
177
- });
178
- }).toThrow('Process.exit called with code 1');
179
- });
180
- it('should exit if projectConfig is missing', () => {
181
- const mockLocalDevStateWithoutConfig = {
182
- ...mockLocalDevState,
183
- projectConfig: null,
184
- };
185
- expect(() => {
186
- new AppDevModeInterface({
187
- localDevState: mockLocalDevStateWithoutConfig,
188
- localDevLogger: mockLocalDevLogger,
189
- });
190
- }).toThrow('Process.exit called with code 1');
191
- });
192
- it('should exit if projectDir is missing', () => {
193
- const mockLocalDevStateWithoutDir = {
194
- ...mockLocalDevState,
195
- projectDir: null,
196
- };
197
- expect(() => {
198
- new AppDevModeInterface({
199
- localDevState: mockLocalDevStateWithoutDir,
200
- localDevLogger: mockLocalDevLogger,
201
- });
202
- }).toThrow('Process.exit called with code 1');
203
- });
204
- });
205
- describe('setup()', () => {
206
- beforeEach(() => {
207
- mockLocalDevState.getAppDataByUid.mockReturnValue(mockAppData);
208
- });
209
- it('should return early if no app node exists', async () => {
210
- mockLocalDevState.projectNodes = {};
211
- await appDevModeInterface.setup();
212
- expect(fetchAppMetadataBySourceId).not.toHaveBeenCalled();
213
- });
214
- it('should setup successfully with private app', async () => {
215
- await appDevModeInterface.setup();
216
- expect(fetchAppMetadataBySourceId).toHaveBeenCalledWith(123, 'test-app-uid', 12345);
217
- expect(fetchPublicAppProductionInstallCounts).toHaveBeenCalledWith(123, 12345);
218
- expect(fetchAppInstallationData).toHaveBeenCalledWith(67890, 999, 'test-app-uid', ['test-scope'], []);
219
- });
220
- it('should show marketplace warning for marketplace apps', async () => {
221
- const marketplaceAppNode = {
222
- ...mockAppNode,
223
- config: {
224
- ...mockAppNode.config,
225
- distribution: APP_DISTRIBUTION_TYPES.MARKETPLACE,
226
- },
227
- };
228
- mockLocalDevState.projectNodes = {
229
- [marketplaceAppNode.uid]: marketplaceAppNode,
230
- };
231
- await appDevModeInterface.setup();
232
- expect(confirmPrompt).toHaveBeenCalled();
233
- expect(mockLocalDevState.addUploadWarning).toHaveBeenCalled();
234
- });
235
- it('should exit if user declines marketplace warning', async () => {
236
- const marketplaceAppNode = {
237
- ...mockAppNode,
238
- config: {
239
- ...mockAppNode.config,
240
- distribution: APP_DISTRIBUTION_TYPES.MARKETPLACE,
241
- },
242
- };
243
- mockLocalDevState.projectNodes = {
244
- [marketplaceAppNode.uid]: marketplaceAppNode,
245
- };
246
- // Set up conditions to trigger marketplace warning
247
- fetchPublicAppProductionInstallCounts.mockResolvedValue({
248
- data: { uniquePortalInstallCount: 5 },
249
- });
250
- mockLocalDevState.getAppDataByUid.mockReturnValue(mockAppData);
251
- confirmPrompt.mockResolvedValue(false);
252
- // Create a new instance to trigger the exit during setup
253
- const newAppDevModeInterface = new AppDevModeInterface({
254
- localDevState: mockLocalDevState,
255
- localDevLogger: mockLocalDevLogger,
256
- });
257
- // process.exit throws in tests, so we need to catch the error
258
- try {
259
- await newAppDevModeInterface.setup();
260
- }
261
- catch {
262
- // Expected - process.exit throws in tests
263
- }
264
- expect(process.exit).toHaveBeenCalledWith(0);
265
- });
266
- it('should auto-install static auth app on test account', async () => {
267
- fetchAppInstallationData.mockResolvedValue({
268
- data: {
269
- isInstalledWithScopeGroups: false,
270
- previouslyAuthorizedScopeGroups: [],
271
- },
272
- });
273
- await appDevModeInterface.setup();
274
- expect(installStaticAuthAppOnTestAccount).toHaveBeenCalledWith(123, 67890, [1, 2, 3]);
275
- });
276
- it('should open browser for OAuth app installation', async () => {
277
- const oauthAppNode = {
278
- ...mockAppNode,
279
- config: {
280
- ...mockAppNode.config,
281
- auth: {
282
- ...mockAppNode.config.auth,
283
- type: APP_AUTH_TYPES.OAUTH,
284
- },
285
- },
286
- };
287
- mockLocalDevState.projectNodes = { [oauthAppNode.uid]: oauthAppNode };
288
- fetchAppInstallationData.mockResolvedValue({
289
- data: {
290
- isInstalledWithScopeGroups: false,
291
- previouslyAuthorizedScopeGroups: [],
292
- },
293
- });
294
- await appDevModeInterface.setup();
295
- expect(getOauthAppInstallUrl).toHaveBeenCalledWith({
296
- targetAccountId: 67890,
297
- env: ENVIRONMENTS.PROD,
298
- clientId: 'test-client-id',
299
- scopes: ['test-scope'],
300
- redirectUrls: ['http://localhost:3000'],
301
- });
302
- expect(installAppBrowserPrompt).toHaveBeenCalled();
303
- });
304
- it('should handle app reinstallation', async () => {
305
- // Set up conditions for non-automatic installation
306
- fetchAppInstallationData.mockResolvedValue({
307
- data: {
308
- isInstalledWithScopeGroups: false,
309
- previouslyAuthorizedScopeGroups: ['old-scope'],
310
- },
311
- });
312
- // Make it not automatically installable by making it not a test account
313
- isDeveloperTestAccount.mockReturnValue(false);
314
- await appDevModeInterface.setup();
315
- expect(installAppBrowserPrompt).toHaveBeenCalledWith('http://static-install-url', true);
316
- });
317
- it('should handle errors during setup', async () => {
318
- const error = new Error('Setup failed');
319
- fetchAppMetadataBySourceId.mockRejectedValue(error);
320
- // process.exit throws in tests, so we need to catch the error
321
- try {
322
- await appDevModeInterface.setup();
323
- }
324
- catch {
325
- // Expected - process.exit throws in tests
326
- }
327
- expect(logError).toHaveBeenCalledWith(error);
328
- expect(process.exit).toHaveBeenCalledWith(1);
329
- });
330
- it('should exit if user declines auto-install', async () => {
331
- // Set up conditions for automatic installation
332
- getConfigAccountById.mockReturnValue({
333
- parentAccountId: 12345, // matches targetProjectAccountId
334
- });
335
- isDeveloperTestAccount.mockReturnValue(true);
336
- fetchAppInstallationData.mockResolvedValue({
337
- data: {
338
- isInstalledWithScopeGroups: false,
339
- previouslyAuthorizedScopeGroups: [],
340
- },
341
- });
342
- installAppAutoPrompt.mockResolvedValue(false);
343
- // Create a new instance to trigger the exit during setup
344
- const newAppDevModeInterface = new AppDevModeInterface({
345
- localDevState: mockLocalDevState,
346
- localDevLogger: mockLocalDevLogger,
347
- });
348
- // process.exit throws in tests, so we need to catch the error
349
- try {
350
- await newAppDevModeInterface.setup();
351
- }
352
- catch {
353
- // Expected - process.exit throws in tests
354
- }
355
- expect(process.exit).toHaveBeenCalledWith(0);
356
- });
357
- it('should fallback to browser install if auto-install fails', async () => {
358
- fetchAppInstallationData.mockResolvedValue({
359
- data: {
360
- isInstalledWithScopeGroups: false,
361
- previouslyAuthorizedScopeGroups: [],
362
- },
363
- });
364
- installStaticAuthAppOnTestAccount.mockRejectedValue(new Error('Install failed'));
365
- await appDevModeInterface.setup();
366
- expect(installAppBrowserPrompt).toHaveBeenCalledWith('http://static-install-url', false);
367
- });
368
- });
369
- describe('start()', () => {
370
- it('should add state listeners', async () => {
371
- await appDevModeInterface.start();
372
- expect(mockLocalDevState.addListener).toHaveBeenCalledWith('projectNodes',
373
- // @ts-expect-error access private method for testing
374
- appDevModeInterface.onChangeProjectNodes);
375
- });
376
- });
377
- describe('cleanup()', () => {
378
- it('should remove state listeners', async () => {
379
- await appDevModeInterface.cleanup();
380
- expect(mockLocalDevState.removeListener).toHaveBeenCalledWith('devServerMessage',
381
- // @ts-expect-error access private method for testing
382
- appDevModeInterface.onDevServerMessage);
383
- expect(mockLocalDevState.removeListener).toHaveBeenCalledWith('projectNodes',
384
- // @ts-expect-error
385
- appDevModeInterface.onChangeProjectNodes);
386
- });
387
- });
388
- describe('isAutomaticallyInstallable()', () => {
389
- it('should return true for static auth app on test account with correct parent', () => {
390
- // This is testing private method behavior through setup()
391
- expect(appDevModeInterface).toBeDefined();
392
- });
393
- it('should return false if target account config is missing', async () => {
394
- // Reset mocks to ensure clean state
395
- // Set up basic mocks
396
- fetchAppMetadataBySourceId.mockResolvedValue({
397
- data: mockPublicApp,
398
- });
399
- fetchPublicAppProductionInstallCounts.mockResolvedValue({
400
- data: { uniquePortalInstallCount: 5 },
401
- });
402
- getStaticAuthAppInstallUrl.mockReturnValue('http://static-install-url');
403
- getConfigAccountById.mockReturnValue({
404
- parentAccountId: 12345,
405
- });
406
- isDeveloperTestAccount.mockReturnValue(true);
407
- isSandbox.mockReturnValue(false);
408
- installAppAutoPrompt.mockResolvedValue(true);
409
- confirmPrompt.mockResolvedValue(true);
410
- installStaticAuthAppOnTestAccount.mockResolvedValue(undefined);
411
- isServerRunningAtUrl.mockResolvedValue(true);
412
- installAppBrowserPrompt.mockImplementation(async () => {
413
- const addListenerCall = mockLocalDevState.addListener.mock.calls.find(call => call[0] === 'devServerMessage');
414
- if (addListenerCall) {
415
- const callback = addListenerCall[1];
416
- callback(LOCAL_DEV_SERVER_MESSAGE_TYPES.STATIC_AUTH_APP_INSTALL_SUCCESS);
417
- }
418
- return undefined;
419
- });
420
- // Reset the mock LocalDevState
421
- mockLocalDevState.getAppDataByUid = vi.fn().mockReturnValue(mockAppData);
422
- mockLocalDevState.setAppDataForUid = vi.fn();
423
- mockLocalDevState.addListener = vi.fn();
424
- // Target account config is missing - make it not a test account so isAutomaticallyInstallable returns false
425
- isDeveloperTestAccount.mockReturnValue(false);
426
- // App is not installed
427
- fetchAppInstallationData.mockResolvedValue({
428
- data: {
429
- isInstalledWithScopeGroups: false,
430
- previouslyAuthorizedScopeGroups: [],
431
- },
432
- });
433
- // Create a new instance to avoid interference from previous test setup
434
- const newAppDevModeInterface = new AppDevModeInterface({
435
- localDevState: mockLocalDevState,
436
- localDevLogger: mockLocalDevLogger,
437
- });
438
- // Remove the spy to see if that's causing the timeout
439
- await newAppDevModeInterface.setup();
440
- expect(installAppBrowserPrompt).toHaveBeenCalled();
441
- });
442
- it('should return false for OAuth app', async () => {
443
- // Reset mocks to ensure clean state
444
- // Set up basic mocks
445
- fetchAppMetadataBySourceId.mockResolvedValue({
446
- data: mockPublicApp,
447
- });
448
- fetchPublicAppProductionInstallCounts.mockResolvedValue({
449
- data: { uniquePortalInstallCount: 5 },
450
- });
451
- getOauthAppInstallUrl.mockReturnValue('http://oauth-install-url');
452
- installAppBrowserPrompt.mockImplementation(async () => {
453
- setTimeout(() => {
454
- const addListenerCall = mockLocalDevState.addListener.mock.calls.find(call => call[0] === 'devServerMessage');
455
- if (addListenerCall) {
456
- const callback = addListenerCall[1];
457
- callback(LOCAL_DEV_SERVER_MESSAGE_TYPES.STATIC_AUTH_APP_INSTALL_SUCCESS);
458
- }
459
- }, 0);
460
- return undefined;
461
- });
462
- // Reset the mock LocalDevState
463
- mockLocalDevState.getAppDataByUid = vi.fn().mockReturnValue(mockAppData);
464
- mockLocalDevState.setAppDataForUid = vi.fn();
465
- mockLocalDevState.addListener = vi.fn();
466
- const oauthAppNode = {
467
- ...mockAppNode,
468
- config: {
469
- ...mockAppNode.config,
470
- auth: {
471
- ...mockAppNode.config.auth,
472
- type: APP_AUTH_TYPES.OAUTH,
473
- },
474
- },
475
- };
476
- mockLocalDevState.projectNodes = { [oauthAppNode.uid]: oauthAppNode };
477
- // App is not installed
478
- fetchAppInstallationData.mockResolvedValue({
479
- data: {
480
- isInstalledWithScopeGroups: false,
481
- previouslyAuthorizedScopeGroups: [],
482
- },
483
- });
484
- // Create a new instance to avoid interference from previous test setup
485
- const newAppDevModeInterface = new AppDevModeInterface({
486
- localDevState: mockLocalDevState,
487
- localDevLogger: mockLocalDevLogger,
488
- });
489
- await newAppDevModeInterface.setup();
490
- expect(installAppBrowserPrompt).toHaveBeenCalled();
491
- });
492
- });
493
- describe('websocket server message handling', () => {
494
- it('should check app installation when websocket server connects', async () => {
495
- // Reset mocks to ensure clean state
496
- // Set up basic mocks
497
- fetchAppMetadataBySourceId.mockResolvedValue({
498
- data: mockPublicApp,
499
- });
500
- fetchPublicAppProductionInstallCounts.mockResolvedValue({
501
- data: { uniquePortalInstallCount: 5 },
502
- });
503
- getStaticAuthAppInstallUrl.mockReturnValue('http://static-install-url');
504
- installAppBrowserPrompt.mockImplementation(async () => {
505
- setTimeout(() => {
506
- const addListenerCall = mockLocalDevState.addListener.mock.calls.find(call => call[0] === 'devServerMessage');
507
- if (addListenerCall) {
508
- const callback = addListenerCall[1];
509
- callback(LOCAL_DEV_SERVER_MESSAGE_TYPES.STATIC_AUTH_APP_INSTALL_SUCCESS);
510
- }
511
- }, 0);
512
- return undefined;
513
- });
514
- // Reset the mock LocalDevState
515
- mockLocalDevState.getAppDataByUid = vi.fn().mockReturnValue(mockAppData);
516
- mockLocalDevState.setAppDataForUid = vi.fn();
517
- mockLocalDevState.addListener = vi.fn();
518
- // App is not installed so fetchAppInstallationData will be called
519
- fetchAppInstallationData.mockResolvedValue({
520
- data: {
521
- isInstalledWithScopeGroups: false,
522
- previouslyAuthorizedScopeGroups: [],
523
- },
524
- });
525
- // Create a new instance to avoid interference from previous test setup
526
- const newAppDevModeInterface = new AppDevModeInterface({
527
- localDevState: mockLocalDevState,
528
- localDevLogger: mockLocalDevLogger,
529
- });
530
- await newAppDevModeInterface.setup();
531
- // Simulate websocket server connection
532
- const addListenerCall = mockLocalDevState.addListener.mock
533
- .calls[0];
534
- const [eventType, callback] = addListenerCall;
535
- expect(eventType).toBe('devServerMessage');
536
- // Call the callback with websocket connection message
537
- await callback(LOCAL_DEV_SERVER_MESSAGE_TYPES.WEBSOCKET_SERVER_CONNECTED);
538
- expect(fetchAppInstallationData).toHaveBeenCalledTimes(2); // Once in setup, once in listener
539
- });
540
- });
541
- });
@@ -1 +0,0 @@
1
- export {};