@hubspot/cli 7.7.21-experimental.1 → 7.7.23-experimental.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/__tests__/migrate.test.js +27 -29
- package/api/migrate.js +14 -22
- package/bin/cli.js +92 -97
- package/bin/hs +2 -2
- package/bin/hscms +2 -2
- package/bin/silenceErrors.js +1 -2
- package/commands/__tests__/account.test.js +29 -34
- package/commands/__tests__/auth.test.js +11 -16
- package/commands/__tests__/cms.test.js +15 -20
- package/commands/__tests__/config.test.js +14 -19
- package/commands/__tests__/create.test.js +10 -15
- package/commands/__tests__/customObject.test.js +14 -19
- package/commands/__tests__/doctor.test.js +43 -48
- package/commands/__tests__/feedback.test.js +7 -45
- package/commands/__tests__/fetch.test.js +29 -28
- package/commands/__tests__/filemanager.test.js +14 -19
- package/commands/__tests__/function.test.js +16 -21
- package/commands/__tests__/getStarted.test.js +45 -50
- package/commands/__tests__/hubdb.test.js +17 -22
- package/commands/__tests__/init.test.js +12 -17
- package/commands/__tests__/lint.test.js +13 -18
- package/commands/__tests__/list.test.js +18 -23
- package/commands/__tests__/logs.test.js +28 -27
- package/commands/__tests__/mcp.test.js +14 -19
- package/commands/__tests__/mv.test.js +14 -52
- package/commands/__tests__/open.test.js +13 -51
- package/commands/__tests__/project.test.js +44 -49
- package/commands/__tests__/remove.test.js +13 -51
- package/commands/__tests__/sandbox.test.js +14 -19
- package/commands/__tests__/secret.test.js +16 -21
- package/commands/__tests__/testAccount.test.js +16 -21
- package/commands/__tests__/theme.test.js +15 -20
- package/commands/account/__tests__/auth.test.js +11 -16
- package/commands/account/__tests__/clean.test.js +12 -17
- package/commands/account/__tests__/createOverride.test.js +10 -15
- package/commands/account/__tests__/info.test.js +11 -16
- package/commands/account/__tests__/list.test.js +11 -16
- package/commands/account/__tests__/remove.test.js +13 -18
- package/commands/account/__tests__/removeOverride.js +8 -13
- package/commands/account/__tests__/rename.test.js +15 -20
- package/commands/account/__tests__/use.test.js +10 -15
- package/commands/account/auth.d.ts +1 -1
- package/commands/account/auth.js +65 -67
- package/commands/account/clean.d.ts +1 -1
- package/commands/account/clean.js +55 -60
- package/commands/account/createOverride.d.ts +1 -1
- package/commands/account/createOverride.js +52 -57
- package/commands/account/info.d.ts +1 -1
- package/commands/account/info.js +33 -35
- package/commands/account/list.d.ts +1 -1
- package/commands/account/list.js +43 -45
- package/commands/account/remove.d.ts +1 -1
- package/commands/account/remove.js +37 -42
- package/commands/account/removeOverride.d.ts +1 -1
- package/commands/account/removeOverride.js +38 -43
- package/commands/account/rename.d.ts +1 -1
- package/commands/account/rename.js +18 -20
- package/commands/account/use.d.ts +1 -1
- package/commands/account/use.js +29 -31
- package/commands/account.d.ts +1 -1
- package/commands/account.js +23 -28
- package/commands/app/__tests__/migrate.test.js +29 -34
- package/commands/app/migrate.d.ts +2 -2
- package/commands/app/migrate.js +40 -43
- package/commands/app/secret/__tests__/add.test.js +6 -11
- package/commands/app/secret/__tests__/delete.test.js +6 -11
- package/commands/app/secret/__tests__/list.test.js +6 -11
- package/commands/app/secret/__tests__/update.test.js +6 -11
- package/commands/app/secret/add.d.ts +1 -1
- package/commands/app/secret/add.js +28 -30
- package/commands/app/secret/delete.d.ts +1 -1
- package/commands/app/secret/delete.js +34 -36
- package/commands/app/secret/list.d.ts +1 -1
- package/commands/app/secret/list.js +25 -27
- package/commands/app/secret/update.d.ts +1 -1
- package/commands/app/secret/update.js +32 -34
- package/commands/app/secret.d.ts +1 -1
- package/commands/app/secret.js +12 -17
- package/commands/app.d.ts +1 -1
- package/commands/app.js +6 -16
- package/commands/auth.d.ts +1 -1
- package/commands/auth.js +70 -72
- package/commands/cms/convertFields.d.ts +1 -1
- package/commands/cms/convertFields.js +34 -39
- package/commands/cms/getReactModule.d.ts +1 -1
- package/commands/cms/getReactModule.js +32 -37
- package/commands/cms/lighthouseScore.d.ts +1 -1
- package/commands/cms/lighthouseScore.js +67 -72
- package/commands/cms.d.ts +1 -1
- package/commands/cms.js +11 -16
- package/commands/completion.d.ts +1 -1
- package/commands/completion.js +10 -15
- package/commands/config/migrate.d.ts +1 -1
- package/commands/config/migrate.js +27 -32
- package/commands/config/set.d.ts +2 -1
- package/commands/config/set.js +40 -32
- package/commands/config.d.ts +1 -1
- package/commands/config.js +8 -13
- package/commands/create/api-sample.d.ts +1 -1
- package/commands/create/api-sample.js +28 -33
- package/commands/create/app.d.ts +1 -1
- package/commands/create/app.js +3 -5
- package/commands/create/function.d.ts +1 -1
- package/commands/create/function.js +9 -11
- package/commands/create/index.d.ts +1 -1
- package/commands/create/index.js +19 -24
- package/commands/create/module.d.ts +1 -1
- package/commands/create/module.js +12 -14
- package/commands/create/react-app.d.ts +1 -1
- package/commands/create/react-app.js +3 -5
- package/commands/create/template.d.ts +1 -1
- package/commands/create/template.js +12 -14
- package/commands/create/vue-app.d.ts +1 -1
- package/commands/create/vue-app.js +3 -5
- package/commands/create/webpack-serverless.d.ts +1 -1
- package/commands/create/webpack-serverless.js +3 -5
- package/commands/create/website-theme.d.ts +1 -1
- package/commands/create/website-theme.js +5 -7
- package/commands/create.d.ts +2 -2
- package/commands/create.js +30 -35
- package/commands/customObject/__tests__/create.test.js +13 -18
- package/commands/customObject/__tests__/schema.test.js +18 -23
- package/commands/customObject/create.d.ts +1 -1
- package/commands/customObject/create.js +28 -30
- package/commands/customObject/schema/__tests__/create.test.js +13 -18
- package/commands/customObject/schema/__tests__/delete.test.js +13 -18
- package/commands/customObject/schema/__tests__/fetch-all.test.js +13 -18
- package/commands/customObject/schema/__tests__/fetch.test.js +13 -18
- package/commands/customObject/schema/__tests__/list.test.js +13 -18
- package/commands/customObject/schema/__tests__/update.test.js +13 -18
- package/commands/customObject/schema/create.d.ts +1 -1
- package/commands/customObject/schema/create.js +28 -30
- package/commands/customObject/schema/delete.d.ts +1 -1
- package/commands/customObject/schema/delete.js +24 -26
- package/commands/customObject/schema/fetch-all.d.ts +1 -1
- package/commands/customObject/schema/fetch-all.js +22 -24
- package/commands/customObject/schema/fetch.d.ts +1 -1
- package/commands/customObject/schema/fetch.js +24 -26
- package/commands/customObject/schema/list.d.ts +1 -1
- package/commands/customObject/schema/list.js +13 -15
- package/commands/customObject/schema/update.d.ts +1 -1
- package/commands/customObject/schema/update.js +32 -34
- package/commands/customObject/schema.d.ts +1 -1
- package/commands/customObject/schema.js +17 -22
- package/commands/customObject.d.ts +1 -1
- package/commands/customObject.js +13 -18
- package/commands/doctor.d.ts +1 -1
- package/commands/doctor.js +28 -33
- package/commands/feedback.d.ts +1 -1
- package/commands/feedback.js +19 -24
- package/commands/fetch.d.ts +1 -1
- package/commands/fetch.js +28 -30
- package/commands/filemanager/__tests__/fetch.test.js +17 -22
- package/commands/filemanager/__tests__/upload.test.js +15 -20
- package/commands/filemanager/fetch.d.ts +1 -1
- package/commands/filemanager/fetch.js +23 -25
- package/commands/filemanager/upload.d.ts +1 -1
- package/commands/filemanager/upload.js +39 -44
- package/commands/filemanager.d.ts +1 -1
- package/commands/filemanager.js +8 -13
- package/commands/function/deploy.d.ts +1 -1
- package/commands/function/deploy.js +35 -40
- package/commands/function/list.d.ts +1 -1
- package/commands/function/list.js +24 -29
- package/commands/function/server.d.ts +1 -1
- package/commands/function/server.js +15 -17
- package/commands/function.d.ts +1 -1
- package/commands/function.js +12 -18
- package/commands/getStarted.d.ts +1 -1
- package/commands/getStarted.js +119 -125
- package/commands/hubdb/__tests__/clear.test.js +13 -18
- package/commands/hubdb/__tests__/create.test.js +13 -18
- package/commands/hubdb/__tests__/delete.test.js +13 -18
- package/commands/hubdb/__tests__/fetch.test.js +13 -18
- package/commands/hubdb/__tests__/list.test.js +23 -28
- package/commands/hubdb/clear.d.ts +1 -1
- package/commands/hubdb/clear.js +20 -22
- package/commands/hubdb/create.d.ts +1 -1
- package/commands/hubdb/create.js +30 -35
- package/commands/hubdb/delete.d.ts +1 -1
- package/commands/hubdb/delete.js +24 -26
- package/commands/hubdb/fetch.d.ts +1 -1
- package/commands/hubdb/fetch.js +17 -19
- package/commands/hubdb/list.d.ts +1 -1
- package/commands/hubdb/list.js +33 -35
- package/commands/hubdb.d.ts +1 -1
- package/commands/hubdb.js +18 -24
- package/commands/init.d.ts +1 -1
- package/commands/init.js +83 -88
- package/commands/lint.d.ts +1 -1
- package/commands/lint.js +24 -26
- package/commands/list.d.ts +1 -1
- package/commands/list.js +32 -37
- package/commands/logs.d.ts +1 -1
- package/commands/logs.js +35 -37
- package/commands/mcp/__tests__/setup.test.js +7 -12
- package/commands/mcp/__tests__/start.test.js +7 -12
- package/commands/mcp/setup.d.ts +1 -1
- package/commands/mcp/setup.js +17 -19
- package/commands/mcp/start.d.ts +1 -1
- package/commands/mcp/start.js +29 -34
- package/commands/mcp.d.ts +1 -1
- package/commands/mcp.js +7 -12
- package/commands/module/marketplace-validate.d.ts +1 -1
- package/commands/module/marketplace-validate.js +21 -26
- package/commands/module.d.ts +1 -1
- package/commands/module.js +7 -13
- package/commands/mv.d.ts +1 -1
- package/commands/mv.js +20 -22
- package/commands/open.d.ts +1 -1
- package/commands/open.js +19 -21
- package/commands/project/__tests__/add.test.js +10 -15
- package/commands/project/__tests__/create.test.js +14 -19
- package/commands/project/__tests__/deploy.test.js +96 -134
- package/commands/project/__tests__/devUnifiedFlow.test.js +133 -139
- package/commands/project/__tests__/download.test.js +14 -19
- package/commands/project/__tests__/installDeps.test.js +32 -70
- package/commands/project/__tests__/listBuilds.test.js +14 -19
- package/commands/project/__tests__/logs.test.js +56 -94
- package/commands/project/__tests__/migrate.test.js +25 -30
- package/commands/project/__tests__/migrateApp.test.js +17 -22
- package/commands/project/__tests__/open.test.js +16 -21
- package/commands/project/__tests__/profile.test.js +14 -19
- package/commands/project/__tests__/upload.test.js +18 -23
- package/commands/project/__tests__/watch.test.js +14 -19
- package/commands/project/add.d.ts +1 -1
- package/commands/project/add.js +34 -36
- package/commands/project/cloneApp.d.ts +1 -1
- package/commands/project/cloneApp.js +67 -72
- package/commands/project/create.d.ts +2 -2
- package/commands/project/create.js +63 -68
- package/commands/project/deploy.d.ts +1 -1
- package/commands/project/deploy.js +67 -69
- package/commands/project/dev/deprecatedFlow.d.ts +2 -2
- package/commands/project/dev/deprecatedFlow.js +52 -58
- package/commands/project/dev/index.d.ts +1 -1
- package/commands/project/dev/index.js +44 -47
- package/commands/project/dev/unifiedFlow.d.ts +3 -3
- package/commands/project/dev/unifiedFlow.js +62 -68
- package/commands/project/download.d.ts +1 -1
- package/commands/project/download.js +35 -40
- package/commands/project/installDeps.d.ts +1 -1
- package/commands/project/installDeps.js +29 -34
- package/commands/project/listBuilds.d.ts +1 -1
- package/commands/project/listBuilds.js +40 -45
- package/commands/project/logs.d.ts +1 -1
- package/commands/project/logs.js +52 -54
- package/commands/project/migrate.d.ts +1 -1
- package/commands/project/migrate.js +24 -26
- package/commands/project/migrateApp.d.ts +2 -2
- package/commands/project/migrateApp.js +18 -20
- package/commands/project/open.d.ts +1 -1
- package/commands/project/open.js +25 -30
- package/commands/project/profile/add.d.ts +1 -1
- package/commands/project/profile/add.js +68 -73
- package/commands/project/profile/delete.d.ts +1 -1
- package/commands/project/profile/delete.js +51 -56
- package/commands/project/profile.d.ts +1 -1
- package/commands/project/profile.js +9 -14
- package/commands/project/upload.d.ts +1 -1
- package/commands/project/upload.js +50 -55
- package/commands/project/validate.d.ts +1 -1
- package/commands/project/validate.js +35 -40
- package/commands/project/watch.d.ts +1 -1
- package/commands/project/watch.js +59 -61
- package/commands/project.d.ts +1 -1
- package/commands/project.js +38 -43
- package/commands/remove.d.ts +1 -1
- package/commands/remove.js +15 -17
- package/commands/sandbox/__tests__/create.test.js +15 -20
- package/commands/sandbox/__tests__/delete.test.js +15 -20
- package/commands/sandbox/create.d.ts +1 -1
- package/commands/sandbox/create.js +67 -69
- package/commands/sandbox/delete.d.ts +1 -1
- package/commands/sandbox/delete.js +94 -96
- package/commands/sandbox.d.ts +1 -1
- package/commands/sandbox.js +9 -14
- package/commands/secret/__tests__/addSecret.test.js +13 -18
- package/commands/secret/__tests__/deleteSecret.test.js +13 -18
- package/commands/secret/__tests__/listSecret.test.js +13 -18
- package/commands/secret/__tests__/updateSecret.test.js +13 -18
- package/commands/secret/addSecret.d.ts +1 -1
- package/commands/secret/addSecret.js +26 -28
- package/commands/secret/deleteSecret.d.ts +1 -1
- package/commands/secret/deleteSecret.js +27 -29
- package/commands/secret/listSecret.d.ts +1 -1
- package/commands/secret/listSecret.js +19 -21
- package/commands/secret/updateSecret.d.ts +1 -1
- package/commands/secret/updateSecret.js +25 -27
- package/commands/secret.d.ts +1 -1
- package/commands/secret.js +13 -18
- package/commands/testAccount/__tests__/create.test.js +17 -22
- package/commands/testAccount/__tests__/createConfig.test.js +6 -11
- package/commands/testAccount/__tests__/delete.test.js +15 -20
- package/commands/testAccount/create.d.ts +1 -1
- package/commands/testAccount/create.js +45 -53
- package/commands/testAccount/createConfig.d.ts +1 -1
- package/commands/testAccount/createConfig.js +36 -41
- package/commands/testAccount/delete.d.ts +1 -1
- package/commands/testAccount/delete.js +17 -19
- package/commands/testAccount.d.ts +1 -1
- package/commands/testAccount.js +10 -15
- package/commands/theme/__tests__/generate-selectors.test.js +7 -12
- package/commands/theme/__tests__/marketplace-validate.test.js +14 -19
- package/commands/theme/__tests__/preview.test.js +12 -17
- package/commands/theme/generate-selectors.d.ts +1 -1
- package/commands/theme/generate-selectors.js +23 -28
- package/commands/theme/marketplace-validate.d.ts +1 -1
- package/commands/theme/marketplace-validate.js +19 -24
- package/commands/theme/preview.d.ts +1 -1
- package/commands/theme/preview.js +60 -65
- package/commands/theme.d.ts +1 -1
- package/commands/theme.js +11 -16
- package/commands/upload.d.ts +1 -1
- package/commands/upload.js +77 -82
- package/commands/watch.d.ts +1 -1
- package/commands/watch.js +45 -51
- package/lang/en.d.ts +10 -23
- package/lang/en.js +380 -399
- package/lib/__tests__/accountTypes.test.js +20 -22
- package/lib/__tests__/buildAccount.test.js +28 -63
- package/lib/__tests__/commonOpts.test.js +20 -22
- package/lib/__tests__/dependencyManagement.test.js +46 -51
- package/lib/__tests__/developerTestAccounts.test.js +27 -62
- package/lib/__tests__/hasFeature.test.js +6 -8
- package/lib/__tests__/npm.test.js +15 -20
- package/lib/__tests__/oauth.test.js +23 -28
- package/lib/__tests__/parsing.test.js +18 -20
- package/lib/__tests__/polling.test.js +24 -26
- package/lib/__tests__/process.test.js +14 -19
- package/lib/__tests__/projectProfiles.test.js +34 -39
- package/lib/__tests__/sandboxSync.test.js +30 -35
- package/lib/__tests__/sandboxes.test.js +29 -31
- package/lib/__tests__/serverlessLogs.test.js +8 -13
- package/lib/__tests__/usageTracking.test.js +33 -34
- package/lib/__tests__/validation.test.js +18 -20
- package/lib/__tests__/yargsUtils.test.js +17 -41
- package/lib/accountTypes.js +24 -34
- package/lib/app/__tests__/migrate.test.js +94 -99
- package/lib/app/__tests__/migrate_legacy.test.js +29 -31
- package/lib/app/migrate.d.ts +3 -3
- package/lib/app/migrate.js +127 -145
- package/lib/app/migrate_legacy.d.ts +1 -1
- package/lib/app/migrate_legacy.js +72 -78
- package/lib/app/urls.js +5 -9
- package/lib/buildAccount.d.ts +1 -1
- package/lib/buildAccount.js +71 -80
- package/lib/commonOpts.d.ts +1 -1
- package/lib/commonOpts.js +42 -59
- package/lib/configMigrate.js +34 -38
- package/lib/configOptions.d.ts +5 -0
- package/lib/configOptions.js +44 -40
- package/lib/constants.d.ts +4 -0
- package/lib/constants.js +35 -34
- package/lib/customObject.js +2 -6
- package/lib/dependencyManagement.js +37 -45
- package/lib/developerTestAccounts.d.ts +1 -1
- package/lib/developerTestAccounts.js +34 -39
- package/lib/doctor/Diagnosis.d.ts +1 -1
- package/lib/doctor/Diagnosis.js +25 -29
- package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
- package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
- package/lib/doctor/Doctor.d.ts +1 -1
- package/lib/doctor/Doctor.js +94 -101
- package/lib/doctor/__tests__/Diagnosis.test.js +9 -14
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +29 -34
- package/lib/doctor/__tests__/Doctor.test.js +24 -26
- package/lib/enums/exitCodes.js +1 -4
- package/lib/errorHandlers/index.js +32 -41
- package/lib/errorHandlers/suppressError.d.ts +1 -1
- package/lib/errorHandlers/suppressError.js +28 -31
- package/lib/filesystem.js +8 -15
- package/lib/generateSelectors.js +18 -29
- package/lib/hasFeature.d.ts +1 -1
- package/lib/hasFeature.js +3 -6
- package/lib/interpolation.js +11 -18
- package/lib/lang.d.ts +1 -1
- package/lib/lang.js +22 -27
- package/lib/links.js +16 -24
- package/lib/marketplaceValidate.js +29 -39
- package/lib/mcp/setup.js +70 -82
- package/lib/middleware/__test__/configMiddleware.test.js +20 -55
- package/lib/middleware/__test__/gitMiddleware.test.js +7 -42
- package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -4
- package/lib/middleware/__test__/requestMiddleware.test.js +6 -11
- package/lib/middleware/__test__/utils.test.js +9 -11
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +9 -44
- package/lib/middleware/autoUpdateMiddleware.js +33 -40
- package/lib/middleware/configMiddleware.js +36 -42
- package/lib/middleware/fireAlarmMiddleware.js +12 -18
- package/lib/middleware/gitMiddleware.js +5 -8
- package/lib/middleware/notificationsMiddleware.js +16 -23
- package/lib/middleware/requestMiddleware.js +4 -10
- package/lib/middleware/utils.js +1 -4
- package/lib/middleware/yargsChecksMiddleware.js +10 -13
- package/lib/npm.js +14 -23
- package/lib/oauth.js +29 -35
- package/lib/parsing.js +3 -6
- package/lib/polling.js +11 -15
- package/lib/process.js +11 -19
- package/lib/projectProfiles.d.ts +2 -2
- package/lib/projectProfiles.js +32 -42
- package/lib/projects/ProjectLogsManager.js +18 -21
- package/lib/projects/__tests__/AppDevModeInterface.test.js +140 -145
- package/lib/projects/__tests__/LocalDevProcess.test.js +68 -73
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +32 -37
- package/lib/projects/__tests__/ProjectLogsManager.test.js +56 -58
- package/lib/projects/__tests__/buildAndDeploy.test.js +7 -9
- package/lib/projects/__tests__/components.test.js +9 -14
- package/lib/projects/__tests__/projects.test.js +35 -40
- package/lib/projects/__tests__/structure.test.js +43 -81
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +26 -28
- package/lib/projects/add/__tests__/v3AddComponent.test.js +25 -30
- package/lib/projects/add/legacyAddComponent.d.ts +1 -1
- package/lib/projects/add/legacyAddComponent.js +24 -30
- package/lib/projects/add/v3AddComponent.d.ts +1 -1
- package/lib/projects/add/v3AddComponent.js +36 -42
- package/lib/projects/buildAndDeploy.d.ts +1 -1
- package/lib/projects/buildAndDeploy.js +88 -97
- package/lib/projects/components.js +19 -25
- package/lib/projects/config.d.ts +1 -1
- package/lib/projects/config.js +32 -41
- package/lib/projects/create/__tests__/legacy.test.js +22 -57
- package/lib/projects/create/__tests__/v3.test.js +5 -7
- package/lib/projects/create/index.d.ts +3 -3
- package/lib/projects/create/index.js +19 -22
- package/lib/projects/create/legacy.d.ts +1 -1
- package/lib/projects/create/legacy.js +25 -31
- package/lib/projects/create/v3.d.ts +3 -3
- package/lib/projects/create/v3.js +49 -59
- package/lib/projects/ensureProjectExists.js +31 -37
- package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
- package/lib/projects/localDev/AppDevModeInterface.js +58 -60
- package/lib/projects/localDev/DevServerManager.d.ts +1 -1
- package/lib/projects/localDev/DevServerManager.js +22 -24
- package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
- package/lib/projects/localDev/DevServerManagerV2.js +15 -20
- package/lib/projects/localDev/LocalDevLogger.d.ts +1 -1
- package/lib/projects/localDev/LocalDevLogger.js +68 -64
- package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
- package/lib/projects/localDev/LocalDevManager.js +106 -111
- package/lib/projects/localDev/LocalDevProcess.d.ts +5 -4
- package/lib/projects/localDev/LocalDevProcess.js +37 -30
- package/lib/projects/localDev/LocalDevState.d.ts +3 -3
- package/lib/projects/localDev/LocalDevState.js +3 -5
- package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
- package/lib/projects/localDev/LocalDevWatcher.js +6 -11
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +1 -1
- package/lib/projects/localDev/LocalDevWebsocketServer.js +29 -27
- package/lib/projects/localDev/helpers.d.ts +3 -3
- package/lib/projects/localDev/helpers.js +156 -174
- package/lib/projects/structure.d.ts +4 -4
- package/lib/projects/structure.js +32 -78
- package/lib/projects/ui.js +10 -13
- package/lib/projects/upload.d.ts +2 -3
- package/lib/projects/upload.js +55 -65
- package/lib/projects/urls.d.ts +1 -1
- package/lib/projects/urls.js +15 -25
- package/lib/projects/watch.d.ts +1 -1
- package/lib/projects/watch.js +48 -54
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +9 -11
- package/lib/prompts/__tests__/projectsLogsPrompt.test.js +11 -16
- package/lib/prompts/accountNamePrompt.d.ts +1 -1
- package/lib/prompts/accountNamePrompt.js +26 -31
- package/lib/prompts/accountsPrompt.js +12 -15
- package/lib/prompts/cmsFieldPrompt.js +13 -19
- package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
- package/lib/prompts/createApiSamplePrompt.js +9 -12
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +1 -1
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +23 -26
- package/lib/prompts/createFunctionPrompt.js +17 -20
- package/lib/prompts/createModulePrompt.js +12 -15
- package/lib/prompts/createTemplatePrompt.js +5 -8
- package/lib/prompts/downloadProjectPrompt.js +17 -20
- package/lib/prompts/installAppPrompt.js +19 -26
- package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
- package/lib/prompts/personalAccessKeyPrompt.js +40 -47
- package/lib/prompts/previewPrompt.js +15 -22
- package/lib/prompts/projectAddPrompt.d.ts +1 -1
- package/lib/prompts/projectAddPrompt.js +14 -18
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
- package/lib/prompts/projectDevTargetAccountPrompt.js +48 -54
- package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
- package/lib/prompts/projectNameAndDestPrompt.js +22 -29
- package/lib/prompts/projectNamePrompt.js +11 -14
- package/lib/prompts/projectsLogsPrompt.js +5 -8
- package/lib/prompts/promptUtils.d.ts +1 -1
- package/lib/prompts/promptUtils.js +17 -24
- package/lib/prompts/sandboxesPrompt.d.ts +1 -1
- package/lib/prompts/sandboxesPrompt.js +26 -30
- package/lib/prompts/secretPrompt.js +10 -15
- package/lib/prompts/selectAppPrompt.js +11 -14
- package/lib/prompts/selectHubDBTablePrompt.js +24 -30
- package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
- package/lib/prompts/selectProjectTemplatePrompt.js +10 -13
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
- package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
- package/lib/prompts/uploadPrompt.js +11 -17
- package/lib/sandboxSync.d.ts +1 -1
- package/lib/sandboxSync.js +58 -65
- package/lib/sandboxes.d.ts +1 -1
- package/lib/sandboxes.js +68 -76
- package/lib/schema.js +13 -20
- package/lib/serverlessLogs.js +45 -52
- package/lib/testUtils.js +4 -8
- package/lib/ui/SpinniesManager.d.ts +1 -1
- package/lib/ui/SpinniesManager.js +29 -34
- package/lib/ui/boxen.js +11 -14
- package/lib/ui/git.js +14 -20
- package/lib/ui/index.js +55 -73
- package/lib/ui/logger.js +10 -13
- package/lib/ui/serverlessFunctionLogs.js +14 -20
- package/lib/ui/spinniesUtils.js +24 -39
- package/lib/ui/supportHyperlinks.js +3 -6
- package/lib/ui/supportsColor.js +11 -17
- package/lib/ui/table.js +6 -13
- package/lib/upload.js +15 -21
- package/lib/usageTracking.js +35 -44
- package/lib/utils/hasFlag.js +2 -8
- package/lib/validation.js +48 -87
- package/lib/yargsUtils.d.ts +2 -1
- package/lib/yargsUtils.js +19 -16
- package/mcp-server/server.js +6 -8
- package/mcp-server/tools/index.js +13 -16
- package/mcp-server/tools/project/AddFeatureToProject.d.ts +1 -1
- package/mcp-server/tools/project/AddFeatureToProject.js +35 -39
- package/mcp-server/tools/project/CreateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/CreateProjectTool.js +46 -50
- package/mcp-server/tools/project/DeployProject.d.ts +1 -1
- package/mcp-server/tools/project/DeployProject.js +18 -22
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
- package/mcp-server/tools/project/GuidedWalkthroughTool.js +21 -25
- package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
- package/mcp-server/tools/project/UploadProjectTools.js +12 -19
- package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/ValidateProjectTool.js +13 -17
- package/mcp-server/tools/project/__tests__/AddFeatureToProject.test.js +12 -14
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +13 -15
- package/mcp-server/tools/project/__tests__/DeployProject.test.js +6 -8
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +4 -6
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +4 -6
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +4 -6
- package/mcp-server/tools/project/constants.js +3 -9
- package/mcp-server/types.js +1 -5
- package/mcp-server/utils/__tests__/command.test.js +9 -11
- package/mcp-server/utils/__tests__/project.test.js +12 -17
- package/mcp-server/utils/command.d.ts +1 -1
- package/mcp-server/utils/command.js +4 -11
- package/mcp-server/utils/content.d.ts +1 -1
- package/mcp-server/utils/content.js +2 -6
- package/mcp-server/utils/project.js +8 -14
- package/mcp-server/utils/toolUsageTracking.js +11 -14
- package/package.json +15 -11
- package/types/Cms.d.ts +1 -1
- package/types/Cms.js +1 -2
- package/types/LocalDev.d.ts +4 -4
- package/types/LocalDev.js +1 -2
- package/types/ProjectComponents.d.ts +2 -2
- package/types/ProjectComponents.js +1 -2
- package/types/Projects.d.ts +1 -1
- package/types/Projects.js +2 -5
- package/types/Prompts.js +1 -2
- package/types/Sandboxes.js +1 -2
- package/types/Yargs.js +1 -2
- package/commands/app/__tests__/install.test.d.ts +0 -1
- package/commands/app/__tests__/install.test.js +0 -52
- package/commands/app/install.d.ts +0 -8
- package/commands/app/install.js +0 -127
package/commands/upload.js
CHANGED
|
@@ -1,112 +1,107 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const upload_1 = require("../lib/upload");
|
|
23
|
-
const en_1 = require("../lang/en");
|
|
24
|
-
const exitCodes_1 = require("../lib/enums/exitCodes");
|
|
25
|
-
const yargsUtils_1 = require("../lib/yargsUtils");
|
|
26
|
-
const logger_1 = require("../lib/ui/logger");
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { uploadFolder, hasUploadErrors, } from '@hubspot/local-dev-lib/cms/uploadFolder';
|
|
4
|
+
import { getFileMapperQueryValues } from '@hubspot/local-dev-lib/fileMapper';
|
|
5
|
+
import { upload, deleteFile } from '@hubspot/local-dev-lib/api/fileMapper';
|
|
6
|
+
import { getCwd, convertToUnixPath, isAllowedExtension, } from '@hubspot/local-dev-lib/path';
|
|
7
|
+
import { validateSrcAndDestPaths } from '@hubspot/local-dev-lib/cms/modules';
|
|
8
|
+
import { shouldIgnoreFile } from '@hubspot/local-dev-lib/ignoreRules';
|
|
9
|
+
import { getThemePreviewUrl, getThemeJSONPath, } from '@hubspot/local-dev-lib/cms/themes';
|
|
10
|
+
import { FieldsJs, isConvertableFieldJs, cleanupTmpDirSync, } from '@hubspot/local-dev-lib/cms/handleFieldsJS';
|
|
11
|
+
import { ApiErrorContext, logError } from '../lib/errorHandlers/index.js';
|
|
12
|
+
import { getCmsPublishMode } from '../lib/commonOpts.js';
|
|
13
|
+
import { uploadPrompt } from '../lib/prompts/uploadPrompt.js';
|
|
14
|
+
import { confirmPrompt } from '../lib/prompts/promptUtils.js';
|
|
15
|
+
import { validateCmsPublishMode } from '../lib/validation.js';
|
|
16
|
+
import { trackCommandUsage } from '../lib/usageTracking.js';
|
|
17
|
+
import { getUploadableFileList } from '../lib/upload.js';
|
|
18
|
+
import { commands } from '../lang/en.js';
|
|
19
|
+
import { EXIT_CODES } from '../lib/enums/exitCodes.js';
|
|
20
|
+
import { makeYargsBuilder } from '../lib/yargsUtils.js';
|
|
21
|
+
import { uiLogger } from '../lib/ui/logger.js';
|
|
27
22
|
const command = 'upload [src] [dest]';
|
|
28
|
-
const describe =
|
|
23
|
+
const describe = commands.upload.describe;
|
|
29
24
|
function logThemePreview(filePath, accountId) {
|
|
30
|
-
const previewUrl =
|
|
25
|
+
const previewUrl = getThemePreviewUrl(filePath, accountId);
|
|
31
26
|
// Only log if we are actually in a theme
|
|
32
27
|
if (previewUrl) {
|
|
33
|
-
|
|
28
|
+
uiLogger.log(commands.upload.previewUrl(previewUrl));
|
|
34
29
|
}
|
|
35
30
|
}
|
|
36
31
|
async function handler(args) {
|
|
37
|
-
if (!
|
|
38
|
-
process.exit(
|
|
32
|
+
if (!validateCmsPublishMode(args)) {
|
|
33
|
+
process.exit(EXIT_CODES.WARNING);
|
|
39
34
|
}
|
|
40
35
|
const { derivedAccountId } = args;
|
|
41
|
-
const cmsPublishMode =
|
|
42
|
-
const uploadPromptAnswers = await
|
|
36
|
+
const cmsPublishMode = getCmsPublishMode(args);
|
|
37
|
+
const uploadPromptAnswers = await uploadPrompt(args);
|
|
43
38
|
const src = args.src || uploadPromptAnswers.src;
|
|
44
39
|
const saveOutput = args.saveOutput;
|
|
45
40
|
let dest = args.dest || uploadPromptAnswers.dest;
|
|
46
|
-
let absoluteSrcPath =
|
|
41
|
+
let absoluteSrcPath = path.resolve(getCwd(), src);
|
|
47
42
|
if (!dest) {
|
|
48
|
-
|
|
43
|
+
uiLogger.error(commands.upload.errors.destinationRequired);
|
|
49
44
|
return;
|
|
50
45
|
}
|
|
51
46
|
// Check for theme.json file and determine the root path for the project based on it if it exists
|
|
52
|
-
const themeJsonPath =
|
|
47
|
+
const themeJsonPath = getThemeJSONPath(absoluteSrcPath);
|
|
53
48
|
const projectRoot = themeJsonPath
|
|
54
|
-
?
|
|
55
|
-
:
|
|
49
|
+
? path.dirname(themeJsonPath)
|
|
50
|
+
: path.dirname(getCwd());
|
|
56
51
|
const convertFields = projectRoot &&
|
|
57
|
-
|
|
52
|
+
isConvertableFieldJs(projectRoot, absoluteSrcPath, args.convertFields);
|
|
58
53
|
let fieldsJs;
|
|
59
54
|
if (convertFields) {
|
|
60
|
-
fieldsJs = await new
|
|
55
|
+
fieldsJs = await new FieldsJs(projectRoot, absoluteSrcPath, undefined, args.fieldOptions).init();
|
|
61
56
|
if (fieldsJs.rejected)
|
|
62
57
|
return;
|
|
63
58
|
// Ensures that the dest path is a .json. The user might pass '.js' accidentally - this ensures it just works.
|
|
64
59
|
if (fieldsJs.outputPath) {
|
|
65
60
|
absoluteSrcPath = fieldsJs.outputPath;
|
|
66
61
|
}
|
|
67
|
-
dest =
|
|
62
|
+
dest = path.join(path.dirname(dest), 'fields.json');
|
|
68
63
|
}
|
|
69
64
|
let stats;
|
|
70
65
|
try {
|
|
71
|
-
stats =
|
|
66
|
+
stats = fs.statSync(absoluteSrcPath);
|
|
72
67
|
if (!stats.isFile() && !stats.isDirectory()) {
|
|
73
|
-
|
|
68
|
+
uiLogger.error(commands.upload.errors.invalidPath(src));
|
|
74
69
|
return;
|
|
75
70
|
}
|
|
76
71
|
}
|
|
77
72
|
catch (e) {
|
|
78
|
-
|
|
73
|
+
uiLogger.error(commands.upload.errors.invalidPath(src));
|
|
79
74
|
return;
|
|
80
75
|
}
|
|
81
|
-
const normalizedDest =
|
|
82
|
-
|
|
83
|
-
const srcDestIssues = await
|
|
76
|
+
const normalizedDest = convertToUnixPath(dest);
|
|
77
|
+
trackCommandUsage('upload', { mode: cmsPublishMode, type: stats.isFile() ? 'file' : 'folder' }, derivedAccountId);
|
|
78
|
+
const srcDestIssues = await validateSrcAndDestPaths({ isLocal: true, path: src }, { isHubSpot: true, path: dest });
|
|
84
79
|
if (srcDestIssues.length) {
|
|
85
|
-
srcDestIssues.forEach(({ message }) =>
|
|
86
|
-
process.exit(
|
|
80
|
+
srcDestIssues.forEach(({ message }) => uiLogger.error(message));
|
|
81
|
+
process.exit(EXIT_CODES.WARNING);
|
|
87
82
|
}
|
|
88
83
|
if (stats.isFile()) {
|
|
89
|
-
if (!
|
|
90
|
-
|
|
84
|
+
if (!isAllowedExtension(src) && !convertFields) {
|
|
85
|
+
uiLogger.error(commands.upload.errors.invalidPath(src));
|
|
91
86
|
return;
|
|
92
87
|
}
|
|
93
|
-
if (
|
|
94
|
-
|
|
88
|
+
if (shouldIgnoreFile(absoluteSrcPath)) {
|
|
89
|
+
uiLogger.error(commands.upload.errors.fileIgnored(src));
|
|
95
90
|
return;
|
|
96
91
|
}
|
|
97
|
-
|
|
92
|
+
upload(derivedAccountId, absoluteSrcPath, normalizedDest, getFileMapperQueryValues(cmsPublishMode))
|
|
98
93
|
.then(() => {
|
|
99
|
-
|
|
94
|
+
uiLogger.success(commands.upload.success.fileUploaded(src, normalizedDest, derivedAccountId));
|
|
100
95
|
logThemePreview(src, derivedAccountId);
|
|
101
96
|
})
|
|
102
97
|
.catch(error => {
|
|
103
|
-
|
|
104
|
-
|
|
98
|
+
uiLogger.error(commands.upload.errors.uploadFailed(src, normalizedDest));
|
|
99
|
+
logError(error, new ApiErrorContext({
|
|
105
100
|
accountId: derivedAccountId,
|
|
106
101
|
request: normalizedDest,
|
|
107
102
|
payload: src,
|
|
108
103
|
}));
|
|
109
|
-
process.exit(
|
|
104
|
+
process.exit(EXIT_CODES.WARNING);
|
|
110
105
|
})
|
|
111
106
|
.finally(() => {
|
|
112
107
|
if (!convertFields)
|
|
@@ -115,93 +110,93 @@ async function handler(args) {
|
|
|
115
110
|
fieldsJs.saveOutput();
|
|
116
111
|
}
|
|
117
112
|
if (fieldsJs) {
|
|
118
|
-
|
|
113
|
+
cleanupTmpDirSync(fieldsJs.rootWriteDir);
|
|
119
114
|
}
|
|
120
115
|
});
|
|
121
116
|
}
|
|
122
117
|
else {
|
|
123
|
-
|
|
118
|
+
uiLogger.log(commands.upload.uploading(src, dest, derivedAccountId));
|
|
124
119
|
// Generate the first-pass file list in here, and pass to uploadFolder.
|
|
125
|
-
const filePaths = await
|
|
120
|
+
const filePaths = await getUploadableFileList(absoluteSrcPath, args.convertFields ?? false);
|
|
126
121
|
if (args.clean) {
|
|
127
122
|
// If clean is true, will first delete the dest folder and then upload src. Cleans up files that only exist on HS.
|
|
128
123
|
let cleanUpload = args.force;
|
|
129
124
|
if (!args.force) {
|
|
130
|
-
cleanUpload = await
|
|
125
|
+
cleanUpload = await confirmPrompt(commands.upload.confirmCleanUpload(dest, derivedAccountId), { defaultAnswer: false });
|
|
131
126
|
}
|
|
132
127
|
if (cleanUpload) {
|
|
133
128
|
try {
|
|
134
|
-
await
|
|
135
|
-
|
|
129
|
+
await deleteFile(derivedAccountId, dest);
|
|
130
|
+
uiLogger.log(commands.upload.cleaning(dest, derivedAccountId));
|
|
136
131
|
}
|
|
137
132
|
catch (error) {
|
|
138
|
-
|
|
133
|
+
uiLogger.error(commands.upload.errors.deleteFailed(dest, derivedAccountId));
|
|
139
134
|
}
|
|
140
135
|
}
|
|
141
136
|
}
|
|
142
|
-
|
|
137
|
+
uploadFolder(derivedAccountId, absoluteSrcPath, dest, {}, {
|
|
143
138
|
convertFields: args.convertFields,
|
|
144
139
|
// @ts-expect-error - fieldOptions is a string or string[]
|
|
145
140
|
fieldOptions: args.fieldOptions ?? undefined,
|
|
146
141
|
saveOutput: args.saveOutput,
|
|
147
142
|
}, filePaths)
|
|
148
143
|
.then(results => {
|
|
149
|
-
if (!
|
|
150
|
-
|
|
144
|
+
if (!hasUploadErrors(results)) {
|
|
145
|
+
uiLogger.success(commands.upload.success.uploadComplete(dest));
|
|
151
146
|
logThemePreview(src, derivedAccountId);
|
|
152
147
|
}
|
|
153
148
|
else {
|
|
154
|
-
|
|
155
|
-
process.exit(
|
|
149
|
+
uiLogger.error(commands.upload.errors.someFilesFailed(dest));
|
|
150
|
+
process.exit(EXIT_CODES.WARNING);
|
|
156
151
|
}
|
|
157
152
|
})
|
|
158
153
|
.catch(error => {
|
|
159
|
-
|
|
160
|
-
|
|
154
|
+
uiLogger.error(commands.upload.errors.uploadFailed(src, dest));
|
|
155
|
+
logError(error, {
|
|
161
156
|
accountId: derivedAccountId,
|
|
162
157
|
});
|
|
163
|
-
process.exit(
|
|
158
|
+
process.exit(EXIT_CODES.WARNING);
|
|
164
159
|
});
|
|
165
160
|
}
|
|
166
161
|
}
|
|
167
162
|
function uploadBuilder(yargs) {
|
|
168
163
|
yargs.positional('src', {
|
|
169
|
-
describe:
|
|
164
|
+
describe: commands.upload.positionals.src,
|
|
170
165
|
type: 'string',
|
|
171
166
|
});
|
|
172
167
|
yargs.positional('dest', {
|
|
173
|
-
describe:
|
|
168
|
+
describe: commands.upload.positionals.dest,
|
|
174
169
|
type: 'string',
|
|
175
170
|
});
|
|
176
171
|
yargs.option('fieldOptions', {
|
|
177
|
-
describe:
|
|
172
|
+
describe: commands.upload.options.options,
|
|
178
173
|
type: 'array',
|
|
179
174
|
default: [''],
|
|
180
175
|
hidden: true,
|
|
181
176
|
});
|
|
182
177
|
yargs.option('saveOutput', {
|
|
183
|
-
describe:
|
|
178
|
+
describe: commands.upload.options.saveOutput,
|
|
184
179
|
type: 'boolean',
|
|
185
180
|
default: false,
|
|
186
181
|
});
|
|
187
182
|
yargs.option('convertFields', {
|
|
188
|
-
describe:
|
|
183
|
+
describe: commands.upload.options.convertFields,
|
|
189
184
|
type: 'boolean',
|
|
190
185
|
default: false,
|
|
191
186
|
});
|
|
192
187
|
yargs.option('clean', {
|
|
193
|
-
describe:
|
|
188
|
+
describe: commands.upload.options.clean,
|
|
194
189
|
type: 'boolean',
|
|
195
190
|
default: false,
|
|
196
191
|
});
|
|
197
192
|
yargs.option('force', {
|
|
198
|
-
describe:
|
|
193
|
+
describe: commands.upload.options.force,
|
|
199
194
|
type: 'boolean',
|
|
200
195
|
default: false,
|
|
201
196
|
});
|
|
202
197
|
return yargs;
|
|
203
198
|
}
|
|
204
|
-
const builder =
|
|
199
|
+
const builder = makeYargsBuilder(uploadBuilder, command, describe, {
|
|
205
200
|
useGlobalOptions: true,
|
|
206
201
|
useConfigOptions: true,
|
|
207
202
|
useAccountOptions: true,
|
|
@@ -214,4 +209,4 @@ const uploadCommand = {
|
|
|
214
209
|
handler,
|
|
215
210
|
builder,
|
|
216
211
|
};
|
|
217
|
-
|
|
212
|
+
export default uploadCommand;
|
package/commands/watch.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccountArgs, CmsPublishModeArgs, CommonArgs, ConfigArgs, EnvironmentArgs, YargsCommandModule } from '../types/Yargs';
|
|
1
|
+
import { AccountArgs, CmsPublishModeArgs, CommonArgs, ConfigArgs, EnvironmentArgs, YargsCommandModule } from '../types/Yargs.js';
|
|
2
2
|
type WatchCommandArgs = ConfigArgs & AccountArgs & EnvironmentArgs & CommonArgs & CmsPublishModeArgs & {
|
|
3
3
|
src?: string;
|
|
4
4
|
dest?: string;
|
package/commands/watch.js
CHANGED
|
@@ -1,76 +1,71 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const upload_1 = require("../lib/upload");
|
|
16
|
-
const errorHandlers_1 = require("../lib/errorHandlers");
|
|
17
|
-
const exitCodes_1 = require("../lib/enums/exitCodes");
|
|
18
|
-
const yargsUtils_1 = require("../lib/yargsUtils");
|
|
19
|
-
const logger_1 = require("../lib/ui/logger");
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { watch } from '@hubspot/local-dev-lib/cms/watch';
|
|
4
|
+
import { getCwd } from '@hubspot/local-dev-lib/path';
|
|
5
|
+
import { getCmsPublishMode } from '../lib/commonOpts.js';
|
|
6
|
+
import { uploadPrompt } from '../lib/prompts/uploadPrompt.js';
|
|
7
|
+
import { validateCmsPublishMode } from '../lib/validation.js';
|
|
8
|
+
import { trackCommandUsage } from '../lib/usageTracking.js';
|
|
9
|
+
import { commands } from '../lang/en.js';
|
|
10
|
+
import { getUploadableFileList } from '../lib/upload.js';
|
|
11
|
+
import { logError, ApiErrorContext } from '../lib/errorHandlers/index.js';
|
|
12
|
+
import { EXIT_CODES } from '../lib/enums/exitCodes.js';
|
|
13
|
+
import { makeYargsBuilder } from '../lib/yargsUtils.js';
|
|
14
|
+
import { uiLogger } from '../lib/ui/logger.js';
|
|
20
15
|
const command = 'watch [src] [dest]';
|
|
21
|
-
const describe =
|
|
16
|
+
const describe = commands.watch.describe;
|
|
22
17
|
const handler = async (args) => {
|
|
23
18
|
const { remove, initialUpload, disableInitial, notify, derivedAccountId } = args;
|
|
24
|
-
if (!
|
|
25
|
-
process.exit(
|
|
19
|
+
if (!validateCmsPublishMode(args)) {
|
|
20
|
+
process.exit(EXIT_CODES.ERROR);
|
|
26
21
|
}
|
|
27
|
-
const cmsPublishMode =
|
|
28
|
-
const uploadPromptAnswers = await
|
|
22
|
+
const cmsPublishMode = getCmsPublishMode(args);
|
|
23
|
+
const uploadPromptAnswers = await uploadPrompt(args);
|
|
29
24
|
const src = args.src || uploadPromptAnswers.src;
|
|
30
25
|
const dest = args.dest || uploadPromptAnswers.dest;
|
|
31
|
-
const absoluteSrcPath =
|
|
26
|
+
const absoluteSrcPath = path.resolve(getCwd(), src);
|
|
32
27
|
try {
|
|
33
|
-
const stats =
|
|
28
|
+
const stats = fs.statSync(absoluteSrcPath);
|
|
34
29
|
if (!stats.isDirectory()) {
|
|
35
|
-
|
|
30
|
+
uiLogger.log(commands.watch.errors.invalidPath(src));
|
|
36
31
|
return;
|
|
37
32
|
}
|
|
38
33
|
}
|
|
39
34
|
catch (e) {
|
|
40
|
-
|
|
35
|
+
uiLogger.log(commands.watch.errors.invalidPath(src));
|
|
41
36
|
return;
|
|
42
37
|
}
|
|
43
38
|
if (!dest) {
|
|
44
|
-
|
|
39
|
+
uiLogger.log(commands.watch.errors.destinationRequired);
|
|
45
40
|
return;
|
|
46
41
|
}
|
|
47
42
|
let filesToUpload = [];
|
|
48
43
|
if (disableInitial) {
|
|
49
|
-
|
|
44
|
+
uiLogger.info(commands.watch.warnings.disableInitial);
|
|
50
45
|
}
|
|
51
46
|
else if (!initialUpload) {
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
uiLogger.info(commands.watch.warnings.notUploaded(src));
|
|
48
|
+
uiLogger.info(commands.watch.warnings.initialUpload);
|
|
54
49
|
}
|
|
55
50
|
if (initialUpload) {
|
|
56
|
-
filesToUpload = await
|
|
51
|
+
filesToUpload = await getUploadableFileList(absoluteSrcPath, args.convertFields);
|
|
57
52
|
}
|
|
58
|
-
|
|
53
|
+
trackCommandUsage('watch', { mode: cmsPublishMode }, derivedAccountId);
|
|
59
54
|
const onUploadFolderError = (error) => {
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
uiLogger.error(commands.watch.errors.folderFailed(src, dest, derivedAccountId));
|
|
56
|
+
logError(error, {
|
|
62
57
|
accountId: derivedAccountId,
|
|
63
58
|
});
|
|
64
59
|
};
|
|
65
60
|
const onUploadFileError = (file, destPath, accountId) => (error) => {
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
uiLogger.error(commands.watch.errors.fileFailed(file, destPath, accountId));
|
|
62
|
+
logError(error, new ApiErrorContext({
|
|
68
63
|
accountId,
|
|
69
64
|
request: destPath,
|
|
70
65
|
payload: file,
|
|
71
66
|
}));
|
|
72
67
|
};
|
|
73
|
-
|
|
68
|
+
watch(derivedAccountId, absoluteSrcPath, dest, {
|
|
74
69
|
cmsPublishMode,
|
|
75
70
|
remove,
|
|
76
71
|
disableInitial: !initialUpload,
|
|
@@ -81,53 +76,53 @@ const handler = async (args) => {
|
|
|
81
76
|
};
|
|
82
77
|
function watchBuilder(yargs) {
|
|
83
78
|
yargs.positional('src', {
|
|
84
|
-
describe:
|
|
79
|
+
describe: commands.watch.positionals.src,
|
|
85
80
|
type: 'string',
|
|
86
81
|
});
|
|
87
82
|
yargs.positional('dest', {
|
|
88
|
-
describe:
|
|
83
|
+
describe: commands.watch.positionals.dest,
|
|
89
84
|
type: 'string',
|
|
90
85
|
});
|
|
91
86
|
yargs.option('fieldOptions', {
|
|
92
|
-
describe:
|
|
87
|
+
describe: commands.watch.options.options,
|
|
93
88
|
type: 'array',
|
|
94
89
|
default: [''],
|
|
95
90
|
hidden: true,
|
|
96
91
|
});
|
|
97
92
|
yargs.option('remove', {
|
|
98
93
|
alias: 'r',
|
|
99
|
-
describe:
|
|
94
|
+
describe: commands.watch.options.remove,
|
|
100
95
|
type: 'boolean',
|
|
101
96
|
});
|
|
102
97
|
yargs.option('initial-upload', {
|
|
103
98
|
alias: 'i',
|
|
104
|
-
describe:
|
|
99
|
+
describe: commands.watch.options.initialUpload,
|
|
105
100
|
type: 'boolean',
|
|
106
101
|
});
|
|
107
102
|
yargs.option('disable-initial', {
|
|
108
|
-
describe:
|
|
103
|
+
describe: commands.watch.options.disableInitial,
|
|
109
104
|
type: 'boolean',
|
|
110
105
|
hidden: true,
|
|
111
106
|
});
|
|
112
107
|
yargs.option('notify', {
|
|
113
108
|
alias: 'n',
|
|
114
|
-
describe:
|
|
109
|
+
describe: commands.watch.options.notify,
|
|
115
110
|
type: 'string',
|
|
116
111
|
requiresArg: true,
|
|
117
112
|
});
|
|
118
113
|
yargs.option('convertFields', {
|
|
119
|
-
describe:
|
|
114
|
+
describe: commands.watch.options.convertFields,
|
|
120
115
|
type: 'boolean',
|
|
121
116
|
default: false,
|
|
122
117
|
});
|
|
123
118
|
yargs.option('saveOutput', {
|
|
124
|
-
describe:
|
|
119
|
+
describe: commands.watch.options.saveOutput,
|
|
125
120
|
type: 'boolean',
|
|
126
121
|
default: false,
|
|
127
122
|
});
|
|
128
123
|
return yargs;
|
|
129
124
|
}
|
|
130
|
-
const builder =
|
|
125
|
+
const builder = makeYargsBuilder(watchBuilder, command, describe, {
|
|
131
126
|
useConfigOptions: true,
|
|
132
127
|
useAccountOptions: true,
|
|
133
128
|
useGlobalOptions: true,
|
|
@@ -140,5 +135,4 @@ const watchCommand = {
|
|
|
140
135
|
handler,
|
|
141
136
|
builder,
|
|
142
137
|
};
|
|
143
|
-
|
|
144
|
-
module.exports = watchCommand;
|
|
138
|
+
export default watchCommand;
|
package/lang/en.d.ts
CHANGED
|
@@ -252,6 +252,9 @@ Global configuration replaces hubspot.config.yml, and you will be prompted to mi
|
|
|
252
252
|
readonly allowAutoUpdates: {
|
|
253
253
|
readonly describe: "Enable or disable auto updates";
|
|
254
254
|
};
|
|
255
|
+
readonly autoOpenBrowser: {
|
|
256
|
+
readonly describe: "Enable or disable automatic opening of the browser";
|
|
257
|
+
};
|
|
255
258
|
};
|
|
256
259
|
};
|
|
257
260
|
};
|
|
@@ -1500,28 +1503,6 @@ ${string}`;
|
|
|
1500
1503
|
readonly app: {
|
|
1501
1504
|
readonly describe: "Commands for managing apps.";
|
|
1502
1505
|
readonly subcommands: {
|
|
1503
|
-
readonly install: {
|
|
1504
|
-
readonly describe: "Install an OAuth app into a test account.";
|
|
1505
|
-
readonly options: {
|
|
1506
|
-
readonly appUid: "The uid of the app to install";
|
|
1507
|
-
readonly projectName: "The name of the project that contains the app";
|
|
1508
|
-
};
|
|
1509
|
-
readonly positionals: {
|
|
1510
|
-
readonly testAccountId: "The id of the test account to install the app into";
|
|
1511
|
-
};
|
|
1512
|
-
readonly errors: {
|
|
1513
|
-
readonly mustSpecifyProjectName: `You must specify a project name. Use the ${string} flag to specify the project name or run this command from within a project directory.`;
|
|
1514
|
-
readonly noAppUidFound: `No app uid found. Please specify the app uid with the ${string} flag or run this command from within a project that contains an app.`;
|
|
1515
|
-
readonly appMustBeOauth: "This command only supports installing oauth apps. Please specify an app with oauth auth type.";
|
|
1516
|
-
};
|
|
1517
|
-
readonly polling: {
|
|
1518
|
-
readonly start: "Installing app...";
|
|
1519
|
-
readonly success: "App installed successfully";
|
|
1520
|
-
readonly failure: "App installation failed";
|
|
1521
|
-
readonly error: "Error installing app";
|
|
1522
|
-
};
|
|
1523
|
-
readonly example: "Install the app with uid my-app-uid from the project named \"my-project\" into the target account with id 1234567890";
|
|
1524
|
-
};
|
|
1525
1506
|
readonly secret: {
|
|
1526
1507
|
readonly describe: "Commands for managing secrets.";
|
|
1527
1508
|
readonly subcommands: {
|
|
@@ -2481,7 +2462,8 @@ export declare const lib: {
|
|
|
2481
2462
|
readonly running: (projectName: string, accountIdentifier: string) => string;
|
|
2482
2463
|
readonly quitHelper: `Press ${string} to stop the local dev server`;
|
|
2483
2464
|
readonly viewProjectLink: (name: string, accountId: number) => string;
|
|
2484
|
-
readonly viewLocalDevUILink: (accountId: number) => string;
|
|
2465
|
+
readonly viewLocalDevUILink: (accountId: number, showWelcomeScreen: boolean) => string;
|
|
2466
|
+
readonly localDevUIAutoMessage: (accountId: number, showWelcomeScreen: boolean) => string;
|
|
2485
2467
|
readonly viewTestAccountLink: "View developer test account in HubSpot";
|
|
2486
2468
|
readonly exitingStart: "Stopping local dev server ...";
|
|
2487
2469
|
readonly exitingSucceed: "Successfully exited";
|
|
@@ -2813,6 +2795,11 @@ Run ${string} to upgrade to version ${string}`;
|
|
|
2813
2795
|
readonly promptMessage: "Enter http timeout duration";
|
|
2814
2796
|
readonly success: (timeout: string) => string;
|
|
2815
2797
|
};
|
|
2798
|
+
readonly setAutoOpenBrowser: {
|
|
2799
|
+
readonly fieldName: "auto open browser";
|
|
2800
|
+
readonly enabled: "Auto opening your browser has been enabled";
|
|
2801
|
+
readonly disabled: "Auto opening your browser has been disabled";
|
|
2802
|
+
};
|
|
2816
2803
|
};
|
|
2817
2804
|
readonly commonOpts: {
|
|
2818
2805
|
readonly options: {
|