@hubspot/cli 7.1.0-beta.0 → 7.1.0-experimental.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/account/clean.d.ts +9 -0
- package/commands/account/clean.js +51 -45
- package/commands/account/list.d.ts +7 -0
- package/commands/account/list.js +69 -60
- package/commands/account/remove.d.ts +9 -0
- package/commands/account/remove.js +33 -31
- package/commands/account/rename.d.ts +10 -0
- package/commands/account/rename.js +36 -23
- package/commands/account/use.d.ts +9 -0
- package/commands/account/use.js +26 -24
- package/commands/account.d.ts +4 -1
- package/commands/account.js +47 -13
- package/commands/create/api-sample.js +14 -4
- package/commands/customObject/create.d.ts +11 -0
- package/commands/customObject/create.js +37 -28
- package/commands/customObject/schema/create.d.ts +10 -0
- package/commands/customObject/schema/create.js +40 -42
- package/commands/customObject/schema/delete.d.ts +11 -0
- package/commands/customObject/schema/delete.js +34 -27
- package/commands/customObject/schema/fetch-all.d.ts +10 -0
- package/commands/customObject/schema/fetch-all.js +31 -24
- package/commands/customObject/schema/fetch.d.ts +11 -0
- package/commands/customObject/schema/fetch.js +34 -42
- package/commands/customObject/schema/list.d.ts +7 -0
- package/commands/customObject/schema/list.js +23 -14
- package/commands/customObject/schema/update.d.ts +11 -0
- package/commands/customObject/schema/update.js +44 -46
- package/commands/customObject/schema.d.ts +5 -1
- package/commands/customObject/schema.js +49 -11
- package/commands/customObject.d.ts +4 -1
- package/commands/customObject.js +54 -21
- package/commands/filemanager/fetch.d.ts +12 -0
- package/commands/filemanager/fetch.js +33 -30
- package/commands/filemanager/upload.d.ts +11 -0
- package/commands/filemanager/upload.js +53 -47
- package/commands/filemanager.d.ts +4 -1
- package/commands/filemanager.js +41 -7
- package/commands/hubdb/clear.d.ts +11 -0
- package/commands/hubdb/clear.js +33 -30
- package/commands/hubdb/create.d.ts +10 -0
- package/commands/hubdb/create.js +46 -40
- package/commands/hubdb/delete.d.ts +10 -0
- package/commands/hubdb/delete.js +38 -35
- package/commands/hubdb/fetch.d.ts +11 -0
- package/commands/hubdb/fetch.js +30 -27
- package/commands/hubdb.d.ts +4 -1
- package/commands/hubdb.js +45 -11
- package/commands/init.js +2 -1
- package/commands/project/add.js +62 -16
- package/commands/project/cloneApp.js +3 -3
- package/commands/project/create.js +70 -15
- package/commands/project/dev/deprecatedFlow.d.ts +5 -0
- package/commands/project/dev/deprecatedFlow.js +137 -0
- package/commands/project/dev/index.d.ts +6 -0
- package/commands/project/dev/index.js +52 -0
- package/commands/project/dev/unifiedFlow.d.ts +5 -0
- package/commands/project/dev/unifiedFlow.js +110 -0
- package/commands/project/migrateApp.js +3 -3
- package/commands/project/upload.js +7 -2
- package/commands/sandbox/create.d.ts +12 -0
- package/commands/sandbox/create.js +90 -72
- package/commands/sandbox/delete.d.ts +11 -0
- package/commands/sandbox/delete.js +112 -95
- package/commands/sandbox.d.ts +4 -1
- package/commands/sandbox.js +44 -10
- package/commands/secret/addSecret.d.ts +10 -0
- package/commands/secret/addSecret.js +32 -31
- package/commands/secret/deleteSecret.d.ts +11 -0
- package/commands/secret/deleteSecret.js +31 -29
- package/commands/secret/listSecret.d.ts +9 -0
- package/commands/secret/listSecret.js +41 -0
- package/commands/secret/updateSecret.d.ts +10 -0
- package/commands/secret/updateSecret.js +33 -31
- package/commands/secret.d.ts +4 -1
- package/commands/secret.js +46 -12
- package/commands/theme/generate-selectors.d.ts +9 -0
- package/commands/theme/generate-selectors.js +61 -43
- package/commands/theme/marketplace-validate.d.ts +10 -0
- package/commands/theme/marketplace-validate.js +32 -26
- package/commands/theme/preview.d.ts +16 -0
- package/commands/theme/preview.js +104 -97
- package/commands/theme.d.ts +4 -1
- package/commands/theme.js +44 -10
- package/lang/en.lyaml +36 -16
- package/lib/DevServerManagerV2.d.ts +34 -0
- package/lib/DevServerManagerV2.js +85 -0
- package/lib/LocalDevManager.d.ts +2 -2
- package/lib/LocalDevManagerV2.d.ts +64 -0
- package/lib/LocalDevManagerV2.js +382 -0
- package/lib/buildAccount.d.ts +2 -3
- package/lib/constants.d.ts +12 -3
- package/lib/constants.js +13 -4
- package/lib/customObject.d.ts +3 -0
- package/lib/customObject.js +15 -0
- package/lib/doctor/DiagnosticInfoBuilder.d.ts +6 -0
- package/lib/doctor/DiagnosticInfoBuilder.js +5 -0
- package/lib/doctor/Doctor.d.ts +1 -0
- package/lib/doctor/Doctor.js +10 -0
- package/lib/localDev.d.ts +2 -1
- package/lib/marketplaceValidate.d.ts +2 -2
- package/lib/process.d.ts +1 -0
- package/lib/process.js +11 -10
- package/lib/projects/buildAndDeploy.js +4 -1
- package/lib/projects/create.d.ts +5 -0
- package/lib/projects/create.js +51 -0
- package/lib/projects/index.d.ts +1 -5
- package/lib/projects/index.js +1 -62
- package/lib/projects/structure.d.ts +4 -0
- package/lib/projects/structure.js +9 -0
- package/lib/projects/upload.d.ts +1 -1
- package/lib/projects/upload.js +2 -2
- package/lib/prompts/createProjectPrompt.d.ts +6 -8
- package/lib/prompts/createProjectPrompt.js +26 -54
- package/lib/prompts/projectAddPrompt.d.ts +3 -3
- package/lib/prompts/projectAddPrompt.js +16 -6
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +3 -2
- package/lib/prompts/sandboxesPrompt.d.ts +3 -2
- package/lib/prompts/sandboxesPrompt.js +1 -1
- package/lib/sandboxSync.js +6 -2
- package/lib/sandboxes.d.ts +3 -5
- package/lib/sandboxes.js +1 -0
- package/lib/testUtils.d.ts +12 -0
- package/lib/testUtils.js +10 -0
- package/lib/ui/index.d.ts +2 -2
- package/lib/ui/index.js +1 -0
- package/lib/upload.d.ts +1 -1
- package/lib/upload.js +20 -20
- package/lib/validation.d.ts +1 -1
- package/package.json +6 -5
- package/types/ProjectComponents.d.ts +38 -0
- package/types/ProjectComponents.js +3 -0
- package/types/Projects.d.ts +1 -6
- package/types/Prompts.d.ts +7 -0
- package/types/Sandboxes.d.ts +2 -0
- package/types/Yargs.d.ts +15 -0
- package/commands/project/dev.d.ts +0 -1
- package/commands/project/dev.js +0 -146
- package/commands/secret/listSecrets.d.ts +0 -1
- package/commands/secret/listSecrets.js +0 -39
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.unifiedProjectDevFlow = unifiedProjectDevFlow;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const util_1 = __importDefault(require("util"));
|
|
9
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
10
|
+
const errors_1 = require("@hubspot/project-parsing-lib/src/lib/errors");
|
|
11
|
+
const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
|
|
12
|
+
const config_1 = require("@hubspot/local-dev-lib/config");
|
|
13
|
+
const environment_1 = require("@hubspot/local-dev-lib/environment");
|
|
14
|
+
const errorHandlers_1 = require("../../../lib/errorHandlers");
|
|
15
|
+
const exitCodes_1 = require("../../../lib/enums/exitCodes");
|
|
16
|
+
const projects_1 = require("../../../lib/projects");
|
|
17
|
+
const localDev_1 = require("../../../lib/localDev");
|
|
18
|
+
const projectDevTargetAccountPrompt_1 = require("../../../lib/prompts/projectDevTargetAccountPrompt");
|
|
19
|
+
const SpinniesManager_1 = __importDefault(require("../../../lib/ui/SpinniesManager"));
|
|
20
|
+
const LocalDevManagerV2_1 = __importDefault(require("../../../lib/LocalDevManagerV2"));
|
|
21
|
+
const process_1 = require("../../../lib/process");
|
|
22
|
+
const accountTypes_1 = require("../../../lib/accountTypes");
|
|
23
|
+
const ui_1 = require("../../../lib/ui");
|
|
24
|
+
const lang_1 = require("../../../lib/lang");
|
|
25
|
+
const i18nKey = 'commands.project.subcommands.dev';
|
|
26
|
+
async function unifiedProjectDevFlow(args, accountConfig, projectConfig, projectDir) {
|
|
27
|
+
logger_1.logger.log('Unified Apps Local Dev');
|
|
28
|
+
const targetProjectAccountId = args.derivedAccountId;
|
|
29
|
+
const env = (0, environment_1.getValidEnv)((0, config_1.getEnv)(targetProjectAccountId));
|
|
30
|
+
let projectNodes;
|
|
31
|
+
// Get IR
|
|
32
|
+
try {
|
|
33
|
+
const intermediateRepresentation = await (0, project_parsing_lib_1.translateForLocalDev)({
|
|
34
|
+
projectSourceDir: path_1.default.join(projectDir, projectConfig.srcDir),
|
|
35
|
+
platformVersion: projectConfig.platformVersion,
|
|
36
|
+
accountId: targetProjectAccountId,
|
|
37
|
+
});
|
|
38
|
+
projectNodes = intermediateRepresentation.intermediateNodesIndexedByUid;
|
|
39
|
+
logger_1.logger.debug(util_1.default.inspect(projectNodes, false, null, true));
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
if ((0, errors_1.isTranslationError)(e)) {
|
|
43
|
+
logger_1.logger.error(e.toString());
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
(0, errorHandlers_1.logError)(e);
|
|
47
|
+
}
|
|
48
|
+
return process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
49
|
+
}
|
|
50
|
+
// @TODO Do we need to do more than this or leave it to the dev servers?
|
|
51
|
+
if (!Object.keys(projectNodes).length) {
|
|
52
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.noRunnableComponents`, {
|
|
53
|
+
projectDir,
|
|
54
|
+
command: (0, ui_1.uiCommandReference)('hs project add'),
|
|
55
|
+
}));
|
|
56
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
57
|
+
}
|
|
58
|
+
// @TODO Validate component types (i.e. previously you could not have both private and public apps)
|
|
59
|
+
const accounts = (0, config_1.getConfigAccounts)();
|
|
60
|
+
// TODO Ideally this should require the user to target a Combined account
|
|
61
|
+
// For now, check if the account is either developer or standard
|
|
62
|
+
const derivedAccountIsRecommendedType = (0, accountTypes_1.isAppDeveloperAccount)(accountConfig) || (0, accountTypes_1.isStandardAccount)(accountConfig);
|
|
63
|
+
if (!derivedAccountIsRecommendedType) {
|
|
64
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.invalidUnifiedAppsAccount`));
|
|
65
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
66
|
+
}
|
|
67
|
+
let targetTestingAccountId = null;
|
|
68
|
+
const devAccountPromptResponse = await (0, projectDevTargetAccountPrompt_1.selectDeveloperTestTargetAccountPrompt)(accounts, accountConfig);
|
|
69
|
+
targetTestingAccountId = devAccountPromptResponse.targetAccountId;
|
|
70
|
+
if (!!devAccountPromptResponse.notInConfigAccount) {
|
|
71
|
+
// When the developer test account isn't configured in the CLI config yet
|
|
72
|
+
// Walk the user through adding the account's PAK to the config
|
|
73
|
+
await (0, localDev_1.useExistingDevTestAccount)(env, devAccountPromptResponse.notInConfigAccount);
|
|
74
|
+
}
|
|
75
|
+
else if (devAccountPromptResponse.createNestedAccount) {
|
|
76
|
+
// Create a new developer test account and automatically add it to the CLI config
|
|
77
|
+
targetTestingAccountId = await (0, localDev_1.createDeveloperTestAccountForLocalDev)(targetProjectAccountId, accountConfig, env);
|
|
78
|
+
}
|
|
79
|
+
// Check if project exists in HubSpot
|
|
80
|
+
const { projectExists, project: uploadedProject } = await (0, projects_1.ensureProjectExists)(targetProjectAccountId, projectConfig.name, {
|
|
81
|
+
allowCreate: false,
|
|
82
|
+
noLogs: true,
|
|
83
|
+
});
|
|
84
|
+
let deployedBuild;
|
|
85
|
+
let isGithubLinked = false;
|
|
86
|
+
let project = uploadedProject;
|
|
87
|
+
SpinniesManager_1.default.init();
|
|
88
|
+
if (projectExists && project) {
|
|
89
|
+
deployedBuild = project.deployedBuild;
|
|
90
|
+
isGithubLinked = Boolean(project.sourceIntegration && project.sourceIntegration.source === 'GITHUB');
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
project = await (0, localDev_1.createNewProjectForLocalDev)(projectConfig, targetProjectAccountId, false, false);
|
|
94
|
+
deployedBuild = await (0, localDev_1.createInitialBuildForNewProject)(projectConfig, projectDir, targetProjectAccountId);
|
|
95
|
+
}
|
|
96
|
+
const LocalDev = new LocalDevManagerV2_1.default({
|
|
97
|
+
projectNodes,
|
|
98
|
+
debug: args.debug,
|
|
99
|
+
deployedBuild,
|
|
100
|
+
isGithubLinked,
|
|
101
|
+
targetProjectAccountId,
|
|
102
|
+
targetTestingAccountId: targetTestingAccountId,
|
|
103
|
+
projectConfig,
|
|
104
|
+
projectDir,
|
|
105
|
+
projectId: project.id,
|
|
106
|
+
env,
|
|
107
|
+
});
|
|
108
|
+
await LocalDev.start();
|
|
109
|
+
(0, process_1.handleExit)(({ isSIGHUP }) => LocalDev.stop(!isSIGHUP));
|
|
110
|
+
}
|
|
@@ -71,9 +71,9 @@ exports.handler = async (options) => {
|
|
|
71
71
|
let projectName;
|
|
72
72
|
let projectDest;
|
|
73
73
|
try {
|
|
74
|
-
const
|
|
75
|
-
projectName =
|
|
76
|
-
projectDest =
|
|
74
|
+
const createProjectPromptResponse = await createProjectPrompt(options);
|
|
75
|
+
projectName = createProjectPromptResponse.name;
|
|
76
|
+
projectDest = createProjectPromptResponse.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 } = options;
|
|
23
|
+
const { forceCreate, message, derivedAccountId, skipValidation } = 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));
|
|
34
|
+
const { result, uploadError } = await handleProjectUpload(derivedAccountId, projectConfig, projectDir, pollProjectBuildAndDeploy, message, useV3Api(projectConfig?.platformVersion), skipValidation);
|
|
35
35
|
if (uploadError) {
|
|
36
36
|
if (isSpecifiedError(uploadError, {
|
|
37
37
|
subCategory: PROJECT_ERROR_TYPES.PROJECT_LOCKED,
|
|
@@ -81,6 +81,11 @@ 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
|
+
},
|
|
84
89
|
});
|
|
85
90
|
yargs.example([['$0 project upload', i18n(`${i18nKey}.examples.default`)]]);
|
|
86
91
|
addConfigOptions(yargs);
|
|
@@ -1 +1,13 @@
|
|
|
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>;
|
|
1
13
|
export {};
|
|
@@ -1,157 +1,175 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
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");
|
|
22
24
|
const i18nKey = 'commands.sandbox.subcommands.create';
|
|
23
25
|
exports.command = 'create';
|
|
24
|
-
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
25
|
-
|
|
26
|
-
const { name, type, force, derivedAccountId } =
|
|
27
|
-
const accountConfig = getAccountConfig(derivedAccountId);
|
|
28
|
-
const env = getValidEnv(getEnv(derivedAccountId));
|
|
29
|
-
trackCommandUsage('sandbox-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
|
+
}
|
|
30
40
|
// Default account is not a production portal
|
|
31
41
|
if (accountConfig.accountType &&
|
|
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,
|
|
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 || '',
|
|
36
46
|
}));
|
|
37
|
-
process.exit(EXIT_CODES.ERROR);
|
|
47
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
38
48
|
}
|
|
39
49
|
let typePrompt;
|
|
40
50
|
let namePrompt;
|
|
41
|
-
if ((type && !
|
|
51
|
+
if ((type && !(type.toLowerCase() in sandboxes_1.SANDBOX_TYPE_MAP)) || !type) {
|
|
42
52
|
if (!force) {
|
|
43
|
-
typePrompt = await sandboxTypePrompt();
|
|
53
|
+
typePrompt = await (0, sandboxesPrompt_1.sandboxTypePrompt)();
|
|
44
54
|
}
|
|
45
55
|
else {
|
|
46
|
-
logger.error(i18n(`${i18nKey}.failure.optionMissing.type`));
|
|
47
|
-
process.exit(EXIT_CODES.ERROR);
|
|
56
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.failure.optionMissing.type`));
|
|
57
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
48
58
|
}
|
|
49
59
|
}
|
|
50
60
|
const sandboxType = type
|
|
51
|
-
? SANDBOX_TYPE_MAP[type.toLowerCase()]
|
|
61
|
+
? sandboxes_1.SANDBOX_TYPE_MAP[type.toLowerCase()]
|
|
52
62
|
: typePrompt.type;
|
|
53
63
|
// Check usage limits and exit if parent portal has no available sandboxes for the selected type
|
|
54
64
|
try {
|
|
55
|
-
await validateSandboxUsageLimits(accountConfig, sandboxType, env);
|
|
65
|
+
await (0, sandboxes_1.validateSandboxUsageLimits)(accountConfig, sandboxType, env);
|
|
56
66
|
}
|
|
57
67
|
catch (err) {
|
|
58
|
-
if (isMissingScopeError(err)) {
|
|
59
|
-
logger.error(i18n('lib.sandbox.create.failure.scopes.message', {
|
|
68
|
+
if ((0, index_1.isMissingScopeError)(err)) {
|
|
69
|
+
logger_1.logger.error((0, lang_1.i18n)('lib.sandbox.create.failure.scopes.message', {
|
|
60
70
|
accountName: accountConfig.name || derivedAccountId,
|
|
61
71
|
}));
|
|
62
|
-
const websiteOrigin = getHubSpotWebsiteOrigin(env);
|
|
72
|
+
const websiteOrigin = (0, urls_1.getHubSpotWebsiteOrigin)(env);
|
|
63
73
|
const url = `${websiteOrigin}/personal-access-key/${derivedAccountId}`;
|
|
64
|
-
logger.info(i18n('lib.sandbox.create.failure.scopes.instructions', {
|
|
74
|
+
logger_1.logger.info((0, lang_1.i18n)('lib.sandbox.create.failure.scopes.instructions', {
|
|
65
75
|
accountName: accountConfig.name || derivedAccountId,
|
|
66
76
|
url,
|
|
67
77
|
}));
|
|
68
78
|
}
|
|
69
79
|
else {
|
|
70
|
-
logError(err);
|
|
80
|
+
(0, index_2.logError)(err);
|
|
71
81
|
}
|
|
72
|
-
process.exit(EXIT_CODES.ERROR);
|
|
82
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
73
83
|
}
|
|
74
84
|
if (!name) {
|
|
75
85
|
if (!force) {
|
|
76
|
-
namePrompt = await hubspotAccountNamePrompt({ accountType: sandboxType });
|
|
86
|
+
namePrompt = await (0, accountNamePrompt_1.hubspotAccountNamePrompt)({ accountType: sandboxType });
|
|
77
87
|
}
|
|
78
88
|
else {
|
|
79
|
-
logger.error(i18n(`${i18nKey}.failure.optionMissing.name`));
|
|
80
|
-
process.exit(EXIT_CODES.ERROR);
|
|
89
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.failure.optionMissing.name`));
|
|
90
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
81
91
|
}
|
|
82
92
|
}
|
|
83
93
|
const sandboxName = name || namePrompt.name;
|
|
84
94
|
let contactRecordsSyncPromptResult = false;
|
|
85
95
|
if (!force) {
|
|
86
|
-
const isStandardSandbox = sandboxType === HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX;
|
|
96
|
+
const isStandardSandbox = sandboxType === config_2.HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX;
|
|
87
97
|
// Prompt to sync contact records for standard sandboxes only
|
|
88
98
|
if (isStandardSandbox) {
|
|
89
|
-
const { contactRecordsSyncPrompt } = await promptUser([
|
|
99
|
+
const { contactRecordsSyncPrompt } = await (0, promptUtils_1.promptUser)([
|
|
90
100
|
{
|
|
91
101
|
name: 'contactRecordsSyncPrompt',
|
|
92
102
|
type: 'confirm',
|
|
93
|
-
message: i18n('lib.sandbox.sync.confirm.syncContactRecords.standard'),
|
|
103
|
+
message: (0, lang_1.i18n)('lib.sandbox.sync.confirm.syncContactRecords.standard'),
|
|
94
104
|
},
|
|
95
105
|
]);
|
|
96
106
|
contactRecordsSyncPromptResult = contactRecordsSyncPrompt;
|
|
97
107
|
}
|
|
98
108
|
}
|
|
99
109
|
try {
|
|
100
|
-
const result = await buildSandbox(sandboxName, accountConfig, sandboxType, env, force);
|
|
101
|
-
const sandboxAccountConfig = getAccountConfig(result.sandbox.sandboxHubId);
|
|
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
|
+
}
|
|
102
120
|
// For v1 sandboxes, keep sync here. Once we migrate to v2, this will be handled by BE automatically
|
|
103
|
-
|
|
104
|
-
await syncSandbox(sandboxAccountConfig, accountConfig, env, syncTasks);
|
|
105
|
-
}
|
|
121
|
+
async function handleSyncSandbox(syncTasks) {
|
|
122
|
+
await (0, sandboxSync_1.syncSandbox)(sandboxAccountConfig, accountConfig, env, syncTasks);
|
|
123
|
+
}
|
|
106
124
|
try {
|
|
107
|
-
let availableSyncTasks = await getAvailableSyncTypes(accountConfig, sandboxAccountConfig);
|
|
125
|
+
let availableSyncTasks = await (0, sandboxes_1.getAvailableSyncTypes)(accountConfig, sandboxAccountConfig);
|
|
108
126
|
if (!contactRecordsSyncPromptResult) {
|
|
109
|
-
availableSyncTasks = availableSyncTasks.filter(t => t.type !== SYNC_TYPES.OBJECT_RECORDS);
|
|
127
|
+
availableSyncTasks = availableSyncTasks.filter(t => t.type !== sandboxes_1.SYNC_TYPES.OBJECT_RECORDS);
|
|
110
128
|
}
|
|
111
129
|
await handleSyncSandbox(availableSyncTasks);
|
|
112
130
|
}
|
|
113
131
|
catch (err) {
|
|
114
|
-
logError(err);
|
|
132
|
+
(0, index_2.logError)(err);
|
|
115
133
|
throw err;
|
|
116
134
|
}
|
|
117
135
|
const highlightItems = ['accountsUseCommand', 'projectCreateCommand'];
|
|
118
|
-
if (sandboxType === HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
|
|
136
|
+
if (sandboxType === config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
|
|
119
137
|
highlightItems.push('projectDevCommand');
|
|
120
138
|
}
|
|
121
139
|
else {
|
|
122
140
|
highlightItems.push('projectUploadCommand');
|
|
123
141
|
}
|
|
124
|
-
uiFeatureHighlight(highlightItems);
|
|
125
|
-
process.exit(EXIT_CODES.SUCCESS);
|
|
142
|
+
(0, ui_1.uiFeatureHighlight)(highlightItems);
|
|
143
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
126
144
|
}
|
|
127
145
|
catch (error) {
|
|
128
146
|
// Errors are logged in util functions
|
|
129
|
-
process.exit(EXIT_CODES.ERROR);
|
|
147
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
130
148
|
}
|
|
131
|
-
}
|
|
132
|
-
|
|
149
|
+
}
|
|
150
|
+
function builder(yargs) {
|
|
133
151
|
yargs.option('force', {
|
|
134
152
|
type: 'boolean',
|
|
135
153
|
alias: 'f',
|
|
136
|
-
describe: i18n(`${i18nKey}.options.force.describe`),
|
|
154
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.force.describe`),
|
|
137
155
|
});
|
|
138
156
|
yargs.option('name', {
|
|
139
|
-
describe: i18n(`${i18nKey}.options.name.describe`),
|
|
157
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.name.describe`),
|
|
140
158
|
type: 'string',
|
|
141
159
|
});
|
|
142
160
|
yargs.option('type', {
|
|
143
|
-
describe: i18n(`${i18nKey}.options.type.describe`),
|
|
144
|
-
|
|
161
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.type.describe`),
|
|
162
|
+
choices: Object.keys(sandboxes_1.SANDBOX_TYPE_MAP),
|
|
145
163
|
});
|
|
146
164
|
yargs.example([
|
|
147
165
|
[
|
|
148
166
|
'$0 sandbox create --name=MySandboxAccount --type=STANDARD',
|
|
149
|
-
i18n(`${i18nKey}.examples.default`),
|
|
167
|
+
(0, lang_1.i18n)(`${i18nKey}.examples.default`),
|
|
150
168
|
],
|
|
151
169
|
]);
|
|
152
|
-
addConfigOptions(yargs);
|
|
153
|
-
addAccountOptions(yargs);
|
|
154
|
-
addUseEnvironmentOptions(yargs);
|
|
155
|
-
addTestingOptions(yargs);
|
|
170
|
+
(0, commonOpts_1.addConfigOptions)(yargs);
|
|
171
|
+
(0, commonOpts_1.addAccountOptions)(yargs);
|
|
172
|
+
(0, commonOpts_1.addUseEnvironmentOptions)(yargs);
|
|
173
|
+
(0, commonOpts_1.addTestingOptions)(yargs);
|
|
156
174
|
return yargs;
|
|
157
|
-
}
|
|
175
|
+
}
|
|
@@ -1 +1,12 @@
|
|
|
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>;
|
|
1
12
|
export {};
|