@hubspot/cli 6.3.0-experimental.0 → 6.4.0-beta.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 (77) hide show
  1. package/bin/cli.js +2 -21
  2. package/commands/accounts/clean.js +5 -8
  3. package/commands/accounts/info.js +6 -6
  4. package/commands/accounts/list.js +10 -14
  5. package/commands/accounts/remove.js +1 -1
  6. package/commands/accounts/rename.js +4 -3
  7. package/commands/auth.js +7 -11
  8. package/commands/cms/lighthouseScore.js +19 -19
  9. package/commands/config/set.js +5 -4
  10. package/commands/create.js +2 -3
  11. package/commands/customObject/create.js +6 -4
  12. package/commands/customObject/schema/create.js +9 -8
  13. package/commands/customObject/schema/delete.js +5 -3
  14. package/commands/customObject/schema/fetch-all.js +4 -3
  15. package/commands/customObject/schema/fetch.js +6 -4
  16. package/commands/customObject/schema/list.js +4 -3
  17. package/commands/customObject/schema/update.js +9 -8
  18. package/commands/fetch.js +4 -4
  19. package/commands/filemanager/fetch.js +5 -4
  20. package/commands/filemanager/upload.js +10 -9
  21. package/commands/functions/deploy.js +10 -12
  22. package/commands/functions/list.js +5 -5
  23. package/commands/functions/server.js +5 -4
  24. package/commands/hubdb/clear.js +6 -5
  25. package/commands/hubdb/create.js +6 -5
  26. package/commands/hubdb/delete.js +6 -5
  27. package/commands/hubdb/fetch.js +5 -4
  28. package/commands/init.js +8 -26
  29. package/commands/lint.js +5 -5
  30. package/commands/list.js +5 -4
  31. package/commands/logs.js +5 -4
  32. package/commands/module/marketplace-validate.js +7 -6
  33. package/commands/mv.js +8 -7
  34. package/commands/open.js +8 -7
  35. package/commands/project/add.js +3 -2
  36. package/commands/project/cloneApp.js +14 -14
  37. package/commands/project/create.js +3 -3
  38. package/commands/project/deploy.js +12 -15
  39. package/commands/project/dev.js +13 -13
  40. package/commands/project/download.js +9 -11
  41. package/commands/project/listBuilds.js +8 -10
  42. package/commands/project/logs.js +5 -5
  43. package/commands/project/migrateApp.js +18 -18
  44. package/commands/project/open.js +7 -6
  45. package/commands/project/upload.js +10 -12
  46. package/commands/project/watch.js +10 -9
  47. package/commands/remove.js +8 -10
  48. package/commands/sandbox/create.js +9 -8
  49. package/commands/sandbox/delete.js +9 -11
  50. package/commands/secrets/addSecret.js +7 -6
  51. package/commands/secrets/deleteSecret.js +7 -6
  52. package/commands/secrets/listSecrets.js +6 -6
  53. package/commands/secrets/updateSecret.js +7 -6
  54. package/commands/theme/marketplace-validate.js +7 -6
  55. package/commands/theme/preview.js +42 -23
  56. package/commands/upload.js +15 -18
  57. package/commands/watch.js +10 -9
  58. package/lang/en.lyaml +1 -3
  59. package/lib/buildAccount.js +1 -3
  60. package/lib/commonOpts.d.ts +1 -9
  61. package/lib/commonOpts.js +12 -14
  62. package/lib/developerTestAccounts.js +5 -8
  63. package/lib/errorHandlers/index.d.ts +14 -1
  64. package/lib/errorHandlers/index.js +43 -50
  65. package/lib/errorHandlers/suppressError.d.ts +2 -1
  66. package/lib/errorHandlers/suppressError.js +32 -37
  67. package/lib/links.d.ts +9 -0
  68. package/lib/links.js +99 -97
  69. package/lib/oauth.js +1 -3
  70. package/lib/prompts/accountsPrompt.js +4 -8
  71. package/lib/prompts/projectDevTargetAccountPrompt.js +2 -3
  72. package/lib/prompts/sandboxesPrompt.js +7 -10
  73. package/lib/prompts/setAsDefaultAccountPrompt.js +2 -4
  74. package/lib/sandboxSync.js +2 -5
  75. package/lib/sandboxes.js +7 -12
  76. package/lib/ui/serverlessFunctionLogs.js +8 -4
  77. package/package.json +4 -1
package/bin/cli.js CHANGED
@@ -3,12 +3,10 @@
3
3
  const yargs = require('yargs');
4
4
  const updateNotifier = require('update-notifier');
5
5
  const chalk = require('chalk');
6
- const fs = require('fs');
7
6
  const { logger } = require('@hubspot/local-dev-lib/logger');
8
7
  const { addUserAgentHeader } = require('@hubspot/local-dev-lib/http');
9
- const { loadConfig, configFileExists, } = require('@hubspot/local-dev-lib/config');
10
8
  const { logError } = require('../lib/errorHandlers/index');
11
- const { setLogLevel, getCommandName, injectAccountIdMiddleware, } = require('../lib/commonOpts');
9
+ const { setLogLevel, getCommandName } = require('../lib/commonOpts');
12
10
  const { trackHelpUsage, trackConvertFieldsUsage, } = require('../lib/usageTracking');
13
11
  const { getIsInProject } = require('../lib/projects');
14
12
  const pkg = require('../package.json');
@@ -118,26 +116,9 @@ const performChecks = argv => {
118
116
  const setRequestHeaders = () => {
119
117
  addUserAgentHeader('HubSpot CLI', pkg.version);
120
118
  };
121
- const loadConfigMiddleware = async (options) => {
122
- if (configFileExists(true)) {
123
- loadConfig('', options);
124
- }
125
- if (options.config) {
126
- if (fs.existsSync(options.config)) {
127
- const { config: configPath } = options;
128
- await loadConfig(configPath, options);
129
- }
130
- }
131
- };
132
119
  const argv = yargs
133
120
  .usage('The command line interface to interact with HubSpot.')
134
- // loadConfigMiddleware loads the new hidden config for all commands
135
- .middleware([
136
- setLogLevel,
137
- setRequestHeaders,
138
- loadConfigMiddleware,
139
- injectAccountIdMiddleware,
140
- ])
121
+ .middleware([setLogLevel, setRequestHeaders])
141
122
  .exitProcess(false)
142
123
  .fail(handleFailure)
143
124
  .option('debug', {
@@ -11,9 +11,8 @@ const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, addTestin
11
11
  const { promptUser } = require('../../lib/prompts/promptUtils');
12
12
  const { getTableContents } = require('../../lib/ui/table');
13
13
  const SpinniesManager = require('../../lib/ui/SpinniesManager');
14
+ const { getConfig, deleteAccount } = require('@hubspot/local-dev-lib/config');
14
15
  const { uiAccountDescription } = require('../../lib/ui');
15
- const { deleteAccount, getConfigAccounts, } = require('@hubspot/local-dev-lib/config');
16
- const { getAccountIdentifier, } = require('@hubspot/local-dev-lib/config/getAccountIdentifier');
17
16
  const { isSpecifiedError } = require('@hubspot/local-dev-lib/errors/index');
18
17
  const i18nKey = 'commands.accounts.subcommands.clean';
19
18
  exports.command = 'clean';
@@ -21,9 +20,9 @@ exports.describe = i18n(`${i18nKey}.describe`);
21
20
  exports.handler = async (options) => {
22
21
  const { qa } = options;
23
22
  await loadAndValidateOptions(options, false);
23
+ const config = getConfig();
24
24
  trackCommandUsage('accounts-clean', null);
25
- const accountsList = getConfigAccounts();
26
- const filteredTestAccounts = accountsList.filter(p => qa ? p.env === 'qa' : p.env !== 'qa');
25
+ const filteredTestAccounts = config.portals.filter(p => qa ? p.env === 'qa' : p.env !== 'qa');
27
26
  if (filteredTestAccounts && filteredTestAccounts.length === 0) {
28
27
  logger.log(i18n(`${i18nKey}.noResults`));
29
28
  process.exit(EXIT_CODES.SUCCESS);
@@ -37,7 +36,7 @@ exports.handler = async (options) => {
37
36
  });
38
37
  for (const account of filteredTestAccounts) {
39
38
  try {
40
- await accessTokenForPersonalAccessKey(getAccountIdentifier(account), true);
39
+ await accessTokenForPersonalAccessKey(account.portalId, true);
41
40
  }
42
41
  catch (error) {
43
42
  if (isSpecifiedError(error, {
@@ -63,9 +62,7 @@ exports.handler = async (options) => {
63
62
  count: accountsToRemove.length,
64
63
  }),
65
64
  });
66
- logger.log(getTableContents(accountsToRemove.map(p => [
67
- uiAccountDescription(getAccountIdentifier(p)),
68
- ]), { border: { bodyLeft: ' ' } }));
65
+ logger.log(getTableContents(accountsToRemove.map(p => [uiAccountDescription(p.portalId)]), { border: { bodyLeft: ' ' } }));
69
66
  const { accountsCleanPrompt } = await promptUser([
70
67
  {
71
68
  name: 'accountsCleanPrompt',
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const { logger } = require('@hubspot/local-dev-lib/logger');
5
5
  const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
6
6
  const { getAccessToken } = require('@hubspot/local-dev-lib/personalAccessKey');
7
- const { addAccountOptions, addConfigOptions } = require('../../lib/commonOpts');
7
+ const { getAccountId, addAccountOptions, addConfigOptions, } = require('../../lib/commonOpts');
8
8
  const { loadAndValidateOptions } = require('../../lib/validation');
9
9
  const { i18n } = require('../../lib/lang');
10
10
  const { getTableContents } = require('../../lib/ui/table');
@@ -13,15 +13,15 @@ exports.describe = i18n(`${i18nKey}.describe`);
13
13
  exports.command = 'info [--account]';
14
14
  exports.handler = async (options) => {
15
15
  await loadAndValidateOptions(options);
16
- const { derivedAccountId } = options;
17
- const config = getAccountConfig(derivedAccountId);
16
+ const accountId = getAccountId(options);
17
+ const config = getAccountConfig(accountId);
18
18
  // check if the provided account is using a personal access key, if not, show an error
19
- if (config && config.authType === 'personalaccesskey') {
19
+ if (config.authType === 'personalaccesskey') {
20
20
  const { name, personalAccessKey, env } = config;
21
- const response = await getAccessToken(personalAccessKey, env, derivedAccountId);
21
+ const response = await getAccessToken(personalAccessKey, env, accountId);
22
22
  const scopeGroups = response.scopeGroups.map(s => [s]);
23
23
  logger.log(i18n(`${i18nKey}.name`, { name }));
24
- logger.log(i18n(`${i18nKey}.accountId`, { accountId: derivedAccountId }));
24
+ logger.log(i18n(`${i18nKey}.accountId`, { accountId }));
25
25
  logger.log(i18n(`${i18nKey}.scopeGroups`));
26
26
  logger.log(getTableContents(scopeGroups, { border: { bodyLeft: ' ' } }));
27
27
  }
@@ -2,10 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  // @ts-nocheck
4
4
  const { logger } = require('@hubspot/local-dev-lib/logger');
5
- const { getConfig, getConfigPath, getConfigDefaultAccount, getConfigAccounts, } = require('@hubspot/local-dev-lib/config');
6
- const { getAccountIdentifier, } = require('@hubspot/local-dev-lib/config/getAccountIdentifier');
5
+ const { getConfig, getConfigPath } = require('@hubspot/local-dev-lib/config');
7
6
  const { getTableContents, getTableHeader } = require('../../lib/ui/table');
8
- const { addConfigOptions, addAccountOptions } = require('../../lib/commonOpts');
7
+ const { addConfigOptions, addAccountOptions, getAccountId, } = require('../../lib/commonOpts');
9
8
  const { trackCommandUsage } = require('../../lib/usageTracking');
10
9
  const { loadAndValidateOptions } = require('../../lib/validation');
11
10
  const { isSandbox, isDeveloperTestAccount } = require('../../lib/accountTypes');
@@ -22,7 +21,7 @@ const sortAndMapPortals = portals => {
22
21
  (p.accountType === HUBSPOT_ACCOUNT_TYPES.STANDARD ||
23
22
  p.accountType === HUBSPOT_ACCOUNT_TYPES.APP_DEVELOPER))
24
23
  .forEach(portal => {
25
- mappedPortalData[getAccountIdentifier(portal)] = [portal];
24
+ mappedPortalData[portal.portalId] = [portal];
26
25
  });
27
26
  // Non-standard portals (sandbox, developer test account)
28
27
  portals
@@ -35,7 +34,7 @@ const sortAndMapPortals = portals => {
35
34
  ];
36
35
  }
37
36
  else {
38
- mappedPortalData[getAccountIdentifier(p)] = [p];
37
+ mappedPortalData[p.portalId] = [p];
39
38
  }
40
39
  });
41
40
  return mappedPortalData;
@@ -43,7 +42,7 @@ const sortAndMapPortals = portals => {
43
42
  const getPortalData = mappedPortalData => {
44
43
  const portalData = [];
45
44
  Object.entries(mappedPortalData).forEach(([key, set]) => {
46
- const hasParentPortal = set.filter(p => getAccountIdentifier(p) === parseInt(key, 10))[0];
45
+ const hasParentPortal = set.filter(p => p.portalId === parseInt(key, 10))[0];
47
46
  set.forEach(portal => {
48
47
  let name = `${portal.name} [${HUBSPOT_ACCOUNT_TYPE_STRINGS[portal.accountType]}]`;
49
48
  if (isSandbox(portal)) {
@@ -56,19 +55,18 @@ const getPortalData = mappedPortalData => {
56
55
  name = `↳ ${name}`;
57
56
  }
58
57
  }
59
- portalData.push([name, getAccountIdentifier(portal), portal.authType]);
58
+ portalData.push([name, portal.portalId, portal.authType]);
60
59
  });
61
60
  });
62
61
  return portalData;
63
62
  };
64
63
  exports.handler = async (options) => {
65
64
  await loadAndValidateOptions(options, false);
66
- const { derivedAccountId } = options;
67
- trackCommandUsage('accounts-list', null, derivedAccountId);
65
+ const accountId = getAccountId(options);
66
+ trackCommandUsage('accounts-list', null, accountId);
68
67
  const config = getConfig();
69
68
  const configPath = getConfigPath();
70
- const accountsList = getConfigAccounts();
71
- const mappedPortalData = sortAndMapPortals(accountsList);
69
+ const mappedPortalData = sortAndMapPortals(config.portals);
72
70
  const portalData = getPortalData(mappedPortalData);
73
71
  portalData.unshift(getTableHeader([
74
72
  i18n(`${i18nKey}.labels.name`),
@@ -76,9 +74,7 @@ exports.handler = async (options) => {
76
74
  i18n(`${i18nKey}.labels.authType`),
77
75
  ]));
78
76
  logger.log(i18n(`${i18nKey}.configPath`, { configPath }));
79
- logger.log(i18n(`${i18nKey}.defaultAccount`, {
80
- account: getConfigDefaultAccount(config),
81
- }));
77
+ logger.log(i18n(`${i18nKey}.defaultAccount`, { account: config.defaultPortal }));
82
78
  logger.log(i18n(`${i18nKey}.accounts`));
83
79
  logger.log(getTableContents(portalData, { border: { bodyLeft: ' ' } }));
84
80
  };
@@ -13,7 +13,7 @@ exports.describe = i18n(`${i18nKey}.describe`);
13
13
  exports.handler = async (options) => {
14
14
  await loadAndValidateOptions(options, false);
15
15
  let config = getConfig();
16
- let accountToRemove = options.providedAccountId;
16
+ let accountToRemove = options.account;
17
17
  if (accountToRemove && !getAccountIdFromConfig(accountToRemove)) {
18
18
  logger.error(i18n(`${i18nKey}.errors.accountNotFound`, {
19
19
  specifiedAccount: accountToRemove,
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  // @ts-nocheck
4
4
  const { logger } = require('@hubspot/local-dev-lib/logger');
5
5
  const { renameAccount } = require('@hubspot/local-dev-lib/config');
6
- const { addConfigOptions, addAccountOptions } = require('../../lib/commonOpts');
6
+ const { addConfigOptions, addAccountOptions, getAccountId, } = require('../../lib/commonOpts');
7
7
  const { trackCommandUsage } = require('../../lib/usageTracking');
8
8
  const { loadAndValidateOptions } = require('../../lib/validation');
9
9
  const { i18n } = require('../../lib/lang');
@@ -12,8 +12,9 @@ exports.command = 'rename <accountName> <newName>';
12
12
  exports.describe = i18n(`${i18nKey}.describe`);
13
13
  exports.handler = async (options) => {
14
14
  loadAndValidateOptions(options);
15
- const { accountName, newName, derivedAccountId } = options;
16
- trackCommandUsage('accounts-rename', null, derivedAccountId);
15
+ const { accountName, newName } = options;
16
+ const accountId = getAccountId(options);
17
+ trackCommandUsage('accounts-rename', null, accountId);
17
18
  await renameAccount(accountName, newName);
18
19
  return logger.log(i18n(`${i18nKey}.success.renamed`, {
19
20
  name: accountName,
package/commands/auth.js CHANGED
@@ -8,7 +8,7 @@ const { ENVIRONMENTS, } = require('@hubspot/local-dev-lib/constants/environments
8
8
  const { DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME, } = require('@hubspot/local-dev-lib/constants/config');
9
9
  const { i18n } = require('../lib/lang');
10
10
  const { getAccessToken, updateConfigWithAccessToken, } = require('@hubspot/local-dev-lib/personalAccessKey');
11
- const { updateAccountConfig, writeConfig, getConfig, getConfigPath, loadConfig, getConfigDefaultAccount, } = require('@hubspot/local-dev-lib/config');
11
+ const { updateAccountConfig, writeConfig, getConfig, getConfigPath, loadConfig, } = require('@hubspot/local-dev-lib/config');
12
12
  const { commaSeparatedValues, toKebabCase, } = require('@hubspot/local-dev-lib/text');
13
13
  const { promptUser } = require('../lib/prompts/promptUtils');
14
14
  const { personalAccessKeyPrompt, OAUTH_FLOW, } = require('../lib/prompts/personalAccessKeyPrompt');
@@ -36,17 +36,16 @@ exports.describe = i18n(`${i18nKey}.describe`, {
36
36
  supportedProtocols: SUPPORTED_AUTHENTICATION_PROTOCOLS_TEXT,
37
37
  });
38
38
  exports.handler = async (options) => {
39
- const { type, config: c, qa, providedAccountId } = options;
39
+ const { type, config: c, qa, account } = options;
40
40
  const authType = (type && type.toLowerCase()) || PERSONAL_ACCESS_KEY_AUTH_METHOD.value;
41
41
  setLogLevel(options);
42
- const env = qa ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD;
43
- // Needed to load deprecated config
44
- loadConfig(c);
45
- checkAndWarnGitInclusion(getConfigPath());
46
42
  if (!getConfigPath(c)) {
47
43
  logger.error(i18n(`${i18nKey}.errors.noConfigFileFound`));
48
44
  process.exit(EXIT_CODES.ERROR);
49
45
  }
46
+ const env = qa ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD;
47
+ loadConfig(c);
48
+ checkAndWarnGitInclusion(getConfigPath());
50
49
  trackCommandUsage('auth');
51
50
  trackAuthAction('auth', authType, TRACKING_STATUS.STARTED);
52
51
  let configData;
@@ -65,10 +64,7 @@ exports.handler = async (options) => {
65
64
  successAuthMethod = OAUTH_AUTH_METHOD.name;
66
65
  break;
67
66
  case PERSONAL_ACCESS_KEY_AUTH_METHOD.value:
68
- configData = await personalAccessKeyPrompt({
69
- env,
70
- account: providedAccountId,
71
- });
67
+ configData = await personalAccessKeyPrompt({ env, account });
72
68
  try {
73
69
  token = await getAccessToken(configData.personalAccessKey, env);
74
70
  defaultName = toKebabCase(token.hubName);
@@ -116,7 +112,7 @@ exports.handler = async (options) => {
116
112
  else {
117
113
  const config = getConfig();
118
114
  logger.info(i18n(`lib.prompts.setAsDefaultAccountPrompt.keepingCurrentDefault`, {
119
- accountName: getConfigDefaultAccount(config),
115
+ accountName: config.defaultPortal,
120
116
  }));
121
117
  }
122
118
  logger.success(i18n(`${i18nKey}.success.configFileUpdated`, {
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  // @ts-nocheck
4
4
  const SpinniesManager = require('../../lib/ui/SpinniesManager');
5
- const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, } = require('../../lib/commonOpts');
5
+ const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, getAccountId, } = require('../../lib/commonOpts');
6
6
  const { logger } = require('@hubspot/local-dev-lib/logger');
7
7
  const { getTableContents, getTableHeader } = require('../../lib/ui/table');
8
8
  const { loadAndValidateOptions } = require('../../lib/validation');
@@ -54,14 +54,14 @@ const selectTheme = async (accountId) => {
54
54
  };
55
55
  exports.handler = async (options) => {
56
56
  await loadAndValidateOptions(options);
57
- const { target, verbose, theme, derivedAccountId } = options;
58
- const includeDesktopScore = target === 'desktop' || !verbose;
59
- const includeMobileScore = target === 'mobile' || !verbose;
60
- let themeToCheck = theme;
57
+ const accountId = getAccountId(options);
58
+ const includeDesktopScore = options.target === 'desktop' || !options.verbose;
59
+ const includeMobileScore = options.target === 'mobile' || !options.verbose;
60
+ let themeToCheck = options.theme;
61
61
  if (themeToCheck) {
62
62
  let isValidTheme = true;
63
63
  try {
64
- const { data: result } = await fetchThemes(derivedAccountId, {
64
+ const { data: result } = await fetchThemes(accountId, {
65
65
  name: encodeURIComponent(themeToCheck),
66
66
  });
67
67
  isValidTheme = result && result.total;
@@ -75,13 +75,13 @@ exports.handler = async (options) => {
75
75
  }
76
76
  }
77
77
  else {
78
- themeToCheck = await selectTheme(derivedAccountId);
78
+ themeToCheck = await selectTheme(accountId);
79
79
  logger.log();
80
80
  }
81
81
  // Kick off the scoring
82
82
  let requestResult;
83
83
  try {
84
- const { data } = await requestLighthouseScore(derivedAccountId, {
84
+ const { data } = await requestLighthouseScore(accountId, {
85
85
  themePath: themeToCheck,
86
86
  });
87
87
  requestResult = data;
@@ -102,14 +102,14 @@ exports.handler = async (options) => {
102
102
  const checkScoreStatus = async () => {
103
103
  let desktopScoreStatus = 'COMPLETED';
104
104
  if (includeDesktopScore) {
105
- const { data } = await getLighthouseScoreStatus(derivedAccountId, {
105
+ const { data } = await getLighthouseScoreStatus(accountId, {
106
106
  themeId: requestResult.desktopId,
107
107
  });
108
108
  desktopScoreStatus = data;
109
109
  }
110
110
  let mobileScoreStatus = 'COMPLETED';
111
111
  if (includeDesktopScore) {
112
- const { data } = await getLighthouseScoreStatus(derivedAccountId, {
112
+ const { data } = await getLighthouseScoreStatus(accountId, {
113
113
  themeId: requestResult.mobileId,
114
114
  });
115
115
  mobileScoreStatus = data;
@@ -132,24 +132,24 @@ exports.handler = async (options) => {
132
132
  let mobileScoreResult = {};
133
133
  let verboseViewAverageScoreResult = {};
134
134
  try {
135
- const params = { isAverage: !verbose };
135
+ const params = { isAverage: !options.verbose };
136
136
  if (includeDesktopScore) {
137
- const { data } = await getLighthouseScore(derivedAccountId, {
137
+ const { data } = await getLighthouseScore(accountId, {
138
138
  ...params,
139
139
  desktopId: requestResult.desktopId,
140
140
  });
141
141
  desktopScoreResult = data;
142
142
  }
143
143
  if (includeMobileScore) {
144
- const { data } = await getLighthouseScore(derivedAccountId, {
144
+ const { data } = await getLighthouseScore(accountId, {
145
145
  ...params,
146
146
  mobileId: requestResult.mobileId,
147
147
  });
148
148
  mobileScoreResult = data;
149
149
  }
150
150
  // This is needed to show the average scores above the verbose output
151
- if (verbose) {
152
- const { data } = await getLighthouseScore(derivedAccountId, {
151
+ if (options.verbose) {
152
+ const { data } = await getLighthouseScore(accountId, {
153
153
  ...params,
154
154
  isAverage: true,
155
155
  desktopId: includeDesktopScore ? requestResult.desktopId : null,
@@ -162,8 +162,8 @@ exports.handler = async (options) => {
162
162
  logger.error(i18n(`${i18nKey}.errors.failedToGetLighthouseScore`));
163
163
  process.exit(EXIT_CODES.ERROR);
164
164
  }
165
- if (verbose) {
166
- logger.log(`${themeToCheck} ${target} scores`);
165
+ if (options.verbose) {
166
+ logger.log(`${themeToCheck} ${options.target} scores`);
167
167
  const tableHeader = getTableHeader(DEFAULT_TABLE_HEADER);
168
168
  const scores = verboseViewAverageScoreResult.scores
169
169
  ? verboseViewAverageScoreResult.scores[0]
@@ -183,7 +183,7 @@ exports.handler = async (options) => {
183
183
  'Template path',
184
184
  ...DEFAULT_TABLE_HEADER,
185
185
  ]);
186
- const scoreResult = target === 'desktop' ? desktopScoreResult : mobileScoreResult;
186
+ const scoreResult = options.target === 'desktop' ? desktopScoreResult : mobileScoreResult;
187
187
  const templateTableData = scoreResult.scores.map(score => {
188
188
  return [
189
189
  score.templatePath,
@@ -209,7 +209,7 @@ exports.handler = async (options) => {
209
209
  });
210
210
  }
211
211
  logger.log();
212
- logger.info(i18n(`${i18nKey}.info.targetDeviceNote`, { target }));
212
+ logger.info(i18n(`${i18nKey}.info.targetDeviceNote`, { target: options.target }));
213
213
  }
214
214
  else {
215
215
  logger.log(`Theme: ${themeToCheck}`);
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  // @ts-nocheck
4
4
  const { loadAndValidateOptions } = require('../../lib/validation');
5
5
  const { i18n } = require('../../lib/lang');
6
+ const { getAccountId } = require('../../lib/commonOpts');
6
7
  const { trackCommandUsage } = require('../../lib/usageTracking');
7
8
  const { promptUser } = require('../../lib/prompts/promptUtils');
8
9
  const { EXIT_CODES } = require('../../lib/enums/exitCodes');
@@ -45,12 +46,12 @@ const handleConfigUpdate = async (accountId, options) => {
45
46
  };
46
47
  exports.handler = async (options) => {
47
48
  await loadAndValidateOptions(options);
48
- const { derivedAccountId } = options;
49
- trackCommandUsage('config-set', null, derivedAccountId);
50
- const configUpdated = await handleConfigUpdate(derivedAccountId, options);
49
+ const accountId = getAccountId(options);
50
+ trackCommandUsage('config-set', null, accountId);
51
+ const configUpdated = await handleConfigUpdate(accountId, options);
51
52
  if (!configUpdated) {
52
53
  const selectedOptions = await selectOptions();
53
- await handleConfigUpdate(derivedAccountId, selectedOptions);
54
+ await handleConfigUpdate(accountId, selectedOptions);
54
55
  }
55
56
  process.exit(EXIT_CODES.SUCCESS);
56
57
  };
@@ -27,7 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  const fs = require('fs-extra');
28
28
  const { logError } = require('../lib/errorHandlers/index');
29
29
  const { logger } = require('@hubspot/local-dev-lib/logger');
30
- const { setLogLevel } = require('../lib/commonOpts');
30
+ const { setLogLevel, getAccountId } = require('../lib/commonOpts');
31
31
  const { resolveLocalPath } = require('../lib/filesystem');
32
32
  const { trackCommandUsage } = require('../lib/usageTracking');
33
33
  const assets = require('./create/index');
@@ -63,8 +63,7 @@ exports.handler = async (options) => {
63
63
  const asset = assets[assetType];
64
64
  const argsToPass = { assetType, name, dest, getInternalVersion, options };
65
65
  dest = argsToPass.dest = resolveLocalPath(asset.dest(argsToPass));
66
- const { derivedAccountId } = options;
67
- trackCommandUsage('create', { assetType }, derivedAccountId);
66
+ trackCommandUsage('create', { assetType }, getAccountId(options));
68
67
  try {
69
68
  await fs.ensureDir(dest);
70
69
  }
@@ -6,6 +6,7 @@ const { logError } = require('../../lib/errorHandlers/index');
6
6
  const { getAbsoluteFilePath } = require('@hubspot/local-dev-lib/path');
7
7
  const { checkAndConvertToJson, loadAndValidateOptions, } = require('../../lib/validation');
8
8
  const { trackCommandUsage } = require('../../lib/usageTracking');
9
+ const { getAccountId } = require('../../lib/commonOpts');
9
10
  const { batchCreateObjects, } = require('@hubspot/local-dev-lib/api/customObjects');
10
11
  const { i18n } = require('../../lib/lang');
11
12
  const i18nKey = 'commands.customObject.subcommands.create';
@@ -13,20 +14,21 @@ const { EXIT_CODES } = require('../../lib/enums/exitCodes');
13
14
  exports.command = 'create <name> <definition>';
14
15
  exports.describe = i18n(`${i18nKey}.describe`);
15
16
  exports.handler = async (options) => {
16
- const { definition, name, derivedAccountId } = options;
17
+ const { definition, name } = options;
17
18
  await loadAndValidateOptions(options);
18
- trackCommandUsage('custom-object-batch-create', null, derivedAccountId);
19
+ const accountId = getAccountId(options);
20
+ trackCommandUsage('custom-object-batch-create', null, accountId);
19
21
  const filePath = getAbsoluteFilePath(definition);
20
22
  const objectJson = checkAndConvertToJson(filePath);
21
23
  if (!objectJson) {
22
24
  process.exit(EXIT_CODES.ERROR);
23
25
  }
24
26
  try {
25
- await batchCreateObjects(derivedAccountId, name, objectJson);
27
+ await batchCreateObjects(accountId, name, objectJson);
26
28
  logger.success(i18n(`${i18nKey}.success.objectsCreated`));
27
29
  }
28
30
  catch (e) {
29
- logError(e, { accountId: derivedAccountId });
31
+ logError(e, { accountId });
30
32
  logger.error(i18n(`${i18nKey}.errors.creationFailed`, {
31
33
  definition,
32
34
  }));
@@ -6,7 +6,7 @@ const { logError } = require('../../../lib/errorHandlers/index');
6
6
  const { getAbsoluteFilePath } = require('@hubspot/local-dev-lib/path');
7
7
  const { checkAndConvertToJson, loadAndValidateOptions, } = require('../../../lib/validation');
8
8
  const { trackCommandUsage } = require('../../../lib/usageTracking');
9
- const { addTestingOptions } = require('../../../lib/commonOpts');
9
+ const { addTestingOptions, getAccountId } = require('../../../lib/commonOpts');
10
10
  const { getEnv, isConfigFlagEnabled, } = require('@hubspot/local-dev-lib/config');
11
11
  const { ENVIRONMENTS, } = require('@hubspot/local-dev-lib/constants/environments');
12
12
  const { CONFIG_FLAGS } = require('../../../lib/constants');
@@ -19,9 +19,10 @@ const { EXIT_CODES } = require('../../../lib/enums/exitCodes');
19
19
  exports.command = 'create <definition>';
20
20
  exports.describe = i18n(`${i18nKey}.describe`);
21
21
  exports.handler = async (options) => {
22
- const { definition, derivedAccountId } = options;
22
+ const { definition } = options;
23
23
  await loadAndValidateOptions(options);
24
- trackCommandUsage('custom-object-schema-create', null, derivedAccountId);
24
+ const accountId = getAccountId(options);
25
+ trackCommandUsage('custom-object-schema-create', null, accountId);
25
26
  const filePath = getAbsoluteFilePath(definition);
26
27
  const schemaJson = checkAndConvertToJson(filePath);
27
28
  if (!schemaJson) {
@@ -29,20 +30,20 @@ exports.handler = async (options) => {
29
30
  }
30
31
  try {
31
32
  if (isConfigFlagEnabled(CONFIG_FLAGS.USE_CUSTOM_OBJECT_HUBFILE)) {
32
- await createSchemaFromHubFile(derivedAccountId, filePath);
33
+ await createSchemaFromHubFile(accountId, filePath);
33
34
  logger.success(i18n(`${i18nKey}.success.schemaCreated`, {
34
- accountId: derivedAccountId,
35
+ accountId,
35
36
  }));
36
37
  }
37
38
  else {
38
- const { data } = await createObjectSchema(derivedAccountId, schemaJson);
39
+ const { data } = await createObjectSchema(accountId, schemaJson);
39
40
  logger.success(i18n(`${i18nKey}.success.schemaViewable`, {
40
- url: `${getHubSpotWebsiteOrigin(getEnv() === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD)}/contacts/${derivedAccountId}/objects/${data.objectTypeId}`,
41
+ url: `${getHubSpotWebsiteOrigin(getEnv() === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD)}/contacts/${accountId}/objects/${data.objectTypeId}`,
41
42
  }));
42
43
  }
43
44
  }
44
45
  catch (e) {
45
- logError(e, { accountId: derivedAccountId });
46
+ logError(e, { accountId });
46
47
  logger.error(i18n(`${i18nKey}.errors.creationFailed`, {
47
48
  definition,
48
49
  }));
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const { logger } = require('@hubspot/local-dev-lib/logger');
5
5
  const { loadAndValidateOptions } = require('../../../lib/validation');
6
6
  const { trackCommandUsage } = require('../../../lib/usageTracking');
7
+ const { getAccountId } = require('../../../lib/commonOpts');
7
8
  const { deleteObjectSchema, } = require('@hubspot/local-dev-lib/api/customObjects');
8
9
  const { i18n } = require('../../../lib/lang');
9
10
  const { logError } = require('../../../lib/errorHandlers');
@@ -11,11 +12,12 @@ const i18nKey = 'commands.customObject.subcommands.schema.subcommands.delete';
11
12
  exports.command = 'delete <name>';
12
13
  exports.describe = i18n(`${i18nKey}.describe`);
13
14
  exports.handler = async (options) => {
14
- const { name, derivedAccountId } = options;
15
+ const { name } = options;
15
16
  await loadAndValidateOptions(options);
16
- trackCommandUsage('custom-object-schema-delete', null, derivedAccountId);
17
+ const accountId = getAccountId(options);
18
+ trackCommandUsage('custom-object-schema-delete', null, accountId);
17
19
  try {
18
- await deleteObjectSchema(derivedAccountId, name);
20
+ await deleteObjectSchema(accountId, name);
19
21
  logger.success(i18n(`${i18nKey}.success.delete`, {
20
22
  name,
21
23
  }));
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const { logger } = require('@hubspot/local-dev-lib/logger');
5
5
  const { loadAndValidateOptions } = require('../../../lib/validation');
6
6
  const { trackCommandUsage } = require('../../../lib/usageTracking');
7
+ const { getAccountId } = require('../../../lib/commonOpts');
7
8
  const { downloadSchemas, getResolvedPath, } = require('@hubspot/local-dev-lib/customObjects');
8
9
  const { i18n } = require('../../../lib/lang');
9
10
  const { logSchemas } = require('../../../lib/schema');
@@ -13,10 +14,10 @@ exports.command = 'fetch-all [dest]';
13
14
  exports.describe = i18n(`${i18nKey}.describe`);
14
15
  exports.handler = async (options) => {
15
16
  await loadAndValidateOptions(options);
16
- const { derivedAccountId } = options;
17
- trackCommandUsage('custom-object-schema-fetch-all', null, derivedAccountId);
17
+ const accountId = getAccountId(options);
18
+ trackCommandUsage('custom-object-schema-fetch-all', null, accountId);
18
19
  try {
19
- const schemas = await downloadSchemas(derivedAccountId, options.dest);
20
+ const schemas = await downloadSchemas(accountId, options.dest);
20
21
  logSchemas(schemas);
21
22
  logger.success(i18n(`${i18nKey}.success.fetch`, {
22
23
  path: getResolvedPath(options.dest),
@@ -10,26 +10,28 @@ const { fetchSchema } = require('@hubspot/local-dev-lib/api/fileTransport');
10
10
  const { getCwd } = require('@hubspot/local-dev-lib/path');
11
11
  const { loadAndValidateOptions } = require('../../../lib/validation');
12
12
  const { trackCommandUsage } = require('../../../lib/usageTracking');
13
+ const { getAccountId } = require('../../../lib/commonOpts');
13
14
  const { i18n } = require('../../../lib/lang');
14
15
  const { logError } = require('../../../lib/errorHandlers');
15
16
  const i18nKey = 'commands.customObject.subcommands.schema.subcommands.fetch';
16
17
  exports.command = 'fetch <name> [dest]';
17
18
  exports.describe = i18n(`${i18nKey}.describe`);
18
19
  exports.handler = async (options) => {
19
- const { name, dest, derivedAccountId } = options;
20
+ const { name, dest } = options;
20
21
  await loadAndValidateOptions(options);
21
- trackCommandUsage('custom-object-schema-fetch', null, derivedAccountId);
22
+ const accountId = getAccountId(options);
23
+ trackCommandUsage('custom-object-schema-fetch', null, accountId);
22
24
  try {
23
25
  if (isConfigFlagEnabled(CONFIG_FLAGS.USE_CUSTOM_OBJECT_HUBFILE)) {
24
26
  const fullpath = path.resolve(getCwd(), dest);
25
- await fetchSchema(derivedAccountId, name, fullpath);
27
+ await fetchSchema(accountId, name, fullpath);
26
28
  logger.success(i18n(`${i18nKey}.success.save`, {
27
29
  name,
28
30
  path: fullpath,
29
31
  }));
30
32
  }
31
33
  else {
32
- await downloadSchema(derivedAccountId, name, dest);
34
+ await downloadSchema(accountId, name, dest);
33
35
  logger.success(i18n(`${i18nKey}.success.savedToPath`, {
34
36
  path: getResolvedPath(dest, name),
35
37
  }));
@@ -5,6 +5,7 @@ const { logger } = require('@hubspot/local-dev-lib/logger');
5
5
  const { logError } = require('../../../lib/errorHandlers/index');
6
6
  const { loadAndValidateOptions } = require('../../../lib/validation');
7
7
  const { trackCommandUsage } = require('../../../lib/usageTracking');
8
+ const { getAccountId } = require('../../../lib/commonOpts');
8
9
  const { listSchemas } = require('../../../lib/schema');
9
10
  const { i18n } = require('../../../lib/lang');
10
11
  const i18nKey = 'commands.customObject.subcommands.schema.subcommands.list';
@@ -12,10 +13,10 @@ exports.command = 'list';
12
13
  exports.describe = i18n(`${i18nKey}.describe`);
13
14
  exports.handler = async (options) => {
14
15
  await loadAndValidateOptions(options);
15
- const { derivedAccountId } = options;
16
- trackCommandUsage('custom-object-schema-list', null, derivedAccountId);
16
+ const accountId = getAccountId(options);
17
+ trackCommandUsage('custom-object-schema-list', null, accountId);
17
18
  try {
18
- await listSchemas(derivedAccountId);
19
+ await listSchemas(accountId);
19
20
  }
20
21
  catch (e) {
21
22
  logError(e);