@hubspot/cli 7.6.0-beta.2 → 7.6.0-beta.4
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.d.ts +1 -0
- package/api/__tests__/migrate.test.js +183 -0
- package/bin/cli.js +6 -2
- package/commands/__tests__/account.test.d.ts +1 -0
- package/commands/__tests__/account.test.js +74 -0
- package/commands/__tests__/auth.test.d.ts +1 -0
- package/commands/__tests__/auth.test.js +43 -0
- package/commands/__tests__/cms.test.d.ts +1 -0
- package/commands/__tests__/cms.test.js +49 -0
- package/commands/__tests__/config.test.d.ts +1 -0
- package/commands/__tests__/config.test.js +49 -0
- package/commands/__tests__/create.test.d.ts +1 -0
- package/commands/__tests__/create.test.js +38 -0
- package/commands/__tests__/customObject.test.d.ts +1 -0
- package/commands/__tests__/customObject.test.js +54 -0
- package/commands/__tests__/doctor.test.d.ts +1 -0
- package/commands/__tests__/doctor.test.js +139 -0
- package/commands/__tests__/feedback.test.d.ts +1 -0
- package/commands/__tests__/feedback.test.js +62 -0
- package/commands/__tests__/fetch.test.d.ts +1 -0
- package/commands/__tests__/fetch.test.js +56 -0
- package/commands/__tests__/filemanager.test.d.ts +1 -0
- package/commands/__tests__/filemanager.test.js +50 -0
- package/commands/__tests__/function.test.d.ts +1 -0
- package/commands/__tests__/function.test.js +51 -0
- package/commands/__tests__/getStarted.test.d.ts +1 -0
- package/commands/__tests__/getStarted.test.js +170 -0
- package/commands/__tests__/hubdb.test.d.ts +1 -0
- package/commands/__tests__/hubdb.test.js +55 -0
- package/commands/__tests__/init.test.d.ts +1 -0
- package/commands/__tests__/init.test.js +47 -0
- package/commands/__tests__/lint.test.d.ts +1 -0
- package/commands/__tests__/lint.test.js +38 -0
- package/commands/__tests__/list.test.d.ts +1 -0
- package/commands/__tests__/list.test.js +47 -0
- package/commands/__tests__/logs.test.d.ts +1 -0
- package/commands/__tests__/logs.test.js +70 -0
- package/commands/__tests__/mcp.test.d.ts +1 -0
- package/commands/__tests__/mcp.test.js +51 -0
- package/commands/__tests__/mv.test.d.ts +1 -0
- package/commands/__tests__/mv.test.js +84 -0
- package/commands/__tests__/open.test.d.ts +1 -0
- package/commands/__tests__/open.test.js +96 -0
- package/commands/__tests__/project.test.d.ts +1 -0
- package/commands/__tests__/project.test.js +100 -0
- package/commands/__tests__/remove.test.d.ts +1 -0
- package/commands/__tests__/remove.test.js +77 -0
- package/commands/__tests__/sandbox.test.d.ts +1 -0
- package/commands/__tests__/sandbox.test.js +49 -0
- package/commands/__tests__/secret.test.d.ts +1 -0
- package/commands/__tests__/secret.test.js +54 -0
- package/commands/__tests__/testAccount.test.d.ts +1 -0
- package/commands/__tests__/testAccount.test.js +60 -0
- package/commands/__tests__/theme.test.d.ts +1 -0
- package/commands/__tests__/theme.test.js +52 -0
- package/commands/account/__tests__/auth.test.d.ts +1 -0
- package/commands/account/__tests__/auth.test.js +31 -0
- package/commands/account/__tests__/clean.test.d.ts +1 -0
- package/commands/account/__tests__/clean.test.js +33 -0
- package/commands/account/__tests__/createOverride.test.d.ts +1 -0
- package/commands/account/__tests__/createOverride.test.js +37 -0
- package/commands/account/__tests__/info.test.d.ts +1 -0
- package/commands/account/__tests__/info.test.js +33 -0
- package/commands/account/__tests__/list.test.d.ts +1 -0
- package/commands/account/__tests__/list.test.js +33 -0
- package/commands/account/__tests__/remove.test.d.ts +1 -0
- package/commands/account/__tests__/remove.test.js +41 -0
- package/commands/account/__tests__/removeOverride.d.ts +1 -0
- package/commands/account/__tests__/removeOverride.js +30 -0
- package/commands/account/__tests__/rename.test.d.ts +1 -0
- package/commands/account/__tests__/rename.test.js +47 -0
- package/commands/account/__tests__/use.test.d.ts +1 -0
- package/commands/account/__tests__/use.test.js +37 -0
- package/commands/app/__tests__/migrate.test.d.ts +1 -0
- package/commands/app/__tests__/migrate.test.js +129 -0
- package/commands/app/secret/__tests__/add.test.d.ts +1 -0
- package/commands/app/secret/__tests__/add.test.js +33 -0
- package/commands/app/secret/__tests__/delete.test.d.ts +1 -0
- package/commands/app/secret/__tests__/delete.test.js +33 -0
- package/commands/app/secret/__tests__/list.test.d.ts +1 -0
- package/commands/app/secret/__tests__/list.test.js +30 -0
- package/commands/app/secret/__tests__/update.test.d.ts +1 -0
- package/commands/app/secret/__tests__/update.test.js +33 -0
- package/commands/customObject/__tests__/create.test.d.ts +1 -0
- package/commands/customObject/__tests__/create.test.js +45 -0
- package/commands/customObject/__tests__/schema.test.d.ts +1 -0
- package/commands/customObject/__tests__/schema.test.js +58 -0
- package/commands/customObject/schema/__tests__/create.test.d.ts +1 -0
- package/commands/customObject/schema/__tests__/create.test.js +33 -0
- package/commands/customObject/schema/__tests__/delete.test.d.ts +1 -0
- package/commands/customObject/schema/__tests__/delete.test.js +47 -0
- package/commands/customObject/schema/__tests__/fetch-all.test.d.ts +1 -0
- package/commands/customObject/schema/__tests__/fetch-all.test.js +46 -0
- package/commands/customObject/schema/__tests__/fetch.test.d.ts +1 -0
- package/commands/customObject/schema/__tests__/fetch.test.js +50 -0
- package/commands/customObject/schema/__tests__/list.test.d.ts +1 -0
- package/commands/customObject/schema/__tests__/list.test.js +34 -0
- package/commands/customObject/schema/__tests__/update.test.d.ts +1 -0
- package/commands/customObject/schema/__tests__/update.test.js +45 -0
- package/commands/fetch.js +0 -1
- package/commands/filemanager/__tests__/fetch.test.d.ts +1 -0
- package/commands/filemanager/__tests__/fetch.test.js +37 -0
- package/commands/filemanager/__tests__/upload.test.d.ts +1 -0
- package/commands/filemanager/__tests__/upload.test.js +35 -0
- package/commands/getStarted.js +8 -14
- package/commands/hubdb/__tests__/clear.test.d.ts +1 -0
- package/commands/hubdb/__tests__/clear.test.js +33 -0
- package/commands/hubdb/__tests__/create.test.d.ts +1 -0
- package/commands/hubdb/__tests__/create.test.js +33 -0
- package/commands/hubdb/__tests__/delete.test.d.ts +1 -0
- package/commands/hubdb/__tests__/delete.test.js +33 -0
- package/commands/hubdb/__tests__/fetch.test.d.ts +1 -0
- package/commands/hubdb/__tests__/fetch.test.js +33 -0
- package/commands/hubdb/__tests__/list.test.d.ts +1 -0
- package/commands/hubdb/__tests__/list.test.js +101 -0
- package/commands/logs.js +0 -1
- package/commands/mcp/__tests__/setup.test.d.ts +1 -0
- package/commands/mcp/__tests__/setup.test.js +31 -0
- package/commands/mcp/__tests__/start.test.d.ts +1 -0
- package/commands/mcp/__tests__/start.test.js +32 -0
- package/commands/mcp/setup.js +1 -0
- package/commands/mcp/start.d.ts +4 -1
- package/commands/mcp/start.js +8 -3
- package/commands/open.js +14 -12
- package/commands/project/__tests__/add.test.d.ts +1 -0
- package/commands/project/__tests__/add.test.js +48 -0
- package/commands/project/__tests__/create.test.d.ts +1 -0
- package/commands/project/__tests__/create.test.js +45 -0
- package/commands/project/__tests__/deploy.test.d.ts +1 -0
- package/commands/project/__tests__/deploy.test.js +350 -0
- package/commands/project/__tests__/devUnifiedFlow.test.d.ts +1 -0
- package/commands/project/__tests__/devUnifiedFlow.test.js +419 -0
- package/commands/project/__tests__/download.test.d.ts +1 -0
- package/commands/project/__tests__/download.test.js +44 -0
- package/commands/project/__tests__/fixtures/exampleProject.json +33 -0
- package/commands/project/__tests__/installDeps.test.d.ts +1 -0
- package/commands/project/__tests__/installDeps.test.js +180 -0
- package/commands/project/__tests__/listBuilds.test.d.ts +1 -0
- package/commands/project/__tests__/listBuilds.test.js +43 -0
- package/commands/project/__tests__/logs.test.d.ts +1 -0
- package/commands/project/__tests__/logs.test.js +246 -0
- package/commands/project/__tests__/migrate.test.d.ts +1 -0
- package/commands/project/__tests__/migrate.test.js +116 -0
- package/commands/project/__tests__/migrateApp.test.d.ts +1 -0
- package/commands/project/__tests__/migrateApp.test.js +87 -0
- package/commands/project/__tests__/open.test.d.ts +1 -0
- package/commands/project/__tests__/open.test.js +44 -0
- package/commands/project/__tests__/profile.test.d.ts +1 -0
- package/commands/project/__tests__/profile.test.js +47 -0
- package/commands/project/__tests__/upload.test.d.ts +1 -0
- package/commands/project/__tests__/upload.test.js +48 -0
- package/commands/project/__tests__/watch.test.d.ts +1 -0
- package/commands/project/__tests__/watch.test.js +40 -0
- package/commands/project/deploy.d.ts +1 -0
- package/commands/project/deploy.js +21 -10
- package/commands/sandbox/__tests__/create.test.d.ts +1 -0
- package/commands/sandbox/__tests__/create.test.js +36 -0
- package/commands/sandbox/__tests__/delete.test.d.ts +1 -0
- package/commands/sandbox/__tests__/delete.test.js +36 -0
- package/commands/secret/__tests__/addSecret.test.d.ts +1 -0
- package/commands/secret/__tests__/addSecret.test.js +34 -0
- package/commands/secret/__tests__/deleteSecret.test.d.ts +1 -0
- package/commands/secret/__tests__/deleteSecret.test.js +46 -0
- package/commands/secret/__tests__/listSecret.test.d.ts +1 -0
- package/commands/secret/__tests__/listSecret.test.js +34 -0
- package/commands/secret/__tests__/updateSecret.test.d.ts +1 -0
- package/commands/secret/__tests__/updateSecret.test.js +34 -0
- package/commands/testAccount/__tests__/create.test.d.ts +1 -0
- package/commands/testAccount/__tests__/create.test.js +38 -0
- package/commands/testAccount/__tests__/createConfig.test.d.ts +1 -0
- package/commands/testAccount/__tests__/createConfig.test.js +37 -0
- package/commands/testAccount/__tests__/delete.test.d.ts +1 -0
- package/commands/testAccount/__tests__/delete.test.js +36 -0
- package/commands/testAccount/create.js +16 -3
- package/commands/testAccount/createConfig.d.ts +0 -2
- package/commands/testAccount/createConfig.js +7 -8
- package/commands/theme/__tests__/generate-selectors.test.d.ts +1 -0
- package/commands/theme/__tests__/generate-selectors.test.js +33 -0
- package/commands/theme/__tests__/marketplace-validate.test.d.ts +1 -0
- package/commands/theme/__tests__/marketplace-validate.test.js +41 -0
- package/commands/theme/__tests__/preview.test.d.ts +1 -0
- package/commands/theme/__tests__/preview.test.js +65 -0
- package/lang/en.d.ts +15 -2
- package/lang/en.js +15 -2
- package/lib/__tests__/accountTypes.test.d.ts +1 -0
- package/lib/__tests__/accountTypes.test.js +100 -0
- package/lib/__tests__/buildAccount.test.d.ts +1 -0
- package/lib/__tests__/buildAccount.test.js +231 -0
- package/lib/__tests__/commonOpts.test.d.ts +1 -0
- package/lib/__tests__/commonOpts.test.js +87 -0
- package/lib/__tests__/dependencyManagement.test.d.ts +1 -0
- package/lib/__tests__/dependencyManagement.test.js +180 -0
- package/lib/__tests__/developerTestAccounts.test.d.ts +1 -0
- package/lib/__tests__/developerTestAccounts.test.js +180 -0
- package/lib/__tests__/hasFeature.test.d.ts +1 -0
- package/lib/__tests__/hasFeature.test.js +37 -0
- package/lib/__tests__/npm.test.d.ts +1 -0
- package/lib/__tests__/npm.test.js +62 -0
- package/lib/__tests__/oauth.test.d.ts +1 -0
- package/lib/__tests__/oauth.test.js +113 -0
- package/lib/__tests__/parsing.test.d.ts +1 -0
- package/lib/__tests__/parsing.test.js +36 -0
- package/lib/__tests__/polling.test.d.ts +1 -0
- package/lib/__tests__/polling.test.js +78 -0
- package/lib/__tests__/process.test.d.ts +1 -0
- package/lib/__tests__/process.test.js +90 -0
- package/lib/__tests__/projectProfiles.test.d.ts +1 -0
- package/lib/__tests__/projectProfiles.test.js +134 -0
- package/lib/__tests__/sandboxSync.test.d.ts +1 -0
- package/lib/__tests__/sandboxSync.test.js +131 -0
- package/lib/__tests__/sandboxes.test.d.ts +1 -0
- package/lib/__tests__/sandboxes.test.js +148 -0
- package/lib/__tests__/serverlessLogs.test.d.ts +1 -0
- package/lib/__tests__/serverlessLogs.test.js +154 -0
- package/lib/__tests__/usageTracking.test.d.ts +1 -0
- package/lib/__tests__/usageTracking.test.js +165 -0
- package/lib/__tests__/validation.test.d.ts +1 -0
- package/lib/__tests__/validation.test.js +145 -0
- package/lib/__tests__/yargsUtils.test.d.ts +1 -0
- package/lib/__tests__/yargsUtils.test.js +74 -0
- package/lib/app/__tests__/migrate.test.d.ts +1 -0
- package/lib/app/__tests__/migrate.test.js +495 -0
- package/lib/app/__tests__/migrate_legacy.test.d.ts +1 -0
- package/lib/app/__tests__/migrate_legacy.test.js +136 -0
- package/lib/app/migrate.js +2 -6
- package/lib/dependencyManagement.d.ts +1 -1
- package/lib/dependencyManagement.js +2 -2
- package/lib/doctor/Diagnosis.js +11 -11
- package/lib/doctor/Doctor.js +42 -42
- package/lib/doctor/__tests__/Diagnosis.test.d.ts +1 -0
- package/lib/doctor/__tests__/Diagnosis.test.js +87 -0
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +1 -0
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +172 -0
- package/lib/doctor/__tests__/Doctor.test.d.ts +1 -0
- package/lib/doctor/__tests__/Doctor.test.js +398 -0
- package/lib/errorHandlers/index.js +8 -0
- package/lib/mcp/setup.js +26 -5
- package/lib/middleware/__test__/configMiddleware.test.js +12 -12
- package/lib/middleware/__test__/gitMiddleware.test.js +4 -4
- package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -2
- package/lib/middleware/__test__/requestMiddleware.test.js +2 -2
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +7 -7
- package/lib/middleware/notificationsMiddleware.js +16 -13
- package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +1 -0
- package/lib/projects/__tests__/AppDevModeInterface.test.js +517 -0
- package/lib/projects/__tests__/LocalDevProcess.test.d.ts +1 -0
- package/lib/projects/__tests__/LocalDevProcess.test.js +314 -0
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +1 -0
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +175 -0
- package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +1 -0
- package/lib/projects/__tests__/ProjectLogsManager.test.js +191 -0
- package/lib/projects/__tests__/buildAndDeploy.test.d.ts +1 -0
- package/lib/projects/__tests__/buildAndDeploy.test.js +25 -0
- package/lib/projects/__tests__/components.test.d.ts +1 -0
- package/lib/projects/__tests__/components.test.js +186 -0
- package/lib/projects/__tests__/projects.test.d.ts +1 -0
- package/lib/projects/__tests__/projects.test.js +89 -0
- package/lib/projects/__tests__/structure.test.d.ts +1 -0
- package/lib/projects/__tests__/structure.test.js +249 -0
- package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +1 -0
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +206 -0
- package/lib/projects/add/__tests__/v3AddComponent.test.d.ts +1 -0
- package/lib/projects/add/__tests__/v3AddComponent.test.js +190 -0
- package/lib/projects/create/__tests__/legacy.test.d.ts +1 -0
- package/lib/projects/create/__tests__/legacy.test.js +126 -0
- package/lib/projects/create/__tests__/v3.test.d.ts +1 -0
- package/lib/projects/create/__tests__/v3.test.js +80 -0
- package/lib/projects/create/v3.d.ts +3 -2
- package/lib/projects/create/v3.js +2 -2
- package/lib/projects/localDev/DevServerManager.js +0 -1
- package/lib/projects/upload.js +1 -1
- package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +1 -0
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +30 -0
- package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +1 -0
- package/lib/prompts/__tests__/projectsLogsPrompt.test.js +42 -0
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +10 -9
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +75 -31
- package/lib/prompts/createModulePrompt.js +1 -2
- package/lib/prompts/projectAddPrompt.d.ts +2 -1
- package/lib/prompts/projectAddPrompt.js +2 -1
- package/lib/prompts/promptUtils.d.ts +2 -2
- package/lib/prompts/promptUtils.js +161 -35
- package/lib/prompts/selectProjectTemplatePrompt.d.ts +2 -1
- package/lib/prompts/selectProjectTemplatePrompt.js +2 -1
- package/lib/schema.js +5 -1
- package/lib/testUtils.js +1 -2
- package/lib/ui/SpinniesManager.js +0 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/supportHyperlinks.js +2 -2
- package/lib/ui/supportsColor.js +2 -2
- package/lib/usageTracking.d.ts +11 -0
- package/lib/usageTracking.js +67 -73
- package/lib/utils/hasFlag.d.ts +1 -0
- package/lib/utils/hasFlag.js +15 -0
- package/lib/yargsUtils.d.ts +2 -1
- package/lib/yargsUtils.js +3 -13
- package/mcp-server/tools/project/AddFeatureToProject.js +4 -1
- package/mcp-server/tools/project/CreateProjectTool.d.ts +2 -2
- package/mcp-server/tools/project/CreateProjectTool.js +4 -1
- package/mcp-server/tools/project/DeployProject.js +4 -1
- package/mcp-server/tools/project/GuidedWalkthroughTool.js +4 -1
- package/mcp-server/tools/project/UploadProjectTools.js +4 -1
- package/mcp-server/tools/project/ValidateProjectTool.js +4 -1
- package/mcp-server/tools/project/__tests__/AddFeatureToProject.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/AddFeatureToProject.test.js +153 -0
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +130 -0
- package/mcp-server/tools/project/__tests__/DeployProject.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/DeployProject.test.js +121 -0
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +128 -0
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +109 -0
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +112 -0
- package/mcp-server/utils/__tests__/command.test.d.ts +1 -0
- package/mcp-server/utils/__tests__/command.test.js +47 -0
- package/mcp-server/utils/__tests__/project.test.d.ts +1 -0
- package/mcp-server/utils/__tests__/project.test.js +84 -0
- package/mcp-server/utils/project.js +3 -0
- package/mcp-server/utils/toolUsageTracking.d.ts +1 -0
- package/mcp-server/utils/toolUsageTracking.js +25 -0
- package/package.json +9 -9
- package/types/Prompts.d.ts +4 -2
package/lib/doctor/Diagnosis.js
CHANGED
|
@@ -6,7 +6,7 @@ const chalk_1 = require("chalk");
|
|
|
6
6
|
const interpolation_1 = require("../interpolation");
|
|
7
7
|
const ui_1 = require("../ui");
|
|
8
8
|
const index_1 = require("../ui/index");
|
|
9
|
-
const
|
|
9
|
+
const lang_1 = require("../lang");
|
|
10
10
|
class Diagnosis {
|
|
11
11
|
prefixes;
|
|
12
12
|
diagnosis;
|
|
@@ -21,24 +21,24 @@ class Diagnosis {
|
|
|
21
21
|
};
|
|
22
22
|
this.diagnosis = {
|
|
23
23
|
cli: {
|
|
24
|
-
header: i18n(`lib.doctor.diagnosis.cli.header`),
|
|
24
|
+
header: (0, lang_1.i18n)(`lib.doctor.diagnosis.cli.header`),
|
|
25
25
|
sections: [],
|
|
26
26
|
},
|
|
27
27
|
cliConfig: {
|
|
28
|
-
header: i18n(`lib.doctor.diagnosis.cliConfig.header`),
|
|
28
|
+
header: (0, lang_1.i18n)(`lib.doctor.diagnosis.cliConfig.header`),
|
|
29
29
|
sections: [],
|
|
30
30
|
},
|
|
31
31
|
defaultAccountOverrideFile: {
|
|
32
|
-
header: i18n(`lib.doctor.diagnosis.defaultAccountOverrideFile.header`),
|
|
32
|
+
header: (0, lang_1.i18n)(`lib.doctor.diagnosis.defaultAccountOverrideFile.header`),
|
|
33
33
|
sections: [],
|
|
34
34
|
},
|
|
35
35
|
project: {
|
|
36
|
-
header: i18n(`lib.doctor.diagnosis.projectConfig.header`),
|
|
36
|
+
header: (0, lang_1.i18n)(`lib.doctor.diagnosis.projectConfig.header`),
|
|
37
37
|
subheaders: [
|
|
38
|
-
i18n(`lib.doctor.diagnosis.projectConfig.projectDirSubHeader`, {
|
|
38
|
+
(0, lang_1.i18n)(`lib.doctor.diagnosis.projectConfig.projectDirSubHeader`, {
|
|
39
39
|
projectDir: diagnosticInfo.project?.config?.projectDir,
|
|
40
40
|
}),
|
|
41
|
-
i18n(`lib.doctor.diagnosis.projectConfig.projectNameSubHeader`, {
|
|
41
|
+
(0, lang_1.i18n)(`lib.doctor.diagnosis.projectConfig.projectNameSubHeader`, {
|
|
42
42
|
projectName: diagnosticInfo.project?.config?.projectConfig?.name,
|
|
43
43
|
}),
|
|
44
44
|
],
|
|
@@ -47,10 +47,10 @@ class Diagnosis {
|
|
|
47
47
|
};
|
|
48
48
|
if (diagnosticInfo.config) {
|
|
49
49
|
this.diagnosis.cliConfig.subheaders = [
|
|
50
|
-
i18n(`lib.doctor.diagnosis.cliConfig.configFileSubHeader`, {
|
|
50
|
+
(0, lang_1.i18n)(`lib.doctor.diagnosis.cliConfig.configFileSubHeader`, {
|
|
51
51
|
filename: diagnosticInfo.config,
|
|
52
52
|
}),
|
|
53
|
-
i18n(`lib.doctor.diagnosis.cliConfig.defaultAccountSubHeader`, {
|
|
53
|
+
(0, lang_1.i18n)(`lib.doctor.diagnosis.cliConfig.defaultAccountSubHeader`, {
|
|
54
54
|
accountDetails: (0, ui_1.uiAccountDescription)(accountId),
|
|
55
55
|
}),
|
|
56
56
|
];
|
|
@@ -86,10 +86,10 @@ class Diagnosis {
|
|
|
86
86
|
return '';
|
|
87
87
|
}
|
|
88
88
|
output.push('');
|
|
89
|
-
output.push(i18n(`lib.doctor.diagnosis.counts.errors`, {
|
|
89
|
+
output.push((0, lang_1.i18n)(`lib.doctor.diagnosis.counts.errors`, {
|
|
90
90
|
count: this.errorCount,
|
|
91
91
|
}));
|
|
92
|
-
output.push(i18n(`lib.doctor.diagnosis.counts.warnings`, {
|
|
92
|
+
output.push((0, lang_1.i18n)(`lib.doctor.diagnosis.counts.warnings`, {
|
|
93
93
|
count: this.warningCount,
|
|
94
94
|
}));
|
|
95
95
|
output.push('');
|
package/lib/doctor/Doctor.js
CHANGED
|
@@ -21,8 +21,8 @@ const index_1 = require("@hubspot/local-dev-lib/errors/index");
|
|
|
21
21
|
const urls_1 = require("@hubspot/local-dev-lib/urls");
|
|
22
22
|
const ui_1 = require("../ui");
|
|
23
23
|
const package_json_1 = __importDefault(require("../../package.json"));
|
|
24
|
-
const
|
|
25
|
-
const
|
|
24
|
+
const lang_1 = require("../lang");
|
|
25
|
+
const ui_2 = require("../ui");
|
|
26
26
|
const minMajorNodeVersion = 18;
|
|
27
27
|
class Doctor {
|
|
28
28
|
accountId;
|
|
@@ -37,7 +37,7 @@ class Doctor {
|
|
|
37
37
|
}
|
|
38
38
|
async diagnose() {
|
|
39
39
|
SpinniesManager_1.default.add('runningDiagnostics', {
|
|
40
|
-
text: i18n(`lib.doctor.runningDiagnostics`),
|
|
40
|
+
text: (0, lang_1.i18n)(`lib.doctor.runningDiagnostics`),
|
|
41
41
|
});
|
|
42
42
|
this.diagnosticInfo =
|
|
43
43
|
await this.diagnosticInfoBuilder.generateDiagnosticInfo();
|
|
@@ -54,7 +54,7 @@ class Doctor {
|
|
|
54
54
|
this.performDefaultAccountOverrideFileChecks();
|
|
55
55
|
this.performCliConfigSettingsChecks();
|
|
56
56
|
SpinniesManager_1.default.succeed('runningDiagnostics', {
|
|
57
|
-
text: i18n(`lib.doctor.diagnosticsComplete`),
|
|
57
|
+
text: (0, lang_1.i18n)(`lib.doctor.diagnosticsComplete`),
|
|
58
58
|
succeedColor: 'white',
|
|
59
59
|
});
|
|
60
60
|
this.diagnosticInfo.diagnosis = this.diagnosis.toString();
|
|
@@ -80,8 +80,8 @@ class Doctor {
|
|
|
80
80
|
if (!this.diagnosticInfo?.config) {
|
|
81
81
|
this.diagnosis?.addCLIConfigSection({
|
|
82
82
|
type: 'error',
|
|
83
|
-
message: i18n(`lib.doctor.diagnosis.cliConfig.noConfigFile`),
|
|
84
|
-
secondaryMessaging: i18n(`lib.doctor.diagnosis.cliConfig.noConfigFileSecondary`, {
|
|
83
|
+
message: (0, lang_1.i18n)(`lib.doctor.diagnosis.cliConfig.noConfigFile`),
|
|
84
|
+
secondaryMessaging: (0, lang_1.i18n)(`lib.doctor.diagnosis.cliConfig.noConfigFileSecondary`, {
|
|
85
85
|
command: (0, ui_1.uiCommandReference)('hs init'),
|
|
86
86
|
}),
|
|
87
87
|
});
|
|
@@ -93,13 +93,13 @@ class Doctor {
|
|
|
93
93
|
if (this.diagnosticInfo?.defaultAccountOverrideFile) {
|
|
94
94
|
this.diagnosis?.addDefaultAccountOverrideFileSection({
|
|
95
95
|
type: 'warning',
|
|
96
|
-
message: i18n(`lib.doctor.defaultAccountOverrideFileChecks.overrideActive`, {
|
|
96
|
+
message: (0, lang_1.i18n)(`lib.doctor.defaultAccountOverrideFileChecks.overrideActive`, {
|
|
97
97
|
defaultAccountOverrideFile: this.diagnosticInfo.defaultAccountOverrideFile,
|
|
98
98
|
}),
|
|
99
99
|
});
|
|
100
100
|
this.diagnosis?.addDefaultAccountOverrideFileSection({
|
|
101
101
|
type: 'warning',
|
|
102
|
-
message: i18n(`lib.doctor.defaultAccountOverrideFileChecks.overrideAccountId`, {
|
|
102
|
+
message: (0, lang_1.i18n)(`lib.doctor.defaultAccountOverrideFileChecks.overrideAccountId`, {
|
|
103
103
|
overrideAccountId: (0, config_1.getCWDAccountOverride)(),
|
|
104
104
|
}),
|
|
105
105
|
});
|
|
@@ -109,8 +109,8 @@ class Doctor {
|
|
|
109
109
|
if (this.diagnosticInfo?.configSettings.httpUseLocalhost) {
|
|
110
110
|
this.diagnosis?.addCLIConfigSection({
|
|
111
111
|
type: 'warning',
|
|
112
|
-
message: i18n(`lib.doctor.diagnosis.cliConfig.settings.httpUseLocalhost`),
|
|
113
|
-
secondaryMessaging: i18n(`lib.doctor.diagnosis.cliConfig.settings.httpUseLocalhostSecondary`),
|
|
112
|
+
message: (0, lang_1.i18n)(`lib.doctor.diagnosis.cliConfig.settings.httpUseLocalhost`),
|
|
113
|
+
secondaryMessaging: (0, lang_1.i18n)(`lib.doctor.diagnosis.cliConfig.settings.httpUseLocalhostSecondary`),
|
|
114
114
|
});
|
|
115
115
|
}
|
|
116
116
|
}
|
|
@@ -121,14 +121,14 @@ class Doctor {
|
|
|
121
121
|
const missingScopes = (await (0, personalAccessKey_1.authorizedScopesForPortalAndUser)(this.accountId)).filter((data) => data.userAuthorized && !pakScopes.has(data.scopeGroup.name));
|
|
122
122
|
this.diagnosis?.addCLIConfigSection({
|
|
123
123
|
type: 'success',
|
|
124
|
-
message: i18n(`lib.doctor.accountChecks.active`),
|
|
124
|
+
message: (0, lang_1.i18n)(`lib.doctor.accountChecks.active`),
|
|
125
125
|
});
|
|
126
|
-
const linkToPakUI = uiLink(i18n(`lib.doctor.accountChecks.pak.viewScopes`), `${(0, urls_1.getHubSpotWebsiteOrigin)(this.diagnosticInfoBuilder?.env || 'PROD')}/personal-access-key/${this.diagnosticInfo?.account.accountId}`);
|
|
126
|
+
const linkToPakUI = (0, ui_2.uiLink)((0, lang_1.i18n)(`lib.doctor.accountChecks.pak.viewScopes`), `${(0, urls_1.getHubSpotWebsiteOrigin)(this.diagnosticInfoBuilder?.env || 'PROD')}/personal-access-key/${this.diagnosticInfo?.account.accountId}`);
|
|
127
127
|
if (missingScopes.length > 0) {
|
|
128
128
|
this.diagnosis?.addCLIConfigSection({
|
|
129
129
|
type: 'warning',
|
|
130
|
-
message: i18n(`lib.doctor.accountChecks.pak.incomplete`),
|
|
131
|
-
secondaryMessaging: i18n(`lib.doctor.accountChecks.pak.incompleteSecondary`, {
|
|
130
|
+
message: (0, lang_1.i18n)(`lib.doctor.accountChecks.pak.incomplete`),
|
|
131
|
+
secondaryMessaging: (0, lang_1.i18n)(`lib.doctor.accountChecks.pak.incompleteSecondary`, {
|
|
132
132
|
command: (0, ui_1.uiCommandReference)(`hs auth`),
|
|
133
133
|
link: linkToPakUI,
|
|
134
134
|
}),
|
|
@@ -137,7 +137,7 @@ class Doctor {
|
|
|
137
137
|
else {
|
|
138
138
|
this.diagnosis?.addCLIConfigSection({
|
|
139
139
|
type: 'success',
|
|
140
|
-
message: i18n(`lib.doctor.accountChecks.pak.valid`, {
|
|
140
|
+
message: (0, lang_1.i18n)(`lib.doctor.accountChecks.pak.valid`, {
|
|
141
141
|
link: linkToPakUI,
|
|
142
142
|
}),
|
|
143
143
|
});
|
|
@@ -157,8 +157,8 @@ class Doctor {
|
|
|
157
157
|
if (portalNotActive) {
|
|
158
158
|
this.diagnosis?.addCLIConfigSection({
|
|
159
159
|
type: 'error',
|
|
160
|
-
message: i18n(`lib.doctor.accountChecks.inactive`),
|
|
161
|
-
secondaryMessaging: i18n(`lib.doctor.accountChecks.inactiveSecondary`, {
|
|
160
|
+
message: (0, lang_1.i18n)(`lib.doctor.accountChecks.inactive`),
|
|
161
|
+
secondaryMessaging: (0, lang_1.i18n)(`lib.doctor.accountChecks.inactiveSecondary`, {
|
|
162
162
|
command: (0, ui_1.uiCommandReference)(`hs accounts clean`),
|
|
163
163
|
}),
|
|
164
164
|
});
|
|
@@ -170,12 +170,12 @@ class Doctor {
|
|
|
170
170
|
})) {
|
|
171
171
|
this.diagnosis?.addCLIConfigSection({
|
|
172
172
|
type: 'success',
|
|
173
|
-
message: i18n(`lib.doctor.accountChecks.active`),
|
|
173
|
+
message: (0, lang_1.i18n)(`lib.doctor.accountChecks.active`),
|
|
174
174
|
});
|
|
175
175
|
this.diagnosis?.addCLIConfigSection({
|
|
176
176
|
type: 'error',
|
|
177
|
-
message: i18n(`lib.doctor.accountChecks.pak.invalid`),
|
|
178
|
-
secondaryMessaging: i18n(`lib.doctor.accountChecks.pak.invalidSecondary`, {
|
|
177
|
+
message: (0, lang_1.i18n)(`lib.doctor.accountChecks.pak.invalid`),
|
|
178
|
+
secondaryMessaging: (0, lang_1.i18n)(`lib.doctor.accountChecks.pak.invalidSecondary`, {
|
|
179
179
|
command: (0, ui_1.uiCommandReference)(`hs auth`),
|
|
180
180
|
}),
|
|
181
181
|
});
|
|
@@ -183,7 +183,7 @@ class Doctor {
|
|
|
183
183
|
else {
|
|
184
184
|
this.diagnosis?.addCLIConfigSection({
|
|
185
185
|
type: 'error',
|
|
186
|
-
message: i18n(`lib.doctor.accountChecks.unableToDetermine`),
|
|
186
|
+
message: (0, lang_1.i18n)(`lib.doctor.accountChecks.unableToDetermine`),
|
|
187
187
|
});
|
|
188
188
|
}
|
|
189
189
|
}
|
|
@@ -192,7 +192,7 @@ class Doctor {
|
|
|
192
192
|
if (!this.diagnosticInfo?.versions.node) {
|
|
193
193
|
return this.diagnosis?.addCliSection({
|
|
194
194
|
type: 'error',
|
|
195
|
-
message: i18n(`lib.doctor.nodeChecks.unableToDetermine`),
|
|
195
|
+
message: (0, lang_1.i18n)(`lib.doctor.nodeChecks.unableToDetermine`),
|
|
196
196
|
});
|
|
197
197
|
}
|
|
198
198
|
const nodeVersion = this.diagnosticInfo?.versions.node?.split('.');
|
|
@@ -200,14 +200,14 @@ class Doctor {
|
|
|
200
200
|
if (!currentNodeMajor || parseInt(currentNodeMajor) < minMajorNodeVersion) {
|
|
201
201
|
return this.diagnosis?.addCliSection({
|
|
202
202
|
type: 'warning',
|
|
203
|
-
message: i18n(`lib.doctor.nodeChecks.minimumNotMet`, {
|
|
203
|
+
message: (0, lang_1.i18n)(`lib.doctor.nodeChecks.minimumNotMet`, {
|
|
204
204
|
nodeVersion: this.diagnosticInfo?.versions.node,
|
|
205
205
|
}),
|
|
206
206
|
});
|
|
207
207
|
}
|
|
208
208
|
this.diagnosis?.addCliSection({
|
|
209
209
|
type: 'success',
|
|
210
|
-
message: i18n(`lib.doctor.nodeChecks.success`, {
|
|
210
|
+
message: (0, lang_1.i18n)(`lib.doctor.nodeChecks.success`, {
|
|
211
211
|
nodeVersion: this.diagnosticInfo?.versions.node,
|
|
212
212
|
}),
|
|
213
213
|
});
|
|
@@ -217,12 +217,12 @@ class Doctor {
|
|
|
217
217
|
if (!npmVersion) {
|
|
218
218
|
return this.diagnosis?.addCliSection({
|
|
219
219
|
type: 'error',
|
|
220
|
-
message: i18n(`lib.doctor.npmChecks.notInstalled`),
|
|
220
|
+
message: (0, lang_1.i18n)(`lib.doctor.npmChecks.notInstalled`),
|
|
221
221
|
});
|
|
222
222
|
}
|
|
223
223
|
this.diagnosis?.addCliSection({
|
|
224
224
|
type: 'success',
|
|
225
|
-
message: i18n(`lib.doctor.npmChecks.installed`, {
|
|
225
|
+
message: (0, lang_1.i18n)(`lib.doctor.npmChecks.installed`, {
|
|
226
226
|
npmVersion,
|
|
227
227
|
}),
|
|
228
228
|
});
|
|
@@ -238,10 +238,10 @@ class Doctor {
|
|
|
238
238
|
catch (e) {
|
|
239
239
|
return this.diagnosis?.addCliSection({
|
|
240
240
|
type: 'error',
|
|
241
|
-
message: i18n(`lib.doctor.hsChecks.unableToDetermine`),
|
|
242
|
-
secondaryMessaging: i18n(`lib.doctor.hsChecks.unableToDetermineSecondary`, {
|
|
241
|
+
message: (0, lang_1.i18n)(`lib.doctor.hsChecks.unableToDetermine`),
|
|
242
|
+
secondaryMessaging: (0, lang_1.i18n)(`lib.doctor.hsChecks.unableToDetermineSecondary`, {
|
|
243
243
|
command: (0, ui_1.uiCommandReference)(`hs --version`),
|
|
244
|
-
link: uiLink(i18n(`lib.doctor.hsChecks.unableToDetermineSecondaryLink`), `https://www.npmjs.com/package/${package_json_1.default.name}?activeTab=versions`),
|
|
244
|
+
link: (0, ui_2.uiLink)((0, lang_1.i18n)(`lib.doctor.hsChecks.unableToDetermineSecondaryLink`), `https://www.npmjs.com/package/${package_json_1.default.name}?activeTab=versions`),
|
|
245
245
|
}),
|
|
246
246
|
});
|
|
247
247
|
}
|
|
@@ -249,10 +249,10 @@ class Doctor {
|
|
|
249
249
|
const onNextTag = package_json_1.default.version.includes('beta');
|
|
250
250
|
this.diagnosis?.addCliSection({
|
|
251
251
|
type: 'warning',
|
|
252
|
-
message: i18n(`lib.doctor.hsChecks.notLatest`, {
|
|
252
|
+
message: (0, lang_1.i18n)(`lib.doctor.hsChecks.notLatest`, {
|
|
253
253
|
hsVersion: package_json_1.default.version,
|
|
254
254
|
}),
|
|
255
|
-
secondaryMessaging: i18n(`lib.doctor.hsChecks.notLatestSecondary`, {
|
|
255
|
+
secondaryMessaging: (0, lang_1.i18n)(`lib.doctor.hsChecks.notLatestSecondary`, {
|
|
256
256
|
hsVersion: onNextTag ? nextCliVersion : latestCLIVersion,
|
|
257
257
|
command: (0, ui_1.uiCommandReference)(`npm install -g ${package_json_1.default.name}`),
|
|
258
258
|
}),
|
|
@@ -261,7 +261,7 @@ class Doctor {
|
|
|
261
261
|
else {
|
|
262
262
|
this.diagnosis?.addCliSection({
|
|
263
263
|
type: 'success',
|
|
264
|
-
message: i18n(`lib.doctor.hsChecks.latest`, {
|
|
264
|
+
message: (0, lang_1.i18n)(`lib.doctor.hsChecks.latest`, {
|
|
265
265
|
hsVersion: package_json_1.default.version,
|
|
266
266
|
}),
|
|
267
267
|
});
|
|
@@ -277,10 +277,10 @@ class Doctor {
|
|
|
277
277
|
foundError = true;
|
|
278
278
|
this.diagnosis?.addProjectSection({
|
|
279
279
|
type: 'warning',
|
|
280
|
-
message: i18n(`lib.doctor.projectDependenciesChecks.missingDependencies`, {
|
|
280
|
+
message: (0, lang_1.i18n)(`lib.doctor.projectDependenciesChecks.missingDependencies`, {
|
|
281
281
|
dir: packageDirName,
|
|
282
282
|
}),
|
|
283
|
-
secondaryMessaging: i18n(`lib.doctor.projectDependenciesChecks.missingDependenciesSecondary`, {
|
|
283
|
+
secondaryMessaging: (0, lang_1.i18n)(`lib.doctor.projectDependenciesChecks.missingDependenciesSecondary`, {
|
|
284
284
|
command: (0, ui_1.uiCommandReference)('hs project install-deps'),
|
|
285
285
|
}),
|
|
286
286
|
});
|
|
@@ -291,7 +291,7 @@ class Doctor {
|
|
|
291
291
|
if (!(await this.isValidJsonFile(packageFile))) {
|
|
292
292
|
this.diagnosis?.addProjectSection({
|
|
293
293
|
type: 'error',
|
|
294
|
-
message: i18n(`lib.doctor.files.invalidJson`, {
|
|
294
|
+
message: (0, lang_1.i18n)(`lib.doctor.files.invalidJson`, {
|
|
295
295
|
filename: packageFile,
|
|
296
296
|
}),
|
|
297
297
|
});
|
|
@@ -299,7 +299,7 @@ class Doctor {
|
|
|
299
299
|
else {
|
|
300
300
|
this.diagnosis?.addProjectSection({
|
|
301
301
|
type: 'error',
|
|
302
|
-
message: i18n(`lib.doctor.projectDependenciesChecks.unableToDetermine`, {
|
|
302
|
+
message: (0, lang_1.i18n)(`lib.doctor.projectDependenciesChecks.unableToDetermine`, {
|
|
303
303
|
dir: packageDirName,
|
|
304
304
|
}),
|
|
305
305
|
});
|
|
@@ -310,7 +310,7 @@ class Doctor {
|
|
|
310
310
|
if (!foundError) {
|
|
311
311
|
this.diagnosis?.addProjectSection({
|
|
312
312
|
type: 'success',
|
|
313
|
-
message: i18n(`lib.doctor.projectDependenciesChecks.success`),
|
|
313
|
+
message: (0, lang_1.i18n)(`lib.doctor.projectDependenciesChecks.success`),
|
|
314
314
|
});
|
|
315
315
|
}
|
|
316
316
|
}
|
|
@@ -333,7 +333,7 @@ class Doctor {
|
|
|
333
333
|
foundError = true;
|
|
334
334
|
this.diagnosis?.addProjectSection({
|
|
335
335
|
type: 'error',
|
|
336
|
-
message: i18n(`lib.doctor.files.invalidJson`, {
|
|
336
|
+
message: (0, lang_1.i18n)(`lib.doctor.files.invalidJson`, {
|
|
337
337
|
filename: jsonFile,
|
|
338
338
|
}),
|
|
339
339
|
});
|
|
@@ -342,7 +342,7 @@ class Doctor {
|
|
|
342
342
|
if (!foundError) {
|
|
343
343
|
this.diagnosis?.addProjectSection({
|
|
344
344
|
type: 'success',
|
|
345
|
-
message: i18n(`lib.doctor.files.validJson`),
|
|
345
|
+
message: (0, lang_1.i18n)(`lib.doctor.files.validJson`),
|
|
346
346
|
});
|
|
347
347
|
}
|
|
348
348
|
}
|
|
@@ -350,7 +350,7 @@ class Doctor {
|
|
|
350
350
|
if (await (0, portManager_1.isPortManagerPortAvailable)()) {
|
|
351
351
|
this.diagnosis?.addProjectSection({
|
|
352
352
|
type: 'success',
|
|
353
|
-
message: i18n(`lib.doctor.port.available`, {
|
|
353
|
+
message: (0, lang_1.i18n)(`lib.doctor.port.available`, {
|
|
354
354
|
port: ports_1.PORT_MANAGER_SERVER_PORT,
|
|
355
355
|
}),
|
|
356
356
|
});
|
|
@@ -358,10 +358,10 @@ class Doctor {
|
|
|
358
358
|
}
|
|
359
359
|
this.diagnosis?.addProjectSection({
|
|
360
360
|
type: 'warning',
|
|
361
|
-
message: i18n(`lib.doctor.port.inUse`, {
|
|
361
|
+
message: (0, lang_1.i18n)(`lib.doctor.port.inUse`, {
|
|
362
362
|
port: ports_1.PORT_MANAGER_SERVER_PORT,
|
|
363
363
|
}),
|
|
364
|
-
secondaryMessaging: i18n(`lib.doctor.port.inUseSecondary`, {
|
|
364
|
+
secondaryMessaging: (0, lang_1.i18n)(`lib.doctor.port.inUseSecondary`, {
|
|
365
365
|
command: (0, ui_1.uiCommandReference)('hs project dev'),
|
|
366
366
|
}),
|
|
367
367
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
vi.mock('@hubspot/local-dev-lib/config');
|
|
7
|
+
const Diagnosis_1 = require("../Diagnosis");
|
|
8
|
+
const config_1 = require("@hubspot/local-dev-lib/config");
|
|
9
|
+
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
10
|
+
const getAccountConfig = config_1.getAccountConfig;
|
|
11
|
+
describe('lib/doctor/Diagnosis', () => {
|
|
12
|
+
const diagnosticInfo = {
|
|
13
|
+
account: {},
|
|
14
|
+
arch: process.arch,
|
|
15
|
+
config: 'path/to/config.json',
|
|
16
|
+
defaultAccountOverrideFile: 'path/to/default/account/override/.hsaccount',
|
|
17
|
+
configSettings: { httpUseLocalhost: false },
|
|
18
|
+
configFiles: [],
|
|
19
|
+
envFiles: [],
|
|
20
|
+
files: [],
|
|
21
|
+
jsonFiles: [],
|
|
22
|
+
packageFiles: [],
|
|
23
|
+
packageLockFiles: [],
|
|
24
|
+
platform: process.platform,
|
|
25
|
+
project: {
|
|
26
|
+
config: {
|
|
27
|
+
projectDir: 'project-dir',
|
|
28
|
+
projectConfig: {
|
|
29
|
+
name: 'Super cool project',
|
|
30
|
+
srcDir: 'project-dir',
|
|
31
|
+
platformVersion: 'test',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
versions: { '@hubspot/cli': '123', node: '18.0.1', npm: '8.0.0' },
|
|
36
|
+
};
|
|
37
|
+
const accountId = 123456;
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
getAccountConfig.mockReturnValue({
|
|
40
|
+
accountType: 'STANDARD',
|
|
41
|
+
name: 'Standard Account',
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe('toString', () => {
|
|
45
|
+
it('should return an empty diagnosis when no sections have been added', () => {
|
|
46
|
+
const diagnosis = new Diagnosis_1.Diagnosis({ diagnosticInfo, accountId });
|
|
47
|
+
const output = diagnosis.toString();
|
|
48
|
+
expect(output).toEqual('');
|
|
49
|
+
});
|
|
50
|
+
it('should generate the diagnosis output', () => {
|
|
51
|
+
const diagnosis = new Diagnosis_1.Diagnosis({ diagnosticInfo, accountId });
|
|
52
|
+
const cliMessage = 'Important CLI Message';
|
|
53
|
+
const cliSecondaryMessage = 'The CLI Section is Showing';
|
|
54
|
+
diagnosis.addCliSection({
|
|
55
|
+
type: 'success',
|
|
56
|
+
message: cliMessage,
|
|
57
|
+
secondaryMessaging: cliSecondaryMessage,
|
|
58
|
+
});
|
|
59
|
+
const cliConfigMessage = 'Important CLI Config Message';
|
|
60
|
+
const cliConfigSecondaryMessage = 'The CLI Config Section is Showing';
|
|
61
|
+
diagnosis.addCLIConfigSection({
|
|
62
|
+
type: 'error',
|
|
63
|
+
message: cliConfigMessage,
|
|
64
|
+
secondaryMessaging: cliConfigSecondaryMessage,
|
|
65
|
+
});
|
|
66
|
+
const projectMessage = 'Important Project Message';
|
|
67
|
+
const projectSecondaryMessage = 'The Project Section is Showing';
|
|
68
|
+
diagnosis.addProjectSection({
|
|
69
|
+
type: 'warning',
|
|
70
|
+
message: projectMessage,
|
|
71
|
+
secondaryMessaging: projectSecondaryMessage,
|
|
72
|
+
});
|
|
73
|
+
expect((0, strip_ansi_1.default)(diagnosis.toString())).toMatchSnapshot();
|
|
74
|
+
});
|
|
75
|
+
it('should generate categories that have sections', () => {
|
|
76
|
+
const diagnosis = new Diagnosis_1.Diagnosis({ diagnosticInfo, accountId });
|
|
77
|
+
const cliMessage = 'Important CLI Message';
|
|
78
|
+
const cliSecondaryMessage = 'The CLI Section is Showing';
|
|
79
|
+
diagnosis.addCliSection({
|
|
80
|
+
type: 'success',
|
|
81
|
+
message: cliMessage,
|
|
82
|
+
secondaryMessaging: cliSecondaryMessage,
|
|
83
|
+
});
|
|
84
|
+
expect((0, strip_ansi_1.default)(diagnosis.toString())).toMatchSnapshot();
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const util_1 = __importDefault(require("util"));
|
|
7
|
+
const vitest_1 = require("vitest");
|
|
8
|
+
vitest_1.vi.mock('@hubspot/local-dev-lib/fs');
|
|
9
|
+
vitest_1.vi.mock('@hubspot/local-dev-lib/config');
|
|
10
|
+
vitest_1.vi.mock('@hubspot/local-dev-lib/personalAccessKey');
|
|
11
|
+
vitest_1.vi.mock('../../projects/config');
|
|
12
|
+
vitest_1.vi.mock('@hubspot/local-dev-lib/api/projects');
|
|
13
|
+
vitest_1.vi.mock('util');
|
|
14
|
+
vitest_1.vi.mock('../../../package.json', () => {
|
|
15
|
+
return {
|
|
16
|
+
default: {
|
|
17
|
+
version: '1.0.0',
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
const DiagnosticInfoBuilder_1 = require("../DiagnosticInfoBuilder");
|
|
22
|
+
const config_1 = require("@hubspot/local-dev-lib/config");
|
|
23
|
+
const personalAccessKey_1 = require("@hubspot/local-dev-lib/personalAccessKey");
|
|
24
|
+
const fs_1 = require("@hubspot/local-dev-lib/fs");
|
|
25
|
+
const config_2 = require("../../projects/config");
|
|
26
|
+
const projects_1 = require("@hubspot/local-dev-lib/api/projects");
|
|
27
|
+
const walk = fs_1.walk;
|
|
28
|
+
const getAccessToken = personalAccessKey_1.getAccessToken;
|
|
29
|
+
const getAccountConfig = config_1.getAccountConfig;
|
|
30
|
+
const getConfigPath = config_1.getConfigPath;
|
|
31
|
+
const getDefaultAccountOverrideFilePath = config_1.getDefaultAccountOverrideFilePath;
|
|
32
|
+
const getAccountId = config_1.getAccountId;
|
|
33
|
+
const getProjectConfig = config_2.getProjectConfig;
|
|
34
|
+
const isConfigFlagEnabled = config_1.isConfigFlagEnabled;
|
|
35
|
+
const fetchProject = projects_1.fetchProject;
|
|
36
|
+
const mockPromisifyImpl = vitest_1.vi.fn();
|
|
37
|
+
const utilPromisify = vitest_1.vi.fn(() => mockPromisifyImpl);
|
|
38
|
+
util_1.default.promisify = utilPromisify;
|
|
39
|
+
describe('lib/doctor/DiagnosticInfo', () => {
|
|
40
|
+
const accountId = 898989;
|
|
41
|
+
const accountConfig = {
|
|
42
|
+
env: 'prod',
|
|
43
|
+
authType: 'personalaccesskey',
|
|
44
|
+
accountType: 'STANDARD',
|
|
45
|
+
personalAccessKey: 'super-secret-key',
|
|
46
|
+
};
|
|
47
|
+
const nodeVersion = 'v18.17.0';
|
|
48
|
+
const processInfo = {
|
|
49
|
+
platform: 'darwin',
|
|
50
|
+
arch: 'x64',
|
|
51
|
+
versions: { node: nodeVersion },
|
|
52
|
+
mainModule: { path: '/path/to/main/module' },
|
|
53
|
+
};
|
|
54
|
+
const projectDir = '/Users/test/project';
|
|
55
|
+
const projectFiles = [
|
|
56
|
+
`${projectDir}/.gitignore`,
|
|
57
|
+
`${projectDir}/README.md`,
|
|
58
|
+
// Config files
|
|
59
|
+
`${projectDir}/hsproject.json`,
|
|
60
|
+
`${projectDir}/src/app/app.json`,
|
|
61
|
+
`${projectDir}/src/app/public-app.json`,
|
|
62
|
+
// Serverless files
|
|
63
|
+
`${projectDir}/src/app/app.functions/.env`,
|
|
64
|
+
`${projectDir}/src/app/app.functions/function.js`,
|
|
65
|
+
`${projectDir}/src/app/app.functions/serverless.json`,
|
|
66
|
+
`${projectDir}/src/app/app.functions/package.json`,
|
|
67
|
+
`${projectDir}/src/app/app.functions/package-lock.json`,
|
|
68
|
+
// Extension files
|
|
69
|
+
`${projectDir}/src/app/extensions/extension.js`,
|
|
70
|
+
`${projectDir}/src/app/extensions/extension.json`,
|
|
71
|
+
`${projectDir}/src/app/extensions/package.json`,
|
|
72
|
+
`${projectDir}/src/app/extension/package-lock.json`,
|
|
73
|
+
`${projectDir}/src/app/app.functions/node_modules/axios`,
|
|
74
|
+
];
|
|
75
|
+
const npmVersion = 'v8.17.0';
|
|
76
|
+
const configPath = '/path/to/config';
|
|
77
|
+
const defaultAccountOverrideFile = 'path/to/default/account/override/.hsaccount';
|
|
78
|
+
beforeEach(() => {
|
|
79
|
+
getAccountId.mockReturnValue(accountId);
|
|
80
|
+
getAccountConfig.mockReturnValue(accountConfig);
|
|
81
|
+
walk.mockResolvedValue(projectFiles);
|
|
82
|
+
isConfigFlagEnabled.mockReturnValue(false);
|
|
83
|
+
mockPromisifyImpl.mockResolvedValue(npmVersion);
|
|
84
|
+
});
|
|
85
|
+
it('should initialize the required state on creation', () => {
|
|
86
|
+
const builder = new DiagnosticInfoBuilder_1.DiagnosticInfoBuilder(processInfo);
|
|
87
|
+
expect(getAccountId).toHaveBeenCalledTimes(1);
|
|
88
|
+
expect(getAccountConfig).toHaveBeenCalledTimes(1);
|
|
89
|
+
expect(builder.accountId).toEqual(accountId);
|
|
90
|
+
expect(builder.env).toEqual(accountConfig.env);
|
|
91
|
+
expect(builder.authType).toEqual(accountConfig.authType);
|
|
92
|
+
expect(builder.accountType).toEqual(accountConfig.accountType);
|
|
93
|
+
expect(builder.personalAccessKey).toEqual(accountConfig.personalAccessKey);
|
|
94
|
+
expect(builder.processInfo).toEqual(processInfo);
|
|
95
|
+
});
|
|
96
|
+
describe('generateDiagnosticInfo', () => {
|
|
97
|
+
let builder;
|
|
98
|
+
let projectConfig;
|
|
99
|
+
let projectDetails;
|
|
100
|
+
let accessToken;
|
|
101
|
+
beforeEach(() => {
|
|
102
|
+
builder = new DiagnosticInfoBuilder_1.DiagnosticInfoBuilder(processInfo);
|
|
103
|
+
projectConfig = {
|
|
104
|
+
projectDir,
|
|
105
|
+
projectConfig: {
|
|
106
|
+
name: 'My project',
|
|
107
|
+
srcDir: 'project-dir',
|
|
108
|
+
platformVersion: 'test',
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
projectDetails = {
|
|
112
|
+
createdAt: 12345,
|
|
113
|
+
deletedAt: 0,
|
|
114
|
+
deployedBuildId: 1,
|
|
115
|
+
id: 8989898,
|
|
116
|
+
isLocked: false,
|
|
117
|
+
name: projectConfig.projectConfig.name,
|
|
118
|
+
portalId: accountId,
|
|
119
|
+
updatedAt: 12345,
|
|
120
|
+
};
|
|
121
|
+
accessToken = {
|
|
122
|
+
accessToken: 'super-secret-dont-put-this-in-a-unit-test',
|
|
123
|
+
accountType: 'STANDARD',
|
|
124
|
+
encodedOAuthRefreshToken: '',
|
|
125
|
+
expiresAt: '',
|
|
126
|
+
hubName: projectConfig.projectConfig.name,
|
|
127
|
+
portalId: accountId,
|
|
128
|
+
scopeGroups: [],
|
|
129
|
+
enabledFeatures: {},
|
|
130
|
+
};
|
|
131
|
+
getProjectConfig.mockResolvedValue(projectConfig);
|
|
132
|
+
// @ts-expect-error - Mocking AxiosResponse
|
|
133
|
+
fetchProject.mockResolvedValue({
|
|
134
|
+
data: projectDetails,
|
|
135
|
+
});
|
|
136
|
+
getAccessToken.mockResolvedValue(accessToken);
|
|
137
|
+
getConfigPath.mockReturnValue(configPath);
|
|
138
|
+
getDefaultAccountOverrideFilePath.mockReturnValue(defaultAccountOverrideFile);
|
|
139
|
+
});
|
|
140
|
+
it('should gather the required data and generate the diagnostic', async () => {
|
|
141
|
+
const diagnosticInfo = await builder.generateDiagnosticInfo();
|
|
142
|
+
expect(getProjectConfig).toHaveBeenCalledTimes(1);
|
|
143
|
+
expect(fetchProject).toHaveBeenCalledTimes(1);
|
|
144
|
+
expect(fetchProject).toHaveBeenCalledWith(accountId, projectConfig.projectConfig.name);
|
|
145
|
+
expect(getAccessToken).toHaveBeenCalledTimes(1);
|
|
146
|
+
expect(getAccessToken).toHaveBeenCalledWith(accountConfig.personalAccessKey, accountConfig.env, accountId);
|
|
147
|
+
// @ts-expect-error Accessing private field
|
|
148
|
+
expect(builder._projectConfig).toEqual(projectConfig);
|
|
149
|
+
expect(diagnosticInfo).toMatchSnapshot();
|
|
150
|
+
});
|
|
151
|
+
it('should handle errors when fetching project details', async () => {
|
|
152
|
+
fetchProject.mockRejectedValue(new Error('Failed to fetch project details'));
|
|
153
|
+
const diagnosticInfo = await builder.generateDiagnosticInfo();
|
|
154
|
+
expect(fetchProject).toHaveBeenCalledTimes(1);
|
|
155
|
+
expect(diagnosticInfo.project.details).toBeUndefined();
|
|
156
|
+
});
|
|
157
|
+
it('should handle errors when fetching access token', async () => {
|
|
158
|
+
getAccessToken.mockRejectedValue(new Error('Failed to fetch access token'));
|
|
159
|
+
const diagnosticInfo = await builder.generateDiagnosticInfo();
|
|
160
|
+
expect(getAccessToken).toHaveBeenCalledTimes(1);
|
|
161
|
+
expect(diagnosticInfo.account.name).toBeUndefined();
|
|
162
|
+
expect(diagnosticInfo.account.scopeGroups).toBeUndefined();
|
|
163
|
+
expect(diagnosticInfo.account.enabledFeatures).toBeUndefined();
|
|
164
|
+
});
|
|
165
|
+
it('should handle errors when fetching project filenames', async () => {
|
|
166
|
+
walk.mockRejectedValue(new Error('Failed to walk project directory'));
|
|
167
|
+
const diagnosticInfo = await builder.generateDiagnosticInfo();
|
|
168
|
+
expect(walk).toHaveBeenCalledTimes(1);
|
|
169
|
+
expect(diagnosticInfo.files).toEqual([]);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|