@hubspot/cli 7.6.0-beta.4 → 7.6.0-beta.6

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 (587) hide show
  1. package/api/__tests__/migrate.test.js +27 -29
  2. package/api/migrate.d.ts +7 -0
  3. package/api/migrate.js +22 -22
  4. package/bin/cli.js +92 -97
  5. package/bin/hs +2 -2
  6. package/bin/hscms +2 -2
  7. package/bin/silenceErrors.js +1 -2
  8. package/commands/__tests__/account.test.js +29 -34
  9. package/commands/__tests__/auth.test.js +11 -16
  10. package/commands/__tests__/cms.test.js +15 -20
  11. package/commands/__tests__/config.test.js +14 -19
  12. package/commands/__tests__/create.test.js +10 -15
  13. package/commands/__tests__/customObject.test.js +14 -19
  14. package/commands/__tests__/doctor.test.js +43 -48
  15. package/commands/__tests__/feedback.test.js +7 -45
  16. package/commands/__tests__/fetch.test.js +29 -28
  17. package/commands/__tests__/filemanager.test.js +14 -19
  18. package/commands/__tests__/function.test.js +16 -21
  19. package/commands/__tests__/getStarted.test.js +45 -60
  20. package/commands/__tests__/hubdb.test.js +17 -22
  21. package/commands/__tests__/init.test.js +12 -17
  22. package/commands/__tests__/lint.test.js +13 -18
  23. package/commands/__tests__/list.test.js +18 -23
  24. package/commands/__tests__/logs.test.js +28 -27
  25. package/commands/__tests__/mcp.test.js +14 -19
  26. package/commands/__tests__/mv.test.js +14 -52
  27. package/commands/__tests__/open.test.js +13 -51
  28. package/commands/__tests__/project.test.js +44 -49
  29. package/commands/__tests__/remove.test.js +13 -51
  30. package/commands/__tests__/sandbox.test.js +14 -19
  31. package/commands/__tests__/secret.test.js +16 -21
  32. package/commands/__tests__/testAccount.test.js +16 -21
  33. package/commands/__tests__/theme.test.js +15 -20
  34. package/commands/account/__tests__/auth.test.js +11 -16
  35. package/commands/account/__tests__/clean.test.js +12 -17
  36. package/commands/account/__tests__/createOverride.test.js +10 -15
  37. package/commands/account/__tests__/info.test.js +11 -16
  38. package/commands/account/__tests__/list.test.js +11 -16
  39. package/commands/account/__tests__/remove.test.js +13 -18
  40. package/commands/account/__tests__/removeOverride.js +8 -13
  41. package/commands/account/__tests__/rename.test.js +15 -20
  42. package/commands/account/__tests__/use.test.js +10 -15
  43. package/commands/account/auth.d.ts +1 -1
  44. package/commands/account/auth.js +78 -69
  45. package/commands/account/clean.d.ts +1 -1
  46. package/commands/account/clean.js +55 -60
  47. package/commands/account/createOverride.d.ts +1 -1
  48. package/commands/account/createOverride.js +52 -57
  49. package/commands/account/info.d.ts +1 -1
  50. package/commands/account/info.js +33 -35
  51. package/commands/account/list.d.ts +1 -1
  52. package/commands/account/list.js +43 -45
  53. package/commands/account/remove.d.ts +1 -1
  54. package/commands/account/remove.js +37 -42
  55. package/commands/account/removeOverride.d.ts +1 -1
  56. package/commands/account/removeOverride.js +38 -43
  57. package/commands/account/rename.d.ts +1 -1
  58. package/commands/account/rename.js +18 -20
  59. package/commands/account/use.d.ts +1 -1
  60. package/commands/account/use.js +29 -31
  61. package/commands/account.d.ts +1 -1
  62. package/commands/account.js +23 -28
  63. package/commands/app/__tests__/migrate.test.js +29 -34
  64. package/commands/app/migrate.d.ts +2 -2
  65. package/commands/app/migrate.js +40 -43
  66. package/commands/app/secret/__tests__/add.test.js +6 -11
  67. package/commands/app/secret/__tests__/delete.test.js +6 -11
  68. package/commands/app/secret/__tests__/list.test.js +6 -11
  69. package/commands/app/secret/__tests__/update.test.js +6 -11
  70. package/commands/app/secret/add.d.ts +1 -1
  71. package/commands/app/secret/add.js +28 -30
  72. package/commands/app/secret/delete.d.ts +1 -1
  73. package/commands/app/secret/delete.js +34 -36
  74. package/commands/app/secret/list.d.ts +1 -1
  75. package/commands/app/secret/list.js +25 -27
  76. package/commands/app/secret/update.d.ts +1 -1
  77. package/commands/app/secret/update.js +32 -34
  78. package/commands/app/secret.d.ts +1 -1
  79. package/commands/app/secret.js +12 -17
  80. package/commands/app.d.ts +1 -1
  81. package/commands/app.js +6 -11
  82. package/commands/auth.d.ts +1 -1
  83. package/commands/auth.js +70 -72
  84. package/commands/cms/convertFields.d.ts +1 -1
  85. package/commands/cms/convertFields.js +34 -39
  86. package/commands/cms/getReactModule.d.ts +1 -1
  87. package/commands/cms/getReactModule.js +32 -37
  88. package/commands/cms/lighthouseScore.d.ts +1 -1
  89. package/commands/cms/lighthouseScore.js +67 -72
  90. package/commands/cms.d.ts +1 -1
  91. package/commands/cms.js +11 -16
  92. package/commands/completion.d.ts +1 -1
  93. package/commands/completion.js +10 -15
  94. package/commands/config/migrate.d.ts +1 -1
  95. package/commands/config/migrate.js +27 -32
  96. package/commands/config/set.d.ts +2 -1
  97. package/commands/config/set.js +40 -32
  98. package/commands/config.d.ts +1 -1
  99. package/commands/config.js +8 -13
  100. package/commands/create/api-sample.d.ts +1 -1
  101. package/commands/create/api-sample.js +28 -33
  102. package/commands/create/app.d.ts +1 -1
  103. package/commands/create/app.js +3 -5
  104. package/commands/create/function.d.ts +1 -1
  105. package/commands/create/function.js +9 -11
  106. package/commands/create/index.d.ts +1 -1
  107. package/commands/create/index.js +19 -24
  108. package/commands/create/module.d.ts +1 -1
  109. package/commands/create/module.js +12 -14
  110. package/commands/create/react-app.d.ts +1 -1
  111. package/commands/create/react-app.js +3 -5
  112. package/commands/create/template.d.ts +1 -1
  113. package/commands/create/template.js +12 -14
  114. package/commands/create/vue-app.d.ts +1 -1
  115. package/commands/create/vue-app.js +3 -5
  116. package/commands/create/webpack-serverless.d.ts +1 -1
  117. package/commands/create/webpack-serverless.js +3 -5
  118. package/commands/create/website-theme.d.ts +1 -1
  119. package/commands/create/website-theme.js +5 -7
  120. package/commands/create.d.ts +2 -2
  121. package/commands/create.js +30 -35
  122. package/commands/customObject/__tests__/create.test.js +13 -18
  123. package/commands/customObject/__tests__/schema.test.js +18 -23
  124. package/commands/customObject/create.d.ts +1 -1
  125. package/commands/customObject/create.js +28 -30
  126. package/commands/customObject/schema/__tests__/create.test.js +13 -18
  127. package/commands/customObject/schema/__tests__/delete.test.js +13 -18
  128. package/commands/customObject/schema/__tests__/fetch-all.test.js +13 -18
  129. package/commands/customObject/schema/__tests__/fetch.test.js +13 -18
  130. package/commands/customObject/schema/__tests__/list.test.js +13 -18
  131. package/commands/customObject/schema/__tests__/update.test.js +13 -18
  132. package/commands/customObject/schema/create.d.ts +1 -1
  133. package/commands/customObject/schema/create.js +28 -30
  134. package/commands/customObject/schema/delete.d.ts +1 -1
  135. package/commands/customObject/schema/delete.js +24 -26
  136. package/commands/customObject/schema/fetch-all.d.ts +1 -1
  137. package/commands/customObject/schema/fetch-all.js +22 -24
  138. package/commands/customObject/schema/fetch.d.ts +1 -1
  139. package/commands/customObject/schema/fetch.js +24 -26
  140. package/commands/customObject/schema/list.d.ts +1 -1
  141. package/commands/customObject/schema/list.js +13 -15
  142. package/commands/customObject/schema/update.d.ts +1 -1
  143. package/commands/customObject/schema/update.js +32 -34
  144. package/commands/customObject/schema.d.ts +1 -1
  145. package/commands/customObject/schema.js +17 -22
  146. package/commands/customObject.d.ts +1 -1
  147. package/commands/customObject.js +13 -18
  148. package/commands/doctor.d.ts +1 -1
  149. package/commands/doctor.js +28 -33
  150. package/commands/feedback.d.ts +1 -1
  151. package/commands/feedback.js +19 -24
  152. package/commands/fetch.d.ts +1 -1
  153. package/commands/fetch.js +28 -30
  154. package/commands/filemanager/__tests__/fetch.test.js +17 -22
  155. package/commands/filemanager/__tests__/upload.test.js +15 -20
  156. package/commands/filemanager/fetch.d.ts +1 -1
  157. package/commands/filemanager/fetch.js +23 -25
  158. package/commands/filemanager/upload.d.ts +1 -1
  159. package/commands/filemanager/upload.js +39 -44
  160. package/commands/filemanager.d.ts +1 -1
  161. package/commands/filemanager.js +8 -13
  162. package/commands/function/deploy.d.ts +1 -1
  163. package/commands/function/deploy.js +35 -40
  164. package/commands/function/list.d.ts +1 -1
  165. package/commands/function/list.js +24 -29
  166. package/commands/function/server.d.ts +1 -1
  167. package/commands/function/server.js +15 -17
  168. package/commands/function.d.ts +1 -1
  169. package/commands/function.js +12 -18
  170. package/commands/getStarted.d.ts +1 -1
  171. package/commands/getStarted.js +125 -146
  172. package/commands/hubdb/__tests__/clear.test.js +13 -18
  173. package/commands/hubdb/__tests__/create.test.js +13 -18
  174. package/commands/hubdb/__tests__/delete.test.js +13 -18
  175. package/commands/hubdb/__tests__/fetch.test.js +13 -18
  176. package/commands/hubdb/__tests__/list.test.js +23 -28
  177. package/commands/hubdb/clear.d.ts +1 -1
  178. package/commands/hubdb/clear.js +20 -22
  179. package/commands/hubdb/create.d.ts +1 -1
  180. package/commands/hubdb/create.js +30 -35
  181. package/commands/hubdb/delete.d.ts +1 -1
  182. package/commands/hubdb/delete.js +24 -26
  183. package/commands/hubdb/fetch.d.ts +1 -1
  184. package/commands/hubdb/fetch.js +17 -19
  185. package/commands/hubdb/list.d.ts +1 -1
  186. package/commands/hubdb/list.js +33 -35
  187. package/commands/hubdb.d.ts +1 -1
  188. package/commands/hubdb.js +18 -24
  189. package/commands/init.d.ts +1 -1
  190. package/commands/init.js +83 -88
  191. package/commands/lint.d.ts +1 -1
  192. package/commands/lint.js +24 -26
  193. package/commands/list.d.ts +1 -1
  194. package/commands/list.js +32 -37
  195. package/commands/logs.d.ts +1 -1
  196. package/commands/logs.js +35 -37
  197. package/commands/mcp/__tests__/setup.test.js +7 -12
  198. package/commands/mcp/__tests__/start.test.js +7 -12
  199. package/commands/mcp/setup.d.ts +1 -1
  200. package/commands/mcp/setup.js +17 -19
  201. package/commands/mcp/start.d.ts +1 -1
  202. package/commands/mcp/start.js +32 -34
  203. package/commands/mcp.d.ts +1 -1
  204. package/commands/mcp.js +7 -12
  205. package/commands/module/marketplace-validate.d.ts +1 -1
  206. package/commands/module/marketplace-validate.js +21 -26
  207. package/commands/module.d.ts +1 -1
  208. package/commands/module.js +7 -13
  209. package/commands/mv.d.ts +1 -1
  210. package/commands/mv.js +20 -22
  211. package/commands/open.d.ts +1 -1
  212. package/commands/open.js +19 -21
  213. package/commands/project/__tests__/add.test.js +10 -15
  214. package/commands/project/__tests__/create.test.js +14 -19
  215. package/commands/project/__tests__/deploy.test.js +99 -141
  216. package/commands/project/__tests__/devUnifiedFlow.test.js +151 -155
  217. package/commands/project/__tests__/download.test.js +14 -19
  218. package/commands/project/__tests__/installDeps.test.js +32 -70
  219. package/commands/project/__tests__/listBuilds.test.js +14 -19
  220. package/commands/project/__tests__/logs.test.js +56 -94
  221. package/commands/project/__tests__/migrate.test.js +25 -30
  222. package/commands/project/__tests__/migrateApp.test.js +17 -22
  223. package/commands/project/__tests__/open.test.js +16 -21
  224. package/commands/project/__tests__/profile.test.js +14 -19
  225. package/commands/project/__tests__/upload.test.js +18 -23
  226. package/commands/project/__tests__/watch.test.js +14 -19
  227. package/commands/project/add.d.ts +1 -1
  228. package/commands/project/add.js +34 -36
  229. package/commands/project/cloneApp.d.ts +1 -1
  230. package/commands/project/cloneApp.js +67 -72
  231. package/commands/project/create.d.ts +2 -2
  232. package/commands/project/create.js +63 -68
  233. package/commands/project/deploy.d.ts +2 -2
  234. package/commands/project/deploy.js +83 -90
  235. package/commands/project/dev/deprecatedFlow.d.ts +2 -2
  236. package/commands/project/dev/deprecatedFlow.js +52 -58
  237. package/commands/project/dev/index.d.ts +1 -1
  238. package/commands/project/dev/index.js +44 -47
  239. package/commands/project/dev/unifiedFlow.d.ts +3 -3
  240. package/commands/project/dev/unifiedFlow.js +69 -76
  241. package/commands/project/download.d.ts +1 -1
  242. package/commands/project/download.js +35 -40
  243. package/commands/project/installDeps.d.ts +1 -1
  244. package/commands/project/installDeps.js +29 -34
  245. package/commands/project/listBuilds.d.ts +1 -1
  246. package/commands/project/listBuilds.js +40 -45
  247. package/commands/project/logs.d.ts +1 -1
  248. package/commands/project/logs.js +52 -54
  249. package/commands/project/migrate.d.ts +1 -1
  250. package/commands/project/migrate.js +24 -26
  251. package/commands/project/migrateApp.d.ts +2 -2
  252. package/commands/project/migrateApp.js +18 -20
  253. package/commands/project/open.d.ts +1 -1
  254. package/commands/project/open.js +25 -30
  255. package/commands/project/profile/add.d.ts +1 -1
  256. package/commands/project/profile/add.js +68 -73
  257. package/commands/project/profile/delete.d.ts +1 -1
  258. package/commands/project/profile/delete.js +68 -61
  259. package/commands/project/profile.d.ts +1 -1
  260. package/commands/project/profile.js +9 -14
  261. package/commands/project/upload.d.ts +1 -1
  262. package/commands/project/upload.js +50 -55
  263. package/commands/project/validate.d.ts +1 -1
  264. package/commands/project/validate.js +36 -40
  265. package/commands/project/watch.d.ts +1 -1
  266. package/commands/project/watch.js +59 -61
  267. package/commands/project.d.ts +1 -1
  268. package/commands/project.js +38 -43
  269. package/commands/remove.d.ts +1 -1
  270. package/commands/remove.js +15 -17
  271. package/commands/sandbox/__tests__/create.test.js +222 -20
  272. package/commands/sandbox/__tests__/delete.test.js +15 -20
  273. package/commands/sandbox/create.d.ts +2 -2
  274. package/commands/sandbox/create.js +92 -79
  275. package/commands/sandbox/delete.d.ts +1 -1
  276. package/commands/sandbox/delete.js +94 -96
  277. package/commands/sandbox.d.ts +1 -1
  278. package/commands/sandbox.js +9 -14
  279. package/commands/secret/__tests__/addSecret.test.js +13 -18
  280. package/commands/secret/__tests__/deleteSecret.test.js +13 -18
  281. package/commands/secret/__tests__/listSecret.test.js +13 -18
  282. package/commands/secret/__tests__/updateSecret.test.js +13 -18
  283. package/commands/secret/addSecret.d.ts +1 -1
  284. package/commands/secret/addSecret.js +26 -28
  285. package/commands/secret/deleteSecret.d.ts +1 -1
  286. package/commands/secret/deleteSecret.js +27 -29
  287. package/commands/secret/listSecret.d.ts +1 -1
  288. package/commands/secret/listSecret.js +19 -21
  289. package/commands/secret/updateSecret.d.ts +1 -1
  290. package/commands/secret/updateSecret.js +25 -27
  291. package/commands/secret.d.ts +1 -1
  292. package/commands/secret.js +13 -18
  293. package/commands/testAccount/__tests__/create.test.js +17 -22
  294. package/commands/testAccount/__tests__/createConfig.test.js +6 -11
  295. package/commands/testAccount/__tests__/delete.test.js +15 -20
  296. package/commands/testAccount/create.d.ts +1 -1
  297. package/commands/testAccount/create.js +63 -84
  298. package/commands/testAccount/createConfig.d.ts +1 -1
  299. package/commands/testAccount/createConfig.js +36 -41
  300. package/commands/testAccount/delete.d.ts +1 -1
  301. package/commands/testAccount/delete.js +17 -19
  302. package/commands/testAccount.d.ts +1 -1
  303. package/commands/testAccount.js +10 -15
  304. package/commands/theme/__tests__/generate-selectors.test.js +7 -12
  305. package/commands/theme/__tests__/marketplace-validate.test.js +14 -19
  306. package/commands/theme/__tests__/preview.test.js +12 -17
  307. package/commands/theme/generate-selectors.d.ts +1 -1
  308. package/commands/theme/generate-selectors.js +23 -28
  309. package/commands/theme/marketplace-validate.d.ts +1 -1
  310. package/commands/theme/marketplace-validate.js +19 -24
  311. package/commands/theme/preview.d.ts +1 -1
  312. package/commands/theme/preview.js +60 -65
  313. package/commands/theme.d.ts +1 -1
  314. package/commands/theme.js +11 -16
  315. package/commands/upload.d.ts +1 -1
  316. package/commands/upload.js +77 -82
  317. package/commands/watch.d.ts +1 -1
  318. package/commands/watch.js +45 -51
  319. package/lang/en.d.ts +52 -25
  320. package/lang/en.js +421 -397
  321. package/lang/en.lyaml +4 -28
  322. package/lib/__tests__/accountTypes.test.js +20 -22
  323. package/lib/__tests__/buildAccount.test.js +115 -64
  324. package/lib/__tests__/commonOpts.test.js +20 -22
  325. package/lib/__tests__/dependencyManagement.test.js +46 -51
  326. package/lib/__tests__/developerTestAccounts.test.js +27 -62
  327. package/lib/__tests__/hasFeature.test.js +6 -8
  328. package/lib/__tests__/npm.test.js +15 -20
  329. package/lib/__tests__/oauth.test.js +23 -28
  330. package/lib/__tests__/parsing.test.js +18 -20
  331. package/lib/__tests__/polling.test.js +24 -26
  332. package/lib/__tests__/process.test.js +14 -19
  333. package/lib/__tests__/projectProfiles.test.js +34 -39
  334. package/lib/__tests__/sandboxSync.test.js +30 -35
  335. package/lib/__tests__/sandboxes.test.js +29 -31
  336. package/lib/__tests__/serverlessLogs.test.js +8 -13
  337. package/lib/__tests__/usageTracking.test.js +33 -34
  338. package/lib/__tests__/validation.test.js +18 -20
  339. package/lib/__tests__/yargsUtils.test.js +17 -41
  340. package/lib/accountTypes.js +24 -34
  341. package/lib/app/__tests__/migrate.test.js +117 -109
  342. package/lib/app/__tests__/migrate_legacy.test.js +29 -31
  343. package/lib/app/migrate.d.ts +18 -4
  344. package/lib/app/migrate.js +152 -148
  345. package/lib/app/migrate_legacy.d.ts +1 -1
  346. package/lib/app/migrate_legacy.js +72 -78
  347. package/lib/app/urls.js +5 -9
  348. package/lib/buildAccount.d.ts +12 -3
  349. package/lib/buildAccount.js +165 -69
  350. package/lib/commonOpts.d.ts +1 -1
  351. package/lib/commonOpts.js +67 -59
  352. package/lib/configMigrate.js +34 -38
  353. package/lib/configOptions.d.ts +5 -0
  354. package/lib/configOptions.js +44 -40
  355. package/lib/constants.d.ts +8 -0
  356. package/lib/constants.js +39 -34
  357. package/lib/customObject.js +2 -6
  358. package/lib/dependencyManagement.js +37 -45
  359. package/lib/developerTestAccounts.d.ts +1 -1
  360. package/lib/developerTestAccounts.js +34 -39
  361. package/lib/doctor/Diagnosis.d.ts +1 -1
  362. package/lib/doctor/Diagnosis.js +25 -29
  363. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  364. package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
  365. package/lib/doctor/Doctor.d.ts +1 -1
  366. package/lib/doctor/Doctor.js +94 -101
  367. package/lib/doctor/__tests__/Diagnosis.test.js +9 -14
  368. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +29 -34
  369. package/lib/doctor/__tests__/Doctor.test.js +24 -26
  370. package/lib/enums/exitCodes.js +1 -4
  371. package/lib/errorHandlers/index.js +33 -52
  372. package/lib/errorHandlers/suppressError.d.ts +1 -1
  373. package/lib/errorHandlers/suppressError.js +28 -31
  374. package/lib/errors/ProjectValidationError.d.ts +4 -0
  375. package/lib/errors/ProjectValidationError.js +9 -0
  376. package/lib/filesystem.js +8 -15
  377. package/lib/generateSelectors.js +18 -29
  378. package/lib/hasFeature.d.ts +1 -1
  379. package/lib/hasFeature.js +3 -6
  380. package/lib/interpolation.js +11 -18
  381. package/lib/lang.d.ts +1 -1
  382. package/lib/lang.js +22 -27
  383. package/lib/links.js +16 -24
  384. package/lib/marketplaceValidate.js +29 -39
  385. package/lib/mcp/setup.d.ts +4 -0
  386. package/lib/mcp/setup.js +106 -82
  387. package/lib/middleware/__test__/configMiddleware.test.js +20 -55
  388. package/lib/middleware/__test__/gitMiddleware.test.js +7 -42
  389. package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -4
  390. package/lib/middleware/__test__/requestMiddleware.test.js +6 -11
  391. package/lib/middleware/__test__/utils.test.js +9 -11
  392. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +9 -44
  393. package/lib/middleware/autoUpdateMiddleware.js +33 -40
  394. package/lib/middleware/configMiddleware.js +36 -42
  395. package/lib/middleware/fireAlarmMiddleware.js +12 -18
  396. package/lib/middleware/gitMiddleware.js +5 -8
  397. package/lib/middleware/notificationsMiddleware.js +16 -23
  398. package/lib/middleware/requestMiddleware.js +4 -10
  399. package/lib/middleware/utils.js +1 -4
  400. package/lib/middleware/yargsChecksMiddleware.js +10 -13
  401. package/lib/npm.js +14 -23
  402. package/lib/oauth.js +29 -35
  403. package/lib/parsing.js +3 -6
  404. package/lib/polling.js +11 -15
  405. package/lib/process.js +11 -19
  406. package/lib/projectProfiles.d.ts +2 -2
  407. package/lib/projectProfiles.js +32 -42
  408. package/lib/projects/ProjectLogsManager.js +18 -21
  409. package/lib/projects/__tests__/AppDevModeInterface.test.js +140 -145
  410. package/lib/projects/__tests__/LocalDevProcess.test.js +100 -140
  411. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +201 -37
  412. package/lib/projects/__tests__/ProjectLogsManager.test.js +56 -58
  413. package/lib/projects/__tests__/buildAndDeploy.test.js +7 -9
  414. package/lib/projects/__tests__/components.test.js +9 -14
  415. package/lib/projects/__tests__/localDevHelpers.test.js +117 -0
  416. package/lib/projects/__tests__/projects.test.js +35 -40
  417. package/lib/projects/__tests__/structure.test.js +43 -81
  418. package/lib/projects/add/__tests__/legacyAddComponent.test.js +26 -28
  419. package/lib/projects/add/__tests__/v3AddComponent.test.js +25 -30
  420. package/lib/projects/add/legacyAddComponent.d.ts +1 -1
  421. package/lib/projects/add/legacyAddComponent.js +24 -30
  422. package/lib/projects/add/v3AddComponent.d.ts +1 -1
  423. package/lib/projects/add/v3AddComponent.js +37 -42
  424. package/lib/projects/buildAndDeploy.d.ts +1 -1
  425. package/lib/projects/buildAndDeploy.js +88 -97
  426. package/lib/projects/components.js +19 -25
  427. package/lib/projects/config.d.ts +1 -1
  428. package/lib/projects/config.js +32 -41
  429. package/lib/projects/create/__tests__/legacy.test.js +22 -57
  430. package/lib/projects/create/__tests__/v3.test.js +5 -7
  431. package/lib/projects/create/index.d.ts +3 -3
  432. package/lib/projects/create/index.js +19 -22
  433. package/lib/projects/create/legacy.d.ts +1 -1
  434. package/lib/projects/create/legacy.js +25 -31
  435. package/lib/projects/create/v3.d.ts +3 -5
  436. package/lib/projects/create/v3.js +47 -59
  437. package/lib/projects/ensureProjectExists.js +31 -37
  438. package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
  439. package/lib/projects/localDev/AppDevModeInterface.js +58 -60
  440. package/lib/projects/localDev/DevServerManager.d.ts +1 -1
  441. package/lib/projects/localDev/DevServerManager.js +22 -26
  442. package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
  443. package/lib/projects/localDev/DevServerManagerV2.js +15 -22
  444. package/lib/projects/localDev/LocalDevLogger.d.ts +1 -2
  445. package/lib/projects/localDev/LocalDevLogger.js +66 -66
  446. package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
  447. package/lib/projects/localDev/LocalDevManager.js +106 -111
  448. package/lib/projects/localDev/LocalDevProcess.d.ts +6 -5
  449. package/lib/projects/localDev/LocalDevProcess.js +37 -50
  450. package/lib/projects/localDev/LocalDevState.d.ts +5 -7
  451. package/lib/projects/localDev/LocalDevState.js +9 -11
  452. package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
  453. package/lib/projects/localDev/LocalDevWatcher.js +6 -11
  454. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +3 -3
  455. package/lib/projects/localDev/LocalDevWebsocketServer.js +63 -55
  456. package/lib/projects/localDev/helpers.d.ts +11 -4
  457. package/lib/projects/localDev/helpers.js +211 -174
  458. package/lib/projects/structure.d.ts +3 -3
  459. package/lib/projects/structure.js +32 -78
  460. package/lib/projects/ui.js +10 -13
  461. package/lib/projects/upload.d.ts +1 -1
  462. package/lib/projects/upload.js +57 -73
  463. package/lib/projects/urls.d.ts +1 -1
  464. package/lib/projects/urls.js +15 -25
  465. package/lib/projects/watch.d.ts +1 -1
  466. package/lib/projects/watch.js +48 -54
  467. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +9 -11
  468. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +11 -16
  469. package/lib/prompts/accountNamePrompt.d.ts +1 -1
  470. package/lib/prompts/accountNamePrompt.js +26 -31
  471. package/lib/prompts/accountsPrompt.js +12 -15
  472. package/lib/prompts/cmsFieldPrompt.js +13 -19
  473. package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
  474. package/lib/prompts/createApiSamplePrompt.js +9 -12
  475. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +2 -2
  476. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +27 -31
  477. package/lib/prompts/createFunctionPrompt.js +17 -20
  478. package/lib/prompts/createModulePrompt.js +12 -15
  479. package/lib/prompts/createTemplatePrompt.js +5 -8
  480. package/lib/prompts/downloadProjectPrompt.js +17 -20
  481. package/lib/prompts/installAppPrompt.js +19 -26
  482. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
  483. package/lib/prompts/personalAccessKeyPrompt.js +40 -47
  484. package/lib/prompts/previewPrompt.js +15 -22
  485. package/lib/prompts/projectAddPrompt.d.ts +1 -1
  486. package/lib/prompts/projectAddPrompt.js +14 -18
  487. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
  488. package/lib/prompts/projectDevTargetAccountPrompt.js +48 -54
  489. package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
  490. package/lib/prompts/projectNameAndDestPrompt.js +22 -29
  491. package/lib/prompts/projectNamePrompt.js +11 -14
  492. package/lib/prompts/projectsLogsPrompt.js +5 -8
  493. package/lib/prompts/promptUtils.d.ts +1 -1
  494. package/lib/prompts/promptUtils.js +80 -77
  495. package/lib/prompts/sandboxesPrompt.d.ts +1 -1
  496. package/lib/prompts/sandboxesPrompt.js +26 -30
  497. package/lib/prompts/secretPrompt.js +10 -15
  498. package/lib/prompts/selectAppPrompt.js +11 -14
  499. package/lib/prompts/selectHubDBTablePrompt.js +24 -30
  500. package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
  501. package/lib/prompts/selectProjectTemplatePrompt.js +10 -13
  502. package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
  503. package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
  504. package/lib/prompts/uploadPrompt.js +11 -17
  505. package/lib/sandboxSync.d.ts +1 -1
  506. package/lib/sandboxSync.js +58 -65
  507. package/lib/sandboxes.d.ts +5 -1
  508. package/lib/sandboxes.js +72 -76
  509. package/lib/schema.js +13 -20
  510. package/lib/serverlessLogs.js +45 -52
  511. package/lib/testUtils.js +4 -8
  512. package/lib/ui/SpinniesManager.d.ts +1 -1
  513. package/lib/ui/SpinniesManager.js +29 -34
  514. package/lib/ui/boxen.js +11 -14
  515. package/lib/ui/git.js +14 -20
  516. package/lib/ui/index.d.ts +6 -0
  517. package/lib/ui/index.js +56 -76
  518. package/lib/ui/logger.js +10 -13
  519. package/lib/ui/serverlessFunctionLogs.js +14 -20
  520. package/lib/ui/spinniesUtils.js +24 -39
  521. package/lib/ui/supportHyperlinks.js +3 -6
  522. package/lib/ui/supportsColor.js +11 -17
  523. package/lib/ui/table.js +6 -13
  524. package/lib/upload.js +15 -21
  525. package/lib/usageTracking.js +35 -44
  526. package/lib/utils/__tests__/isDeepEqual.test.js +269 -0
  527. package/lib/utils/hasFlag.js +2 -8
  528. package/lib/utils/isDeepEqual.d.ts +1 -0
  529. package/lib/utils/isDeepEqual.js +31 -0
  530. package/lib/validation.js +48 -87
  531. package/lib/yargsUtils.d.ts +2 -1
  532. package/lib/yargsUtils.js +19 -16
  533. package/mcp-server/server.js +6 -8
  534. package/mcp-server/tools/index.js +15 -16
  535. package/mcp-server/tools/project/{AddFeatureToProject.d.ts → AddFeatureToProjectTool.d.ts} +5 -5
  536. package/mcp-server/tools/project/AddFeatureToProjectTool.js +76 -0
  537. package/mcp-server/tools/project/CreateProjectTool.d.ts +4 -4
  538. package/mcp-server/tools/project/CreateProjectTool.js +40 -54
  539. package/mcp-server/tools/project/{DeployProject.d.ts → DeployProjectTool.d.ts} +2 -2
  540. package/mcp-server/tools/project/DeployProjectTool.js +49 -0
  541. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +20 -0
  542. package/mcp-server/tools/project/GetConfigValuesTool.js +51 -0
  543. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
  544. package/mcp-server/tools/project/GuidedWalkthroughTool.js +21 -25
  545. package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
  546. package/mcp-server/tools/project/UploadProjectTools.js +12 -19
  547. package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
  548. package/mcp-server/tools/project/ValidateProjectTool.js +13 -17
  549. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +1 -0
  550. package/mcp-server/tools/project/__tests__/{AddFeatureToProject.test.js → AddFeatureToProjectTool.test.js} +15 -17
  551. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +12 -15
  552. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +1 -0
  553. package/mcp-server/tools/project/__tests__/{DeployProject.test.js → DeployProjectTool.test.js} +6 -8
  554. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +1 -0
  555. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +198 -0
  556. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +4 -6
  557. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +4 -6
  558. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +4 -6
  559. package/mcp-server/tools/project/constants.d.ts +1 -0
  560. package/mcp-server/tools/project/constants.js +14 -9
  561. package/mcp-server/types.js +1 -5
  562. package/mcp-server/utils/__tests__/command.test.js +9 -11
  563. package/mcp-server/utils/__tests__/project.test.js +12 -17
  564. package/mcp-server/utils/command.d.ts +1 -1
  565. package/mcp-server/utils/command.js +4 -11
  566. package/mcp-server/utils/content.d.ts +1 -1
  567. package/mcp-server/utils/content.js +2 -6
  568. package/mcp-server/utils/project.js +8 -14
  569. package/mcp-server/utils/toolUsageTracking.js +11 -14
  570. package/package.json +22 -15
  571. package/types/Cms.d.ts +1 -1
  572. package/types/Cms.js +1 -2
  573. package/types/LocalDev.d.ts +4 -6
  574. package/types/LocalDev.js +1 -2
  575. package/types/ProjectComponents.d.ts +2 -2
  576. package/types/ProjectComponents.js +1 -2
  577. package/types/Projects.d.ts +1 -1
  578. package/types/Projects.js +2 -5
  579. package/types/Prompts.js +1 -2
  580. package/types/Sandboxes.js +1 -2
  581. package/types/Yargs.js +1 -2
  582. package/ui/index.d.ts +1 -0
  583. package/ui/index.js +6 -0
  584. package/mcp-server/tools/project/AddFeatureToProject.js +0 -88
  585. package/mcp-server/tools/project/DeployProject.js +0 -53
  586. /package/{mcp-server/tools/project/__tests__/AddFeatureToProject.test.d.ts → lib/projects/__tests__/localDevHelpers.test.d.ts} +0 -0
  587. /package/{mcp-server/tools/project/__tests__/DeployProject.test.d.ts → lib/utils/__tests__/isDeepEqual.test.d.ts} +0 -0
@@ -1,41 +1,36 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const util_1 = __importDefault(require("util"));
7
- const vitest_1 = require("vitest");
8
- vitest_1.vi.mock('@hubspot/local-dev-lib/fs');
9
- vitest_1.vi.mock('@hubspot/local-dev-lib/config');
10
- vitest_1.vi.mock('@hubspot/local-dev-lib/personalAccessKey');
11
- vitest_1.vi.mock('../../projects/config');
12
- vitest_1.vi.mock('@hubspot/local-dev-lib/api/projects');
13
- vitest_1.vi.mock('util');
14
- vitest_1.vi.mock('../../../package.json', () => {
1
+ import util from 'util';
2
+ import { vi } from 'vitest';
3
+ vi.mock('@hubspot/local-dev-lib/fs');
4
+ vi.mock('@hubspot/local-dev-lib/config');
5
+ vi.mock('@hubspot/local-dev-lib/personalAccessKey');
6
+ vi.mock('../../projects/config');
7
+ vi.mock('@hubspot/local-dev-lib/api/projects');
8
+ vi.mock('util');
9
+ vi.mock('../../../package.json', () => {
15
10
  return {
16
11
  default: {
17
12
  version: '1.0.0',
18
13
  },
19
14
  };
20
15
  });
21
- const DiagnosticInfoBuilder_1 = require("../DiagnosticInfoBuilder");
22
- const config_1 = require("@hubspot/local-dev-lib/config");
23
- const personalAccessKey_1 = require("@hubspot/local-dev-lib/personalAccessKey");
24
- const fs_1 = require("@hubspot/local-dev-lib/fs");
25
- const config_2 = require("../../projects/config");
26
- const projects_1 = require("@hubspot/local-dev-lib/api/projects");
27
- const walk = fs_1.walk;
28
- const getAccessToken = personalAccessKey_1.getAccessToken;
29
- const getAccountConfig = config_1.getAccountConfig;
30
- const getConfigPath = config_1.getConfigPath;
31
- const getDefaultAccountOverrideFilePath = config_1.getDefaultAccountOverrideFilePath;
32
- const getAccountId = config_1.getAccountId;
33
- const getProjectConfig = config_2.getProjectConfig;
34
- const isConfigFlagEnabled = config_1.isConfigFlagEnabled;
35
- const fetchProject = projects_1.fetchProject;
36
- const mockPromisifyImpl = vitest_1.vi.fn();
37
- const utilPromisify = vitest_1.vi.fn(() => mockPromisifyImpl);
38
- util_1.default.promisify = utilPromisify;
16
+ import { DiagnosticInfoBuilder, } from '../DiagnosticInfoBuilder.js';
17
+ import { getAccountId as _getAccountId, getAccountConfig as _getAccountConfig, getConfigPath as _getConfigPath, getDefaultAccountOverrideFilePath as _getDefaultAccountOverrideFilePath, isConfigFlagEnabled as _isConfigFlagEnabled, } from '@hubspot/local-dev-lib/config';
18
+ import { getAccessToken as _getAccessToken } from '@hubspot/local-dev-lib/personalAccessKey';
19
+ import { walk as _walk } from '@hubspot/local-dev-lib/fs';
20
+ import { getProjectConfig as _getProjectConfig } from '../../projects/config.js';
21
+ import { fetchProject as _fetchProject } from '@hubspot/local-dev-lib/api/projects';
22
+ const walk = _walk;
23
+ const getAccessToken = _getAccessToken;
24
+ const getAccountConfig = _getAccountConfig;
25
+ const getConfigPath = _getConfigPath;
26
+ const getDefaultAccountOverrideFilePath = _getDefaultAccountOverrideFilePath;
27
+ const getAccountId = _getAccountId;
28
+ const getProjectConfig = _getProjectConfig;
29
+ const isConfigFlagEnabled = _isConfigFlagEnabled;
30
+ const fetchProject = _fetchProject;
31
+ const mockPromisifyImpl = vi.fn();
32
+ const utilPromisify = vi.fn(() => mockPromisifyImpl);
33
+ util.promisify = utilPromisify;
39
34
  describe('lib/doctor/DiagnosticInfo', () => {
40
35
  const accountId = 898989;
41
36
  const accountConfig = {
@@ -83,7 +78,7 @@ describe('lib/doctor/DiagnosticInfo', () => {
83
78
  mockPromisifyImpl.mockResolvedValue(npmVersion);
84
79
  });
85
80
  it('should initialize the required state on creation', () => {
86
- const builder = new DiagnosticInfoBuilder_1.DiagnosticInfoBuilder(processInfo);
81
+ const builder = new DiagnosticInfoBuilder(processInfo);
87
82
  expect(getAccountId).toHaveBeenCalledTimes(1);
88
83
  expect(getAccountConfig).toHaveBeenCalledTimes(1);
89
84
  expect(builder.accountId).toEqual(accountId);
@@ -99,7 +94,7 @@ describe('lib/doctor/DiagnosticInfo', () => {
99
94
  let projectDetails;
100
95
  let accessToken;
101
96
  beforeEach(() => {
102
- builder = new DiagnosticInfoBuilder_1.DiagnosticInfoBuilder(processInfo);
97
+ builder = new DiagnosticInfoBuilder(processInfo);
103
98
  projectConfig = {
104
99
  projectDir,
105
100
  projectConfig: {
@@ -1,13 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Doctor_1 = require("../Doctor");
4
- const dependencyManagement_1 = require("../../dependencyManagement");
5
- const portManager_1 = require("@hubspot/local-dev-lib/portManager");
6
- const personalAccessKey_1 = require("@hubspot/local-dev-lib/personalAccessKey");
7
- const HubSpotHttpError_1 = require("@hubspot/local-dev-lib/models/HubSpotHttpError");
8
- const axios_1 = require("axios");
9
- const index_1 = require("@hubspot/local-dev-lib/errors/index");
10
- const util_1 = require("util");
1
+ import { Doctor } from '../Doctor.js';
2
+ import { hasMissingPackages as _hasMissingPackages } from '../../dependencyManagement.js';
3
+ import { isPortManagerPortAvailable as _isPortManagerPortAvailable } from '@hubspot/local-dev-lib/portManager';
4
+ import { accessTokenForPersonalAccessKey as _accessTokenForPersonalAccessKey, authorizedScopesForPortalAndUser as _authorizedScopesForPortalAndUser, scopesOnAccessToken as _scopesOnAccessToken, } from '@hubspot/local-dev-lib/personalAccessKey';
5
+ import { HubSpotHttpError } from '@hubspot/local-dev-lib/models/HubSpotHttpError';
6
+ import { AxiosError } from 'axios';
7
+ import { isSpecifiedError as _isSpecifiedError } from '@hubspot/local-dev-lib/errors/index';
8
+ import { promisify as _promisify } from 'util';
11
9
  vi.mock('@hubspot/local-dev-lib/logger');
12
10
  vi.mock('../Diagnosis');
13
11
  vi.mock('../../ui/SpinniesManager');
@@ -18,13 +16,13 @@ vi.mock('@hubspot/local-dev-lib/portManager');
18
16
  vi.mock('@hubspot/local-dev-lib/personalAccessKey');
19
17
  vi.mock('@hubspot/local-dev-lib/errors/index');
20
18
  vi.mock('util');
21
- const hasMissingPackages = vi.mocked(dependencyManagement_1.hasMissingPackages);
22
- const isPortManagerPortAvailable = vi.mocked(portManager_1.isPortManagerPortAvailable);
23
- const utilPromisify = vi.mocked(util_1.promisify);
24
- const accessTokenForPersonalAccessKey = vi.mocked(personalAccessKey_1.accessTokenForPersonalAccessKey);
25
- const authorizedScopesForPortalAndUser = vi.mocked(personalAccessKey_1.authorizedScopesForPortalAndUser);
26
- const scopesOnAccessToken = vi.mocked(personalAccessKey_1.scopesOnAccessToken);
27
- const isSpecifiedError = vi.mocked(index_1.isSpecifiedError);
19
+ const hasMissingPackages = vi.mocked(_hasMissingPackages);
20
+ const isPortManagerPortAvailable = vi.mocked(_isPortManagerPortAvailable);
21
+ const utilPromisify = vi.mocked(_promisify);
22
+ const accessTokenForPersonalAccessKey = vi.mocked(_accessTokenForPersonalAccessKey);
23
+ const authorizedScopesForPortalAndUser = vi.mocked(_authorizedScopesForPortalAndUser);
24
+ const scopesOnAccessToken = vi.mocked(_scopesOnAccessToken);
25
+ const isSpecifiedError = vi.mocked(_isSpecifiedError);
28
26
  describe('lib/doctor/Doctor', () => {
29
27
  let doctor;
30
28
  // @ts-ignore
@@ -59,7 +57,7 @@ describe('lib/doctor/Doctor', () => {
59
57
  },
60
58
  };
61
59
  beforeEach(() => {
62
- doctor = new Doctor_1.Doctor({
60
+ doctor = new Doctor({
63
61
  generateDiagnosticInfo: vi.fn().mockResolvedValue({
64
62
  ...diagnosticInfo,
65
63
  }),
@@ -85,7 +83,7 @@ describe('lib/doctor/Doctor', () => {
85
83
  });
86
84
  });
87
85
  it('should add error section if node version is not available', async () => {
88
- doctor = new Doctor_1.Doctor({
86
+ doctor = new Doctor({
89
87
  generateDiagnosticInfo: vi.fn().mockResolvedValue({
90
88
  ...diagnosticInfo,
91
89
  versions: {},
@@ -99,7 +97,7 @@ describe('lib/doctor/Doctor', () => {
99
97
  });
100
98
  });
101
99
  it('should add error section if minimum node version is not met', async () => {
102
- doctor = new Doctor_1.Doctor({
100
+ doctor = new Doctor({
103
101
  generateDiagnosticInfo: vi.fn().mockResolvedValue({
104
102
  ...diagnosticInfo,
105
103
  versions: { node: '1.0.0' },
@@ -123,7 +121,7 @@ describe('lib/doctor/Doctor', () => {
123
121
  });
124
122
  });
125
123
  it('should add error section if npm is not installed', async () => {
126
- doctor = new Doctor_1.Doctor({
124
+ doctor = new Doctor({
127
125
  generateDiagnosticInfo: vi.fn().mockResolvedValue({
128
126
  ...diagnosticInfo,
129
127
  versions: {},
@@ -166,7 +164,7 @@ describe('lib/doctor/Doctor', () => {
166
164
  });
167
165
  });
168
166
  it('should add an error section if it is unable to determine if the portal is active', async () => {
169
- accessTokenForPersonalAccessKey.mockRejectedValueOnce(new HubSpotHttpError_1.HubSpotHttpError('Invalid token', { cause: new axios_1.AxiosError() }));
167
+ accessTokenForPersonalAccessKey.mockRejectedValueOnce(new HubSpotHttpError('Invalid token', { cause: new AxiosError() }));
170
168
  await doctor.diagnose();
171
169
  // @ts-expect-error Testing private method
172
170
  expect(doctor.diagnosis.addCLIConfigSection).toHaveBeenCalledWith({
@@ -175,7 +173,7 @@ describe('lib/doctor/Doctor', () => {
175
173
  });
176
174
  });
177
175
  it('should add an error section if the portal is inactive', async () => {
178
- accessTokenForPersonalAccessKey.mockRejectedValueOnce(new HubSpotHttpError_1.HubSpotHttpError('Invalid token'));
176
+ accessTokenForPersonalAccessKey.mockRejectedValueOnce(new HubSpotHttpError('Invalid token'));
179
177
  isSpecifiedError.mockImplementation((err, fields) => {
180
178
  return (fields.statusCode === 401 &&
181
179
  fields.category === 'INVALID_AUTHENTICATION' &&
@@ -190,7 +188,7 @@ describe('lib/doctor/Doctor', () => {
190
188
  });
191
189
  });
192
190
  it('should add an error section if the portal is not found', async () => {
193
- accessTokenForPersonalAccessKey.mockRejectedValueOnce(new HubSpotHttpError_1.HubSpotHttpError('Not found'));
191
+ accessTokenForPersonalAccessKey.mockRejectedValueOnce(new HubSpotHttpError('Not found'));
194
192
  isSpecifiedError.mockImplementation((err, fields) => {
195
193
  return (fields.statusCode === 404 &&
196
194
  fields.category === 'INVALID_AUTHENTICATION' &&
@@ -205,7 +203,7 @@ describe('lib/doctor/Doctor', () => {
205
203
  });
206
204
  });
207
205
  it('should add multiple sections if token is invalid but the portal is active', async () => {
208
- accessTokenForPersonalAccessKey.mockRejectedValueOnce(new HubSpotHttpError_1.HubSpotHttpError('Not found'));
206
+ accessTokenForPersonalAccessKey.mockRejectedValueOnce(new HubSpotHttpError('Not found'));
209
207
  isSpecifiedError.mockImplementation((err, fields) => {
210
208
  return (fields.statusCode === 401 &&
211
209
  fields.category === 'INVALID_AUTHENTICATION' &&
@@ -226,7 +224,7 @@ describe('lib/doctor/Doctor', () => {
226
224
  });
227
225
  });
228
226
  it('should add an error section if we are unable to determine if the portal is active', async () => {
229
- accessTokenForPersonalAccessKey.mockRejectedValueOnce(new HubSpotHttpError_1.HubSpotHttpError('Not found'));
227
+ accessTokenForPersonalAccessKey.mockRejectedValueOnce(new HubSpotHttpError('Not found'));
230
228
  isSpecifiedError.mockReturnValue(false);
231
229
  await doctor.diagnose();
232
230
  // @ts-expect-error Testing private method
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EXIT_CODES = void 0;
4
1
  /*
5
2
  * 0: Successful run
6
3
  * 1: Config problem or internal error
7
4
  * 2: Warnings or validation issues
8
5
  */
9
- exports.EXIT_CODES = {
6
+ export const EXIT_CODES = {
10
7
  SUCCESS: 0,
11
8
  ERROR: 1,
12
9
  WARNING: 2,
@@ -1,41 +1,30 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ApiErrorContext = void 0;
7
- exports.logError = logError;
8
- exports.debugError = debugError;
9
- const logger_1 = require("@hubspot/local-dev-lib/logger");
10
- const index_1 = require("@hubspot/local-dev-lib/errors/index");
11
- const config_1 = require("@hubspot/local-dev-lib/config");
12
- const suppressError_1 = require("./suppressError");
13
- const lang_1 = require("../lang");
14
- const util_1 = __importDefault(require("util"));
15
- const ui_1 = require("../ui");
16
- const exitCodes_1 = require("../enums/exitCodes");
17
- function logError(error, context) {
1
+ import { logger } from '@hubspot/local-dev-lib/logger';
2
+ import { isHubSpotHttpError, isValidationError, } from '@hubspot/local-dev-lib/errors/index';
3
+ import { getConfig } from '@hubspot/local-dev-lib/config';
4
+ import { shouldSuppressError } from './suppressError.js';
5
+ import { i18n } from '../lang.js';
6
+ import util from 'util';
7
+ import { uiCommandReference } from '../ui/index.js';
8
+ import { isProjectValidationError } from '../errors/ProjectValidationError.js';
9
+ export function logError(error, context) {
18
10
  debugError(error, context);
19
- if (isUserCancellationError(error)) {
20
- process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
21
- }
22
11
  if (isProjectValidationError(error)) {
23
- logger_1.logger.error(error.message);
12
+ logger.error(error.message);
24
13
  return;
25
14
  }
26
- if ((0, suppressError_1.shouldSuppressError)(error, context)) {
15
+ if (shouldSuppressError(error, context)) {
27
16
  return;
28
17
  }
29
- if ((0, index_1.isHubSpotHttpError)(error) && 'context' in error) {
30
- if ((0, suppressError_1.shouldSuppressError)(error, error.context)) {
18
+ if (isHubSpotHttpError(error) && 'context' in error) {
19
+ if (shouldSuppressError(error, error.context)) {
31
20
  return;
32
21
  }
33
22
  }
34
- if ((0, index_1.isHubSpotHttpError)(error) && context) {
23
+ if (isHubSpotHttpError(error) && context) {
35
24
  error.updateContext(context);
36
25
  }
37
- if ((0, index_1.isHubSpotHttpError)(error) && (0, index_1.isValidationError)(error)) {
38
- logger_1.logger.error(error.formattedValidationErrors());
26
+ if (isHubSpotHttpError(error) && isValidationError(error)) {
27
+ logger.error(error.formattedValidationErrors());
39
28
  }
40
29
  else if (isErrorWithMessageOrReason(error)) {
41
30
  const message = [];
@@ -44,47 +33,47 @@ function logError(error, context) {
44
33
  message.push(msg);
45
34
  }
46
35
  });
47
- logger_1.logger.error(message.join(' '));
36
+ logger.error(message.join(' '));
48
37
  }
49
38
  else {
50
39
  // Unknown errors
51
- logger_1.logger.error((0, lang_1.i18n)(`lib.errorHandlers.index.unknownErrorOccurred`));
40
+ logger.error(i18n(`lib.errorHandlers.index.unknownErrorOccurred`));
52
41
  }
53
- if ((0, index_1.isHubSpotHttpError)(error) && error.code === 'ETIMEDOUT') {
54
- const config = (0, config_1.getConfig)();
42
+ if (isHubSpotHttpError(error) && error.code === 'ETIMEDOUT') {
43
+ const config = getConfig();
55
44
  const defaultTimeout = config?.httpTimeout;
56
45
  // Timeout was caused by the default timeout
57
46
  if (error.timeout && defaultTimeout === error.timeout) {
58
- logger_1.logger.error((0, lang_1.i18n)(`lib.errorHandlers.index.configTimeoutErrorOccurred`, {
47
+ logger.error(i18n(`lib.errorHandlers.index.configTimeoutErrorOccurred`, {
59
48
  timeout: error.timeout,
60
- configSetCommand: (0, ui_1.uiCommandReference)('hs config set'),
49
+ configSetCommand: uiCommandReference('hs config set'),
61
50
  }));
62
51
  }
63
52
  // Timeout was caused by a custom timeout set by the CLI or LDL
64
53
  else {
65
- logger_1.logger.error((0, lang_1.i18n)(`lib.errorHandlers.index.genericTimeoutErrorOccurred`));
54
+ logger.error(i18n(`lib.errorHandlers.index.genericTimeoutErrorOccurred`));
66
55
  }
67
56
  }
68
57
  }
69
- function debugError(error, context) {
70
- if ((0, index_1.isHubSpotHttpError)(error)) {
71
- logger_1.logger.debug(error.toString());
58
+ export function debugError(error, context) {
59
+ if (isHubSpotHttpError(error)) {
60
+ logger.debug(error.toString());
72
61
  }
73
62
  else {
74
- logger_1.logger.debug((0, lang_1.i18n)(`lib.errorHandlers.index.errorOccurred`, { error: String(error) }));
63
+ logger.debug(i18n(`lib.errorHandlers.index.errorOccurred`, { error: String(error) }));
75
64
  }
76
- if (error instanceof Error && error.cause && !(0, index_1.isHubSpotHttpError)(error)) {
77
- logger_1.logger.debug((0, lang_1.i18n)(`lib.errorHandlers.index.errorCause`, {
78
- cause: util_1.default.inspect(error.cause, false, null, true),
65
+ if (error instanceof Error && error.cause && !isHubSpotHttpError(error)) {
66
+ logger.debug(i18n(`lib.errorHandlers.index.errorCause`, {
67
+ cause: util.inspect(error.cause, false, null, true),
79
68
  }));
80
69
  }
81
70
  if (context) {
82
- logger_1.logger.debug((0, lang_1.i18n)(`lib.errorHandlers.index.errorContext`, {
83
- context: util_1.default.inspect(context, false, null, true),
71
+ logger.debug(i18n(`lib.errorHandlers.index.errorContext`, {
72
+ context: util.inspect(context, false, null, true),
84
73
  }));
85
74
  }
86
75
  }
87
- class ApiErrorContext {
76
+ export class ApiErrorContext {
88
77
  accountId;
89
78
  request;
90
79
  payload;
@@ -96,16 +85,8 @@ class ApiErrorContext {
96
85
  this.projectName = props.projectName || '';
97
86
  }
98
87
  }
99
- exports.ApiErrorContext = ApiErrorContext;
100
- function isProjectValidationError(error) {
101
- return error instanceof Error && error.name === 'ProjectValidationError';
102
- }
103
88
  function isErrorWithMessageOrReason(error) {
104
89
  return (typeof error === 'object' &&
105
90
  error !== null &&
106
91
  ('message' in error || 'reason' in error));
107
92
  }
108
- // Error specific to inquirer prompts - they catch Ctrl+C and return this error
109
- function isUserCancellationError(error) {
110
- return error instanceof Error && error.name === 'ExitPromptError';
111
- }
@@ -1,2 +1,2 @@
1
- import { ApiErrorContext } from './index';
1
+ import { ApiErrorContext } from './index.js';
2
2
  export declare function shouldSuppressError(err: unknown, context?: ApiErrorContext): boolean;
@@ -1,62 +1,59 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.shouldSuppressError = shouldSuppressError;
4
- const index_1 = require("@hubspot/local-dev-lib/errors/index");
5
- const logger_1 = require("@hubspot/local-dev-lib/logger");
6
- const constants_1 = require("../constants");
7
- const lang_1 = require("../lang");
8
- const ui_1 = require("../ui");
1
+ import { isSpecifiedError, isMissingScopeError, } from '@hubspot/local-dev-lib/errors/index';
2
+ import { logger } from '@hubspot/local-dev-lib/logger';
3
+ import { PLATFORM_VERSION_ERROR_TYPES } from '../constants.js';
4
+ import { i18n } from '../lang.js';
5
+ import { uiAccountDescription, uiLine, uiLink, uiCommandReference, } from '../ui/index.js';
9
6
  function createPlatformVersionError(err, subCategory) {
10
7
  let translationKey = 'unspecifiedPlatformVersion';
11
8
  let platformVersion = 'unspecified platformVersion';
12
9
  const errorContext = err?.data?.context;
13
- if (subCategory === constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED) {
10
+ if (subCategory === PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED) {
14
11
  platformVersion = errorContext?.RETIRED_PLATFORM_VERSION ?? platformVersion;
15
12
  translationKey = 'platformVersionRetired';
16
13
  }
17
14
  else if (subCategory ===
18
- constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST) {
15
+ PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST) {
19
16
  platformVersion = errorContext?.PLATFORM_VERSION ?? platformVersion;
20
17
  translationKey = 'nonExistentPlatformVersion';
21
18
  }
22
- (0, ui_1.uiLine)();
23
- logger_1.logger.error((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.platformVersionErrors.header`));
24
- logger_1.logger.log((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.platformVersionErrors.${translationKey}`, {
19
+ uiLine();
20
+ logger.error(i18n(`lib.errorHandlers.suppressErrors.platformVersionErrors.header`));
21
+ logger.log(i18n(`lib.errorHandlers.suppressErrors.platformVersionErrors.${translationKey}`, {
25
22
  platformVersion,
26
23
  }));
27
- logger_1.logger.log((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.platformVersionErrors.updateProject`));
28
- logger_1.logger.log((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.platformVersionErrors.betaLink`, {
29
- docsLink: (0, ui_1.uiLink)((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.platformVersionErrors.docsLink`), 'https://developers.hubspot.com/docs/platform/platform-versioning'),
24
+ logger.log(i18n(`lib.errorHandlers.suppressErrors.platformVersionErrors.updateProject`));
25
+ logger.log(i18n(`lib.errorHandlers.suppressErrors.platformVersionErrors.betaLink`, {
26
+ docsLink: uiLink(i18n(`lib.errorHandlers.suppressErrors.platformVersionErrors.docsLink`), 'https://developers.hubspot.com/docs/platform/platform-versioning'),
30
27
  }));
31
- (0, ui_1.uiLine)();
28
+ uiLine();
32
29
  }
33
- function shouldSuppressError(err, context) {
34
- if ((0, index_1.isMissingScopeError)(err)) {
35
- logger_1.logger.error((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.missingScopeError`, {
30
+ export function shouldSuppressError(err, context) {
31
+ if (isMissingScopeError(err)) {
32
+ logger.error(i18n(`lib.errorHandlers.suppressErrors.missingScopeError`, {
36
33
  accountName: context?.accountId
37
- ? (0, ui_1.uiAccountDescription)(context.accountId)
34
+ ? uiAccountDescription(context.accountId)
38
35
  : '',
39
36
  request: context?.request || 'request',
40
- authCommand: (0, ui_1.uiCommandReference)('hs auth'),
37
+ authCommand: uiCommandReference('hs auth'),
41
38
  }));
42
39
  return true;
43
40
  }
44
- if ((0, index_1.isSpecifiedError)(err, {
45
- subCategory: constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_NOT_SPECIFIED,
41
+ if (isSpecifiedError(err, {
42
+ subCategory: PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_NOT_SPECIFIED,
46
43
  })) {
47
- createPlatformVersionError(err, constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_NOT_SPECIFIED);
44
+ createPlatformVersionError(err, PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_NOT_SPECIFIED);
48
45
  return true;
49
46
  }
50
- if ((0, index_1.isSpecifiedError)(err, {
51
- subCategory: constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED,
47
+ if (isSpecifiedError(err, {
48
+ subCategory: PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED,
52
49
  })) {
53
- createPlatformVersionError(err, constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED);
50
+ createPlatformVersionError(err, PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED);
54
51
  return true;
55
52
  }
56
- if ((0, index_1.isSpecifiedError)(err, {
57
- subCategory: constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST,
53
+ if (isSpecifiedError(err, {
54
+ subCategory: PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST,
58
55
  })) {
59
- createPlatformVersionError(err, constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST);
56
+ createPlatformVersionError(err, PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST);
60
57
  return true;
61
58
  }
62
59
  return false;
@@ -0,0 +1,4 @@
1
+ export default class ProjectValidationError extends Error {
2
+ constructor(message: string, options?: ErrorOptions);
3
+ }
4
+ export declare function isProjectValidationError(err: unknown): err is ProjectValidationError;
@@ -0,0 +1,9 @@
1
+ export default class ProjectValidationError extends Error {
2
+ constructor(message, options) {
3
+ super(message, options);
4
+ this.name = 'ProjectValidationError';
5
+ }
6
+ }
7
+ export function isProjectValidationError(err) {
8
+ return err instanceof ProjectValidationError;
9
+ }
package/lib/filesystem.js CHANGED
@@ -1,25 +1,18 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.resolveLocalPath = resolveLocalPath;
7
- exports.isPathFolder = isPathFolder;
8
- const path_1 = __importDefault(require("path"));
9
- const path_2 = require("@hubspot/local-dev-lib/path");
10
- const extensions_1 = require("@hubspot/local-dev-lib/constants/extensions");
11
- function resolveLocalPath(filepath) {
1
+ import path from 'path';
2
+ import { getCwd } from '@hubspot/local-dev-lib/path';
3
+ import { FOLDER_DOT_EXTENSIONS } from '@hubspot/local-dev-lib/constants/extensions';
4
+ export function resolveLocalPath(filepath) {
12
5
  return filepath && typeof filepath === 'string'
13
- ? path_1.default.resolve((0, path_2.getCwd)(), filepath)
6
+ ? path.resolve(getCwd(), filepath)
14
7
  : // Use CWD if optional filepath is not passed.
15
- (0, path_2.getCwd)();
8
+ getCwd();
16
9
  }
17
- function isPathFolder(path) {
10
+ export function isPathFolder(path) {
18
11
  const splitPath = path.split('/');
19
12
  const fileOrFolderName = splitPath[splitPath.length - 1];
20
13
  const splitName = fileOrFolderName.split('.');
21
14
  if (splitName.length > 1 &&
22
- extensions_1.FOLDER_DOT_EXTENSIONS.indexOf(splitName[1]) === -1) {
15
+ FOLDER_DOT_EXTENSIONS.indexOf(splitName[1]) === -1) {
23
16
  return false;
24
17
  }
25
18
  return true;
@@ -1,37 +1,26 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getMaxFieldsDepth = getMaxFieldsDepth;
7
- exports.findFieldsJsonPath = findFieldsJsonPath;
8
- exports.combineThemeCss = combineThemeCss;
9
- exports.setPreviewSelectors = setPreviewSelectors;
10
- exports.generateInheritedSelectors = generateInheritedSelectors;
11
- exports.generateSelectorsMap = generateSelectorsMap;
12
- const fs_1 = __importDefault(require("fs"));
13
- const exitCodes_1 = require("./enums/exitCodes");
14
- const en_1 = require("../lang/en");
15
- const logger_1 = require("./ui/logger");
1
+ import fs from 'fs';
2
+ import { EXIT_CODES } from './enums/exitCodes.js';
3
+ import { commands } from '../lang/en.js';
4
+ import { uiLogger } from './ui/logger.js';
16
5
  const CSS_COMMENTS_REGEX = new RegExp(/\/\*.*\*\//, 'g');
17
6
  const CSS_PSEUDO_CLASS_REGEX = new RegExp(/:active|:checked|:disabled|:empty|:enabled|:first-of-type|:focus|:hover|:in-range|:invalid|:link|:optional|:out-of-range|:read-only|:read-write|:required|:target|:valid|:visited/, 'g');
18
7
  let maxFieldsDepth = 0;
19
- function getMaxFieldsDepth() {
8
+ export function getMaxFieldsDepth() {
20
9
  return maxFieldsDepth;
21
10
  }
22
- function findFieldsJsonPath(basePath) {
11
+ export function findFieldsJsonPath(basePath) {
23
12
  const _path = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
24
- if (!fs_1.default.existsSync(_path)) {
25
- logger_1.uiLogger.error(en_1.commands.theme.subcommands.generateSelectors.errors.invalidPath(basePath));
26
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
13
+ if (!fs.existsSync(_path)) {
14
+ uiLogger.error(commands.theme.subcommands.generateSelectors.errors.invalidPath(basePath));
15
+ process.exit(EXIT_CODES.ERROR);
27
16
  }
28
- const files = fs_1.default.readdirSync(_path);
17
+ const files = fs.readdirSync(_path);
29
18
  if (files.includes('fields.json')) {
30
19
  return `${_path}/fields.json`;
31
20
  }
32
21
  for (let i = 0; i < files.length; i++) {
33
22
  const fileName = files[i];
34
- const isDirectory = fs_1.default.lstatSync(`${_path}/${fileName}`).isDirectory();
23
+ const isDirectory = fs.lstatSync(`${_path}/${fileName}`).isDirectory();
35
24
  if (isDirectory && !fileName.includes('.module')) {
36
25
  const fieldsJsonPath = findFieldsJsonPath(`${_path}/${fileName}`);
37
26
  if (fieldsJsonPath)
@@ -40,22 +29,22 @@ function findFieldsJsonPath(basePath) {
40
29
  }
41
30
  return null;
42
31
  }
43
- function combineThemeCss(basePath, cssString = '') {
32
+ export function combineThemeCss(basePath, cssString = '') {
44
33
  const _path = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
45
- const isDirectory = fs_1.default.lstatSync(_path).isDirectory();
34
+ const isDirectory = fs.lstatSync(_path).isDirectory();
46
35
  if (isDirectory) {
47
- const filesList = fs_1.default.readdirSync(_path);
36
+ const filesList = fs.readdirSync(_path);
48
37
  return filesList.reduce((css, fileName) => {
49
38
  const newCss = combineThemeCss(`${_path}/${fileName}`);
50
39
  return newCss ? `${css}\n${newCss}` : css;
51
40
  }, cssString);
52
41
  }
53
42
  else if (_path.includes('.css') && !_path.includes('.module')) {
54
- return `${cssString}\n${fs_1.default.readFileSync(_path, 'utf8')}`;
43
+ return `${cssString}\n${fs.readFileSync(_path, 'utf8')}`;
55
44
  }
56
45
  return null;
57
46
  }
58
- function setPreviewSelectors(fields, fieldPath, selectors, depth = 0) {
47
+ export function setPreviewSelectors(fields, fieldPath, selectors, depth = 0) {
59
48
  fields.forEach((field, index) => {
60
49
  if (field.name === fieldPath[0]) {
61
50
  if (field.children && fieldPath.length > 0) {
@@ -81,7 +70,7 @@ function setPreviewSelectors(fields, fieldPath, selectors, depth = 0) {
81
70
  });
82
71
  return fields;
83
72
  }
84
- function generateInheritedSelectors(fields) {
73
+ export function generateInheritedSelectors(fields) {
85
74
  let finalFieldsJson = [...fields];
86
75
  function _generateInheritedSelectors(fieldsToCheck) {
87
76
  fieldsToCheck.forEach(field => {
@@ -103,7 +92,7 @@ function generateInheritedSelectors(fields) {
103
92
  _generateInheritedSelectors(fields);
104
93
  return finalFieldsJson;
105
94
  }
106
- function generateSelectorsMap(fields, fieldKey = []) {
95
+ export function generateSelectorsMap(fields, fieldKey = []) {
107
96
  let selectorsMap = {};
108
97
  fields.forEach(field => {
109
98
  const { children, name, selectors } = field;
@@ -1,3 +1,3 @@
1
- import { FEATURES } from './constants';
1
+ import { FEATURES } from './constants.js';
2
2
  import { ValueOf } from '@hubspot/local-dev-lib/types/Utils';
3
3
  export declare function hasFeature(accountId: number, feature: ValueOf<typeof FEATURES>): Promise<boolean>;
package/lib/hasFeature.js CHANGED
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasFeature = hasFeature;
4
- const localDevAuth_1 = require("@hubspot/local-dev-lib/api/localDevAuth");
5
- async function hasFeature(accountId, feature) {
6
- const { data: { enabledFeatures }, } = await (0, localDevAuth_1.fetchEnabledFeatures)(accountId);
1
+ import { fetchEnabledFeatures } from '@hubspot/local-dev-lib/api/localDevAuth';
2
+ export async function hasFeature(accountId, feature) {
3
+ const { data: { enabledFeatures }, } = await fetchEnabledFeatures(accountId);
7
4
  return Boolean(enabledFeatures[feature]);
8
5
  }