@hubspot/cli 7.7.21-experimental.1 → 7.7.22-experimental.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/__tests__/migrate.test.js +27 -29
- package/api/migrate.js +14 -22
- package/bin/cli.js +92 -97
- package/bin/hs +2 -2
- package/bin/hscms +2 -2
- package/bin/silenceErrors.js +1 -2
- package/commands/__tests__/account.test.js +29 -34
- package/commands/__tests__/auth.test.js +11 -16
- package/commands/__tests__/cms.test.js +15 -20
- package/commands/__tests__/config.test.js +14 -19
- package/commands/__tests__/create.test.js +10 -15
- package/commands/__tests__/customObject.test.js +14 -19
- package/commands/__tests__/doctor.test.js +43 -48
- package/commands/__tests__/feedback.test.js +7 -45
- package/commands/__tests__/fetch.test.js +29 -28
- package/commands/__tests__/filemanager.test.js +14 -19
- package/commands/__tests__/function.test.js +16 -21
- package/commands/__tests__/getStarted.test.js +45 -50
- package/commands/__tests__/hubdb.test.js +17 -22
- package/commands/__tests__/init.test.js +12 -17
- package/commands/__tests__/lint.test.js +13 -18
- package/commands/__tests__/list.test.js +18 -23
- package/commands/__tests__/logs.test.js +28 -27
- package/commands/__tests__/mcp.test.js +14 -19
- package/commands/__tests__/mv.test.js +14 -52
- package/commands/__tests__/open.test.js +13 -51
- package/commands/__tests__/project.test.js +44 -49
- package/commands/__tests__/remove.test.js +13 -51
- package/commands/__tests__/sandbox.test.js +14 -19
- package/commands/__tests__/secret.test.js +16 -21
- package/commands/__tests__/testAccount.test.js +16 -21
- package/commands/__tests__/theme.test.js +15 -20
- package/commands/account/__tests__/auth.test.js +11 -16
- package/commands/account/__tests__/clean.test.js +12 -17
- package/commands/account/__tests__/createOverride.test.js +10 -15
- package/commands/account/__tests__/info.test.js +11 -16
- package/commands/account/__tests__/list.test.js +11 -16
- package/commands/account/__tests__/remove.test.js +13 -18
- package/commands/account/__tests__/removeOverride.js +8 -13
- package/commands/account/__tests__/rename.test.js +15 -20
- package/commands/account/__tests__/use.test.js +10 -15
- package/commands/account/auth.d.ts +1 -1
- package/commands/account/auth.js +65 -67
- package/commands/account/clean.d.ts +1 -1
- package/commands/account/clean.js +55 -60
- package/commands/account/createOverride.d.ts +1 -1
- package/commands/account/createOverride.js +52 -57
- package/commands/account/info.d.ts +1 -1
- package/commands/account/info.js +33 -35
- package/commands/account/list.d.ts +1 -1
- package/commands/account/list.js +43 -45
- package/commands/account/remove.d.ts +1 -1
- package/commands/account/remove.js +37 -42
- package/commands/account/removeOverride.d.ts +1 -1
- package/commands/account/removeOverride.js +38 -43
- package/commands/account/rename.d.ts +1 -1
- package/commands/account/rename.js +18 -20
- package/commands/account/use.d.ts +1 -1
- package/commands/account/use.js +29 -31
- package/commands/account.d.ts +1 -1
- package/commands/account.js +23 -28
- package/commands/app/__tests__/migrate.test.js +29 -34
- package/commands/app/migrate.d.ts +2 -2
- package/commands/app/migrate.js +40 -43
- package/commands/app/secret/__tests__/add.test.js +6 -11
- package/commands/app/secret/__tests__/delete.test.js +6 -11
- package/commands/app/secret/__tests__/list.test.js +6 -11
- package/commands/app/secret/__tests__/update.test.js +6 -11
- package/commands/app/secret/add.d.ts +1 -1
- package/commands/app/secret/add.js +28 -30
- package/commands/app/secret/delete.d.ts +1 -1
- package/commands/app/secret/delete.js +34 -36
- package/commands/app/secret/list.d.ts +1 -1
- package/commands/app/secret/list.js +25 -27
- package/commands/app/secret/update.d.ts +1 -1
- package/commands/app/secret/update.js +32 -34
- package/commands/app/secret.d.ts +1 -1
- package/commands/app/secret.js +12 -17
- package/commands/app.d.ts +1 -1
- package/commands/app.js +6 -16
- package/commands/auth.d.ts +1 -1
- package/commands/auth.js +70 -72
- package/commands/cms/convertFields.d.ts +1 -1
- package/commands/cms/convertFields.js +34 -39
- package/commands/cms/getReactModule.d.ts +1 -1
- package/commands/cms/getReactModule.js +32 -37
- package/commands/cms/lighthouseScore.d.ts +1 -1
- package/commands/cms/lighthouseScore.js +67 -72
- package/commands/cms.d.ts +1 -1
- package/commands/cms.js +11 -16
- package/commands/completion.d.ts +1 -1
- package/commands/completion.js +10 -15
- package/commands/config/migrate.d.ts +1 -1
- package/commands/config/migrate.js +27 -32
- package/commands/config/set.d.ts +1 -1
- package/commands/config/set.js +23 -25
- package/commands/config.d.ts +1 -1
- package/commands/config.js +8 -13
- package/commands/create/api-sample.d.ts +1 -1
- package/commands/create/api-sample.js +28 -33
- package/commands/create/app.d.ts +1 -1
- package/commands/create/app.js +3 -5
- package/commands/create/function.d.ts +1 -1
- package/commands/create/function.js +9 -11
- package/commands/create/index.d.ts +1 -1
- package/commands/create/index.js +19 -24
- package/commands/create/module.d.ts +1 -1
- package/commands/create/module.js +12 -14
- package/commands/create/react-app.d.ts +1 -1
- package/commands/create/react-app.js +3 -5
- package/commands/create/template.d.ts +1 -1
- package/commands/create/template.js +12 -14
- package/commands/create/vue-app.d.ts +1 -1
- package/commands/create/vue-app.js +3 -5
- package/commands/create/webpack-serverless.d.ts +1 -1
- package/commands/create/webpack-serverless.js +3 -5
- package/commands/create/website-theme.d.ts +1 -1
- package/commands/create/website-theme.js +5 -7
- package/commands/create.d.ts +2 -2
- package/commands/create.js +30 -35
- package/commands/customObject/__tests__/create.test.js +13 -18
- package/commands/customObject/__tests__/schema.test.js +18 -23
- package/commands/customObject/create.d.ts +1 -1
- package/commands/customObject/create.js +28 -30
- package/commands/customObject/schema/__tests__/create.test.js +13 -18
- package/commands/customObject/schema/__tests__/delete.test.js +13 -18
- package/commands/customObject/schema/__tests__/fetch-all.test.js +13 -18
- package/commands/customObject/schema/__tests__/fetch.test.js +13 -18
- package/commands/customObject/schema/__tests__/list.test.js +13 -18
- package/commands/customObject/schema/__tests__/update.test.js +13 -18
- package/commands/customObject/schema/create.d.ts +1 -1
- package/commands/customObject/schema/create.js +28 -30
- package/commands/customObject/schema/delete.d.ts +1 -1
- package/commands/customObject/schema/delete.js +24 -26
- package/commands/customObject/schema/fetch-all.d.ts +1 -1
- package/commands/customObject/schema/fetch-all.js +22 -24
- package/commands/customObject/schema/fetch.d.ts +1 -1
- package/commands/customObject/schema/fetch.js +24 -26
- package/commands/customObject/schema/list.d.ts +1 -1
- package/commands/customObject/schema/list.js +13 -15
- package/commands/customObject/schema/update.d.ts +1 -1
- package/commands/customObject/schema/update.js +32 -34
- package/commands/customObject/schema.d.ts +1 -1
- package/commands/customObject/schema.js +17 -22
- package/commands/customObject.d.ts +1 -1
- package/commands/customObject.js +13 -18
- package/commands/doctor.d.ts +1 -1
- package/commands/doctor.js +28 -33
- package/commands/feedback.d.ts +1 -1
- package/commands/feedback.js +19 -24
- package/commands/fetch.d.ts +1 -1
- package/commands/fetch.js +28 -30
- package/commands/filemanager/__tests__/fetch.test.js +17 -22
- package/commands/filemanager/__tests__/upload.test.js +15 -20
- package/commands/filemanager/fetch.d.ts +1 -1
- package/commands/filemanager/fetch.js +23 -25
- package/commands/filemanager/upload.d.ts +1 -1
- package/commands/filemanager/upload.js +39 -44
- package/commands/filemanager.d.ts +1 -1
- package/commands/filemanager.js +8 -13
- package/commands/function/deploy.d.ts +1 -1
- package/commands/function/deploy.js +35 -40
- package/commands/function/list.d.ts +1 -1
- package/commands/function/list.js +24 -29
- package/commands/function/server.d.ts +1 -1
- package/commands/function/server.js +15 -17
- package/commands/function.d.ts +1 -1
- package/commands/function.js +12 -18
- package/commands/getStarted.d.ts +1 -1
- package/commands/getStarted.js +119 -125
- package/commands/hubdb/__tests__/clear.test.js +13 -18
- package/commands/hubdb/__tests__/create.test.js +13 -18
- package/commands/hubdb/__tests__/delete.test.js +13 -18
- package/commands/hubdb/__tests__/fetch.test.js +13 -18
- package/commands/hubdb/__tests__/list.test.js +23 -28
- package/commands/hubdb/clear.d.ts +1 -1
- package/commands/hubdb/clear.js +20 -22
- package/commands/hubdb/create.d.ts +1 -1
- package/commands/hubdb/create.js +30 -35
- package/commands/hubdb/delete.d.ts +1 -1
- package/commands/hubdb/delete.js +24 -26
- package/commands/hubdb/fetch.d.ts +1 -1
- package/commands/hubdb/fetch.js +17 -19
- package/commands/hubdb/list.d.ts +1 -1
- package/commands/hubdb/list.js +33 -35
- package/commands/hubdb.d.ts +1 -1
- package/commands/hubdb.js +18 -24
- package/commands/init.d.ts +1 -1
- package/commands/init.js +83 -88
- package/commands/lint.d.ts +1 -1
- package/commands/lint.js +24 -26
- package/commands/list.d.ts +1 -1
- package/commands/list.js +32 -37
- package/commands/logs.d.ts +1 -1
- package/commands/logs.js +35 -37
- package/commands/mcp/__tests__/setup.test.js +7 -12
- package/commands/mcp/__tests__/start.test.js +7 -12
- package/commands/mcp/setup.d.ts +1 -1
- package/commands/mcp/setup.js +17 -19
- package/commands/mcp/start.d.ts +1 -1
- package/commands/mcp/start.js +29 -34
- package/commands/mcp.d.ts +1 -1
- package/commands/mcp.js +7 -12
- package/commands/module/marketplace-validate.d.ts +1 -1
- package/commands/module/marketplace-validate.js +21 -26
- package/commands/module.d.ts +1 -1
- package/commands/module.js +7 -13
- package/commands/mv.d.ts +1 -1
- package/commands/mv.js +20 -22
- package/commands/open.d.ts +1 -1
- package/commands/open.js +19 -21
- package/commands/project/__tests__/add.test.js +10 -15
- package/commands/project/__tests__/create.test.js +14 -19
- package/commands/project/__tests__/deploy.test.js +96 -134
- package/commands/project/__tests__/devUnifiedFlow.test.js +133 -139
- package/commands/project/__tests__/download.test.js +14 -19
- package/commands/project/__tests__/installDeps.test.js +32 -70
- package/commands/project/__tests__/listBuilds.test.js +14 -19
- package/commands/project/__tests__/logs.test.js +56 -94
- package/commands/project/__tests__/migrate.test.js +25 -30
- package/commands/project/__tests__/migrateApp.test.js +17 -22
- package/commands/project/__tests__/open.test.js +16 -21
- package/commands/project/__tests__/profile.test.js +14 -19
- package/commands/project/__tests__/upload.test.js +18 -23
- package/commands/project/__tests__/watch.test.js +14 -19
- package/commands/project/add.d.ts +1 -1
- package/commands/project/add.js +34 -36
- package/commands/project/cloneApp.d.ts +1 -1
- package/commands/project/cloneApp.js +67 -72
- package/commands/project/create.d.ts +2 -2
- package/commands/project/create.js +63 -68
- package/commands/project/deploy.d.ts +1 -1
- package/commands/project/deploy.js +67 -69
- package/commands/project/dev/deprecatedFlow.d.ts +2 -2
- package/commands/project/dev/deprecatedFlow.js +52 -58
- package/commands/project/dev/index.d.ts +1 -1
- package/commands/project/dev/index.js +44 -47
- package/commands/project/dev/unifiedFlow.d.ts +3 -3
- package/commands/project/dev/unifiedFlow.js +62 -68
- package/commands/project/download.d.ts +1 -1
- package/commands/project/download.js +35 -40
- package/commands/project/installDeps.d.ts +1 -1
- package/commands/project/installDeps.js +29 -34
- package/commands/project/listBuilds.d.ts +1 -1
- package/commands/project/listBuilds.js +40 -45
- package/commands/project/logs.d.ts +1 -1
- package/commands/project/logs.js +52 -54
- package/commands/project/migrate.d.ts +1 -1
- package/commands/project/migrate.js +24 -26
- package/commands/project/migrateApp.d.ts +2 -2
- package/commands/project/migrateApp.js +18 -20
- package/commands/project/open.d.ts +1 -1
- package/commands/project/open.js +25 -30
- package/commands/project/profile/add.d.ts +1 -1
- package/commands/project/profile/add.js +68 -73
- package/commands/project/profile/delete.d.ts +1 -1
- package/commands/project/profile/delete.js +51 -56
- package/commands/project/profile.d.ts +1 -1
- package/commands/project/profile.js +9 -14
- package/commands/project/upload.d.ts +1 -1
- package/commands/project/upload.js +50 -55
- package/commands/project/validate.d.ts +1 -1
- package/commands/project/validate.js +35 -40
- package/commands/project/watch.d.ts +1 -1
- package/commands/project/watch.js +59 -61
- package/commands/project.d.ts +1 -1
- package/commands/project.js +38 -43
- package/commands/remove.d.ts +1 -1
- package/commands/remove.js +15 -17
- package/commands/sandbox/__tests__/create.test.js +15 -20
- package/commands/sandbox/__tests__/delete.test.js +15 -20
- package/commands/sandbox/create.d.ts +1 -1
- package/commands/sandbox/create.js +67 -69
- package/commands/sandbox/delete.d.ts +1 -1
- package/commands/sandbox/delete.js +94 -96
- package/commands/sandbox.d.ts +1 -1
- package/commands/sandbox.js +9 -14
- package/commands/secret/__tests__/addSecret.test.js +13 -18
- package/commands/secret/__tests__/deleteSecret.test.js +13 -18
- package/commands/secret/__tests__/listSecret.test.js +13 -18
- package/commands/secret/__tests__/updateSecret.test.js +13 -18
- package/commands/secret/addSecret.d.ts +1 -1
- package/commands/secret/addSecret.js +26 -28
- package/commands/secret/deleteSecret.d.ts +1 -1
- package/commands/secret/deleteSecret.js +27 -29
- package/commands/secret/listSecret.d.ts +1 -1
- package/commands/secret/listSecret.js +19 -21
- package/commands/secret/updateSecret.d.ts +1 -1
- package/commands/secret/updateSecret.js +25 -27
- package/commands/secret.d.ts +1 -1
- package/commands/secret.js +13 -18
- package/commands/testAccount/__tests__/create.test.js +17 -22
- package/commands/testAccount/__tests__/createConfig.test.js +6 -11
- package/commands/testAccount/__tests__/delete.test.js +15 -20
- package/commands/testAccount/create.d.ts +1 -1
- package/commands/testAccount/create.js +45 -53
- package/commands/testAccount/createConfig.d.ts +1 -1
- package/commands/testAccount/createConfig.js +36 -41
- package/commands/testAccount/delete.d.ts +1 -1
- package/commands/testAccount/delete.js +17 -19
- package/commands/testAccount.d.ts +1 -1
- package/commands/testAccount.js +10 -15
- package/commands/theme/__tests__/generate-selectors.test.js +7 -12
- package/commands/theme/__tests__/marketplace-validate.test.js +14 -19
- package/commands/theme/__tests__/preview.test.js +12 -17
- package/commands/theme/generate-selectors.d.ts +1 -1
- package/commands/theme/generate-selectors.js +23 -28
- package/commands/theme/marketplace-validate.d.ts +1 -1
- package/commands/theme/marketplace-validate.js +19 -24
- package/commands/theme/preview.d.ts +1 -1
- package/commands/theme/preview.js +60 -65
- package/commands/theme.d.ts +1 -1
- package/commands/theme.js +11 -16
- package/commands/upload.d.ts +1 -1
- package/commands/upload.js +77 -82
- package/commands/watch.d.ts +1 -1
- package/commands/watch.js +45 -51
- package/lang/en.d.ts +0 -22
- package/lang/en.js +371 -399
- package/lib/__tests__/accountTypes.test.js +20 -22
- package/lib/__tests__/buildAccount.test.js +28 -63
- package/lib/__tests__/commonOpts.test.js +20 -22
- package/lib/__tests__/dependencyManagement.test.js +46 -51
- package/lib/__tests__/developerTestAccounts.test.js +27 -62
- package/lib/__tests__/hasFeature.test.js +6 -8
- package/lib/__tests__/npm.test.js +15 -20
- package/lib/__tests__/oauth.test.js +23 -28
- package/lib/__tests__/parsing.test.js +18 -20
- package/lib/__tests__/polling.test.js +24 -26
- package/lib/__tests__/process.test.js +14 -19
- package/lib/__tests__/projectProfiles.test.js +34 -39
- package/lib/__tests__/sandboxSync.test.js +30 -35
- package/lib/__tests__/sandboxes.test.js +29 -31
- package/lib/__tests__/serverlessLogs.test.js +8 -13
- package/lib/__tests__/usageTracking.test.js +33 -34
- package/lib/__tests__/validation.test.js +18 -20
- package/lib/__tests__/yargsUtils.test.js +6 -41
- package/lib/accountTypes.js +24 -34
- package/lib/app/__tests__/migrate.test.js +94 -99
- package/lib/app/__tests__/migrate_legacy.test.js +29 -31
- package/lib/app/migrate.d.ts +3 -3
- package/lib/app/migrate.js +127 -145
- package/lib/app/migrate_legacy.d.ts +1 -1
- package/lib/app/migrate_legacy.js +72 -78
- package/lib/app/urls.js +5 -9
- package/lib/buildAccount.d.ts +1 -1
- package/lib/buildAccount.js +71 -80
- package/lib/commonOpts.d.ts +1 -1
- package/lib/commonOpts.js +42 -59
- package/lib/configMigrate.js +34 -38
- package/lib/configOptions.js +34 -40
- package/lib/constants.js +31 -34
- package/lib/customObject.js +2 -6
- package/lib/dependencyManagement.js +37 -45
- package/lib/developerTestAccounts.d.ts +1 -1
- package/lib/developerTestAccounts.js +34 -39
- package/lib/doctor/Diagnosis.d.ts +1 -1
- package/lib/doctor/Diagnosis.js +25 -29
- package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
- package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
- package/lib/doctor/Doctor.d.ts +1 -1
- package/lib/doctor/Doctor.js +94 -101
- package/lib/doctor/__tests__/Diagnosis.test.js +9 -14
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +29 -34
- package/lib/doctor/__tests__/Doctor.test.js +24 -26
- package/lib/enums/exitCodes.js +1 -4
- package/lib/errorHandlers/index.js +32 -41
- package/lib/errorHandlers/suppressError.d.ts +1 -1
- package/lib/errorHandlers/suppressError.js +28 -31
- package/lib/filesystem.js +8 -15
- package/lib/generateSelectors.js +18 -29
- package/lib/hasFeature.d.ts +1 -1
- package/lib/hasFeature.js +3 -6
- package/lib/interpolation.js +11 -18
- package/lib/lang.d.ts +1 -1
- package/lib/lang.js +22 -27
- package/lib/links.js +16 -24
- package/lib/marketplaceValidate.js +29 -39
- package/lib/mcp/setup.js +70 -82
- package/lib/middleware/__test__/configMiddleware.test.js +20 -55
- package/lib/middleware/__test__/gitMiddleware.test.js +7 -42
- package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -4
- package/lib/middleware/__test__/requestMiddleware.test.js +6 -11
- package/lib/middleware/__test__/utils.test.js +9 -11
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +9 -44
- package/lib/middleware/autoUpdateMiddleware.js +33 -40
- package/lib/middleware/configMiddleware.js +36 -42
- package/lib/middleware/fireAlarmMiddleware.js +12 -18
- package/lib/middleware/gitMiddleware.js +5 -8
- package/lib/middleware/notificationsMiddleware.js +16 -23
- package/lib/middleware/requestMiddleware.js +4 -10
- package/lib/middleware/utils.js +1 -4
- package/lib/middleware/yargsChecksMiddleware.js +10 -13
- package/lib/npm.js +14 -23
- package/lib/oauth.js +29 -35
- package/lib/parsing.js +3 -6
- package/lib/polling.js +11 -15
- package/lib/process.js +11 -19
- package/lib/projectProfiles.d.ts +2 -2
- package/lib/projectProfiles.js +32 -42
- package/lib/projects/ProjectLogsManager.js +18 -21
- package/lib/projects/__tests__/AppDevModeInterface.test.js +140 -145
- package/lib/projects/__tests__/LocalDevProcess.test.js +68 -73
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +32 -37
- package/lib/projects/__tests__/ProjectLogsManager.test.js +56 -58
- package/lib/projects/__tests__/buildAndDeploy.test.js +7 -9
- package/lib/projects/__tests__/components.test.js +9 -14
- package/lib/projects/__tests__/projects.test.js +35 -40
- package/lib/projects/__tests__/structure.test.js +43 -81
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +26 -28
- package/lib/projects/add/__tests__/v3AddComponent.test.js +25 -30
- package/lib/projects/add/legacyAddComponent.d.ts +1 -1
- package/lib/projects/add/legacyAddComponent.js +24 -30
- package/lib/projects/add/v3AddComponent.d.ts +1 -1
- package/lib/projects/add/v3AddComponent.js +36 -42
- package/lib/projects/buildAndDeploy.d.ts +1 -1
- package/lib/projects/buildAndDeploy.js +88 -97
- package/lib/projects/components.js +19 -25
- package/lib/projects/config.d.ts +1 -1
- package/lib/projects/config.js +32 -41
- package/lib/projects/create/__tests__/legacy.test.js +22 -57
- package/lib/projects/create/__tests__/v3.test.js +5 -7
- package/lib/projects/create/index.d.ts +3 -3
- package/lib/projects/create/index.js +19 -22
- package/lib/projects/create/legacy.d.ts +1 -1
- package/lib/projects/create/legacy.js +25 -31
- package/lib/projects/create/v3.d.ts +3 -3
- package/lib/projects/create/v3.js +49 -59
- package/lib/projects/ensureProjectExists.js +31 -37
- package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
- package/lib/projects/localDev/AppDevModeInterface.js +58 -60
- package/lib/projects/localDev/DevServerManager.d.ts +1 -1
- package/lib/projects/localDev/DevServerManager.js +22 -24
- package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
- package/lib/projects/localDev/DevServerManagerV2.js +15 -20
- package/lib/projects/localDev/LocalDevLogger.d.ts +1 -1
- package/lib/projects/localDev/LocalDevLogger.js +59 -64
- package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
- package/lib/projects/localDev/LocalDevManager.js +106 -111
- package/lib/projects/localDev/LocalDevProcess.d.ts +4 -4
- package/lib/projects/localDev/LocalDevProcess.js +25 -30
- package/lib/projects/localDev/LocalDevState.d.ts +3 -3
- package/lib/projects/localDev/LocalDevState.js +3 -5
- package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
- package/lib/projects/localDev/LocalDevWatcher.js +6 -11
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +1 -1
- package/lib/projects/localDev/LocalDevWebsocketServer.js +25 -27
- package/lib/projects/localDev/helpers.d.ts +3 -3
- package/lib/projects/localDev/helpers.js +156 -174
- package/lib/projects/structure.d.ts +4 -4
- package/lib/projects/structure.js +32 -78
- package/lib/projects/ui.js +10 -13
- package/lib/projects/upload.d.ts +2 -3
- package/lib/projects/upload.js +55 -65
- package/lib/projects/urls.js +14 -24
- package/lib/projects/watch.d.ts +1 -1
- package/lib/projects/watch.js +48 -54
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +9 -11
- package/lib/prompts/__tests__/projectsLogsPrompt.test.js +11 -16
- package/lib/prompts/accountNamePrompt.d.ts +1 -1
- package/lib/prompts/accountNamePrompt.js +26 -31
- package/lib/prompts/accountsPrompt.js +12 -15
- package/lib/prompts/cmsFieldPrompt.js +13 -19
- package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
- package/lib/prompts/createApiSamplePrompt.js +9 -12
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +1 -1
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +23 -26
- package/lib/prompts/createFunctionPrompt.js +17 -20
- package/lib/prompts/createModulePrompt.js +12 -15
- package/lib/prompts/createTemplatePrompt.js +5 -8
- package/lib/prompts/downloadProjectPrompt.js +17 -20
- package/lib/prompts/installAppPrompt.js +19 -26
- package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
- package/lib/prompts/personalAccessKeyPrompt.js +40 -47
- package/lib/prompts/previewPrompt.js +15 -22
- package/lib/prompts/projectAddPrompt.d.ts +1 -1
- package/lib/prompts/projectAddPrompt.js +14 -18
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
- package/lib/prompts/projectDevTargetAccountPrompt.js +48 -54
- package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
- package/lib/prompts/projectNameAndDestPrompt.js +22 -29
- package/lib/prompts/projectNamePrompt.js +11 -14
- package/lib/prompts/projectsLogsPrompt.js +5 -8
- package/lib/prompts/promptUtils.d.ts +1 -1
- package/lib/prompts/promptUtils.js +17 -24
- package/lib/prompts/sandboxesPrompt.d.ts +1 -1
- package/lib/prompts/sandboxesPrompt.js +26 -30
- package/lib/prompts/secretPrompt.js +10 -15
- package/lib/prompts/selectAppPrompt.js +11 -14
- package/lib/prompts/selectHubDBTablePrompt.js +24 -30
- package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
- package/lib/prompts/selectProjectTemplatePrompt.js +10 -13
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
- package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
- package/lib/prompts/uploadPrompt.js +11 -17
- package/lib/sandboxSync.d.ts +1 -1
- package/lib/sandboxSync.js +58 -65
- package/lib/sandboxes.d.ts +1 -1
- package/lib/sandboxes.js +68 -76
- package/lib/schema.js +13 -20
- package/lib/serverlessLogs.js +45 -52
- package/lib/testUtils.js +4 -8
- package/lib/ui/SpinniesManager.d.ts +1 -1
- package/lib/ui/SpinniesManager.js +29 -34
- package/lib/ui/boxen.js +11 -14
- package/lib/ui/git.js +14 -20
- package/lib/ui/index.js +55 -73
- package/lib/ui/logger.js +10 -13
- package/lib/ui/serverlessFunctionLogs.js +14 -20
- package/lib/ui/spinniesUtils.js +24 -39
- package/lib/ui/supportHyperlinks.js +3 -6
- package/lib/ui/supportsColor.js +11 -17
- package/lib/ui/table.js +6 -13
- package/lib/upload.js +15 -21
- package/lib/usageTracking.js +35 -44
- package/lib/utils/hasFlag.js +2 -8
- package/lib/validation.js +48 -87
- package/lib/yargsUtils.d.ts +1 -1
- package/lib/yargsUtils.js +13 -16
- package/mcp-server/server.js +6 -8
- package/mcp-server/tools/index.js +13 -16
- package/mcp-server/tools/project/AddFeatureToProject.d.ts +1 -1
- package/mcp-server/tools/project/AddFeatureToProject.js +35 -39
- package/mcp-server/tools/project/CreateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/CreateProjectTool.js +46 -50
- package/mcp-server/tools/project/DeployProject.d.ts +1 -1
- package/mcp-server/tools/project/DeployProject.js +18 -22
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
- package/mcp-server/tools/project/GuidedWalkthroughTool.js +21 -25
- package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
- package/mcp-server/tools/project/UploadProjectTools.js +12 -19
- package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/ValidateProjectTool.js +13 -17
- package/mcp-server/tools/project/__tests__/AddFeatureToProject.test.js +12 -14
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +13 -15
- package/mcp-server/tools/project/__tests__/DeployProject.test.js +6 -8
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +4 -6
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +4 -6
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +4 -6
- package/mcp-server/tools/project/constants.js +3 -9
- package/mcp-server/types.js +1 -5
- package/mcp-server/utils/__tests__/command.test.js +9 -11
- package/mcp-server/utils/__tests__/project.test.js +12 -17
- package/mcp-server/utils/command.d.ts +1 -1
- package/mcp-server/utils/command.js +4 -11
- package/mcp-server/utils/content.d.ts +1 -1
- package/mcp-server/utils/content.js +2 -6
- package/mcp-server/utils/project.js +8 -14
- package/mcp-server/utils/toolUsageTracking.js +11 -14
- package/package.json +15 -11
- package/types/Cms.d.ts +1 -1
- package/types/Cms.js +1 -2
- package/types/LocalDev.d.ts +4 -4
- package/types/LocalDev.js +1 -2
- package/types/ProjectComponents.d.ts +2 -2
- package/types/ProjectComponents.js +1 -2
- package/types/Projects.d.ts +1 -1
- package/types/Projects.js +2 -5
- package/types/Prompts.js +1 -2
- package/types/Sandboxes.js +1 -2
- package/types/Yargs.js +1 -2
- package/commands/app/__tests__/install.test.d.ts +0 -1
- package/commands/app/__tests__/install.test.js +0 -52
- package/commands/app/install.d.ts +0 -8
- package/commands/app/install.js +0 -127
package/lib/lang.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
12
|
-
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
13
|
-
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
14
|
-
const interpolation_1 = require("./interpolation");
|
|
15
|
-
exports.MISSING_LANGUAGE_DATA_PREFIX = '[Missing language data]';
|
|
1
|
+
import util from 'util';
|
|
2
|
+
import path, { dirname } from 'path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import yaml from 'js-yaml';
|
|
5
|
+
import { logger } from '@hubspot/local-dev-lib/logger';
|
|
6
|
+
import { interpolate } from './interpolation.js';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = dirname(__filename);
|
|
10
|
+
export const MISSING_LANGUAGE_DATA_PREFIX = '[Missing language data]';
|
|
16
11
|
let locale;
|
|
17
12
|
let languageObj;
|
|
18
13
|
function loadLanguageFromYaml() {
|
|
@@ -22,20 +17,20 @@ function loadLanguageFromYaml() {
|
|
|
22
17
|
const nodeLocale = Intl.DateTimeFormat()
|
|
23
18
|
.resolvedOptions()
|
|
24
19
|
.locale.split('-')[0];
|
|
25
|
-
const languageFilePath =
|
|
26
|
-
const languageFileExists =
|
|
20
|
+
const languageFilePath = path.join(__dirname, `../lang/${nodeLocale}.lyaml`);
|
|
21
|
+
const languageFileExists = fs.existsSync(languageFilePath);
|
|
27
22
|
// Fall back to using the default language file
|
|
28
23
|
locale = languageFileExists ? nodeLocale : 'en';
|
|
29
|
-
languageObj =
|
|
30
|
-
|
|
24
|
+
languageObj = yaml.load(fs.readFileSync(path.join(__dirname, `../lang/${locale}.lyaml`), 'utf8'));
|
|
25
|
+
logger.debug('Loaded language data: ', util.inspect(languageObj, true, 999, true));
|
|
31
26
|
}
|
|
32
27
|
catch (e) {
|
|
33
|
-
|
|
28
|
+
logger.error('Error loading language data: ', e);
|
|
34
29
|
}
|
|
35
30
|
}
|
|
36
31
|
function getTextValue(lookupDotNotation) {
|
|
37
32
|
const lookupProps = [locale, ...lookupDotNotation.split('.')];
|
|
38
|
-
const missingTextData = `${
|
|
33
|
+
const missingTextData = `${MISSING_LANGUAGE_DATA_PREFIX}: ${lookupProps.join('.')}`;
|
|
39
34
|
let textValue = languageObj;
|
|
40
35
|
let previouslyCheckedProp = lookupProps[0];
|
|
41
36
|
try {
|
|
@@ -47,8 +42,8 @@ function getTextValue(lookupDotNotation) {
|
|
|
47
42
|
});
|
|
48
43
|
}
|
|
49
44
|
catch (e) {
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
logger.debug(`Unable to access language property: ${lookupProps.join('.')}. Failed to access prop "${previouslyCheckedProp}".`);
|
|
46
|
+
logger.error('Unable to access language property.');
|
|
52
47
|
return missingTextData;
|
|
53
48
|
}
|
|
54
49
|
if (!textValue) {
|
|
@@ -59,7 +54,7 @@ function getTextValue(lookupDotNotation) {
|
|
|
59
54
|
}
|
|
60
55
|
return textValue;
|
|
61
56
|
}
|
|
62
|
-
function i18n(lookupDotNotation, options = {}) {
|
|
57
|
+
export function i18n(lookupDotNotation, options = {}) {
|
|
63
58
|
if (!languageObj) {
|
|
64
59
|
loadLanguageFromYaml();
|
|
65
60
|
}
|
|
@@ -67,10 +62,10 @@ function i18n(lookupDotNotation, options = {}) {
|
|
|
67
62
|
throw new Error(`i18n must be passed a string value for lookupDotNotation, received ${typeof lookupDotNotation}`);
|
|
68
63
|
}
|
|
69
64
|
const textValue = getTextValue(lookupDotNotation);
|
|
70
|
-
const shouldInterpolate = !textValue.startsWith(
|
|
71
|
-
return shouldInterpolate ?
|
|
65
|
+
const shouldInterpolate = !textValue.startsWith(MISSING_LANGUAGE_DATA_PREFIX);
|
|
66
|
+
return shouldInterpolate ? interpolate(textValue, options) : textValue;
|
|
72
67
|
}
|
|
73
|
-
function setLangData(newLocale, newLangObj) {
|
|
68
|
+
export function setLangData(newLocale, newLangObj) {
|
|
74
69
|
locale = newLocale;
|
|
75
70
|
languageObj = newLangObj;
|
|
76
71
|
}
|
package/lib/links.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.logSiteLinks = logSiteLinks;
|
|
8
|
-
exports.openLink = openLink;
|
|
9
|
-
const open_1 = __importDefault(require("open"));
|
|
10
|
-
const config_1 = require("@hubspot/local-dev-lib/config");
|
|
11
|
-
const environments_1 = require("@hubspot/local-dev-lib/constants/environments");
|
|
12
|
-
const urls_1 = require("@hubspot/local-dev-lib/urls");
|
|
13
|
-
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
14
|
-
const table_1 = require("./ui/table");
|
|
1
|
+
import open from 'open';
|
|
2
|
+
import { getEnv } from '@hubspot/local-dev-lib/config';
|
|
3
|
+
import { ENVIRONMENTS } from '@hubspot/local-dev-lib/constants/environments';
|
|
4
|
+
import { getHubSpotWebsiteOrigin } from '@hubspot/local-dev-lib/urls';
|
|
5
|
+
import { logger } from '@hubspot/local-dev-lib/logger';
|
|
6
|
+
import { getTableContents, getTableHeader } from './ui/table.js';
|
|
15
7
|
const SITE_LINKS = {
|
|
16
8
|
APPS_MARKETPLACE: {
|
|
17
9
|
shortcut: 'apps-marketplace',
|
|
@@ -82,28 +74,28 @@ const SITE_LINKS = {
|
|
|
82
74
|
getUrl: (accountId, baseUrl) => `${baseUrl}/website/${accountId}/pages/site`,
|
|
83
75
|
},
|
|
84
76
|
};
|
|
85
|
-
function getSiteLinksAsArray(accountId) {
|
|
86
|
-
const baseUrl =
|
|
77
|
+
export function getSiteLinksAsArray(accountId) {
|
|
78
|
+
const baseUrl = getHubSpotWebsiteOrigin(getEnv() === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD);
|
|
87
79
|
return Object.values(SITE_LINKS)
|
|
88
80
|
.sort((a, b) => (a.shortcut < b.shortcut ? -1 : 1))
|
|
89
81
|
.map(l => ({ ...l, url: l.getUrl(accountId, baseUrl) }));
|
|
90
82
|
}
|
|
91
|
-
function logSiteLinks(accountId) {
|
|
83
|
+
export function logSiteLinks(accountId) {
|
|
92
84
|
const linksAsArray = getSiteLinksAsArray(accountId).map(l => [
|
|
93
85
|
`${l.shortcut}${l.alias ? ` [alias: ${l.alias}]` : ''}`,
|
|
94
86
|
'=>',
|
|
95
87
|
l.url,
|
|
96
88
|
]);
|
|
97
|
-
linksAsArray.unshift(
|
|
98
|
-
|
|
89
|
+
linksAsArray.unshift(getTableHeader(['Shortcut', '', 'Url']));
|
|
90
|
+
logger.log(getTableContents(linksAsArray));
|
|
99
91
|
}
|
|
100
|
-
function openLink(accountId, shortcut) {
|
|
92
|
+
export function openLink(accountId, shortcut) {
|
|
101
93
|
const match = Object.values(SITE_LINKS).find(l => l.shortcut === shortcut || (l.alias && l.alias === shortcut));
|
|
102
94
|
if (!match) {
|
|
103
|
-
|
|
95
|
+
logger.error(`We couldn't find a shortcut matching ${shortcut}. Type 'hs open list' to see a list of available shortcuts`);
|
|
104
96
|
return;
|
|
105
97
|
}
|
|
106
|
-
const baseUrl =
|
|
107
|
-
(
|
|
108
|
-
|
|
98
|
+
const baseUrl = getHubSpotWebsiteOrigin(getEnv() === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD);
|
|
99
|
+
open(match.getUrl(accountId, baseUrl), { url: true });
|
|
100
|
+
logger.success(`We opened ${match.getUrl(accountId, baseUrl)} in your browser`);
|
|
109
101
|
}
|
|
@@ -1,22 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.kickOffValidation = kickOffValidation;
|
|
7
|
-
exports.pollForValidationFinish = pollForValidationFinish;
|
|
8
|
-
exports.fetchValidationResults = fetchValidationResults;
|
|
9
|
-
exports.processValidationErrors = processValidationErrors;
|
|
10
|
-
exports.displayValidationResults = displayValidationResults;
|
|
11
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
-
const marketplaceValidation_1 = require("@hubspot/local-dev-lib/api/marketplaceValidation");
|
|
13
|
-
const logger_1 = require("./ui/logger");
|
|
14
|
-
const exitCodes_1 = require("./enums/exitCodes");
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { requestValidation, getValidationStatus, getValidationResults, } from '@hubspot/local-dev-lib/api/marketplaceValidation';
|
|
3
|
+
import { uiLogger } from './ui/logger.js';
|
|
4
|
+
import { EXIT_CODES } from './enums/exitCodes.js';
|
|
15
5
|
const SLEEP_TIME = 2000;
|
|
16
|
-
async function kickOffValidation(accountId, assetType, src) {
|
|
6
|
+
export async function kickOffValidation(accountId, assetType, src) {
|
|
17
7
|
const requestGroup = 'EXTERNAL_DEVELOPER';
|
|
18
8
|
try {
|
|
19
|
-
const { data: requestResult } = await
|
|
9
|
+
const { data: requestResult } = await requestValidation(accountId, {
|
|
20
10
|
path: src,
|
|
21
11
|
assetType,
|
|
22
12
|
requestGroup,
|
|
@@ -24,14 +14,14 @@ async function kickOffValidation(accountId, assetType, src) {
|
|
|
24
14
|
return requestResult;
|
|
25
15
|
}
|
|
26
16
|
catch (err) {
|
|
27
|
-
|
|
28
|
-
process.exit(
|
|
17
|
+
uiLogger.debug(err);
|
|
18
|
+
process.exit(EXIT_CODES.ERROR);
|
|
29
19
|
}
|
|
30
20
|
}
|
|
31
|
-
async function pollForValidationFinish(accountId, validationId) {
|
|
21
|
+
export async function pollForValidationFinish(accountId, validationId) {
|
|
32
22
|
try {
|
|
33
23
|
const checkValidationStatus = async () => {
|
|
34
|
-
const { data: validationStatus } = await
|
|
24
|
+
const { data: validationStatus } = await getValidationStatus(accountId, {
|
|
35
25
|
validationId,
|
|
36
26
|
});
|
|
37
27
|
if (validationStatus === 'REQUESTED') {
|
|
@@ -42,42 +32,42 @@ async function pollForValidationFinish(accountId, validationId) {
|
|
|
42
32
|
await checkValidationStatus();
|
|
43
33
|
}
|
|
44
34
|
catch (err) {
|
|
45
|
-
|
|
46
|
-
process.exit(
|
|
35
|
+
uiLogger.debug(err);
|
|
36
|
+
process.exit(EXIT_CODES.ERROR);
|
|
47
37
|
}
|
|
48
38
|
}
|
|
49
|
-
async function fetchValidationResults(accountId, validationId) {
|
|
39
|
+
export async function fetchValidationResults(accountId, validationId) {
|
|
50
40
|
try {
|
|
51
|
-
const { data: validationResults } = await
|
|
41
|
+
const { data: validationResults } = await getValidationResults(accountId, {
|
|
52
42
|
validationId,
|
|
53
43
|
});
|
|
54
44
|
return validationResults;
|
|
55
45
|
}
|
|
56
46
|
catch (err) {
|
|
57
|
-
|
|
58
|
-
process.exit(
|
|
47
|
+
uiLogger.debug(err);
|
|
48
|
+
process.exit(EXIT_CODES.ERROR);
|
|
59
49
|
}
|
|
60
50
|
}
|
|
61
|
-
function processValidationErrors(invalidPathError, validationResults) {
|
|
51
|
+
export function processValidationErrors(invalidPathError, validationResults) {
|
|
62
52
|
if (validationResults.errors.length) {
|
|
63
53
|
const { assetPath, errors } = validationResults;
|
|
64
54
|
errors.forEach(err => {
|
|
65
55
|
if (err.failureReasonType === 'DOWNLOAD_EMPTY') {
|
|
66
|
-
|
|
56
|
+
uiLogger.error(invalidPathError(assetPath));
|
|
67
57
|
}
|
|
68
58
|
else {
|
|
69
|
-
|
|
59
|
+
uiLogger.error(`${err.context}`);
|
|
70
60
|
}
|
|
71
61
|
});
|
|
72
|
-
process.exit(
|
|
62
|
+
process.exit(EXIT_CODES.ERROR);
|
|
73
63
|
}
|
|
74
64
|
}
|
|
75
65
|
function displayFileInfo(file, line, resultsCopy) {
|
|
76
66
|
if (file) {
|
|
77
|
-
|
|
67
|
+
uiLogger.log(resultsCopy.warnings.file(file));
|
|
78
68
|
}
|
|
79
69
|
if (line) {
|
|
80
|
-
|
|
70
|
+
uiLogger.log(resultsCopy.warnings.lineNumber(line.toString()));
|
|
81
71
|
}
|
|
82
72
|
}
|
|
83
73
|
function displayResults(checks, resultsCopy) {
|
|
@@ -87,19 +77,19 @@ function displayResults(checks, resultsCopy) {
|
|
|
87
77
|
const failedValidations = results.filter(test => test.status === 'FAIL');
|
|
88
78
|
const warningValidations = results.filter(test => test.status === 'WARN');
|
|
89
79
|
failedValidations.forEach(val => {
|
|
90
|
-
|
|
80
|
+
uiLogger.error(`${val.message}`);
|
|
91
81
|
displayFileInfo(val.file, val.line, resultsCopy);
|
|
92
82
|
});
|
|
93
83
|
warningValidations.forEach(val => {
|
|
94
|
-
|
|
84
|
+
uiLogger.warn(`${val.message}`);
|
|
95
85
|
displayFileInfo(val.file, val.line, resultsCopy);
|
|
96
86
|
});
|
|
97
87
|
}
|
|
98
88
|
if (status === 'PASS') {
|
|
99
|
-
|
|
89
|
+
uiLogger.success(resultsCopy.noErrors);
|
|
100
90
|
results.forEach(test => {
|
|
101
91
|
if (test.status === 'WARN') {
|
|
102
|
-
|
|
92
|
+
uiLogger.warn(`${test.message}`);
|
|
103
93
|
displayFileInfo(test.file, test.line, resultsCopy);
|
|
104
94
|
}
|
|
105
95
|
});
|
|
@@ -107,10 +97,10 @@ function displayResults(checks, resultsCopy) {
|
|
|
107
97
|
}
|
|
108
98
|
return;
|
|
109
99
|
}
|
|
110
|
-
function displayValidationResults(resultsCopy, validationResults) {
|
|
100
|
+
export function displayValidationResults(resultsCopy, validationResults) {
|
|
111
101
|
Object.keys(validationResults.results).forEach(type => {
|
|
112
|
-
|
|
102
|
+
uiLogger.log(chalk.bold(resultsCopy[type.toLowerCase()]));
|
|
113
103
|
displayResults(validationResults.results[type], resultsCopy);
|
|
114
|
-
|
|
104
|
+
uiLogger.log('');
|
|
115
105
|
});
|
|
116
106
|
}
|
package/lib/mcp/setup.js
CHANGED
|
@@ -1,50 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
exports.setupWindsurf = setupWindsurf;
|
|
13
|
-
const logger_1 = require("../ui/logger");
|
|
14
|
-
const en_1 = require("../../lang/en");
|
|
15
|
-
const promptUtils_1 = require("../prompts/promptUtils");
|
|
16
|
-
const SpinniesManager_1 = __importDefault(require("../ui/SpinniesManager"));
|
|
17
|
-
const errorHandlers_1 = require("../errorHandlers");
|
|
18
|
-
const command_1 = require("../../mcp-server/utils/command");
|
|
19
|
-
const child_process_1 = require("child_process");
|
|
20
|
-
const path_1 = __importDefault(require("path"));
|
|
21
|
-
const os_1 = __importDefault(require("os"));
|
|
22
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
23
|
-
const fs_1 = require("fs");
|
|
1
|
+
import { uiLogger } from '../ui/logger.js';
|
|
2
|
+
import { commands } from '../../lang/en.js';
|
|
3
|
+
import { promptUser } from '../prompts/promptUtils.js';
|
|
4
|
+
import SpinniesManager from '../ui/SpinniesManager.js';
|
|
5
|
+
import { logError } from '../errorHandlers/index.js';
|
|
6
|
+
import { execAsync } from '../../mcp-server/utils/command.js';
|
|
7
|
+
import { spawn } from 'node:child_process';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import os from 'os';
|
|
10
|
+
import fs from 'fs-extra';
|
|
11
|
+
import { existsSync } from 'fs';
|
|
24
12
|
const mcpServerName = 'hubspot-cli-mcp';
|
|
25
13
|
const claudeCode = 'claude';
|
|
26
14
|
const windsurf = 'windsurf';
|
|
27
15
|
const cursor = 'cursor';
|
|
28
16
|
const supportedMintlifyClients = [windsurf, cursor];
|
|
29
|
-
|
|
30
|
-
{ name:
|
|
31
|
-
{ name:
|
|
32
|
-
{ name:
|
|
17
|
+
export const supportedTools = [
|
|
18
|
+
{ name: commands.mcp.setup.claudeCode, value: claudeCode },
|
|
19
|
+
{ name: commands.mcp.setup.cursor, value: cursor },
|
|
20
|
+
{ name: commands.mcp.setup.windsurf, value: windsurf },
|
|
33
21
|
];
|
|
34
22
|
const defaultMcpCommand = {
|
|
35
23
|
command: 'hs',
|
|
36
24
|
args: ['mcp', 'start'],
|
|
37
25
|
};
|
|
38
|
-
async function addMintlifyMcpServer(installTargets) {
|
|
26
|
+
export async function addMintlifyMcpServer(installTargets) {
|
|
39
27
|
await runSetupFunction(() => setupMintlify(installTargets));
|
|
40
28
|
}
|
|
41
|
-
async function setupMintlify(derivedTargets = supportedMintlifyClients) {
|
|
42
|
-
|
|
43
|
-
|
|
29
|
+
export async function setupMintlify(derivedTargets = supportedMintlifyClients) {
|
|
30
|
+
uiLogger.info(commands.mcp.setup.installingDocSearch);
|
|
31
|
+
uiLogger.log('');
|
|
44
32
|
return new Promise(resolve => {
|
|
45
33
|
const subcommands = ['mint-mcp', 'add', 'hubspot-migration'];
|
|
46
34
|
const docsSearchClients = derivedTargets.filter(target => supportedMintlifyClients.includes(target));
|
|
47
|
-
const childProcess =
|
|
35
|
+
const childProcess = spawn(`npx`, docsSearchClients && docsSearchClients.length
|
|
48
36
|
? [...subcommands, '--client', ...docsSearchClients]
|
|
49
37
|
: subcommands, {
|
|
50
38
|
stdio: 'inherit',
|
|
@@ -57,18 +45,18 @@ async function setupMintlify(derivedTargets = supportedMintlifyClients) {
|
|
|
57
45
|
});
|
|
58
46
|
});
|
|
59
47
|
}
|
|
60
|
-
async function addMcpServerToConfig(targets) {
|
|
48
|
+
export async function addMcpServerToConfig(targets) {
|
|
61
49
|
try {
|
|
62
50
|
let derivedTargets = [];
|
|
63
51
|
if (!targets || targets.length === 0) {
|
|
64
|
-
const { selectedTargets } = await
|
|
52
|
+
const { selectedTargets } = await promptUser({
|
|
65
53
|
name: 'selectedTargets',
|
|
66
54
|
type: 'checkbox',
|
|
67
|
-
message:
|
|
68
|
-
choices:
|
|
55
|
+
message: commands.mcp.setup.prompts.targets,
|
|
56
|
+
choices: supportedTools,
|
|
69
57
|
validate: (choices) => {
|
|
70
58
|
return choices.length === 0
|
|
71
|
-
?
|
|
59
|
+
? commands.mcp.setup.prompts.targetsRequired
|
|
72
60
|
: true;
|
|
73
61
|
},
|
|
74
62
|
});
|
|
@@ -77,7 +65,7 @@ async function addMcpServerToConfig(targets) {
|
|
|
77
65
|
else {
|
|
78
66
|
derivedTargets = targets;
|
|
79
67
|
}
|
|
80
|
-
|
|
68
|
+
SpinniesManager.init();
|
|
81
69
|
if (derivedTargets.includes(claudeCode)) {
|
|
82
70
|
await runSetupFunction(setupClaudeCode);
|
|
83
71
|
}
|
|
@@ -87,12 +75,12 @@ async function addMcpServerToConfig(targets) {
|
|
|
87
75
|
if (derivedTargets.includes(windsurf)) {
|
|
88
76
|
await runSetupFunction(setupWindsurf);
|
|
89
77
|
}
|
|
90
|
-
|
|
78
|
+
uiLogger.info(commands.mcp.setup.success(derivedTargets));
|
|
91
79
|
return derivedTargets;
|
|
92
80
|
}
|
|
93
81
|
catch (error) {
|
|
94
|
-
|
|
95
|
-
text:
|
|
82
|
+
SpinniesManager.fail('mcpSetup', {
|
|
83
|
+
text: commands.mcp.setup.spinners.failedToConfigure,
|
|
96
84
|
});
|
|
97
85
|
throw error;
|
|
98
86
|
}
|
|
@@ -105,22 +93,22 @@ async function runSetupFunction(func) {
|
|
|
105
93
|
}
|
|
106
94
|
function setupMcpConfigFile(config) {
|
|
107
95
|
try {
|
|
108
|
-
|
|
96
|
+
SpinniesManager.add('spinner', {
|
|
109
97
|
text: config.configuringMessage,
|
|
110
98
|
});
|
|
111
|
-
if (!
|
|
112
|
-
|
|
99
|
+
if (!existsSync(config.configPath)) {
|
|
100
|
+
fs.writeFileSync(config.configPath, JSON.stringify({}, null, 2));
|
|
113
101
|
}
|
|
114
102
|
let mcpConfig = {};
|
|
115
103
|
let configContent;
|
|
116
104
|
try {
|
|
117
|
-
configContent =
|
|
105
|
+
configContent = fs.readFileSync(config.configPath, 'utf8');
|
|
118
106
|
}
|
|
119
107
|
catch (error) {
|
|
120
|
-
|
|
108
|
+
SpinniesManager.fail('spinner', {
|
|
121
109
|
text: config.failedMessage,
|
|
122
110
|
});
|
|
123
|
-
|
|
111
|
+
logError(error);
|
|
124
112
|
return false;
|
|
125
113
|
}
|
|
126
114
|
try {
|
|
@@ -133,10 +121,10 @@ function setupMcpConfigFile(config) {
|
|
|
133
121
|
}
|
|
134
122
|
}
|
|
135
123
|
catch (error) {
|
|
136
|
-
|
|
124
|
+
SpinniesManager.fail('spinner', {
|
|
137
125
|
text: config.failedMessage,
|
|
138
126
|
});
|
|
139
|
-
|
|
127
|
+
uiLogger.error(commands.mcp.setup.errors.errorParsingJsonFIle(config.configPath, error instanceof Error ? error.message : `${error}`));
|
|
140
128
|
return false;
|
|
141
129
|
}
|
|
142
130
|
// Initialize mcpServers if it doesn't exist
|
|
@@ -148,87 +136,87 @@ function setupMcpConfigFile(config) {
|
|
|
148
136
|
...config.mcpCommand,
|
|
149
137
|
};
|
|
150
138
|
// Write the updated config
|
|
151
|
-
|
|
152
|
-
|
|
139
|
+
fs.writeFileSync(config.configPath, JSON.stringify(mcpConfig, null, 2));
|
|
140
|
+
SpinniesManager.succeed('spinner', {
|
|
153
141
|
text: config.configuredMessage,
|
|
154
142
|
});
|
|
155
143
|
return true;
|
|
156
144
|
}
|
|
157
145
|
catch (error) {
|
|
158
|
-
|
|
146
|
+
SpinniesManager.fail('spinner', {
|
|
159
147
|
text: config.failedMessage,
|
|
160
148
|
});
|
|
161
|
-
|
|
149
|
+
logError(error);
|
|
162
150
|
return false;
|
|
163
151
|
}
|
|
164
152
|
}
|
|
165
|
-
async function setupClaudeCode(mcpCommand = defaultMcpCommand) {
|
|
153
|
+
export async function setupClaudeCode(mcpCommand = defaultMcpCommand) {
|
|
166
154
|
try {
|
|
167
|
-
|
|
168
|
-
text:
|
|
155
|
+
SpinniesManager.add('claudeCode', {
|
|
156
|
+
text: commands.mcp.setup.spinners.configuringClaudeCode,
|
|
169
157
|
});
|
|
170
158
|
try {
|
|
171
159
|
// Check if claude command is available
|
|
172
|
-
await
|
|
160
|
+
await execAsync('claude --version');
|
|
173
161
|
// Run claude mcp add command
|
|
174
162
|
const mcpConfig = JSON.stringify({
|
|
175
163
|
type: 'stdio',
|
|
176
164
|
...buildCommandWithAgentString(mcpCommand, claudeCode),
|
|
177
165
|
});
|
|
178
|
-
const { stdout } = await
|
|
166
|
+
const { stdout } = await execAsync('claude mcp list');
|
|
179
167
|
if (stdout.includes(mcpServerName)) {
|
|
180
|
-
|
|
181
|
-
text:
|
|
168
|
+
SpinniesManager.update('claudeCode', {
|
|
169
|
+
text: commands.mcp.setup.spinners.alreadyInstalled,
|
|
182
170
|
});
|
|
183
|
-
await
|
|
171
|
+
await execAsync(`claude mcp remove "${mcpServerName}" --scope user`);
|
|
184
172
|
}
|
|
185
|
-
await
|
|
186
|
-
|
|
187
|
-
text:
|
|
173
|
+
await execAsync(`claude mcp add-json "${mcpServerName}" '${mcpConfig}' --scope user`);
|
|
174
|
+
SpinniesManager.succeed('claudeCode', {
|
|
175
|
+
text: commands.mcp.setup.spinners.configuredClaudeCode,
|
|
188
176
|
});
|
|
189
177
|
return true;
|
|
190
178
|
}
|
|
191
179
|
catch (error) {
|
|
192
180
|
if (error instanceof Error &&
|
|
193
181
|
error.message.includes('claude: command not found')) {
|
|
194
|
-
|
|
195
|
-
text:
|
|
182
|
+
SpinniesManager.fail('claudeCode', {
|
|
183
|
+
text: commands.mcp.setup.spinners.claudeCodeNotFound,
|
|
196
184
|
});
|
|
197
185
|
}
|
|
198
186
|
else {
|
|
199
|
-
|
|
200
|
-
text:
|
|
187
|
+
SpinniesManager.fail('claudeCode', {
|
|
188
|
+
text: commands.mcp.setup.spinners.claudeCodeInstallFailed,
|
|
201
189
|
});
|
|
202
|
-
|
|
190
|
+
logError(error);
|
|
203
191
|
}
|
|
204
192
|
return false;
|
|
205
193
|
}
|
|
206
194
|
}
|
|
207
195
|
catch (error) {
|
|
208
|
-
|
|
209
|
-
text:
|
|
196
|
+
SpinniesManager.fail('claudeCode', {
|
|
197
|
+
text: commands.mcp.setup.spinners.claudeCodeInstallFailed,
|
|
210
198
|
});
|
|
211
|
-
|
|
199
|
+
logError(error);
|
|
212
200
|
return false;
|
|
213
201
|
}
|
|
214
202
|
}
|
|
215
|
-
function setupCursor(mcpCommand = defaultMcpCommand) {
|
|
216
|
-
const cursorConfigPath =
|
|
203
|
+
export function setupCursor(mcpCommand = defaultMcpCommand) {
|
|
204
|
+
const cursorConfigPath = path.join(os.homedir(), '.cursor', 'mcp.json');
|
|
217
205
|
return setupMcpConfigFile({
|
|
218
206
|
configPath: cursorConfigPath,
|
|
219
|
-
configuringMessage:
|
|
220
|
-
configuredMessage:
|
|
221
|
-
failedMessage:
|
|
207
|
+
configuringMessage: commands.mcp.setup.spinners.configuringCursor,
|
|
208
|
+
configuredMessage: commands.mcp.setup.spinners.configuredCursor,
|
|
209
|
+
failedMessage: commands.mcp.setup.spinners.failedToConfigureCursor,
|
|
222
210
|
mcpCommand: buildCommandWithAgentString(mcpCommand, cursor),
|
|
223
211
|
});
|
|
224
212
|
}
|
|
225
|
-
function setupWindsurf(mcpCommand = defaultMcpCommand) {
|
|
226
|
-
const windsurfConfigPath =
|
|
213
|
+
export function setupWindsurf(mcpCommand = defaultMcpCommand) {
|
|
214
|
+
const windsurfConfigPath = path.join(os.homedir(), '.codeium', 'windsurf', 'mcp_config.json');
|
|
227
215
|
return setupMcpConfigFile({
|
|
228
216
|
configPath: windsurfConfigPath,
|
|
229
|
-
configuringMessage:
|
|
230
|
-
configuredMessage:
|
|
231
|
-
failedMessage:
|
|
217
|
+
configuringMessage: commands.mcp.setup.spinners.configuringWindsurf,
|
|
218
|
+
configuredMessage: commands.mcp.setup.spinners.configuredWindsurf,
|
|
219
|
+
failedMessage: commands.mcp.setup.spinners.failedToConfigureWindsurf,
|
|
232
220
|
mcpCommand: buildCommandWithAgentString(mcpCommand, windsurf),
|
|
233
221
|
});
|
|
234
222
|
}
|