@hubspot/cli 7.7.20-experimental.0 → 7.7.21-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 +48 -53
- 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 -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 +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 +124 -130
- 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 +93 -131
- package/commands/project/__tests__/devUnifiedFlow.test.js +135 -140
- 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 +62 -67
- package/commands/project/deploy.d.ts +1 -1
- package/commands/project/deploy.js +72 -77
- 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 +50 -55
- package/commands/testAccount/createConfig.d.ts +2 -2
- 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 -1
- package/lang/en.js +369 -376
- package/lib/__tests__/accountTypes.test.js +20 -22
- package/lib/__tests__/buildAccount.test.js +26 -61
- 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 +59 -67
- 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 +69 -97
- 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 +23 -29
- package/lib/projects/add/v3AddComponent.d.ts +1 -1
- package/lib/projects/add/v3AddComponent.js +35 -41
- 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 +24 -26
- package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
- package/lib/projects/localDev/DevServerManagerV2.js +17 -22
- 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 +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 +55 -64
- 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 +16 -19
- 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 +15 -22
- 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 +12 -23
- 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 +44 -50
- 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 +33 -37
- package/mcp-server/tools/project/CreateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/CreateProjectTool.js +44 -48
- package/mcp-server/tools/project/DeployProject.d.ts +1 -1
- package/mcp-server/tools/project/DeployProject.js +16 -20
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
- package/mcp-server/tools/project/GuidedWalkthroughTool.js +19 -23
- package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
- package/mcp-server/tools/project/UploadProjectTools.js +10 -17
- package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/ValidateProjectTool.js +11 -15
- 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/package.json +15 -11
- 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/Yargs.js +1 -2
- package/types/{Cms.d.ts → cms.d.ts} +1 -1
- package/types/cms.js +1 -0
- package/types/sandboxes.js +1 -0
- package/types/Cms.js +0 -2
- package/types/Sandboxes.js +0 -2
- /package/types/{Sandboxes.d.ts → sandboxes.d.ts} +0 -0
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,38 +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
|
-
let configContent;
|
|
116
103
|
try {
|
|
117
|
-
configContent =
|
|
118
|
-
|
|
119
|
-
catch (error) {
|
|
120
|
-
SpinniesManager_1.default.fail('spinner', {
|
|
121
|
-
text: config.failedMessage,
|
|
122
|
-
});
|
|
123
|
-
(0, errorHandlers_1.logError)(error);
|
|
124
|
-
return false;
|
|
125
|
-
}
|
|
126
|
-
try {
|
|
127
|
-
// In the event the file exists, but is empty, initialize it to and empty object
|
|
128
|
-
if (configContent.trim() === '') {
|
|
129
|
-
mcpConfig = {};
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
mcpConfig = JSON.parse(configContent);
|
|
133
|
-
}
|
|
104
|
+
const configContent = fs.readFileSync(config.configPath, 'utf8');
|
|
105
|
+
mcpConfig = JSON.parse(configContent);
|
|
134
106
|
}
|
|
135
107
|
catch (error) {
|
|
136
|
-
|
|
108
|
+
SpinniesManager.fail('spinner', {
|
|
137
109
|
text: config.failedMessage,
|
|
138
110
|
});
|
|
139
|
-
|
|
111
|
+
logError(error);
|
|
140
112
|
return false;
|
|
141
113
|
}
|
|
142
114
|
// Initialize mcpServers if it doesn't exist
|
|
@@ -148,87 +120,87 @@ function setupMcpConfigFile(config) {
|
|
|
148
120
|
...config.mcpCommand,
|
|
149
121
|
};
|
|
150
122
|
// Write the updated config
|
|
151
|
-
|
|
152
|
-
|
|
123
|
+
fs.writeFileSync(config.configPath, JSON.stringify(mcpConfig, null, 2));
|
|
124
|
+
SpinniesManager.succeed('spinner', {
|
|
153
125
|
text: config.configuredMessage,
|
|
154
126
|
});
|
|
155
127
|
return true;
|
|
156
128
|
}
|
|
157
129
|
catch (error) {
|
|
158
|
-
|
|
130
|
+
SpinniesManager.fail('spinner', {
|
|
159
131
|
text: config.failedMessage,
|
|
160
132
|
});
|
|
161
|
-
|
|
133
|
+
logError(error);
|
|
162
134
|
return false;
|
|
163
135
|
}
|
|
164
136
|
}
|
|
165
|
-
async function setupClaudeCode(mcpCommand = defaultMcpCommand) {
|
|
137
|
+
export async function setupClaudeCode(mcpCommand = defaultMcpCommand) {
|
|
166
138
|
try {
|
|
167
|
-
|
|
168
|
-
text:
|
|
139
|
+
SpinniesManager.add('claudeCode', {
|
|
140
|
+
text: commands.mcp.setup.spinners.configuringClaudeCode,
|
|
169
141
|
});
|
|
170
142
|
try {
|
|
171
143
|
// Check if claude command is available
|
|
172
|
-
await
|
|
144
|
+
await execAsync('claude --version');
|
|
173
145
|
// Run claude mcp add command
|
|
174
146
|
const mcpConfig = JSON.stringify({
|
|
175
147
|
type: 'stdio',
|
|
176
148
|
...mcpCommand,
|
|
177
149
|
});
|
|
178
|
-
const { stdout } = await
|
|
150
|
+
const { stdout } = await execAsync('claude mcp list');
|
|
179
151
|
if (stdout.includes(mcpServerName)) {
|
|
180
|
-
|
|
181
|
-
text:
|
|
152
|
+
SpinniesManager.update('claudeCode', {
|
|
153
|
+
text: commands.mcp.setup.spinners.alreadyInstalled,
|
|
182
154
|
});
|
|
183
|
-
await
|
|
155
|
+
await execAsync(`claude mcp remove "${mcpServerName}" --scope user`);
|
|
184
156
|
}
|
|
185
|
-
await
|
|
186
|
-
|
|
187
|
-
text:
|
|
157
|
+
await execAsync(`claude mcp add-json "${mcpServerName}" '${mcpConfig}' --scope user`);
|
|
158
|
+
SpinniesManager.succeed('claudeCode', {
|
|
159
|
+
text: commands.mcp.setup.spinners.configuredClaudeCode,
|
|
188
160
|
});
|
|
189
161
|
return true;
|
|
190
162
|
}
|
|
191
163
|
catch (error) {
|
|
192
164
|
if (error instanceof Error &&
|
|
193
165
|
error.message.includes('claude: command not found')) {
|
|
194
|
-
|
|
195
|
-
text:
|
|
166
|
+
SpinniesManager.fail('claudeCode', {
|
|
167
|
+
text: commands.mcp.setup.spinners.claudeCodeNotFound,
|
|
196
168
|
});
|
|
197
169
|
}
|
|
198
170
|
else {
|
|
199
|
-
|
|
200
|
-
text:
|
|
171
|
+
SpinniesManager.fail('claudeCode', {
|
|
172
|
+
text: commands.mcp.setup.spinners.claudeCodeInstallFailed,
|
|
201
173
|
});
|
|
202
|
-
|
|
174
|
+
logError(error);
|
|
203
175
|
}
|
|
204
176
|
return false;
|
|
205
177
|
}
|
|
206
178
|
}
|
|
207
179
|
catch (error) {
|
|
208
|
-
|
|
209
|
-
text:
|
|
180
|
+
SpinniesManager.fail('claudeCode', {
|
|
181
|
+
text: commands.mcp.setup.spinners.claudeCodeInstallFailed,
|
|
210
182
|
});
|
|
211
|
-
|
|
183
|
+
logError(error);
|
|
212
184
|
return false;
|
|
213
185
|
}
|
|
214
186
|
}
|
|
215
|
-
function setupCursor(mcpCommand = defaultMcpCommand) {
|
|
216
|
-
const cursorConfigPath =
|
|
187
|
+
export function setupCursor(mcpCommand = defaultMcpCommand) {
|
|
188
|
+
const cursorConfigPath = path.join(os.homedir(), '.cursor', 'mcp.json');
|
|
217
189
|
return setupMcpConfigFile({
|
|
218
190
|
configPath: cursorConfigPath,
|
|
219
|
-
configuringMessage:
|
|
220
|
-
configuredMessage:
|
|
221
|
-
failedMessage:
|
|
191
|
+
configuringMessage: commands.mcp.setup.spinners.configuringCursor,
|
|
192
|
+
configuredMessage: commands.mcp.setup.spinners.configuredCursor,
|
|
193
|
+
failedMessage: commands.mcp.setup.spinners.failedToConfigureCursor,
|
|
222
194
|
mcpCommand,
|
|
223
195
|
});
|
|
224
196
|
}
|
|
225
|
-
function setupWindsurf(mcpCommand = defaultMcpCommand) {
|
|
226
|
-
const windsurfConfigPath =
|
|
197
|
+
export function setupWindsurf(mcpCommand = defaultMcpCommand) {
|
|
198
|
+
const windsurfConfigPath = path.join(os.homedir(), '.codeium', 'windsurf', 'mcp_config.json');
|
|
227
199
|
return setupMcpConfigFile({
|
|
228
200
|
configPath: windsurfConfigPath,
|
|
229
|
-
configuringMessage:
|
|
230
|
-
configuredMessage:
|
|
231
|
-
failedMessage:
|
|
201
|
+
configuringMessage: commands.mcp.setup.spinners.configuringWindsurf,
|
|
202
|
+
configuredMessage: commands.mcp.setup.spinners.configuredWindsurf,
|
|
203
|
+
failedMessage: commands.mcp.setup.spinners.failedToConfigureWindsurf,
|
|
232
204
|
mcpCommand,
|
|
233
205
|
});
|
|
234
206
|
}
|