@hubspot/cli 7.7.35-experimental.0 → 7.8.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +31 -25
- package/commands/__tests__/auth.test.js +5 -0
- package/commands/__tests__/doctor.test.js +16 -16
- package/commands/__tests__/getStarted.test.js +2 -2
- package/commands/__tests__/mcp.test.js +1 -1
- package/commands/__tests__/project.test.js +2 -3
- package/commands/account/auth.js +1 -0
- package/commands/account/clean.js +18 -27
- package/commands/account/createOverride.js +13 -31
- package/commands/account/info.js +20 -31
- package/commands/account/list.js +16 -22
- package/commands/account/remove.js +12 -20
- package/commands/account/removeOverride.js +11 -21
- package/commands/account/rename.js +6 -9
- package/commands/account/use.js +12 -26
- package/commands/account.js +2 -2
- package/commands/app/__tests__/migrate.test.js +5 -6
- package/commands/app/migrate.js +13 -19
- package/commands/app/secret/add.js +2 -1
- package/commands/app/secret/delete.js +2 -1
- package/commands/app/secret/list.js +2 -1
- package/commands/app/secret/update.js +2 -1
- package/commands/app/secret.js +2 -1
- package/commands/app.js +2 -2
- package/commands/auth.d.ts +1 -0
- package/commands/auth.js +17 -7
- package/commands/cms/convertFields.js +7 -9
- package/commands/cms/getReactModule.js +9 -14
- package/commands/cms/lighthouseScore.js +33 -36
- package/commands/cms.js +2 -2
- package/commands/completion.js +3 -3
- package/commands/config/set.d.ts +1 -1
- package/commands/config/set.js +64 -37
- package/commands/config.js +2 -2
- package/commands/create.js +2 -2
- package/commands/customObject/create.js +10 -12
- package/commands/customObject/schema/create.js +9 -11
- package/commands/customObject/schema/delete.js +16 -16
- package/commands/customObject/schema/fetch-all.js +12 -11
- package/commands/customObject/schema/fetch.js +15 -15
- package/commands/customObject/schema/list.js +4 -4
- package/commands/customObject/schema/update.js +13 -13
- package/commands/customObject/schema.js +2 -2
- package/commands/customObject.js +6 -7
- package/commands/doctor.js +8 -11
- package/commands/feedback.js +8 -13
- package/commands/fetch.js +8 -8
- package/commands/filemanager/fetch.js +7 -7
- package/commands/filemanager/upload.js +15 -34
- package/commands/filemanager.js +2 -2
- package/commands/function/deploy.js +11 -29
- package/commands/function/list.js +8 -8
- package/commands/function/server.js +9 -11
- package/commands/function.d.ts +1 -1
- package/commands/function.js +2 -2
- package/commands/getStarted.d.ts +0 -2
- package/commands/getStarted.js +4 -4
- package/commands/hubdb/clear.js +7 -15
- package/commands/hubdb/create.js +9 -15
- package/commands/hubdb/delete.js +8 -15
- package/commands/hubdb/fetch.js +6 -9
- package/commands/hubdb.d.ts +1 -1
- package/commands/hubdb.js +2 -2
- package/commands/init.js +2 -3
- package/commands/lint.js +16 -16
- package/commands/list.js +8 -14
- package/commands/logs.js +14 -20
- package/commands/mcp/__tests__/setup.test.js +2 -2
- package/commands/mcp/setup.js +11 -2
- package/commands/mcp.js +3 -3
- package/commands/mv.js +6 -17
- package/commands/open.js +5 -5
- package/commands/project/__tests__/add.test.js +15 -13
- package/commands/project/__tests__/create.test.js +6 -6
- package/commands/project/__tests__/deploy.test.js +3 -7
- package/commands/project/__tests__/devUnifiedFlow.test.js +2 -4
- package/commands/project/__tests__/installDeps.test.js +8 -8
- package/commands/project/__tests__/list.test.js +31 -0
- package/commands/project/__tests__/logs.test.js +1 -4
- package/commands/project/__tests__/migrate.test.js +7 -7
- package/commands/project/__tests__/migrateApp.test.js +3 -7
- package/commands/project/__tests__/profile.test.js +1 -1
- package/commands/project/__tests__/validate.test.js +98 -0
- package/commands/project/add.d.ts +2 -2
- package/commands/project/add.js +7 -10
- package/commands/project/cloneApp.js +14 -19
- package/commands/project/create.js +3 -10
- package/commands/project/deploy.js +5 -5
- package/commands/project/dev/deprecatedFlow.js +9 -18
- package/commands/project/dev/index.js +21 -18
- package/commands/project/dev/unifiedFlow.js +14 -7
- package/commands/project/download.js +15 -16
- package/commands/project/installDeps.d.ts +2 -2
- package/commands/project/installDeps.js +9 -9
- package/commands/project/list.d.ts +4 -0
- package/commands/project/list.js +62 -0
- package/commands/project/listBuilds.js +12 -21
- package/commands/project/logs.js +21 -24
- package/commands/project/migrate.js +46 -15
- package/commands/project/migrateApp.js +10 -17
- package/commands/project/open.js +6 -14
- package/commands/project/profile/add.js +3 -3
- package/commands/project/profile/delete.js +1 -2
- package/commands/project/profile.js +2 -3
- package/commands/project/upload.js +16 -25
- package/commands/project/validate.js +7 -7
- package/commands/project/watch.js +13 -22
- package/commands/project.js +4 -3
- package/commands/sandbox/__tests__/create.test.js +5 -5
- package/commands/sandbox/create.js +22 -32
- package/commands/sandbox/delete.js +39 -64
- package/commands/sandbox.js +2 -2
- package/commands/secret/addSecret.js +7 -17
- package/commands/secret/deleteSecret.js +10 -20
- package/commands/secret/listSecret.js +8 -10
- package/commands/secret/updateSecret.js +9 -17
- package/commands/secret.js +2 -2
- package/commands/testAccount/__tests__/delete.test.js +2 -4
- package/commands/testAccount/create.js +2 -2
- package/commands/testAccount/delete.d.ts +4 -3
- package/commands/testAccount/delete.js +155 -14
- package/commands/testAccount/importData.d.ts +1 -1
- package/commands/testAccount/importData.js +1 -1
- package/commands/testAccount.js +1 -1
- package/commands/theme/preview.js +1 -4
- package/lang/en.d.ts +364 -110
- package/lang/en.js +409 -158
- package/lang/en.lyaml +4 -4
- package/lib/__tests__/buildAccount.test.js +4 -3
- package/lib/__tests__/commonOpts.test.js +1 -1
- package/lib/__tests__/dependencyManagement.test.js +1 -1
- package/lib/__tests__/developerTestAccounts.test.js +3 -3
- package/lib/__tests__/npm.test.js +1 -1
- package/lib/__tests__/oauth.test.js +4 -4
- package/lib/__tests__/process.test.js +10 -5
- package/lib/__tests__/sandboxSync.test.js +8 -8
- package/lib/__tests__/sandboxes.test.js +8 -8
- package/lib/__tests__/serverlessLogs.test.js +1 -1
- package/lib/__tests__/usageTracking.test.js +5 -5
- package/lib/__tests__/validation.test.js +2 -1
- package/lib/__tests__/yargsUtils.test.js +83 -9
- package/lib/app/__tests__/migrate.test.js +19 -56
- package/lib/app/__tests__/migrate_legacy.test.js +1 -1
- package/lib/app/migrate.d.ts +2 -8
- package/lib/app/migrate.js +6 -81
- package/lib/app/migrate_legacy.js +20 -24
- package/lib/buildAccount.d.ts +2 -2
- package/lib/buildAccount.js +32 -64
- package/lib/commonOpts.d.ts +1 -1
- package/lib/commonOpts.js +25 -22
- package/lib/configMigrate.js +88 -9
- package/lib/configOptions.js +7 -0
- package/lib/constants.d.ts +21 -1
- package/lib/constants.js +25 -1
- package/lib/dependencyManagement.js +9 -27
- package/lib/developerTestAccounts.js +9 -23
- package/lib/doctor/Diagnosis.js +11 -23
- package/lib/doctor/DiagnosticInfoBuilder.js +12 -11
- package/lib/doctor/Doctor.js +42 -90
- package/lib/doctor/__tests__/Doctor.test.js +4 -4
- package/lib/errorHandlers/index.js +12 -20
- package/lib/errorHandlers/suppressError.js +11 -18
- package/lib/lang.js +6 -5
- package/lib/links.d.ts +1 -0
- package/lib/links.js +14 -7
- package/lib/mcp/setup.js +1 -1
- package/lib/middleware/__test__/commandTargetingUtils.test.js +99 -0
- package/lib/middleware/__test__/configMiddleware.test.js +11 -11
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +6 -8
- package/lib/middleware/commandTargetingUtils.d.ts +8 -0
- package/lib/middleware/commandTargetingUtils.js +74 -0
- package/lib/middleware/configMiddleware.d.ts +1 -1
- package/lib/middleware/configMiddleware.js +21 -81
- package/lib/middleware/fireAlarmMiddleware.js +15 -5
- package/lib/middleware/gitMiddleware.js +5 -1
- package/lib/middleware/notificationsMiddleware.js +5 -11
- package/lib/middleware/yargsChecksMiddleware.js +6 -9
- package/lib/npm.js +2 -2
- package/lib/oauth.js +5 -5
- package/lib/process.js +5 -4
- package/lib/projects/__tests__/AppDevModeInterface.test.js +87 -90
- package/lib/projects/__tests__/LocalDevProcess.test.js +231 -19
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +89 -63
- package/lib/projects/__tests__/deploy.test.js +73 -8
- package/lib/projects/__tests__/localDevProjectHelpers.test.js +6 -2
- package/lib/projects/__tests__/platformVersion.test.js +8 -8
- package/lib/projects/__tests__/projects.test.js +12 -12
- package/lib/projects/__tests__/structure.test.js +3 -3
- package/lib/projects/__tests__/upload.test.d.ts +1 -0
- package/lib/projects/__tests__/upload.test.js +82 -0
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +6 -6
- package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +1 -0
- package/lib/projects/add/__tests__/{v3AddComponent.test.js → v2AddComponent.test.js} +39 -39
- package/lib/projects/add/{v3AddComponent.d.ts → v2AddComponent.d.ts} +1 -1
- package/lib/projects/add/{v3AddComponent.js → v2AddComponent.js} +5 -5
- package/lib/projects/create/__tests__/legacy.test.js +5 -5
- package/lib/projects/create/__tests__/v2.test.d.ts +1 -0
- package/lib/projects/create/__tests__/{v3.test.js → v2.test.js} +82 -7
- package/lib/projects/create/index.js +4 -4
- package/lib/projects/create/legacy.js +2 -2
- package/lib/projects/create/{v3.d.ts → v2.d.ts} +3 -3
- package/lib/projects/create/{v3.js → v2.js} +13 -11
- package/lib/projects/deploy.d.ts +1 -1
- package/lib/projects/deploy.js +2 -2
- package/lib/projects/localDev/AppDevModeInterface.d.ts +10 -1
- package/lib/projects/localDev/AppDevModeInterface.js +118 -89
- package/lib/projects/localDev/DevServerManager.d.ts +11 -29
- package/lib/projects/localDev/DevServerManager.js +19 -61
- package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +40 -0
- package/lib/projects/localDev/DevServerManager_DEPRECATED.js +120 -0
- package/lib/projects/localDev/LocalDevLogger.d.ts +4 -0
- package/lib/projects/localDev/LocalDevLogger.js +27 -6
- package/lib/projects/localDev/{LocalDevManager.js → LocalDevManager_DEPRECATED.js} +10 -11
- package/lib/projects/localDev/LocalDevProcess.d.ts +7 -5
- package/lib/projects/localDev/LocalDevProcess.js +93 -21
- package/lib/projects/localDev/LocalDevState.d.ts +12 -8
- package/lib/projects/localDev/LocalDevState.js +27 -17
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +6 -1
- package/lib/projects/localDev/LocalDevWebsocketServer.js +94 -33
- package/lib/projects/localDev/helpers/account.d.ts +1 -1
- package/lib/projects/localDev/helpers/account.js +2 -2
- package/lib/projects/localDev/helpers/project.d.ts +1 -0
- package/lib/projects/localDev/helpers/project.js +44 -4
- package/lib/projects/localDev/localDevWebsocketServerUtils.d.ts +7 -0
- package/lib/projects/localDev/localDevWebsocketServerUtils.js +19 -0
- package/lib/projects/platformVersion.d.ts +1 -1
- package/lib/projects/platformVersion.js +1 -1
- package/lib/projects/pollProjectBuildAndDeploy.js +4 -4
- package/lib/projects/structure.js +6 -6
- package/lib/projects/upload.d.ts +1 -1
- package/lib/projects/upload.js +17 -8
- package/lib/projects/urls.d.ts +0 -1
- package/lib/projects/urls.js +0 -3
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +1 -0
- package/lib/prompts/__tests__/projectAddPrompt.test.js +10 -10
- package/lib/prompts/accountNamePrompt.js +14 -19
- package/lib/prompts/accountsPrompt.js +2 -2
- package/lib/prompts/cmsFieldPrompt.js +2 -2
- package/lib/prompts/createApiSamplePrompt.js +5 -5
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +10 -1
- package/lib/prompts/createFunctionPrompt.js +14 -14
- package/lib/prompts/createModulePrompt.js +9 -9
- package/lib/prompts/createTemplatePrompt.js +2 -2
- package/lib/prompts/downloadProjectPrompt.js +5 -8
- package/lib/prompts/installAppPrompt.d.ts +1 -6
- package/lib/prompts/installAppPrompt.js +1 -6
- package/lib/prompts/personalAccessKeyPrompt.js +3 -3
- package/lib/prompts/previewPrompt.js +6 -6
- package/lib/prompts/projectAddPrompt.d.ts +2 -2
- package/lib/prompts/projectAddPrompt.js +9 -2
- package/lib/prompts/projectDevTargetAccountPrompt.js +20 -32
- package/lib/prompts/projectNamePrompt.js +4 -8
- package/lib/prompts/projectsLogsPrompt.js +2 -4
- package/lib/prompts/promptUtils.js +30 -9
- package/lib/prompts/sandboxesPrompt.js +7 -7
- package/lib/prompts/secretPrompt.js +3 -3
- package/lib/prompts/selectAppPrompt.js +3 -3
- package/lib/prompts/selectHubDBTablePrompt.js +9 -13
- package/lib/prompts/selectProjectTemplatePrompt.js +2 -0
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +15 -19
- package/lib/prompts/setAsDefaultAccountPrompt.js +4 -8
- package/lib/prompts/uploadPrompt.js +5 -5
- package/lib/sandboxSync.js +24 -41
- package/lib/sandboxes.js +19 -47
- package/lib/schema.js +3 -3
- package/lib/serverlessLogs.js +11 -13
- package/lib/theme/__tests__/migrate.test.d.ts +1 -0
- package/lib/theme/__tests__/migrate.test.js +233 -0
- package/lib/theme/migrate.d.ts +13 -0
- package/lib/theme/migrate.js +90 -0
- package/lib/ui/SpinniesManager.d.ts +2 -0
- package/lib/ui/SpinniesManager.js +7 -0
- package/lib/ui/boxen.js +1 -2
- package/lib/ui/git.js +13 -10
- package/lib/ui/index.d.ts +4 -0
- package/lib/ui/index.js +47 -38
- package/lib/ui/serverlessFunctionLogs.js +9 -7
- package/lib/ui/uiMessages.d.ts +72 -0
- package/lib/ui/uiMessages.js +75 -0
- package/lib/usageTracking.js +8 -8
- package/lib/validation.js +20 -23
- package/lib/yargsUtils.d.ts +1 -1
- package/lib/yargsUtils.js +12 -5
- package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +2 -2
- package/mcp-server/tools/index.js +4 -0
- package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +2 -2
- package/mcp-server/tools/project/CreateProjectTool.d.ts +2 -2
- package/mcp-server/tools/project/DocsSearchTool.d.ts +4 -1
- package/mcp-server/tools/project/DocsSearchTool.js +5 -5
- package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +23 -0
- package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +68 -0
- package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +11 -0
- package/mcp-server/tools/project/GetApplicationInfoTool.js +49 -0
- package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -1
- package/mcp-server/tools/project/GetConfigValuesTool.js +12 -6
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +2 -2
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +1 -1
- package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +12 -10
- package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +169 -0
- package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +115 -0
- package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +8 -7
- package/mcp-server/utils/__tests__/cliConfig.test.d.ts +1 -0
- package/mcp-server/utils/__tests__/cliConfig.test.js +110 -0
- package/mcp-server/utils/cliConfig.d.ts +1 -0
- package/mcp-server/utils/cliConfig.js +12 -0
- package/mcp-server/utils/toolUsageTracking.js +2 -2
- package/package.json +8 -7
- package/types/LocalDev.d.ts +19 -3
- package/ui/index.js +1 -1
- package/lib/middleware/__test__/utils.test.js +0 -51
- package/lib/middleware/utils.d.ts +0 -8
- package/lib/middleware/utils.js +0 -14
- package/lib/projects/localDev/DevServerManagerV2.d.ts +0 -22
- package/lib/projects/localDev/DevServerManagerV2.js +0 -81
- /package/{lib/middleware/__test__/utils.test.d.ts → commands/project/__tests__/list.test.d.ts} +0 -0
- /package/{lib/projects/add/__tests__/v3AddComponent.test.d.ts → commands/project/__tests__/validate.test.d.ts} +0 -0
- /package/lib/{projects/create/__tests__/v3.test.d.ts → middleware/__test__/commandTargetingUtils.test.d.ts} +0 -0
- /package/lib/projects/localDev/{LocalDevManager.d.ts → LocalDevManager_DEPRECATED.d.ts} +0 -0
|
@@ -11,7 +11,7 @@ import { poll as _poll } from '../../polling.js';
|
|
|
11
11
|
import { migrateApp2023_2 } from '../migrate_legacy.js';
|
|
12
12
|
// Mock all external dependencies
|
|
13
13
|
vi.mock('@hubspot/local-dev-lib/api/appsDev');
|
|
14
|
-
vi.mock('
|
|
14
|
+
vi.mock('../../ui/logger.js');
|
|
15
15
|
vi.mock('@hubspot/local-dev-lib/api/projects');
|
|
16
16
|
vi.mock('@hubspot/local-dev-lib/path');
|
|
17
17
|
vi.mock('@hubspot/local-dev-lib/urls');
|
package/lib/app/migrate.d.ts
CHANGED
|
@@ -12,18 +12,14 @@ export type MigrateAppArgs = CommonArgs & AccountArgs & EnvironmentArgs & Config
|
|
|
12
12
|
export declare function getUnmigratableReason(reasonCode: string, projectName: string | undefined, accountId: number): string;
|
|
13
13
|
export declare function generateFilterAppsByProjectNameFunction(projectConfig?: LoadedProjectConfig): (app: MigrationApp) => boolean;
|
|
14
14
|
export declare function buildErrorMessageFromMigrationStatus(error: MigrationFailed): string;
|
|
15
|
-
export declare function getHasMigratableThemes(projectConfig?: LoadedProjectConfig): Promise<{
|
|
16
|
-
hasMigratableThemes: boolean;
|
|
17
|
-
migratableThemesCount: number;
|
|
18
|
-
}>;
|
|
19
15
|
export declare function fetchMigrationApps(derivedAccountId: number, platformVersion: string, projectConfig?: LoadedProjectConfig): Promise<{
|
|
20
16
|
migratableApps: MigratableApp[];
|
|
21
17
|
unmigratableApps: UnmigratableApp[];
|
|
22
18
|
}>;
|
|
23
|
-
export declare function
|
|
19
|
+
export declare function validateMigrationApps(appId: MigrateAppArgs['appId'], derivedAccountId: number, { migratableApps, unmigratableApps, }: {
|
|
24
20
|
migratableApps: MigratableApp[];
|
|
25
21
|
unmigratableApps: UnmigratableApp[];
|
|
26
|
-
},
|
|
22
|
+
}, projectConfig?: LoadedProjectConfig): Promise<void>;
|
|
27
23
|
export declare function promptForAppToMigrate(allApps: MigrationApp[], derivedAccountId: number): Promise<number>;
|
|
28
24
|
export declare function selectAppToMigrate(allApps: MigrationApp[], derivedAccountId: number, appId?: number): Promise<{
|
|
29
25
|
proceed: boolean;
|
|
@@ -33,9 +29,7 @@ export declare function handleMigrationSetup(derivedAccountId: number, options:
|
|
|
33
29
|
appIdToMigrate?: number | undefined;
|
|
34
30
|
projectName?: string;
|
|
35
31
|
projectDest?: string;
|
|
36
|
-
isThemesMigration?: boolean;
|
|
37
32
|
}>;
|
|
38
|
-
export declare function handleThemesMigration(projectConfig: LoadedProjectConfig, platformVersion: string): Promise<void>;
|
|
39
33
|
export declare function beginAppMigration(derivedAccountId: number, appId: number, platformVersion: string): Promise<{
|
|
40
34
|
migrationId: number;
|
|
41
35
|
uidMap: Record<string, string>;
|
package/lib/app/migrate.js
CHANGED
|
@@ -2,7 +2,7 @@ import path from 'path';
|
|
|
2
2
|
import { getCwd, sanitizeFileName } from '@hubspot/local-dev-lib/path';
|
|
3
3
|
import { extractZipArchive } from '@hubspot/local-dev-lib/archive';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
|
-
import { validateUid
|
|
5
|
+
import { validateUid } from '@hubspot/project-parsing-lib';
|
|
6
6
|
import { UNMIGRATABLE_REASONS } from '@hubspot/local-dev-lib/constants/projects';
|
|
7
7
|
import { mapToUserFacingType } from '@hubspot/project-parsing-lib/src/lib/transform.js';
|
|
8
8
|
import { MIGRATION_STATUS } from '@hubspot/local-dev-lib/types/Migration';
|
|
@@ -10,19 +10,15 @@ import { downloadProject } from '@hubspot/local-dev-lib/api/projects';
|
|
|
10
10
|
import { Separator } from '@inquirer/prompts';
|
|
11
11
|
import { confirmPrompt, inputPrompt, listPrompt, } from '../prompts/promptUtils.js';
|
|
12
12
|
import { uiAccountDescription, uiCommandReference, uiLine, uiLink, } from '../ui/index.js';
|
|
13
|
-
import { writeProjectConfig } from '../projects/config.js';
|
|
14
13
|
import { ensureProjectExists } from '../projects/ensureProjectExists.js';
|
|
15
14
|
import SpinniesManager from '../ui/SpinniesManager.js';
|
|
16
15
|
import { DEFAULT_POLLING_STATUS_LOOKUP, poll } from '../polling.js';
|
|
17
16
|
import { checkMigrationStatusV2, CLI_UNMIGRATABLE_REASONS, continueAppMigration, initializeAppMigration, isMigrationStatus, listAppsForMigration, } from '../../api/migrate.js';
|
|
18
17
|
import fs from 'fs';
|
|
19
18
|
import { lib } from '../../lang/en.js';
|
|
20
|
-
import { PROJECT_CONFIG_FILE } from '../constants.js';
|
|
21
19
|
import { hasUnfiedAppsAccess } from '../hasFeature.js';
|
|
22
20
|
import { getProjectBuildDetailUrl, getProjectDetailUrl, } from '../projects/urls.js';
|
|
23
21
|
import { uiLogger } from '../ui/logger.js';
|
|
24
|
-
import { debugError } from '../errorHandlers/index.js';
|
|
25
|
-
import { useV3Api } from '../projects/platformVersion.js';
|
|
26
22
|
export function getUnmigratableReason(reasonCode, projectName, accountId) {
|
|
27
23
|
switch (reasonCode) {
|
|
28
24
|
case UNMIGRATABLE_REASONS.UP_TO_DATE:
|
|
@@ -59,17 +55,6 @@ export function buildErrorMessageFromMigrationStatus(error) {
|
|
|
59
55
|
})
|
|
60
56
|
.join('\n\t- ')}`;
|
|
61
57
|
}
|
|
62
|
-
export async function getHasMigratableThemes(projectConfig) {
|
|
63
|
-
if (!projectConfig?.projectConfig?.name || !projectConfig?.projectDir) {
|
|
64
|
-
return { hasMigratableThemes: false, migratableThemesCount: 0 };
|
|
65
|
-
}
|
|
66
|
-
const projectSrcDir = path.resolve(projectConfig.projectDir, projectConfig.projectConfig.srcDir);
|
|
67
|
-
const { legacyThemeDetails, legacyReactThemeDetails } = await getProjectThemeDetails(projectSrcDir);
|
|
68
|
-
return {
|
|
69
|
-
hasMigratableThemes: legacyThemeDetails.length > 0 || legacyReactThemeDetails.length > 0,
|
|
70
|
-
migratableThemesCount: legacyThemeDetails.length + legacyReactThemeDetails.length,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
58
|
export async function fetchMigrationApps(derivedAccountId, platformVersion, projectConfig) {
|
|
74
59
|
const { data: { migratableApps, unmigratableApps }, } = await listAppsForMigration(derivedAccountId, platformVersion);
|
|
75
60
|
const filteredMigratableApps = migratableApps.filter(generateFilterAppsByProjectNameFunction(projectConfig));
|
|
@@ -79,23 +64,11 @@ export async function fetchMigrationApps(derivedAccountId, platformVersion, proj
|
|
|
79
64
|
unmigratableApps: filteredUnmigratableApps,
|
|
80
65
|
};
|
|
81
66
|
}
|
|
82
|
-
export async function
|
|
67
|
+
export async function validateMigrationApps(appId, derivedAccountId, { migratableApps, unmigratableApps, }, projectConfig) {
|
|
83
68
|
const allApps = [...migratableApps, ...unmigratableApps];
|
|
84
69
|
if (allApps.length > 1 && projectConfig) {
|
|
85
70
|
throw new Error(lib.migrate.errors.project.multipleApps);
|
|
86
71
|
}
|
|
87
|
-
if (hasMigratableThemes) {
|
|
88
|
-
if (useV3Api(projectConfig?.projectConfig?.platformVersion)) {
|
|
89
|
-
throw new Error(lib.migrate.errors.project.themesAlreadyMigrated);
|
|
90
|
-
}
|
|
91
|
-
if (allApps.length > 0 && projectConfig) {
|
|
92
|
-
throw new Error(lib.migrate.errors.project.themesAndAppsNotAllowed);
|
|
93
|
-
}
|
|
94
|
-
if (!projectConfig) {
|
|
95
|
-
throw new Error(lib.migrate.errors.project.noProjectForThemesMigration);
|
|
96
|
-
}
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
72
|
if (!projectConfig?.projectConfig) {
|
|
100
73
|
allApps.forEach(app => {
|
|
101
74
|
if (app.projectName) {
|
|
@@ -178,35 +151,20 @@ export async function handleMigrationSetup(derivedAccountId, options, projectCon
|
|
|
178
151
|
text: lib.migrate.spinners.checkingForMigratableComponents,
|
|
179
152
|
});
|
|
180
153
|
const { name, dest, appId } = options;
|
|
181
|
-
const { hasMigratableThemes, migratableThemesCount } = await getHasMigratableThemes(projectConfig);
|
|
182
154
|
const { migratableApps, unmigratableApps } = await fetchMigrationApps(derivedAccountId, options.platformVersion, projectConfig);
|
|
183
155
|
SpinniesManager.remove('checkingForMigratableComponents');
|
|
184
|
-
await
|
|
156
|
+
await validateMigrationApps(appId, derivedAccountId, { migratableApps, unmigratableApps }, projectConfig);
|
|
185
157
|
const allApps = [...migratableApps, ...unmigratableApps];
|
|
186
|
-
|
|
187
|
-
let appIdToMigrate;
|
|
188
|
-
if (hasMigratableThemes) {
|
|
189
|
-
uiLogger.log(lib.migrate.prompt.themesMigration(migratableThemesCount));
|
|
190
|
-
proceed = await confirmPrompt(lib.migrate.prompt.proceed, {
|
|
191
|
-
defaultAnswer: false,
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
const appSelectionPrompt = await selectAppToMigrate(allApps, derivedAccountId, appId);
|
|
196
|
-
appIdToMigrate = appSelectionPrompt.appIdToMigrate;
|
|
197
|
-
proceed = appSelectionPrompt.proceed;
|
|
198
|
-
}
|
|
158
|
+
const { proceed, appIdToMigrate } = await selectAppToMigrate(allApps, derivedAccountId, appId);
|
|
199
159
|
if (!proceed) {
|
|
200
160
|
return {};
|
|
201
161
|
}
|
|
202
162
|
// If it's a project we don't want to prompt for dest and name, so just return early
|
|
203
|
-
// Theme migrations can only be initiated from the project directory
|
|
204
163
|
if (projectConfig &&
|
|
205
164
|
projectConfig?.projectConfig &&
|
|
206
165
|
projectConfig?.projectDir) {
|
|
207
166
|
return {
|
|
208
167
|
appIdToMigrate,
|
|
209
|
-
isThemesMigration: hasMigratableThemes,
|
|
210
168
|
projectName: projectConfig.projectConfig.name,
|
|
211
169
|
projectDest: projectConfig.projectDir,
|
|
212
170
|
};
|
|
@@ -231,35 +189,6 @@ export async function handleMigrationSetup(derivedAccountId, options, projectCon
|
|
|
231
189
|
}));
|
|
232
190
|
return { appIdToMigrate, projectName, projectDest };
|
|
233
191
|
}
|
|
234
|
-
export async function handleThemesMigration(projectConfig, platformVersion) {
|
|
235
|
-
if (!projectConfig?.projectDir || !projectConfig?.projectConfig?.srcDir) {
|
|
236
|
-
throw new Error(lib.migrate.errors.project.invalidConfig);
|
|
237
|
-
}
|
|
238
|
-
const projectSrcDir = path.resolve(projectConfig.projectDir, projectConfig.projectConfig.srcDir);
|
|
239
|
-
let migrated = false;
|
|
240
|
-
let failureReason;
|
|
241
|
-
try {
|
|
242
|
-
const migrationResult = await migrateThemes(projectConfig.projectDir, projectSrcDir);
|
|
243
|
-
migrated = migrationResult.migrated;
|
|
244
|
-
failureReason = migrationResult.failureReason;
|
|
245
|
-
}
|
|
246
|
-
catch (error) {
|
|
247
|
-
debugError(error);
|
|
248
|
-
throw new Error(lib.migrate.errors.project.failedToMigrateThemes);
|
|
249
|
-
}
|
|
250
|
-
if (!migrated) {
|
|
251
|
-
throw new Error(failureReason || lib.migrate.errors.project.failedToMigrateThemes);
|
|
252
|
-
}
|
|
253
|
-
const newProjectConfig = { ...projectConfig.projectConfig };
|
|
254
|
-
newProjectConfig.platformVersion = platformVersion;
|
|
255
|
-
const projectConfigPath = path.join(projectConfig.projectDir, PROJECT_CONFIG_FILE);
|
|
256
|
-
const success = writeProjectConfig(projectConfigPath, newProjectConfig);
|
|
257
|
-
if (!success) {
|
|
258
|
-
throw new Error(lib.migrate.errors.project.failedToUpdateProjectConfig);
|
|
259
|
-
}
|
|
260
|
-
uiLogger.log('');
|
|
261
|
-
uiLogger.log(lib.migrate.success.themesMigrationSuccess(platformVersion));
|
|
262
|
-
}
|
|
263
192
|
export async function beginAppMigration(derivedAccountId, appId, platformVersion) {
|
|
264
193
|
SpinniesManager.add('beginningMigration', {
|
|
265
194
|
text: lib.migrate.spinners.beginningMigration,
|
|
@@ -412,11 +341,7 @@ export async function migrateApp2025_2(derivedAccountId, options, projectConfig)
|
|
|
412
341
|
throw new Error(lib.migrate.errors.project.doesNotExist(derivedAccountId));
|
|
413
342
|
}
|
|
414
343
|
}
|
|
415
|
-
const { appIdToMigrate, projectName, projectDest
|
|
416
|
-
if (isThemesMigration) {
|
|
417
|
-
await handleThemesMigration(projectConfig, options.platformVersion);
|
|
418
|
-
return;
|
|
419
|
-
}
|
|
344
|
+
const { appIdToMigrate, projectName, projectDest } = await handleMigrationSetup(derivedAccountId, options, projectConfig);
|
|
420
345
|
if (!appIdToMigrate || !projectName || !projectDest) {
|
|
421
346
|
return;
|
|
422
347
|
}
|
|
@@ -433,6 +358,6 @@ export async function migrateApp2025_2(derivedAccountId, options, projectConfig)
|
|
|
433
358
|
export function logInvalidAccountError() {
|
|
434
359
|
uiLine();
|
|
435
360
|
uiLogger.error(lib.migrate.errors.invalidAccountTypeTitle);
|
|
436
|
-
uiLogger.log(lib.migrate.errors.invalidAccountTypeDescription(uiCommandReference('hs account use')
|
|
361
|
+
uiLogger.log(lib.migrate.errors.invalidAccountTypeDescription(uiCommandReference('hs account use')));
|
|
437
362
|
uiLine();
|
|
438
363
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fetchPublicAppMetadata } from '@hubspot/local-dev-lib/api/appsDev';
|
|
2
|
-
import {
|
|
2
|
+
import { uiLogger } from '../ui/logger.js';
|
|
3
3
|
import { checkMigrationStatus, downloadProject, migrateApp as migrateNonProjectApp_v2023_2, } from '@hubspot/local-dev-lib/api/projects';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { getCwd, sanitizeFileName } from '@hubspot/local-dev-lib/path';
|
|
@@ -9,7 +9,7 @@ import { promptUser } from '../prompts/promptUtils.js';
|
|
|
9
9
|
import { ApiErrorContext, logError } from '../errorHandlers/index.js';
|
|
10
10
|
import { EXIT_CODES } from '../enums/exitCodes.js';
|
|
11
11
|
import { uiAccountDescription, uiLine, uiLink } from '../ui/index.js';
|
|
12
|
-
import {
|
|
12
|
+
import { commands } from '../../lang/en.js';
|
|
13
13
|
import { isAppDeveloperAccount, isUnifiedAccount } from '../accountTypes.js';
|
|
14
14
|
import { selectPublicAppForMigrationPrompt } from '../prompts/selectPublicAppForMigrationPrompt.js';
|
|
15
15
|
import { projectNameAndDestPrompt } from '../prompts/projectNameAndDestPrompt.js';
|
|
@@ -42,9 +42,7 @@ export async function migrateApp2023_2(derivedAccountId, options, accountConfig)
|
|
|
42
42
|
const preventProjectMigrations = selectedApp.preventProjectMigrations;
|
|
43
43
|
const listingInfo = selectedApp.listingInfo;
|
|
44
44
|
if (preventProjectMigrations && listingInfo) {
|
|
45
|
-
|
|
46
|
-
appId,
|
|
47
|
-
}));
|
|
45
|
+
uiLogger.error(commands.project.migrateApp.errors.invalidApp(appId));
|
|
48
46
|
return process.exit(EXIT_CODES.ERROR);
|
|
49
47
|
}
|
|
50
48
|
}
|
|
@@ -58,24 +56,22 @@ export async function migrateApp2023_2(derivedAccountId, options, accountConfig)
|
|
|
58
56
|
noLogs: true,
|
|
59
57
|
});
|
|
60
58
|
if (projectExists) {
|
|
61
|
-
throw new Error(
|
|
62
|
-
projectName,
|
|
63
|
-
}));
|
|
59
|
+
throw new Error(commands.project.migrateApp.errors.projectAlreadyExists(projectName));
|
|
64
60
|
}
|
|
65
61
|
await trackCommandMetadataUsage('migrate-app', { step: 'STARTED' }, derivedAccountId);
|
|
66
|
-
|
|
62
|
+
uiLogger.log('');
|
|
67
63
|
uiLine();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
64
|
+
uiLogger.warn(commands.project.migrateApp.warning.title);
|
|
65
|
+
uiLogger.log(commands.project.migrateApp.warning.projectConversion);
|
|
66
|
+
uiLogger.log(commands.project.migrateApp.warning.appConfig);
|
|
67
|
+
uiLogger.log(commands.project.migrateApp.warning.buildAndDeploy);
|
|
68
|
+
uiLogger.log(commands.project.migrateApp.warning.existingApps);
|
|
69
|
+
uiLogger.log(commands.project.migrateApp.warning.copyApp);
|
|
74
70
|
uiLine();
|
|
75
71
|
const { shouldCreateApp } = await promptUser({
|
|
76
72
|
name: 'shouldCreateApp',
|
|
77
73
|
type: 'confirm',
|
|
78
|
-
message:
|
|
74
|
+
message: commands.project.migrateApp.createAppPrompt,
|
|
79
75
|
});
|
|
80
76
|
process.stdin.resume();
|
|
81
77
|
if (!shouldCreateApp) {
|
|
@@ -84,12 +80,12 @@ export async function migrateApp2023_2(derivedAccountId, options, accountConfig)
|
|
|
84
80
|
try {
|
|
85
81
|
SpinniesManager.init();
|
|
86
82
|
SpinniesManager.add('migrateApp', {
|
|
87
|
-
text:
|
|
83
|
+
text: commands.project.migrateApp.migrationStatus.inProgress(),
|
|
88
84
|
});
|
|
89
85
|
handleKeypress(async (key) => {
|
|
90
86
|
if ((key.ctrl && key.name === 'c') || key.name === 'q') {
|
|
91
87
|
SpinniesManager.remove('migrateApp');
|
|
92
|
-
|
|
88
|
+
uiLogger.log(commands.project.migrateApp.migrationInterrupted);
|
|
93
89
|
return process.exit(EXIT_CODES.SUCCESS);
|
|
94
90
|
}
|
|
95
91
|
});
|
|
@@ -104,20 +100,20 @@ export async function migrateApp2023_2(derivedAccountId, options, accountConfig)
|
|
|
104
100
|
const { data: zippedProject } = await downloadProject(derivedAccountId, projectName, 1);
|
|
105
101
|
await extractZipArchive(zippedProject, sanitizeFileName(projectName), path.resolve(absoluteDestPath), { includesRootDir: true, hideLogs: true });
|
|
106
102
|
SpinniesManager.succeed('migrateApp', {
|
|
107
|
-
text:
|
|
103
|
+
text: commands.project.migrateApp.migrationStatus.done(),
|
|
108
104
|
succeedColor: 'white',
|
|
109
105
|
});
|
|
110
|
-
|
|
106
|
+
uiLogger.log('');
|
|
111
107
|
uiLine();
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
108
|
+
uiLogger.success(commands.project.migrateApp.migrationStatus.success());
|
|
109
|
+
uiLogger.log('');
|
|
110
|
+
uiLogger.log(uiLink(commands.project.migrateApp.projectDetailsLink, `${baseUrl}/developer-projects/${derivedAccountId}/project/${encodeURIComponent(project.name)}`));
|
|
115
111
|
process.exit(EXIT_CODES.SUCCESS);
|
|
116
112
|
}
|
|
117
113
|
}
|
|
118
114
|
catch (error) {
|
|
119
115
|
SpinniesManager.fail('migrateApp', {
|
|
120
|
-
text:
|
|
116
|
+
text: commands.project.migrateApp.migrationStatus.failure(),
|
|
121
117
|
failColor: 'white',
|
|
122
118
|
});
|
|
123
119
|
throw error;
|
package/lib/buildAccount.d.ts
CHANGED
|
@@ -4,12 +4,12 @@ import { CLIAccount } from '@hubspot/local-dev-lib/types/Accounts';
|
|
|
4
4
|
import { SandboxResponse, V2Sandbox } from '@hubspot/local-dev-lib/types/Sandbox';
|
|
5
5
|
import { SandboxAccountType } from '../types/Sandboxes.js';
|
|
6
6
|
export declare function saveAccountToConfig(accountId: number | undefined, accountName: string, env: Environment, personalAccessKey?: string, force?: boolean): Promise<string>;
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function createDeveloperTestAccountV2(parentAccountId: number, testAccountConfig: DeveloperTestAccountConfig): Promise<{
|
|
8
8
|
accountName: string;
|
|
9
9
|
accountId?: number;
|
|
10
10
|
personalAccessKey?: string;
|
|
11
11
|
}>;
|
|
12
|
-
export declare function buildDeveloperTestAccount(testAccountName: string, parentAccountConfig: CLIAccount, env: Environment, portalLimit: number,
|
|
12
|
+
export declare function buildDeveloperTestAccount(testAccountName: string, parentAccountConfig: CLIAccount, env: Environment, portalLimit: number, useV2?: boolean): Promise<number>;
|
|
13
13
|
type SandboxAccount = SandboxResponse & {
|
|
14
14
|
name: string;
|
|
15
15
|
};
|
package/lib/buildAccount.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { getAccessToken, updateConfigWithAccessToken, } from '@hubspot/local-dev-lib/personalAccessKey';
|
|
2
2
|
import { accountNameExistsInConfig, updateAccountConfig, writeConfig, getAccountId, } from '@hubspot/local-dev-lib/config';
|
|
3
3
|
import { getAccountIdentifier } from '@hubspot/local-dev-lib/config/getAccountIdentifier';
|
|
4
|
-
import {
|
|
4
|
+
import { uiLogger } from './ui/logger.js';
|
|
5
5
|
import { createDeveloperTestAccount, fetchDeveloperTestAccountGateSyncStatus, generateDeveloperTestAccountPersonalAccessKey, } from '@hubspot/local-dev-lib/api/developerTestAccounts';
|
|
6
6
|
import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
|
|
7
7
|
import { createSandbox, createV2Sandbox, getSandboxPersonalAccessKey, } from '@hubspot/local-dev-lib/api/sandboxHubs';
|
|
8
8
|
import { personalAccessKeyPrompt } from './prompts/personalAccessKeyPrompt.js';
|
|
9
9
|
import { createDeveloperTestAccountConfigPrompt } from './prompts/createDeveloperTestAccountConfigPrompt.js';
|
|
10
|
-
import { i18n } from './lang.js';
|
|
11
10
|
import { cliAccountNamePrompt } from './prompts/accountNamePrompt.js';
|
|
12
11
|
import SpinniesManager from './ui/SpinniesManager.js';
|
|
13
12
|
import { debugError, logError } from './errorHandlers/index.js';
|
|
@@ -32,10 +31,8 @@ export async function saveAccountToConfig(accountId, accountName, env, personalA
|
|
|
32
31
|
const invalidAccountName = accountNameExistsInConfig(nameForConfig);
|
|
33
32
|
if (invalidAccountName) {
|
|
34
33
|
if (!force) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
name: nameForConfig,
|
|
38
|
-
}));
|
|
34
|
+
uiLogger.log('');
|
|
35
|
+
uiLogger.warn(lib.prompts.accountNamePrompt.errors.accountNameExists(nameForConfig));
|
|
39
36
|
const { name: promptName } = await cliAccountNamePrompt(nameForConfig + `_${accountId}`);
|
|
40
37
|
validName = promptName;
|
|
41
38
|
}
|
|
@@ -52,10 +49,10 @@ export async function saveAccountToConfig(accountId, accountName, env, personalA
|
|
|
52
49
|
name: validName,
|
|
53
50
|
});
|
|
54
51
|
writeConfig();
|
|
55
|
-
|
|
52
|
+
uiLogger.log('');
|
|
56
53
|
return validName;
|
|
57
54
|
}
|
|
58
|
-
export async function
|
|
55
|
+
export async function createDeveloperTestAccountV2(parentAccountId, testAccountConfig) {
|
|
59
56
|
const result = {
|
|
60
57
|
accountName: testAccountConfig.accountName,
|
|
61
58
|
};
|
|
@@ -69,7 +66,7 @@ export async function createDeveloperTestAccountV3(parentAccountId, testAccountC
|
|
|
69
66
|
}
|
|
70
67
|
catch (err) {
|
|
71
68
|
debugError(err);
|
|
72
|
-
throw new Error(lib.buildAccount.
|
|
69
|
+
throw new Error(lib.buildAccount.createDeveloperTestAccountV2.syncFailure);
|
|
73
70
|
}
|
|
74
71
|
// HACK: The status endpoint sometimes returns an early success status.
|
|
75
72
|
// Sleep for an extra 5 seconds to make sure the sync is actually complete.
|
|
@@ -81,20 +78,20 @@ export async function createDeveloperTestAccountV3(parentAccountId, testAccountC
|
|
|
81
78
|
}
|
|
82
79
|
catch (err) {
|
|
83
80
|
debugError(err);
|
|
84
|
-
throw new Error(lib.buildAccount.
|
|
81
|
+
throw new Error(lib.buildAccount.createDeveloperTestAccountV2.pakFailure);
|
|
85
82
|
}
|
|
86
83
|
return result;
|
|
87
84
|
}
|
|
88
|
-
export async function buildDeveloperTestAccount(testAccountName, parentAccountConfig, env, portalLimit,
|
|
85
|
+
export async function buildDeveloperTestAccount(testAccountName, parentAccountConfig, env, portalLimit, useV2 = false) {
|
|
89
86
|
const id = getAccountIdentifier(parentAccountConfig);
|
|
90
87
|
const parentAccountId = getAccountId(id);
|
|
91
88
|
let testAccountConfig = {
|
|
92
89
|
accountName: testAccountName,
|
|
93
90
|
};
|
|
94
91
|
if (!parentAccountId) {
|
|
95
|
-
throw new Error(
|
|
92
|
+
throw new Error(lib.developerTestAccount.create.loading.fail(''));
|
|
96
93
|
}
|
|
97
|
-
if (
|
|
94
|
+
if (useV2) {
|
|
98
95
|
testAccountConfig = await createDeveloperTestAccountConfigPrompt({
|
|
99
96
|
name: testAccountConfig.accountName,
|
|
100
97
|
description: 'Test Account created by the HubSpot CLI',
|
|
@@ -103,17 +100,15 @@ export async function buildDeveloperTestAccount(testAccountName, parentAccountCo
|
|
|
103
100
|
SpinniesManager.init({
|
|
104
101
|
succeedColor: 'white',
|
|
105
102
|
});
|
|
106
|
-
|
|
103
|
+
uiLogger.log('');
|
|
107
104
|
SpinniesManager.add('buildDeveloperTestAccount', {
|
|
108
|
-
text:
|
|
109
|
-
accountName: testAccountName,
|
|
110
|
-
}),
|
|
105
|
+
text: lib.developerTestAccount.create.loading.add(testAccountName),
|
|
111
106
|
});
|
|
112
107
|
let developerTestAccountId;
|
|
113
108
|
let developerTestAccountPersonalAccessKey;
|
|
114
109
|
try {
|
|
115
|
-
if (
|
|
116
|
-
const result = await
|
|
110
|
+
if (useV2) {
|
|
111
|
+
const result = await createDeveloperTestAccountV2(parentAccountId, testAccountConfig);
|
|
117
112
|
developerTestAccountId = result.accountId;
|
|
118
113
|
developerTestAccountPersonalAccessKey = result.personalAccessKey;
|
|
119
114
|
}
|
|
@@ -123,18 +118,13 @@ export async function buildDeveloperTestAccount(testAccountName, parentAccountCo
|
|
|
123
118
|
developerTestAccountPersonalAccessKey = data.personalAccessKey;
|
|
124
119
|
}
|
|
125
120
|
SpinniesManager.succeed('buildDeveloperTestAccount', {
|
|
126
|
-
text:
|
|
127
|
-
accountName: testAccountName,
|
|
128
|
-
accountId: developerTestAccountId,
|
|
129
|
-
}),
|
|
121
|
+
text: lib.developerTestAccount.create.loading.succeed(testAccountName, developerTestAccountId.toString()),
|
|
130
122
|
});
|
|
131
123
|
}
|
|
132
124
|
catch (e) {
|
|
133
125
|
debugError(e);
|
|
134
126
|
SpinniesManager.fail('buildDeveloperTestAccount', {
|
|
135
|
-
text:
|
|
136
|
-
accountName: testAccountName,
|
|
137
|
-
}),
|
|
127
|
+
text: lib.developerTestAccount.create.loading.fail(testAccountName),
|
|
138
128
|
});
|
|
139
129
|
handleDeveloperTestAccountCreateError(e, parentAccountId, env, portalLimit);
|
|
140
130
|
}
|
|
@@ -148,26 +138,20 @@ export async function buildDeveloperTestAccount(testAccountName, parentAccountCo
|
|
|
148
138
|
return developerTestAccountId;
|
|
149
139
|
}
|
|
150
140
|
export async function buildSandbox(sandboxName, parentAccountConfig, sandboxType, env, force = false) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
i18nKey = 'lib.sandbox.create.loading.developer';
|
|
157
|
-
}
|
|
141
|
+
const sandboxTypeKey = sandboxType === HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX
|
|
142
|
+
? 'standard'
|
|
143
|
+
: 'developer';
|
|
158
144
|
const id = getAccountIdentifier(parentAccountConfig);
|
|
159
145
|
const parentAccountId = getAccountId(id);
|
|
160
146
|
if (!parentAccountId) {
|
|
161
|
-
throw new Error(
|
|
147
|
+
throw new Error(lib.sandbox.create[sandboxTypeKey].loading.fail(''));
|
|
162
148
|
}
|
|
163
149
|
SpinniesManager.init({
|
|
164
150
|
succeedColor: 'white',
|
|
165
151
|
});
|
|
166
|
-
|
|
152
|
+
uiLogger.log('');
|
|
167
153
|
SpinniesManager.add('buildSandbox', {
|
|
168
|
-
text:
|
|
169
|
-
accountName: sandboxName,
|
|
170
|
-
}),
|
|
154
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.add(sandboxName),
|
|
171
155
|
});
|
|
172
156
|
let sandbox;
|
|
173
157
|
try {
|
|
@@ -175,18 +159,13 @@ export async function buildSandbox(sandboxName, parentAccountConfig, sandboxType
|
|
|
175
159
|
const { data } = await createSandbox(parentAccountId, sandboxName, sandboxApiType);
|
|
176
160
|
sandbox = { name: sandboxName, ...data };
|
|
177
161
|
SpinniesManager.succeed('buildSandbox', {
|
|
178
|
-
text:
|
|
179
|
-
accountName: sandboxName,
|
|
180
|
-
accountId: sandbox.sandbox.sandboxHubId,
|
|
181
|
-
}),
|
|
162
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.succeed(sandboxName, sandbox.sandbox.sandboxHubId.toString()),
|
|
182
163
|
});
|
|
183
164
|
}
|
|
184
165
|
catch (e) {
|
|
185
166
|
debugError(e);
|
|
186
167
|
SpinniesManager.fail('buildSandbox', {
|
|
187
|
-
text:
|
|
188
|
-
accountName: sandboxName,
|
|
189
|
-
}),
|
|
168
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.fail(sandboxName),
|
|
190
169
|
});
|
|
191
170
|
handleSandboxCreateError(e, env, sandboxName, parentAccountId);
|
|
192
171
|
}
|
|
@@ -200,26 +179,20 @@ export async function buildSandbox(sandboxName, parentAccountConfig, sandboxType
|
|
|
200
179
|
return sandbox;
|
|
201
180
|
}
|
|
202
181
|
export async function buildV2Sandbox(sandboxName, parentAccountConfig, sandboxType, syncObjectRecords, env, force = false) {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
i18nKey = 'lib.sandbox.create.loading.developer';
|
|
209
|
-
}
|
|
182
|
+
const sandboxTypeKey = sandboxType === HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX
|
|
183
|
+
? 'standard'
|
|
184
|
+
: 'developer';
|
|
210
185
|
const id = getAccountIdentifier(parentAccountConfig);
|
|
211
186
|
const parentAccountId = getAccountId(id);
|
|
212
187
|
if (!parentAccountId) {
|
|
213
|
-
throw new Error(
|
|
188
|
+
throw new Error(lib.sandbox.create[sandboxTypeKey].loading.fail(''));
|
|
214
189
|
}
|
|
215
190
|
SpinniesManager.init({
|
|
216
191
|
succeedColor: 'white',
|
|
217
192
|
});
|
|
218
|
-
|
|
193
|
+
uiLogger.log('');
|
|
219
194
|
SpinniesManager.add('buildV2Sandbox', {
|
|
220
|
-
text:
|
|
221
|
-
accountName: sandboxName,
|
|
222
|
-
}),
|
|
195
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.add(sandboxName),
|
|
223
196
|
});
|
|
224
197
|
let sandbox;
|
|
225
198
|
let pak;
|
|
@@ -230,18 +203,13 @@ export async function buildV2Sandbox(sandboxName, parentAccountConfig, sandboxTy
|
|
|
230
203
|
const { data: { personalAccessKey }, } = await getSandboxPersonalAccessKey(parentAccountId, sandbox.sandboxHubId);
|
|
231
204
|
pak = personalAccessKey.encodedOAuthRefreshToken;
|
|
232
205
|
SpinniesManager.succeed('buildV2Sandbox', {
|
|
233
|
-
text:
|
|
234
|
-
accountName: sandboxName,
|
|
235
|
-
accountId: sandbox.sandboxHubId,
|
|
236
|
-
}),
|
|
206
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.succeed(sandboxName, sandbox.sandboxHubId.toString()),
|
|
237
207
|
});
|
|
238
208
|
}
|
|
239
209
|
catch (e) {
|
|
240
210
|
debugError(e);
|
|
241
211
|
SpinniesManager.fail('buildV2Sandbox', {
|
|
242
|
-
text:
|
|
243
|
-
accountName: sandboxName,
|
|
244
|
-
}),
|
|
212
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.fail(sandboxName),
|
|
245
213
|
});
|
|
246
214
|
handleSandboxCreateError(e, env, sandboxName, parentAccountId);
|
|
247
215
|
}
|
package/lib/commonOpts.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare function addTestingOptions(yargs: Argv): Argv;
|
|
|
13
13
|
export declare function addUseEnvironmentOptions(yargs: Argv): Argv;
|
|
14
14
|
export declare function addJSONOutputOptions(yargs: Argv): Argv;
|
|
15
15
|
export declare function addCustomHelpOutput(yargs: Argv, command: string | string[], describe?: string): Promise<void>;
|
|
16
|
-
export declare function
|
|
16
|
+
export declare function setCLILogLevel(options: Arguments<{
|
|
17
17
|
debug?: boolean;
|
|
18
18
|
networkDebug?: boolean;
|
|
19
19
|
json?: boolean;
|