@hubspot/cli 7.10.0-beta.2 → 7.10.0-experimental.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/bin/cli.js +5 -4
  2. package/commands/__tests__/getStarted.test.js +10 -0
  3. package/commands/__tests__/project.test.js +3 -0
  4. package/commands/account/__tests__/rename.test.js +10 -3
  5. package/commands/account/auth.js +10 -14
  6. package/commands/account/clean.js +11 -19
  7. package/commands/account/createOverride.js +15 -11
  8. package/commands/account/info.js +8 -5
  9. package/commands/account/list.js +15 -19
  10. package/commands/account/remove.js +23 -22
  11. package/commands/account/removeOverride.js +6 -6
  12. package/commands/account/rename.js +2 -2
  13. package/commands/account/use.js +19 -8
  14. package/commands/app/__tests__/migrate.test.js +8 -4
  15. package/commands/app/migrate.js +2 -2
  16. package/commands/auth.js +18 -14
  17. package/commands/config/migrate.js +5 -5
  18. package/commands/customObject/createSchema.js +2 -3
  19. package/commands/customObject/updateSchema.js +2 -3
  20. package/commands/getStarted.js +2 -3
  21. package/commands/hubdb/__tests__/list.test.js +1 -0
  22. package/commands/hubdb/list.js +2 -2
  23. package/commands/init.js +36 -32
  24. package/commands/project/__tests__/deploy.test.js +10 -5
  25. package/commands/project/__tests__/devUnifiedFlow.test.js +6 -4
  26. package/commands/project/__tests__/lint.test.js +709 -0
  27. package/commands/project/__tests__/logs.test.js +4 -0
  28. package/commands/project/__tests__/validate.test.js +2 -2
  29. package/commands/project/cloneApp.js +2 -2
  30. package/commands/project/deploy.js +2 -2
  31. package/commands/project/dev/deprecatedFlow.js +4 -5
  32. package/commands/project/dev/index.js +6 -3
  33. package/commands/project/dev/unifiedFlow.js +4 -5
  34. package/commands/project/lint.d.ts +6 -0
  35. package/commands/project/lint.js +178 -0
  36. package/commands/project/logs.js +2 -3
  37. package/commands/project/profile/add.js +6 -7
  38. package/commands/project/profile/delete.js +2 -2
  39. package/commands/project/upload.js +2 -2
  40. package/commands/project/validate.js +2 -2
  41. package/commands/project.js +2 -0
  42. package/commands/sandbox/__tests__/create.test.js +14 -5
  43. package/commands/sandbox/create.js +4 -5
  44. package/commands/sandbox/delete.js +23 -20
  45. package/commands/testAccount/create.js +2 -2
  46. package/commands/testAccount/delete.js +9 -8
  47. package/lang/en.d.ts +40 -6
  48. package/lang/en.js +49 -9
  49. package/lib/__tests__/buildAccount.test.js +22 -30
  50. package/lib/__tests__/commonOpts.test.js +9 -13
  51. package/lib/__tests__/developerTestAccounts.test.js +29 -17
  52. package/lib/__tests__/importData.test.js +20 -10
  53. package/lib/__tests__/oauth.test.js +19 -8
  54. package/lib/__tests__/sandboxSync.test.js +33 -11
  55. package/lib/__tests__/sandboxes.test.js +30 -19
  56. package/lib/__tests__/usageTracking.test.js +10 -10
  57. package/lib/__tests__/validation.test.js +32 -32
  58. package/lib/accountTypes.d.ts +9 -9
  59. package/lib/accountTypes.js +2 -4
  60. package/lib/app/__tests__/migrate.test.js +15 -0
  61. package/lib/app/__tests__/migrate_legacy.test.js +9 -0
  62. package/lib/app/migrate_legacy.d.ts +2 -2
  63. package/lib/buildAccount.d.ts +4 -4
  64. package/lib/buildAccount.js +7 -14
  65. package/lib/commonOpts.js +3 -3
  66. package/lib/configMigrate.d.ts +2 -2
  67. package/lib/configMigrate.js +42 -18
  68. package/lib/configOptions.js +3 -2
  69. package/lib/developerTestAccounts.d.ts +3 -3
  70. package/lib/developerTestAccounts.js +4 -7
  71. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  72. package/lib/doctor/DiagnosticInfoBuilder.js +9 -6
  73. package/lib/doctor/Doctor.js +4 -3
  74. package/lib/doctor/__tests__/Diagnosis.test.js +4 -3
  75. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +17 -9
  76. package/lib/doctor/__tests__/Doctor.test.js +14 -0
  77. package/lib/importData.js +8 -7
  78. package/lib/links.js +5 -5
  79. package/lib/middleware/{__test__ → __tests__}/commandTargetingUtils.test.js +3 -3
  80. package/lib/middleware/{__test__ → __tests__}/configMiddleware.test.js +23 -22
  81. package/lib/middleware/{__test__ → __tests__}/gitMiddleware.test.js +9 -7
  82. package/lib/middleware/autoUpdateMiddleware.js +12 -4
  83. package/lib/middleware/commandTargetingUtils.js +3 -2
  84. package/lib/middleware/configMiddleware.d.ts +6 -1
  85. package/lib/middleware/configMiddleware.js +36 -15
  86. package/lib/middleware/gitMiddleware.js +8 -4
  87. package/lib/oauth.d.ts +2 -2
  88. package/lib/oauth.js +8 -10
  89. package/lib/projects/__tests__/AppDevModeInterface.test.js +17 -6
  90. package/lib/projects/__tests__/DevServerManager.test.js +1 -0
  91. package/lib/projects/__tests__/LocalDevProcess.test.js +1 -0
  92. package/lib/projects/__tests__/deploy.test.js +1 -0
  93. package/lib/projects/__tests__/uieLinting.test.js +640 -0
  94. package/lib/projects/create/__tests__/v2.test.js +11 -0
  95. package/lib/projects/localDev/AppDevModeInterface.js +2 -2
  96. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
  97. package/lib/projects/localDev/DevSessionManager.d.ts +17 -0
  98. package/lib/projects/localDev/DevSessionManager.js +56 -0
  99. package/lib/projects/localDev/LocalDevLogger.d.ts +3 -0
  100. package/lib/projects/localDev/LocalDevLogger.js +13 -4
  101. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +3 -3
  102. package/lib/projects/localDev/LocalDevProcess.d.ts +1 -0
  103. package/lib/projects/localDev/LocalDevProcess.js +12 -1
  104. package/lib/projects/localDev/LocalDevState.d.ts +3 -0
  105. package/lib/projects/localDev/LocalDevState.js +9 -0
  106. package/lib/projects/localDev/helpers/account.d.ts +10 -10
  107. package/lib/projects/localDev/helpers/account.js +6 -11
  108. package/lib/projects/localDev/helpers/devSessionsApi.d.ts +9 -0
  109. package/lib/projects/localDev/helpers/devSessionsApi.js +19 -0
  110. package/lib/projects/uieLinting.d.ts +33 -0
  111. package/lib/projects/uieLinting.js +222 -0
  112. package/lib/projects/urls.js +5 -6
  113. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +7 -5
  114. package/lib/prompts/accountNamePrompt.js +3 -3
  115. package/lib/prompts/accountsPrompt.d.ts +1 -1
  116. package/lib/prompts/accountsPrompt.js +6 -7
  117. package/lib/prompts/confirmImportDataPrompt.js +2 -2
  118. package/lib/prompts/downloadProjectPrompt.d.ts +1 -0
  119. package/lib/prompts/downloadProjectPrompt.js +5 -2
  120. package/lib/prompts/importDataTestAccountSelectPrompt.js +4 -5
  121. package/lib/prompts/personalAccessKeyPrompt.js +2 -2
  122. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +3 -3
  123. package/lib/prompts/projectDevTargetAccountPrompt.js +5 -7
  124. package/lib/prompts/sandboxesPrompt.js +7 -8
  125. package/lib/prompts/setAsDefaultAccountPrompt.js +7 -6
  126. package/lib/sandboxSync.d.ts +2 -2
  127. package/lib/sandboxSync.js +3 -9
  128. package/lib/sandboxes.d.ts +4 -4
  129. package/lib/sandboxes.js +6 -11
  130. package/lib/serverlessLogs.js +2 -2
  131. package/lib/theme/__tests__/migrate.test.js +15 -0
  132. package/lib/ui/index.js +6 -3
  133. package/lib/usageTracking.js +15 -8
  134. package/lib/validation.js +13 -11
  135. package/mcp-server/tools/cms/HsCreateFunctionTool.js +4 -2
  136. package/mcp-server/tools/cms/HsCreateModuleTool.js +4 -2
  137. package/mcp-server/tools/cms/HsCreateTemplateTool.js +4 -2
  138. package/mcp-server/tools/cms/HsFunctionLogsTool.js +4 -2
  139. package/mcp-server/tools/cms/HsListFunctionsTool.js +3 -1
  140. package/mcp-server/tools/cms/HsListTool.js +3 -1
  141. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +1 -0
  142. package/mcp-server/tools/index.js +4 -0
  143. package/mcp-server/tools/project/AddFeatureToProjectTool.js +4 -2
  144. package/mcp-server/tools/project/CreateProjectTool.js +4 -2
  145. package/mcp-server/tools/project/CreateTestAccountTool.js +17 -7
  146. package/mcp-server/tools/project/DeployProjectTool.js +3 -1
  147. package/mcp-server/tools/project/DocFetchTool.js +6 -4
  148. package/mcp-server/tools/project/DocsSearchTool.d.ts +1 -1
  149. package/mcp-server/tools/project/DocsSearchTool.js +10 -8
  150. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +1 -1
  151. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +9 -7
  152. package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
  153. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +26 -0
  154. package/mcp-server/tools/project/GetBuildLogsTool.js +125 -0
  155. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +26 -0
  156. package/mcp-server/tools/project/GetBuildStatusTool.js +166 -0
  157. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +1 -1
  158. package/mcp-server/tools/project/GetConfigValuesTool.js +9 -7
  159. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
  160. package/mcp-server/tools/project/GuidedWalkthroughTool.js +5 -3
  161. package/mcp-server/tools/project/UploadProjectTools.js +3 -1
  162. package/mcp-server/tools/project/ValidateProjectTool.js +4 -2
  163. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +12 -2
  164. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +5 -1
  165. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +23 -11
  166. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +7 -5
  167. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +7 -5
  168. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +1 -0
  169. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +305 -0
  170. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +1 -0
  171. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +240 -0
  172. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +8 -6
  173. package/mcp-server/utils/__tests__/content.test.js +21 -20
  174. package/mcp-server/utils/__tests__/feedbackTracking.test.js +34 -28
  175. package/mcp-server/utils/config.d.ts +1 -0
  176. package/mcp-server/utils/config.js +10 -0
  177. package/mcp-server/utils/content.d.ts +1 -1
  178. package/mcp-server/utils/content.js +2 -2
  179. package/mcp-server/utils/feedbackTracking.d.ts +1 -1
  180. package/mcp-server/utils/feedbackTracking.js +3 -3
  181. package/mcp-server/utils/toolUsageTracking.js +4 -3
  182. package/package.json +8 -7
  183. package/types/LocalDev.d.ts +1 -0
  184. package/lib/middleware/__test__/notificationsMiddleware.test.js +0 -8
  185. package/lib/middleware/notificationsMiddleware.d.ts +0 -1
  186. package/lib/middleware/notificationsMiddleware.js +0 -28
  187. package/mcp-server/utils/__tests__/cliConfig.test.js +0 -110
  188. package/mcp-server/utils/cliConfig.d.ts +0 -1
  189. package/mcp-server/utils/cliConfig.js +0 -12
  190. /package/{lib/middleware/__test__/commandTargetingUtils.test.d.ts → commands/project/__tests__/lint.test.d.ts} +0 -0
  191. /package/lib/middleware/{__test__/configMiddleware.test.d.ts → __tests__/commandTargetingUtils.test.d.ts} +0 -0
  192. /package/lib/middleware/{__test__/gitMiddleware.test.d.ts → __tests__/configMiddleware.test.d.ts} +0 -0
  193. /package/lib/middleware/{__test__/notificationsMiddleware.test.d.ts → __tests__/gitMiddleware.test.d.ts} +0 -0
  194. /package/lib/middleware/{__test__ → __tests__}/requestMiddleware.test.d.ts +0 -0
  195. /package/lib/middleware/{__test__ → __tests__}/requestMiddleware.test.js +0 -0
  196. /package/lib/middleware/{__test__ → __tests__}/yargsChecksMiddleware.test.d.ts +0 -0
  197. /package/lib/middleware/{__test__ → __tests__}/yargsChecksMiddleware.test.js +0 -0
  198. /package/{mcp-server/utils/__tests__/cliConfig.test.d.ts → lib/projects/__tests__/uieLinting.test.d.ts} +0 -0
@@ -1,15 +1,19 @@
1
- import { getConfigPath, configFileExists } from '@hubspot/local-dev-lib/config';
1
+ import { getConfigFilePath, globalConfigFileExists, } from '@hubspot/local-dev-lib/config';
2
2
  import { checkAndWarnGitInclusion } from '../ui/git.js';
3
+ import { debugError } from '../errorHandlers/index.js';
3
4
  export function checkAndWarnGitInclusionMiddleware(argv) {
4
5
  // Skip this when no command is provided
5
6
  if (argv._.length) {
6
7
  // Skip if using global config
7
- if (configFileExists(true)) {
8
+ if (globalConfigFileExists()) {
8
9
  return;
9
10
  }
10
- const configPath = getConfigPath();
11
- if (configPath) {
11
+ try {
12
+ const configPath = getConfigFilePath();
12
13
  checkAndWarnGitInclusion(configPath);
13
14
  }
15
+ catch (error) {
16
+ debugError(error);
17
+ }
14
18
  }
15
19
  }
package/lib/oauth.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { OAuth2ManagerAccountConfig } from '@hubspot/local-dev-lib/types/Accounts';
2
- export declare function authenticateWithOauth(accountConfig: OAuth2ManagerAccountConfig): Promise<void>;
1
+ import { OAuthConfigAccount } from '@hubspot/local-dev-lib/types/Accounts';
2
+ export declare function authenticateWithOauth(accountConfig: OAuthConfigAccount): Promise<void>;
package/lib/oauth.js CHANGED
@@ -1,8 +1,7 @@
1
1
  import express from 'express';
2
2
  import open from 'open';
3
3
  import { OAuth2Manager } from '@hubspot/local-dev-lib/models/OAuth2Manager';
4
- import { getAccountConfig } from '@hubspot/local-dev-lib/config';
5
- import { getAccountIdentifier } from '@hubspot/local-dev-lib/config/getAccountIdentifier';
4
+ import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
6
5
  import { addOauthToAccountConfig } from '@hubspot/local-dev-lib/oauth';
7
6
  import { getHubSpotWebsiteOrigin } from '@hubspot/local-dev-lib/urls';
8
7
  import { uiLogger } from './ui/logger.js';
@@ -14,15 +13,15 @@ import { EXIT_CODES } from './enums/exitCodes.js';
14
13
  const PORT = 3000;
15
14
  const redirectUri = `http://localhost:${PORT}/oauth-callback`;
16
15
  function buildAuthUrl(oauthManager) {
17
- const { env: accountEnv, clientId, scopes: accountScopes, } = oauthManager.account;
16
+ const { env: accountEnv, auth } = oauthManager.account;
18
17
  const env = accountEnv || ENVIRONMENTS.PROD;
19
- const scopes = accountScopes || DEFAULT_OAUTH_SCOPES;
20
- if (!clientId) {
18
+ const scopes = auth.scopes.length > 0 ? auth.scopes : DEFAULT_OAUTH_SCOPES;
19
+ if (!auth.clientId) {
21
20
  uiLogger.error(lib.oauth.missingClientId);
22
21
  process.exit(EXIT_CODES.ERROR);
23
22
  }
24
23
  return (`${getHubSpotWebsiteOrigin(env)}/oauth/${oauthManager.account.accountId}/authorize` +
25
- `?client_id=${encodeURIComponent(clientId)}` + // app's client ID
24
+ `?client_id=${encodeURIComponent(auth.clientId)}` + // app's client ID
26
25
  `&scope=${encodeURIComponent(scopes.join(' '))}` + // scopes being requested by the app
27
26
  `&redirect_uri=${encodeURIComponent(redirectUri)}` // where to send the user after the consent page
28
27
  );
@@ -45,8 +44,8 @@ async function authorize(oauthManager) {
45
44
  if (req.query.code) {
46
45
  const authCodeProof = {
47
46
  grant_type: 'authorization_code',
48
- client_id: oauthManager.account.clientId,
49
- client_secret: oauthManager.account.clientSecret,
47
+ client_id: oauthManager.account.auth.clientId,
48
+ client_secret: oauthManager.account.auth.clientSecret,
50
49
  redirect_uri: redirectUri,
51
50
  code: req.query.code,
52
51
  };
@@ -82,8 +81,7 @@ async function authorize(oauthManager) {
82
81
  });
83
82
  }
84
83
  function setupOauth(accountConfig) {
85
- const accountId = getAccountIdentifier(accountConfig);
86
- const config = getAccountConfig(accountId);
84
+ const config = getConfigAccountById(accountConfig.accountId);
87
85
  return new OAuth2Manager({
88
86
  ...accountConfig,
89
87
  env: accountConfig.env || config?.env || ENVIRONMENTS.PROD,
@@ -12,7 +12,7 @@ vi.mock('@hubspot/ui-extensions-dev-server', () => {
12
12
  });
13
13
  import { fetchAppInstallationData } from '@hubspot/local-dev-lib/api/localDevAuth';
14
14
  import { fetchAppMetadataByUid, fetchPublicAppProductionInstallCounts, installStaticAuthAppOnTestAccount, } from '@hubspot/local-dev-lib/api/appsDev';
15
- import { getAccountConfig } from '@hubspot/local-dev-lib/config';
15
+ import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
16
16
  import AppDevModeInterface from '../localDev/AppDevModeInterface.js';
17
17
  import LocalDevState from '../localDev/LocalDevState.js';
18
18
  import LocalDevLogger from '../localDev/LocalDevLogger.js';
@@ -121,7 +121,7 @@ describe('AppDevModeInterface', () => {
121
121
  previouslyAuthorizedScopeGroups: [],
122
122
  },
123
123
  });
124
- getAccountConfig.mockReturnValue({
124
+ getConfigAccountById.mockReturnValue({
125
125
  parentAccountId: 12345,
126
126
  });
127
127
  isDeveloperTestAccount.mockReturnValue(true);
@@ -290,13 +290,14 @@ describe('AppDevModeInterface', () => {
290
290
  });
291
291
  it('should handle app reinstallation', async () => {
292
292
  // Set up conditions for non-automatic installation
293
- getAccountConfig.mockReturnValue(null);
294
293
  fetchAppInstallationData.mockResolvedValue({
295
294
  data: {
296
295
  isInstalledWithScopeGroups: false,
297
296
  previouslyAuthorizedScopeGroups: ['old-scope'],
298
297
  },
299
298
  });
299
+ // Make it not automatically installable by making it not a test account
300
+ isDeveloperTestAccount.mockReturnValue(false);
300
301
  await appDevModeInterface.setup();
301
302
  expect(installAppBrowserPrompt).toHaveBeenCalledWith('http://static-install-url', true);
302
303
  });
@@ -308,7 +309,7 @@ describe('AppDevModeInterface', () => {
308
309
  });
309
310
  it('should exit if user declines auto-install', async () => {
310
311
  // Set up conditions for automatic installation
311
- getAccountConfig.mockReturnValue({
312
+ getConfigAccountById.mockReturnValue({
312
313
  parentAccountId: 12345, // matches targetProjectAccountId
313
314
  });
314
315
  isDeveloperTestAccount.mockReturnValue(true);
@@ -375,6 +376,15 @@ describe('AppDevModeInterface', () => {
375
376
  data: { uniquePortalInstallCount: 5 },
376
377
  });
377
378
  getStaticAuthAppInstallUrl.mockReturnValue('http://static-install-url');
379
+ getConfigAccountById.mockReturnValue({
380
+ parentAccountId: 12345,
381
+ });
382
+ isDeveloperTestAccount.mockReturnValue(true);
383
+ isSandbox.mockReturnValue(false);
384
+ installAppAutoPrompt.mockResolvedValue(true);
385
+ confirmPrompt.mockResolvedValue(true);
386
+ installStaticAuthAppOnTestAccount.mockResolvedValue(undefined);
387
+ isServerRunningAtUrl.mockResolvedValue(true);
378
388
  installAppBrowserPrompt.mockImplementation(async () => {
379
389
  const addListenerCall = mockLocalDevState.addListener.mock.calls.find(call => call[0] === 'devServerMessage');
380
390
  if (addListenerCall) {
@@ -387,8 +397,8 @@ describe('AppDevModeInterface', () => {
387
397
  mockLocalDevState.getAppDataByUid = vi.fn().mockReturnValue(mockAppData);
388
398
  mockLocalDevState.setAppDataForUid = vi.fn();
389
399
  mockLocalDevState.addListener = vi.fn();
390
- // Target account config is missing
391
- getAccountConfig.mockReturnValue(null);
400
+ // Target account config is missing - make it not a test account so isAutomaticallyInstallable returns false
401
+ isDeveloperTestAccount.mockReturnValue(false);
392
402
  // App is not installed
393
403
  fetchAppInstallationData.mockResolvedValue({
394
404
  data: {
@@ -401,6 +411,7 @@ describe('AppDevModeInterface', () => {
401
411
  localDevState: mockLocalDevState,
402
412
  localDevLogger: mockLocalDevLogger,
403
413
  });
414
+ // Remove the spy to see if that's causing the timeout
404
415
  await newAppDevModeInterface.setup();
405
416
  expect(installAppBrowserPrompt).toHaveBeenCalled();
406
417
  });
@@ -28,6 +28,7 @@ vi.mock('@hubspot/local-dev-lib/config', () => ({
28
28
  getAccountId: vi.fn().mockReturnValue(123),
29
29
  hasLocalStateFlag: vi.fn().mockReturnValue(false),
30
30
  getConfigDefaultAccount: vi.fn().mockReturnValue({ accountId: 123 }),
31
+ globalConfigFileExists: vi.fn().mockReturnValue(true),
31
32
  }));
32
33
  vi.mock('@hubspot/local-dev-lib/urls', () => ({
33
34
  getHubSpotApiOrigin: vi.fn().mockReturnValue('https://api.hubspot.com'),
@@ -26,6 +26,7 @@ vi.mock('../deploy');
26
26
  vi.mock('../config');
27
27
  vi.mock('@hubspot/local-dev-lib/api/projects');
28
28
  vi.mock('@hubspot/local-dev-lib/errors/index');
29
+ vi.mock('@hubspot/local-dev-lib/config');
29
30
  vi.mock('../localDev/LocalDevLogger');
30
31
  vi.mock('../localDev/DevServerManager');
31
32
  // Tests for LocalDevProcess and LocalDevState
@@ -8,6 +8,7 @@ import { pollDeployStatus } from '../pollProjectBuildAndDeploy.js';
8
8
  // Mock external dependencies
9
9
  vi.mock('../../ui/logger.js');
10
10
  vi.mock('@hubspot/local-dev-lib/api/projects');
11
+ vi.mock('@hubspot/local-dev-lib/config');
11
12
  vi.mock('../pollProjectBuildAndDeploy.js');
12
13
  const mockUiLogger = vi.mocked(uiLogger);
13
14
  const mockDeployProject = vi.mocked(deployProject);