@hubspot/cli 7.6.0-beta.5 → 7.6.0-beta.7
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/README.md +0 -4
- package/api/__tests__/migrate.test.js +27 -29
- package/api/migrate.d.ts +7 -0
- package/api/migrate.js +22 -22
- package/bin/cli.js +92 -97
- package/bin/hs +2 -2
- package/bin/hscms +2 -2
- package/bin/silenceErrors.js +1 -2
- package/commands/__tests__/account.test.js +29 -34
- package/commands/__tests__/auth.test.js +11 -16
- package/commands/__tests__/cms.test.js +15 -20
- package/commands/__tests__/config.test.js +14 -19
- package/commands/__tests__/create.test.js +10 -15
- package/commands/__tests__/customObject.test.js +14 -19
- package/commands/__tests__/doctor.test.js +43 -48
- package/commands/__tests__/feedback.test.js +7 -45
- package/commands/__tests__/fetch.test.js +29 -28
- package/commands/__tests__/filemanager.test.js +14 -19
- package/commands/__tests__/function.test.js +16 -21
- package/commands/__tests__/getStarted.test.js +45 -50
- package/commands/__tests__/hubdb.test.js +17 -22
- package/commands/__tests__/init.test.js +12 -17
- package/commands/__tests__/lint.test.js +13 -18
- package/commands/__tests__/list.test.js +18 -23
- package/commands/__tests__/logs.test.js +28 -27
- package/commands/__tests__/mcp.test.js +14 -19
- package/commands/__tests__/mv.test.js +14 -52
- package/commands/__tests__/open.test.js +13 -51
- package/commands/__tests__/project.test.js +44 -49
- package/commands/__tests__/remove.test.js +13 -51
- package/commands/__tests__/sandbox.test.js +14 -19
- package/commands/__tests__/secret.test.js +16 -21
- package/commands/__tests__/testAccount.test.js +18 -21
- package/commands/__tests__/theme.test.js +15 -20
- package/commands/account/__tests__/auth.test.js +11 -16
- package/commands/account/__tests__/clean.test.js +12 -17
- package/commands/account/__tests__/createOverride.test.js +10 -15
- package/commands/account/__tests__/info.test.js +11 -16
- package/commands/account/__tests__/list.test.js +11 -16
- package/commands/account/__tests__/remove.test.js +13 -18
- package/commands/account/__tests__/removeOverride.js +8 -13
- package/commands/account/__tests__/rename.test.js +15 -20
- package/commands/account/__tests__/use.test.js +10 -15
- package/commands/account/auth.d.ts +1 -1
- package/commands/account/auth.js +78 -69
- package/commands/account/clean.d.ts +1 -1
- package/commands/account/clean.js +55 -60
- package/commands/account/createOverride.d.ts +1 -1
- package/commands/account/createOverride.js +52 -57
- package/commands/account/info.d.ts +1 -1
- package/commands/account/info.js +33 -35
- package/commands/account/list.d.ts +1 -1
- package/commands/account/list.js +43 -45
- package/commands/account/remove.d.ts +1 -1
- package/commands/account/remove.js +37 -42
- package/commands/account/removeOverride.d.ts +1 -1
- package/commands/account/removeOverride.js +38 -43
- package/commands/account/rename.d.ts +1 -1
- package/commands/account/rename.js +18 -20
- package/commands/account/use.d.ts +1 -1
- package/commands/account/use.js +29 -31
- package/commands/account.d.ts +1 -1
- package/commands/account.js +23 -28
- package/commands/app/__tests__/migrate.test.js +29 -34
- package/commands/app/migrate.d.ts +2 -2
- package/commands/app/migrate.js +40 -43
- package/commands/app/secret/__tests__/add.test.js +6 -11
- package/commands/app/secret/__tests__/delete.test.js +6 -11
- package/commands/app/secret/__tests__/list.test.js +6 -11
- package/commands/app/secret/__tests__/update.test.js +6 -11
- package/commands/app/secret/add.d.ts +1 -1
- package/commands/app/secret/add.js +28 -30
- package/commands/app/secret/delete.d.ts +1 -1
- package/commands/app/secret/delete.js +34 -36
- package/commands/app/secret/list.d.ts +1 -1
- package/commands/app/secret/list.js +25 -27
- package/commands/app/secret/update.d.ts +1 -1
- package/commands/app/secret/update.js +32 -34
- package/commands/app/secret.d.ts +1 -1
- package/commands/app/secret.js +12 -17
- package/commands/app.d.ts +1 -1
- package/commands/app.js +6 -11
- package/commands/auth.d.ts +1 -1
- package/commands/auth.js +70 -72
- package/commands/cms/convertFields.d.ts +1 -1
- package/commands/cms/convertFields.js +34 -39
- package/commands/cms/getReactModule.d.ts +1 -1
- package/commands/cms/getReactModule.js +32 -37
- package/commands/cms/lighthouseScore.d.ts +1 -1
- package/commands/cms/lighthouseScore.js +67 -72
- package/commands/cms.d.ts +1 -1
- package/commands/cms.js +11 -16
- package/commands/completion.d.ts +1 -1
- package/commands/completion.js +10 -15
- package/commands/config/migrate.d.ts +1 -1
- package/commands/config/migrate.js +27 -32
- package/commands/config/set.d.ts +2 -1
- package/commands/config/set.js +40 -32
- package/commands/config.d.ts +1 -1
- package/commands/config.js +8 -13
- package/commands/create/api-sample.d.ts +1 -1
- package/commands/create/api-sample.js +28 -33
- package/commands/create/app.d.ts +1 -1
- package/commands/create/app.js +3 -5
- package/commands/create/function.d.ts +1 -1
- package/commands/create/function.js +9 -11
- package/commands/create/index.d.ts +1 -1
- package/commands/create/index.js +19 -24
- package/commands/create/module.d.ts +1 -1
- package/commands/create/module.js +12 -14
- package/commands/create/react-app.d.ts +1 -1
- package/commands/create/react-app.js +3 -5
- package/commands/create/template.d.ts +1 -1
- package/commands/create/template.js +12 -14
- package/commands/create/vue-app.d.ts +1 -1
- package/commands/create/vue-app.js +3 -5
- package/commands/create/webpack-serverless.d.ts +1 -1
- package/commands/create/webpack-serverless.js +3 -5
- package/commands/create/website-theme.d.ts +1 -1
- package/commands/create/website-theme.js +5 -7
- package/commands/create.d.ts +2 -2
- package/commands/create.js +30 -35
- package/commands/customObject/__tests__/create.test.js +13 -18
- package/commands/customObject/__tests__/schema.test.js +18 -23
- package/commands/customObject/create.d.ts +1 -1
- package/commands/customObject/create.js +28 -30
- package/commands/customObject/schema/__tests__/create.test.js +13 -18
- package/commands/customObject/schema/__tests__/delete.test.js +13 -18
- package/commands/customObject/schema/__tests__/fetch-all.test.js +13 -18
- package/commands/customObject/schema/__tests__/fetch.test.js +13 -18
- package/commands/customObject/schema/__tests__/list.test.js +13 -18
- package/commands/customObject/schema/__tests__/update.test.js +13 -18
- package/commands/customObject/schema/create.d.ts +1 -1
- package/commands/customObject/schema/create.js +28 -30
- package/commands/customObject/schema/delete.d.ts +1 -1
- package/commands/customObject/schema/delete.js +24 -26
- package/commands/customObject/schema/fetch-all.d.ts +1 -1
- package/commands/customObject/schema/fetch-all.js +22 -24
- package/commands/customObject/schema/fetch.d.ts +1 -1
- package/commands/customObject/schema/fetch.js +24 -26
- package/commands/customObject/schema/list.d.ts +1 -1
- package/commands/customObject/schema/list.js +13 -15
- package/commands/customObject/schema/update.d.ts +1 -1
- package/commands/customObject/schema/update.js +32 -34
- package/commands/customObject/schema.d.ts +1 -1
- package/commands/customObject/schema.js +17 -22
- package/commands/customObject.d.ts +1 -1
- package/commands/customObject.js +13 -18
- package/commands/doctor.d.ts +1 -1
- package/commands/doctor.js +28 -33
- package/commands/feedback.d.ts +1 -1
- package/commands/feedback.js +19 -24
- package/commands/fetch.d.ts +1 -1
- package/commands/fetch.js +28 -30
- package/commands/filemanager/__tests__/fetch.test.js +17 -22
- package/commands/filemanager/__tests__/upload.test.js +15 -20
- package/commands/filemanager/fetch.d.ts +1 -1
- package/commands/filemanager/fetch.js +23 -25
- package/commands/filemanager/upload.d.ts +1 -1
- package/commands/filemanager/upload.js +39 -44
- package/commands/filemanager.d.ts +1 -1
- package/commands/filemanager.js +8 -13
- package/commands/function/deploy.d.ts +1 -1
- package/commands/function/deploy.js +35 -40
- package/commands/function/list.d.ts +1 -1
- package/commands/function/list.js +24 -29
- package/commands/function/server.d.ts +1 -1
- package/commands/function/server.js +15 -17
- package/commands/function.d.ts +1 -1
- package/commands/function.js +12 -18
- package/commands/getStarted.d.ts +1 -1
- package/commands/getStarted.js +119 -125
- package/commands/hubdb/__tests__/clear.test.js +13 -18
- package/commands/hubdb/__tests__/create.test.js +13 -18
- package/commands/hubdb/__tests__/delete.test.js +13 -18
- package/commands/hubdb/__tests__/fetch.test.js +13 -18
- package/commands/hubdb/__tests__/list.test.js +23 -28
- package/commands/hubdb/clear.d.ts +1 -1
- package/commands/hubdb/clear.js +20 -22
- package/commands/hubdb/create.d.ts +1 -1
- package/commands/hubdb/create.js +30 -35
- package/commands/hubdb/delete.d.ts +1 -1
- package/commands/hubdb/delete.js +24 -26
- package/commands/hubdb/fetch.d.ts +1 -1
- package/commands/hubdb/fetch.js +17 -19
- package/commands/hubdb/list.d.ts +1 -1
- package/commands/hubdb/list.js +33 -35
- package/commands/hubdb.d.ts +1 -1
- package/commands/hubdb.js +18 -24
- package/commands/init.d.ts +1 -1
- package/commands/init.js +83 -88
- package/commands/lint.d.ts +1 -1
- package/commands/lint.js +24 -26
- package/commands/list.d.ts +1 -1
- package/commands/list.js +32 -37
- package/commands/logs.d.ts +1 -1
- package/commands/logs.js +35 -37
- package/commands/mcp/__tests__/setup.test.js +7 -12
- package/commands/mcp/__tests__/start.test.js +7 -12
- package/commands/mcp/setup.d.ts +1 -1
- package/commands/mcp/setup.js +17 -19
- package/commands/mcp/start.d.ts +1 -1
- package/commands/mcp/start.js +32 -34
- package/commands/mcp.d.ts +1 -1
- package/commands/mcp.js +7 -12
- package/commands/module/marketplace-validate.d.ts +1 -1
- package/commands/module/marketplace-validate.js +21 -26
- package/commands/module.d.ts +1 -1
- package/commands/module.js +7 -13
- package/commands/mv.d.ts +1 -1
- package/commands/mv.js +20 -22
- package/commands/open.d.ts +1 -1
- package/commands/open.js +19 -21
- package/commands/project/__tests__/add.test.js +10 -15
- package/commands/project/__tests__/create.test.js +14 -19
- package/commands/project/__tests__/deploy.test.js +96 -134
- package/commands/project/__tests__/devUnifiedFlow.test.js +130 -159
- package/commands/project/__tests__/download.test.js +14 -19
- package/commands/project/__tests__/installDeps.test.js +32 -70
- package/commands/project/__tests__/listBuilds.test.js +14 -19
- package/commands/project/__tests__/logs.test.js +56 -94
- package/commands/project/__tests__/migrate.test.js +25 -30
- package/commands/project/__tests__/migrateApp.test.js +17 -22
- package/commands/project/__tests__/open.test.js +16 -21
- package/commands/project/__tests__/profile.test.js +14 -19
- package/commands/project/__tests__/upload.test.js +18 -23
- package/commands/project/__tests__/watch.test.js +14 -19
- package/commands/project/add.d.ts +1 -1
- package/commands/project/add.js +34 -36
- package/commands/project/cloneApp.d.ts +1 -1
- package/commands/project/cloneApp.js +67 -72
- package/commands/project/create.d.ts +2 -2
- package/commands/project/create.js +63 -68
- package/commands/project/deploy.d.ts +1 -1
- package/commands/project/deploy.js +67 -69
- package/commands/project/dev/deprecatedFlow.d.ts +2 -2
- package/commands/project/dev/deprecatedFlow.js +52 -58
- package/commands/project/dev/index.d.ts +1 -1
- package/commands/project/dev/index.js +44 -47
- package/commands/project/dev/unifiedFlow.d.ts +4 -4
- package/commands/project/dev/unifiedFlow.js +64 -75
- package/commands/project/download.d.ts +1 -1
- package/commands/project/download.js +35 -40
- package/commands/project/installDeps.d.ts +1 -1
- package/commands/project/installDeps.js +29 -34
- package/commands/project/listBuilds.d.ts +1 -1
- package/commands/project/listBuilds.js +40 -45
- package/commands/project/logs.d.ts +1 -1
- package/commands/project/logs.js +52 -54
- package/commands/project/migrate.d.ts +1 -1
- package/commands/project/migrate.js +24 -26
- package/commands/project/migrateApp.d.ts +2 -2
- package/commands/project/migrateApp.js +18 -20
- package/commands/project/open.d.ts +1 -1
- package/commands/project/open.js +25 -30
- package/commands/project/profile/add.d.ts +1 -1
- package/commands/project/profile/add.js +68 -73
- package/commands/project/profile/delete.d.ts +1 -1
- package/commands/project/profile/delete.js +68 -61
- package/commands/project/profile.d.ts +1 -1
- package/commands/project/profile.js +9 -14
- package/commands/project/upload.d.ts +1 -1
- package/commands/project/upload.js +50 -55
- package/commands/project/validate.d.ts +1 -1
- package/commands/project/validate.js +36 -40
- package/commands/project/watch.d.ts +1 -1
- package/commands/project/watch.js +59 -61
- package/commands/project.d.ts +1 -1
- package/commands/project.js +38 -43
- package/commands/remove.d.ts +1 -1
- package/commands/remove.js +15 -17
- package/commands/sandbox/__tests__/create.test.js +222 -20
- package/commands/sandbox/__tests__/delete.test.js +15 -20
- package/commands/sandbox/create.d.ts +2 -2
- package/commands/sandbox/create.js +92 -79
- package/commands/sandbox/delete.d.ts +1 -1
- package/commands/sandbox/delete.js +94 -96
- package/commands/sandbox.d.ts +1 -1
- package/commands/sandbox.js +9 -14
- package/commands/secret/__tests__/addSecret.test.js +13 -18
- package/commands/secret/__tests__/deleteSecret.test.js +13 -18
- package/commands/secret/__tests__/listSecret.test.js +13 -18
- package/commands/secret/__tests__/updateSecret.test.js +13 -18
- package/commands/secret/addSecret.d.ts +1 -1
- package/commands/secret/addSecret.js +26 -28
- package/commands/secret/deleteSecret.d.ts +1 -1
- package/commands/secret/deleteSecret.js +27 -29
- package/commands/secret/listSecret.d.ts +1 -1
- package/commands/secret/listSecret.js +19 -21
- package/commands/secret/updateSecret.d.ts +1 -1
- package/commands/secret/updateSecret.js +25 -27
- package/commands/secret.d.ts +1 -1
- package/commands/secret.js +13 -18
- package/commands/testAccount/__tests__/create.test.js +17 -22
- package/commands/testAccount/__tests__/createConfig.test.js +6 -11
- package/commands/testAccount/__tests__/delete.test.js +15 -20
- package/commands/testAccount/__tests__/importData.test.js +93 -0
- package/commands/testAccount/create.d.ts +1 -1
- package/commands/testAccount/create.js +63 -58
- package/commands/testAccount/createConfig.d.ts +1 -1
- package/commands/testAccount/createConfig.js +36 -41
- package/commands/testAccount/delete.d.ts +1 -1
- package/commands/testAccount/delete.js +17 -19
- package/commands/testAccount/importData.d.ts +9 -0
- package/commands/testAccount/importData.js +61 -0
- package/commands/testAccount.d.ts +1 -1
- package/commands/testAccount.js +12 -15
- package/commands/theme/__tests__/generate-selectors.test.js +7 -12
- package/commands/theme/__tests__/marketplace-validate.test.js +14 -19
- package/commands/theme/__tests__/preview.test.js +12 -17
- package/commands/theme/generate-selectors.d.ts +1 -1
- package/commands/theme/generate-selectors.js +23 -28
- package/commands/theme/marketplace-validate.d.ts +1 -1
- package/commands/theme/marketplace-validate.js +19 -24
- package/commands/theme/preview.d.ts +1 -1
- package/commands/theme/preview.js +60 -65
- package/commands/theme.d.ts +1 -1
- package/commands/theme.js +11 -16
- package/commands/upload.d.ts +1 -1
- package/commands/upload.js +77 -82
- package/commands/watch.d.ts +1 -1
- package/commands/watch.js +45 -51
- package/lang/en.d.ts +69 -9
- package/lang/en.js +442 -385
- package/lang/en.lyaml +4 -2
- package/lib/__tests__/accountTypes.test.js +20 -22
- package/lib/__tests__/buildAccount.test.js +88 -65
- package/lib/__tests__/commonOpts.test.js +20 -22
- package/lib/__tests__/dependencyManagement.test.js +46 -51
- package/lib/__tests__/developerTestAccounts.test.js +27 -62
- package/lib/__tests__/hasFeature.test.js +6 -8
- package/lib/__tests__/importData.test.js +89 -0
- package/lib/__tests__/npm.test.js +15 -20
- package/lib/__tests__/oauth.test.js +23 -28
- package/lib/__tests__/parsing.test.js +18 -20
- package/lib/__tests__/polling.test.js +24 -26
- package/lib/__tests__/process.test.js +14 -19
- package/lib/__tests__/projectProfiles.test.js +34 -39
- package/lib/__tests__/sandboxSync.test.js +30 -35
- package/lib/__tests__/sandboxes.test.js +29 -31
- package/lib/__tests__/serverlessLogs.test.js +8 -13
- package/lib/__tests__/usageTracking.test.js +33 -34
- package/lib/__tests__/validation.test.js +18 -20
- package/lib/__tests__/yargsUtils.test.js +17 -41
- package/lib/accountTypes.js +23 -34
- package/lib/app/__tests__/migrate.test.js +120 -112
- package/lib/app/__tests__/migrate_legacy.test.js +29 -31
- package/lib/app/migrate.d.ts +18 -4
- package/lib/app/migrate.js +151 -148
- package/lib/app/migrate_legacy.d.ts +1 -1
- package/lib/app/migrate_legacy.js +72 -78
- package/lib/app/urls.js +5 -9
- package/lib/buildAccount.d.ts +5 -2
- package/lib/buildAccount.js +126 -80
- package/lib/commonOpts.d.ts +1 -1
- package/lib/commonOpts.js +67 -59
- package/lib/configMigrate.js +34 -38
- package/lib/configOptions.d.ts +5 -0
- package/lib/configOptions.js +44 -40
- package/lib/constants.d.ts +9 -0
- package/lib/constants.js +40 -34
- package/lib/customObject.js +2 -6
- package/lib/dependencyManagement.js +37 -45
- package/lib/developerTestAccounts.d.ts +1 -1
- package/lib/developerTestAccounts.js +34 -39
- package/lib/doctor/Diagnosis.d.ts +1 -1
- package/lib/doctor/Diagnosis.js +25 -29
- package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
- package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
- package/lib/doctor/Doctor.d.ts +1 -1
- package/lib/doctor/Doctor.js +94 -101
- package/lib/doctor/__tests__/Diagnosis.test.js +9 -14
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +29 -34
- package/lib/doctor/__tests__/Doctor.test.js +24 -26
- package/lib/enums/exitCodes.js +1 -4
- package/lib/errorHandlers/index.js +33 -44
- package/lib/errorHandlers/suppressError.d.ts +1 -1
- package/lib/errorHandlers/suppressError.js +28 -31
- package/lib/errors/ProjectValidationError.d.ts +4 -0
- package/lib/errors/ProjectValidationError.js +9 -0
- package/lib/filesystem.js +8 -15
- package/lib/generateSelectors.js +18 -29
- package/lib/hasFeature.d.ts +2 -1
- package/lib/hasFeature.js +10 -6
- package/lib/importData.d.ts +3 -0
- package/lib/importData.js +50 -0
- package/lib/interpolation.js +11 -18
- package/lib/lang.d.ts +1 -1
- package/lib/lang.js +22 -27
- package/lib/links.js +16 -24
- package/lib/marketplaceValidate.js +29 -39
- package/lib/mcp/setup.d.ts +4 -0
- package/lib/mcp/setup.js +106 -82
- package/lib/middleware/__test__/configMiddleware.test.js +20 -55
- package/lib/middleware/__test__/gitMiddleware.test.js +7 -42
- package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -4
- package/lib/middleware/__test__/requestMiddleware.test.js +6 -11
- package/lib/middleware/__test__/utils.test.js +9 -11
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +9 -44
- package/lib/middleware/autoUpdateMiddleware.js +33 -40
- package/lib/middleware/configMiddleware.js +36 -42
- package/lib/middleware/fireAlarmMiddleware.js +12 -18
- package/lib/middleware/gitMiddleware.js +5 -8
- package/lib/middleware/notificationsMiddleware.js +16 -23
- package/lib/middleware/requestMiddleware.js +4 -10
- package/lib/middleware/utils.js +1 -4
- package/lib/middleware/yargsChecksMiddleware.js +10 -13
- package/lib/npm.js +14 -23
- package/lib/oauth.js +29 -35
- package/lib/parsing.js +3 -6
- package/lib/polling.js +11 -15
- package/lib/process.js +11 -19
- package/lib/projectProfiles.d.ts +2 -2
- package/lib/projectProfiles.js +32 -42
- package/lib/projects/ProjectLogsManager.js +18 -21
- package/lib/projects/__tests__/AppDevModeInterface.test.js +142 -148
- package/lib/projects/__tests__/LocalDevProcess.test.js +84 -144
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +202 -38
- package/lib/projects/__tests__/ProjectLogsManager.test.js +56 -58
- package/lib/projects/__tests__/buildAndDeploy.test.js +7 -9
- package/lib/projects/__tests__/components.test.js +9 -14
- package/lib/projects/__tests__/localDevHelpers.test.d.ts +1 -0
- package/lib/projects/__tests__/localDevHelpers.test.js +118 -0
- package/lib/projects/__tests__/projects.test.js +35 -40
- package/lib/projects/__tests__/structure.test.js +43 -81
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +26 -28
- package/lib/projects/add/__tests__/v3AddComponent.test.js +25 -30
- package/lib/projects/add/legacyAddComponent.d.ts +1 -1
- package/lib/projects/add/legacyAddComponent.js +24 -30
- package/lib/projects/add/v3AddComponent.d.ts +1 -1
- package/lib/projects/add/v3AddComponent.js +37 -42
- package/lib/projects/buildAndDeploy.d.ts +1 -1
- package/lib/projects/buildAndDeploy.js +88 -97
- package/lib/projects/components.js +19 -25
- package/lib/projects/config.d.ts +1 -1
- package/lib/projects/config.js +32 -41
- package/lib/projects/create/__tests__/legacy.test.js +22 -57
- package/lib/projects/create/__tests__/v3.test.js +5 -7
- package/lib/projects/create/index.d.ts +3 -3
- package/lib/projects/create/index.js +19 -22
- package/lib/projects/create/legacy.d.ts +1 -1
- package/lib/projects/create/legacy.js +25 -31
- package/lib/projects/create/v3.d.ts +3 -5
- package/lib/projects/create/v3.js +47 -59
- package/lib/projects/ensureProjectExists.js +31 -37
- package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
- package/lib/projects/localDev/AppDevModeInterface.js +58 -60
- package/lib/projects/localDev/DevServerManager.d.ts +1 -1
- package/lib/projects/localDev/DevServerManager.js +22 -24
- package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
- package/lib/projects/localDev/DevServerManagerV2.js +15 -20
- package/lib/projects/localDev/LocalDevLogger.d.ts +1 -5
- package/lib/projects/localDev/LocalDevLogger.js +66 -79
- package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
- package/lib/projects/localDev/LocalDevManager.js +106 -111
- package/lib/projects/localDev/LocalDevProcess.d.ts +7 -6
- package/lib/projects/localDev/LocalDevProcess.js +40 -53
- package/lib/projects/localDev/LocalDevState.d.ts +10 -10
- package/lib/projects/localDev/LocalDevState.js +23 -19
- package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
- package/lib/projects/localDev/LocalDevWatcher.js +6 -11
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +4 -3
- package/lib/projects/localDev/LocalDevWebsocketServer.js +78 -55
- package/lib/projects/localDev/helpers.d.ts +10 -3
- package/lib/projects/localDev/helpers.js +211 -174
- package/lib/projects/structure.d.ts +3 -3
- package/lib/projects/structure.js +32 -78
- package/lib/projects/ui.js +10 -13
- package/lib/projects/upload.d.ts +1 -1
- package/lib/projects/upload.js +57 -73
- package/lib/projects/urls.d.ts +1 -1
- package/lib/projects/urls.js +15 -25
- package/lib/projects/watch.d.ts +1 -1
- package/lib/projects/watch.js +48 -54
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +9 -11
- package/lib/prompts/__tests__/projectsLogsPrompt.test.js +11 -16
- package/lib/prompts/accountNamePrompt.d.ts +1 -1
- package/lib/prompts/accountNamePrompt.js +26 -31
- package/lib/prompts/accountsPrompt.js +12 -15
- package/lib/prompts/cmsFieldPrompt.js +13 -19
- package/lib/prompts/confirmImportDataPrompt.d.ts +1 -0
- package/lib/prompts/confirmImportDataPrompt.js +12 -0
- package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
- package/lib/prompts/createApiSamplePrompt.js +9 -12
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +1 -1
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +23 -26
- package/lib/prompts/createFunctionPrompt.js +17 -20
- package/lib/prompts/createModulePrompt.js +12 -15
- package/lib/prompts/createTemplatePrompt.js +5 -8
- package/lib/prompts/downloadProjectPrompt.js +17 -20
- package/lib/prompts/importDataFilePathPrompt.d.ts +1 -0
- package/lib/prompts/importDataFilePathPrompt.js +24 -0
- package/lib/prompts/importDataTestAccountSelectPrompt.d.ts +3 -0
- package/lib/prompts/importDataTestAccountSelectPrompt.js +29 -0
- package/lib/prompts/installAppPrompt.js +19 -26
- package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
- package/lib/prompts/personalAccessKeyPrompt.js +40 -47
- package/lib/prompts/previewPrompt.js +15 -22
- package/lib/prompts/projectAddPrompt.d.ts +1 -1
- package/lib/prompts/projectAddPrompt.js +14 -18
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
- package/lib/prompts/projectDevTargetAccountPrompt.js +48 -54
- package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
- package/lib/prompts/projectNameAndDestPrompt.js +22 -29
- package/lib/prompts/projectNamePrompt.js +11 -14
- package/lib/prompts/projectsLogsPrompt.js +5 -8
- package/lib/prompts/promptUtils.d.ts +1 -1
- package/lib/prompts/promptUtils.js +17 -24
- package/lib/prompts/sandboxesPrompt.d.ts +1 -1
- package/lib/prompts/sandboxesPrompt.js +26 -30
- package/lib/prompts/secretPrompt.js +10 -15
- package/lib/prompts/selectAppPrompt.js +11 -14
- package/lib/prompts/selectHubDBTablePrompt.js +24 -30
- package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
- package/lib/prompts/selectProjectTemplatePrompt.js +10 -13
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
- package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
- package/lib/prompts/uploadPrompt.js +11 -17
- package/lib/sandboxSync.d.ts +1 -1
- package/lib/sandboxSync.js +58 -65
- package/lib/sandboxes.d.ts +5 -1
- package/lib/sandboxes.js +72 -76
- package/lib/schema.js +13 -20
- package/lib/serverlessLogs.js +45 -52
- package/lib/testUtils.js +4 -8
- package/lib/ui/SpinniesManager.d.ts +1 -1
- package/lib/ui/SpinniesManager.js +29 -34
- package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +1 -0
- package/lib/ui/__tests__/removeAnsiCodes.test.js +84 -0
- package/lib/ui/boxen.js +11 -14
- package/lib/ui/git.js +14 -20
- package/lib/ui/index.d.ts +6 -0
- package/lib/ui/index.js +56 -76
- package/lib/ui/logger.js +10 -13
- package/lib/ui/removeAnsiCodes.d.ts +1 -0
- package/lib/ui/removeAnsiCodes.js +4 -0
- package/lib/ui/serverlessFunctionLogs.js +14 -20
- package/lib/ui/spinniesUtils.js +24 -39
- package/lib/ui/supportHyperlinks.js +3 -6
- package/lib/ui/supportsColor.js +11 -17
- package/lib/ui/table.js +6 -13
- package/lib/upload.js +15 -21
- package/lib/usageTracking.js +35 -44
- package/lib/utils/hasFlag.js +2 -8
- package/lib/validation.js +48 -87
- package/lib/yargsUtils.d.ts +2 -1
- package/lib/yargsUtils.js +19 -16
- package/mcp-server/server.js +6 -8
- package/mcp-server/tools/index.js +15 -16
- package/mcp-server/tools/project/{AddFeatureToProject.d.ts → AddFeatureToProjectTool.d.ts} +5 -5
- package/mcp-server/tools/project/AddFeatureToProjectTool.js +76 -0
- package/mcp-server/tools/project/CreateProjectTool.d.ts +4 -4
- package/mcp-server/tools/project/CreateProjectTool.js +40 -54
- package/mcp-server/tools/project/{DeployProject.d.ts → DeployProjectTool.d.ts} +2 -2
- package/mcp-server/tools/project/DeployProjectTool.js +49 -0
- package/mcp-server/tools/project/GetConfigValuesTool.d.ts +20 -0
- package/mcp-server/tools/project/GetConfigValuesTool.js +51 -0
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
- package/mcp-server/tools/project/GuidedWalkthroughTool.js +21 -25
- package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
- package/mcp-server/tools/project/UploadProjectTools.js +12 -19
- package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/ValidateProjectTool.js +13 -17
- package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/{AddFeatureToProject.test.js → AddFeatureToProjectTool.test.js} +15 -17
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +12 -15
- package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/{DeployProject.test.js → DeployProjectTool.test.js} +6 -8
- package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +198 -0
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +4 -6
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +4 -6
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +4 -6
- package/mcp-server/tools/project/constants.d.ts +1 -0
- package/mcp-server/tools/project/constants.js +14 -9
- package/mcp-server/types.js +1 -5
- package/mcp-server/utils/__tests__/command.test.js +9 -11
- package/mcp-server/utils/__tests__/project.test.js +12 -17
- package/mcp-server/utils/command.d.ts +1 -1
- package/mcp-server/utils/command.js +4 -11
- package/mcp-server/utils/content.d.ts +1 -1
- package/mcp-server/utils/content.js +2 -6
- package/mcp-server/utils/project.js +8 -14
- package/mcp-server/utils/toolUsageTracking.js +11 -14
- package/package.json +21 -14
- package/types/Cms.d.ts +1 -1
- package/types/Cms.js +1 -2
- package/types/LocalDev.d.ts +4 -7
- package/types/LocalDev.js +1 -2
- package/types/ProjectComponents.d.ts +2 -2
- package/types/ProjectComponents.js +1 -2
- package/types/Projects.d.ts +1 -1
- package/types/Projects.js +2 -5
- package/types/Prompts.js +1 -2
- package/types/Sandboxes.js +1 -2
- package/types/Yargs.js +1 -2
- package/ui/index.d.ts +1 -0
- package/ui/index.js +6 -0
- package/mcp-server/tools/project/AddFeatureToProject.js +0 -88
- package/mcp-server/tools/project/DeployProject.js +0 -53
- /package/{mcp-server/tools/project/__tests__/AddFeatureToProject.test.d.ts → commands/testAccount/__tests__/importData.test.d.ts} +0 -0
- /package/{mcp-server/tools/project/__tests__/DeployProject.test.d.ts → lib/__tests__/importData.test.d.ts} +0 -0
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const polling_1 = require("../../polling");
|
|
13
|
-
const migrate_legacy_1 = require("../migrate_legacy");
|
|
1
|
+
import { fetchPublicAppMetadata as _fetchPublicAppMetadata } from '@hubspot/local-dev-lib/api/appsDev';
|
|
2
|
+
import { downloadProject as _downloadProject, migrateApp as _migrateNonProjectApp_v2023_2, } from '@hubspot/local-dev-lib/api/projects';
|
|
3
|
+
import { extractZipArchive } from '@hubspot/local-dev-lib/archive';
|
|
4
|
+
import { promptUser as _promptUser } from '../../prompts/promptUtils.js';
|
|
5
|
+
import { EXIT_CODES } from '../../enums/exitCodes.js';
|
|
6
|
+
import { isAppDeveloperAccount as _isAppDeveloperAccount, isUnifiedAccount as _isUnifiedAccount, } from '../../accountTypes.js';
|
|
7
|
+
import { selectPublicAppForMigrationPrompt as _selectPublicAppForMigrationPrompt } from '../../prompts/selectPublicAppForMigrationPrompt.js';
|
|
8
|
+
import { projectNameAndDestPrompt as _projectNameAndDestPrompt } from '../../prompts/projectNameAndDestPrompt.js';
|
|
9
|
+
import { ensureProjectExists as _ensureProjectExists } from '../../projects/ensureProjectExists.js';
|
|
10
|
+
import { poll as _poll } from '../../polling.js';
|
|
11
|
+
import { migrateApp2023_2 } from '../migrate_legacy.js';
|
|
14
12
|
// Mock all external dependencies
|
|
15
13
|
vi.mock('@hubspot/local-dev-lib/api/appsDev');
|
|
16
14
|
vi.mock('@hubspot/local-dev-lib/logger');
|
|
@@ -28,16 +26,16 @@ vi.mock('../../usageTracking');
|
|
|
28
26
|
vi.mock('../../ui/SpinniesManager');
|
|
29
27
|
vi.mock('../../process');
|
|
30
28
|
vi.mock('../../polling');
|
|
31
|
-
const isAppDeveloperAccount =
|
|
32
|
-
const isUnifiedAccount =
|
|
33
|
-
const selectPublicAppForMigrationPrompt =
|
|
34
|
-
const projectNameAndDestPrompt =
|
|
35
|
-
const ensureProjectExists =
|
|
36
|
-
const poll =
|
|
37
|
-
const fetchPublicAppMetadata =
|
|
38
|
-
const migrateNonProjectApp_v2023_2 =
|
|
39
|
-
const downloadProject =
|
|
40
|
-
const promptUser =
|
|
29
|
+
const isAppDeveloperAccount = _isAppDeveloperAccount;
|
|
30
|
+
const isUnifiedAccount = _isUnifiedAccount;
|
|
31
|
+
const selectPublicAppForMigrationPrompt = _selectPublicAppForMigrationPrompt;
|
|
32
|
+
const projectNameAndDestPrompt = _projectNameAndDestPrompt;
|
|
33
|
+
const ensureProjectExists = _ensureProjectExists;
|
|
34
|
+
const poll = _poll;
|
|
35
|
+
const fetchPublicAppMetadata = _fetchPublicAppMetadata;
|
|
36
|
+
const migrateNonProjectApp_v2023_2 = _migrateNonProjectApp_v2023_2;
|
|
37
|
+
const downloadProject = _downloadProject;
|
|
38
|
+
const promptUser = _promptUser;
|
|
41
39
|
describe('migrateApp2023_2', () => {
|
|
42
40
|
const mockDerivedAccountId = 123;
|
|
43
41
|
const mockOptions = {
|
|
@@ -96,12 +94,12 @@ describe('migrateApp2023_2', () => {
|
|
|
96
94
|
});
|
|
97
95
|
it('should exit if account is not an app developer account and not unified', async () => {
|
|
98
96
|
isAppDeveloperAccount.mockReturnValue(false);
|
|
99
|
-
await
|
|
97
|
+
await migrateApp2023_2(mockDerivedAccountId, mockOptions, mockAccountConfig);
|
|
100
98
|
expect(migrateNonProjectApp_v2023_2).not.toHaveBeenCalled();
|
|
101
|
-
expect(process.exit).toHaveBeenCalledWith(
|
|
99
|
+
expect(process.exit).toHaveBeenCalledWith(EXIT_CODES.SUCCESS);
|
|
102
100
|
});
|
|
103
101
|
it('should proceed with migration for valid app developer account', async () => {
|
|
104
|
-
await
|
|
102
|
+
await migrateApp2023_2(mockDerivedAccountId, mockOptions, mockAccountConfig);
|
|
105
103
|
expect(selectPublicAppForMigrationPrompt).toHaveBeenCalled();
|
|
106
104
|
expect(fetchPublicAppMetadata).toHaveBeenCalledWith(appId, mockDerivedAccountId);
|
|
107
105
|
expect(projectNameAndDestPrompt).toHaveBeenCalled();
|
|
@@ -109,12 +107,12 @@ describe('migrateApp2023_2', () => {
|
|
|
109
107
|
expect(migrateNonProjectApp_v2023_2).toHaveBeenCalled();
|
|
110
108
|
expect(poll).toHaveBeenCalled();
|
|
111
109
|
expect(downloadProject).toHaveBeenCalled();
|
|
112
|
-
expect(
|
|
110
|
+
expect(extractZipArchive).toHaveBeenCalled();
|
|
113
111
|
});
|
|
114
112
|
it('should handle migration failure gracefully', async () => {
|
|
115
113
|
const errorMessage = 'Migration failed';
|
|
116
114
|
migrateNonProjectApp_v2023_2.mockRejectedValue(new Error(errorMessage));
|
|
117
|
-
await expect(
|
|
115
|
+
await expect(migrateApp2023_2(mockDerivedAccountId, mockOptions, mockAccountConfig)).rejects.toThrow(errorMessage);
|
|
118
116
|
});
|
|
119
117
|
it('should handle non-migratable apps', async () => {
|
|
120
118
|
fetchPublicAppMetadata.mockResolvedValue({
|
|
@@ -124,13 +122,13 @@ describe('migrateApp2023_2', () => {
|
|
|
124
122
|
listingInfo: { someInfo: 'test' },
|
|
125
123
|
},
|
|
126
124
|
});
|
|
127
|
-
await
|
|
128
|
-
expect(process.exit).toHaveBeenCalledWith(
|
|
125
|
+
await migrateApp2023_2(mockDerivedAccountId, mockOptions, mockAccountConfig);
|
|
126
|
+
expect(process.exit).toHaveBeenCalledWith(EXIT_CODES.ERROR);
|
|
129
127
|
});
|
|
130
128
|
it('should handle existing project error', async () => {
|
|
131
129
|
ensureProjectExists.mockResolvedValue({
|
|
132
130
|
projectExists: true,
|
|
133
131
|
});
|
|
134
|
-
await expect(
|
|
132
|
+
await expect(migrateApp2023_2(mockDerivedAccountId, mockOptions, mockAccountConfig)).rejects.toThrow('A project with name test-project already exists');
|
|
135
133
|
});
|
|
136
134
|
});
|
package/lib/app/migrate.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ArgumentsCamelCase } from 'yargs';
|
|
2
|
-
import { LoadedProjectConfig } from '../projects/config';
|
|
3
|
-
import { MigrationApp, MigrationFailed, MigrationStatus } from '../../api/migrate';
|
|
4
|
-
import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs } from '../../types/Yargs';
|
|
2
|
+
import { LoadedProjectConfig } from '../projects/config.js';
|
|
3
|
+
import { MigrationApp, MigratableApp, UnmigratableApp, MigrationFailed, MigrationStatus } from '../../api/migrate.js';
|
|
4
|
+
import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs } from '../../types/Yargs.js';
|
|
5
5
|
export type MigrateAppArgs = CommonArgs & AccountArgs & EnvironmentArgs & ConfigArgs & {
|
|
6
6
|
name?: string;
|
|
7
7
|
dest?: string;
|
|
@@ -12,7 +12,21 @@ 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
|
|
15
|
+
export declare function fetchMigrationThemes(derivedAccountId: number, projectConfig?: LoadedProjectConfig): Promise<{
|
|
16
|
+
theme: string[];
|
|
17
|
+
reactTheme: string[];
|
|
18
|
+
}>;
|
|
19
|
+
export declare function fetchMigrationApps(derivedAccountId: number, platformVersion: string, projectConfig?: LoadedProjectConfig): Promise<{
|
|
20
|
+
migratableApps: MigratableApp[];
|
|
21
|
+
unmigratableApps: UnmigratableApp[];
|
|
22
|
+
}>;
|
|
23
|
+
export declare function validateMigrationAppsAndThemes(appId: MigrateAppArgs['appId'], derivedAccountId: number, { migratableApps, unmigratableApps, }: {
|
|
24
|
+
migratableApps: MigratableApp[];
|
|
25
|
+
unmigratableApps: UnmigratableApp[];
|
|
26
|
+
}, migratableThemes: {
|
|
27
|
+
theme: string[];
|
|
28
|
+
reactTheme: string[];
|
|
29
|
+
}, projectConfig?: LoadedProjectConfig): Promise<void>;
|
|
16
30
|
export declare function promptForAppToMigrate(allApps: MigrationApp[], derivedAccountId: number): Promise<number>;
|
|
17
31
|
export declare function selectAppToMigrate(allApps: MigrationApp[], derivedAccountId: number, appId?: number): Promise<{
|
|
18
32
|
proceed: boolean;
|
package/lib/app/migrate.js
CHANGED
|
@@ -1,60 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
|
|
24
|
-
const projects_1 = require("@hubspot/local-dev-lib/constants/projects");
|
|
25
|
-
const transform_1 = require("@hubspot/project-parsing-lib/src/lib/transform");
|
|
26
|
-
const Migration_1 = require("@hubspot/local-dev-lib/types/Migration");
|
|
27
|
-
const projects_2 = require("@hubspot/local-dev-lib/api/projects");
|
|
28
|
-
const prompts_1 = require("@inquirer/prompts");
|
|
29
|
-
const promptUtils_1 = require("../prompts/promptUtils");
|
|
30
|
-
const ui_1 = require("../ui");
|
|
31
|
-
const ensureProjectExists_1 = require("../projects/ensureProjectExists");
|
|
32
|
-
const SpinniesManager_1 = __importDefault(require("../ui/SpinniesManager"));
|
|
33
|
-
const polling_1 = require("../polling");
|
|
34
|
-
const migrate_1 = require("../../api/migrate");
|
|
35
|
-
const fs_1 = __importDefault(require("fs"));
|
|
36
|
-
const en_1 = require("../../lang/en");
|
|
37
|
-
const hasFeature_1 = require("../hasFeature");
|
|
38
|
-
const constants_1 = require("../constants");
|
|
39
|
-
const urls_1 = require("../projects/urls");
|
|
40
|
-
const logger_1 = require("../ui/logger");
|
|
41
|
-
function getUnmigratableReason(reasonCode, projectName, accountId) {
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { getCwd, sanitizeFileName } from '@hubspot/local-dev-lib/path';
|
|
3
|
+
import { extractZipArchive } from '@hubspot/local-dev-lib/archive';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { validateUid } from '@hubspot/project-parsing-lib';
|
|
6
|
+
import { UNMIGRATABLE_REASONS } from '@hubspot/local-dev-lib/constants/projects';
|
|
7
|
+
import { mapToUserFacingType } from '@hubspot/project-parsing-lib/src/lib/transform.js';
|
|
8
|
+
import { MIGRATION_STATUS } from '@hubspot/local-dev-lib/types/Migration';
|
|
9
|
+
import { downloadProject } from '@hubspot/local-dev-lib/api/projects';
|
|
10
|
+
import { Separator } from '@inquirer/prompts';
|
|
11
|
+
import { confirmPrompt, inputPrompt, listPrompt, } from '../prompts/promptUtils.js';
|
|
12
|
+
import { uiAccountDescription, uiCommandReference, uiLine, uiLink, } from '../ui/index.js';
|
|
13
|
+
import { ensureProjectExists } from '../projects/ensureProjectExists.js';
|
|
14
|
+
import SpinniesManager from '../ui/SpinniesManager.js';
|
|
15
|
+
import { DEFAULT_POLLING_STATUS_LOOKUP, poll } from '../polling.js';
|
|
16
|
+
import { checkMigrationStatusV2, CLI_UNMIGRATABLE_REASONS, continueMigration, initializeMigration, isMigrationStatus, listAppsForMigration, listThemesForMigration, } from '../../api/migrate.js';
|
|
17
|
+
import fs from 'fs';
|
|
18
|
+
import { lib } from '../../lang/en.js';
|
|
19
|
+
import { hasUnfiedAppsAccess } from '../hasFeature.js';
|
|
20
|
+
import { getProjectBuildDetailUrl, getProjectDetailUrl, } from '../projects/urls.js';
|
|
21
|
+
import { uiLogger } from '../ui/logger.js';
|
|
22
|
+
export function getUnmigratableReason(reasonCode, projectName, accountId) {
|
|
42
23
|
switch (reasonCode) {
|
|
43
|
-
case
|
|
44
|
-
return
|
|
45
|
-
case
|
|
46
|
-
return
|
|
47
|
-
case
|
|
48
|
-
return
|
|
49
|
-
case
|
|
50
|
-
return
|
|
51
|
-
case
|
|
52
|
-
return
|
|
24
|
+
case UNMIGRATABLE_REASONS.UP_TO_DATE:
|
|
25
|
+
return lib.migrate.errors.unmigratableReasons.upToDate;
|
|
26
|
+
case UNMIGRATABLE_REASONS.IS_A_PRIVATE_APP:
|
|
27
|
+
return lib.migrate.errors.unmigratableReasons.isPrivateApp;
|
|
28
|
+
case UNMIGRATABLE_REASONS.LISTED_IN_MARKETPLACE:
|
|
29
|
+
return lib.migrate.errors.unmigratableReasons.listedInMarketplace;
|
|
30
|
+
case UNMIGRATABLE_REASONS.PROJECT_CONNECTED_TO_GITHUB:
|
|
31
|
+
return lib.migrate.errors.unmigratableReasons.projectConnectedToGitHub(projectName, accountId);
|
|
32
|
+
case CLI_UNMIGRATABLE_REASONS.PART_OF_PROJECT_ALREADY:
|
|
33
|
+
return lib.migrate.errors.unmigratableReasons.partOfProjectAlready;
|
|
53
34
|
default:
|
|
54
|
-
return
|
|
35
|
+
return lib.migrate.errors.unmigratableReasons.generic(reasonCode);
|
|
55
36
|
}
|
|
56
37
|
}
|
|
57
|
-
function generateFilterAppsByProjectNameFunction(projectConfig) {
|
|
38
|
+
export function generateFilterAppsByProjectNameFunction(projectConfig) {
|
|
58
39
|
return (app) => {
|
|
59
40
|
if (projectConfig) {
|
|
60
41
|
return app.projectName === projectConfig?.projectConfig?.name;
|
|
@@ -62,7 +43,7 @@ function generateFilterAppsByProjectNameFunction(projectConfig) {
|
|
|
62
43
|
return true;
|
|
63
44
|
};
|
|
64
45
|
}
|
|
65
|
-
function buildErrorMessageFromMigrationStatus(error) {
|
|
46
|
+
export function buildErrorMessageFromMigrationStatus(error) {
|
|
66
47
|
const { componentErrors, projectErrorDetail } = error;
|
|
67
48
|
if (!componentErrors || !componentErrors.length) {
|
|
68
49
|
return projectErrorDetail;
|
|
@@ -74,43 +55,62 @@ function buildErrorMessageFromMigrationStatus(error) {
|
|
|
74
55
|
})
|
|
75
56
|
.join('\n\t- ')}`;
|
|
76
57
|
}
|
|
77
|
-
async function
|
|
78
|
-
|
|
58
|
+
export async function fetchMigrationThemes(derivedAccountId, projectConfig) {
|
|
59
|
+
if (!projectConfig?.projectConfig?.name) {
|
|
60
|
+
return { theme: [], reactTheme: [] };
|
|
61
|
+
}
|
|
62
|
+
const { data: { migratableThemes }, } = await listThemesForMigration(derivedAccountId, projectConfig?.projectConfig?.name);
|
|
63
|
+
return {
|
|
64
|
+
theme: migratableThemes.THEME?.filter(theme => !!theme) || [],
|
|
65
|
+
reactTheme: migratableThemes.REACT_THEME?.filter(theme => !!theme) || [],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export async function fetchMigrationApps(derivedAccountId, platformVersion, projectConfig) {
|
|
69
|
+
const { data: { migratableApps, unmigratableApps }, } = await listAppsForMigration(derivedAccountId, platformVersion);
|
|
79
70
|
const filteredMigratableApps = migratableApps.filter(generateFilterAppsByProjectNameFunction(projectConfig));
|
|
80
71
|
const filteredUnmigratableApps = unmigratableApps.filter(generateFilterAppsByProjectNameFunction(projectConfig));
|
|
81
|
-
|
|
72
|
+
return {
|
|
73
|
+
migratableApps: filteredMigratableApps,
|
|
74
|
+
unmigratableApps: filteredUnmigratableApps,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export async function validateMigrationAppsAndThemes(appId, derivedAccountId, { migratableApps, unmigratableApps, }, migratableThemes, projectConfig) {
|
|
78
|
+
const allApps = [...migratableApps, ...unmigratableApps];
|
|
79
|
+
const allThemes = [...migratableThemes.theme, ...migratableThemes.reactTheme];
|
|
80
|
+
if (allThemes.length > 0) {
|
|
81
|
+
throw new Error(lib.migrate.errors.project.themesNotAllowed);
|
|
82
|
+
}
|
|
82
83
|
if (allApps.length > 1 && projectConfig) {
|
|
83
|
-
throw new Error(
|
|
84
|
+
throw new Error(lib.migrate.errors.project.multipleApps);
|
|
84
85
|
}
|
|
85
86
|
if (!projectConfig?.projectConfig) {
|
|
86
87
|
allApps.forEach(app => {
|
|
87
88
|
if (app.projectName) {
|
|
88
89
|
app.isMigratable = false;
|
|
89
90
|
app.unmigratableReason =
|
|
90
|
-
|
|
91
|
+
CLI_UNMIGRATABLE_REASONS.PART_OF_PROJECT_ALREADY;
|
|
91
92
|
}
|
|
92
93
|
});
|
|
93
94
|
}
|
|
94
95
|
if (allApps.length === 0 && projectConfig) {
|
|
95
|
-
throw new Error(
|
|
96
|
+
throw new Error(lib.migrate.errors.noAppsForProject(projectConfig?.projectConfig?.name || ''));
|
|
96
97
|
}
|
|
97
98
|
if (allApps.length === 0 || !allApps.some(app => app.isMigratable)) {
|
|
98
|
-
const reasons =
|
|
99
|
-
throw new Error(
|
|
99
|
+
const reasons = unmigratableApps.map(app => `${chalk.bold(app.appName)}: ${getUnmigratableReason(app.unmigratableReason, app.projectName, derivedAccountId)}`);
|
|
100
|
+
throw new Error(lib.migrate.errors.noAppsEligible(uiAccountDescription(derivedAccountId), reasons));
|
|
100
101
|
}
|
|
101
102
|
if (appId &&
|
|
102
103
|
!allApps.some(app => {
|
|
103
104
|
return app.appId === appId;
|
|
104
105
|
})) {
|
|
105
|
-
throw new Error(
|
|
106
|
+
throw new Error(lib.migrate.errors.appWithAppIdNotFound(appId));
|
|
106
107
|
}
|
|
107
|
-
return allApps;
|
|
108
108
|
}
|
|
109
|
-
async function promptForAppToMigrate(allApps, derivedAccountId) {
|
|
109
|
+
export async function promptForAppToMigrate(allApps, derivedAccountId) {
|
|
110
110
|
const appChoices = allApps.map(app => ({
|
|
111
111
|
name: app.isMigratable
|
|
112
112
|
? app.appName
|
|
113
|
-
: `[${
|
|
113
|
+
: `[${chalk.yellow('DISABLED')}] ${app.appName} `,
|
|
114
114
|
value: app,
|
|
115
115
|
disabled: app.isMigratable
|
|
116
116
|
? false
|
|
@@ -118,17 +118,17 @@ async function promptForAppToMigrate(allApps, derivedAccountId) {
|
|
|
118
118
|
}));
|
|
119
119
|
const enabledChoices = appChoices.filter(app => !app.disabled);
|
|
120
120
|
const disabledChoices = appChoices.filter(app => app.disabled);
|
|
121
|
-
const { appId: selectedAppId } = await
|
|
122
|
-
choices: [...enabledChoices, new
|
|
121
|
+
const { appId: selectedAppId } = await listPrompt(lib.migrate.prompt.chooseApp, {
|
|
122
|
+
choices: [...enabledChoices, new Separator(), ...disabledChoices],
|
|
123
123
|
});
|
|
124
124
|
return selectedAppId;
|
|
125
125
|
}
|
|
126
|
-
async function selectAppToMigrate(allApps, derivedAccountId, appId) {
|
|
126
|
+
export async function selectAppToMigrate(allApps, derivedAccountId, appId) {
|
|
127
127
|
if (appId &&
|
|
128
128
|
!allApps.some(app => {
|
|
129
129
|
return app.appId === appId;
|
|
130
130
|
})) {
|
|
131
|
-
throw new Error(
|
|
131
|
+
throw new Error(lib.migrate.errors.appWithAppIdNotFound(appId));
|
|
132
132
|
}
|
|
133
133
|
let appIdToMigrate = appId;
|
|
134
134
|
if (!appIdToMigrate) {
|
|
@@ -139,20 +139,20 @@ async function selectAppToMigrate(allApps, derivedAccountId, appId) {
|
|
|
139
139
|
const unmigratableComponents = new Set();
|
|
140
140
|
selectedApp?.migrationComponents.forEach(component => {
|
|
141
141
|
if (component.isSupported) {
|
|
142
|
-
migratableComponents.add(
|
|
142
|
+
migratableComponents.add(mapToUserFacingType(component.componentType));
|
|
143
143
|
}
|
|
144
144
|
else {
|
|
145
|
-
unmigratableComponents.add(
|
|
145
|
+
unmigratableComponents.add(mapToUserFacingType(component.componentType));
|
|
146
146
|
}
|
|
147
147
|
});
|
|
148
148
|
if (migratableComponents.size !== 0) {
|
|
149
|
-
|
|
149
|
+
uiLogger.log(lib.migrate.componentsToBeMigrated(`\n - ${[...migratableComponents].join('\n - ')}`));
|
|
150
150
|
}
|
|
151
151
|
if (unmigratableComponents.size !== 0) {
|
|
152
|
-
|
|
152
|
+
uiLogger.log(lib.migrate.componentsThatWillNotBeMigrated(`\n - ${[...unmigratableComponents].join('\n - ')}`));
|
|
153
153
|
}
|
|
154
|
-
|
|
155
|
-
const proceed = await
|
|
154
|
+
uiLogger.log('');
|
|
155
|
+
const proceed = await confirmPrompt(lib.migrate.prompt.proceed, {
|
|
156
156
|
defaultAnswer: false,
|
|
157
157
|
});
|
|
158
158
|
return {
|
|
@@ -160,9 +160,12 @@ async function selectAppToMigrate(allApps, derivedAccountId, appId) {
|
|
|
160
160
|
appIdToMigrate,
|
|
161
161
|
};
|
|
162
162
|
}
|
|
163
|
-
async function handleMigrationSetup(derivedAccountId, options, projectConfig) {
|
|
163
|
+
export async function handleMigrationSetup(derivedAccountId, options, projectConfig) {
|
|
164
164
|
const { name, dest, appId } = options;
|
|
165
|
-
const
|
|
165
|
+
const migratableThemes = await fetchMigrationThemes(derivedAccountId, projectConfig);
|
|
166
|
+
const { migratableApps, unmigratableApps } = await fetchMigrationApps(derivedAccountId, options.platformVersion, projectConfig);
|
|
167
|
+
await validateMigrationAppsAndThemes(appId, derivedAccountId, { migratableApps, unmigratableApps }, migratableThemes, projectConfig);
|
|
168
|
+
const allApps = [...migratableApps, ...unmigratableApps];
|
|
166
169
|
const { proceed, appIdToMigrate } = await selectAppToMigrate(allApps, derivedAccountId, appId);
|
|
167
170
|
if (!proceed) {
|
|
168
171
|
return {};
|
|
@@ -178,57 +181,57 @@ async function handleMigrationSetup(derivedAccountId, options, projectConfig) {
|
|
|
178
181
|
};
|
|
179
182
|
}
|
|
180
183
|
const projectName = name ||
|
|
181
|
-
(await
|
|
184
|
+
(await inputPrompt(lib.migrate.prompt.inputName, {
|
|
182
185
|
validate: async (input) => {
|
|
183
|
-
const { projectExists } = await
|
|
186
|
+
const { projectExists } = await ensureProjectExists(derivedAccountId, input, { allowCreate: false, noLogs: true });
|
|
184
187
|
if (projectExists) {
|
|
185
|
-
return
|
|
188
|
+
return lib.migrate.errors.project.alreadyExists(input);
|
|
186
189
|
}
|
|
187
190
|
return true;
|
|
188
191
|
},
|
|
189
192
|
}));
|
|
190
|
-
const { projectExists } = await
|
|
193
|
+
const { projectExists } = await ensureProjectExists(derivedAccountId, projectName, { allowCreate: false, noLogs: true });
|
|
191
194
|
if (projectExists) {
|
|
192
|
-
throw new Error(
|
|
195
|
+
throw new Error(lib.migrate.errors.project.alreadyExists(projectName));
|
|
193
196
|
}
|
|
194
197
|
const projectDest = dest ||
|
|
195
|
-
(await
|
|
196
|
-
defaultAnswer:
|
|
198
|
+
(await inputPrompt(lib.migrate.prompt.inputDest, {
|
|
199
|
+
defaultAnswer: path.resolve(getCwd(), sanitizeFileName(projectName)),
|
|
197
200
|
}));
|
|
198
201
|
return { appIdToMigrate, projectName, projectDest };
|
|
199
202
|
}
|
|
200
|
-
async function beginMigration(derivedAccountId, appId, platformVersion) {
|
|
201
|
-
|
|
202
|
-
text:
|
|
203
|
+
export async function beginMigration(derivedAccountId, appId, platformVersion) {
|
|
204
|
+
SpinniesManager.add('beginningMigration', {
|
|
205
|
+
text: lib.migrate.spinners.beginningMigration,
|
|
203
206
|
});
|
|
204
207
|
const uidMap = {};
|
|
205
|
-
const { data } = await
|
|
208
|
+
const { data } = await initializeMigration(derivedAccountId, appId, platformVersion);
|
|
206
209
|
const { migrationId } = data;
|
|
207
210
|
let pollResponse;
|
|
208
211
|
try {
|
|
209
212
|
pollResponse = await pollMigrationStatus(derivedAccountId, migrationId, [
|
|
210
|
-
|
|
213
|
+
MIGRATION_STATUS.INPUT_REQUIRED,
|
|
211
214
|
]);
|
|
212
215
|
}
|
|
213
216
|
catch (error) {
|
|
214
|
-
|
|
215
|
-
text:
|
|
217
|
+
SpinniesManager.fail('beginningMigration', {
|
|
218
|
+
text: lib.migrate.spinners.unableToStartMigration,
|
|
216
219
|
});
|
|
217
|
-
if (
|
|
220
|
+
if (isMigrationStatus(error) && error.status === MIGRATION_STATUS.FAILURE) {
|
|
218
221
|
throw new Error(buildErrorMessageFromMigrationStatus(error));
|
|
219
222
|
}
|
|
220
|
-
throw new Error(
|
|
223
|
+
throw new Error(lib.migrate.errors.migrationFailed, {
|
|
221
224
|
cause: error,
|
|
222
225
|
});
|
|
223
226
|
}
|
|
224
|
-
if (pollResponse.status !==
|
|
225
|
-
|
|
226
|
-
text:
|
|
227
|
+
if (pollResponse.status !== MIGRATION_STATUS.INPUT_REQUIRED) {
|
|
228
|
+
SpinniesManager.fail('beginningMigration', {
|
|
229
|
+
text: lib.migrate.spinners.unableToStartMigration,
|
|
227
230
|
});
|
|
228
231
|
return;
|
|
229
232
|
}
|
|
230
233
|
const { componentsRequiringUids } = pollResponse;
|
|
231
|
-
|
|
234
|
+
SpinniesManager.remove('beginningMigration');
|
|
232
235
|
if (Object.values(componentsRequiringUids).length !== 0) {
|
|
233
236
|
for (const [componentId, component] of Object.entries(componentsRequiringUids)) {
|
|
234
237
|
const { componentHint, componentType } = component;
|
|
@@ -244,11 +247,11 @@ async function beginMigration(derivedAccountId, appId, platformVersion) {
|
|
|
244
247
|
internalId = componentId;
|
|
245
248
|
}
|
|
246
249
|
const promptText = componentHint
|
|
247
|
-
? `${
|
|
248
|
-
: `${
|
|
249
|
-
uidMap[componentId] = await
|
|
250
|
+
? `${mapToUserFacingType(componentType)} '${componentHint}' (ID: ${internalId})`
|
|
251
|
+
: `${mapToUserFacingType(componentType)} (ID: ${internalId})`;
|
|
252
|
+
uidMap[componentId] = await inputPrompt(lib.migrate.prompt.uidForComponent(promptText), {
|
|
250
253
|
validate: (uid) => {
|
|
251
|
-
const result =
|
|
254
|
+
const result = validateUid(uid);
|
|
252
255
|
return result === undefined ? true : result;
|
|
253
256
|
},
|
|
254
257
|
defaultAnswer: componentHint
|
|
@@ -259,94 +262,94 @@ async function beginMigration(derivedAccountId, appId, platformVersion) {
|
|
|
259
262
|
}
|
|
260
263
|
return { migrationId, uidMap };
|
|
261
264
|
}
|
|
262
|
-
async function pollMigrationStatus(derivedAccountId, migrationId, successStates = []) {
|
|
263
|
-
return
|
|
265
|
+
export async function pollMigrationStatus(derivedAccountId, migrationId, successStates = []) {
|
|
266
|
+
return poll(() => checkMigrationStatusV2(derivedAccountId, migrationId), {
|
|
264
267
|
successStates: [...successStates],
|
|
265
|
-
errorStates: [...
|
|
268
|
+
errorStates: [...DEFAULT_POLLING_STATUS_LOOKUP.errorStates],
|
|
266
269
|
});
|
|
267
270
|
}
|
|
268
|
-
async function finalizeMigration(derivedAccountId, migrationId, uidMap, projectName) {
|
|
271
|
+
export async function finalizeMigration(derivedAccountId, migrationId, uidMap, projectName) {
|
|
269
272
|
let pollResponse;
|
|
270
273
|
try {
|
|
271
|
-
|
|
272
|
-
text:
|
|
274
|
+
SpinniesManager.add('finishingMigration', {
|
|
275
|
+
text: lib.migrate.spinners.finishingMigration,
|
|
273
276
|
});
|
|
274
|
-
await
|
|
277
|
+
await continueMigration(derivedAccountId, migrationId, uidMap, projectName);
|
|
275
278
|
pollResponse = await pollMigrationStatus(derivedAccountId, migrationId, [
|
|
276
|
-
|
|
279
|
+
MIGRATION_STATUS.SUCCESS,
|
|
277
280
|
]);
|
|
278
281
|
}
|
|
279
282
|
catch (error) {
|
|
280
|
-
|
|
281
|
-
text:
|
|
283
|
+
SpinniesManager.fail('finishingMigration', {
|
|
284
|
+
text: lib.migrate.spinners.migrationFailed,
|
|
282
285
|
});
|
|
283
|
-
if (
|
|
286
|
+
if (isMigrationStatus(error) && error.status === MIGRATION_STATUS.FAILURE) {
|
|
284
287
|
throw new Error(buildErrorMessageFromMigrationStatus(error));
|
|
285
288
|
}
|
|
286
|
-
throw new Error(
|
|
289
|
+
throw new Error(lib.migrate.errors.migrationFailed, {
|
|
287
290
|
cause: error,
|
|
288
291
|
});
|
|
289
292
|
}
|
|
290
|
-
if (pollResponse.status !==
|
|
291
|
-
throw new Error(
|
|
293
|
+
if (pollResponse.status !== MIGRATION_STATUS.SUCCESS) {
|
|
294
|
+
throw new Error(lib.migrate.errors.migrationFailed);
|
|
292
295
|
}
|
|
293
|
-
if (pollResponse.status ===
|
|
294
|
-
|
|
295
|
-
text:
|
|
296
|
+
if (pollResponse.status === MIGRATION_STATUS.SUCCESS) {
|
|
297
|
+
SpinniesManager.succeed('finishingMigration', {
|
|
298
|
+
text: lib.migrate.spinners.migrationComplete,
|
|
296
299
|
});
|
|
297
300
|
}
|
|
298
301
|
return pollResponse.buildId;
|
|
299
302
|
}
|
|
300
|
-
async function downloadProjectFiles(derivedAccountId, projectName, buildId, projectDest, projectConfig) {
|
|
303
|
+
export async function downloadProjectFiles(derivedAccountId, projectName, buildId, projectDest, projectConfig) {
|
|
301
304
|
try {
|
|
302
|
-
|
|
303
|
-
text:
|
|
305
|
+
SpinniesManager.add('fetchingMigratedProject', {
|
|
306
|
+
text: lib.migrate.spinners.downloadingProjectContents,
|
|
304
307
|
});
|
|
305
|
-
const { data: zippedProject } = await
|
|
308
|
+
const { data: zippedProject } = await downloadProject(derivedAccountId, projectName, buildId);
|
|
306
309
|
let absoluteDestPath;
|
|
307
310
|
if (projectConfig?.projectConfig && projectConfig?.projectDir) {
|
|
308
311
|
const { projectDir } = projectConfig;
|
|
309
312
|
absoluteDestPath = projectDir;
|
|
310
313
|
const { srcDir } = projectConfig.projectConfig;
|
|
311
|
-
const archiveDest =
|
|
314
|
+
const archiveDest = path.join(projectDir, 'archive');
|
|
312
315
|
// Move the existing source directory to archive
|
|
313
|
-
|
|
314
|
-
|
|
316
|
+
fs.renameSync(path.join(projectDir, srcDir), archiveDest);
|
|
317
|
+
uiLogger.info(lib.migrate.sourceContentsMoved(archiveDest));
|
|
315
318
|
}
|
|
316
319
|
else {
|
|
317
320
|
absoluteDestPath = projectDest
|
|
318
|
-
?
|
|
319
|
-
:
|
|
321
|
+
? path.resolve(getCwd(), projectDest)
|
|
322
|
+
: getCwd();
|
|
320
323
|
}
|
|
321
|
-
await
|
|
324
|
+
await extractZipArchive(zippedProject, sanitizeFileName(projectName), absoluteDestPath, {
|
|
322
325
|
includesRootDir: true,
|
|
323
326
|
hideLogs: true,
|
|
324
327
|
});
|
|
325
|
-
|
|
326
|
-
text:
|
|
328
|
+
SpinniesManager.succeed('fetchingMigratedProject', {
|
|
329
|
+
text: lib.migrate.spinners.downloadingProjectContentsComplete,
|
|
327
330
|
});
|
|
328
|
-
|
|
331
|
+
uiLogger.success(`Saved ${projectName} to ${projectDest}`);
|
|
329
332
|
}
|
|
330
333
|
catch (error) {
|
|
331
|
-
|
|
332
|
-
text:
|
|
334
|
+
SpinniesManager.fail('fetchingMigratedProject', {
|
|
335
|
+
text: lib.migrate.spinners.downloadingProjectContentsFailed,
|
|
333
336
|
});
|
|
334
337
|
throw error;
|
|
335
338
|
}
|
|
336
339
|
}
|
|
337
|
-
async function migrateApp2025_2(derivedAccountId, options, projectConfig) {
|
|
338
|
-
|
|
339
|
-
const ungatedForUnifiedApps = await (
|
|
340
|
+
export async function migrateApp2025_2(derivedAccountId, options, projectConfig) {
|
|
341
|
+
SpinniesManager.init();
|
|
342
|
+
const ungatedForUnifiedApps = await hasUnfiedAppsAccess(derivedAccountId);
|
|
340
343
|
if (!ungatedForUnifiedApps) {
|
|
341
|
-
throw new Error(
|
|
344
|
+
throw new Error(lib.migrate.errors.notUngatedForUnifiedApps(uiAccountDescription(derivedAccountId)));
|
|
342
345
|
}
|
|
343
346
|
if (projectConfig) {
|
|
344
347
|
if (!projectConfig?.projectConfig || !projectConfig?.projectDir) {
|
|
345
|
-
throw new Error(
|
|
348
|
+
throw new Error(lib.migrate.errors.project.invalidConfig);
|
|
346
349
|
}
|
|
347
|
-
const { projectExists } = await
|
|
350
|
+
const { projectExists } = await ensureProjectExists(derivedAccountId, projectConfig.projectConfig.name, { allowCreate: false, noLogs: true });
|
|
348
351
|
if (!projectExists) {
|
|
349
|
-
throw new Error(
|
|
352
|
+
throw new Error(lib.migrate.errors.project.doesNotExist(derivedAccountId));
|
|
350
353
|
}
|
|
351
354
|
}
|
|
352
355
|
const { appIdToMigrate, projectName, projectDest } = await handleMigrationSetup(derivedAccountId, options, projectConfig);
|
|
@@ -360,12 +363,12 @@ async function migrateApp2025_2(derivedAccountId, options, projectConfig) {
|
|
|
360
363
|
const { migrationId, uidMap } = migrationInProgress;
|
|
361
364
|
const buildId = await finalizeMigration(derivedAccountId, migrationId, uidMap, projectConfig?.projectConfig?.name || projectName);
|
|
362
365
|
await downloadProjectFiles(derivedAccountId, projectName, buildId, projectDest, projectConfig);
|
|
363
|
-
|
|
364
|
-
|
|
366
|
+
uiLogger.log(uiLink('Project Details', getProjectDetailUrl(projectName, derivedAccountId)));
|
|
367
|
+
uiLogger.log(uiLink('Build Details', getProjectBuildDetailUrl(projectName, buildId, derivedAccountId)));
|
|
365
368
|
}
|
|
366
|
-
function logInvalidAccountError() {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
369
|
+
export function logInvalidAccountError() {
|
|
370
|
+
uiLine();
|
|
371
|
+
uiLogger.error(lib.migrate.errors.invalidAccountTypeTitle);
|
|
372
|
+
uiLogger.log(lib.migrate.errors.invalidAccountTypeDescription(uiCommandReference('hs account use'), uiCommandReference('hs auth')));
|
|
373
|
+
uiLine();
|
|
371
374
|
}
|