@hubspot/cli 7.6.0-beta.4 → 7.6.0-beta.6
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.d.ts +7 -0
- package/api/migrate.js +22 -22
- package/bin/cli.js +92 -97
- package/bin/hs +2 -2
- package/bin/hscms +2 -2
- package/bin/silenceErrors.js +1 -2
- package/commands/__tests__/account.test.js +29 -34
- package/commands/__tests__/auth.test.js +11 -16
- package/commands/__tests__/cms.test.js +15 -20
- package/commands/__tests__/config.test.js +14 -19
- package/commands/__tests__/create.test.js +10 -15
- package/commands/__tests__/customObject.test.js +14 -19
- package/commands/__tests__/doctor.test.js +43 -48
- package/commands/__tests__/feedback.test.js +7 -45
- package/commands/__tests__/fetch.test.js +29 -28
- package/commands/__tests__/filemanager.test.js +14 -19
- package/commands/__tests__/function.test.js +16 -21
- package/commands/__tests__/getStarted.test.js +45 -60
- 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 +78 -69
- package/commands/account/clean.d.ts +1 -1
- package/commands/account/clean.js +55 -60
- package/commands/account/createOverride.d.ts +1 -1
- package/commands/account/createOverride.js +52 -57
- package/commands/account/info.d.ts +1 -1
- package/commands/account/info.js +33 -35
- package/commands/account/list.d.ts +1 -1
- package/commands/account/list.js +43 -45
- package/commands/account/remove.d.ts +1 -1
- package/commands/account/remove.js +37 -42
- package/commands/account/removeOverride.d.ts +1 -1
- package/commands/account/removeOverride.js +38 -43
- package/commands/account/rename.d.ts +1 -1
- package/commands/account/rename.js +18 -20
- package/commands/account/use.d.ts +1 -1
- package/commands/account/use.js +29 -31
- package/commands/account.d.ts +1 -1
- package/commands/account.js +23 -28
- package/commands/app/__tests__/migrate.test.js +29 -34
- package/commands/app/migrate.d.ts +2 -2
- package/commands/app/migrate.js +40 -43
- package/commands/app/secret/__tests__/add.test.js +6 -11
- package/commands/app/secret/__tests__/delete.test.js +6 -11
- package/commands/app/secret/__tests__/list.test.js +6 -11
- package/commands/app/secret/__tests__/update.test.js +6 -11
- package/commands/app/secret/add.d.ts +1 -1
- package/commands/app/secret/add.js +28 -30
- package/commands/app/secret/delete.d.ts +1 -1
- package/commands/app/secret/delete.js +34 -36
- package/commands/app/secret/list.d.ts +1 -1
- package/commands/app/secret/list.js +25 -27
- package/commands/app/secret/update.d.ts +1 -1
- package/commands/app/secret/update.js +32 -34
- package/commands/app/secret.d.ts +1 -1
- package/commands/app/secret.js +12 -17
- package/commands/app.d.ts +1 -1
- package/commands/app.js +6 -11
- package/commands/auth.d.ts +1 -1
- package/commands/auth.js +70 -72
- package/commands/cms/convertFields.d.ts +1 -1
- package/commands/cms/convertFields.js +34 -39
- package/commands/cms/getReactModule.d.ts +1 -1
- package/commands/cms/getReactModule.js +32 -37
- package/commands/cms/lighthouseScore.d.ts +1 -1
- package/commands/cms/lighthouseScore.js +67 -72
- package/commands/cms.d.ts +1 -1
- package/commands/cms.js +11 -16
- package/commands/completion.d.ts +1 -1
- package/commands/completion.js +10 -15
- package/commands/config/migrate.d.ts +1 -1
- package/commands/config/migrate.js +27 -32
- package/commands/config/set.d.ts +2 -1
- package/commands/config/set.js +40 -32
- package/commands/config.d.ts +1 -1
- package/commands/config.js +8 -13
- package/commands/create/api-sample.d.ts +1 -1
- package/commands/create/api-sample.js +28 -33
- package/commands/create/app.d.ts +1 -1
- package/commands/create/app.js +3 -5
- package/commands/create/function.d.ts +1 -1
- package/commands/create/function.js +9 -11
- package/commands/create/index.d.ts +1 -1
- package/commands/create/index.js +19 -24
- package/commands/create/module.d.ts +1 -1
- package/commands/create/module.js +12 -14
- package/commands/create/react-app.d.ts +1 -1
- package/commands/create/react-app.js +3 -5
- package/commands/create/template.d.ts +1 -1
- package/commands/create/template.js +12 -14
- package/commands/create/vue-app.d.ts +1 -1
- package/commands/create/vue-app.js +3 -5
- package/commands/create/webpack-serverless.d.ts +1 -1
- package/commands/create/webpack-serverless.js +3 -5
- package/commands/create/website-theme.d.ts +1 -1
- package/commands/create/website-theme.js +5 -7
- package/commands/create.d.ts +2 -2
- package/commands/create.js +30 -35
- package/commands/customObject/__tests__/create.test.js +13 -18
- package/commands/customObject/__tests__/schema.test.js +18 -23
- package/commands/customObject/create.d.ts +1 -1
- package/commands/customObject/create.js +28 -30
- package/commands/customObject/schema/__tests__/create.test.js +13 -18
- package/commands/customObject/schema/__tests__/delete.test.js +13 -18
- package/commands/customObject/schema/__tests__/fetch-all.test.js +13 -18
- package/commands/customObject/schema/__tests__/fetch.test.js +13 -18
- package/commands/customObject/schema/__tests__/list.test.js +13 -18
- package/commands/customObject/schema/__tests__/update.test.js +13 -18
- package/commands/customObject/schema/create.d.ts +1 -1
- package/commands/customObject/schema/create.js +28 -30
- package/commands/customObject/schema/delete.d.ts +1 -1
- package/commands/customObject/schema/delete.js +24 -26
- package/commands/customObject/schema/fetch-all.d.ts +1 -1
- package/commands/customObject/schema/fetch-all.js +22 -24
- package/commands/customObject/schema/fetch.d.ts +1 -1
- package/commands/customObject/schema/fetch.js +24 -26
- package/commands/customObject/schema/list.d.ts +1 -1
- package/commands/customObject/schema/list.js +13 -15
- package/commands/customObject/schema/update.d.ts +1 -1
- package/commands/customObject/schema/update.js +32 -34
- package/commands/customObject/schema.d.ts +1 -1
- package/commands/customObject/schema.js +17 -22
- package/commands/customObject.d.ts +1 -1
- package/commands/customObject.js +13 -18
- package/commands/doctor.d.ts +1 -1
- package/commands/doctor.js +28 -33
- package/commands/feedback.d.ts +1 -1
- package/commands/feedback.js +19 -24
- package/commands/fetch.d.ts +1 -1
- package/commands/fetch.js +28 -30
- package/commands/filemanager/__tests__/fetch.test.js +17 -22
- package/commands/filemanager/__tests__/upload.test.js +15 -20
- package/commands/filemanager/fetch.d.ts +1 -1
- package/commands/filemanager/fetch.js +23 -25
- package/commands/filemanager/upload.d.ts +1 -1
- package/commands/filemanager/upload.js +39 -44
- package/commands/filemanager.d.ts +1 -1
- package/commands/filemanager.js +8 -13
- package/commands/function/deploy.d.ts +1 -1
- package/commands/function/deploy.js +35 -40
- package/commands/function/list.d.ts +1 -1
- package/commands/function/list.js +24 -29
- package/commands/function/server.d.ts +1 -1
- package/commands/function/server.js +15 -17
- package/commands/function.d.ts +1 -1
- package/commands/function.js +12 -18
- package/commands/getStarted.d.ts +1 -1
- package/commands/getStarted.js +125 -146
- package/commands/hubdb/__tests__/clear.test.js +13 -18
- package/commands/hubdb/__tests__/create.test.js +13 -18
- package/commands/hubdb/__tests__/delete.test.js +13 -18
- package/commands/hubdb/__tests__/fetch.test.js +13 -18
- package/commands/hubdb/__tests__/list.test.js +23 -28
- package/commands/hubdb/clear.d.ts +1 -1
- package/commands/hubdb/clear.js +20 -22
- package/commands/hubdb/create.d.ts +1 -1
- package/commands/hubdb/create.js +30 -35
- package/commands/hubdb/delete.d.ts +1 -1
- package/commands/hubdb/delete.js +24 -26
- package/commands/hubdb/fetch.d.ts +1 -1
- package/commands/hubdb/fetch.js +17 -19
- package/commands/hubdb/list.d.ts +1 -1
- package/commands/hubdb/list.js +33 -35
- package/commands/hubdb.d.ts +1 -1
- package/commands/hubdb.js +18 -24
- package/commands/init.d.ts +1 -1
- package/commands/init.js +83 -88
- package/commands/lint.d.ts +1 -1
- package/commands/lint.js +24 -26
- package/commands/list.d.ts +1 -1
- package/commands/list.js +32 -37
- package/commands/logs.d.ts +1 -1
- package/commands/logs.js +35 -37
- package/commands/mcp/__tests__/setup.test.js +7 -12
- package/commands/mcp/__tests__/start.test.js +7 -12
- package/commands/mcp/setup.d.ts +1 -1
- package/commands/mcp/setup.js +17 -19
- package/commands/mcp/start.d.ts +1 -1
- package/commands/mcp/start.js +32 -34
- package/commands/mcp.d.ts +1 -1
- package/commands/mcp.js +7 -12
- package/commands/module/marketplace-validate.d.ts +1 -1
- package/commands/module/marketplace-validate.js +21 -26
- package/commands/module.d.ts +1 -1
- package/commands/module.js +7 -13
- package/commands/mv.d.ts +1 -1
- package/commands/mv.js +20 -22
- package/commands/open.d.ts +1 -1
- package/commands/open.js +19 -21
- package/commands/project/__tests__/add.test.js +10 -15
- package/commands/project/__tests__/create.test.js +14 -19
- package/commands/project/__tests__/deploy.test.js +99 -141
- package/commands/project/__tests__/devUnifiedFlow.test.js +151 -155
- 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 +2 -2
- package/commands/project/deploy.js +83 -90
- 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 +69 -76
- package/commands/project/download.d.ts +1 -1
- package/commands/project/download.js +35 -40
- package/commands/project/installDeps.d.ts +1 -1
- package/commands/project/installDeps.js +29 -34
- package/commands/project/listBuilds.d.ts +1 -1
- package/commands/project/listBuilds.js +40 -45
- package/commands/project/logs.d.ts +1 -1
- package/commands/project/logs.js +52 -54
- package/commands/project/migrate.d.ts +1 -1
- package/commands/project/migrate.js +24 -26
- package/commands/project/migrateApp.d.ts +2 -2
- package/commands/project/migrateApp.js +18 -20
- package/commands/project/open.d.ts +1 -1
- package/commands/project/open.js +25 -30
- package/commands/project/profile/add.d.ts +1 -1
- package/commands/project/profile/add.js +68 -73
- package/commands/project/profile/delete.d.ts +1 -1
- package/commands/project/profile/delete.js +68 -61
- package/commands/project/profile.d.ts +1 -1
- package/commands/project/profile.js +9 -14
- package/commands/project/upload.d.ts +1 -1
- package/commands/project/upload.js +50 -55
- package/commands/project/validate.d.ts +1 -1
- package/commands/project/validate.js +36 -40
- package/commands/project/watch.d.ts +1 -1
- package/commands/project/watch.js +59 -61
- package/commands/project.d.ts +1 -1
- package/commands/project.js +38 -43
- package/commands/remove.d.ts +1 -1
- package/commands/remove.js +15 -17
- package/commands/sandbox/__tests__/create.test.js +222 -20
- package/commands/sandbox/__tests__/delete.test.js +15 -20
- package/commands/sandbox/create.d.ts +2 -2
- package/commands/sandbox/create.js +92 -79
- package/commands/sandbox/delete.d.ts +1 -1
- package/commands/sandbox/delete.js +94 -96
- package/commands/sandbox.d.ts +1 -1
- package/commands/sandbox.js +9 -14
- package/commands/secret/__tests__/addSecret.test.js +13 -18
- package/commands/secret/__tests__/deleteSecret.test.js +13 -18
- package/commands/secret/__tests__/listSecret.test.js +13 -18
- package/commands/secret/__tests__/updateSecret.test.js +13 -18
- package/commands/secret/addSecret.d.ts +1 -1
- package/commands/secret/addSecret.js +26 -28
- package/commands/secret/deleteSecret.d.ts +1 -1
- package/commands/secret/deleteSecret.js +27 -29
- package/commands/secret/listSecret.d.ts +1 -1
- package/commands/secret/listSecret.js +19 -21
- package/commands/secret/updateSecret.d.ts +1 -1
- package/commands/secret/updateSecret.js +25 -27
- package/commands/secret.d.ts +1 -1
- package/commands/secret.js +13 -18
- package/commands/testAccount/__tests__/create.test.js +17 -22
- package/commands/testAccount/__tests__/createConfig.test.js +6 -11
- package/commands/testAccount/__tests__/delete.test.js +15 -20
- package/commands/testAccount/create.d.ts +1 -1
- package/commands/testAccount/create.js +63 -84
- 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 +52 -25
- package/lang/en.js +421 -397
- package/lang/en.lyaml +4 -28
- package/lib/__tests__/accountTypes.test.js +20 -22
- package/lib/__tests__/buildAccount.test.js +115 -64
- 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 +117 -109
- package/lib/app/__tests__/migrate_legacy.test.js +29 -31
- package/lib/app/migrate.d.ts +18 -4
- package/lib/app/migrate.js +152 -148
- package/lib/app/migrate_legacy.d.ts +1 -1
- package/lib/app/migrate_legacy.js +72 -78
- package/lib/app/urls.js +5 -9
- package/lib/buildAccount.d.ts +12 -3
- package/lib/buildAccount.js +165 -69
- package/lib/commonOpts.d.ts +1 -1
- package/lib/commonOpts.js +67 -59
- package/lib/configMigrate.js +34 -38
- package/lib/configOptions.d.ts +5 -0
- package/lib/configOptions.js +44 -40
- package/lib/constants.d.ts +8 -0
- package/lib/constants.js +39 -34
- package/lib/customObject.js +2 -6
- package/lib/dependencyManagement.js +37 -45
- package/lib/developerTestAccounts.d.ts +1 -1
- package/lib/developerTestAccounts.js +34 -39
- package/lib/doctor/Diagnosis.d.ts +1 -1
- package/lib/doctor/Diagnosis.js +25 -29
- package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
- package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
- package/lib/doctor/Doctor.d.ts +1 -1
- package/lib/doctor/Doctor.js +94 -101
- package/lib/doctor/__tests__/Diagnosis.test.js +9 -14
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +29 -34
- package/lib/doctor/__tests__/Doctor.test.js +24 -26
- package/lib/enums/exitCodes.js +1 -4
- package/lib/errorHandlers/index.js +33 -52
- package/lib/errorHandlers/suppressError.d.ts +1 -1
- package/lib/errorHandlers/suppressError.js +28 -31
- package/lib/errors/ProjectValidationError.d.ts +4 -0
- package/lib/errors/ProjectValidationError.js +9 -0
- package/lib/filesystem.js +8 -15
- package/lib/generateSelectors.js +18 -29
- package/lib/hasFeature.d.ts +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.d.ts +4 -0
- package/lib/mcp/setup.js +106 -82
- package/lib/middleware/__test__/configMiddleware.test.js +20 -55
- package/lib/middleware/__test__/gitMiddleware.test.js +7 -42
- package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -4
- package/lib/middleware/__test__/requestMiddleware.test.js +6 -11
- package/lib/middleware/__test__/utils.test.js +9 -11
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +9 -44
- package/lib/middleware/autoUpdateMiddleware.js +33 -40
- package/lib/middleware/configMiddleware.js +36 -42
- package/lib/middleware/fireAlarmMiddleware.js +12 -18
- package/lib/middleware/gitMiddleware.js +5 -8
- package/lib/middleware/notificationsMiddleware.js +16 -23
- package/lib/middleware/requestMiddleware.js +4 -10
- package/lib/middleware/utils.js +1 -4
- package/lib/middleware/yargsChecksMiddleware.js +10 -13
- package/lib/npm.js +14 -23
- package/lib/oauth.js +29 -35
- package/lib/parsing.js +3 -6
- package/lib/polling.js +11 -15
- package/lib/process.js +11 -19
- package/lib/projectProfiles.d.ts +2 -2
- package/lib/projectProfiles.js +32 -42
- package/lib/projects/ProjectLogsManager.js +18 -21
- package/lib/projects/__tests__/AppDevModeInterface.test.js +140 -145
- package/lib/projects/__tests__/LocalDevProcess.test.js +100 -140
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +201 -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__/localDevHelpers.test.js +117 -0
- package/lib/projects/__tests__/projects.test.js +35 -40
- package/lib/projects/__tests__/structure.test.js +43 -81
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +26 -28
- package/lib/projects/add/__tests__/v3AddComponent.test.js +25 -30
- package/lib/projects/add/legacyAddComponent.d.ts +1 -1
- package/lib/projects/add/legacyAddComponent.js +24 -30
- package/lib/projects/add/v3AddComponent.d.ts +1 -1
- package/lib/projects/add/v3AddComponent.js +37 -42
- package/lib/projects/buildAndDeploy.d.ts +1 -1
- package/lib/projects/buildAndDeploy.js +88 -97
- package/lib/projects/components.js +19 -25
- package/lib/projects/config.d.ts +1 -1
- package/lib/projects/config.js +32 -41
- package/lib/projects/create/__tests__/legacy.test.js +22 -57
- package/lib/projects/create/__tests__/v3.test.js +5 -7
- package/lib/projects/create/index.d.ts +3 -3
- package/lib/projects/create/index.js +19 -22
- package/lib/projects/create/legacy.d.ts +1 -1
- package/lib/projects/create/legacy.js +25 -31
- package/lib/projects/create/v3.d.ts +3 -5
- package/lib/projects/create/v3.js +47 -59
- package/lib/projects/ensureProjectExists.js +31 -37
- package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
- package/lib/projects/localDev/AppDevModeInterface.js +58 -60
- package/lib/projects/localDev/DevServerManager.d.ts +1 -1
- package/lib/projects/localDev/DevServerManager.js +22 -26
- package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
- package/lib/projects/localDev/DevServerManagerV2.js +15 -22
- package/lib/projects/localDev/LocalDevLogger.d.ts +1 -2
- package/lib/projects/localDev/LocalDevLogger.js +66 -66
- package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
- package/lib/projects/localDev/LocalDevManager.js +106 -111
- package/lib/projects/localDev/LocalDevProcess.d.ts +6 -5
- package/lib/projects/localDev/LocalDevProcess.js +37 -50
- package/lib/projects/localDev/LocalDevState.d.ts +5 -7
- package/lib/projects/localDev/LocalDevState.js +9 -11
- package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
- package/lib/projects/localDev/LocalDevWatcher.js +6 -11
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +3 -3
- package/lib/projects/localDev/LocalDevWebsocketServer.js +63 -55
- package/lib/projects/localDev/helpers.d.ts +11 -4
- package/lib/projects/localDev/helpers.js +211 -174
- package/lib/projects/structure.d.ts +3 -3
- package/lib/projects/structure.js +32 -78
- package/lib/projects/ui.js +10 -13
- package/lib/projects/upload.d.ts +1 -1
- package/lib/projects/upload.js +57 -73
- package/lib/projects/urls.d.ts +1 -1
- package/lib/projects/urls.js +15 -25
- package/lib/projects/watch.d.ts +1 -1
- package/lib/projects/watch.js +48 -54
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +9 -11
- package/lib/prompts/__tests__/projectsLogsPrompt.test.js +11 -16
- package/lib/prompts/accountNamePrompt.d.ts +1 -1
- package/lib/prompts/accountNamePrompt.js +26 -31
- package/lib/prompts/accountsPrompt.js +12 -15
- package/lib/prompts/cmsFieldPrompt.js +13 -19
- package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
- package/lib/prompts/createApiSamplePrompt.js +9 -12
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +2 -2
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +27 -31
- 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 +80 -77
- package/lib/prompts/sandboxesPrompt.d.ts +1 -1
- package/lib/prompts/sandboxesPrompt.js +26 -30
- package/lib/prompts/secretPrompt.js +10 -15
- package/lib/prompts/selectAppPrompt.js +11 -14
- package/lib/prompts/selectHubDBTablePrompt.js +24 -30
- package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
- package/lib/prompts/selectProjectTemplatePrompt.js +10 -13
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
- package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
- package/lib/prompts/uploadPrompt.js +11 -17
- package/lib/sandboxSync.d.ts +1 -1
- package/lib/sandboxSync.js +58 -65
- package/lib/sandboxes.d.ts +5 -1
- package/lib/sandboxes.js +72 -76
- package/lib/schema.js +13 -20
- package/lib/serverlessLogs.js +45 -52
- package/lib/testUtils.js +4 -8
- package/lib/ui/SpinniesManager.d.ts +1 -1
- package/lib/ui/SpinniesManager.js +29 -34
- package/lib/ui/boxen.js +11 -14
- package/lib/ui/git.js +14 -20
- package/lib/ui/index.d.ts +6 -0
- package/lib/ui/index.js +56 -76
- package/lib/ui/logger.js +10 -13
- package/lib/ui/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/__tests__/isDeepEqual.test.js +269 -0
- package/lib/utils/hasFlag.js +2 -8
- package/lib/utils/isDeepEqual.d.ts +1 -0
- package/lib/utils/isDeepEqual.js +31 -0
- package/lib/validation.js +48 -87
- package/lib/yargsUtils.d.ts +2 -1
- package/lib/yargsUtils.js +19 -16
- package/mcp-server/server.js +6 -8
- package/mcp-server/tools/index.js +15 -16
- package/mcp-server/tools/project/{AddFeatureToProject.d.ts → AddFeatureToProjectTool.d.ts} +5 -5
- package/mcp-server/tools/project/AddFeatureToProjectTool.js +76 -0
- package/mcp-server/tools/project/CreateProjectTool.d.ts +4 -4
- package/mcp-server/tools/project/CreateProjectTool.js +40 -54
- package/mcp-server/tools/project/{DeployProject.d.ts → DeployProjectTool.d.ts} +2 -2
- package/mcp-server/tools/project/DeployProjectTool.js +49 -0
- package/mcp-server/tools/project/GetConfigValuesTool.d.ts +20 -0
- package/mcp-server/tools/project/GetConfigValuesTool.js +51 -0
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
- package/mcp-server/tools/project/GuidedWalkthroughTool.js +21 -25
- package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
- package/mcp-server/tools/project/UploadProjectTools.js +12 -19
- package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/ValidateProjectTool.js +13 -17
- package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/{AddFeatureToProject.test.js → AddFeatureToProjectTool.test.js} +15 -17
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +12 -15
- package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/{DeployProject.test.js → DeployProjectTool.test.js} +6 -8
- package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +198 -0
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +4 -6
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +4 -6
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +4 -6
- package/mcp-server/tools/project/constants.d.ts +1 -0
- package/mcp-server/tools/project/constants.js +14 -9
- package/mcp-server/types.js +1 -5
- package/mcp-server/utils/__tests__/command.test.js +9 -11
- package/mcp-server/utils/__tests__/project.test.js +12 -17
- package/mcp-server/utils/command.d.ts +1 -1
- package/mcp-server/utils/command.js +4 -11
- package/mcp-server/utils/content.d.ts +1 -1
- package/mcp-server/utils/content.js +2 -6
- package/mcp-server/utils/project.js +8 -14
- package/mcp-server/utils/toolUsageTracking.js +11 -14
- package/package.json +22 -15
- package/types/Cms.d.ts +1 -1
- package/types/Cms.js +1 -2
- package/types/LocalDev.d.ts +4 -6
- package/types/LocalDev.js +1 -2
- package/types/ProjectComponents.d.ts +2 -2
- package/types/ProjectComponents.js +1 -2
- package/types/Projects.d.ts +1 -1
- package/types/Projects.js +2 -5
- package/types/Prompts.js +1 -2
- package/types/Sandboxes.js +1 -2
- package/types/Yargs.js +1 -2
- package/ui/index.d.ts +1 -0
- package/ui/index.js +6 -0
- package/mcp-server/tools/project/AddFeatureToProject.js +0 -88
- package/mcp-server/tools/project/DeployProject.js +0 -53
- /package/{mcp-server/tools/project/__tests__/AddFeatureToProject.test.d.ts → lib/projects/__tests__/localDevHelpers.test.d.ts} +0 -0
- /package/{mcp-server/tools/project/__tests__/DeployProject.test.d.ts → lib/utils/__tests__/isDeepEqual.test.d.ts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types';
|
|
2
|
-
import LocalDevState from './LocalDevState';
|
|
3
|
-
import LocalDevLogger from './LocalDevLogger';
|
|
4
|
-
import { LocalDevStateConstructorOptions, LocalDevStateListener, LocalDevServerMessage } from '../../../types/LocalDev';
|
|
1
|
+
import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
|
|
2
|
+
import LocalDevState from './LocalDevState.js';
|
|
3
|
+
import LocalDevLogger from './LocalDevLogger.js';
|
|
4
|
+
import { LocalDevStateConstructorOptions, LocalDevStateListener, LocalDevServerMessage } from '../../../types/LocalDev.js';
|
|
5
5
|
declare class LocalDevProcess {
|
|
6
6
|
private state;
|
|
7
7
|
private _logger;
|
|
@@ -19,11 +19,11 @@ declare class LocalDevProcess {
|
|
|
19
19
|
private setupDevServers;
|
|
20
20
|
private startDevServers;
|
|
21
21
|
private cleanupDevServers;
|
|
22
|
-
private compareLocalProjectToDeployed;
|
|
23
22
|
private projectConfigValidForUpload;
|
|
24
23
|
private getIntermediateRepresentation;
|
|
25
24
|
private updateProjectNodes;
|
|
26
25
|
private updateProjectNodesAfterUpload;
|
|
26
|
+
private openLocalDevUi;
|
|
27
27
|
handleFileChange(filePath: string, event: string): Promise<void>;
|
|
28
28
|
handleConfigFileChange(): Promise<void>;
|
|
29
29
|
start(): Promise<void>;
|
|
@@ -31,5 +31,6 @@ declare class LocalDevProcess {
|
|
|
31
31
|
uploadProject(): Promise<boolean>;
|
|
32
32
|
addStateListener<K extends keyof LocalDevState>(key: K, listener: LocalDevStateListener<K>, callOnInit?: boolean): void;
|
|
33
33
|
sendDevServerMessage(message: LocalDevServerMessage): void;
|
|
34
|
+
removeStateListener<K extends keyof LocalDevState>(key: K, listener: LocalDevStateListener<K>): void;
|
|
34
35
|
}
|
|
35
36
|
export default LocalDevProcess;
|
|
@@ -1,26 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const buildAndDeploy_1 = require("../buildAndDeploy");
|
|
1
|
+
import { translateForLocalDev } from '@hubspot/project-parsing-lib';
|
|
2
|
+
import { hasLocalStateFlag } from '@hubspot/local-dev-lib/config';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import open from 'open';
|
|
5
|
+
import LocalDevState from './LocalDevState.js';
|
|
6
|
+
import LocalDevLogger from './LocalDevLogger.js';
|
|
7
|
+
import DevServerManagerV2 from './DevServerManagerV2.js';
|
|
8
|
+
import { EXIT_CODES } from '../../enums/exitCodes.js';
|
|
9
|
+
import { getProjectConfig } from '../config.js';
|
|
10
|
+
import { handleProjectUpload } from '../upload.js';
|
|
11
|
+
import { pollProjectBuildAndDeploy } from '../buildAndDeploy.js';
|
|
12
|
+
import { getLocalDevUiUrl } from '../urls.js';
|
|
13
|
+
import { CONFIG_LOCAL_STATE_FLAGS } from '../../constants.js';
|
|
14
|
+
import { isAutoOpenBrowserEnabled } from '../../configOptions.js';
|
|
16
15
|
class LocalDevProcess {
|
|
17
16
|
state;
|
|
18
17
|
_logger;
|
|
19
18
|
devServerManager;
|
|
20
19
|
constructor(options) {
|
|
21
|
-
this.state = new
|
|
22
|
-
this._logger = new
|
|
23
|
-
this.devServerManager = new
|
|
20
|
+
this.state = new LocalDevState(options);
|
|
21
|
+
this._logger = new LocalDevLogger(this.state);
|
|
22
|
+
this.devServerManager = new DevServerManagerV2({
|
|
24
23
|
localDevState: this.state,
|
|
25
24
|
logger: this._logger,
|
|
26
25
|
});
|
|
@@ -62,7 +61,7 @@ class LocalDevProcess {
|
|
|
62
61
|
}
|
|
63
62
|
catch (e) {
|
|
64
63
|
this.logger.devServerStartError(e);
|
|
65
|
-
process.exit(
|
|
64
|
+
process.exit(EXIT_CODES.ERROR);
|
|
66
65
|
}
|
|
67
66
|
}
|
|
68
67
|
async cleanupDevServers() {
|
|
@@ -75,22 +74,8 @@ class LocalDevProcess {
|
|
|
75
74
|
return false;
|
|
76
75
|
}
|
|
77
76
|
}
|
|
78
|
-
compareLocalProjectToDeployed() {
|
|
79
|
-
const deployedComponentNames = this.state.deployedBuild.subbuildStatuses.map(subbuildStatus => subbuildStatus.buildName);
|
|
80
|
-
const missingProjectNodes = [];
|
|
81
|
-
Object.values(this.projectNodes).forEach(node => {
|
|
82
|
-
if (!deployedComponentNames.includes(node.uid)) {
|
|
83
|
-
const userFriendlyName = (0, transform_1.mapToUserFriendlyName)(node.componentType);
|
|
84
|
-
const label = userFriendlyName ? `[${userFriendlyName}] ` : '';
|
|
85
|
-
missingProjectNodes.push(`${label}${node.uid}`);
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
if (missingProjectNodes.length) {
|
|
89
|
-
this.logger.missingComponentsWarning(missingProjectNodes);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
77
|
async projectConfigValidForUpload() {
|
|
93
|
-
const { projectConfig } = await
|
|
78
|
+
const { projectConfig } = await getProjectConfig();
|
|
94
79
|
if (!projectConfig) {
|
|
95
80
|
return false;
|
|
96
81
|
}
|
|
@@ -103,8 +88,8 @@ class LocalDevProcess {
|
|
|
103
88
|
return true;
|
|
104
89
|
}
|
|
105
90
|
getIntermediateRepresentation(projectNodesAtLastUpload) {
|
|
106
|
-
return
|
|
107
|
-
projectSourceDir:
|
|
91
|
+
return translateForLocalDev({
|
|
92
|
+
projectSourceDir: path.join(this.state.projectDir, this.state.projectConfig.srcDir),
|
|
108
93
|
platformVersion: this.state.projectConfig.platformVersion,
|
|
109
94
|
accountId: this.state.targetProjectAccountId,
|
|
110
95
|
}, {
|
|
@@ -124,6 +109,10 @@ class LocalDevProcess {
|
|
|
124
109
|
this.state.projectNodesAtLastUpload =
|
|
125
110
|
intermediateRepresentation.intermediateNodesIndexedByUid;
|
|
126
111
|
}
|
|
112
|
+
openLocalDevUi() {
|
|
113
|
+
const showWelcomeScreen = !hasLocalStateFlag(CONFIG_LOCAL_STATE_FLAGS.LOCAL_DEV_UI_WELCOME);
|
|
114
|
+
open(getLocalDevUiUrl(this.state.targetTestingAccountId, showWelcomeScreen));
|
|
115
|
+
}
|
|
127
116
|
async handleFileChange(filePath, event) {
|
|
128
117
|
await this.updateProjectNodes();
|
|
129
118
|
try {
|
|
@@ -139,21 +128,16 @@ class LocalDevProcess {
|
|
|
139
128
|
}
|
|
140
129
|
async start() {
|
|
141
130
|
this.logger.resetSpinnies();
|
|
142
|
-
// Local dev currently relies on the existence of a deployed build in the target account
|
|
143
|
-
if (!this.state.deployedBuild) {
|
|
144
|
-
this.logger.noDeployedBuild();
|
|
145
|
-
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
146
|
-
}
|
|
147
131
|
const setupSucceeded = await this.setupDevServers();
|
|
148
132
|
if (!setupSucceeded) {
|
|
149
|
-
process.exit(
|
|
133
|
+
process.exit(EXIT_CODES.ERROR);
|
|
150
134
|
}
|
|
151
135
|
this.logger.startupMessage();
|
|
136
|
+
if (isAutoOpenBrowserEnabled()) {
|
|
137
|
+
this.openLocalDevUi();
|
|
138
|
+
}
|
|
152
139
|
await this.startDevServers();
|
|
153
140
|
this.logger.monitorConsoleOutput();
|
|
154
|
-
// Verify that there are no mismatches between components in the local project
|
|
155
|
-
// and components in the deployed build of the project.
|
|
156
|
-
this.compareLocalProjectToDeployed();
|
|
157
141
|
}
|
|
158
142
|
async stop(showProgress = true) {
|
|
159
143
|
if (showProgress) {
|
|
@@ -164,12 +148,12 @@ class LocalDevProcess {
|
|
|
164
148
|
if (showProgress) {
|
|
165
149
|
this.logger.cleanupError();
|
|
166
150
|
}
|
|
167
|
-
process.exit(
|
|
151
|
+
process.exit(EXIT_CODES.ERROR);
|
|
168
152
|
}
|
|
169
153
|
if (showProgress) {
|
|
170
154
|
this.logger.cleanupSuccess();
|
|
171
155
|
}
|
|
172
|
-
process.exit(
|
|
156
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
173
157
|
}
|
|
174
158
|
async uploadProject() {
|
|
175
159
|
this.logger.uploadInitiated();
|
|
@@ -178,11 +162,11 @@ class LocalDevProcess {
|
|
|
178
162
|
this.logger.projectConfigMismatch();
|
|
179
163
|
return false;
|
|
180
164
|
}
|
|
181
|
-
const { uploadError } = await
|
|
165
|
+
const { uploadError } = await handleProjectUpload({
|
|
182
166
|
accountId: this.state.targetProjectAccountId,
|
|
183
167
|
projectConfig: this.state.projectConfig,
|
|
184
168
|
projectDir: this.state.projectDir,
|
|
185
|
-
callbackFunc:
|
|
169
|
+
callbackFunc: pollProjectBuildAndDeploy,
|
|
186
170
|
sendIR: true,
|
|
187
171
|
skipValidation: true,
|
|
188
172
|
});
|
|
@@ -201,5 +185,8 @@ class LocalDevProcess {
|
|
|
201
185
|
sendDevServerMessage(message) {
|
|
202
186
|
this.state.devServerMessage = message;
|
|
203
187
|
}
|
|
188
|
+
removeStateListener(key, listener) {
|
|
189
|
+
this.state.removeListener(key, listener);
|
|
190
|
+
}
|
|
204
191
|
}
|
|
205
|
-
|
|
192
|
+
export default LocalDevProcess;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types';
|
|
1
|
+
import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
|
|
3
2
|
import { Environment } from '@hubspot/local-dev-lib/types/Config';
|
|
4
|
-
import { ProjectConfig } from '../../../types/Projects';
|
|
5
|
-
import { LocalDevStateConstructorOptions, LocalDevStateListener, AppLocalDevData, LocalDevServerMessage } from '../../../types/LocalDev';
|
|
3
|
+
import { ProjectConfig } from '../../../types/Projects.js';
|
|
4
|
+
import { LocalDevStateConstructorOptions, LocalDevStateListener, AppLocalDevData, LocalDevServerMessage } from '../../../types/LocalDev.js';
|
|
6
5
|
declare class LocalDevState {
|
|
7
6
|
private _targetProjectAccountId;
|
|
8
7
|
private _targetTestingAccountId;
|
|
@@ -12,7 +11,6 @@ declare class LocalDevState {
|
|
|
12
11
|
private _projectId;
|
|
13
12
|
private _projectName;
|
|
14
13
|
private _debug;
|
|
15
|
-
private _deployedBuild?;
|
|
16
14
|
private _isGithubLinked;
|
|
17
15
|
private _projectNodes;
|
|
18
16
|
private _projectNodesAtLastUpload;
|
|
@@ -20,7 +18,7 @@ declare class LocalDevState {
|
|
|
20
18
|
private _listeners;
|
|
21
19
|
private _appData;
|
|
22
20
|
private _devServerMessage;
|
|
23
|
-
constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectId, projectName, debug,
|
|
21
|
+
constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectId, projectName, debug, isGithubLinked, initialProjectNodes, profile, env, }: LocalDevStateConstructorOptions);
|
|
24
22
|
private runListeners;
|
|
25
23
|
get targetProjectAccountId(): number;
|
|
26
24
|
get targetTestingAccountId(): number;
|
|
@@ -30,7 +28,6 @@ declare class LocalDevState {
|
|
|
30
28
|
get projectId(): number;
|
|
31
29
|
get projectName(): string;
|
|
32
30
|
get debug(): boolean;
|
|
33
|
-
get deployedBuild(): Build | undefined;
|
|
34
31
|
get isGithubLinked(): boolean;
|
|
35
32
|
get projectNodes(): {
|
|
36
33
|
[key: string]: IntermediateRepresentationNodeLocalDev;
|
|
@@ -51,5 +48,6 @@ declare class LocalDevState {
|
|
|
51
48
|
get devServerMessage(): string;
|
|
52
49
|
set devServerMessage(message: LocalDevServerMessage);
|
|
53
50
|
addListener<K extends keyof LocalDevState>(key: K, listener: LocalDevStateListener<K>, callOnInit?: boolean): void;
|
|
51
|
+
removeListener<K extends keyof LocalDevState>(key: K, listener: LocalDevStateListener<K>): void;
|
|
54
52
|
}
|
|
55
53
|
export default LocalDevState;
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const constants_1 = require("../../constants");
|
|
1
|
+
import { LOCAL_DEV_SERVER_MESSAGE_TYPES } from '../../constants.js';
|
|
4
2
|
class LocalDevState {
|
|
5
3
|
_targetProjectAccountId;
|
|
6
4
|
_targetTestingAccountId;
|
|
@@ -10,7 +8,6 @@ class LocalDevState {
|
|
|
10
8
|
_projectId;
|
|
11
9
|
_projectName;
|
|
12
10
|
_debug;
|
|
13
|
-
_deployedBuild;
|
|
14
11
|
_isGithubLinked;
|
|
15
12
|
_projectNodes;
|
|
16
13
|
_projectNodesAtLastUpload;
|
|
@@ -18,7 +15,7 @@ class LocalDevState {
|
|
|
18
15
|
_listeners;
|
|
19
16
|
_appData;
|
|
20
17
|
_devServerMessage;
|
|
21
|
-
constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectId, projectName, debug,
|
|
18
|
+
constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectId, projectName, debug, isGithubLinked, initialProjectNodes, profile, env, }) {
|
|
22
19
|
this._targetProjectAccountId = targetProjectAccountId;
|
|
23
20
|
this._targetTestingAccountId = targetTestingAccountId;
|
|
24
21
|
this._profile = profile;
|
|
@@ -27,13 +24,12 @@ class LocalDevState {
|
|
|
27
24
|
this._projectId = projectId;
|
|
28
25
|
this._projectName = projectName;
|
|
29
26
|
this._debug = debug || false;
|
|
30
|
-
this._deployedBuild = deployedBuild;
|
|
31
27
|
this._isGithubLinked = isGithubLinked;
|
|
32
28
|
this._projectNodes = initialProjectNodes;
|
|
33
29
|
this._projectNodesAtLastUpload = initialProjectNodes;
|
|
34
30
|
this._env = env;
|
|
35
31
|
this._appData = {};
|
|
36
|
-
this._devServerMessage =
|
|
32
|
+
this._devServerMessage = LOCAL_DEV_SERVER_MESSAGE_TYPES.INITIAL;
|
|
37
33
|
this._listeners = {};
|
|
38
34
|
}
|
|
39
35
|
runListeners(key) {
|
|
@@ -65,9 +61,6 @@ class LocalDevState {
|
|
|
65
61
|
get debug() {
|
|
66
62
|
return this._debug;
|
|
67
63
|
}
|
|
68
|
-
get deployedBuild() {
|
|
69
|
-
return this._deployedBuild && structuredClone(this._deployedBuild);
|
|
70
|
-
}
|
|
71
64
|
get isGithubLinked() {
|
|
72
65
|
return this._isGithubLinked;
|
|
73
66
|
}
|
|
@@ -113,5 +106,10 @@ class LocalDevState {
|
|
|
113
106
|
listener(this[key]);
|
|
114
107
|
}
|
|
115
108
|
}
|
|
109
|
+
removeListener(key, listener) {
|
|
110
|
+
if (this._listeners[key]) {
|
|
111
|
+
this._listeners[key].splice(this._listeners[key].indexOf(listener), 1);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
116
114
|
}
|
|
117
|
-
|
|
115
|
+
export default LocalDevState;
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const path_1 = __importDefault(require("path"));
|
|
7
|
-
const chokidar_1 = __importDefault(require("chokidar"));
|
|
8
|
-
const constants_1 = require("../../constants");
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import chokidar from 'chokidar';
|
|
3
|
+
import { PROJECT_CONFIG_FILE } from '../../constants.js';
|
|
9
4
|
const WATCH_EVENTS = {
|
|
10
5
|
add: 'add',
|
|
11
6
|
change: 'change',
|
|
@@ -26,12 +21,12 @@ class LocalDevWatcher {
|
|
|
26
21
|
return this.localDevProcess.handleFileChange(filePath, event);
|
|
27
22
|
}
|
|
28
23
|
start() {
|
|
29
|
-
this.watcher =
|
|
24
|
+
this.watcher = chokidar.watch(this.localDevProcess.projectDir, {
|
|
30
25
|
ignoreInitial: true,
|
|
31
26
|
ignored: ['**/dist'],
|
|
32
27
|
});
|
|
33
28
|
const configPaths = Object.values(this.localDevProcess.projectNodes).map(component => component.localDev.componentConfigPath);
|
|
34
|
-
const projectConfigPath =
|
|
29
|
+
const projectConfigPath = path.join(this.localDevProcess.projectDir, PROJECT_CONFIG_FILE);
|
|
35
30
|
configPaths.push(projectConfigPath);
|
|
36
31
|
this.watcher.on('add', filePath => {
|
|
37
32
|
this.handleWatchEvent(filePath, WATCH_EVENTS.add, configPaths);
|
|
@@ -50,4 +45,4 @@ class LocalDevWatcher {
|
|
|
50
45
|
await this.watcher?.close();
|
|
51
46
|
}
|
|
52
47
|
}
|
|
53
|
-
|
|
48
|
+
export default LocalDevWatcher;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import LocalDevProcess from './LocalDevProcess';
|
|
1
|
+
import LocalDevProcess from './LocalDevProcess.js';
|
|
2
2
|
declare class LocalDevWebsocketServer {
|
|
3
3
|
private server?;
|
|
4
|
-
private _websocket?;
|
|
5
4
|
private debug?;
|
|
6
5
|
private localDevProcess;
|
|
7
6
|
private ALLOWED_ORIGINS;
|
|
8
7
|
constructor(localDevProcess: LocalDevProcess, debug?: boolean);
|
|
9
|
-
private websocket;
|
|
10
8
|
private log;
|
|
11
9
|
private logError;
|
|
12
10
|
private sendMessage;
|
|
13
11
|
private handleUpload;
|
|
14
12
|
private setupMessageHandlers;
|
|
15
13
|
private sendProjectData;
|
|
14
|
+
private setupProjectNodesListener;
|
|
15
|
+
private setupAppDataListener;
|
|
16
16
|
private setupStateListeners;
|
|
17
17
|
start(): Promise<void>;
|
|
18
18
|
shutdown(): void;
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const en_1 = require("../../../lang/en");
|
|
1
|
+
import { WebSocketServer } from 'ws';
|
|
2
|
+
import { isPortManagerServerRunning, requestPorts, } from '@hubspot/local-dev-lib/portManager';
|
|
3
|
+
import { logger } from '@hubspot/local-dev-lib/logger';
|
|
4
|
+
import { addLocalStateFlag } from '@hubspot/local-dev-lib/config';
|
|
5
|
+
import { LOCAL_DEV_UI_MESSAGE_SEND_TYPES, LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES, LOCAL_DEV_SERVER_MESSAGE_TYPES, CONFIG_LOCAL_STATE_FLAGS, } from '../../constants.js';
|
|
6
|
+
import { lib } from '../../../lang/en.js';
|
|
8
7
|
const SERVER_INSTANCE_ID = 'local-dev-ui-websocket-server';
|
|
9
8
|
const LOG_PREFIX = '[LocalDevWebsocketServer]';
|
|
10
9
|
class LocalDevWebsocketServer {
|
|
11
10
|
server;
|
|
12
|
-
_websocket;
|
|
13
11
|
debug;
|
|
14
12
|
localDevProcess;
|
|
15
13
|
ALLOWED_ORIGINS = [
|
|
@@ -22,62 +20,59 @@ class LocalDevWebsocketServer {
|
|
|
22
20
|
this.localDevProcess = localDevProcess;
|
|
23
21
|
this.debug = debug;
|
|
24
22
|
}
|
|
25
|
-
websocket() {
|
|
26
|
-
if (!this._websocket) {
|
|
27
|
-
throw new Error(en_1.lib.LocalDevWebsocketServer.errors.notInitialized(LOG_PREFIX));
|
|
28
|
-
}
|
|
29
|
-
return this._websocket;
|
|
30
|
-
}
|
|
31
23
|
log(message) {
|
|
32
24
|
if (this.debug) {
|
|
33
|
-
|
|
25
|
+
logger.log(LOG_PREFIX, message);
|
|
34
26
|
}
|
|
35
27
|
}
|
|
36
28
|
logError(message) {
|
|
37
29
|
if (this.debug) {
|
|
38
|
-
|
|
30
|
+
logger.error(LOG_PREFIX, message);
|
|
39
31
|
}
|
|
40
32
|
}
|
|
41
|
-
sendMessage(message) {
|
|
42
|
-
|
|
33
|
+
sendMessage(websocket, message) {
|
|
34
|
+
websocket.send(JSON.stringify(message));
|
|
43
35
|
}
|
|
44
|
-
async handleUpload() {
|
|
36
|
+
async handleUpload(websocket) {
|
|
45
37
|
const uploadSuccess = await this.localDevProcess.uploadProject();
|
|
46
38
|
if (uploadSuccess) {
|
|
47
|
-
this.sendMessage({
|
|
48
|
-
type:
|
|
39
|
+
this.sendMessage(websocket, {
|
|
40
|
+
type: LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPLOAD_SUCCESS,
|
|
49
41
|
});
|
|
50
42
|
}
|
|
51
43
|
else {
|
|
52
|
-
this.sendMessage({
|
|
53
|
-
type:
|
|
44
|
+
this.sendMessage(websocket, {
|
|
45
|
+
type: LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPLOAD_FAILURE,
|
|
54
46
|
});
|
|
55
47
|
}
|
|
56
48
|
}
|
|
57
|
-
setupMessageHandlers() {
|
|
58
|
-
|
|
49
|
+
setupMessageHandlers(websocket) {
|
|
50
|
+
websocket.on('message', data => {
|
|
59
51
|
try {
|
|
60
52
|
const message = JSON.parse(data.toString());
|
|
61
53
|
if (!message.type) {
|
|
62
|
-
this.logError(
|
|
54
|
+
this.logError(lib.LocalDevWebsocketServer.errors.missingTypeField(data.toString()));
|
|
63
55
|
return;
|
|
64
56
|
}
|
|
65
57
|
switch (message.type) {
|
|
66
|
-
case
|
|
67
|
-
this.handleUpload();
|
|
58
|
+
case LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.UPLOAD:
|
|
59
|
+
this.handleUpload(websocket);
|
|
60
|
+
break;
|
|
61
|
+
case LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.VIEWED_WELCOME_SCREEN:
|
|
62
|
+
addLocalStateFlag(CONFIG_LOCAL_STATE_FLAGS.LOCAL_DEV_UI_WELCOME);
|
|
68
63
|
break;
|
|
69
64
|
default:
|
|
70
|
-
this.logError(
|
|
65
|
+
this.logError(lib.LocalDevWebsocketServer.errors.unknownMessageType(message.type));
|
|
71
66
|
}
|
|
72
67
|
}
|
|
73
68
|
catch (e) {
|
|
74
|
-
this.logError(
|
|
69
|
+
this.logError(lib.LocalDevWebsocketServer.errors.invalidJSON(data.toString()));
|
|
75
70
|
}
|
|
76
71
|
});
|
|
77
72
|
}
|
|
78
|
-
sendProjectData() {
|
|
79
|
-
this.sendMessage({
|
|
80
|
-
type:
|
|
73
|
+
sendProjectData(websocket) {
|
|
74
|
+
this.sendMessage(websocket, {
|
|
75
|
+
type: LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPDATE_PROJECT_DATA,
|
|
81
76
|
data: {
|
|
82
77
|
projectName: this.localDevProcess.projectName,
|
|
83
78
|
projectId: this.localDevProcess.projectId,
|
|
@@ -86,46 +81,59 @@ class LocalDevWebsocketServer {
|
|
|
86
81
|
},
|
|
87
82
|
});
|
|
88
83
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
this.sendMessage({
|
|
92
|
-
type:
|
|
84
|
+
setupProjectNodesListener(websocket) {
|
|
85
|
+
const listener = (nodes) => {
|
|
86
|
+
this.sendMessage(websocket, {
|
|
87
|
+
type: LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPDATE_PROJECT_NODES,
|
|
93
88
|
data: nodes,
|
|
94
89
|
});
|
|
95
|
-
}
|
|
96
|
-
this.localDevProcess.addStateListener('
|
|
97
|
-
|
|
98
|
-
|
|
90
|
+
};
|
|
91
|
+
this.localDevProcess.addStateListener('projectNodes', listener, true);
|
|
92
|
+
websocket.on('close', () => {
|
|
93
|
+
this.localDevProcess.removeStateListener('projectNodes', listener);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
setupAppDataListener(websocket) {
|
|
97
|
+
const listener = (appData) => {
|
|
98
|
+
this.sendMessage(websocket, {
|
|
99
|
+
type: LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPDATE_APP_DATA,
|
|
99
100
|
data: appData,
|
|
100
101
|
});
|
|
101
|
-
}
|
|
102
|
+
};
|
|
103
|
+
this.localDevProcess.addStateListener('appData', listener, true);
|
|
104
|
+
websocket.on('close', () => {
|
|
105
|
+
this.localDevProcess.removeStateListener('appData', listener);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
setupStateListeners(websocket) {
|
|
109
|
+
this.setupProjectNodesListener(websocket);
|
|
110
|
+
this.setupAppDataListener(websocket);
|
|
102
111
|
}
|
|
103
112
|
async start() {
|
|
104
|
-
const portManagerIsRunning = await
|
|
113
|
+
const portManagerIsRunning = await isPortManagerServerRunning();
|
|
105
114
|
if (!portManagerIsRunning) {
|
|
106
|
-
throw new Error(
|
|
115
|
+
throw new Error(lib.LocalDevWebsocketServer.errors.portManagerNotRunning(LOG_PREFIX));
|
|
107
116
|
}
|
|
108
|
-
const portData = await
|
|
117
|
+
const portData = await requestPorts([{ instanceId: SERVER_INSTANCE_ID }]);
|
|
109
118
|
const port = portData[SERVER_INSTANCE_ID];
|
|
110
|
-
this.server = new
|
|
111
|
-
this.log(
|
|
119
|
+
this.server = new WebSocketServer({ port });
|
|
120
|
+
this.log(lib.LocalDevWebsocketServer.logs.startup(port));
|
|
112
121
|
this.server.on('connection', (ws, req) => {
|
|
113
122
|
const origin = req.headers.origin;
|
|
114
123
|
if (!origin || !this.ALLOWED_ORIGINS.includes(origin)) {
|
|
115
|
-
ws.close(1008,
|
|
124
|
+
ws.close(1008, lib.LocalDevWebsocketServer.errors.originNotAllowed(origin));
|
|
116
125
|
return;
|
|
117
126
|
}
|
|
118
|
-
this.
|
|
119
|
-
this.
|
|
120
|
-
this.
|
|
121
|
-
this.
|
|
122
|
-
this.localDevProcess.sendDevServerMessage(constants_1.LOCAL_DEV_SERVER_MESSAGE_TYPES.WEBSOCKET_SERVER_CONNECTED);
|
|
127
|
+
this.sendProjectData(ws);
|
|
128
|
+
this.setupMessageHandlers(ws);
|
|
129
|
+
this.setupStateListeners(ws);
|
|
130
|
+
this.localDevProcess.sendDevServerMessage(LOCAL_DEV_SERVER_MESSAGE_TYPES.WEBSOCKET_SERVER_CONNECTED);
|
|
123
131
|
});
|
|
132
|
+
this.server.on('close', () => { });
|
|
124
133
|
}
|
|
125
134
|
shutdown() {
|
|
126
135
|
this.server?.close();
|
|
127
136
|
this.server = undefined;
|
|
128
|
-
this._websocket = undefined;
|
|
129
137
|
}
|
|
130
138
|
}
|
|
131
|
-
|
|
139
|
+
export default LocalDevWebsocketServer;
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import { CLIAccount } from '@hubspot/local-dev-lib/types/Accounts';
|
|
2
2
|
import { Environment } from '@hubspot/local-dev-lib/types/Config';
|
|
3
|
-
import { DeveloperTestAccount } from '@hubspot/local-dev-lib/types/developerTestAccounts';
|
|
3
|
+
import { DeveloperTestAccount } from '@hubspot/local-dev-lib/types/developerTestAccounts.js';
|
|
4
4
|
import { Project } from '@hubspot/local-dev-lib/types/Project';
|
|
5
5
|
import { Build } from '@hubspot/local-dev-lib/types/Build';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
|
|
7
|
+
import { ProjectConfig } from '../../../types/Projects.js';
|
|
8
|
+
import { ProjectDevTargetAccountPromptResponse } from '../../prompts/projectDevTargetAccountPrompt.js';
|
|
8
9
|
export declare function confirmDefaultAccountIsTarget(accountConfig: CLIAccount): Promise<void>;
|
|
9
10
|
export declare function checkIfDefaultAccountIsSupported(accountConfig: CLIAccount, hasPublicApps: boolean): Promise<void>;
|
|
10
11
|
export declare function checkIfParentAccountIsAuthed(accountConfig: CLIAccount): void;
|
|
11
12
|
export declare function checkIfAccountFlagIsSupported(accountConfig: CLIAccount, hasPublicApps: boolean): void;
|
|
12
13
|
export declare function suggestRecommendedNestedAccount(accounts: CLIAccount[], accountConfig: CLIAccount, hasPublicApps: boolean): Promise<ProjectDevTargetAccountPromptResponse>;
|
|
13
14
|
export declare function createSandboxForLocalDev(accountId: number, accountConfig: CLIAccount, env: Environment): Promise<number>;
|
|
14
|
-
export declare function createDeveloperTestAccountForLocalDev(accountId: number, accountConfig: CLIAccount, env: Environment): Promise<number>;
|
|
15
|
+
export declare function createDeveloperTestAccountForLocalDev(accountId: number, accountConfig: CLIAccount, env: Environment, useV3?: boolean): Promise<number>;
|
|
15
16
|
export declare function useExistingDevTestAccount(env: Environment, account: DeveloperTestAccount): Promise<void>;
|
|
16
17
|
export declare function createNewProjectForLocalDev(projectConfig: ProjectConfig, targetAccountId: number, shouldCreateWithoutConfirmation: boolean, hasPublicApps: boolean): Promise<Project>;
|
|
17
18
|
export declare function createInitialBuildForNewProject(projectConfig: ProjectConfig, projectDir: string, targetAccountId: number, sendIR?: boolean, profile?: string): Promise<Build>;
|
|
18
19
|
export declare function getAccountHomeUrl(accountId: number): string;
|
|
19
20
|
export declare function hasSandboxes(account: CLIAccount): Promise<boolean>;
|
|
20
21
|
export declare function selectAccountTypePrompt(accountConfig: CLIAccount): Promise<string | null>;
|
|
22
|
+
export declare function compareLocalProjectToDeployed(projectConfig: ProjectConfig, accountId: number, deployedBuildId: number | undefined, localProjectNodes: {
|
|
23
|
+
[key: string]: IntermediateRepresentationNodeLocalDev;
|
|
24
|
+
}): Promise<void>;
|
|
25
|
+
export declare function isDeployedProjectUpToDateWithLocal(projectConfig: ProjectConfig, accountId: number, deployedBuildId: number, localProjectNodes: {
|
|
26
|
+
[key: string]: IntermediateRepresentationNodeLocalDev;
|
|
27
|
+
}): Promise<boolean>;
|