@hubspot/cli 5.0.2 → 5.0.3-beta.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 (53) hide show
  1. package/commands/accounts/clean.js +1 -2
  2. package/commands/accounts/info.js +1 -1
  3. package/commands/accounts/list.js +1 -1
  4. package/commands/accounts/remove.js +1 -1
  5. package/commands/accounts/rename.js +1 -1
  6. package/commands/auth.js +3 -2
  7. package/commands/cms/convertFields.js +1 -1
  8. package/commands/config/set/allowUsageTracking.js +1 -1
  9. package/commands/config/set/defaultMode.js +1 -1
  10. package/commands/config/set/httpTimeout.js +1 -1
  11. package/commands/customObject/schema/create.js +4 -1
  12. package/commands/customObject/schema/fetch.js +1 -1
  13. package/commands/customObject/schema/update.js +4 -1
  14. package/commands/filemanager/upload.js +1 -1
  15. package/commands/init.js +1 -1
  16. package/commands/lint.js +1 -1
  17. package/commands/project/add.js +1 -1
  18. package/commands/project/deploy.js +1 -1
  19. package/commands/project/dev.js +10 -4
  20. package/commands/project/logs.js +1 -1
  21. package/commands/project/upload.js +1 -1
  22. package/commands/sandbox/create.js +2 -2
  23. package/commands/sandbox/delete.js +5 -3
  24. package/commands/sandbox/sync.js +2 -2
  25. package/commands/upload.js +1 -1
  26. package/lang/en.lyaml +4 -0
  27. package/lib/DevServerManager.js +14 -0
  28. package/lib/LocalDevManager.js +17 -12
  29. package/lib/__tests__/commonOpts.js +3 -3
  30. package/lib/__tests__/projects.test.js +144 -0
  31. package/lib/__tests__/validation.js +2 -1
  32. package/lib/commonOpts.js +2 -3
  33. package/lib/errorHandlers/apiErrors.js +1 -1
  34. package/lib/links.js +1 -1
  35. package/lib/oauth.js +1 -1
  36. package/lib/process.js +24 -6
  37. package/lib/projects.js +21 -6
  38. package/lib/projectsWatch.js +1 -1
  39. package/lib/prompts/accountsPrompt.js +1 -1
  40. package/lib/prompts/downloadProjectPrompt.js +1 -1
  41. package/lib/prompts/enterAccountNamePrompt.js +1 -1
  42. package/lib/prompts/personalAccessKeyPrompt.js +1 -1
  43. package/lib/prompts/projectDevTargetAccountPrompt.js +1 -1
  44. package/lib/prompts/sandboxesPrompt.js +1 -1
  45. package/lib/prompts/setAsDefaultAccountPrompt.js +1 -1
  46. package/lib/sandbox-create.js +2 -2
  47. package/lib/sandbox-sync.js +1 -1
  48. package/lib/sandboxes.js +7 -7
  49. package/lib/ui.js +1 -1
  50. package/lib/upload.js +1 -1
  51. package/lib/usageTracking.js +4 -2
  52. package/lib/validation.js +8 -9
  53. package/package.json +5 -5
@@ -2,7 +2,6 @@ const { logger } = require('@hubspot/cli-lib/logger');
2
2
  const {
3
3
  accessTokenForPersonalAccessKey,
4
4
  } = require('@hubspot/cli-lib/personalAccessKey');
5
- const { getConfig } = require('@hubspot/cli-lib');
6
5
 
7
6
  const { trackCommandUsage } = require('../../lib/usageTracking');
8
7
  const { i18n } = require('../../lib/lang');
@@ -18,7 +17,7 @@ const { getAccountName } = require('../../lib/sandboxes');
18
17
  const { promptUser } = require('../../lib/prompts/promptUtils');
19
18
  const { getTableContents } = require('@hubspot/cli-lib/lib/table');
20
19
  const SpinniesManager = require('../../lib/SpinniesManager');
21
- const { deleteAccount } = require('@hubspot/cli-lib/lib/config');
20
+ const { getConfig, deleteAccount } = require('@hubspot/local-dev-lib/config');
22
21
  const {
23
22
  isSpecifiedHubSpotAuthError,
24
23
  } = require('../../lib/errorHandlers/apiErrors');
@@ -1,5 +1,5 @@
1
1
  const { logger } = require('@hubspot/cli-lib/logger');
2
- const { getAccountConfig } = require('@hubspot/cli-lib/lib/config');
2
+ const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
3
3
  const { getAccessToken } = require('@hubspot/cli-lib/personalAccessKey.js');
4
4
  const {
5
5
  getAccountId,
@@ -1,5 +1,5 @@
1
1
  const { logger } = require('@hubspot/cli-lib/logger');
2
- const { getConfig, getConfigPath } = require('@hubspot/cli-lib/lib/config');
2
+ const { getConfig, getConfigPath } = require('@hubspot/local-dev-lib/config');
3
3
  const {
4
4
  getTableContents,
5
5
  getTableHeader,
@@ -6,7 +6,7 @@ const {
6
6
  getConfigDefaultAccount,
7
7
  getAccountId: getAccountIdFromConfig,
8
8
  updateDefaultAccount,
9
- } = require('@hubspot/cli-lib/lib/config');
9
+ } = require('@hubspot/local-dev-lib/config');
10
10
 
11
11
  const { trackCommandUsage } = require('../../lib/usageTracking');
12
12
  const { i18n } = require('../../lib/lang');
@@ -1,5 +1,5 @@
1
1
  const { logger } = require('@hubspot/cli-lib/logger');
2
- const { renameAccount } = require('@hubspot/cli-lib/lib/config');
2
+ const { renameAccount } = require('@hubspot/local-dev-lib/config');
3
3
 
4
4
  const {
5
5
  addConfigOptions,
package/commands/auth.js CHANGED
@@ -1,4 +1,4 @@
1
- const { loadConfig, checkAndWarnGitInclusion } = require('@hubspot/cli-lib');
1
+ const { checkAndWarnGitInclusion } = require('@hubspot/cli-lib');
2
2
  const { logger } = require('@hubspot/cli-lib/logger');
3
3
  const {
4
4
  OAUTH_AUTH_METHOD,
@@ -15,7 +15,8 @@ const {
15
15
  writeConfig,
16
16
  getConfig,
17
17
  getConfigPath,
18
- } = require('@hubspot/cli-lib/lib/config');
18
+ loadConfig,
19
+ } = require('@hubspot/local-dev-lib/config');
19
20
  const { commaSeparatedValues } = require('@hubspot/local-dev-lib/text');
20
21
  const { promptUser } = require('../lib/prompts/promptUtils');
21
22
  const {
@@ -1,6 +1,6 @@
1
1
  const path = require('path');
2
2
  const fs = require('fs');
3
- const { createIgnoreFilter } = require('@hubspot/cli-lib/ignoreRules');
3
+ const { createIgnoreFilter } = require('@hubspot/local-dev-lib/ignoreRules');
4
4
  const { isAllowedExtension, getCwd } = require('@hubspot/cli-lib/path');
5
5
  const { logger } = require('@hubspot/cli-lib/logger');
6
6
  const { walk } = require('@hubspot/cli-lib/lib/walk');
@@ -1,5 +1,5 @@
1
1
  const { logger } = require('@hubspot/cli-lib/logger');
2
- const { updateAllowUsageTracking } = require('@hubspot/cli-lib/lib/config');
2
+ const { updateAllowUsageTracking } = require('@hubspot/local-dev-lib/config');
3
3
  const { trackCommandUsage } = require('../../../lib/usageTracking');
4
4
  const { promptUser } = require('../../../lib/prompts/promptUtils');
5
5
  const { i18n } = require('../../../lib/lang');
@@ -1,5 +1,5 @@
1
1
  const { logger } = require('@hubspot/cli-lib/logger');
2
- const { updateDefaultMode } = require('@hubspot/cli-lib/lib/config');
2
+ const { updateDefaultMode } = require('@hubspot/local-dev-lib/config');
3
3
  const { Mode } = require('@hubspot/cli-lib');
4
4
  const { commaSeparatedValues } = require('@hubspot/local-dev-lib/text');
5
5
  const { trackCommandUsage } = require('../../../lib/usageTracking');
@@ -1,5 +1,5 @@
1
1
  const { logger } = require('@hubspot/cli-lib/logger');
2
- const { updateHttpTimeout } = require('@hubspot/cli-lib/lib/config');
2
+ const { updateHttpTimeout } = require('@hubspot/local-dev-lib/config');
3
3
  const { promptUser } = require('../../../lib/prompts/promptUtils');
4
4
  const { trackCommandUsage } = require('../../../lib/usageTracking');
5
5
  const { i18n } = require('../../../lib/lang');
@@ -9,7 +9,10 @@ const {
9
9
  } = require('../../../lib/validation');
10
10
  const { trackCommandUsage } = require('../../../lib/usageTracking');
11
11
  const { addTestingOptions, getAccountId } = require('../../../lib/commonOpts');
12
- const { getEnv, isConfigFlagEnabled } = require('@hubspot/cli-lib/');
12
+ const {
13
+ getEnv,
14
+ isConfigFlagEnabled,
15
+ } = require('@hubspot/local-dev-lib/config');
13
16
  const { ENVIRONMENTS, ConfigFlags } = require('@hubspot/cli-lib/lib/constants');
14
17
  const { createSchema } = require('@hubspot/cli-lib/api/schema');
15
18
  const {
@@ -1,5 +1,5 @@
1
1
  const path = require('path');
2
- const { isConfigFlagEnabled } = require('@hubspot/cli-lib');
2
+ const { isConfigFlagEnabled } = require('@hubspot/local-dev-lib/config');
3
3
  const { logger } = require('@hubspot/cli-lib/logger');
4
4
  const {
5
5
  logErrorInstance,
@@ -10,7 +10,10 @@ const {
10
10
  const { trackCommandUsage } = require('../../../lib/usageTracking');
11
11
  const { addTestingOptions, getAccountId } = require('../../../lib/commonOpts');
12
12
  const { ENVIRONMENTS, ConfigFlags } = require('@hubspot/cli-lib/lib/constants');
13
- const { getEnv, isConfigFlagEnabled } = require('@hubspot/cli-lib');
13
+ const {
14
+ getEnv,
15
+ isConfigFlagEnabled,
16
+ } = require('@hubspot/local-dev-lib/config');
14
17
  const { updateSchema } = require('@hubspot/cli-lib/api/schema');
15
18
  const {
16
19
  updateSchema: updateSchemaFromHubFile,
@@ -11,7 +11,7 @@ const {
11
11
  } = require('../../lib/errorHandlers/apiErrors');
12
12
  const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors');
13
13
  const { validateSrcAndDestPaths } = require('@hubspot/cli-lib/modules');
14
- const { shouldIgnoreFile } = require('@hubspot/cli-lib/ignoreRules');
14
+ const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules');
15
15
 
16
16
  const {
17
17
  addConfigOptions,
package/commands/init.js CHANGED
@@ -5,7 +5,7 @@ const {
5
5
  createEmptyConfigFile,
6
6
  deleteEmptyConfigFile,
7
7
  updateDefaultAccount,
8
- } = require('@hubspot/cli-lib/lib/config');
8
+ } = require('@hubspot/local-dev-lib/config');
9
9
  const { addConfigOptions } = require('../lib/commonOpts');
10
10
  const { handleExit } = require('../lib/process');
11
11
  const { checkAndUpdateGitignore } = require('@hubspot/cli-lib/lib/git');
package/commands/lint.js CHANGED
@@ -1,4 +1,4 @@
1
- const { lint } = require('@hubspot/cli-lib/validate');
1
+ const { lint } = require('@hubspot/local-dev-lib/validate');
2
2
  const { printHublValidationResult } = require('../lib/hublValidate');
3
3
  const { logger } = require('@hubspot/cli-lib/logger');
4
4
  const { logErrorInstance } = require('../lib/errorHandlers/standardErrors');
@@ -1,5 +1,5 @@
1
1
  const { logger } = require('@hubspot/cli-lib/logger');
2
- const { getAccountId } = require('@hubspot/cli-lib/lib/config');
2
+ const { getAccountId } = require('@hubspot/local-dev-lib/config');
3
3
  const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors');
4
4
  const { fetchReleaseData } = require('@hubspot/cli-lib/github');
5
5
 
@@ -18,7 +18,7 @@ const { projectNamePrompt } = require('../../lib/prompts/projectNamePrompt');
18
18
  const { buildIdPrompt } = require('../../lib/prompts/buildIdPrompt');
19
19
  const { i18n } = require('../../lib/lang');
20
20
  const { uiBetaTag } = require('../../lib/ui');
21
- const { getAccountConfig } = require('@hubspot/cli-lib');
21
+ const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
22
22
 
23
23
  const i18nKey = 'cli.commands.project.subcommands.deploy';
24
24
  const { EXIT_CODES } = require('../../lib/enums/exitCodes');
@@ -13,7 +13,11 @@ const { loadAndValidateOptions } = require('../../lib/validation');
13
13
  const { handleExit } = require('../../lib/process');
14
14
  const { i18n } = require('../../lib/lang');
15
15
  const { logger } = require('@hubspot/cli-lib/logger');
16
- const { getConfigAccounts } = require('@hubspot/cli-lib/lib/config');
16
+ const {
17
+ getConfigAccounts,
18
+ getAccountConfig,
19
+ getEnv,
20
+ } = require('@hubspot/local-dev-lib/config');
17
21
  const { createProject, fetchProject } = require('@hubspot/cli-lib/api/dfs');
18
22
  const {
19
23
  getProjectConfig,
@@ -21,6 +25,7 @@ const {
21
25
  handleProjectUpload,
22
26
  pollProjectBuildAndDeploy,
23
27
  showPlatformVersionWarning,
28
+ validateProjectConfig,
24
29
  } = require('../../lib/projects');
25
30
  const { EXIT_CODES } = require('../../lib/enums/exitCodes');
26
31
  const {
@@ -37,14 +42,13 @@ const {
37
42
  const SpinniesManager = require('../../lib/SpinniesManager');
38
43
  const LocalDevManager = require('../../lib/LocalDevManager');
39
44
  const { isSandbox } = require('../../lib/sandboxes');
40
- const { getAccountConfig, getEnv } = require('@hubspot/cli-lib');
41
45
  const { sandboxNamePrompt } = require('../../lib/prompts/sandboxesPrompt');
42
46
  const {
43
47
  validateSandboxUsageLimits,
44
48
  DEVELOPER_SANDBOX,
45
49
  getAvailableSyncTypes,
46
50
  } = require('../../lib/sandboxes');
47
- const { getValidEnv } = require('@hubspot/cli-lib/lib/environment');
51
+ const { getValidEnv } = require('@hubspot/local-dev-lib/environment');
48
52
  const {
49
53
  PROJECT_BUILD_TEXT,
50
54
  PROJECT_DEPLOY_TEXT,
@@ -84,6 +88,8 @@ exports.handler = async options => {
84
88
  process.exit(EXIT_CODES.ERROR);
85
89
  }
86
90
 
91
+ validateProjectConfig(projectConfig, projectDir);
92
+
87
93
  const accounts = getConfigAccounts();
88
94
  let targetAccountId = options.account ? accountId : null;
89
95
  let createNewSandbox = false;
@@ -335,7 +341,7 @@ exports.handler = async options => {
335
341
 
336
342
  await LocalDev.start();
337
343
 
338
- handleExit(LocalDev.stop);
344
+ handleExit(({ isSIGHUP }) => LocalDev.stop(!isSIGHUP));
339
345
  };
340
346
 
341
347
  exports.builder = yargs => {
@@ -1,4 +1,4 @@
1
- const { getEnv } = require('@hubspot/cli-lib/lib/config');
1
+ const { getEnv } = require('@hubspot/local-dev-lib/config');
2
2
  const { getHubSpotWebsiteOrigin } = require('@hubspot/cli-lib/lib/urls');
3
3
  const { ENVIRONMENTS } = require('@hubspot/cli-lib/lib/constants');
4
4
  const {
@@ -19,7 +19,7 @@ const {
19
19
  showPlatformVersionWarning,
20
20
  } = require('../../lib/projects');
21
21
  const { i18n } = require('../../lib/lang');
22
- const { getAccountConfig } = require('@hubspot/cli-lib');
22
+ const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
23
23
  const { ERROR_TYPES } = require('@hubspot/cli-lib/lib/constants');
24
24
  const {
25
25
  logApiErrorInstance,
@@ -8,7 +8,7 @@ const {
8
8
  const { loadAndValidateOptions } = require('../../lib/validation');
9
9
  const { i18n } = require('../../lib/lang');
10
10
  const { EXIT_CODES } = require('../../lib/enums/exitCodes');
11
- const { getAccountConfig, getEnv } = require('@hubspot/cli-lib');
11
+ const { getAccountConfig, getEnv } = require('@hubspot/local-dev-lib/config');
12
12
  const { buildSandbox } = require('../../lib/sandbox-create');
13
13
  const { uiFeatureHighlight } = require('../../lib/ui');
14
14
  const {
@@ -20,7 +20,7 @@ const {
20
20
  syncTypes,
21
21
  validateSandboxUsageLimits,
22
22
  } = require('../../lib/sandboxes');
23
- const { getValidEnv } = require('@hubspot/cli-lib/lib/environment');
23
+ const { getValidEnv } = require('@hubspot/local-dev-lib/environment');
24
24
  const { logger } = require('@hubspot/cli-lib/logger');
25
25
  const {
26
26
  trackCommandUsage,
@@ -18,12 +18,14 @@ const {
18
18
  } = require('../../lib/errorHandlers/apiErrors');
19
19
  const { deleteSandbox } = require('@hubspot/cli-lib/sandboxes');
20
20
  const { i18n } = require('../../lib/lang');
21
- const { getConfig, getEnv, getAccountConfig } = require('@hubspot/cli-lib');
22
21
  const { deleteSandboxPrompt } = require('../../lib/prompts/sandboxesPrompt');
23
22
  const {
23
+ getConfig,
24
+ getEnv,
25
+ getAccountConfig,
24
26
  removeSandboxAccountFromConfig,
25
27
  updateDefaultAccount,
26
- } = require('@hubspot/cli-lib/lib/config');
28
+ } = require('@hubspot/local-dev-lib/config');
27
29
  const {
28
30
  selectAndSetAsDefaultAccountPrompt,
29
31
  } = require('../../lib/prompts/accountsPrompt');
@@ -32,7 +34,7 @@ const { promptUser } = require('../../lib/prompts/promptUtils');
32
34
  const { getHubSpotWebsiteOrigin } = require('@hubspot/cli-lib/lib/urls');
33
35
 
34
36
  const { getAccountName } = require('../../lib/sandboxes');
35
- const { getValidEnv } = require('@hubspot/cli-lib/lib/environment');
37
+ const { getValidEnv } = require('@hubspot/local-dev-lib/environment');
36
38
 
37
39
  const i18nKey = 'cli.commands.sandbox.subcommands.delete';
38
40
 
@@ -10,7 +10,7 @@ const { logger } = require('@hubspot/cli-lib/logger');
10
10
  const { loadAndValidateOptions } = require('../../lib/validation');
11
11
  const { i18n } = require('../../lib/lang');
12
12
  const { EXIT_CODES } = require('../../lib/enums/exitCodes');
13
- const { getAccountConfig, getEnv } = require('@hubspot/cli-lib');
13
+ const { getAccountConfig, getEnv } = require('@hubspot/local-dev-lib/config');
14
14
  const { getHubSpotWebsiteOrigin } = require('@hubspot/cli-lib/lib/urls');
15
15
  const { promptUser } = require('../../lib/prompts/promptUtils');
16
16
  const { uiLine } = require('../../lib/ui');
@@ -23,7 +23,7 @@ const {
23
23
  getSyncTypesWithContactRecordsPrompt,
24
24
  } = require('../../lib/sandboxes');
25
25
  const { syncSandbox } = require('../../lib/sandbox-sync');
26
- const { getValidEnv } = require('@hubspot/cli-lib/lib/environment');
26
+ const { getValidEnv } = require('@hubspot/local-dev-lib/environment');
27
27
  const { isSpecifiedError } = require('../../lib/errorHandlers/apiErrors');
28
28
  const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors');
29
29
 
@@ -15,7 +15,7 @@ const {
15
15
  } = require('../lib/errorHandlers/apiErrors');
16
16
  const { logErrorInstance } = require('../lib/errorHandlers/standardErrors');
17
17
  const { validateSrcAndDestPaths } = require('@hubspot/cli-lib/modules');
18
- const { shouldIgnoreFile } = require('@hubspot/cli-lib/ignoreRules');
18
+ const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules');
19
19
 
20
20
  const {
21
21
  addConfigOptions,
package/lang/en.lyaml CHANGED
@@ -885,6 +885,8 @@ en:
885
885
  options:
886
886
  describe: "Options to pass to javascript fields files"
887
887
  lib:
888
+ process:
889
+ exitDebug: "Attempting to gracefully exit. Triggered by {{ signal }}"
888
890
  DevServerManager:
889
891
  portConflict: "The port {{ port }} is already in use."
890
892
  notInitialized: "The Dev Server Manager must be initialized before it is started."
@@ -917,6 +919,8 @@ en:
917
919
  startError: "Failed to start local dev server: {{ message }}"
918
920
  fileChangeError: "Failed to notify local dev server of file change: {{ message }}"
919
921
  projects:
922
+ config:
923
+ srcOutsideProjectDir: "Invalid value for 'srcDir' in {{ projectConfig }}: {{#bold}}srcDir: \"{{ srcDir }}\"{{/bold}}\n\t'srcDir' must be a relative path to a folder under the project root, such as \".\" or \"./src\""
920
924
  uploadProjectFiles:
921
925
  add: "Uploading {{#bold}}{{ projectName }}{{/bold}} project files to {{ accountIdentifier }}"
922
926
  fail: "Failed to upload {{#bold}}{{ projectName }}{{/bold}} project files to {{ accountIdentifier }}"
@@ -4,6 +4,12 @@ const { COMPONENT_TYPES } = require('./projectStructure');
4
4
  const { i18n } = require('./lang');
5
5
  const { promptUser } = require('./prompts/promptUtils');
6
6
  const { DevModeInterface } = require('@hubspot/ui-extensions-dev-server');
7
+ const {
8
+ startPortManagerServer,
9
+ portManagerHasActiveServers,
10
+ stopPortManagerServer,
11
+ requestPorts,
12
+ } = require('@hubspot/local-dev-lib/portManager');
7
13
 
8
14
  const i18nKey = 'cli.lib.DevServerManager';
9
15
 
@@ -61,6 +67,7 @@ class DevServerManager {
61
67
  this.debug = debug;
62
68
  this.componentsByType = this.arrangeComponentsByType(components);
63
69
 
70
+ await startPortManagerServer();
64
71
  await this.iterateDevServers(
65
72
  async (serverInterface, compatibleComponents) => {
66
73
  if (serverInterface.setup) {
@@ -86,6 +93,7 @@ class DevServerManager {
86
93
  debug: this.debug,
87
94
  httpClient,
88
95
  projectConfig,
96
+ requestPorts,
89
97
  });
90
98
  }
91
99
  });
@@ -113,6 +121,12 @@ class DevServerManager {
113
121
  await serverInterface.cleanup();
114
122
  }
115
123
  });
124
+
125
+ const hasActiveServers = await portManagerHasActiveServers();
126
+
127
+ if (!hasActiveServers) {
128
+ await stopPortManagerServer();
129
+ }
116
130
  }
117
131
  }
118
132
  }
@@ -7,7 +7,7 @@ const { logger } = require('@hubspot/cli-lib/logger');
7
7
  const {
8
8
  getAccountId,
9
9
  getConfigDefaultAccount,
10
- } = require('@hubspot/cli-lib/lib/config');
10
+ } = require('@hubspot/local-dev-lib/config');
11
11
  const { PROJECT_CONFIG_FILE } = require('@hubspot/cli-lib/lib/constants');
12
12
  const SpinniesManager = require('./SpinniesManager');
13
13
  const DevServerManager = require('./DevServerManager');
@@ -141,25 +141,30 @@ class LocalDevManager {
141
141
  this.compareLocalProjectToDeployed(runnableComponents);
142
142
  }
143
143
 
144
- async stop() {
145
- SpinniesManager.add('cleanupMessage', {
146
- text: i18n(`${i18nKey}.exitingStart`),
147
- });
148
-
144
+ async stop(showProgress = true) {
145
+ if (showProgress) {
146
+ SpinniesManager.add('cleanupMessage', {
147
+ text: i18n(`${i18nKey}.exitingStart`),
148
+ });
149
+ }
149
150
  await this.stopWatching();
150
151
 
151
152
  const cleanupSucceeded = await this.devServerCleanup();
152
153
 
153
154
  if (!cleanupSucceeded) {
154
- SpinniesManager.fail('cleanupMessage', {
155
- text: i18n(`${i18nKey}.exitingFail`),
156
- });
155
+ if (showProgress) {
156
+ SpinniesManager.fail('cleanupMessage', {
157
+ text: i18n(`${i18nKey}.exitingFail`),
158
+ });
159
+ }
157
160
  process.exit(EXIT_CODES.ERROR);
158
161
  }
159
162
 
160
- SpinniesManager.succeed('cleanupMessage', {
161
- text: i18n(`${i18nKey}.exitingSucceed`),
162
- });
163
+ if (showProgress) {
164
+ SpinniesManager.succeed('cleanupMessage', {
165
+ text: i18n(`${i18nKey}.exitingSucceed`),
166
+ });
167
+ }
163
168
  process.exit(EXIT_CODES.SUCCESS);
164
169
  }
165
170
 
@@ -1,14 +1,14 @@
1
+ const { Mode, DEFAULT_MODE } = require('@hubspot/cli-lib');
1
2
  const {
2
- Mode,
3
- DEFAULT_MODE,
4
3
  getAndLoadConfigIfNeeded,
5
4
  getAccountId,
6
5
  getAccountConfig,
7
6
  loadConfigFromEnvironment,
8
- } = require('@hubspot/cli-lib');
7
+ } = require('@hubspot/local-dev-lib/config');
9
8
  const { getMode } = require('../commonOpts');
10
9
 
11
10
  jest.mock('@hubspot/cli-lib');
11
+ jest.mock('@hubspot/local-dev-lib/config');
12
12
 
13
13
  describe('@hubspot/cli/lib/commonOpts', () => {
14
14
  describe('getMode()', () => {
@@ -0,0 +1,144 @@
1
+ const fs = require('fs');
2
+ const os = require('os');
3
+ const path = require('path');
4
+ const { EXIT_CODES } = require('../enums/exitCodes');
5
+ const projects = require('../projects');
6
+
7
+ describe('@hubspot/cli/lib/projects', () => {
8
+ describe('validateProjectConfig()', () => {
9
+ let realProcess;
10
+ let projectDir;
11
+ let exitMock;
12
+ let errorSpy;
13
+
14
+ beforeAll(() => {
15
+ projectDir = fs.mkdtempSync(path.join(os.tmpdir(), 'projects-'));
16
+ fs.mkdirSync(path.join(projectDir, 'src'));
17
+
18
+ realProcess = process;
19
+ errorSpy = jest.spyOn(console, 'error');
20
+ });
21
+
22
+ beforeEach(() => {
23
+ exitMock = jest.fn();
24
+ global.process = { ...realProcess, exit: exitMock };
25
+ });
26
+
27
+ afterEach(() => {
28
+ errorSpy.mockClear();
29
+ });
30
+
31
+ afterAll(() => {
32
+ global.process = realProcess;
33
+ errorSpy.mockRestore();
34
+ });
35
+
36
+ it('rejects undefined configuration', () => {
37
+ projects.validateProjectConfig(null, projectDir);
38
+
39
+ expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
40
+ expect(errorSpy).toHaveBeenCalledWith(
41
+ expect.stringMatching(/.*config not found.*/)
42
+ );
43
+ });
44
+
45
+ it('rejects configuration with missing name', () => {
46
+ projects.validateProjectConfig({ srcDir: '.' }, projectDir);
47
+
48
+ expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
49
+ expect(errorSpy).toHaveBeenCalledWith(
50
+ expect.stringMatching(/.*missing required fields*/)
51
+ );
52
+ });
53
+
54
+ it('rejects configuration with missing srcDir', () => {
55
+ projects.validateProjectConfig({ name: 'hello' }, projectDir);
56
+
57
+ expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
58
+ expect(errorSpy).toHaveBeenCalledWith(
59
+ expect.stringMatching(/.*missing required fields.*/)
60
+ );
61
+ });
62
+
63
+ describe('rejects configuration with srcDir outside project directory', () => {
64
+ it('for parent directory', () => {
65
+ projects.validateProjectConfig(
66
+ { name: 'hello', srcDir: '..' },
67
+ projectDir
68
+ );
69
+
70
+ expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
71
+ expect(errorSpy).toHaveBeenCalledWith(
72
+ expect.stringContaining('srcDir: ".."')
73
+ );
74
+ });
75
+
76
+ it('for root directory', () => {
77
+ projects.validateProjectConfig(
78
+ { name: 'hello', srcDir: '/' },
79
+ projectDir
80
+ );
81
+
82
+ expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
83
+ expect(errorSpy).toHaveBeenCalledWith(
84
+ expect.stringContaining('srcDir: "/"')
85
+ );
86
+ });
87
+
88
+ it('for complicated directory', () => {
89
+ const srcDir = './src/././../src/../../src';
90
+
91
+ projects.validateProjectConfig({ name: 'hello', srcDir }, projectDir);
92
+
93
+ expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
94
+ expect(errorSpy).toHaveBeenCalledWith(
95
+ expect.stringContaining(`srcDir: "${srcDir}"`)
96
+ );
97
+ });
98
+ });
99
+
100
+ it('rejects configuration with srcDir that does not exist', () => {
101
+ projects.validateProjectConfig(
102
+ { name: 'hello', srcDir: 'foo' },
103
+ projectDir
104
+ );
105
+
106
+ expect(exitMock).toHaveBeenCalledWith(EXIT_CODES.ERROR);
107
+ expect(errorSpy).toHaveBeenCalledWith(
108
+ expect.stringMatching(/.*could not be found in.*/)
109
+ );
110
+ });
111
+
112
+ describe('accepts configuration with valid srcDir', () => {
113
+ it('for current directory', () => {
114
+ projects.validateProjectConfig(
115
+ { name: 'hello', srcDir: '.' },
116
+ projectDir
117
+ );
118
+
119
+ expect(exitMock).not.toHaveBeenCalled();
120
+ expect(errorSpy).not.toHaveBeenCalled();
121
+ });
122
+
123
+ it('for relative directory', () => {
124
+ projects.validateProjectConfig(
125
+ { name: 'hello', srcDir: './src' },
126
+ projectDir
127
+ );
128
+
129
+ expect(exitMock).not.toHaveBeenCalled();
130
+ expect(errorSpy).not.toHaveBeenCalled();
131
+ });
132
+
133
+ it('for implied relative directory', () => {
134
+ projects.validateProjectConfig(
135
+ { name: 'hello', srcDir: 'src' },
136
+ projectDir
137
+ );
138
+
139
+ expect(exitMock).not.toHaveBeenCalled();
140
+ expect(errorSpy).not.toHaveBeenCalled();
141
+ });
142
+ });
143
+ });
144
+ });
@@ -1,4 +1,4 @@
1
- const { getAccountConfig } = require('@hubspot/cli-lib');
1
+ const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
2
2
  const { getOauthManager } = require('@hubspot/cli-lib/oauth');
3
3
  const {
4
4
  accessTokenForPersonalAccessKey,
@@ -8,6 +8,7 @@ const { getAccountId } = require('../commonOpts');
8
8
  const { validateAccount } = require('../validation');
9
9
 
10
10
  jest.mock('@hubspot/cli-lib');
11
+ jest.mock('@hubspot/local-dev-lib/config');
11
12
  jest.mock('@hubspot/cli-lib/logger');
12
13
  jest.mock('@hubspot/cli-lib/oauth');
13
14
  jest.mock('@hubspot/cli-lib/personalAccessKey');
package/lib/commonOpts.js CHANGED
@@ -1,11 +1,10 @@
1
1
  const Logger = require('@hubspot/cli-lib/logger');
2
+ const { DEFAULT_MODE, Mode } = require('@hubspot/cli-lib');
2
3
  const {
3
4
  getAccountId: getAccountIdFromConfig,
4
5
  getAccountConfig,
5
6
  getAndLoadConfigIfNeeded,
6
- DEFAULT_MODE,
7
- Mode,
8
- } = require('@hubspot/cli-lib');
7
+ } = require('@hubspot/local-dev-lib/config');
9
8
  const { i18n } = require('./lang');
10
9
 
11
10
  const i18nKey = 'cli.lib.commonOpts';
@@ -1,5 +1,5 @@
1
1
  const { logger } = require('@hubspot/cli-lib/logger');
2
- const { getAccountConfig } = require('@hubspot/cli-lib/lib/config');
2
+ const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
3
3
  const {
4
4
  SCOPE_GROUPS,
5
5
  PERSONAL_ACCESS_KEY_AUTH_METHOD,
package/lib/links.js CHANGED
@@ -1,4 +1,4 @@
1
- const { getEnv } = require('@hubspot/cli-lib/lib/config');
1
+ const { getEnv } = require('@hubspot/local-dev-lib/config');
2
2
  const { ENVIRONMENTS } = require('@hubspot/cli-lib/lib/constants');
3
3
  const { getHubSpotWebsiteOrigin } = require('@hubspot/cli-lib/lib/urls');
4
4
  const { logger } = require('@hubspot/cli-lib/logger');
package/lib/oauth.js CHANGED
@@ -1,7 +1,7 @@
1
1
  const express = require('express');
2
2
  const open = require('open');
3
3
  const OAuth2Manager = require('@hubspot/cli-lib/lib/models/OAuth2Manager');
4
- const { getAccountConfig } = require('@hubspot/cli-lib/lib/config');
4
+ const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
5
5
  const { addOauthToAccountConfig } = require('@hubspot/cli-lib/oauth');
6
6
  const { handleExit } = require('./process');
7
7
  const { getHubSpotWebsiteOrigin } = require('@hubspot/cli-lib/lib/urls');
package/lib/process.js CHANGED
@@ -1,20 +1,38 @@
1
1
  const readline = require('readline');
2
+ const { logger, setLogLevel, LOG_LEVEL } = require('@hubspot/cli-lib/logger');
3
+ const { i18n } = require('./lang');
4
+
5
+ const i18nKey = 'cli.lib.process';
2
6
 
3
7
  const handleExit = callback => {
4
8
  const terminationSignals = [
5
9
  'beforeExit',
6
- 'SIGINT',
7
- 'SIGUSR1',
8
- 'SIGUSR2',
10
+ 'SIGINT', // Terminal trying to interrupt (Ctrl + C)
11
+ 'SIGUSR1', // Start Debugger User-defined signal 1
12
+ 'SIGUSR2', // User-defined signal 2
9
13
  'uncaughtException',
10
- 'SIGTERM',
11
- 'SIGHUP',
14
+ 'SIGTERM', // Represents a graceful termination
15
+ 'SIGHUP', // Parent terminal has been closed
12
16
  ];
17
+ let exitInProgress = false;
18
+
13
19
  terminationSignals.forEach(signal => {
14
20
  process.removeAllListeners(signal);
15
21
 
16
22
  process.on(signal, async () => {
17
- await callback();
23
+ // Prevent duplicate exit handling
24
+ if (!exitInProgress) {
25
+ exitInProgress = true;
26
+ const isSIGHUP = signal === 'SIGHUP';
27
+
28
+ // Prevent logs when terminal closes
29
+ if (isSIGHUP) {
30
+ setLogLevel(LOG_LEVEL.NONE);
31
+ }
32
+
33
+ logger.debug(i18n(`${i18nKey}.exitDebug`, { signal }));
34
+ await callback({ isSIGHUP });
35
+ }
18
36
  });
19
37
  });
20
38
  };
package/lib/projects.js CHANGED
@@ -5,7 +5,7 @@ const tmp = require('tmp');
5
5
  const chalk = require('chalk');
6
6
  const findup = require('findup-sync');
7
7
  const { logger } = require('@hubspot/cli-lib/logger');
8
- const { getEnv } = require('@hubspot/cli-lib/lib/config');
8
+ const { getEnv } = require('@hubspot/local-dev-lib/config');
9
9
  const { getHubSpotWebsiteOrigin } = require('@hubspot/cli-lib/lib/urls');
10
10
  const {
11
11
  ENVIRONMENTS,
@@ -29,7 +29,7 @@ const {
29
29
  fetchProject,
30
30
  uploadProject,
31
31
  } = require('@hubspot/cli-lib/api/dfs');
32
- const { shouldIgnoreFile } = require('@hubspot/cli-lib/ignoreRules');
32
+ const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules');
33
33
  const { getCwd, getAbsoluteFilePath } = require('@hubspot/cli-lib/path');
34
34
  const { downloadGitHubRepoContents } = require('@hubspot/cli-lib/github');
35
35
  const { promptUser } = require('./prompts/promptUtils');
@@ -159,21 +159,36 @@ const validateProjectConfig = (projectConfig, projectDir) => {
159
159
  logger.error(
160
160
  `Project config not found. Try running 'hs project create' first.`
161
161
  );
162
- process.exit(EXIT_CODES.ERROR);
162
+ return process.exit(EXIT_CODES.ERROR);
163
163
  }
164
164
 
165
165
  if (!projectConfig.name || !projectConfig.srcDir) {
166
166
  logger.error(
167
167
  'Project config is missing required fields. Try running `hs project create`.'
168
168
  );
169
- process.exit(EXIT_CODES.ERROR);
169
+ return process.exit(EXIT_CODES.ERROR);
170
+ }
171
+
172
+ const resolvedPath = path.resolve(projectDir, projectConfig.srcDir);
173
+ if (!resolvedPath.startsWith(projectDir)) {
174
+ const projectConfigFile = path.relative(
175
+ '.',
176
+ path.join(projectDir, PROJECT_CONFIG_FILE)
177
+ );
178
+ logger.error(
179
+ i18n(`${i18nKey}.config.srcOutsideProjectDir`, {
180
+ srcDir: projectConfig.srcDir,
181
+ projectConfig: projectConfigFile,
182
+ })
183
+ );
184
+ return process.exit(EXIT_CODES.ERROR);
170
185
  }
171
186
 
172
- if (!fs.existsSync(path.resolve(projectDir, projectConfig.srcDir))) {
187
+ if (!fs.existsSync(resolvedPath)) {
173
188
  logger.error(
174
189
  `Project source directory '${projectConfig.srcDir}' could not be found in ${projectDir}.`
175
190
  );
176
- process.exit(EXIT_CODES.ERROR);
191
+ return process.exit(EXIT_CODES.ERROR);
177
192
  }
178
193
  };
179
194
 
@@ -9,7 +9,7 @@ const {
9
9
  const { i18n } = require('@hubspot/cli-lib/lib/lang');
10
10
  const { logger } = require('@hubspot/cli-lib/logger');
11
11
  const { isAllowedExtension } = require('@hubspot/cli-lib/path');
12
- const { shouldIgnoreFile } = require('@hubspot/cli-lib/ignoreRules');
12
+ const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules');
13
13
  const {
14
14
  cancelStagedBuild,
15
15
  provisionBuild,
@@ -1,4 +1,4 @@
1
- const { updateDefaultAccount } = require('@hubspot/cli-lib/lib/config');
1
+ const { updateDefaultAccount } = require('@hubspot/local-dev-lib/config');
2
2
  const { promptUser } = require('./promptUtils');
3
3
  const { i18n } = require('../lang');
4
4
  const { getAccountName } = require('../sandboxes');
@@ -1,5 +1,5 @@
1
1
  const { promptUser } = require('./promptUtils');
2
- const { getAccountId } = require('@hubspot/cli-lib/lib/config');
2
+ const { getAccountId } = require('@hubspot/local-dev-lib/config');
3
3
  const { fetchProjects } = require('@hubspot/cli-lib/api/dfs');
4
4
  const {
5
5
  logApiErrorInstance,
@@ -1,4 +1,4 @@
1
- const { accountNameExistsInConfig } = require('@hubspot/cli-lib/lib/config');
1
+ const { accountNameExistsInConfig } = require('@hubspot/local-dev-lib/config');
2
2
  const { STRING_WITH_NO_SPACES_REGEX } = require('../regex');
3
3
  const { promptUser } = require('./promptUtils');
4
4
  const { i18n } = require('../lang');
@@ -3,7 +3,7 @@ const {
3
3
  OAUTH_SCOPES,
4
4
  DEFAULT_OAUTH_SCOPES,
5
5
  } = require('@hubspot/cli-lib/lib/constants');
6
- const { deleteEmptyConfigFile } = require('@hubspot/cli-lib/lib/config');
6
+ const { deleteEmptyConfigFile } = require('@hubspot/local-dev-lib/config');
7
7
  const { getHubSpotWebsiteOrigin } = require('@hubspot/cli-lib/lib/urls');
8
8
  const { logger } = require('@hubspot/cli-lib/logger');
9
9
  const { promptUser } = require('./promptUtils');
@@ -2,7 +2,7 @@ const { promptUser } = require('./promptUtils');
2
2
  const { i18n } = require('../lang');
3
3
  const { uiAccountDescription, uiCommandReference } = require('../ui');
4
4
  const { isSandbox, getAccountName } = require('../sandboxes');
5
- const { getAccountId } = require('@hubspot/cli-lib');
5
+ const { getAccountId } = require('@hubspot/local-dev-lib/config');
6
6
  const { getSandboxUsageLimits } = require('@hubspot/cli-lib/sandboxes');
7
7
  const { logger } = require('@hubspot/cli-lib/logger');
8
8
 
@@ -5,7 +5,7 @@ const {
5
5
  STANDARD_SANDBOX,
6
6
  DEVELOPER_SANDBOX,
7
7
  } = require('../sandboxes');
8
- const { accountNameExistsInConfig } = require('@hubspot/cli-lib/lib/config');
8
+ const { accountNameExistsInConfig } = require('@hubspot/local-dev-lib/config');
9
9
 
10
10
  const i18nKey = 'cli.lib.prompts.sandboxesPrompt';
11
11
 
@@ -1,7 +1,7 @@
1
1
  const {
2
2
  getConfig,
3
3
  updateDefaultAccount,
4
- } = require('@hubspot/cli-lib/lib/config');
4
+ } = require('@hubspot/local-dev-lib/config');
5
5
  const { promptUser } = require('./promptUtils');
6
6
  const { i18n } = require('../lang');
7
7
 
@@ -18,9 +18,9 @@ const {
18
18
  isSpecifiedError,
19
19
  } = require('./errorHandlers/apiErrors');
20
20
  const { getHubSpotWebsiteOrigin } = require('@hubspot/cli-lib/lib/urls');
21
- const { getEnv, getAccountId } = require('@hubspot/cli-lib');
21
+ const { getEnv, getAccountId } = require('@hubspot/local-dev-lib/config');
22
22
  const { createSandbox } = require('@hubspot/cli-lib/sandboxes');
23
- const { getValidEnv } = require('@hubspot/cli-lib/lib/environment');
23
+ const { getValidEnv } = require('@hubspot/local-dev-lib/environment');
24
24
 
25
25
  const i18nKey = 'cli.lib.sandbox.create';
26
26
 
@@ -20,7 +20,7 @@ const {
20
20
  isMissingScopeError,
21
21
  } = require('./errorHandlers/apiErrors');
22
22
  const { getSandboxTypeAsString } = require('./sandboxes');
23
- const { getAccountId } = require('@hubspot/cli-lib');
23
+ const { getAccountId } = require('@hubspot/local-dev-lib/config');
24
24
  const { uiAccountDescription } = require('./ui');
25
25
 
26
26
  const i18nKey = 'cli.lib.sandbox.sync';
package/lib/sandboxes.js CHANGED
@@ -1,9 +1,3 @@
1
- const {
2
- getConfig,
3
- writeConfig,
4
- updateAccountConfig,
5
- getAccountId,
6
- } = require('@hubspot/cli-lib');
7
1
  const chalk = require('chalk');
8
2
  const { i18n } = require('./lang');
9
3
  const { handleExit, handleKeypress } = require('./process');
@@ -18,7 +12,13 @@ const {
18
12
  fetchTypes,
19
13
  getSandboxUsageLimits,
20
14
  } = require('@hubspot/cli-lib/sandboxes');
21
- const { accountNameExistsInConfig } = require('@hubspot/cli-lib/lib/config');
15
+ const {
16
+ accountNameExistsInConfig,
17
+ getConfig,
18
+ writeConfig,
19
+ updateAccountConfig,
20
+ getAccountId,
21
+ } = require('@hubspot/local-dev-lib/config');
22
22
  const CliProgressMultibarManager = require('./CliProgressMultibarManager');
23
23
  const { promptUser } = require('./prompts/promptUtils');
24
24
  const { getHubSpotWebsiteOrigin } = require('@hubspot/cli-lib/lib/urls');
package/lib/ui.js CHANGED
@@ -1,7 +1,7 @@
1
1
  const chalk = require('chalk');
2
2
  const supportsHyperlinks = require('../lib/supportHyperlinks');
3
3
  const supportsColor = require('../lib/supportsColor');
4
- const { getAccountConfig } = require('@hubspot/cli-lib/lib/config');
4
+ const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
5
5
  const { i18n } = require('./lang');
6
6
  const { logger } = require('@hubspot/cli-lib/logger');
7
7
 
package/lib/upload.js CHANGED
@@ -1,6 +1,6 @@
1
1
  const path = require('path');
2
2
  const { walk } = require('@hubspot/cli-lib/lib/walk');
3
- const { createIgnoreFilter } = require('@hubspot/cli-lib/ignoreRules');
3
+ const { createIgnoreFilter } = require('@hubspot/local-dev-lib/ignoreRules');
4
4
  const { fieldsJsPrompt } = require('../lib/prompts/cmsFieldPrompt');
5
5
  const { isAllowedExtension } = require('@hubspot/cli-lib/path');
6
6
  const { isConvertableFieldJs } = require('@hubspot/cli-lib/lib/handleFieldsJs');
@@ -1,6 +1,8 @@
1
1
  const { trackUsage } = require('@hubspot/cli-lib/api/fileMapper');
2
- const { getAccountConfig } = require('@hubspot/cli-lib');
3
- const { isTrackingAllowed } = require('@hubspot/cli-lib/lib/config');
2
+ const {
3
+ isTrackingAllowed,
4
+ getAccountConfig,
5
+ } = require('@hubspot/local-dev-lib/config');
4
6
  const { API_KEY_AUTH_METHOD } = require('@hubspot/cli-lib/lib/constants');
5
7
  const { logger } = require('@hubspot/cli-lib/logger');
6
8
  const { version } = require('../package.json');
package/lib/validation.js CHANGED
@@ -1,19 +1,18 @@
1
1
  const { logger } = require('@hubspot/cli-lib/logger');
2
- const {
3
- getAccountConfig,
4
- loadConfigFromEnvironment,
5
- Mode,
6
- loadConfig,
7
- getConfigPath,
8
- validateConfig,
9
- checkAndWarnGitInclusion,
10
- } = require('@hubspot/cli-lib');
2
+ const { Mode, checkAndWarnGitInclusion } = require('@hubspot/cli-lib');
11
3
  const {
12
4
  API_KEY_AUTH_METHOD,
13
5
  OAUTH_AUTH_METHOD,
14
6
  PERSONAL_ACCESS_KEY_AUTH_METHOD,
15
7
  } = require('@hubspot/cli-lib/lib/constants');
16
8
  const { commaSeparatedValues } = require('@hubspot/local-dev-lib/text');
9
+ const {
10
+ loadConfig,
11
+ getConfigPath,
12
+ validateConfig,
13
+ getAccountConfig,
14
+ loadConfigFromEnvironment,
15
+ } = require('@hubspot/local-dev-lib/config');
17
16
  const { getAbsoluteFilePath } = require('@hubspot/cli-lib/path');
18
17
  const { getOauthManager } = require('@hubspot/cli-lib/oauth');
19
18
  const {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hubspot/cli",
3
- "version": "5.0.2",
3
+ "version": "5.0.3-beta.1",
4
4
  "description": "CLI for working with HubSpot",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -8,9 +8,9 @@
8
8
  "url": "https://github.com/HubSpot/hubspot-cms-tools"
9
9
  },
10
10
  "dependencies": {
11
- "@hubspot/cli-lib": "^5.0.1",
12
- "@hubspot/local-dev-lib": "^0.0.7",
13
- "@hubspot/serverless-dev-runtime": "5.0.2",
11
+ "@hubspot/cli-lib": "^7.0.0",
12
+ "@hubspot/local-dev-lib": "^0.0.9",
13
+ "@hubspot/serverless-dev-runtime": "5.0.3-beta.1",
14
14
  "@hubspot/ui-extensions-dev-server": "^0.8.0",
15
15
  "archiver": "^5.3.0",
16
16
  "chalk": "^4.1.2",
@@ -45,5 +45,5 @@
45
45
  "publishConfig": {
46
46
  "access": "public"
47
47
  },
48
- "gitHead": "44cbdf6dae130e268015d3e9afb612729b539915"
48
+ "gitHead": "2e093e81e1889cfc7274de18d2e3c79987d62bfc"
49
49
  }