@hubspot/cli 7.8.12-experimental.0 → 7.9.0-beta.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/bin/cli.js +31 -25
- package/commands/__tests__/auth.test.js +5 -0
- package/commands/__tests__/cms.test.js +44 -1
- package/commands/__tests__/customObject.test.js +22 -1
- package/commands/__tests__/doctor.test.js +16 -16
- package/commands/__tests__/project.test.js +2 -0
- package/commands/account/auth.js +1 -0
- package/commands/account/clean.js +18 -27
- package/commands/account/createOverride.js +13 -31
- package/commands/account/info.js +20 -31
- package/commands/account/list.js +16 -22
- package/commands/account/remove.js +12 -20
- package/commands/account/removeOverride.js +11 -21
- package/commands/account/rename.js +6 -9
- package/commands/account/use.js +12 -26
- package/commands/account.js +2 -2
- package/commands/app/__tests__/migrate.test.js +5 -5
- package/commands/app/migrate.js +13 -18
- package/commands/app.js +1 -6
- package/commands/auth.d.ts +1 -0
- package/commands/auth.js +17 -7
- package/commands/{__tests__/remove.test.js → cms/__tests__/delete.test.js} +8 -8
- package/commands/{__tests__ → cms/__tests__}/fetch.test.js +3 -3
- package/commands/{__tests__ → cms/__tests__}/function.test.js +7 -3
- package/commands/{__tests__ → cms/__tests__}/lint.test.js +3 -3
- package/commands/{__tests__ → cms/__tests__}/list.test.js +3 -3
- package/commands/{__tests__ → cms/__tests__}/mv.test.js +3 -3
- package/commands/{__tests__ → cms/__tests__}/theme.test.js +9 -2
- package/commands/cms/app/create.d.ts +9 -0
- package/commands/cms/app/create.js +82 -0
- package/commands/cms/app.d.ts +3 -0
- package/commands/cms/app.js +17 -0
- package/commands/cms/convertFields.js +7 -9
- package/commands/cms/delete.d.ts +6 -0
- package/commands/cms/delete.js +43 -0
- package/commands/cms/fetch.d.ts +12 -0
- package/commands/cms/fetch.js +79 -0
- package/commands/{__tests__ → cms/function/__tests__}/logs.test.js +4 -5
- package/commands/cms/function/create.d.ts +12 -0
- package/commands/cms/function/create.js +84 -0
- package/commands/cms/function/deploy.d.ts +6 -0
- package/commands/cms/function/deploy.js +89 -0
- package/commands/cms/function/list.d.ts +6 -0
- package/commands/cms/function/list.js +60 -0
- package/commands/cms/function/logs.d.ts +10 -0
- package/commands/cms/function/logs.js +135 -0
- package/commands/cms/function/server.d.ts +10 -0
- package/commands/cms/function/server.js +69 -0
- package/commands/cms/function.d.ts +3 -0
- package/commands/cms/function.js +27 -0
- package/commands/cms/getReactModule.js +9 -14
- package/commands/cms/lighthouseScore.js +33 -36
- package/commands/cms/lint.d.ts +6 -0
- package/commands/cms/lint.js +83 -0
- package/commands/cms/list.d.ts +6 -0
- package/commands/cms/list.js +96 -0
- package/commands/cms/module/create.d.ts +11 -0
- package/commands/cms/module/create.js +84 -0
- package/commands/cms/module/marketplace-validate.d.ts +6 -0
- package/commands/cms/module/marketplace-validate.js +45 -0
- package/commands/cms/module.d.ts +3 -0
- package/commands/cms/module.js +17 -0
- package/commands/cms/mv.d.ts +7 -0
- package/commands/cms/mv.js +60 -0
- package/commands/cms/template/create.d.ts +9 -0
- package/commands/cms/template/create.js +72 -0
- package/commands/cms/template.d.ts +3 -0
- package/commands/cms/template.js +17 -0
- package/commands/{theme → cms/theme}/__tests__/marketplace-validate.test.js +2 -2
- package/commands/{theme → cms/theme}/__tests__/preview.test.js +2 -2
- package/commands/cms/theme/create.d.ts +6 -0
- package/commands/cms/theme/create.js +58 -0
- package/commands/cms/theme/generate-selectors.d.ts +6 -0
- package/commands/cms/theme/generate-selectors.js +171 -0
- package/commands/cms/theme/marketplace-validate.d.ts +6 -0
- package/commands/cms/theme/marketplace-validate.js +46 -0
- package/commands/cms/theme/preview.d.ts +12 -0
- package/commands/cms/theme/preview.js +224 -0
- package/commands/cms/theme.d.ts +3 -0
- package/commands/cms/theme.js +25 -0
- package/commands/cms/upload.d.ts +12 -0
- package/commands/cms/upload.js +212 -0
- package/commands/cms/watch.d.ts +14 -0
- package/commands/cms/watch.js +138 -0
- package/commands/cms/webpack/create.d.ts +6 -0
- package/commands/cms/webpack/create.js +58 -0
- package/commands/cms/webpack.d.ts +3 -0
- package/commands/cms/webpack.js +17 -0
- package/commands/cms.js +28 -2
- package/commands/completion.js +3 -3
- package/commands/config/set.d.ts +1 -1
- package/commands/config/set.js +64 -36
- package/commands/config.js +2 -2
- package/commands/create.js +6 -4
- package/commands/customObject/{schema/__tests__/create.test.js → __tests__/createSchema.test.js} +5 -5
- package/commands/customObject/{schema/__tests__/delete.test.js → __tests__/deleteSchema.test.js} +5 -5
- package/commands/customObject/{schema/__tests__/fetch-all.test.js → __tests__/fetch-all-schemas.test.js} +5 -5
- package/commands/customObject/{schema/__tests__/fetch.test.js → __tests__/fetchSchema.test.js} +5 -5
- package/commands/customObject/{schema/__tests__/list.test.js → __tests__/listSchemas.test.js} +5 -5
- package/commands/customObject/{schema/__tests__/update.test.js → __tests__/updateSchema.test.js} +5 -5
- package/commands/customObject/create.js +10 -12
- package/commands/customObject/createSchema.d.ts +6 -0
- package/commands/customObject/createSchema.js +56 -0
- package/commands/customObject/deleteSchema.d.ts +7 -0
- package/commands/customObject/deleteSchema.js +69 -0
- package/commands/customObject/fetchAllSchemas.d.ts +6 -0
- package/commands/customObject/fetchAllSchemas.js +57 -0
- package/commands/customObject/fetchSchema.d.ts +7 -0
- package/commands/customObject/fetchSchema.js +67 -0
- package/commands/customObject/listSchemas.d.ts +4 -0
- package/commands/customObject/listSchemas.js +35 -0
- package/commands/customObject/schema/create.d.ts +4 -6
- package/commands/customObject/schema/create.js +13 -38
- package/commands/customObject/schema/delete.d.ts +4 -7
- package/commands/customObject/schema/delete.js +15 -50
- package/commands/customObject/schema/fetch-all.d.ts +4 -6
- package/commands/customObject/schema/fetch-all.js +14 -40
- package/commands/customObject/schema/fetch.d.ts +4 -7
- package/commands/customObject/schema/fetch.js +14 -49
- package/commands/customObject/schema/list.d.ts +4 -4
- package/commands/customObject/schema/list.js +10 -19
- package/commands/customObject/schema/update.d.ts +4 -7
- package/commands/customObject/schema/update.js +15 -50
- package/commands/customObject/schema.js +5 -3
- package/commands/customObject/updateSchema.d.ts +7 -0
- package/commands/customObject/updateSchema.js +71 -0
- package/commands/customObject.js +22 -8
- package/commands/doctor.js +8 -11
- package/commands/feedback.js +7 -12
- package/commands/fetch.d.ts +4 -12
- package/commands/fetch.js +20 -47
- package/commands/filemanager/fetch.js +7 -7
- package/commands/filemanager/upload.js +15 -34
- package/commands/filemanager.js +2 -2
- package/commands/function/deploy.d.ts +4 -6
- package/commands/function/deploy.js +14 -89
- package/commands/function/list.d.ts +4 -6
- package/commands/function/list.js +14 -40
- package/commands/function/server.d.ts +4 -10
- package/commands/function/server.js +22 -31
- package/commands/function.d.ts +2 -4
- package/commands/function.js +25 -14
- package/commands/getStarted.js +2 -2
- package/commands/hubdb/clear.js +7 -15
- package/commands/hubdb/create.js +9 -15
- package/commands/hubdb/delete.js +8 -15
- package/commands/hubdb/fetch.js +6 -9
- package/commands/hubdb.d.ts +1 -1
- package/commands/hubdb.js +2 -2
- package/commands/init.js +2 -3
- package/commands/lint.d.ts +4 -6
- package/commands/lint.js +13 -65
- package/commands/list.d.ts +4 -6
- package/commands/list.js +14 -81
- package/commands/logs.d.ts +4 -10
- package/commands/logs.js +25 -94
- package/commands/module/marketplace-validate.d.ts +4 -6
- package/commands/module/marketplace-validate.js +15 -27
- package/commands/module.d.ts +2 -2
- package/commands/module.js +17 -15
- package/commands/mv.d.ts +4 -7
- package/commands/mv.js +14 -51
- package/commands/open.js +5 -5
- package/commands/project/__tests__/add.test.js +15 -13
- package/commands/project/__tests__/deploy.test.js +3 -4
- package/commands/project/__tests__/devUnifiedFlow.test.js +32 -0
- package/commands/project/__tests__/installDeps.test.js +8 -8
- package/commands/project/__tests__/list.test.js +31 -0
- package/commands/project/__tests__/logs.test.js +1 -1
- package/commands/project/__tests__/migrate.test.js +6 -5
- package/commands/project/__tests__/migrateApp.test.js +2 -5
- package/commands/project/__tests__/validate.test.js +98 -0
- package/commands/project/add.d.ts +2 -2
- package/commands/project/add.js +6 -5
- package/commands/project/cloneApp.js +14 -19
- package/commands/project/create.js +1 -2
- package/commands/project/deploy.js +3 -3
- package/commands/project/dev/deprecatedFlow.js +9 -18
- package/commands/project/dev/index.js +19 -17
- package/commands/project/dev/unifiedFlow.js +11 -4
- package/commands/project/download.js +15 -15
- package/commands/project/installDeps.d.ts +2 -2
- package/commands/project/installDeps.js +9 -8
- package/commands/project/list.d.ts +4 -0
- package/commands/project/list.js +62 -0
- package/commands/project/listBuilds.js +11 -20
- package/commands/project/logs.js +21 -24
- package/commands/project/migrate.js +5 -2
- package/commands/project/migrateApp.js +9 -15
- package/commands/project/open.js +6 -13
- package/commands/project/upload.d.ts +2 -2
- package/commands/project/upload.js +17 -26
- package/commands/project/validate.js +6 -6
- package/commands/project/watch.js +13 -22
- package/commands/project.js +4 -2
- package/commands/remove.d.ts +4 -6
- package/commands/remove.js +12 -24
- package/commands/sandbox/__tests__/create.test.js +5 -5
- package/commands/sandbox/create.js +22 -32
- package/commands/sandbox/delete.js +38 -63
- package/commands/sandbox.js +2 -2
- package/commands/secret/addSecret.js +7 -17
- package/commands/secret/deleteSecret.js +10 -20
- package/commands/secret/listSecret.js +8 -10
- package/commands/secret/updateSecret.js +9 -17
- package/commands/secret.js +2 -2
- package/commands/testAccount/__tests__/delete.test.js +2 -4
- package/commands/testAccount/create.js +2 -5
- package/commands/testAccount/delete.d.ts +4 -3
- package/commands/testAccount/delete.js +155 -14
- package/commands/theme/generate-selectors.d.ts +4 -6
- package/commands/theme/generate-selectors.js +14 -152
- package/commands/theme/marketplace-validate.d.ts +4 -6
- package/commands/theme/marketplace-validate.js +14 -25
- package/commands/theme/preview.d.ts +4 -12
- package/commands/theme/preview.js +18 -183
- package/commands/theme.d.ts +2 -2
- package/commands/theme.js +19 -13
- package/commands/upload.d.ts +4 -12
- package/commands/upload.js +19 -169
- package/commands/watch.d.ts +4 -14
- package/commands/watch.js +23 -88
- package/lang/en.d.ts +863 -542
- package/lang/en.js +912 -595
- package/lang/en.lyaml +4 -4
- package/lib/__tests__/buildAccount.test.js +4 -3
- package/lib/__tests__/commonOpts.test.js +1 -1
- package/lib/__tests__/dependencyManagement.test.js +1 -1
- package/lib/__tests__/developerTestAccounts.test.js +3 -3
- package/lib/__tests__/npm.test.js +1 -1
- package/lib/__tests__/oauth.test.js +4 -4
- package/lib/__tests__/process.test.js +10 -5
- package/lib/__tests__/sandboxSync.test.js +8 -8
- package/lib/__tests__/sandboxes.test.js +8 -8
- package/lib/__tests__/serverlessLogs.test.js +1 -1
- package/lib/__tests__/usageTracking.test.js +5 -5
- package/lib/__tests__/validation.test.js +2 -1
- package/lib/__tests__/yargsUtils.test.js +83 -9
- package/lib/app/__tests__/migrate.test.js +5 -5
- package/lib/app/__tests__/migrate_legacy.test.js +1 -1
- package/lib/app/migrate.js +1 -1
- package/lib/app/migrate_legacy.js +20 -24
- package/lib/buildAccount.d.ts +2 -2
- package/lib/buildAccount.js +32 -64
- package/lib/commonOpts.d.ts +1 -1
- package/lib/commonOpts.js +25 -22
- package/lib/configMigrate.js +88 -9
- package/lib/configOptions.js +7 -0
- package/lib/constants.d.ts +15 -1
- package/lib/constants.js +19 -1
- package/lib/dependencyManagement.js +9 -27
- package/lib/developerTestAccounts.js +9 -23
- package/lib/doctor/Diagnosis.js +11 -23
- package/lib/doctor/DiagnosticInfoBuilder.js +12 -11
- package/lib/doctor/Doctor.js +42 -90
- package/lib/doctor/__tests__/Doctor.test.js +4 -4
- package/lib/errorHandlers/index.js +12 -20
- package/lib/errorHandlers/suppressError.js +11 -18
- package/lib/generateSelectors.js +1 -1
- package/lib/lang.js +6 -5
- package/lib/links.js +4 -4
- package/lib/middleware/__test__/commandTargetingUtils.test.js +99 -0
- package/lib/middleware/__test__/configMiddleware.test.js +11 -11
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +6 -8
- package/lib/middleware/autoUpdateMiddleware.d.ts +2 -1
- package/lib/middleware/autoUpdateMiddleware.js +12 -2
- package/lib/middleware/commandTargetingUtils.d.ts +8 -0
- package/lib/middleware/commandTargetingUtils.js +74 -0
- package/lib/middleware/configMiddleware.d.ts +1 -1
- package/lib/middleware/configMiddleware.js +21 -81
- package/lib/middleware/gitMiddleware.js +5 -1
- package/lib/middleware/notificationsMiddleware.js +5 -11
- package/lib/middleware/yargsChecksMiddleware.js +6 -9
- package/lib/npm.js +2 -2
- package/lib/oauth.js +5 -5
- package/lib/process.js +5 -4
- package/lib/projectProfiles.d.ts +1 -1
- package/lib/projectProfiles.js +2 -10
- package/lib/projects/__tests__/AppDevModeInterface.test.js +101 -135
- package/lib/projects/__tests__/DevServerManager.test.js +183 -0
- package/lib/projects/__tests__/LocalDevProcess.test.js +6 -5
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +76 -45
- package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +1 -0
- package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +161 -0
- package/lib/projects/__tests__/deploy.test.js +9 -9
- package/lib/projects/__tests__/localDevProjectHelpers.test.js +2 -0
- package/lib/projects/__tests__/platformVersion.test.js +8 -8
- package/lib/projects/__tests__/projects.test.js +12 -12
- package/lib/projects/__tests__/structure.test.js +3 -3
- package/lib/projects/__tests__/upload.test.d.ts +1 -0
- package/lib/projects/__tests__/upload.test.js +82 -0
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +6 -6
- package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +1 -0
- package/lib/projects/add/__tests__/{v3AddComponent.test.js → v2AddComponent.test.js} +39 -39
- package/lib/projects/add/{v3AddComponent.d.ts → v2AddComponent.d.ts} +1 -1
- package/lib/projects/add/{v3AddComponent.js → v2AddComponent.js} +5 -5
- package/lib/projects/create/__tests__/legacy.test.js +5 -5
- package/lib/projects/create/__tests__/v2.test.d.ts +1 -0
- package/lib/projects/create/__tests__/{v3.test.js → v2.test.js} +3 -3
- package/lib/projects/create/index.js +4 -4
- package/lib/projects/create/legacy.js +2 -2
- package/lib/projects/create/{v3.d.ts → v2.d.ts} +3 -3
- package/lib/projects/create/{v3.js → v2.js} +5 -5
- package/lib/projects/deploy.d.ts +1 -1
- package/lib/projects/deploy.js +2 -2
- package/lib/projects/localDev/AppDevModeInterface.d.ts +11 -3
- package/lib/projects/localDev/AppDevModeInterface.js +128 -115
- package/lib/projects/localDev/DevServerManager.d.ts +10 -29
- package/lib/projects/localDev/DevServerManager.js +20 -76
- package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +40 -0
- package/lib/projects/localDev/DevServerManager_DEPRECATED.js +120 -0
- package/lib/projects/localDev/LocalDevLogger.js +10 -11
- package/lib/projects/localDev/{LocalDevManager.js → LocalDevManager_DEPRECATED.js} +10 -11
- package/lib/projects/localDev/LocalDevProcess.js +3 -2
- package/lib/projects/localDev/LocalDevState.d.ts +3 -0
- package/lib/projects/localDev/LocalDevState.js +9 -0
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +4 -1
- package/lib/projects/localDev/LocalDevWebsocketServer.js +46 -16
- package/lib/projects/localDev/UIExtensionsDevModeInterface.d.ts +13 -0
- package/lib/projects/localDev/UIExtensionsDevModeInterface.js +37 -0
- package/lib/projects/localDev/helpers/account.d.ts +1 -1
- package/lib/projects/localDev/helpers/account.js +2 -2
- package/lib/projects/localDev/helpers/process.d.ts +1 -0
- package/lib/projects/localDev/helpers/process.js +15 -0
- package/lib/projects/localDev/helpers/project.d.ts +1 -0
- package/lib/projects/localDev/helpers/project.js +39 -3
- package/lib/projects/localDev/localDevWebsocketServerUtils.d.ts +3 -0
- package/lib/projects/localDev/localDevWebsocketServerUtils.js +9 -0
- package/lib/projects/platformVersion.d.ts +1 -1
- package/lib/projects/platformVersion.js +1 -1
- package/lib/projects/structure.d.ts +2 -2
- package/lib/projects/structure.js +6 -6
- package/lib/projects/upload.d.ts +2 -3
- package/lib/projects/upload.js +17 -9
- package/lib/projects/urls.d.ts +0 -1
- package/lib/projects/urls.js +0 -3
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +1 -0
- package/lib/prompts/__tests__/projectAddPrompt.test.js +10 -10
- package/lib/prompts/accountNamePrompt.js +14 -19
- package/lib/prompts/accountsPrompt.js +2 -2
- package/lib/prompts/cmsFieldPrompt.js +2 -2
- package/lib/prompts/createApiSamplePrompt.js +5 -5
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +10 -1
- package/lib/prompts/createFunctionPrompt.js +14 -14
- package/lib/prompts/createModulePrompt.js +9 -9
- package/lib/prompts/createTemplatePrompt.js +2 -2
- package/lib/prompts/downloadProjectPrompt.js +5 -8
- package/lib/prompts/installAppPrompt.d.ts +1 -6
- package/lib/prompts/installAppPrompt.js +1 -6
- package/lib/prompts/personalAccessKeyPrompt.js +3 -3
- package/lib/prompts/previewPrompt.js +6 -6
- package/lib/prompts/projectAddPrompt.d.ts +2 -2
- package/lib/prompts/projectAddPrompt.js +7 -1
- package/lib/prompts/projectDevTargetAccountPrompt.js +20 -32
- package/lib/prompts/projectNamePrompt.js +4 -8
- package/lib/prompts/projectsLogsPrompt.js +2 -4
- package/lib/prompts/promptUtils.js +27 -9
- package/lib/prompts/sandboxesPrompt.js +7 -7
- package/lib/prompts/secretPrompt.js +3 -3
- package/lib/prompts/selectAppPrompt.js +3 -3
- package/lib/prompts/selectHubDBTablePrompt.js +9 -13
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +15 -19
- package/lib/prompts/setAsDefaultAccountPrompt.js +4 -8
- package/lib/prompts/uploadPrompt.js +5 -5
- package/lib/sandboxSync.js +24 -41
- package/lib/sandboxes.js +19 -47
- package/lib/schema.js +3 -3
- package/lib/serverlessLogs.js +11 -13
- package/lib/theme/__tests__/migrate.test.js +6 -6
- package/lib/theme/migrate.js +2 -2
- package/lib/ui/SpinniesManager.d.ts +2 -0
- package/lib/ui/SpinniesManager.js +7 -0
- package/lib/ui/boxen.js +1 -2
- package/lib/ui/git.js +13 -10
- package/lib/ui/index.d.ts +6 -0
- package/lib/ui/index.js +55 -38
- package/lib/ui/serverlessFunctionLogs.js +9 -7
- package/lib/ui/uiMessages.d.ts +73 -0
- package/lib/ui/uiMessages.js +76 -0
- package/lib/usageTracking.js +7 -7
- package/lib/validation.js +20 -23
- package/lib/yargsUtils.d.ts +1 -1
- package/lib/yargsUtils.js +12 -5
- package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -4
- package/mcp-server/tools/index.js +4 -0
- package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +23 -0
- package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +68 -0
- package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +11 -0
- package/mcp-server/tools/project/GetApplicationInfoTool.js +49 -0
- package/mcp-server/tools/project/GetConfigValuesTool.js +2 -2
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +2 -2
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +1 -1
- package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +169 -0
- package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +115 -0
- package/mcp-server/utils/toolUsageTracking.js +2 -2
- package/package.json +8 -7
- package/types/Cms.d.ts +6 -6
- package/types/Yargs.d.ts +1 -1
- package/commands/app/__tests__/install.test.js +0 -47
- package/commands/app/install.d.ts +0 -8
- package/commands/app/install.js +0 -122
- package/lib/middleware/__test__/utils.test.js +0 -51
- package/lib/middleware/utils.d.ts +0 -8
- package/lib/middleware/utils.js +0 -14
- package/lib/projects/localDev/DevServerManagerV2.d.ts +0 -22
- package/lib/projects/localDev/DevServerManagerV2.js +0 -81
- /package/commands/{customObject/schema → cms}/__tests__/delete.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/fetch.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/function.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/lint.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/list.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/mv.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/theme.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/function/__tests__}/logs.test.d.ts +0 -0
- /package/commands/{theme → cms/theme}/__tests__/generate-selectors.test.d.ts +0 -0
- /package/commands/{theme → cms/theme}/__tests__/generate-selectors.test.js +0 -0
- /package/commands/{theme → cms/theme}/__tests__/marketplace-validate.test.d.ts +0 -0
- /package/commands/{theme → cms/theme}/__tests__/preview.test.d.ts +0 -0
- /package/commands/{__tests__/remove.test.d.ts → customObject/__tests__/createSchema.test.d.ts} +0 -0
- /package/commands/{app/__tests__/install.test.d.ts → customObject/__tests__/deleteSchema.test.d.ts} +0 -0
- /package/commands/customObject/{schema/__tests__/create.test.d.ts → __tests__/fetch-all-schemas.test.d.ts} +0 -0
- /package/commands/customObject/{schema/__tests__/fetch-all.test.d.ts → __tests__/fetchSchema.test.d.ts} +0 -0
- /package/commands/customObject/{schema/__tests__/fetch.test.d.ts → __tests__/listSchemas.test.d.ts} +0 -0
- /package/commands/customObject/{schema/__tests__/list.test.d.ts → __tests__/updateSchema.test.d.ts} +0 -0
- /package/commands/{customObject/schema/__tests__/update.test.d.ts → project/__tests__/list.test.d.ts} +0 -0
- /package/{lib/middleware/__test__/utils.test.d.ts → commands/project/__tests__/validate.test.d.ts} +0 -0
- /package/{commands/create → lib/cmsAssets}/api-sample.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/api-sample.js +0 -0
- /package/{commands/create → lib/cmsAssets}/app.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/app.js +0 -0
- /package/{commands/create → lib/cmsAssets}/function.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/function.js +0 -0
- /package/{commands/create → lib/cmsAssets}/index.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/index.js +0 -0
- /package/{commands/create → lib/cmsAssets}/module.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/module.js +0 -0
- /package/{commands/create → lib/cmsAssets}/react-app.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/react-app.js +0 -0
- /package/{commands/create → lib/cmsAssets}/template.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/template.js +0 -0
- /package/{commands/create → lib/cmsAssets}/vue-app.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/vue-app.js +0 -0
- /package/{commands/create → lib/cmsAssets}/webpack-serverless.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/webpack-serverless.js +0 -0
- /package/{commands/create → lib/cmsAssets}/website-theme.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/website-theme.js +0 -0
- /package/lib/{projects/add/__tests__/v3AddComponent.test.d.ts → middleware/__test__/commandTargetingUtils.test.d.ts} +0 -0
- /package/lib/projects/{create/__tests__/v3.test.d.ts → __tests__/DevServerManager.test.d.ts} +0 -0
- /package/lib/projects/localDev/{LocalDevManager.d.ts → LocalDevManager_DEPRECATED.d.ts} +0 -0
|
@@ -8,3 +8,12 @@ export function isDeployWebsocketMessage(message) {
|
|
|
8
8
|
export function isViewedWelcomeScreenWebsocketMessage(message) {
|
|
9
9
|
return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.VIEWED_WELCOME_SCREEN);
|
|
10
10
|
}
|
|
11
|
+
export function isAppInstallSuccessWebsocketMessage(message) {
|
|
12
|
+
return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.APP_INSTALL_SUCCESS);
|
|
13
|
+
}
|
|
14
|
+
export function isAppInstallInitiatedWebsocketMessage(message) {
|
|
15
|
+
return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.APP_INSTALL_INITIATED);
|
|
16
|
+
}
|
|
17
|
+
export function isAppInstallFailureWebsocketMessage(message) {
|
|
18
|
+
return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.APP_INSTALL_FAILURE);
|
|
19
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function isV2Project(platformVersion?: string | null): boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentTypes, Component, GenericComponentConfig, PublicAppComponentConfig, PrivateAppComponentConfig, AppCardComponentConfig } from '../../types/Projects.js';
|
|
2
|
-
import {
|
|
2
|
+
import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
|
|
3
3
|
import { AppIRNode } from '../../types/ProjectComponents.js';
|
|
4
4
|
export declare const CONFIG_FILES: {
|
|
5
5
|
[k in ComponentTypes]: string;
|
|
@@ -15,4 +15,4 @@ export declare function getProjectComponentTypes(components: Array<Component>):
|
|
|
15
15
|
export declare function getComponentUid(component?: Component | null): string | null;
|
|
16
16
|
export declare function componentIsApp(component?: Component | null): component is Component<PublicAppComponentConfig | PrivateAppComponentConfig>;
|
|
17
17
|
export declare function componentIsPublicApp(component?: Component | null): component is Component<PublicAppComponentConfig>;
|
|
18
|
-
export declare function isAppIRNode(component: IntermediateRepresentationNodeLocalDev
|
|
18
|
+
export declare function isAppIRNode(component: IntermediateRepresentationNodeLocalDev): component is AppIRNode;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { walk } from '@hubspot/local-dev-lib/fs';
|
|
4
|
-
import {
|
|
4
|
+
import { uiLogger } from '../ui/logger.js';
|
|
5
5
|
import { logError } from '../errorHandlers/index.js';
|
|
6
6
|
import { ComponentTypes, } from '../../types/Projects.js';
|
|
7
|
-
import { IR_COMPONENT_TYPES } from '../constants.js';
|
|
7
|
+
import { IR_COMPONENT_TYPES, LEGACY_PRIVATE_APP_FILE, LEGACY_PUBLIC_APP_FILE, THEME_FILE, } from '../constants.js';
|
|
8
8
|
export const CONFIG_FILES = {
|
|
9
|
-
[ComponentTypes.PrivateApp]:
|
|
10
|
-
[ComponentTypes.PublicApp]:
|
|
11
|
-
[ComponentTypes.HublTheme]:
|
|
9
|
+
[ComponentTypes.PrivateApp]: LEGACY_PRIVATE_APP_FILE,
|
|
10
|
+
[ComponentTypes.PublicApp]: LEGACY_PUBLIC_APP_FILE,
|
|
11
|
+
[ComponentTypes.HublTheme]: THEME_FILE,
|
|
12
12
|
};
|
|
13
13
|
export function getComponentTypeFromConfigFile(configFile) {
|
|
14
14
|
let key;
|
|
@@ -27,7 +27,7 @@ export function loadConfigFile(configPath) {
|
|
|
27
27
|
return parsedConfig;
|
|
28
28
|
}
|
|
29
29
|
catch (e) {
|
|
30
|
-
|
|
30
|
+
uiLogger.debug(e);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
return null;
|
package/lib/projects/upload.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { FileResult } from 'tmp';
|
|
2
|
-
import { IntermediateRepresentation } from '@hubspot/project-parsing-lib';
|
|
3
2
|
import { ProjectConfig } from '../../types/Projects.js';
|
|
4
3
|
type ProjectUploadCallbackFunction<T> = (accountId: number, projectConfig: ProjectConfig, tempFile: FileResult, buildId: number) => Promise<T>;
|
|
5
4
|
type ProjectUploadResult<T> = {
|
|
@@ -19,7 +18,7 @@ type HandleProjectUploadArg<T> = {
|
|
|
19
18
|
profile?: string;
|
|
20
19
|
};
|
|
21
20
|
export declare function handleProjectUpload<T>({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage, forceCreate, isUploadCommand, sendIR, skipValidation, }: HandleProjectUploadArg<T>): Promise<ProjectUploadResult<T>>;
|
|
22
|
-
export declare function validateSourceDirectory(srcDir: string, projectConfig: ProjectConfig): void
|
|
21
|
+
export declare function validateSourceDirectory(srcDir: string, projectConfig: ProjectConfig, projectDir: string): Promise<void>;
|
|
23
22
|
export declare function validateNoHSMetaMismatch(srcDir: string, projectConfig: ProjectConfig): Promise<void>;
|
|
24
|
-
export declare function handleTranslate(projectDir: string, projectConfig: ProjectConfig, accountId: number, skipValidation: boolean, profile: string | undefined): Promise<
|
|
23
|
+
export declare function handleTranslate(projectDir: string, projectConfig: ProjectConfig, accountId: number, skipValidation: boolean, profile: string | undefined): Promise<unknown>;
|
|
25
24
|
export {};
|
package/lib/projects/upload.js
CHANGED
|
@@ -12,9 +12,11 @@ import util from 'node:util';
|
|
|
12
12
|
import { lib } from '../../lang/en.js';
|
|
13
13
|
import { ensureProjectExists } from './ensureProjectExists.js';
|
|
14
14
|
import { uiLogger } from '../ui/logger.js';
|
|
15
|
-
import {
|
|
15
|
+
import { isV2Project } from './platformVersion.js';
|
|
16
16
|
import { EXIT_CODES } from '../enums/exitCodes.js';
|
|
17
17
|
import ProjectValidationError from '../errors/ProjectValidationError.js';
|
|
18
|
+
import { walk } from '@hubspot/local-dev-lib/fs';
|
|
19
|
+
import { LEGACY_CONFIG_FILES } from '../constants.js';
|
|
18
20
|
async function uploadProjectFiles(accountId, projectName, filePath, uploadMessage, platformVersion, intermediateRepresentation) {
|
|
19
21
|
SpinniesManager.init({});
|
|
20
22
|
const accountIdentifier = uiAccountDescription(accountId) || `${accountId}`;
|
|
@@ -45,7 +47,7 @@ async function uploadProjectFiles(accountId, projectName, filePath, uploadMessag
|
|
|
45
47
|
export async function handleProjectUpload({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage = '', forceCreate = false, isUploadCommand = false, sendIR = false, skipValidation = false, }) {
|
|
46
48
|
const srcDir = path.resolve(projectDir, projectConfig.srcDir);
|
|
47
49
|
try {
|
|
48
|
-
validateSourceDirectory(srcDir, projectConfig);
|
|
50
|
+
await validateSourceDirectory(srcDir, projectConfig, projectDir);
|
|
49
51
|
}
|
|
50
52
|
catch (e) {
|
|
51
53
|
logError(e);
|
|
@@ -70,8 +72,7 @@ export async function handleProjectUpload({ accountId, projectConfig, projectDir
|
|
|
70
72
|
intermediateRepresentation = await handleTranslate(projectDir, projectConfig, accountId, skipValidation, profile);
|
|
71
73
|
}
|
|
72
74
|
catch (e) {
|
|
73
|
-
|
|
74
|
-
process.exit(EXIT_CODES.ERROR);
|
|
75
|
+
resolve({ uploadError: e });
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
78
|
await ensureProjectExists(accountId, projectConfig.name, {
|
|
@@ -105,15 +106,23 @@ export async function handleProjectUpload({ accountId, projectConfig, projectDir
|
|
|
105
106
|
archive.finalize();
|
|
106
107
|
return result;
|
|
107
108
|
}
|
|
108
|
-
export function validateSourceDirectory(srcDir, projectConfig) {
|
|
109
|
-
const
|
|
110
|
-
if (!
|
|
109
|
+
export async function validateSourceDirectory(srcDir, projectConfig, projectDir) {
|
|
110
|
+
const projectFilePaths = await walk(srcDir, ['node_modules']);
|
|
111
|
+
if (!projectFilePaths || projectFilePaths.length === 0) {
|
|
111
112
|
throw new ProjectValidationError(lib.projectUpload.handleProjectUpload.emptySource(projectConfig.srcDir));
|
|
112
113
|
}
|
|
114
|
+
if (isV2Project(projectConfig.platformVersion)) {
|
|
115
|
+
projectFilePaths.forEach(filePath => {
|
|
116
|
+
const filename = path.basename(filePath);
|
|
117
|
+
if (LEGACY_CONFIG_FILES.includes(filename)) {
|
|
118
|
+
uiLogger.warn(lib.projectUpload.handleProjectUpload.legacyFileDetected(path.relative(projectDir, filePath), projectConfig.platformVersion));
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
113
122
|
}
|
|
114
123
|
export async function validateNoHSMetaMismatch(srcDir, projectConfig) {
|
|
115
124
|
const hasHsMetaFiles = await projectContainsHsMetaFiles(srcDir);
|
|
116
|
-
if (!
|
|
125
|
+
if (!isV2Project(projectConfig.platformVersion) && hasHsMetaFiles) {
|
|
117
126
|
throw new ProjectValidationError(lib.projectUpload.wrongPlatformVersionMetaFiles);
|
|
118
127
|
}
|
|
119
128
|
}
|
|
@@ -133,5 +142,4 @@ export async function handleTranslate(projectDir, projectConfig, accountId, skip
|
|
|
133
142
|
}
|
|
134
143
|
throw e;
|
|
135
144
|
}
|
|
136
|
-
return undefined;
|
|
137
145
|
}
|
package/lib/projects/urls.d.ts
CHANGED
|
@@ -7,4 +7,3 @@ export declare function getProjectBuildDetailUrl(projectName: string, buildId: n
|
|
|
7
7
|
export declare function getProjectDeployDetailUrl(projectName: string, deployId: number, accountId: number): string;
|
|
8
8
|
export declare function getLocalDevUiUrl(accountId: number, showWelcomeScreen?: boolean): string;
|
|
9
9
|
export declare function getAccountHomeUrl(accountId: number): string;
|
|
10
|
-
export declare function getAppAllowlistUrl(accountId: number, projectName: string, appUid: string): string;
|
package/lib/projects/urls.js
CHANGED
|
@@ -41,6 +41,3 @@ export function getAccountHomeUrl(accountId) {
|
|
|
41
41
|
const baseUrl = getHubSpotWebsiteOrigin(getEnv(accountId) === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD);
|
|
42
42
|
return `${baseUrl}/home?portalId=${accountId}`;
|
|
43
43
|
}
|
|
44
|
-
export function getAppAllowlistUrl(accountId, projectName, appUid) {
|
|
45
|
-
return `${getProjectHomeUrl(accountId)}/project/${projectName}/component/${appUid}/distribution?panel=static-token-allowlist`;
|
|
46
|
-
}
|
|
@@ -11,6 +11,7 @@ vi.mock('@hubspot/local-dev-lib/api/projects', () => ({
|
|
|
11
11
|
}));
|
|
12
12
|
vi.mock('@hubspot/local-dev-lib/config', () => ({
|
|
13
13
|
getAccountId: vi.fn().mockImplementation(() => 123456789),
|
|
14
|
+
configFileExists: vi.fn().mockImplementation(() => true),
|
|
14
15
|
}));
|
|
15
16
|
describe('lib/prompts/downloadProjectPrompt', () => {
|
|
16
17
|
it('should honor the account passed as an option', async () => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Separator } from '@inquirer/prompts';
|
|
2
|
-
import {
|
|
2
|
+
import { projectAddPromptV2 } from '../projectAddPrompt.js';
|
|
3
3
|
import { promptUser } from '../promptUtils.js';
|
|
4
4
|
vi.mock('../promptUtils');
|
|
5
5
|
const mockedPromptUser = vi.mocked(promptUser);
|
|
@@ -19,7 +19,7 @@ describe('lib/prompts/projectAddPrompt', () => {
|
|
|
19
19
|
supportedAuthTypes: ['oauth'],
|
|
20
20
|
supportedDistributions: ['private'],
|
|
21
21
|
};
|
|
22
|
-
describe('
|
|
22
|
+
describe('projectAddPromptV2()', () => {
|
|
23
23
|
beforeEach(() => {
|
|
24
24
|
// Mock returns empty result, logic will use selectedComponents when selectedFeatures provided
|
|
25
25
|
mockedPromptUser.mockResolvedValue({});
|
|
@@ -31,7 +31,7 @@ describe('lib/prompts/projectAddPrompt', () => {
|
|
|
31
31
|
};
|
|
32
32
|
const components = [templateChoice];
|
|
33
33
|
const selectedFeatures = ['workflow-action-tool'];
|
|
34
|
-
const result = await
|
|
34
|
+
const result = await projectAddPromptV2(components, selectedFeatures);
|
|
35
35
|
expect(result.componentTemplate).toEqual([
|
|
36
36
|
mockComponentTemplateWithCliSelector,
|
|
37
37
|
]);
|
|
@@ -49,7 +49,7 @@ describe('lib/prompts/projectAddPrompt', () => {
|
|
|
49
49
|
};
|
|
50
50
|
const components = [templateChoice];
|
|
51
51
|
const selectedFeatures = ['module'];
|
|
52
|
-
const result = await
|
|
52
|
+
const result = await projectAddPromptV2(components, selectedFeatures);
|
|
53
53
|
expect(result.componentTemplate).toEqual([mockComponentTemplate]);
|
|
54
54
|
expect(mockedPromptUser).toHaveBeenCalledWith([
|
|
55
55
|
expect.objectContaining({
|
|
@@ -65,7 +65,7 @@ describe('lib/prompts/projectAddPrompt', () => {
|
|
|
65
65
|
};
|
|
66
66
|
const components = [templateChoice];
|
|
67
67
|
const selectedFeatures = ['workflow-action-tool']; // matches cliSelector
|
|
68
|
-
const result = await
|
|
68
|
+
const result = await projectAddPromptV2(components, selectedFeatures);
|
|
69
69
|
expect(result.componentTemplate).toEqual([
|
|
70
70
|
mockComponentTemplateWithCliSelector,
|
|
71
71
|
]);
|
|
@@ -78,7 +78,7 @@ describe('lib/prompts/projectAddPrompt', () => {
|
|
|
78
78
|
const components = [templateChoice];
|
|
79
79
|
const selectedFeatures = ['non-matching-feature'];
|
|
80
80
|
mockedPromptUser.mockResolvedValue({ componentTemplate: [] });
|
|
81
|
-
const result = await
|
|
81
|
+
const result = await projectAddPromptV2(components, selectedFeatures);
|
|
82
82
|
expect(result.componentTemplate).toEqual([]);
|
|
83
83
|
});
|
|
84
84
|
it('should throw error when selected feature component is disabled', async () => {
|
|
@@ -89,7 +89,7 @@ describe('lib/prompts/projectAddPrompt', () => {
|
|
|
89
89
|
};
|
|
90
90
|
const components = [disabledTemplateChoice];
|
|
91
91
|
const selectedFeatures = ['workflow-action-tool'];
|
|
92
|
-
await expect(
|
|
92
|
+
await expect(projectAddPromptV2(components, selectedFeatures)).rejects.toThrow(/Cannot.*feature.*workflow-action/);
|
|
93
93
|
});
|
|
94
94
|
it('should handle multiple components with mixed cliSelector availability', async () => {
|
|
95
95
|
const choice1 = {
|
|
@@ -102,7 +102,7 @@ describe('lib/prompts/projectAddPrompt', () => {
|
|
|
102
102
|
};
|
|
103
103
|
const components = [choice1, choice2];
|
|
104
104
|
const selectedFeatures = ['module', 'workflow-action-tool'];
|
|
105
|
-
const result = await
|
|
105
|
+
const result = await projectAddPromptV2(components, selectedFeatures);
|
|
106
106
|
expect(result.componentTemplate).toEqual([
|
|
107
107
|
mockComponentTemplate,
|
|
108
108
|
mockComponentTemplateWithCliSelector,
|
|
@@ -116,7 +116,7 @@ describe('lib/prompts/projectAddPrompt', () => {
|
|
|
116
116
|
};
|
|
117
117
|
const components = [separator, templateChoice];
|
|
118
118
|
const selectedFeatures = ['module'];
|
|
119
|
-
const result = await
|
|
119
|
+
const result = await projectAddPromptV2(components, selectedFeatures);
|
|
120
120
|
expect(result.componentTemplate).toEqual([mockComponentTemplate]);
|
|
121
121
|
});
|
|
122
122
|
it('should prompt user when no selectedFeatures provided', async () => {
|
|
@@ -129,7 +129,7 @@ describe('lib/prompts/projectAddPrompt', () => {
|
|
|
129
129
|
mockedPromptUser.mockResolvedValue({
|
|
130
130
|
componentTemplate: [mockComponentTemplate],
|
|
131
131
|
});
|
|
132
|
-
const result = await
|
|
132
|
+
const result = await projectAddPromptV2(components, selectedFeatures);
|
|
133
133
|
expect(mockedPromptUser).toHaveBeenCalledWith([
|
|
134
134
|
expect.objectContaining({
|
|
135
135
|
name: 'componentTemplate',
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
import { accountNameExistsInConfig } from '@hubspot/local-dev-lib/config';
|
|
2
2
|
import { promptUser } from './promptUtils.js';
|
|
3
|
-
import {
|
|
3
|
+
import { lib } from '../../lang/en.js';
|
|
4
4
|
import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
|
|
5
5
|
export function getCliAccountNamePromptConfig(defaultName) {
|
|
6
6
|
return {
|
|
7
7
|
name: 'name',
|
|
8
|
-
message:
|
|
8
|
+
message: lib.prompts.accountNamePrompt.enterAccountName,
|
|
9
9
|
default: defaultName,
|
|
10
10
|
validate(val) {
|
|
11
11
|
if (typeof val !== 'string') {
|
|
12
|
-
return
|
|
12
|
+
return lib.prompts.accountNamePrompt.errors.invalidName;
|
|
13
13
|
}
|
|
14
14
|
else if (!val.length) {
|
|
15
|
-
return
|
|
15
|
+
return lib.prompts.accountNamePrompt.errors.nameRequired;
|
|
16
16
|
}
|
|
17
17
|
else if (val.indexOf(' ') >= 0) {
|
|
18
|
-
return
|
|
18
|
+
return lib.prompts.accountNamePrompt.errors.spacesInName;
|
|
19
19
|
}
|
|
20
20
|
return accountNameExistsInConfig(val)
|
|
21
|
-
?
|
|
22
|
-
name: val,
|
|
23
|
-
})
|
|
21
|
+
? lib.prompts.accountNamePrompt.errors.accountNameExists(val)
|
|
24
22
|
: true;
|
|
25
23
|
},
|
|
26
24
|
};
|
|
@@ -37,14 +35,13 @@ export function hubspotAccountNamePrompt({ accountType, currentPortalCount = 0,
|
|
|
37
35
|
let defaultName;
|
|
38
36
|
if (isSandbox) {
|
|
39
37
|
promptMessageString = isDevelopmentSandbox
|
|
40
|
-
?
|
|
41
|
-
:
|
|
38
|
+
? lib.prompts.accountNamePrompt.enterDevelopmentSandboxName
|
|
39
|
+
: lib.prompts.accountNamePrompt.enterStandardSandboxName;
|
|
42
40
|
}
|
|
43
41
|
else if (isDeveloperTestAccount) {
|
|
44
|
-
promptMessageString =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
});
|
|
42
|
+
promptMessageString =
|
|
43
|
+
lib.prompts.accountNamePrompt.enterDeveloperTestAccountName;
|
|
44
|
+
defaultName = lib.prompts.accountNamePrompt.developerTestAccountDefaultName(currentPortalCount + 1);
|
|
48
45
|
}
|
|
49
46
|
return promptUser([
|
|
50
47
|
{
|
|
@@ -52,15 +49,13 @@ export function hubspotAccountNamePrompt({ accountType, currentPortalCount = 0,
|
|
|
52
49
|
message: promptMessageString,
|
|
53
50
|
validate(val) {
|
|
54
51
|
if (typeof val !== 'string') {
|
|
55
|
-
return
|
|
52
|
+
return lib.prompts.accountNamePrompt.errors.invalidName;
|
|
56
53
|
}
|
|
57
54
|
else if (!val.trim().length) {
|
|
58
|
-
return
|
|
55
|
+
return lib.prompts.accountNamePrompt.errors.nameRequired;
|
|
59
56
|
}
|
|
60
57
|
return accountNameExistsInConfig(val)
|
|
61
|
-
?
|
|
62
|
-
name: val,
|
|
63
|
-
})
|
|
58
|
+
? lib.prompts.accountNamePrompt.errors.accountNameExists(val)
|
|
64
59
|
: true;
|
|
65
60
|
},
|
|
66
61
|
default: defaultName,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getConfigDefaultAccount, getConfigAccounts, } from '@hubspot/local-dev-lib/config';
|
|
2
2
|
import { getAccountIdentifier } from '@hubspot/local-dev-lib/config/getAccountIdentifier';
|
|
3
3
|
import { promptUser } from './promptUtils.js';
|
|
4
|
-
import {
|
|
4
|
+
import { commands } from '../../lang/en.js';
|
|
5
5
|
import { uiAccountDescription } from '../ui/index.js';
|
|
6
6
|
function mapAccountChoices(portals) {
|
|
7
7
|
return (portals?.map(p => ({
|
|
@@ -17,7 +17,7 @@ export async function selectAccountFromConfig(prompt = '') {
|
|
|
17
17
|
type: 'list',
|
|
18
18
|
name: 'default',
|
|
19
19
|
pageSize: 20,
|
|
20
|
-
message: prompt ||
|
|
20
|
+
message: prompt || commands.account.subcommands.use.promptMessage,
|
|
21
21
|
choices: mapAccountChoices(accountsList),
|
|
22
22
|
default: defaultAccount ?? undefined,
|
|
23
23
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import { promptUser } from './promptUtils.js';
|
|
4
|
-
import {
|
|
4
|
+
import { lib } from '../../lang/en.js';
|
|
5
5
|
import { escapeRegExp } from '@hubspot/local-dev-lib/escapeRegExp';
|
|
6
6
|
const FIELDS_FILES = ['fields.json', 'fields.js', 'fields.cjs', 'fields.mjs'];
|
|
7
7
|
export async function fieldsJsPrompt(filePath, projectDir, skipFiles = []) {
|
|
@@ -26,7 +26,7 @@ export async function fieldsJsPrompt(filePath, projectDir, skipFiles = []) {
|
|
|
26
26
|
}));
|
|
27
27
|
const promptVal = await promptUser([
|
|
28
28
|
{
|
|
29
|
-
message:
|
|
29
|
+
message: lib.prompts.uploadPrompt.fieldsPrompt(fileDir),
|
|
30
30
|
type: 'list',
|
|
31
31
|
name: 'filePathChoice',
|
|
32
32
|
choices: selection,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { promptUser } from './promptUtils.js';
|
|
2
|
-
import {
|
|
2
|
+
import { lib } from '../../lang/en.js';
|
|
3
3
|
function getSampleTypesPrompt(choices) {
|
|
4
4
|
return {
|
|
5
5
|
type: 'rawlist',
|
|
6
6
|
name: 'sampleType',
|
|
7
|
-
message:
|
|
7
|
+
message: lib.prompts.createApiSamplePrompt.selectApiSampleApp,
|
|
8
8
|
choices: choices.map(choice => ({
|
|
9
9
|
name: `${choice.name} - ${choice.description}`,
|
|
10
10
|
value: choice.id,
|
|
@@ -15,7 +15,7 @@ function getSampleTypesPrompt(choices) {
|
|
|
15
15
|
resolve(true);
|
|
16
16
|
}
|
|
17
17
|
else {
|
|
18
|
-
reject(
|
|
18
|
+
reject(lib.prompts.createApiSamplePrompt.errors.apiSampleAppRequired);
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
21
|
},
|
|
@@ -25,7 +25,7 @@ function getLanguagesPrompt(choices) {
|
|
|
25
25
|
return {
|
|
26
26
|
type: 'rawlist',
|
|
27
27
|
name: 'sampleLanguage',
|
|
28
|
-
message:
|
|
28
|
+
message: lib.prompts.createApiSamplePrompt.selectLanguage,
|
|
29
29
|
choices: choices.map(choice => ({
|
|
30
30
|
name: choice,
|
|
31
31
|
value: choice,
|
|
@@ -35,7 +35,7 @@ function getLanguagesPrompt(choices) {
|
|
|
35
35
|
if (input && input.length > 0) {
|
|
36
36
|
resolve(true);
|
|
37
37
|
}
|
|
38
|
-
reject(
|
|
38
|
+
reject(lib.prompts.createApiSamplePrompt.errors.languageRequired);
|
|
39
39
|
});
|
|
40
40
|
},
|
|
41
41
|
};
|
|
@@ -94,7 +94,16 @@ export async function createDeveloperTestAccountConfigPrompt(args = {}, supportF
|
|
|
94
94
|
},
|
|
95
95
|
],
|
|
96
96
|
});
|
|
97
|
-
if (useDefaultAccountLevelsPromptResult.useDefaultAccountLevels === '
|
|
97
|
+
if (useDefaultAccountLevelsPromptResult.useDefaultAccountLevels === 'default') {
|
|
98
|
+
accountLevelsArray = [
|
|
99
|
+
{ hub: 'MARKETING', tier: AccountTiers.ENTERPRISE },
|
|
100
|
+
{ hub: 'OPS', tier: AccountTiers.ENTERPRISE },
|
|
101
|
+
{ hub: 'SERVICE', tier: AccountTiers.ENTERPRISE },
|
|
102
|
+
{ hub: 'SALES', tier: AccountTiers.ENTERPRISE },
|
|
103
|
+
{ hub: 'CONTENT', tier: AccountTiers.ENTERPRISE },
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
98
107
|
const accountLevelsPromptResult = await promptUser({
|
|
99
108
|
name: 'testAccountLevels',
|
|
100
109
|
message: lib.prompts.createDeveloperTestAccountConfigPrompt.tiersPrompt,
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import { promptUser } from './promptUtils.js';
|
|
2
|
-
import {
|
|
2
|
+
import { lib } from '../../lang/en.js';
|
|
3
3
|
const FUNCTIONS_FOLDER_PROMPT = {
|
|
4
4
|
name: 'functionsFolder',
|
|
5
|
-
message:
|
|
5
|
+
message: lib.prompts.createFunctionPrompt.enterFolder,
|
|
6
6
|
validate(val) {
|
|
7
7
|
if (typeof val !== 'string') {
|
|
8
|
-
return
|
|
8
|
+
return lib.prompts.createFunctionPrompt.errors.invalid;
|
|
9
9
|
}
|
|
10
10
|
else if (!val.length) {
|
|
11
|
-
return
|
|
11
|
+
return lib.prompts.createFunctionPrompt.errors.blank;
|
|
12
12
|
}
|
|
13
13
|
else if (val.indexOf(' ') >= 0) {
|
|
14
|
-
return
|
|
14
|
+
return lib.prompts.createFunctionPrompt.errors.space;
|
|
15
15
|
}
|
|
16
16
|
return true;
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
19
|
const FUNCTION_FILENAME_PROMPT = {
|
|
20
20
|
name: 'filename',
|
|
21
|
-
message:
|
|
21
|
+
message: lib.prompts.createFunctionPrompt.enterFilename,
|
|
22
22
|
validate(val) {
|
|
23
23
|
if (typeof val !== 'string') {
|
|
24
|
-
return
|
|
24
|
+
return lib.prompts.createFunctionPrompt.errors.invalid;
|
|
25
25
|
}
|
|
26
26
|
else if (!val.length) {
|
|
27
|
-
return
|
|
27
|
+
return lib.prompts.createFunctionPrompt.errors.blank;
|
|
28
28
|
}
|
|
29
29
|
else if (val.indexOf(' ') >= 0) {
|
|
30
|
-
return
|
|
30
|
+
return lib.prompts.createFunctionPrompt.errors.space;
|
|
31
31
|
}
|
|
32
32
|
return true;
|
|
33
33
|
},
|
|
@@ -35,22 +35,22 @@ const FUNCTION_FILENAME_PROMPT = {
|
|
|
35
35
|
const ENDPOINT_METHOD_PROMPT = {
|
|
36
36
|
type: 'list',
|
|
37
37
|
name: 'endpointMethod',
|
|
38
|
-
message:
|
|
38
|
+
message: lib.prompts.createFunctionPrompt.selectEndpointMethod,
|
|
39
39
|
default: 'GET',
|
|
40
40
|
choices: ['DELETE', 'GET', 'PATCH', 'POST', 'PUT'],
|
|
41
41
|
};
|
|
42
42
|
const ENDPOINT_PATH_PROMPT = {
|
|
43
43
|
name: 'endpointPath',
|
|
44
|
-
message:
|
|
44
|
+
message: lib.prompts.createFunctionPrompt.enterEndpointPath,
|
|
45
45
|
validate(val) {
|
|
46
46
|
if (typeof val !== 'string') {
|
|
47
|
-
return
|
|
47
|
+
return lib.prompts.createFunctionPrompt.errors.invalid;
|
|
48
48
|
}
|
|
49
49
|
else if (!val.length) {
|
|
50
|
-
return
|
|
50
|
+
return lib.prompts.createFunctionPrompt.errors.blank;
|
|
51
51
|
}
|
|
52
52
|
else if (val.indexOf(' ') >= 0) {
|
|
53
|
-
return
|
|
53
|
+
return lib.prompts.createFunctionPrompt.errors.space;
|
|
54
54
|
}
|
|
55
55
|
return true;
|
|
56
56
|
},
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { promptUser } from './promptUtils.js';
|
|
2
|
-
import {
|
|
2
|
+
import { lib } from '../../lang/en.js';
|
|
3
3
|
const MODULE_LABEL_PROMPT = {
|
|
4
4
|
name: 'moduleLabel',
|
|
5
|
-
message:
|
|
5
|
+
message: lib.prompts.createModulePrompt.enterLabel,
|
|
6
6
|
validate(val) {
|
|
7
7
|
if (typeof val !== 'string') {
|
|
8
|
-
return
|
|
8
|
+
return lib.prompts.createModulePrompt.errors.invalidLabel;
|
|
9
9
|
}
|
|
10
10
|
else if (!val.length) {
|
|
11
|
-
return
|
|
11
|
+
return lib.prompts.createModulePrompt.errors.labelRequired;
|
|
12
12
|
}
|
|
13
13
|
return true;
|
|
14
14
|
},
|
|
@@ -16,13 +16,13 @@ const MODULE_LABEL_PROMPT = {
|
|
|
16
16
|
const REACT_TYPE_PROMPT = {
|
|
17
17
|
type: 'confirm',
|
|
18
18
|
name: 'reactType',
|
|
19
|
-
message:
|
|
19
|
+
message: lib.prompts.createModulePrompt.selectReactType,
|
|
20
20
|
default: false,
|
|
21
21
|
};
|
|
22
22
|
const CONTENT_TYPES_PROMPT = {
|
|
23
23
|
type: 'checkbox',
|
|
24
24
|
name: 'contentTypes',
|
|
25
|
-
message:
|
|
25
|
+
message: lib.prompts.createModulePrompt.selectContentType,
|
|
26
26
|
choices: [
|
|
27
27
|
{ name: 'Any', value: 'ANY', checked: true },
|
|
28
28
|
{ name: 'Landing page', value: 'LANDING_PAGE' },
|
|
@@ -42,20 +42,20 @@ const CONTENT_TYPES_PROMPT = {
|
|
|
42
42
|
if (input.length > 0) {
|
|
43
43
|
resolve(true);
|
|
44
44
|
}
|
|
45
|
-
reject(
|
|
45
|
+
reject(lib.prompts.createModulePrompt.errors.contentTypeRequired);
|
|
46
46
|
});
|
|
47
47
|
},
|
|
48
48
|
};
|
|
49
49
|
const GLOBAL_PROMPT = {
|
|
50
50
|
type: 'confirm',
|
|
51
51
|
name: 'global',
|
|
52
|
-
message:
|
|
52
|
+
message: lib.prompts.createModulePrompt.confirmGlobal,
|
|
53
53
|
default: false,
|
|
54
54
|
};
|
|
55
55
|
const AVAILABLE_FOR_NEW_CONTENT = {
|
|
56
56
|
type: 'confirm',
|
|
57
57
|
name: 'availableForNewContent',
|
|
58
|
-
message:
|
|
58
|
+
message: lib.prompts.createModulePrompt.availableForNewContent,
|
|
59
59
|
default: true,
|
|
60
60
|
};
|
|
61
61
|
export function createModulePrompt(commandArgs = {}) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { promptUser } from './promptUtils.js';
|
|
2
|
-
import {
|
|
2
|
+
import { lib } from '../../lang/en.js';
|
|
3
3
|
const templateTypeChoices = [
|
|
4
4
|
{ name: 'page', value: 'page-template' },
|
|
5
5
|
{ name: 'email', value: 'email-template' },
|
|
@@ -13,7 +13,7 @@ const templateTypeChoices = [
|
|
|
13
13
|
const TEMPLATE_TYPE_PROMPT = {
|
|
14
14
|
type: 'list',
|
|
15
15
|
name: 'templateType',
|
|
16
|
-
message:
|
|
16
|
+
message: lib.prompts.createTemplatePrompt.selectTemplate,
|
|
17
17
|
default: 'page',
|
|
18
18
|
choices: templateTypeChoices,
|
|
19
19
|
};
|
|
@@ -2,16 +2,16 @@ import { promptUser } from './promptUtils.js';
|
|
|
2
2
|
import { getAccountId } from '@hubspot/local-dev-lib/config';
|
|
3
3
|
import { fetchProjects } from '@hubspot/local-dev-lib/api/projects';
|
|
4
4
|
import { logError, ApiErrorContext } from '../errorHandlers/index.js';
|
|
5
|
-
import {
|
|
5
|
+
import { uiLogger } from '../ui/logger.js';
|
|
6
6
|
import { EXIT_CODES } from '../enums/exitCodes.js';
|
|
7
|
-
import {
|
|
7
|
+
import { lib } from '../../lang/en.js';
|
|
8
8
|
async function createProjectsList(accountId) {
|
|
9
9
|
try {
|
|
10
10
|
if (accountId) {
|
|
11
11
|
const { data: projects } = await fetchProjects(accountId);
|
|
12
12
|
return projects.results;
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
uiLogger.error(lib.prompts.downloadProjectPrompt.errors.accountIdRequired);
|
|
15
15
|
process.exit(EXIT_CODES.ERROR);
|
|
16
16
|
}
|
|
17
17
|
catch (e) {
|
|
@@ -28,11 +28,8 @@ export async function downloadProjectPrompt(promptOptions) {
|
|
|
28
28
|
message: () => {
|
|
29
29
|
return promptOptions.project &&
|
|
30
30
|
!projectsList.find(p => p.name === promptOptions.name)
|
|
31
|
-
?
|
|
32
|
-
|
|
33
|
-
accountId: accountId || '',
|
|
34
|
-
})
|
|
35
|
-
: i18n(`lib.prompts.downloadProjectPrompt.selectProject`);
|
|
31
|
+
? lib.prompts.downloadProjectPrompt.errors.projectNotFound(promptOptions.project, accountId || 0)
|
|
32
|
+
: lib.prompts.downloadProjectPrompt.selectProject;
|
|
36
33
|
},
|
|
37
34
|
when: !promptOptions.project ||
|
|
38
35
|
!projectsList.find(p => p.name === promptOptions.project),
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
export declare function installAppBrowserPrompt(installUrl: string, isReinstall?: boolean
|
|
2
|
-
testingAccountId: number;
|
|
3
|
-
projectAccountId: number;
|
|
4
|
-
projectName: string;
|
|
5
|
-
appUid: string;
|
|
6
|
-
}): Promise<void>;
|
|
1
|
+
export declare function installAppBrowserPrompt(installUrl: string, isReinstall?: boolean): Promise<void>;
|
|
7
2
|
export declare function installAppAutoPrompt(): Promise<boolean>;
|
|
@@ -3,7 +3,7 @@ import { promptUser } from './promptUtils.js';
|
|
|
3
3
|
import { EXIT_CODES } from '../enums/exitCodes.js';
|
|
4
4
|
import { lib } from '../../lang/en.js';
|
|
5
5
|
import { uiLogger } from '../ui/logger.js';
|
|
6
|
-
export async function installAppBrowserPrompt(installUrl, isReinstall = false
|
|
6
|
+
export async function installAppBrowserPrompt(installUrl, isReinstall = false) {
|
|
7
7
|
uiLogger.log('');
|
|
8
8
|
if (isReinstall) {
|
|
9
9
|
uiLogger.log(lib.prompts.installAppPrompt.reinstallExplanation);
|
|
@@ -11,11 +11,6 @@ export async function installAppBrowserPrompt(installUrl, isReinstall = false, s
|
|
|
11
11
|
else {
|
|
12
12
|
uiLogger.log(lib.prompts.installAppPrompt.explanation);
|
|
13
13
|
}
|
|
14
|
-
if (staticAuthInstallOptions) {
|
|
15
|
-
const { testingAccountId, projectAccountId, projectName, appUid } = staticAuthInstallOptions;
|
|
16
|
-
uiLogger.log(lib.prompts.installAppPrompt.staticAuthExplanation(projectAccountId, testingAccountId, projectName, appUid));
|
|
17
|
-
uiLogger.log('');
|
|
18
|
-
}
|
|
19
14
|
const { shouldOpenBrowser } = await promptUser({
|
|
20
15
|
name: 'shouldOpenBrowser',
|
|
21
16
|
type: 'confirm',
|