@hubspot/cli 7.7.21-experimental.1 → 7.7.23-experimental.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/__tests__/migrate.test.js +27 -29
- package/api/migrate.js +14 -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 +16 -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 +65 -67
- 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 -16
- 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 +29 -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 +133 -139
- 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 +3 -3
- package/commands/project/dev/unifiedFlow.js +62 -68
- 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 +51 -56
- 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 +35 -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 +15 -20
- package/commands/sandbox/__tests__/delete.test.js +15 -20
- package/commands/sandbox/create.d.ts +1 -1
- package/commands/sandbox/create.js +67 -69
- 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/create.d.ts +1 -1
- package/commands/testAccount/create.js +45 -53
- 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.d.ts +1 -1
- package/commands/testAccount.js +10 -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 +10 -23
- package/lang/en.js +380 -399
- package/lib/__tests__/accountTypes.test.js +20 -22
- package/lib/__tests__/buildAccount.test.js +28 -63
- 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__/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 +24 -34
- package/lib/app/__tests__/migrate.test.js +94 -99
- package/lib/app/__tests__/migrate_legacy.test.js +29 -31
- package/lib/app/migrate.d.ts +3 -3
- package/lib/app/migrate.js +127 -145
- 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 +1 -1
- package/lib/buildAccount.js +71 -80
- package/lib/commonOpts.d.ts +1 -1
- package/lib/commonOpts.js +42 -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 +4 -0
- package/lib/constants.js +35 -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 +32 -41
- package/lib/errorHandlers/suppressError.d.ts +1 -1
- package/lib/errorHandlers/suppressError.js +28 -31
- package/lib/filesystem.js +8 -15
- package/lib/generateSelectors.js +18 -29
- package/lib/hasFeature.d.ts +1 -1
- package/lib/hasFeature.js +3 -6
- 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.js +70 -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 +140 -145
- package/lib/projects/__tests__/LocalDevProcess.test.js +68 -73
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +32 -37
- 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__/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 +36 -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 -3
- package/lib/projects/create/v3.js +49 -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 -1
- package/lib/projects/localDev/LocalDevLogger.js +68 -64
- package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
- package/lib/projects/localDev/LocalDevManager.js +106 -111
- package/lib/projects/localDev/LocalDevProcess.d.ts +5 -4
- package/lib/projects/localDev/LocalDevProcess.js +37 -30
- package/lib/projects/localDev/LocalDevState.d.ts +3 -3
- package/lib/projects/localDev/LocalDevState.js +3 -5
- package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
- package/lib/projects/localDev/LocalDevWatcher.js +6 -11
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +1 -1
- package/lib/projects/localDev/LocalDevWebsocketServer.js +29 -27
- package/lib/projects/localDev/helpers.d.ts +3 -3
- package/lib/projects/localDev/helpers.js +156 -174
- package/lib/projects/structure.d.ts +4 -4
- package/lib/projects/structure.js +32 -78
- package/lib/projects/ui.js +10 -13
- package/lib/projects/upload.d.ts +2 -3
- package/lib/projects/upload.js +55 -65
- 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/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/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 +1 -1
- package/lib/sandboxes.js +68 -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/boxen.js +11 -14
- package/lib/ui/git.js +14 -20
- package/lib/ui/index.js +55 -73
- package/lib/ui/logger.js +10 -13
- 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 +13 -16
- package/mcp-server/tools/project/AddFeatureToProject.d.ts +1 -1
- package/mcp-server/tools/project/AddFeatureToProject.js +35 -39
- package/mcp-server/tools/project/CreateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/CreateProjectTool.js +46 -50
- package/mcp-server/tools/project/DeployProject.d.ts +1 -1
- package/mcp-server/tools/project/DeployProject.js +18 -22
- 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__/AddFeatureToProject.test.js +12 -14
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +13 -15
- package/mcp-server/tools/project/__tests__/DeployProject.test.js +6 -8
- 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.js +3 -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 +15 -11
- package/types/Cms.d.ts +1 -1
- package/types/Cms.js +1 -2
- package/types/LocalDev.d.ts +4 -4
- 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/commands/app/__tests__/install.test.d.ts +0 -1
- package/commands/app/__tests__/install.test.js +0 -52
- package/commands/app/install.d.ts +0 -8
- package/commands/app/install.js +0 -127
package/lib/app/migrate.js
CHANGED
|
@@ -1,60 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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, } from '../../api/migrate.js';
|
|
17
|
+
import fs from 'fs';
|
|
18
|
+
import { lib } from '../../lang/en.js';
|
|
19
|
+
import { hasFeature } from '../hasFeature.js';
|
|
20
|
+
import { FEATURES } from '../constants.js';
|
|
21
|
+
import { getProjectBuildDetailUrl, getProjectDetailUrl, } from '../projects/urls.js';
|
|
22
|
+
import { uiLogger } from '../ui/logger.js';
|
|
23
|
+
export function getUnmigratableReason(reasonCode, projectName, accountId) {
|
|
42
24
|
switch (reasonCode) {
|
|
43
|
-
case
|
|
44
|
-
return
|
|
45
|
-
case
|
|
46
|
-
return
|
|
47
|
-
case
|
|
48
|
-
return
|
|
49
|
-
case
|
|
50
|
-
return
|
|
51
|
-
case
|
|
52
|
-
return
|
|
25
|
+
case UNMIGRATABLE_REASONS.UP_TO_DATE:
|
|
26
|
+
return lib.migrate.errors.unmigratableReasons.upToDate;
|
|
27
|
+
case UNMIGRATABLE_REASONS.IS_A_PRIVATE_APP:
|
|
28
|
+
return lib.migrate.errors.unmigratableReasons.isPrivateApp;
|
|
29
|
+
case UNMIGRATABLE_REASONS.LISTED_IN_MARKETPLACE:
|
|
30
|
+
return lib.migrate.errors.unmigratableReasons.listedInMarketplace;
|
|
31
|
+
case UNMIGRATABLE_REASONS.PROJECT_CONNECTED_TO_GITHUB:
|
|
32
|
+
return lib.migrate.errors.unmigratableReasons.projectConnectedToGitHub(projectName, accountId);
|
|
33
|
+
case CLI_UNMIGRATABLE_REASONS.PART_OF_PROJECT_ALREADY:
|
|
34
|
+
return lib.migrate.errors.unmigratableReasons.partOfProjectAlready;
|
|
53
35
|
default:
|
|
54
|
-
return
|
|
36
|
+
return lib.migrate.errors.unmigratableReasons.generic(reasonCode);
|
|
55
37
|
}
|
|
56
38
|
}
|
|
57
|
-
function generateFilterAppsByProjectNameFunction(projectConfig) {
|
|
39
|
+
export function generateFilterAppsByProjectNameFunction(projectConfig) {
|
|
58
40
|
return (app) => {
|
|
59
41
|
if (projectConfig) {
|
|
60
42
|
return app.projectName === projectConfig?.projectConfig?.name;
|
|
@@ -62,7 +44,7 @@ function generateFilterAppsByProjectNameFunction(projectConfig) {
|
|
|
62
44
|
return true;
|
|
63
45
|
};
|
|
64
46
|
}
|
|
65
|
-
function buildErrorMessageFromMigrationStatus(error) {
|
|
47
|
+
export function buildErrorMessageFromMigrationStatus(error) {
|
|
66
48
|
const { componentErrors, projectErrorDetail } = error;
|
|
67
49
|
if (!componentErrors || !componentErrors.length) {
|
|
68
50
|
return projectErrorDetail;
|
|
@@ -74,43 +56,43 @@ function buildErrorMessageFromMigrationStatus(error) {
|
|
|
74
56
|
})
|
|
75
57
|
.join('\n\t- ')}`;
|
|
76
58
|
}
|
|
77
|
-
async function fetchMigrationApps(appId, derivedAccountId, platformVersion, projectConfig) {
|
|
78
|
-
const { data: { migratableApps, unmigratableApps }, } = await
|
|
59
|
+
export async function fetchMigrationApps(appId, derivedAccountId, platformVersion, projectConfig) {
|
|
60
|
+
const { data: { migratableApps, unmigratableApps }, } = await listAppsForMigration(derivedAccountId, platformVersion);
|
|
79
61
|
const filteredMigratableApps = migratableApps.filter(generateFilterAppsByProjectNameFunction(projectConfig));
|
|
80
62
|
const filteredUnmigratableApps = unmigratableApps.filter(generateFilterAppsByProjectNameFunction(projectConfig));
|
|
81
63
|
const allApps = [...filteredMigratableApps, ...filteredUnmigratableApps];
|
|
82
64
|
if (allApps.length > 1 && projectConfig) {
|
|
83
|
-
throw new Error(
|
|
65
|
+
throw new Error(lib.migrate.errors.project.multipleApps);
|
|
84
66
|
}
|
|
85
67
|
if (!projectConfig?.projectConfig) {
|
|
86
68
|
allApps.forEach(app => {
|
|
87
69
|
if (app.projectName) {
|
|
88
70
|
app.isMigratable = false;
|
|
89
71
|
app.unmigratableReason =
|
|
90
|
-
|
|
72
|
+
CLI_UNMIGRATABLE_REASONS.PART_OF_PROJECT_ALREADY;
|
|
91
73
|
}
|
|
92
74
|
});
|
|
93
75
|
}
|
|
94
76
|
if (allApps.length === 0 && projectConfig) {
|
|
95
|
-
throw new Error(
|
|
77
|
+
throw new Error(lib.migrate.errors.noAppsForProject(projectConfig?.projectConfig?.name || ''));
|
|
96
78
|
}
|
|
97
79
|
if (allApps.length === 0 || !allApps.some(app => app.isMigratable)) {
|
|
98
|
-
const reasons = filteredUnmigratableApps.map(app => `${
|
|
99
|
-
throw new Error(
|
|
80
|
+
const reasons = filteredUnmigratableApps.map(app => `${chalk.bold(app.appName)}: ${getUnmigratableReason(app.unmigratableReason, app.projectName, derivedAccountId)}`);
|
|
81
|
+
throw new Error(lib.migrate.errors.noAppsEligible(uiAccountDescription(derivedAccountId), reasons));
|
|
100
82
|
}
|
|
101
83
|
if (appId &&
|
|
102
84
|
!allApps.some(app => {
|
|
103
85
|
return app.appId === appId;
|
|
104
86
|
})) {
|
|
105
|
-
throw new Error(
|
|
87
|
+
throw new Error(lib.migrate.errors.appWithAppIdNotFound(appId));
|
|
106
88
|
}
|
|
107
89
|
return allApps;
|
|
108
90
|
}
|
|
109
|
-
async function promptForAppToMigrate(allApps, derivedAccountId) {
|
|
91
|
+
export async function promptForAppToMigrate(allApps, derivedAccountId) {
|
|
110
92
|
const appChoices = allApps.map(app => ({
|
|
111
93
|
name: app.isMigratable
|
|
112
94
|
? app.appName
|
|
113
|
-
: `[${
|
|
95
|
+
: `[${chalk.yellow('DISABLED')}] ${app.appName} `,
|
|
114
96
|
value: app,
|
|
115
97
|
disabled: app.isMigratable
|
|
116
98
|
? false
|
|
@@ -118,17 +100,17 @@ async function promptForAppToMigrate(allApps, derivedAccountId) {
|
|
|
118
100
|
}));
|
|
119
101
|
const enabledChoices = appChoices.filter(app => !app.disabled);
|
|
120
102
|
const disabledChoices = appChoices.filter(app => app.disabled);
|
|
121
|
-
const { appId: selectedAppId } = await
|
|
122
|
-
choices: [...enabledChoices, new
|
|
103
|
+
const { appId: selectedAppId } = await listPrompt(lib.migrate.prompt.chooseApp, {
|
|
104
|
+
choices: [...enabledChoices, new Separator(), ...disabledChoices],
|
|
123
105
|
});
|
|
124
106
|
return selectedAppId;
|
|
125
107
|
}
|
|
126
|
-
async function selectAppToMigrate(allApps, derivedAccountId, appId) {
|
|
108
|
+
export async function selectAppToMigrate(allApps, derivedAccountId, appId) {
|
|
127
109
|
if (appId &&
|
|
128
110
|
!allApps.some(app => {
|
|
129
111
|
return app.appId === appId;
|
|
130
112
|
})) {
|
|
131
|
-
throw new Error(
|
|
113
|
+
throw new Error(lib.migrate.errors.appWithAppIdNotFound(appId));
|
|
132
114
|
}
|
|
133
115
|
let appIdToMigrate = appId;
|
|
134
116
|
if (!appIdToMigrate) {
|
|
@@ -139,20 +121,20 @@ async function selectAppToMigrate(allApps, derivedAccountId, appId) {
|
|
|
139
121
|
const unmigratableComponents = new Set();
|
|
140
122
|
selectedApp?.migrationComponents.forEach(component => {
|
|
141
123
|
if (component.isSupported) {
|
|
142
|
-
migratableComponents.add(
|
|
124
|
+
migratableComponents.add(mapToUserFacingType(component.componentType));
|
|
143
125
|
}
|
|
144
126
|
else {
|
|
145
|
-
unmigratableComponents.add(
|
|
127
|
+
unmigratableComponents.add(mapToUserFacingType(component.componentType));
|
|
146
128
|
}
|
|
147
129
|
});
|
|
148
130
|
if (migratableComponents.size !== 0) {
|
|
149
|
-
|
|
131
|
+
uiLogger.log(lib.migrate.componentsToBeMigrated(`\n - ${[...migratableComponents].join('\n - ')}`));
|
|
150
132
|
}
|
|
151
133
|
if (unmigratableComponents.size !== 0) {
|
|
152
|
-
|
|
134
|
+
uiLogger.log(lib.migrate.componentsThatWillNotBeMigrated(`\n - ${[...unmigratableComponents].join('\n - ')}`));
|
|
153
135
|
}
|
|
154
|
-
|
|
155
|
-
const proceed = await
|
|
136
|
+
uiLogger.log('');
|
|
137
|
+
const proceed = await confirmPrompt(lib.migrate.prompt.proceed, {
|
|
156
138
|
defaultAnswer: false,
|
|
157
139
|
});
|
|
158
140
|
return {
|
|
@@ -160,7 +142,7 @@ async function selectAppToMigrate(allApps, derivedAccountId, appId) {
|
|
|
160
142
|
appIdToMigrate,
|
|
161
143
|
};
|
|
162
144
|
}
|
|
163
|
-
async function handleMigrationSetup(derivedAccountId, options, projectConfig) {
|
|
145
|
+
export async function handleMigrationSetup(derivedAccountId, options, projectConfig) {
|
|
164
146
|
const { name, dest, appId } = options;
|
|
165
147
|
const allApps = await fetchMigrationApps(appId, derivedAccountId, options.platformVersion, projectConfig);
|
|
166
148
|
const { proceed, appIdToMigrate } = await selectAppToMigrate(allApps, derivedAccountId, appId);
|
|
@@ -178,57 +160,57 @@ async function handleMigrationSetup(derivedAccountId, options, projectConfig) {
|
|
|
178
160
|
};
|
|
179
161
|
}
|
|
180
162
|
const projectName = name ||
|
|
181
|
-
(await
|
|
163
|
+
(await inputPrompt(lib.migrate.prompt.inputName, {
|
|
182
164
|
validate: async (input) => {
|
|
183
|
-
const { projectExists } = await
|
|
165
|
+
const { projectExists } = await ensureProjectExists(derivedAccountId, input, { allowCreate: false, noLogs: true });
|
|
184
166
|
if (projectExists) {
|
|
185
|
-
return
|
|
167
|
+
return lib.migrate.errors.project.alreadyExists(input);
|
|
186
168
|
}
|
|
187
169
|
return true;
|
|
188
170
|
},
|
|
189
171
|
}));
|
|
190
|
-
const { projectExists } = await
|
|
172
|
+
const { projectExists } = await ensureProjectExists(derivedAccountId, projectName, { allowCreate: false, noLogs: true });
|
|
191
173
|
if (projectExists) {
|
|
192
|
-
throw new Error(
|
|
174
|
+
throw new Error(lib.migrate.errors.project.alreadyExists(projectName));
|
|
193
175
|
}
|
|
194
176
|
const projectDest = dest ||
|
|
195
|
-
(await
|
|
196
|
-
defaultAnswer:
|
|
177
|
+
(await inputPrompt(lib.migrate.prompt.inputDest, {
|
|
178
|
+
defaultAnswer: path.resolve(getCwd(), sanitizeFileName(projectName)),
|
|
197
179
|
}));
|
|
198
180
|
return { appIdToMigrate, projectName, projectDest };
|
|
199
181
|
}
|
|
200
|
-
async function beginMigration(derivedAccountId, appId, platformVersion) {
|
|
201
|
-
|
|
202
|
-
text:
|
|
182
|
+
export async function beginMigration(derivedAccountId, appId, platformVersion) {
|
|
183
|
+
SpinniesManager.add('beginningMigration', {
|
|
184
|
+
text: lib.migrate.spinners.beginningMigration,
|
|
203
185
|
});
|
|
204
186
|
const uidMap = {};
|
|
205
|
-
const { data } = await
|
|
187
|
+
const { data } = await initializeMigration(derivedAccountId, appId, platformVersion);
|
|
206
188
|
const { migrationId } = data;
|
|
207
189
|
let pollResponse;
|
|
208
190
|
try {
|
|
209
191
|
pollResponse = await pollMigrationStatus(derivedAccountId, migrationId, [
|
|
210
|
-
|
|
192
|
+
MIGRATION_STATUS.INPUT_REQUIRED,
|
|
211
193
|
]);
|
|
212
194
|
}
|
|
213
195
|
catch (error) {
|
|
214
|
-
|
|
215
|
-
text:
|
|
196
|
+
SpinniesManager.fail('beginningMigration', {
|
|
197
|
+
text: lib.migrate.spinners.unableToStartMigration,
|
|
216
198
|
});
|
|
217
|
-
if (
|
|
199
|
+
if (isMigrationStatus(error) && error.status === MIGRATION_STATUS.FAILURE) {
|
|
218
200
|
throw new Error(buildErrorMessageFromMigrationStatus(error));
|
|
219
201
|
}
|
|
220
|
-
throw new Error(
|
|
202
|
+
throw new Error(lib.migrate.errors.migrationFailed, {
|
|
221
203
|
cause: error,
|
|
222
204
|
});
|
|
223
205
|
}
|
|
224
|
-
if (pollResponse.status !==
|
|
225
|
-
|
|
226
|
-
text:
|
|
206
|
+
if (pollResponse.status !== MIGRATION_STATUS.INPUT_REQUIRED) {
|
|
207
|
+
SpinniesManager.fail('beginningMigration', {
|
|
208
|
+
text: lib.migrate.spinners.unableToStartMigration,
|
|
227
209
|
});
|
|
228
210
|
return;
|
|
229
211
|
}
|
|
230
212
|
const { componentsRequiringUids } = pollResponse;
|
|
231
|
-
|
|
213
|
+
SpinniesManager.remove('beginningMigration');
|
|
232
214
|
if (Object.values(componentsRequiringUids).length !== 0) {
|
|
233
215
|
for (const [componentId, component] of Object.entries(componentsRequiringUids)) {
|
|
234
216
|
const { componentHint, componentType } = component;
|
|
@@ -244,11 +226,11 @@ async function beginMigration(derivedAccountId, appId, platformVersion) {
|
|
|
244
226
|
internalId = componentId;
|
|
245
227
|
}
|
|
246
228
|
const promptText = componentHint
|
|
247
|
-
? `${
|
|
248
|
-
: `${
|
|
249
|
-
uidMap[componentId] = await
|
|
229
|
+
? `${mapToUserFacingType(componentType)} '${componentHint}' (ID: ${internalId})`
|
|
230
|
+
: `${mapToUserFacingType(componentType)} (ID: ${internalId})`;
|
|
231
|
+
uidMap[componentId] = await inputPrompt(lib.migrate.prompt.uidForComponent(promptText), {
|
|
250
232
|
validate: (uid) => {
|
|
251
|
-
const result =
|
|
233
|
+
const result = validateUid(uid);
|
|
252
234
|
return result === undefined ? true : result;
|
|
253
235
|
},
|
|
254
236
|
defaultAnswer: componentHint
|
|
@@ -259,94 +241,94 @@ async function beginMigration(derivedAccountId, appId, platformVersion) {
|
|
|
259
241
|
}
|
|
260
242
|
return { migrationId, uidMap };
|
|
261
243
|
}
|
|
262
|
-
async function pollMigrationStatus(derivedAccountId, migrationId, successStates = []) {
|
|
263
|
-
return
|
|
244
|
+
export async function pollMigrationStatus(derivedAccountId, migrationId, successStates = []) {
|
|
245
|
+
return poll(() => checkMigrationStatusV2(derivedAccountId, migrationId), {
|
|
264
246
|
successStates: [...successStates],
|
|
265
|
-
errorStates: [...
|
|
247
|
+
errorStates: [...DEFAULT_POLLING_STATUS_LOOKUP.errorStates],
|
|
266
248
|
});
|
|
267
249
|
}
|
|
268
|
-
async function finalizeMigration(derivedAccountId, migrationId, uidMap, projectName) {
|
|
250
|
+
export async function finalizeMigration(derivedAccountId, migrationId, uidMap, projectName) {
|
|
269
251
|
let pollResponse;
|
|
270
252
|
try {
|
|
271
|
-
|
|
272
|
-
text:
|
|
253
|
+
SpinniesManager.add('finishingMigration', {
|
|
254
|
+
text: lib.migrate.spinners.finishingMigration,
|
|
273
255
|
});
|
|
274
|
-
await
|
|
256
|
+
await continueMigration(derivedAccountId, migrationId, uidMap, projectName);
|
|
275
257
|
pollResponse = await pollMigrationStatus(derivedAccountId, migrationId, [
|
|
276
|
-
|
|
258
|
+
MIGRATION_STATUS.SUCCESS,
|
|
277
259
|
]);
|
|
278
260
|
}
|
|
279
261
|
catch (error) {
|
|
280
|
-
|
|
281
|
-
text:
|
|
262
|
+
SpinniesManager.fail('finishingMigration', {
|
|
263
|
+
text: lib.migrate.spinners.migrationFailed,
|
|
282
264
|
});
|
|
283
|
-
if (
|
|
265
|
+
if (isMigrationStatus(error) && error.status === MIGRATION_STATUS.FAILURE) {
|
|
284
266
|
throw new Error(buildErrorMessageFromMigrationStatus(error));
|
|
285
267
|
}
|
|
286
|
-
throw new Error(
|
|
268
|
+
throw new Error(lib.migrate.errors.migrationFailed, {
|
|
287
269
|
cause: error,
|
|
288
270
|
});
|
|
289
271
|
}
|
|
290
|
-
if (pollResponse.status !==
|
|
291
|
-
throw new Error(
|
|
272
|
+
if (pollResponse.status !== MIGRATION_STATUS.SUCCESS) {
|
|
273
|
+
throw new Error(lib.migrate.errors.migrationFailed);
|
|
292
274
|
}
|
|
293
|
-
if (pollResponse.status ===
|
|
294
|
-
|
|
295
|
-
text:
|
|
275
|
+
if (pollResponse.status === MIGRATION_STATUS.SUCCESS) {
|
|
276
|
+
SpinniesManager.succeed('finishingMigration', {
|
|
277
|
+
text: lib.migrate.spinners.migrationComplete,
|
|
296
278
|
});
|
|
297
279
|
}
|
|
298
280
|
return pollResponse.buildId;
|
|
299
281
|
}
|
|
300
|
-
async function downloadProjectFiles(derivedAccountId, projectName, buildId, projectDest, projectConfig) {
|
|
282
|
+
export async function downloadProjectFiles(derivedAccountId, projectName, buildId, projectDest, projectConfig) {
|
|
301
283
|
try {
|
|
302
|
-
|
|
303
|
-
text:
|
|
284
|
+
SpinniesManager.add('fetchingMigratedProject', {
|
|
285
|
+
text: lib.migrate.spinners.downloadingProjectContents,
|
|
304
286
|
});
|
|
305
|
-
const { data: zippedProject } = await
|
|
287
|
+
const { data: zippedProject } = await downloadProject(derivedAccountId, projectName, buildId);
|
|
306
288
|
let absoluteDestPath;
|
|
307
289
|
if (projectConfig?.projectConfig && projectConfig?.projectDir) {
|
|
308
290
|
const { projectDir } = projectConfig;
|
|
309
291
|
absoluteDestPath = projectDir;
|
|
310
292
|
const { srcDir } = projectConfig.projectConfig;
|
|
311
|
-
const archiveDest =
|
|
293
|
+
const archiveDest = path.join(projectDir, 'archive');
|
|
312
294
|
// Move the existing source directory to archive
|
|
313
|
-
|
|
314
|
-
|
|
295
|
+
fs.renameSync(path.join(projectDir, srcDir), archiveDest);
|
|
296
|
+
uiLogger.info(lib.migrate.sourceContentsMoved(archiveDest));
|
|
315
297
|
}
|
|
316
298
|
else {
|
|
317
299
|
absoluteDestPath = projectDest
|
|
318
|
-
?
|
|
319
|
-
:
|
|
300
|
+
? path.resolve(getCwd(), projectDest)
|
|
301
|
+
: getCwd();
|
|
320
302
|
}
|
|
321
|
-
await
|
|
303
|
+
await extractZipArchive(zippedProject, sanitizeFileName(projectName), absoluteDestPath, {
|
|
322
304
|
includesRootDir: true,
|
|
323
305
|
hideLogs: true,
|
|
324
306
|
});
|
|
325
|
-
|
|
326
|
-
text:
|
|
307
|
+
SpinniesManager.succeed('fetchingMigratedProject', {
|
|
308
|
+
text: lib.migrate.spinners.downloadingProjectContentsComplete,
|
|
327
309
|
});
|
|
328
|
-
|
|
310
|
+
uiLogger.success(`Saved ${projectName} to ${projectDest}`);
|
|
329
311
|
}
|
|
330
312
|
catch (error) {
|
|
331
|
-
|
|
332
|
-
text:
|
|
313
|
+
SpinniesManager.fail('fetchingMigratedProject', {
|
|
314
|
+
text: lib.migrate.spinners.downloadingProjectContentsFailed,
|
|
333
315
|
});
|
|
334
316
|
throw error;
|
|
335
317
|
}
|
|
336
318
|
}
|
|
337
|
-
async function migrateApp2025_2(derivedAccountId, options, projectConfig) {
|
|
338
|
-
|
|
339
|
-
const ungatedForUnifiedApps = await
|
|
319
|
+
export async function migrateApp2025_2(derivedAccountId, options, projectConfig) {
|
|
320
|
+
SpinniesManager.init();
|
|
321
|
+
const ungatedForUnifiedApps = await hasFeature(derivedAccountId, FEATURES.UNIFIED_APPS);
|
|
340
322
|
if (!ungatedForUnifiedApps) {
|
|
341
|
-
throw new Error(
|
|
323
|
+
throw new Error(lib.migrate.errors.notUngatedForUnifiedApps(uiAccountDescription(derivedAccountId)));
|
|
342
324
|
}
|
|
343
325
|
if (projectConfig) {
|
|
344
326
|
if (!projectConfig?.projectConfig || !projectConfig?.projectDir) {
|
|
345
|
-
throw new Error(
|
|
327
|
+
throw new Error(lib.migrate.errors.project.invalidConfig);
|
|
346
328
|
}
|
|
347
|
-
const { projectExists } = await
|
|
329
|
+
const { projectExists } = await ensureProjectExists(derivedAccountId, projectConfig.projectConfig.name, { allowCreate: false, noLogs: true });
|
|
348
330
|
if (!projectExists) {
|
|
349
|
-
throw new Error(
|
|
331
|
+
throw new Error(lib.migrate.errors.project.doesNotExist(derivedAccountId));
|
|
350
332
|
}
|
|
351
333
|
}
|
|
352
334
|
const { appIdToMigrate, projectName, projectDest } = await handleMigrationSetup(derivedAccountId, options, projectConfig);
|
|
@@ -360,12 +342,12 @@ async function migrateApp2025_2(derivedAccountId, options, projectConfig) {
|
|
|
360
342
|
const { migrationId, uidMap } = migrationInProgress;
|
|
361
343
|
const buildId = await finalizeMigration(derivedAccountId, migrationId, uidMap, projectConfig?.projectConfig?.name || projectName);
|
|
362
344
|
await downloadProjectFiles(derivedAccountId, projectName, buildId, projectDest, projectConfig);
|
|
363
|
-
|
|
364
|
-
|
|
345
|
+
uiLogger.log(uiLink('Project Details', getProjectDetailUrl(projectName, derivedAccountId)));
|
|
346
|
+
uiLogger.log(uiLink('Build Details', getProjectBuildDetailUrl(projectName, buildId, derivedAccountId)));
|
|
365
347
|
}
|
|
366
|
-
function logInvalidAccountError() {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
348
|
+
export function logInvalidAccountError() {
|
|
349
|
+
uiLine();
|
|
350
|
+
uiLogger.error(lib.migrate.errors.invalidAccountTypeTitle);
|
|
351
|
+
uiLogger.log(lib.migrate.errors.invalidAccountTypeDescription(uiCommandReference('hs account use'), uiCommandReference('hs auth')));
|
|
352
|
+
uiLine();
|
|
371
353
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { CLIAccount } from '@hubspot/local-dev-lib/types/Accounts';
|
|
2
2
|
import { ArgumentsCamelCase } from 'yargs';
|
|
3
|
-
import { MigrateAppArgs } from './migrate';
|
|
3
|
+
import { MigrateAppArgs } from './migrate.js';
|
|
4
4
|
export declare function migrateApp2023_2(derivedAccountId: number, options: ArgumentsCamelCase<MigrateAppArgs>, accountConfig: CLIAccount): Promise<void>;
|