@hubspot/cli 7.2.1-experimental.0 → 7.2.2-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 (122) hide show
  1. package/bin/cli.js +52 -3
  2. package/commands/account/auth.d.ts +10 -0
  3. package/commands/account/auth.js +154 -0
  4. package/commands/account/createOverride.d.ts +10 -0
  5. package/commands/account/createOverride.js +62 -0
  6. package/commands/account/list.js +4 -0
  7. package/commands/account.js +4 -0
  8. package/commands/auth.js +9 -5
  9. package/commands/config/migrate.d.ts +10 -0
  10. package/commands/config/migrate.js +86 -0
  11. package/commands/config/set.d.ts +12 -0
  12. package/commands/config/set.js +30 -29
  13. package/commands/config.d.ts +4 -1
  14. package/commands/config.js +45 -10
  15. package/commands/create/api-sample.js +4 -14
  16. package/commands/customObject/create.d.ts +0 -11
  17. package/commands/customObject/create.js +28 -37
  18. package/commands/customObject/schema/create.d.ts +0 -10
  19. package/commands/customObject/schema/create.js +42 -40
  20. package/commands/customObject/schema/delete.d.ts +0 -11
  21. package/commands/customObject/schema/delete.js +27 -34
  22. package/commands/customObject/schema/fetch-all.d.ts +0 -10
  23. package/commands/customObject/schema/fetch-all.js +24 -31
  24. package/commands/customObject/schema/fetch.d.ts +0 -11
  25. package/commands/customObject/schema/fetch.js +42 -34
  26. package/commands/customObject/schema/list.d.ts +0 -7
  27. package/commands/customObject/schema/list.js +14 -23
  28. package/commands/customObject/schema/update.d.ts +0 -11
  29. package/commands/customObject/schema/update.js +46 -44
  30. package/commands/customObject/schema.d.ts +1 -5
  31. package/commands/customObject/schema.js +11 -49
  32. package/commands/customObject.d.ts +1 -4
  33. package/commands/customObject.js +21 -54
  34. package/commands/filemanager/fetch.d.ts +0 -12
  35. package/commands/filemanager/fetch.js +30 -33
  36. package/commands/filemanager/upload.d.ts +0 -11
  37. package/commands/filemanager/upload.js +47 -53
  38. package/commands/filemanager.d.ts +1 -4
  39. package/commands/filemanager.js +7 -41
  40. package/commands/init.js +15 -26
  41. package/commands/project/add.js +16 -62
  42. package/commands/project/cloneApp.js +3 -3
  43. package/commands/project/create.js +15 -70
  44. package/commands/project/dev.d.ts +1 -0
  45. package/commands/project/dev.js +146 -0
  46. package/commands/project/migrateApp.js +3 -3
  47. package/commands/project/upload.js +2 -7
  48. package/commands/sandbox/create.d.ts +0 -12
  49. package/commands/sandbox/create.js +72 -90
  50. package/commands/sandbox/delete.d.ts +0 -11
  51. package/commands/sandbox/delete.js +95 -112
  52. package/commands/sandbox.d.ts +1 -4
  53. package/commands/sandbox.js +10 -44
  54. package/commands/theme/generate-selectors.d.ts +0 -9
  55. package/commands/theme/generate-selectors.js +43 -61
  56. package/commands/theme/marketplace-validate.d.ts +0 -10
  57. package/commands/theme/marketplace-validate.js +26 -32
  58. package/commands/theme/preview.d.ts +0 -16
  59. package/commands/theme/preview.js +97 -104
  60. package/commands/theme.d.ts +1 -4
  61. package/commands/theme.js +10 -44
  62. package/lang/en.lyaml +67 -40
  63. package/lib/LocalDevManager.d.ts +2 -2
  64. package/lib/buildAccount.d.ts +3 -2
  65. package/lib/configMigrate.d.ts +2 -0
  66. package/lib/configMigrate.js +83 -0
  67. package/lib/constants.d.ts +3 -12
  68. package/lib/constants.js +4 -13
  69. package/lib/doctor/Diagnosis.d.ts +1 -0
  70. package/lib/doctor/Diagnosis.js +7 -0
  71. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -6
  72. package/lib/doctor/DiagnosticInfoBuilder.js +1 -5
  73. package/lib/doctor/Doctor.d.ts +1 -1
  74. package/lib/doctor/Doctor.js +14 -6
  75. package/lib/localDev.d.ts +1 -2
  76. package/lib/marketplaceValidate.d.ts +2 -2
  77. package/lib/projects/buildAndDeploy.js +1 -4
  78. package/lib/projects/index.d.ts +5 -1
  79. package/lib/projects/index.js +62 -1
  80. package/lib/projects/structure.d.ts +0 -4
  81. package/lib/projects/structure.js +0 -9
  82. package/lib/projects/upload.d.ts +1 -1
  83. package/lib/projects/upload.js +2 -2
  84. package/lib/prompts/accountNamePrompt.d.ts +1 -1
  85. package/lib/prompts/createProjectPrompt.d.ts +8 -6
  86. package/lib/prompts/createProjectPrompt.js +54 -26
  87. package/lib/prompts/projectAddPrompt.d.ts +3 -3
  88. package/lib/prompts/projectAddPrompt.js +6 -16
  89. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +2 -3
  90. package/lib/prompts/sandboxesPrompt.d.ts +2 -3
  91. package/lib/prompts/sandboxesPrompt.js +1 -1
  92. package/lib/sandboxSync.js +2 -6
  93. package/lib/sandboxes.d.ts +5 -2
  94. package/lib/ui/index.d.ts +1 -1
  95. package/lib/ui/index.js +0 -1
  96. package/lib/upload.d.ts +1 -1
  97. package/lib/upload.js +20 -20
  98. package/lib/usageTracking.d.ts +1 -1
  99. package/lib/validation.d.ts +1 -1
  100. package/package.json +4 -5
  101. package/types/Projects.d.ts +6 -1
  102. package/types/Prompts.d.ts +0 -7
  103. package/types/Sandboxes.d.ts +0 -2
  104. package/types/Yargs.d.ts +0 -8
  105. package/commands/project/dev/deprecatedFlow.d.ts +0 -5
  106. package/commands/project/dev/deprecatedFlow.js +0 -137
  107. package/commands/project/dev/index.d.ts +0 -6
  108. package/commands/project/dev/index.js +0 -52
  109. package/commands/project/dev/unifiedFlow.d.ts +0 -5
  110. package/commands/project/dev/unifiedFlow.js +0 -112
  111. package/lib/DevServerManagerV2.d.ts +0 -34
  112. package/lib/DevServerManagerV2.js +0 -85
  113. package/lib/LocalDevManagerV2.d.ts +0 -64
  114. package/lib/LocalDevManagerV2.js +0 -382
  115. package/lib/customObject.d.ts +0 -3
  116. package/lib/customObject.js +0 -15
  117. package/lib/projects/create.d.ts +0 -5
  118. package/lib/projects/create.js +0 -51
  119. package/lib/testUtils.d.ts +0 -12
  120. package/lib/testUtils.js +0 -10
  121. package/types/ProjectComponents.d.ts +0 -38
  122. package/types/ProjectComponents.js +0 -3
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // @ts-nocheck
4
+ const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, addTestingOptions, } = require('../../lib/commonOpts');
5
+ const { trackCommandUsage } = require('../../lib/usageTracking');
6
+ const { handleExit } = require('../../lib/process');
7
+ const { i18n } = require('../../lib/lang');
8
+ const { logger } = require('@hubspot/local-dev-lib/logger');
9
+ const { getConfigAccounts, getAccountConfig, getEnv, } = require('@hubspot/local-dev-lib/config');
10
+ const { getProjectConfig, ensureProjectExists, validateProjectConfig, } = require('../../lib/projects');
11
+ const { EXIT_CODES } = require('../../lib/enums/exitCodes');
12
+ const { uiBetaTag, uiCommandReference, uiLink } = require('../../lib/ui');
13
+ const SpinniesManager = require('../../lib/ui/SpinniesManager');
14
+ const LocalDevManager = require('../../lib/LocalDevManager');
15
+ const { isSandbox, isDeveloperTestAccount, isStandardAccount, isAppDeveloperAccount, } = require('../../lib/accountTypes');
16
+ const { getValidEnv } = require('@hubspot/local-dev-lib/environment');
17
+ const { ComponentTypes } = require('../../types/Projects');
18
+ const { findProjectComponents, getProjectComponentTypes, } = require('../../lib/projects/structure');
19
+ const { confirmDefaultAccountIsTarget, suggestRecommendedNestedAccount, checkIfDefaultAccountIsSupported, createSandboxForLocalDev, createDeveloperTestAccountForLocalDev, createNewProjectForLocalDev, createInitialBuildForNewProject, useExistingDevTestAccount, checkIfAccountFlagIsSupported, checkIfParentAccountIsAuthed, } = require('../../lib/localDev');
20
+ const i18nKey = 'commands.project.subcommands.dev';
21
+ exports.command = 'dev';
22
+ exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
23
+ exports.handler = async (options) => {
24
+ const { derivedAccountId, providedAccountId } = options;
25
+ const accountConfig = getAccountConfig(derivedAccountId);
26
+ const env = getValidEnv(getEnv(derivedAccountId));
27
+ trackCommandUsage('project-dev', null, derivedAccountId);
28
+ const { projectConfig, projectDir } = await getProjectConfig();
29
+ uiBetaTag(i18n(`${i18nKey}.logs.betaMessage`));
30
+ logger.log(uiLink(i18n(`${i18nKey}.logs.learnMoreLocalDevServer`), 'https://developers.hubspot.com/docs/platform/project-cli-commands#start-a-local-development-server'));
31
+ if (!projectConfig) {
32
+ logger.error(i18n(`${i18nKey}.errors.noProjectConfig`));
33
+ process.exit(EXIT_CODES.ERROR);
34
+ }
35
+ validateProjectConfig(projectConfig, projectDir);
36
+ const components = await findProjectComponents(projectDir);
37
+ const runnableComponents = components.filter(component => component.runnable);
38
+ const componentTypes = getProjectComponentTypes(runnableComponents);
39
+ const hasPrivateApps = !!componentTypes[ComponentTypes.PrivateApp];
40
+ const hasPublicApps = !!componentTypes[ComponentTypes.PublicApp];
41
+ if (runnableComponents.length === 0) {
42
+ logger.error(i18n(`${i18nKey}.errors.noRunnableComponents`, {
43
+ projectDir,
44
+ command: uiCommandReference('hs project add'),
45
+ }));
46
+ process.exit(EXIT_CODES.SUCCESS);
47
+ }
48
+ else if (hasPrivateApps && hasPublicApps) {
49
+ logger.error(i18n(`${i18nKey}.errors.invalidProjectComponents`));
50
+ process.exit(EXIT_CODES.SUCCESS);
51
+ }
52
+ const accounts = getConfigAccounts();
53
+ const defaultAccountIsRecommendedType = isDeveloperTestAccount(accountConfig) ||
54
+ (!hasPublicApps && isSandbox(accountConfig));
55
+ // targetProjectAccountId and targetTestingAccountId are set to null if --account flag is not provided.
56
+ // By setting them to null, we can later check if they need to be assigned based on the default account configuration and the type of app.
57
+ let targetProjectAccountId = providedAccountId ? derivedAccountId : null;
58
+ // The account that we are locally testing against
59
+ let targetTestingAccountId = providedAccountId ? derivedAccountId : null;
60
+ // Check that the default account or flag option is valid for the type of app in this project
61
+ if (providedAccountId) {
62
+ checkIfAccountFlagIsSupported(accountConfig, hasPublicApps);
63
+ if (hasPublicApps) {
64
+ targetProjectAccountId = accountConfig.parentAccountId;
65
+ }
66
+ }
67
+ else {
68
+ checkIfDefaultAccountIsSupported(accountConfig, hasPublicApps);
69
+ }
70
+ // The user is targeting an account type that we recommend developing on
71
+ if (!targetProjectAccountId && defaultAccountIsRecommendedType) {
72
+ targetTestingAccountId = derivedAccountId;
73
+ await confirmDefaultAccountIsTarget(accountConfig, hasPublicApps);
74
+ if (hasPublicApps) {
75
+ checkIfParentAccountIsAuthed(accountConfig);
76
+ targetProjectAccountId = accountConfig.parentAccountId;
77
+ }
78
+ else {
79
+ targetProjectAccountId = derivedAccountId;
80
+ }
81
+ }
82
+ let createNewSandbox = false;
83
+ let createNewDeveloperTestAccount = false;
84
+ if (!targetProjectAccountId) {
85
+ const { targetAccountId, parentAccountId, createNestedAccount, notInConfigAccount, } = await suggestRecommendedNestedAccount(accounts, accountConfig, hasPublicApps);
86
+ targetProjectAccountId = hasPublicApps ? parentAccountId : targetAccountId;
87
+ targetTestingAccountId = targetAccountId;
88
+ // Only used for developer test accounts that are not yet in the config
89
+ if (notInConfigAccount) {
90
+ await useExistingDevTestAccount(env, notInConfigAccount);
91
+ }
92
+ createNewSandbox = isStandardAccount(accountConfig) && createNestedAccount;
93
+ createNewDeveloperTestAccount =
94
+ isAppDeveloperAccount(accountConfig) && createNestedAccount;
95
+ }
96
+ if (createNewSandbox) {
97
+ targetProjectAccountId = await createSandboxForLocalDev(derivedAccountId, accountConfig, env);
98
+ // We will be running our tests against this new sandbox account
99
+ targetTestingAccountId = targetProjectAccountId;
100
+ }
101
+ if (createNewDeveloperTestAccount) {
102
+ targetTestingAccountId = await createDeveloperTestAccountForLocalDev(derivedAccountId, accountConfig, env);
103
+ targetProjectAccountId = derivedAccountId;
104
+ }
105
+ // eslint-disable-next-line prefer-const
106
+ let { projectExists, project } = await ensureProjectExists(targetProjectAccountId, projectConfig.name, {
107
+ allowCreate: false,
108
+ noLogs: true,
109
+ withPolling: createNewSandbox,
110
+ });
111
+ let deployedBuild;
112
+ let isGithubLinked;
113
+ SpinniesManager.init();
114
+ if (projectExists) {
115
+ deployedBuild = project.deployedBuild;
116
+ isGithubLinked =
117
+ project.sourceIntegration &&
118
+ project.sourceIntegration.source === 'GITHUB';
119
+ }
120
+ else {
121
+ project = await createNewProjectForLocalDev(projectConfig, targetProjectAccountId, createNewSandbox, hasPublicApps);
122
+ deployedBuild = await createInitialBuildForNewProject(projectConfig, projectDir, targetProjectAccountId);
123
+ }
124
+ const LocalDev = new LocalDevManager({
125
+ runnableComponents,
126
+ debug: options.debug,
127
+ deployedBuild,
128
+ isGithubLinked,
129
+ parentAccountId: targetProjectAccountId,
130
+ projectConfig,
131
+ projectDir,
132
+ projectId: project.id,
133
+ targetAccountId: targetTestingAccountId,
134
+ env,
135
+ });
136
+ await LocalDev.start();
137
+ handleExit(({ isSIGHUP }) => LocalDev.stop(!isSIGHUP));
138
+ };
139
+ exports.builder = yargs => {
140
+ addConfigOptions(yargs);
141
+ addAccountOptions(yargs);
142
+ addUseEnvironmentOptions(yargs);
143
+ addTestingOptions(yargs);
144
+ yargs.example([['$0 project dev', i18n(`${i18nKey}.examples.default`)]]);
145
+ return yargs;
146
+ };
@@ -71,9 +71,9 @@ exports.handler = async (options) => {
71
71
  let projectName;
72
72
  let projectDest;
73
73
  try {
74
- const createProjectPromptResponse = await createProjectPrompt(options);
75
- projectName = createProjectPromptResponse.name;
76
- projectDest = createProjectPromptResponse.dest;
74
+ const { name, dest } = await createProjectPrompt('', options, true);
75
+ projectName = options.name || name;
76
+ projectDest = options.dest || dest;
77
77
  const { projectExists } = await ensureProjectExists(derivedAccountId, projectName, {
78
78
  allowCreate: false,
79
79
  noLogs: true,
@@ -20,7 +20,7 @@ const i18nKey = 'commands.project.subcommands.upload';
20
20
  exports.command = 'upload';
21
21
  exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
22
22
  exports.handler = async (options) => {
23
- const { forceCreate, message, derivedAccountId, skipValidation } = options;
23
+ const { forceCreate, message, derivedAccountId } = options;
24
24
  const accountConfig = getAccountConfig(derivedAccountId);
25
25
  const accountType = accountConfig && accountConfig.accountType;
26
26
  const { projectConfig, projectDir } = await getProjectConfig();
@@ -31,7 +31,7 @@ exports.handler = async (options) => {
31
31
  uploadCommand: true,
32
32
  });
33
33
  try {
34
- const { result, uploadError } = await handleProjectUpload(derivedAccountId, projectConfig, projectDir, pollProjectBuildAndDeploy, message, useV3Api(projectConfig?.platformVersion), skipValidation);
34
+ const { result, uploadError } = await handleProjectUpload(derivedAccountId, projectConfig, projectDir, pollProjectBuildAndDeploy, message, useV3Api(projectConfig?.platformVersion));
35
35
  if (uploadError) {
36
36
  if (isSpecifiedError(uploadError, {
37
37
  subCategory: PROJECT_ERROR_TYPES.PROJECT_LOCKED,
@@ -81,11 +81,6 @@ exports.builder = yargs => {
81
81
  type: 'string',
82
82
  default: '',
83
83
  },
84
- 'skip-validation': {
85
- type: 'boolean',
86
- hidden: true,
87
- default: false,
88
- },
89
84
  });
90
85
  yargs.example([['$0 project upload', i18n(`${i18nKey}.examples.default`)]]);
91
86
  addConfigOptions(yargs);
@@ -1,13 +1 @@
1
- import { Argv, ArgumentsCamelCase } from 'yargs';
2
- import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs, TestingArgs } from '../../types/Yargs';
3
- export declare const command = "create";
4
- export declare const describe: string | undefined;
5
- type CombinedArgs = ConfigArgs & AccountArgs & EnvironmentArgs & TestingArgs;
6
- type SandboxCreateArgs = CommonArgs & CombinedArgs & {
7
- name?: string;
8
- force?: boolean;
9
- type?: string;
10
- };
11
- export declare function handler(args: ArgumentsCamelCase<SandboxCreateArgs>): Promise<void>;
12
- export declare function builder(yargs: Argv): Argv<SandboxCreateArgs>;
13
1
  export {};
@@ -1,175 +1,157 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.describe = exports.command = void 0;
4
- exports.handler = handler;
5
- exports.builder = builder;
6
- const config_1 = require("@hubspot/local-dev-lib/config");
7
- const logger_1 = require("@hubspot/local-dev-lib/logger");
8
- const index_1 = require("@hubspot/local-dev-lib/errors/index");
9
- const urls_1 = require("@hubspot/local-dev-lib/urls");
10
- const config_2 = require("@hubspot/local-dev-lib/constants/config");
11
- const environment_1 = require("@hubspot/local-dev-lib/environment");
12
- const commonOpts_1 = require("../../lib/commonOpts");
13
- const lang_1 = require("../../lib/lang");
14
- const exitCodes_1 = require("../../lib/enums/exitCodes");
15
- const ui_1 = require("../../lib/ui");
16
- const sandboxes_1 = require("../../lib/sandboxes");
17
- const usageTracking_1 = require("../../lib/usageTracking");
18
- const sandboxesPrompt_1 = require("../../lib/prompts/sandboxesPrompt");
19
- const promptUtils_1 = require("../../lib/prompts/promptUtils");
20
- const sandboxSync_1 = require("../../lib/sandboxSync");
21
- const index_2 = require("../../lib/errorHandlers/index");
22
- const buildAccount_1 = require("../../lib/buildAccount");
23
- const accountNamePrompt_1 = require("../../lib/prompts/accountNamePrompt");
3
+ // @ts-nocheck
4
+ const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, addTestingOptions, } = require('../../lib/commonOpts');
5
+ const { i18n } = require('../../lib/lang');
6
+ const { EXIT_CODES } = require('../../lib/enums/exitCodes');
7
+ const { getAccountConfig, getEnv } = require('@hubspot/local-dev-lib/config');
8
+ const { uiFeatureHighlight, uiBetaTag } = require('../../lib/ui');
9
+ const { SANDBOX_TYPE_MAP, getAvailableSyncTypes, SYNC_TYPES, validateSandboxUsageLimits, } = require('../../lib/sandboxes');
10
+ const { getValidEnv } = require('@hubspot/local-dev-lib/environment');
11
+ const { logger } = require('@hubspot/local-dev-lib/logger');
12
+ const { trackCommandUsage } = require('../../lib/usageTracking');
13
+ const { sandboxTypePrompt } = require('../../lib/prompts/sandboxesPrompt');
14
+ const { promptUser } = require('../../lib/prompts/promptUtils');
15
+ const { syncSandbox } = require('../../lib/sandboxSync');
16
+ const { logError } = require('../../lib/errorHandlers/index');
17
+ const { isMissingScopeError } = require('@hubspot/local-dev-lib/errors/index');
18
+ const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
19
+ const { HUBSPOT_ACCOUNT_TYPES, HUBSPOT_ACCOUNT_TYPE_STRINGS, } = require('@hubspot/local-dev-lib/constants/config');
20
+ const { buildSandbox } = require('../../lib/buildAccount');
21
+ const { hubspotAccountNamePrompt, } = require('../../lib/prompts/accountNamePrompt');
24
22
  const i18nKey = 'commands.sandbox.subcommands.create';
25
23
  exports.command = 'create';
26
- exports.describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`${i18nKey}.describe`), false);
27
- async function handler(args) {
28
- const { name, type, force, derivedAccountId } = args;
29
- const accountConfig = (0, config_1.getAccountConfig)(derivedAccountId);
30
- const env = (0, environment_1.getValidEnv)((0, config_1.getEnv)(derivedAccountId));
31
- (0, usageTracking_1.trackCommandUsage)('sandbox-create', {}, derivedAccountId);
32
- // Check if account config exists
33
- if (!accountConfig) {
34
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.failure.noAccountConfig`, {
35
- accountId: derivedAccountId,
36
- authCommand: (0, ui_1.uiCommandReference)('hs auth'),
37
- }));
38
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
39
- }
24
+ exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
25
+ exports.handler = async (options) => {
26
+ const { name, type, force, derivedAccountId } = options;
27
+ const accountConfig = getAccountConfig(derivedAccountId);
28
+ const env = getValidEnv(getEnv(derivedAccountId));
29
+ trackCommandUsage('sandbox-create', null, derivedAccountId);
40
30
  // Default account is not a production portal
41
31
  if (accountConfig.accountType &&
42
- accountConfig.accountType !== config_2.HUBSPOT_ACCOUNT_TYPES.STANDARD) {
43
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.failure.invalidAccountType`, {
44
- accountType: config_2.HUBSPOT_ACCOUNT_TYPE_STRINGS[config_2.HUBSPOT_ACCOUNT_TYPES[accountConfig.accountType]],
45
- accountName: accountConfig.name || '',
32
+ accountConfig.accountType !== HUBSPOT_ACCOUNT_TYPES.STANDARD) {
33
+ logger.error(i18n(`${i18nKey}.failure.invalidAccountType`, {
34
+ accountType: HUBSPOT_ACCOUNT_TYPE_STRINGS[HUBSPOT_ACCOUNT_TYPES[accountConfig.accountType]],
35
+ accountName: accountConfig.name,
46
36
  }));
47
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
37
+ process.exit(EXIT_CODES.ERROR);
48
38
  }
49
39
  let typePrompt;
50
40
  let namePrompt;
51
- if ((type && !(type.toLowerCase() in sandboxes_1.SANDBOX_TYPE_MAP)) || !type) {
41
+ if ((type && !SANDBOX_TYPE_MAP[type.toLowerCase()]) || !type) {
52
42
  if (!force) {
53
- typePrompt = await (0, sandboxesPrompt_1.sandboxTypePrompt)();
43
+ typePrompt = await sandboxTypePrompt();
54
44
  }
55
45
  else {
56
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.failure.optionMissing.type`));
57
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
46
+ logger.error(i18n(`${i18nKey}.failure.optionMissing.type`));
47
+ process.exit(EXIT_CODES.ERROR);
58
48
  }
59
49
  }
60
50
  const sandboxType = type
61
- ? sandboxes_1.SANDBOX_TYPE_MAP[type.toLowerCase()]
51
+ ? SANDBOX_TYPE_MAP[type.toLowerCase()]
62
52
  : typePrompt.type;
63
53
  // Check usage limits and exit if parent portal has no available sandboxes for the selected type
64
54
  try {
65
- await (0, sandboxes_1.validateSandboxUsageLimits)(accountConfig, sandboxType, env);
55
+ await validateSandboxUsageLimits(accountConfig, sandboxType, env);
66
56
  }
67
57
  catch (err) {
68
- if ((0, index_1.isMissingScopeError)(err)) {
69
- logger_1.logger.error((0, lang_1.i18n)('lib.sandbox.create.failure.scopes.message', {
58
+ if (isMissingScopeError(err)) {
59
+ logger.error(i18n('lib.sandbox.create.failure.scopes.message', {
70
60
  accountName: accountConfig.name || derivedAccountId,
71
61
  }));
72
- const websiteOrigin = (0, urls_1.getHubSpotWebsiteOrigin)(env);
62
+ const websiteOrigin = getHubSpotWebsiteOrigin(env);
73
63
  const url = `${websiteOrigin}/personal-access-key/${derivedAccountId}`;
74
- logger_1.logger.info((0, lang_1.i18n)('lib.sandbox.create.failure.scopes.instructions', {
64
+ logger.info(i18n('lib.sandbox.create.failure.scopes.instructions', {
75
65
  accountName: accountConfig.name || derivedAccountId,
76
66
  url,
77
67
  }));
78
68
  }
79
69
  else {
80
- (0, index_2.logError)(err);
70
+ logError(err);
81
71
  }
82
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
72
+ process.exit(EXIT_CODES.ERROR);
83
73
  }
84
74
  if (!name) {
85
75
  if (!force) {
86
- namePrompt = await (0, accountNamePrompt_1.hubspotAccountNamePrompt)({ accountType: sandboxType });
76
+ namePrompt = await hubspotAccountNamePrompt({ accountType: sandboxType });
87
77
  }
88
78
  else {
89
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.failure.optionMissing.name`));
90
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
79
+ logger.error(i18n(`${i18nKey}.failure.optionMissing.name`));
80
+ process.exit(EXIT_CODES.ERROR);
91
81
  }
92
82
  }
93
83
  const sandboxName = name || namePrompt.name;
94
84
  let contactRecordsSyncPromptResult = false;
95
85
  if (!force) {
96
- const isStandardSandbox = sandboxType === config_2.HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX;
86
+ const isStandardSandbox = sandboxType === HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX;
97
87
  // Prompt to sync contact records for standard sandboxes only
98
88
  if (isStandardSandbox) {
99
- const { contactRecordsSyncPrompt } = await (0, promptUtils_1.promptUser)([
89
+ const { contactRecordsSyncPrompt } = await promptUser([
100
90
  {
101
91
  name: 'contactRecordsSyncPrompt',
102
92
  type: 'confirm',
103
- message: (0, lang_1.i18n)('lib.sandbox.sync.confirm.syncContactRecords.standard'),
93
+ message: i18n('lib.sandbox.sync.confirm.syncContactRecords.standard'),
104
94
  },
105
95
  ]);
106
96
  contactRecordsSyncPromptResult = contactRecordsSyncPrompt;
107
97
  }
108
98
  }
109
99
  try {
110
- const result = await (0, buildAccount_1.buildSandbox)(sandboxName, accountConfig, sandboxType, env, force);
111
- const sandboxAccountConfig = (0, config_1.getAccountConfig)(result.sandbox.sandboxHubId);
112
- // Check if sandbox account config exists
113
- if (!sandboxAccountConfig) {
114
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.failure.noSandboxAccountConfig`, {
115
- accountId: result.sandbox.sandboxHubId,
116
- authCommand: (0, ui_1.uiCommandReference)('hs auth'),
117
- }));
118
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
119
- }
100
+ const result = await buildSandbox(sandboxName, accountConfig, sandboxType, env, force);
101
+ const sandboxAccountConfig = getAccountConfig(result.sandbox.sandboxHubId);
120
102
  // For v1 sandboxes, keep sync here. Once we migrate to v2, this will be handled by BE automatically
121
- async function handleSyncSandbox(syncTasks) {
122
- await (0, sandboxSync_1.syncSandbox)(sandboxAccountConfig, accountConfig, env, syncTasks);
123
- }
103
+ const handleSyncSandbox = async (syncTasks) => {
104
+ await syncSandbox(sandboxAccountConfig, accountConfig, env, syncTasks);
105
+ };
124
106
  try {
125
- let availableSyncTasks = await (0, sandboxes_1.getAvailableSyncTypes)(accountConfig, sandboxAccountConfig);
107
+ let availableSyncTasks = await getAvailableSyncTypes(accountConfig, sandboxAccountConfig);
126
108
  if (!contactRecordsSyncPromptResult) {
127
- availableSyncTasks = availableSyncTasks.filter(t => t.type !== sandboxes_1.SYNC_TYPES.OBJECT_RECORDS);
109
+ availableSyncTasks = availableSyncTasks.filter(t => t.type !== SYNC_TYPES.OBJECT_RECORDS);
128
110
  }
129
111
  await handleSyncSandbox(availableSyncTasks);
130
112
  }
131
113
  catch (err) {
132
- (0, index_2.logError)(err);
114
+ logError(err);
133
115
  throw err;
134
116
  }
135
117
  const highlightItems = ['accountsUseCommand', 'projectCreateCommand'];
136
- if (sandboxType === config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
118
+ if (sandboxType === HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
137
119
  highlightItems.push('projectDevCommand');
138
120
  }
139
121
  else {
140
122
  highlightItems.push('projectUploadCommand');
141
123
  }
142
- (0, ui_1.uiFeatureHighlight)(highlightItems);
143
- process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
124
+ uiFeatureHighlight(highlightItems);
125
+ process.exit(EXIT_CODES.SUCCESS);
144
126
  }
145
127
  catch (error) {
146
128
  // Errors are logged in util functions
147
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
129
+ process.exit(EXIT_CODES.ERROR);
148
130
  }
149
- }
150
- function builder(yargs) {
131
+ };
132
+ exports.builder = yargs => {
151
133
  yargs.option('force', {
152
134
  type: 'boolean',
153
135
  alias: 'f',
154
- describe: (0, lang_1.i18n)(`${i18nKey}.options.force.describe`),
136
+ describe: i18n(`${i18nKey}.options.force.describe`),
155
137
  });
156
138
  yargs.option('name', {
157
- describe: (0, lang_1.i18n)(`${i18nKey}.options.name.describe`),
139
+ describe: i18n(`${i18nKey}.options.name.describe`),
158
140
  type: 'string',
159
141
  });
160
142
  yargs.option('type', {
161
- describe: (0, lang_1.i18n)(`${i18nKey}.options.type.describe`),
162
- choices: Object.keys(sandboxes_1.SANDBOX_TYPE_MAP),
143
+ describe: i18n(`${i18nKey}.options.type.describe`),
144
+ type: 'string',
163
145
  });
164
146
  yargs.example([
165
147
  [
166
148
  '$0 sandbox create --name=MySandboxAccount --type=STANDARD',
167
- (0, lang_1.i18n)(`${i18nKey}.examples.default`),
149
+ i18n(`${i18nKey}.examples.default`),
168
150
  ],
169
151
  ]);
170
- (0, commonOpts_1.addConfigOptions)(yargs);
171
- (0, commonOpts_1.addAccountOptions)(yargs);
172
- (0, commonOpts_1.addUseEnvironmentOptions)(yargs);
173
- (0, commonOpts_1.addTestingOptions)(yargs);
152
+ addConfigOptions(yargs);
153
+ addAccountOptions(yargs);
154
+ addUseEnvironmentOptions(yargs);
155
+ addTestingOptions(yargs);
174
156
  return yargs;
175
- }
157
+ };
@@ -1,12 +1 @@
1
- import { Argv, ArgumentsCamelCase } from 'yargs';
2
- import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs, TestingArgs } from '../../types/Yargs';
3
- export declare const command = "delete";
4
- export declare const describe: string | undefined;
5
- type CombinedArgs = ConfigArgs & AccountArgs & EnvironmentArgs & TestingArgs;
6
- type SandboxDeleteArgs = CommonArgs & CombinedArgs & {
7
- account?: string;
8
- force?: boolean;
9
- };
10
- export declare function handler(args: ArgumentsCamelCase<SandboxDeleteArgs>): Promise<void>;
11
- export declare function builder(yargs: Argv): Argv<SandboxDeleteArgs>;
12
1
  export {};