@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
|
@@ -1,162 +1,144 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const projectDevTargetAccountPrompt_1 = require("../../prompts/projectDevTargetAccountPrompt");
|
|
29
|
-
const promptUtils_1 = require("../../prompts/promptUtils");
|
|
30
|
-
const sandboxes_1 = require("../../sandboxes");
|
|
31
|
-
const sandboxSync_1 = require("../../sandboxSync");
|
|
32
|
-
const developerTestAccounts_1 = require("../../developerTestAccounts");
|
|
33
|
-
const ui_1 = require("../../ui");
|
|
34
|
-
const SpinniesManager_1 = __importDefault(require("../../ui/SpinniesManager"));
|
|
35
|
-
const exitCodes_1 = require("../../enums/exitCodes");
|
|
36
|
-
const usageTracking_1 = require("../../usageTracking");
|
|
37
|
-
const accountTypes_1 = require("../../accountTypes");
|
|
38
|
-
const upload_1 = require("../../projects/upload");
|
|
39
|
-
const buildAndDeploy_1 = require("../../projects/buildAndDeploy");
|
|
40
|
-
const constants_1 = require("../../constants");
|
|
41
|
-
const index_2 = require("../../errorHandlers/index");
|
|
42
|
-
const buildAccount_1 = require("../../buildAccount");
|
|
43
|
-
const accountNamePrompt_1 = require("../../prompts/accountNamePrompt");
|
|
44
|
-
const en_1 = require("../../../lang/en");
|
|
45
|
-
const logger_1 = require("../../ui/logger");
|
|
1
|
+
import { HUBSPOT_ACCOUNT_TYPES, HUBSPOT_ACCOUNT_TYPE_STRINGS, } from '@hubspot/local-dev-lib/constants/config';
|
|
2
|
+
import { isMissingScopeError, isSpecifiedError, } from '@hubspot/local-dev-lib/errors/index';
|
|
3
|
+
import { getHubSpotWebsiteOrigin } from '@hubspot/local-dev-lib/urls';
|
|
4
|
+
import { getAccountConfig, getEnv } from '@hubspot/local-dev-lib/config';
|
|
5
|
+
import { createProject } from '@hubspot/local-dev-lib/api/projects';
|
|
6
|
+
import { ENVIRONMENTS } from '@hubspot/local-dev-lib/constants/environments';
|
|
7
|
+
import { PERSONAL_ACCESS_KEY_AUTH_METHOD } from '@hubspot/local-dev-lib/constants/auth';
|
|
8
|
+
import { getAccountIdentifier } from '@hubspot/local-dev-lib/config/getAccountIdentifier';
|
|
9
|
+
import { getSandboxUsageLimits } from '@hubspot/local-dev-lib/api/sandboxHubs';
|
|
10
|
+
import { confirmDefaultAccountPrompt, selectSandboxTargetAccountPrompt, selectDeveloperTestTargetAccountPrompt, confirmUseExistingDeveloperTestAccountPrompt, } from '../../prompts/projectDevTargetAccountPrompt.js';
|
|
11
|
+
import { confirmPrompt, listPrompt } from '../../prompts/promptUtils.js';
|
|
12
|
+
import { validateSandboxUsageLimits, getAvailableSyncTypes, } from '../../sandboxes.js';
|
|
13
|
+
import { syncSandbox } from '../../sandboxSync.js';
|
|
14
|
+
import { validateDevTestAccountUsageLimits } from '../../developerTestAccounts.js';
|
|
15
|
+
import { uiLine, uiAccountDescription } from '../../ui/index.js';
|
|
16
|
+
import SpinniesManager from '../../ui/SpinniesManager.js';
|
|
17
|
+
import { EXIT_CODES } from '../../enums/exitCodes.js';
|
|
18
|
+
import { trackCommandMetadataUsage } from '../../usageTracking.js';
|
|
19
|
+
import { isAppDeveloperAccount, isDeveloperTestAccount, isUnifiedAccount, } from '../../accountTypes.js';
|
|
20
|
+
import { handleProjectUpload } from '../../projects/upload.js';
|
|
21
|
+
import { pollProjectBuildAndDeploy } from '../../projects/buildAndDeploy.js';
|
|
22
|
+
import { PROJECT_ERROR_TYPES, PROJECT_BUILD_TEXT, PROJECT_DEPLOY_TEXT, } from '../../constants.js';
|
|
23
|
+
import { logError, ApiErrorContext, debugError, } from '../../errorHandlers/index.js';
|
|
24
|
+
import { buildSandbox, buildDeveloperTestAccount, saveAccountToConfig, } from '../../buildAccount.js';
|
|
25
|
+
import { hubspotAccountNamePrompt } from '../../prompts/accountNamePrompt.js';
|
|
26
|
+
import { lib } from '../../../lang/en.js';
|
|
27
|
+
import { uiLogger } from '../../ui/logger.js';
|
|
46
28
|
// If the user passed in the --account flag, confirm they want to use that account as
|
|
47
29
|
// their target account, otherwise exit
|
|
48
|
-
async function confirmDefaultAccountIsTarget(accountConfig) {
|
|
30
|
+
export async function confirmDefaultAccountIsTarget(accountConfig) {
|
|
49
31
|
if (!accountConfig.name || !accountConfig.accountType) {
|
|
50
|
-
|
|
51
|
-
process.exit(
|
|
32
|
+
uiLogger.error(lib.localDevHelpers.confirmDefaultAccountIsTarget.configError);
|
|
33
|
+
process.exit(EXIT_CODES.ERROR);
|
|
52
34
|
}
|
|
53
|
-
|
|
54
|
-
const useDefaultAccount = await
|
|
35
|
+
uiLogger.log('');
|
|
36
|
+
const useDefaultAccount = await confirmDefaultAccountPrompt(accountConfig.name, HUBSPOT_ACCOUNT_TYPE_STRINGS[accountConfig.accountType]);
|
|
55
37
|
if (!useDefaultAccount) {
|
|
56
|
-
|
|
38
|
+
uiLogger.log(lib.localDevHelpers.confirmDefaultAccountIsTarget
|
|
57
39
|
.declineDefaultAccountExplanation);
|
|
58
|
-
process.exit(
|
|
40
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
59
41
|
}
|
|
60
42
|
}
|
|
61
43
|
// Confirm the default account is supported for the type of apps being developed
|
|
62
|
-
async function checkIfDefaultAccountIsSupported(accountConfig, hasPublicApps) {
|
|
63
|
-
const defaultAccountIsUnified = await
|
|
44
|
+
export async function checkIfDefaultAccountIsSupported(accountConfig, hasPublicApps) {
|
|
45
|
+
const defaultAccountIsUnified = await isUnifiedAccount(accountConfig);
|
|
64
46
|
if (hasPublicApps &&
|
|
65
|
-
!(
|
|
66
|
-
|
|
47
|
+
!(isAppDeveloperAccount(accountConfig) ||
|
|
48
|
+
isDeveloperTestAccount(accountConfig) ||
|
|
67
49
|
defaultAccountIsUnified)) {
|
|
68
|
-
|
|
69
|
-
process.exit(
|
|
50
|
+
uiLogger.error(lib.localDevHelpers.checkIfDefaultAccountIsSupported.publicApp);
|
|
51
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
70
52
|
}
|
|
71
|
-
else if (!hasPublicApps &&
|
|
72
|
-
|
|
73
|
-
process.exit(
|
|
53
|
+
else if (!hasPublicApps && isAppDeveloperAccount(accountConfig)) {
|
|
54
|
+
uiLogger.error(lib.localDevHelpers.checkIfDefaultAccountIsSupported.privateApp);
|
|
55
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
74
56
|
}
|
|
75
57
|
}
|
|
76
|
-
function checkIfParentAccountIsAuthed(accountConfig) {
|
|
58
|
+
export function checkIfParentAccountIsAuthed(accountConfig) {
|
|
77
59
|
if (!accountConfig.parentAccountId ||
|
|
78
|
-
!
|
|
79
|
-
|
|
80
|
-
process.exit(
|
|
60
|
+
!getAccountConfig(accountConfig.parentAccountId)) {
|
|
61
|
+
uiLogger.error(lib.localDevHelpers.checkIfParentAccountIsAuthed.notAuthedError(accountConfig.parentAccountId || '', uiAccountDescription(getAccountIdentifier(accountConfig))));
|
|
62
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
81
63
|
}
|
|
82
64
|
}
|
|
83
65
|
// Confirm the default account is a developer account if developing public apps
|
|
84
|
-
function checkIfAccountFlagIsSupported(accountConfig, hasPublicApps) {
|
|
66
|
+
export function checkIfAccountFlagIsSupported(accountConfig, hasPublicApps) {
|
|
85
67
|
if (hasPublicApps) {
|
|
86
|
-
if (!
|
|
87
|
-
|
|
88
|
-
process.exit(
|
|
68
|
+
if (!isDeveloperTestAccount(accountConfig)) {
|
|
69
|
+
uiLogger.error(lib.localDevHelpers.validateAccountOption.invalidPublicAppAccount);
|
|
70
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
89
71
|
}
|
|
90
72
|
checkIfParentAccountIsAuthed(accountConfig);
|
|
91
73
|
}
|
|
92
|
-
else if (
|
|
93
|
-
|
|
94
|
-
process.exit(
|
|
74
|
+
else if (isAppDeveloperAccount(accountConfig)) {
|
|
75
|
+
uiLogger.error(lib.localDevHelpers.validateAccountOption.invalidPrivateAppAccount);
|
|
76
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
95
77
|
}
|
|
96
78
|
}
|
|
97
79
|
// If the user isn't using the recommended account type, prompt them to use or create one
|
|
98
|
-
async function suggestRecommendedNestedAccount(accounts, accountConfig, hasPublicApps) {
|
|
99
|
-
|
|
100
|
-
|
|
80
|
+
export async function suggestRecommendedNestedAccount(accounts, accountConfig, hasPublicApps) {
|
|
81
|
+
uiLogger.log('');
|
|
82
|
+
uiLine();
|
|
101
83
|
if (hasPublicApps) {
|
|
102
|
-
|
|
84
|
+
uiLogger.log(lib.localDevHelpers.validateAccountOption
|
|
103
85
|
.publicAppNonDeveloperTestAccountWarning);
|
|
104
86
|
}
|
|
105
87
|
else {
|
|
106
|
-
|
|
88
|
+
uiLogger.log(lib.localDevHelpers.validateAccountOption.nonSandboxWarning);
|
|
107
89
|
}
|
|
108
|
-
|
|
109
|
-
|
|
90
|
+
uiLine();
|
|
91
|
+
uiLogger.log('');
|
|
110
92
|
const targetAccountPrompt = hasPublicApps
|
|
111
|
-
?
|
|
112
|
-
:
|
|
93
|
+
? selectDeveloperTestTargetAccountPrompt
|
|
94
|
+
: selectSandboxTargetAccountPrompt;
|
|
113
95
|
return targetAccountPrompt(accounts, accountConfig);
|
|
114
96
|
}
|
|
115
97
|
// Create a new sandbox and return its accountId
|
|
116
|
-
async function createSandboxForLocalDev(accountId, accountConfig, env) {
|
|
98
|
+
export async function createSandboxForLocalDev(accountId, accountConfig, env) {
|
|
117
99
|
try {
|
|
118
|
-
await
|
|
100
|
+
await validateSandboxUsageLimits(accountConfig, HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX, env);
|
|
119
101
|
}
|
|
120
102
|
catch (err) {
|
|
121
|
-
if (
|
|
122
|
-
|
|
123
|
-
const websiteOrigin =
|
|
103
|
+
if (isMissingScopeError(err)) {
|
|
104
|
+
uiLogger.error(lib.sandbox.create.developer.failure.scopes.message);
|
|
105
|
+
const websiteOrigin = getHubSpotWebsiteOrigin(env);
|
|
124
106
|
const url = `${websiteOrigin}/personal-access-key/${accountId}`;
|
|
125
|
-
|
|
107
|
+
uiLogger.info(lib.sandbox.create.developer.failure.scopes.instructions(accountConfig.name || accountId, url));
|
|
126
108
|
}
|
|
127
109
|
else {
|
|
128
|
-
|
|
110
|
+
logError(err);
|
|
129
111
|
}
|
|
130
|
-
process.exit(
|
|
112
|
+
process.exit(EXIT_CODES.ERROR);
|
|
131
113
|
}
|
|
132
114
|
try {
|
|
133
|
-
const { name } = await
|
|
134
|
-
accountType:
|
|
115
|
+
const { name } = await hubspotAccountNamePrompt({
|
|
116
|
+
accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
|
|
135
117
|
});
|
|
136
|
-
|
|
137
|
-
const result = await
|
|
118
|
+
trackCommandMetadataUsage('sandbox-create', { step: 'project-dev' }, accountId);
|
|
119
|
+
const result = await buildSandbox(name, accountConfig, HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX, env);
|
|
138
120
|
const targetAccountId = result.sandbox.sandboxHubId;
|
|
139
|
-
const sandboxAccountConfig =
|
|
121
|
+
const sandboxAccountConfig = getAccountConfig(result.sandbox.sandboxHubId);
|
|
140
122
|
if (!sandboxAccountConfig) {
|
|
141
|
-
|
|
142
|
-
process.exit(
|
|
123
|
+
uiLogger.error(lib.sandbox.create.developer.failure.generic);
|
|
124
|
+
process.exit(EXIT_CODES.ERROR);
|
|
143
125
|
}
|
|
144
|
-
const syncTasks = await
|
|
126
|
+
const syncTasks = await getAvailableSyncTypes(accountConfig, sandboxAccountConfig);
|
|
145
127
|
// For v1 sandboxes, keep sync here. Once we migrate to v2, this will be handled by BE automatically
|
|
146
|
-
await
|
|
128
|
+
await syncSandbox(sandboxAccountConfig, accountConfig, env, syncTasks, true);
|
|
147
129
|
return targetAccountId;
|
|
148
130
|
}
|
|
149
131
|
catch (err) {
|
|
150
|
-
|
|
151
|
-
process.exit(
|
|
132
|
+
logError(err);
|
|
133
|
+
process.exit(EXIT_CODES.ERROR);
|
|
152
134
|
}
|
|
153
135
|
}
|
|
154
136
|
// Create a developer test account and return its accountId
|
|
155
|
-
async function createDeveloperTestAccountForLocalDev(accountId, accountConfig, env, useV3 = false) {
|
|
137
|
+
export async function createDeveloperTestAccountForLocalDev(accountId, accountConfig, env, useV3 = false) {
|
|
156
138
|
let currentPortalCount = 0;
|
|
157
139
|
let maxTestPortals = 10;
|
|
158
140
|
try {
|
|
159
|
-
const validateResult = await
|
|
141
|
+
const validateResult = await validateDevTestAccountUsageLimits(accountConfig);
|
|
160
142
|
if (validateResult) {
|
|
161
143
|
currentPortalCount = validateResult.results
|
|
162
144
|
? validateResult.results.length
|
|
@@ -165,102 +147,102 @@ async function createDeveloperTestAccountForLocalDev(accountId, accountConfig, e
|
|
|
165
147
|
}
|
|
166
148
|
}
|
|
167
149
|
catch (err) {
|
|
168
|
-
if (
|
|
169
|
-
|
|
170
|
-
const websiteOrigin =
|
|
150
|
+
if (isMissingScopeError(err)) {
|
|
151
|
+
uiLogger.error(lib.developerTestAccount.create.failure.scopes.message);
|
|
152
|
+
const websiteOrigin = getHubSpotWebsiteOrigin(env);
|
|
171
153
|
const url = `${websiteOrigin}/personal-access-key/${accountId}`;
|
|
172
|
-
|
|
154
|
+
uiLogger.info(lib.developerTestAccount.create.failure.scopes.instructions(accountConfig.name || accountId, url));
|
|
173
155
|
}
|
|
174
156
|
else {
|
|
175
|
-
|
|
157
|
+
logError(err);
|
|
176
158
|
}
|
|
177
|
-
process.exit(
|
|
159
|
+
process.exit(EXIT_CODES.ERROR);
|
|
178
160
|
}
|
|
179
161
|
try {
|
|
180
|
-
const { name } = await
|
|
162
|
+
const { name } = await hubspotAccountNamePrompt({
|
|
181
163
|
currentPortalCount,
|
|
182
|
-
accountType:
|
|
164
|
+
accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST,
|
|
183
165
|
});
|
|
184
|
-
|
|
185
|
-
const result = await
|
|
166
|
+
trackCommandMetadataUsage('developer-test-account-create', { step: 'project-dev' }, accountId);
|
|
167
|
+
const result = await buildDeveloperTestAccount(name, accountConfig, env, maxTestPortals, useV3);
|
|
186
168
|
return result;
|
|
187
169
|
}
|
|
188
170
|
catch (err) {
|
|
189
|
-
|
|
190
|
-
process.exit(
|
|
171
|
+
logError(err);
|
|
172
|
+
process.exit(EXIT_CODES.ERROR);
|
|
191
173
|
}
|
|
192
174
|
}
|
|
193
175
|
// Prompt user to confirm usage of an existing developer test account that is not currently in the config
|
|
194
|
-
async function useExistingDevTestAccount(env, account) {
|
|
195
|
-
const useExistingDevTestAcct = await
|
|
176
|
+
export async function useExistingDevTestAccount(env, account) {
|
|
177
|
+
const useExistingDevTestAcct = await confirmUseExistingDeveloperTestAccountPrompt(account);
|
|
196
178
|
if (!useExistingDevTestAcct) {
|
|
197
|
-
|
|
198
|
-
|
|
179
|
+
uiLogger.log('');
|
|
180
|
+
uiLogger.log(lib.localDevHelpers.confirmDefaultAccountIsTarget
|
|
199
181
|
.declineDefaultAccountExplanation);
|
|
200
|
-
|
|
201
|
-
process.exit(
|
|
182
|
+
uiLogger.log('');
|
|
183
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
202
184
|
}
|
|
203
|
-
const devTestAcctConfigName = await
|
|
204
|
-
|
|
185
|
+
const devTestAcctConfigName = await saveAccountToConfig(account.id, account.accountName, env);
|
|
186
|
+
uiLogger.success(lib.developerTestAccount.create.success.configFileUpdated(devTestAcctConfigName, PERSONAL_ACCESS_KEY_AUTH_METHOD.name));
|
|
205
187
|
}
|
|
206
188
|
// Prompt the user to create a new project if one doesn't exist on their target account
|
|
207
|
-
async function createNewProjectForLocalDev(projectConfig, targetAccountId, shouldCreateWithoutConfirmation, hasPublicApps) {
|
|
189
|
+
export async function createNewProjectForLocalDev(projectConfig, targetAccountId, shouldCreateWithoutConfirmation, hasPublicApps) {
|
|
208
190
|
// Create the project without prompting if this is a newly created sandbox
|
|
209
191
|
let shouldCreateProject = shouldCreateWithoutConfirmation;
|
|
210
192
|
if (!shouldCreateProject) {
|
|
211
193
|
const explanationLangFunction = hasPublicApps
|
|
212
|
-
?
|
|
194
|
+
? lib.localDevHelpers.createNewProjectForLocalDev
|
|
213
195
|
.publicAppProjectMustExistExplanation
|
|
214
|
-
:
|
|
196
|
+
: lib.localDevHelpers.createNewProjectForLocalDev
|
|
215
197
|
.projectMustExistExplanation;
|
|
216
198
|
const explanationString = explanationLangFunction(projectConfig.name, targetAccountId);
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
shouldCreateProject = await
|
|
199
|
+
uiLogger.log('');
|
|
200
|
+
uiLine();
|
|
201
|
+
uiLogger.log(explanationString);
|
|
202
|
+
uiLine();
|
|
203
|
+
shouldCreateProject = await confirmPrompt(lib.localDevHelpers.createNewProjectForLocalDev.createProject(projectConfig.name, uiAccountDescription(targetAccountId)));
|
|
222
204
|
}
|
|
223
205
|
if (shouldCreateProject) {
|
|
224
|
-
|
|
225
|
-
text:
|
|
206
|
+
SpinniesManager.add('createProject', {
|
|
207
|
+
text: lib.localDevHelpers.createNewProjectForLocalDev.creatingProject(projectConfig.name, uiAccountDescription(targetAccountId)),
|
|
226
208
|
});
|
|
227
209
|
try {
|
|
228
|
-
const { data: project } = await
|
|
229
|
-
|
|
230
|
-
text:
|
|
210
|
+
const { data: project } = await createProject(targetAccountId, projectConfig.name);
|
|
211
|
+
SpinniesManager.succeed('createProject', {
|
|
212
|
+
text: lib.localDevHelpers.createNewProjectForLocalDev.createdProject(projectConfig.name, uiAccountDescription(targetAccountId)),
|
|
231
213
|
succeedColor: 'white',
|
|
232
214
|
});
|
|
233
215
|
return project;
|
|
234
216
|
}
|
|
235
217
|
catch (err) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
process.exit(
|
|
218
|
+
SpinniesManager.fail('createProject');
|
|
219
|
+
uiLogger.log(lib.localDevHelpers.createNewProjectForLocalDev.failedToCreateProject);
|
|
220
|
+
process.exit(EXIT_CODES.ERROR);
|
|
239
221
|
}
|
|
240
222
|
}
|
|
241
223
|
else {
|
|
242
224
|
// We cannot continue if the project does not exist in the target account
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
process.exit(
|
|
225
|
+
uiLogger.log('');
|
|
226
|
+
uiLogger.log(lib.localDevHelpers.createNewProjectForLocalDev.choseNotToCreateProject);
|
|
227
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
246
228
|
}
|
|
247
229
|
}
|
|
248
230
|
function projectUploadCallback(accountId, projectConfig, tempFile, buildId) {
|
|
249
231
|
if (!buildId) {
|
|
250
|
-
|
|
251
|
-
process.exit(
|
|
232
|
+
uiLogger.error(lib.localDevHelpers.createInitialBuildForNewProject.genericError);
|
|
233
|
+
process.exit(EXIT_CODES.ERROR);
|
|
252
234
|
}
|
|
253
|
-
return
|
|
235
|
+
return pollProjectBuildAndDeploy(accountId, projectConfig, tempFile, buildId, true);
|
|
254
236
|
}
|
|
255
237
|
// Create an initial build if the project was newly created in the account
|
|
256
238
|
// Return the newly deployed build
|
|
257
|
-
async function createInitialBuildForNewProject(projectConfig, projectDir, targetAccountId, sendIR, profile) {
|
|
258
|
-
const { result: initialUploadResult, uploadError } = await
|
|
239
|
+
export async function createInitialBuildForNewProject(projectConfig, projectDir, targetAccountId, sendIR, profile) {
|
|
240
|
+
const { result: initialUploadResult, uploadError } = await handleProjectUpload({
|
|
259
241
|
accountId: targetAccountId,
|
|
260
242
|
projectConfig,
|
|
261
243
|
projectDir,
|
|
262
244
|
callbackFunc: projectUploadCallback,
|
|
263
|
-
uploadMessage:
|
|
245
|
+
uploadMessage: lib.localDevHelpers.createInitialBuildForNewProject
|
|
264
246
|
.initialUploadMessage,
|
|
265
247
|
forceCreate: true,
|
|
266
248
|
skipValidation: true,
|
|
@@ -268,80 +250,80 @@ async function createInitialBuildForNewProject(projectConfig, projectDir, target
|
|
|
268
250
|
profile,
|
|
269
251
|
});
|
|
270
252
|
if (uploadError) {
|
|
271
|
-
if (
|
|
272
|
-
subCategory:
|
|
253
|
+
if (isSpecifiedError(uploadError, {
|
|
254
|
+
subCategory: PROJECT_ERROR_TYPES.PROJECT_LOCKED,
|
|
273
255
|
})) {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
256
|
+
uiLogger.log('');
|
|
257
|
+
uiLogger.error(lib.localDevHelpers.createInitialBuildForNewProject.projectLockedError);
|
|
258
|
+
uiLogger.log('');
|
|
277
259
|
}
|
|
278
260
|
else {
|
|
279
|
-
|
|
261
|
+
logError(uploadError, new ApiErrorContext({
|
|
280
262
|
accountId: targetAccountId,
|
|
281
263
|
projectName: projectConfig.name,
|
|
282
264
|
}));
|
|
283
265
|
}
|
|
284
|
-
process.exit(
|
|
266
|
+
process.exit(EXIT_CODES.ERROR);
|
|
285
267
|
}
|
|
286
268
|
if (!initialUploadResult?.succeeded) {
|
|
287
269
|
let subTasks = [];
|
|
288
270
|
if (initialUploadResult?.buildResult.status === 'FAILURE') {
|
|
289
271
|
subTasks =
|
|
290
|
-
initialUploadResult.buildResult[
|
|
272
|
+
initialUploadResult.buildResult[PROJECT_BUILD_TEXT.SUBTASK_KEY];
|
|
291
273
|
}
|
|
292
274
|
else if (initialUploadResult?.deployResult?.status === 'FAILURE') {
|
|
293
275
|
subTasks =
|
|
294
|
-
initialUploadResult.deployResult[
|
|
276
|
+
initialUploadResult.deployResult[PROJECT_DEPLOY_TEXT.SUBTASK_KEY];
|
|
295
277
|
}
|
|
296
278
|
const failedSubTasks = subTasks.filter(task => task.status === 'FAILURE');
|
|
297
|
-
|
|
279
|
+
uiLogger.log('');
|
|
298
280
|
failedSubTasks.forEach(failedSubTask => {
|
|
299
|
-
|
|
281
|
+
uiLogger.error(failedSubTask.errorMessage);
|
|
300
282
|
});
|
|
301
|
-
|
|
302
|
-
process.exit(
|
|
283
|
+
uiLogger.log('');
|
|
284
|
+
process.exit(EXIT_CODES.ERROR);
|
|
303
285
|
}
|
|
304
286
|
return initialUploadResult.buildResult;
|
|
305
287
|
}
|
|
306
|
-
function getAccountHomeUrl(accountId) {
|
|
307
|
-
const baseUrl =
|
|
288
|
+
export function getAccountHomeUrl(accountId) {
|
|
289
|
+
const baseUrl = getHubSpotWebsiteOrigin(getEnv(accountId) === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD);
|
|
308
290
|
return `${baseUrl}/home?portalId=${accountId}`;
|
|
309
291
|
}
|
|
310
|
-
async function hasSandboxes(account) {
|
|
311
|
-
const accountId =
|
|
292
|
+
export async function hasSandboxes(account) {
|
|
293
|
+
const accountId = getAccountIdentifier(account);
|
|
312
294
|
if (!accountId) {
|
|
313
295
|
return false;
|
|
314
296
|
}
|
|
315
297
|
try {
|
|
316
|
-
const { data: { usage }, } = await
|
|
298
|
+
const { data: { usage }, } = await getSandboxUsageLimits(accountId);
|
|
317
299
|
return usage.STANDARD.limit > 0 || usage.DEVELOPER.limit > 0;
|
|
318
300
|
}
|
|
319
301
|
catch (e) {
|
|
320
|
-
|
|
302
|
+
debugError(e);
|
|
321
303
|
return false;
|
|
322
304
|
}
|
|
323
305
|
}
|
|
324
306
|
// Top level prompt to choose the type of account to test on
|
|
325
|
-
async function selectAccountTypePrompt(accountConfig) {
|
|
307
|
+
export async function selectAccountTypePrompt(accountConfig) {
|
|
326
308
|
const hasAccessToSandboxes = await hasSandboxes(accountConfig);
|
|
327
|
-
const result = await
|
|
309
|
+
const result = await listPrompt(lib.localDevHelpers.selectAccountTypePrompt.message, {
|
|
328
310
|
choices: [
|
|
329
311
|
{
|
|
330
|
-
name:
|
|
312
|
+
name: lib.localDevHelpers.selectAccountTypePrompt
|
|
331
313
|
.developerTestAccountOption,
|
|
332
|
-
value:
|
|
314
|
+
value: HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST,
|
|
333
315
|
},
|
|
334
316
|
{
|
|
335
|
-
name:
|
|
317
|
+
name: lib.localDevHelpers.selectAccountTypePrompt
|
|
336
318
|
.sandboxAccountOption,
|
|
337
|
-
value:
|
|
319
|
+
value: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
|
|
338
320
|
disabled: !hasAccessToSandboxes
|
|
339
|
-
?
|
|
321
|
+
? lib.localDevHelpers.selectAccountTypePrompt
|
|
340
322
|
.sandboxAccountOptionDisabled
|
|
341
323
|
: false,
|
|
342
324
|
},
|
|
343
325
|
{
|
|
344
|
-
name:
|
|
326
|
+
name: lib.localDevHelpers.selectAccountTypePrompt
|
|
345
327
|
.productionAccountOption,
|
|
346
328
|
value: null,
|
|
347
329
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ComponentTypes, Component, GenericComponentConfig, PublicAppComponentConfig, PrivateAppComponentConfig, AppCardComponentConfig } from '../../types/Projects';
|
|
2
|
-
import {
|
|
3
|
-
import { AppIRNode } from '../../types/ProjectComponents';
|
|
1
|
+
import { ComponentTypes, Component, GenericComponentConfig, PublicAppComponentConfig, PrivateAppComponentConfig, AppCardComponentConfig } from '../../types/Projects.js';
|
|
2
|
+
import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
|
|
3
|
+
import { AppIRNode } from '../../types/ProjectComponents.js';
|
|
4
4
|
export declare const CONFIG_FILES: {
|
|
5
5
|
[k in ComponentTypes]: string;
|
|
6
6
|
};
|
|
@@ -15,4 +15,4 @@ export declare function getProjectComponentTypes(components: Array<Component>):
|
|
|
15
15
|
export declare function getComponentUid(component?: Component | null): string | null;
|
|
16
16
|
export declare function componentIsApp(component?: Component | null): component is Component<PublicAppComponentConfig | PrivateAppComponentConfig>;
|
|
17
17
|
export declare function componentIsPublicApp(component?: Component | null): component is Component<PublicAppComponentConfig>;
|
|
18
|
-
export declare function isAppIRNode(component: IntermediateRepresentationNodeLocalDev
|
|
18
|
+
export declare function isAppIRNode(component: IntermediateRepresentationNodeLocalDev): component is AppIRNode;
|