@hubspot/cli 7.7.21-experimental.1 → 7.7.22-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 +1 -1
- package/commands/config/set.js +23 -25
- 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 +0 -22
- package/lang/en.js +371 -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 +6 -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.js +34 -40
- package/lib/constants.js +31 -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 +59 -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 +4 -4
- package/lib/projects/localDev/LocalDevProcess.js +25 -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 +25 -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.js +14 -24
- 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 +1 -1
- package/lib/yargsUtils.js +13 -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,28 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const SpinniesManager_1 = __importDefault(require("../ui/SpinniesManager"));
|
|
14
|
-
const errorHandlers_1 = require("../errorHandlers");
|
|
15
|
-
const ui_1 = require("../ui");
|
|
16
|
-
const urls_1 = require("./urls");
|
|
17
|
-
const exitCodes_1 = require("../enums/exitCodes");
|
|
18
|
-
const en_1 = require("../../lang/en");
|
|
19
|
-
const logger_1 = require("../ui/logger");
|
|
20
|
-
const constants_2 = require("@hubspot/project-parsing-lib/src/lib/constants");
|
|
21
|
-
const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getBuildStatus, getBuildStructure, getDeployStatus, getDeployStructure, fetchBuildWarnLogs, fetchDeployWarnLogs, } from '@hubspot/local-dev-lib/api/projects';
|
|
3
|
+
import { DEFAULT_POLLING_DELAY, PROJECT_BUILD_TEXT, PROJECT_DEPLOY_TEXT, PROJECT_TASK_TYPES, PROJECT_ERROR_TYPES, } from '../constants.js';
|
|
4
|
+
import SpinniesManager from '../ui/SpinniesManager.js';
|
|
5
|
+
import { logError, ApiErrorContext } from '../errorHandlers/index.js';
|
|
6
|
+
import { uiLine, uiLink, uiAccountDescription } from '../ui/index.js';
|
|
7
|
+
import { getProjectBuildDetailUrl, getProjectDeployDetailUrl, getProjectActivityUrl, } from './urls.js';
|
|
8
|
+
import { EXIT_CODES } from '../enums/exitCodes.js';
|
|
9
|
+
import { lib } from '../../lang/en.js';
|
|
10
|
+
import { uiLogger } from '../ui/logger.js';
|
|
11
|
+
import { AppFunctionsPackageKey } from '@hubspot/project-parsing-lib/src/lib/constants.js';
|
|
12
|
+
import { mapToInternalType } from '@hubspot/project-parsing-lib';
|
|
22
13
|
const SPINNER_STATUS = {
|
|
23
14
|
SPINNING: 'spinning',
|
|
24
15
|
};
|
|
25
|
-
function useV3Api(platformVersion) {
|
|
16
|
+
export function useV3Api(platformVersion) {
|
|
26
17
|
if (!platformVersion || typeof platformVersion !== 'string') {
|
|
27
18
|
return false;
|
|
28
19
|
}
|
|
@@ -51,22 +42,22 @@ function getSubtaskType(task) {
|
|
|
51
42
|
return task.deployType;
|
|
52
43
|
}
|
|
53
44
|
function handleTaskStatusError(statusText) {
|
|
54
|
-
|
|
55
|
-
process.exit(
|
|
45
|
+
uiLogger.error(lib.projectBuildAndDeploy.makePollTaskStatusFunc.errorFetchingTaskStatus(statusText.TYPE_KEY === PROJECT_BUILD_TEXT.TYPE_KEY ? 'build' : 'deploy'));
|
|
46
|
+
process.exit(EXIT_CODES.ERROR);
|
|
56
47
|
}
|
|
57
48
|
function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrings, linkToHubSpot, }) {
|
|
58
49
|
return async function (accountId, taskName, taskId, deployedBuildId, silenceLogs = false) {
|
|
59
50
|
const displayId = deployedBuildId || taskId;
|
|
60
51
|
if (linkToHubSpot && !silenceLogs) {
|
|
61
|
-
|
|
52
|
+
uiLogger.log(`\n${linkToHubSpot(accountId, taskName, taskId, deployedBuildId)}\n`);
|
|
62
53
|
}
|
|
63
|
-
|
|
54
|
+
SpinniesManager.init();
|
|
64
55
|
const overallTaskSpinniesKey = `overallTaskStatus-${statusText.STATUS_TEXT}`;
|
|
65
|
-
|
|
56
|
+
SpinniesManager.add(overallTaskSpinniesKey, {
|
|
66
57
|
text: 'Beginning',
|
|
67
58
|
succeedColor: 'white',
|
|
68
59
|
failColor: 'white',
|
|
69
|
-
failPrefix:
|
|
60
|
+
failPrefix: chalk.bold('!'),
|
|
70
61
|
});
|
|
71
62
|
const [{ data: initialTaskStatus }, { data: { topLevelComponentsWithChildren: taskStructure }, },] = await Promise.all([
|
|
72
63
|
statusFn(accountId, taskName, taskId),
|
|
@@ -77,7 +68,7 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
|
|
|
77
68
|
const tasksById = subtasks
|
|
78
69
|
.filter(subtask => {
|
|
79
70
|
// TODO: Remove this filtering logic when visible=false for SERVERLESS_PACKAGE
|
|
80
|
-
const shouldBeVisible = getSubtaskType(subtask) !==
|
|
71
|
+
const shouldBeVisible = getSubtaskType(subtask) !== mapToInternalType(AppFunctionsPackageKey);
|
|
81
72
|
if (!shouldBeVisible) {
|
|
82
73
|
hiddenComponentBuildIds.push(subtask.id);
|
|
83
74
|
}
|
|
@@ -105,21 +96,21 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
|
|
|
105
96
|
const componentCountText = silenceLogs
|
|
106
97
|
? ''
|
|
107
98
|
: numComponents === 1
|
|
108
|
-
?
|
|
99
|
+
? lib.projectBuildAndDeploy.makePollTaskStatusFunc
|
|
109
100
|
.componentCountSingular
|
|
110
|
-
:
|
|
111
|
-
|
|
101
|
+
: lib.projectBuildAndDeploy.makePollTaskStatusFunc.componentCount(numComponents);
|
|
102
|
+
SpinniesManager.update(overallTaskSpinniesKey, {
|
|
112
103
|
text: `${statusStrings.INITIALIZE(taskName, displayId)}\n${componentCountText}`,
|
|
113
104
|
});
|
|
114
105
|
if (!silenceLogs) {
|
|
115
106
|
function addTaskSpinner(subtask, indent, newline) {
|
|
116
107
|
const taskName = getSubtaskName(subtask);
|
|
117
108
|
const taskType = getSubtaskType(subtask);
|
|
118
|
-
const formattedTaskType =
|
|
119
|
-
? `[${
|
|
109
|
+
const formattedTaskType = PROJECT_TASK_TYPES[taskType]
|
|
110
|
+
? `[${PROJECT_TASK_TYPES[taskType]}]`
|
|
120
111
|
: '';
|
|
121
|
-
const text = `${indent <= 2 ? statusText.STATUS_TEXT : ''} ${
|
|
122
|
-
|
|
112
|
+
const text = `${indent <= 2 ? statusText.STATUS_TEXT : ''} ${chalk.bold(taskName)} ${formattedTaskType} ...${newline ? '\n' : ''}`;
|
|
113
|
+
SpinniesManager.add(subtask.id, {
|
|
123
114
|
text,
|
|
124
115
|
indent,
|
|
125
116
|
succeedColor: 'white',
|
|
@@ -139,8 +130,8 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
|
|
|
139
130
|
taskStatus = data;
|
|
140
131
|
}
|
|
141
132
|
catch (e) {
|
|
142
|
-
|
|
143
|
-
|
|
133
|
+
uiLogger.debug(e);
|
|
134
|
+
logError(e, new ApiErrorContext({
|
|
144
135
|
accountId,
|
|
145
136
|
projectName: taskName,
|
|
146
137
|
}));
|
|
@@ -151,10 +142,10 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
|
|
|
151
142
|
handleTaskStatusError(statusText);
|
|
152
143
|
}
|
|
153
144
|
const { status } = taskStatus;
|
|
154
|
-
if (
|
|
145
|
+
if (SpinniesManager.hasActiveSpinners()) {
|
|
155
146
|
subtasks.forEach(subtask => {
|
|
156
147
|
const { id, status } = subtask;
|
|
157
|
-
const spinner =
|
|
148
|
+
const spinner = SpinniesManager.pick(id);
|
|
158
149
|
if (!spinner || spinner.status !== SPINNER_STATUS.SPINNING) {
|
|
159
150
|
return;
|
|
160
151
|
}
|
|
@@ -162,54 +153,54 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
|
|
|
162
153
|
if (status === statusText.STATES.SUCCESS ||
|
|
163
154
|
status === statusText.STATES.FAILURE) {
|
|
164
155
|
const taskStatusText = subtask.status === statusText.STATES.SUCCESS
|
|
165
|
-
?
|
|
156
|
+
? lib.projectBuildAndDeploy.makePollTaskStatusFunc
|
|
166
157
|
.successStatusText
|
|
167
|
-
:
|
|
158
|
+
: lib.projectBuildAndDeploy.makePollTaskStatusFunc
|
|
168
159
|
.failedStatusText;
|
|
169
160
|
const hasNewline = spinner?.text?.includes('\n') || Boolean(topLevelTask);
|
|
170
161
|
const updatedText = `${spinner?.text?.replace('\n', '')} ${taskStatusText}${hasNewline ? '\n' : ''}`;
|
|
171
162
|
if (status === statusText.STATES.SUCCESS) {
|
|
172
|
-
|
|
163
|
+
SpinniesManager.succeed(id, { text: updatedText });
|
|
173
164
|
}
|
|
174
165
|
else {
|
|
175
|
-
|
|
166
|
+
SpinniesManager.fail(id, { text: updatedText });
|
|
176
167
|
}
|
|
177
168
|
if (topLevelTask) {
|
|
178
|
-
topLevelTask.subtasks.forEach(currentSubtask =>
|
|
169
|
+
topLevelTask.subtasks.forEach(currentSubtask => SpinniesManager.remove(currentSubtask.id));
|
|
179
170
|
}
|
|
180
171
|
}
|
|
181
172
|
});
|
|
182
173
|
if (status === statusText.STATES.SUCCESS) {
|
|
183
|
-
|
|
174
|
+
SpinniesManager.succeed(overallTaskSpinniesKey, {
|
|
184
175
|
text: statusStrings.SUCCESS(taskName, displayId),
|
|
185
176
|
});
|
|
186
177
|
clearInterval(pollInterval);
|
|
187
178
|
resolve(taskStatus);
|
|
188
179
|
}
|
|
189
180
|
else if (status === statusText.STATES.FAILURE) {
|
|
190
|
-
|
|
181
|
+
SpinniesManager.fail(overallTaskSpinniesKey, {
|
|
191
182
|
text: statusStrings.FAIL(taskName, displayId),
|
|
192
183
|
});
|
|
193
184
|
if (!silenceLogs) {
|
|
194
185
|
const failedSubtasks = subtasks.filter(subtask => subtask.status === 'FAILURE');
|
|
195
|
-
|
|
196
|
-
|
|
186
|
+
uiLine();
|
|
187
|
+
uiLogger.log(`${statusStrings.SUBTASK_FAIL(failedSubtasks.length === 1
|
|
197
188
|
? getSubtaskName(failedSubtasks[0])
|
|
198
189
|
: failedSubtasks.length + ' components', displayId)}\n`);
|
|
199
|
-
|
|
200
|
-
|
|
190
|
+
uiLogger.log(lib.projectBuildAndDeploy.makePollTaskStatusFunc.errorSummary);
|
|
191
|
+
uiLine();
|
|
201
192
|
const displayErrors = failedSubtasks.filter(subtask => subtask?.standardError?.subCategory !==
|
|
202
|
-
|
|
193
|
+
PROJECT_ERROR_TYPES.SUBBUILD_FAILED &&
|
|
203
194
|
subtask?.standardError?.subCategory !==
|
|
204
|
-
|
|
195
|
+
PROJECT_ERROR_TYPES.SUBDEPLOY_FAILED);
|
|
205
196
|
displayErrors.forEach(subTask => {
|
|
206
|
-
|
|
207
|
-
|
|
197
|
+
uiLogger.log(`\n--- ${chalk.bold(getSubtaskName(subTask))} failed with the following error ---`);
|
|
198
|
+
uiLogger.error(subTask.errorMessage);
|
|
208
199
|
// Log nested errors
|
|
209
200
|
if (subTask.standardError && subTask.standardError.errors) {
|
|
210
|
-
|
|
201
|
+
uiLogger.log('');
|
|
211
202
|
subTask.standardError.errors.forEach(error => {
|
|
212
|
-
|
|
203
|
+
uiLogger.log(error.message);
|
|
213
204
|
});
|
|
214
205
|
}
|
|
215
206
|
});
|
|
@@ -222,25 +213,25 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
|
|
|
222
213
|
resolve(taskStatus);
|
|
223
214
|
}
|
|
224
215
|
}
|
|
225
|
-
},
|
|
216
|
+
}, DEFAULT_POLLING_DELAY);
|
|
226
217
|
});
|
|
227
218
|
};
|
|
228
219
|
}
|
|
229
220
|
function pollBuildAutodeployStatus(accountId, taskName, buildId) {
|
|
230
221
|
return new Promise((resolve, reject) => {
|
|
231
|
-
let maxIntervals = (15 * 1000) /
|
|
222
|
+
let maxIntervals = (15 * 1000) / DEFAULT_POLLING_DELAY; // Num of intervals in ~15s
|
|
232
223
|
const pollInterval = setInterval(async () => {
|
|
233
224
|
let build;
|
|
234
225
|
try {
|
|
235
|
-
const response = await
|
|
226
|
+
const response = await getBuildStatus(accountId, taskName, buildId);
|
|
236
227
|
build = response.data;
|
|
237
228
|
}
|
|
238
229
|
catch (e) {
|
|
239
|
-
|
|
240
|
-
return reject(new Error(
|
|
230
|
+
uiLogger.debug(e);
|
|
231
|
+
return reject(new Error(lib.projectBuildAndDeploy.pollBuildAutodeployStatusError(buildId)));
|
|
241
232
|
}
|
|
242
233
|
if (!build || !build.status) {
|
|
243
|
-
return reject(new Error(
|
|
234
|
+
return reject(new Error(lib.projectBuildAndDeploy.pollBuildAutodeployStatusError(buildId)));
|
|
244
235
|
}
|
|
245
236
|
if (build.deployStatusTaskLocator || maxIntervals <= 0) {
|
|
246
237
|
clearInterval(pollInterval);
|
|
@@ -249,67 +240,67 @@ function pollBuildAutodeployStatus(accountId, taskName, buildId) {
|
|
|
249
240
|
else {
|
|
250
241
|
maxIntervals -= 1;
|
|
251
242
|
}
|
|
252
|
-
},
|
|
243
|
+
}, DEFAULT_POLLING_DELAY);
|
|
253
244
|
});
|
|
254
245
|
}
|
|
255
|
-
|
|
256
|
-
linkToHubSpot: (accountId, taskName, taskId) =>
|
|
257
|
-
statusFn:
|
|
258
|
-
structureFn:
|
|
259
|
-
statusText:
|
|
246
|
+
export const pollBuildStatus = makePollTaskStatusFunc({
|
|
247
|
+
linkToHubSpot: (accountId, taskName, taskId) => uiLink(`View build #${taskId} in HubSpot`, getProjectBuildDetailUrl(taskName, taskId, accountId)),
|
|
248
|
+
statusFn: getBuildStatus,
|
|
249
|
+
structureFn: getBuildStructure,
|
|
250
|
+
statusText: PROJECT_BUILD_TEXT,
|
|
260
251
|
statusStrings: {
|
|
261
|
-
INITIALIZE: (name, buildId) => `Building ${
|
|
262
|
-
SUCCESS: (name, buildId) => `Built ${
|
|
263
|
-
FAIL: (name, buildId) => `Failed to build ${
|
|
264
|
-
SUBTASK_FAIL: (buildId, name) => `Build #${buildId} failed because there was a problem\nbuilding ${
|
|
252
|
+
INITIALIZE: (name, buildId) => `Building ${chalk.bold(name)} #${buildId}`,
|
|
253
|
+
SUCCESS: (name, buildId) => `Built ${chalk.bold(name)} #${buildId}`,
|
|
254
|
+
FAIL: (name, buildId) => `Failed to build ${chalk.bold(name)} #${buildId}`,
|
|
255
|
+
SUBTASK_FAIL: (buildId, name) => `Build #${buildId} failed because there was a problem\nbuilding ${chalk.bold(name)}`,
|
|
265
256
|
},
|
|
266
257
|
});
|
|
267
|
-
|
|
268
|
-
linkToHubSpot: (accountId, taskName, taskId, deployedBuildId) =>
|
|
269
|
-
statusFn:
|
|
270
|
-
structureFn:
|
|
271
|
-
statusText:
|
|
258
|
+
export const pollDeployStatus = makePollTaskStatusFunc({
|
|
259
|
+
linkToHubSpot: (accountId, taskName, taskId, deployedBuildId) => uiLink(`View deploy of build #${deployedBuildId} in HubSpot`, getProjectDeployDetailUrl(taskName, taskId, accountId)),
|
|
260
|
+
statusFn: getDeployStatus,
|
|
261
|
+
structureFn: getDeployStructure,
|
|
262
|
+
statusText: PROJECT_DEPLOY_TEXT,
|
|
272
263
|
statusStrings: {
|
|
273
|
-
INITIALIZE: (name, buildId) => `Deploying build #${buildId} in ${
|
|
274
|
-
SUCCESS: (name, buildId) => `Deployed build #${buildId} in ${
|
|
275
|
-
FAIL: (name, buildId) => `Failed to deploy build #${buildId} in ${
|
|
276
|
-
SUBTASK_FAIL: (deployedBuildId, name) => `Deploy for build #${deployedBuildId} failed because there was a\nproblem deploying ${
|
|
264
|
+
INITIALIZE: (name, buildId) => `Deploying build #${buildId} in ${chalk.bold(name)}`,
|
|
265
|
+
SUCCESS: (name, buildId) => `Deployed build #${buildId} in ${chalk.bold(name)}`,
|
|
266
|
+
FAIL: (name, buildId) => `Failed to deploy build #${buildId} in ${chalk.bold(name)}`,
|
|
267
|
+
SUBTASK_FAIL: (deployedBuildId, name) => `Deploy for build #${deployedBuildId} failed because there was a\nproblem deploying ${chalk.bold(name)}`,
|
|
277
268
|
},
|
|
278
269
|
});
|
|
279
|
-
async function displayWarnLogs(accountId, projectName, taskId, isDeploy = false) {
|
|
270
|
+
export async function displayWarnLogs(accountId, projectName, taskId, isDeploy = false) {
|
|
280
271
|
let result;
|
|
281
272
|
if (isDeploy) {
|
|
282
273
|
try {
|
|
283
|
-
const { data } = await
|
|
274
|
+
const { data } = await fetchDeployWarnLogs(accountId, projectName, taskId);
|
|
284
275
|
result = data;
|
|
285
276
|
}
|
|
286
277
|
catch (e) {
|
|
287
|
-
|
|
278
|
+
logError(e);
|
|
288
279
|
}
|
|
289
280
|
}
|
|
290
281
|
else {
|
|
291
282
|
try {
|
|
292
|
-
const { data } = await
|
|
283
|
+
const { data } = await fetchBuildWarnLogs(accountId, projectName, taskId);
|
|
293
284
|
result = data;
|
|
294
285
|
}
|
|
295
286
|
catch (e) {
|
|
296
|
-
|
|
287
|
+
logError(e);
|
|
297
288
|
}
|
|
298
289
|
}
|
|
299
290
|
if (result && result.logs) {
|
|
300
291
|
const logLength = result.logs.length;
|
|
301
292
|
result.logs.forEach((log, i) => {
|
|
302
|
-
|
|
293
|
+
uiLogger.warn(log.message);
|
|
303
294
|
if (i < logLength - 1) {
|
|
304
|
-
|
|
295
|
+
uiLogger.log('');
|
|
305
296
|
}
|
|
306
297
|
});
|
|
307
298
|
}
|
|
308
299
|
}
|
|
309
|
-
async function pollProjectBuildAndDeploy(accountId, projectConfig, tempFile, buildId, silenceLogs = false) {
|
|
310
|
-
let buildStatus = await
|
|
300
|
+
export async function pollProjectBuildAndDeploy(accountId, projectConfig, tempFile, buildId, silenceLogs = false) {
|
|
301
|
+
let buildStatus = await pollBuildStatus(accountId, projectConfig.name, buildId, null, silenceLogs);
|
|
311
302
|
if (!silenceLogs) {
|
|
312
|
-
|
|
303
|
+
uiLine();
|
|
313
304
|
}
|
|
314
305
|
const result = {
|
|
315
306
|
succeeded: true,
|
|
@@ -323,7 +314,7 @@ async function pollProjectBuildAndDeploy(accountId, projectConfig, tempFile, bui
|
|
|
323
314
|
}
|
|
324
315
|
else if (buildStatus.isAutoDeployEnabled) {
|
|
325
316
|
if (!silenceLogs) {
|
|
326
|
-
|
|
317
|
+
uiLogger.log(lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.buildSucceededAutomaticallyDeploying(buildId, uiAccountDescription(accountId)));
|
|
327
318
|
await displayWarnLogs(accountId, projectConfig.name, buildId);
|
|
328
319
|
}
|
|
329
320
|
// autoDeployId of 0 indicates a skipped deploy
|
|
@@ -333,24 +324,24 @@ async function pollProjectBuildAndDeploy(accountId, projectConfig, tempFile, bui
|
|
|
333
324
|
buildStatus = await pollBuildAutodeployStatus(accountId, projectConfig.name, buildId);
|
|
334
325
|
}
|
|
335
326
|
if (getIsDeploying()) {
|
|
336
|
-
const deployStatus = await
|
|
327
|
+
const deployStatus = await pollDeployStatus(accountId, projectConfig.name, Number(buildStatus.deployStatusTaskLocator.id), buildId, silenceLogs);
|
|
337
328
|
result.deployResult = deployStatus;
|
|
338
329
|
if (deployStatus.status === 'FAILURE') {
|
|
339
330
|
result.succeeded = false;
|
|
340
331
|
}
|
|
341
332
|
}
|
|
342
333
|
else if (!silenceLogs) {
|
|
343
|
-
|
|
334
|
+
uiLogger.log(lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.unableToFindAutodeployStatus(buildId, uiLink(lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.viewDeploys, getProjectActivityUrl(projectConfig.name, accountId))));
|
|
344
335
|
}
|
|
345
336
|
}
|
|
346
337
|
try {
|
|
347
338
|
if (tempFile) {
|
|
348
339
|
tempFile.removeCallback();
|
|
349
|
-
|
|
340
|
+
uiLogger.debug(lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.cleanedUpTempFile(tempFile.name));
|
|
350
341
|
}
|
|
351
342
|
}
|
|
352
343
|
catch (e) {
|
|
353
|
-
|
|
344
|
+
logError(e);
|
|
354
345
|
}
|
|
355
346
|
if (result && result.deployResult) {
|
|
356
347
|
await displayWarnLogs(accountId, projectConfig.name, result.deployResult.deployId, true);
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.handleComponentCollision = handleComponentCollision;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const fs_1 = __importDefault(require("fs"));
|
|
9
|
-
const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import { metafileExtension } from '@hubspot/project-parsing-lib';
|
|
10
4
|
// Handles a collision between component source files
|
|
11
|
-
function handleComponentCollision({ dest, src, collisions }) {
|
|
5
|
+
export function handleComponentCollision({ dest, src, collisions }) {
|
|
12
6
|
const hsMetaFiles = [];
|
|
13
7
|
const packageJsonFiles = [];
|
|
14
8
|
const sourceFiles = [];
|
|
15
9
|
collisions.forEach(collision => {
|
|
16
|
-
if (collision.endsWith(
|
|
10
|
+
if (collision.endsWith(metafileExtension)) {
|
|
17
11
|
hsMetaFiles.push(collision);
|
|
18
12
|
}
|
|
19
|
-
else if (
|
|
13
|
+
else if (path.parse(collision).base === 'package.json') {
|
|
20
14
|
packageJsonFiles.push(collision);
|
|
21
15
|
}
|
|
22
16
|
else {
|
|
@@ -24,18 +18,18 @@ function handleComponentCollision({ dest, src, collisions }) {
|
|
|
24
18
|
}
|
|
25
19
|
});
|
|
26
20
|
const sourceFilenameMapping = sourceFiles.reduce((acc, filename) => {
|
|
27
|
-
const { name, ext, dir } =
|
|
21
|
+
const { name, ext, dir } = path.parse(filename);
|
|
28
22
|
return {
|
|
29
23
|
...acc,
|
|
30
|
-
[filename]:
|
|
24
|
+
[filename]: path.join(dir, `${name}-${Date.now()}${ext}`),
|
|
31
25
|
};
|
|
32
26
|
}, {});
|
|
33
|
-
const metafileExtensionPrefix =
|
|
27
|
+
const metafileExtensionPrefix = path.parse(metafileExtension).name;
|
|
34
28
|
const metaFilenameMapping = hsMetaFiles.reduce((acc, filename) => {
|
|
35
|
-
const { name, dir } =
|
|
29
|
+
const { name, dir } = path.parse(filename);
|
|
36
30
|
return {
|
|
37
31
|
...acc,
|
|
38
|
-
[filename]:
|
|
32
|
+
[filename]: path.join(dir, `${name.replace(metafileExtensionPrefix, '')}-${Date.now()}${metafileExtension}`),
|
|
39
33
|
};
|
|
40
34
|
}, {});
|
|
41
35
|
// Update the metafiles that might contain references to the old filenames
|
|
@@ -50,25 +44,25 @@ function handleComponentCollision({ dest, src, collisions }) {
|
|
|
50
44
|
});
|
|
51
45
|
// Copy the renamed files into their new destination location
|
|
52
46
|
Object.entries(sourceFilenameMapping).forEach(([key, value]) => {
|
|
53
|
-
|
|
47
|
+
fs.copyFileSync(path.join(src, key), path.join(dest, value));
|
|
54
48
|
});
|
|
55
49
|
if (packageJsonFiles.length) {
|
|
56
50
|
handlePackageJsonCollisions(dest, src, packageJsonFiles);
|
|
57
51
|
}
|
|
58
52
|
}
|
|
59
53
|
function updateMetaFile({ dest, src, file, sourceFilenameMapping, metaFilenameMapping, }) {
|
|
60
|
-
let text =
|
|
54
|
+
let text = fs.readFileSync(path.join(src, file), 'utf-8');
|
|
61
55
|
Object.entries(sourceFilenameMapping).forEach(([key, value]) => {
|
|
62
|
-
const { base: oldFileName } =
|
|
63
|
-
const { base: newFileName } =
|
|
56
|
+
const { base: oldFileName } = path.parse(key);
|
|
57
|
+
const { base: newFileName } = path.parse(value);
|
|
64
58
|
text = text.replace(oldFileName, newFileName);
|
|
65
59
|
});
|
|
66
|
-
|
|
60
|
+
fs.writeFileSync(path.join(dest, metaFilenameMapping[file]), text);
|
|
67
61
|
}
|
|
68
62
|
function handlePackageJsonCollisions(dest, src, packageJsonFiles) {
|
|
69
63
|
packageJsonFiles.forEach(file => {
|
|
70
|
-
const existingPackageJsonContents = JSON.parse(
|
|
71
|
-
const newPackageJsonContents = JSON.parse(
|
|
64
|
+
const existingPackageJsonContents = JSON.parse(fs.readFileSync(path.join(dest, file), 'utf-8'));
|
|
65
|
+
const newPackageJsonContents = JSON.parse(fs.readFileSync(path.join(src, file), 'utf-8'));
|
|
72
66
|
existingPackageJsonContents.dependencies = {
|
|
73
67
|
...newPackageJsonContents.dependencies,
|
|
74
68
|
...existingPackageJsonContents.dependencies,
|
|
@@ -77,6 +71,6 @@ function handlePackageJsonCollisions(dest, src, packageJsonFiles) {
|
|
|
77
71
|
...newPackageJsonContents.devDependencies,
|
|
78
72
|
...existingPackageJsonContents.devDependencies,
|
|
79
73
|
};
|
|
80
|
-
|
|
74
|
+
fs.writeFileSync(path.join(dest, file), JSON.stringify(existingPackageJsonContents, null, 2));
|
|
81
75
|
});
|
|
82
76
|
}
|
package/lib/projects/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProjectConfig } from '../../types/Projects';
|
|
1
|
+
import { ProjectConfig } from '../../types/Projects.js';
|
|
2
2
|
export declare function writeProjectConfig(configPath: string, config: ProjectConfig): boolean;
|
|
3
3
|
export declare function getIsInProject(dir?: string): boolean;
|
|
4
4
|
export interface LoadedProjectConfig {
|
package/lib/projects/config.js
CHANGED
|
@@ -1,79 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
-
const path_1 = __importDefault(require("path"));
|
|
12
|
-
const findup_sync_1 = __importDefault(require("findup-sync"));
|
|
13
|
-
const path_2 = require("@hubspot/local-dev-lib/path");
|
|
14
|
-
const constants_1 = require("../constants");
|
|
15
|
-
const en_1 = require("../../lang/en");
|
|
16
|
-
const exitCodes_1 = require("../enums/exitCodes");
|
|
17
|
-
const logger_1 = require("../ui/logger");
|
|
18
|
-
function writeProjectConfig(configPath, config) {
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import findup from 'findup-sync';
|
|
4
|
+
import { getAbsoluteFilePath, getCwd } from '@hubspot/local-dev-lib/path';
|
|
5
|
+
import { PROJECT_CONFIG_FILE } from '../constants.js';
|
|
6
|
+
import { lib } from '../../lang/en.js';
|
|
7
|
+
import { EXIT_CODES } from '../enums/exitCodes.js';
|
|
8
|
+
import { uiLogger } from '../ui/logger.js';
|
|
9
|
+
export function writeProjectConfig(configPath, config) {
|
|
19
10
|
try {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
fs.ensureFileSync(configPath);
|
|
12
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
13
|
+
uiLogger.debug(`Wrote project config at ${configPath}`);
|
|
23
14
|
}
|
|
24
15
|
catch (e) {
|
|
25
|
-
|
|
16
|
+
uiLogger.debug(e);
|
|
26
17
|
return false;
|
|
27
18
|
}
|
|
28
19
|
return true;
|
|
29
20
|
}
|
|
30
|
-
function getIsInProject(dir) {
|
|
21
|
+
export function getIsInProject(dir) {
|
|
31
22
|
const configPath = getProjectConfigPath(dir);
|
|
32
23
|
return !!configPath;
|
|
33
24
|
}
|
|
34
25
|
function getProjectConfigPath(dir) {
|
|
35
|
-
const projectDir = dir ?
|
|
36
|
-
const configPath = (
|
|
26
|
+
const projectDir = dir ? getAbsoluteFilePath(dir) : getCwd();
|
|
27
|
+
const configPath = findup(PROJECT_CONFIG_FILE, {
|
|
37
28
|
cwd: projectDir,
|
|
38
29
|
nocase: true,
|
|
39
30
|
});
|
|
40
31
|
return configPath;
|
|
41
32
|
}
|
|
42
|
-
async function getProjectConfig(dir) {
|
|
33
|
+
export async function getProjectConfig(dir) {
|
|
43
34
|
const configPath = getProjectConfigPath(dir);
|
|
44
35
|
if (!configPath) {
|
|
45
36
|
return { projectConfig: null, projectDir: null };
|
|
46
37
|
}
|
|
47
38
|
try {
|
|
48
|
-
const config =
|
|
39
|
+
const config = fs.readFileSync(configPath);
|
|
49
40
|
const projectConfig = JSON.parse(config.toString());
|
|
50
41
|
return {
|
|
51
|
-
projectDir:
|
|
42
|
+
projectDir: path.dirname(configPath),
|
|
52
43
|
projectConfig,
|
|
53
44
|
};
|
|
54
45
|
}
|
|
55
46
|
catch (e) {
|
|
56
|
-
|
|
47
|
+
uiLogger.error(lib.projects.getProjectConfig.error);
|
|
57
48
|
return { projectConfig: null, projectDir: null };
|
|
58
49
|
}
|
|
59
50
|
}
|
|
60
|
-
function validateProjectConfig(projectConfig, projectDir) {
|
|
51
|
+
export function validateProjectConfig(projectConfig, projectDir) {
|
|
61
52
|
if (!projectConfig || !projectDir) {
|
|
62
|
-
|
|
63
|
-
return process.exit(
|
|
53
|
+
uiLogger.error(lib.projects.validateProjectConfig.configNotFound);
|
|
54
|
+
return process.exit(EXIT_CODES.ERROR);
|
|
64
55
|
}
|
|
65
56
|
if (!projectConfig.name || !projectConfig.srcDir) {
|
|
66
|
-
|
|
67
|
-
return process.exit(
|
|
57
|
+
uiLogger.error(lib.projects.validateProjectConfig.configMissingFields);
|
|
58
|
+
return process.exit(EXIT_CODES.ERROR);
|
|
68
59
|
}
|
|
69
|
-
const resolvedPath =
|
|
60
|
+
const resolvedPath = path.resolve(projectDir, projectConfig.srcDir);
|
|
70
61
|
if (!resolvedPath.startsWith(projectDir)) {
|
|
71
|
-
const projectConfigFile =
|
|
72
|
-
|
|
73
|
-
return process.exit(
|
|
62
|
+
const projectConfigFile = path.relative('.', path.join(projectDir, PROJECT_CONFIG_FILE));
|
|
63
|
+
uiLogger.error(lib.projects.validateProjectConfig.srcOutsideProjectDir(projectConfigFile, projectConfig.srcDir));
|
|
64
|
+
return process.exit(EXIT_CODES.ERROR);
|
|
74
65
|
}
|
|
75
|
-
if (!
|
|
76
|
-
|
|
77
|
-
return process.exit(
|
|
66
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
67
|
+
uiLogger.error(lib.projects.validateProjectConfig.srcDirNotFound(projectConfig.srcDir, projectDir));
|
|
68
|
+
return process.exit(EXIT_CODES.ERROR);
|
|
78
69
|
}
|
|
79
70
|
}
|