@hubspot/cli 7.5.11-experimental.0 → 7.7.0-experimental.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +5 -6
- package/bin/hsmcp.d.ts +2 -0
- package/bin/hsmcp.js +13 -0
- package/commands/account/auth.d.ts +3 -7
- package/commands/account/auth.js +19 -9
- package/commands/account/clean.d.ts +3 -7
- package/commands/account/clean.js +16 -9
- package/commands/account/createOverride.d.ts +3 -7
- package/commands/account/createOverride.js +23 -6
- package/commands/account/info.d.ts +3 -7
- package/commands/account/info.js +13 -5
- package/commands/account/list.d.ts +3 -7
- package/commands/account/list.js +15 -8
- package/commands/account/remove.d.ts +3 -7
- package/commands/account/remove.js +21 -9
- package/commands/account/removeOverride.d.ts +3 -7
- package/commands/account/removeOverride.js +23 -6
- package/commands/account/rename.d.ts +3 -7
- package/commands/account/rename.js +16 -9
- package/commands/account/use.d.ts +5 -9
- package/commands/account/use.js +14 -6
- package/commands/account.d.ts +3 -4
- package/commands/account.js +35 -58
- package/commands/app/migrate.d.ts +1 -2
- package/commands/app/migrate.js +7 -8
- package/commands/app/secret/add.d.ts +7 -0
- package/commands/app/secret/add.js +64 -0
- package/commands/app/secret/delete.d.ts +8 -0
- package/commands/app/secret/delete.js +87 -0
- package/commands/app/secret/list.d.ts +6 -0
- package/commands/app/secret/list.js +64 -0
- package/commands/app/secret/update.d.ts +7 -0
- package/commands/app/secret/update.js +77 -0
- package/commands/app/secret.d.ts +3 -0
- package/commands/app/secret.js +30 -0
- package/commands/app.d.ts +2 -5
- package/commands/app.js +12 -8
- package/commands/auth.d.ts +3 -7
- package/commands/auth.js +12 -5
- package/commands/cms/convertFields.d.ts +7 -1
- package/commands/cms/convertFields.js +57 -41
- package/commands/cms/getReactModule.d.ts +7 -1
- package/commands/cms/getReactModule.js +52 -34
- package/commands/cms/lighthouseScore.d.ts +8 -1
- package/commands/cms/lighthouseScore.js +129 -100
- package/commands/cms.d.ts +3 -1
- package/commands/cms.js +24 -15
- package/commands/completion.d.ts +3 -1
- package/commands/completion.js +25 -12
- package/commands/config/migrate.d.ts +3 -7
- package/commands/config/migrate.js +25 -15
- package/commands/config/set.d.ts +5 -6
- package/commands/config/set.js +38 -14
- package/commands/config.d.ts +3 -4
- package/commands/config.js +20 -44
- package/commands/create/api-sample.d.ts +3 -1
- package/commands/create/api-sample.js +34 -38
- package/commands/create/app.d.ts +3 -1
- package/commands/create/app.js +9 -7
- package/commands/create/function.d.ts +3 -1
- package/commands/create/function.js +11 -10
- package/commands/create/index.d.ts +5 -1
- package/commands/create/index.js +23 -11
- package/commands/create/module.d.ts +3 -1
- package/commands/create/module.js +14 -13
- package/commands/create/react-app.d.ts +3 -1
- package/commands/create/react-app.js +10 -7
- package/commands/create/template.d.ts +3 -1
- package/commands/create/template.js +14 -14
- package/commands/create/vue-app.d.ts +3 -1
- package/commands/create/vue-app.js +10 -7
- package/commands/create/webpack-serverless.d.ts +3 -1
- package/commands/create/webpack-serverless.js +10 -7
- package/commands/create/website-theme.d.ts +3 -1
- package/commands/create/website-theme.js +10 -9
- package/commands/create.d.ts +4 -24
- package/commands/create.js +64 -74
- package/commands/customObject/create.d.ts +4 -9
- package/commands/customObject/create.js +17 -10
- package/commands/customObject/schema/create.d.ts +4 -9
- package/commands/customObject/schema/create.js +18 -11
- package/commands/customObject/schema/delete.d.ts +4 -9
- package/commands/customObject/schema/delete.js +17 -10
- package/commands/customObject/schema/fetch-all.d.ts +4 -9
- package/commands/customObject/schema/fetch-all.js +17 -10
- package/commands/customObject/schema/fetch.d.ts +4 -9
- package/commands/customObject/schema/fetch.js +17 -10
- package/commands/customObject/schema/list.d.ts +4 -8
- package/commands/customObject/schema/list.js +17 -10
- package/commands/customObject/schema/update.d.ts +4 -9
- package/commands/customObject/schema/update.js +18 -11
- package/commands/customObject/schema.d.ts +3 -5
- package/commands/customObject/schema.js +27 -54
- package/commands/customObject.d.ts +3 -4
- package/commands/customObject.js +20 -45
- package/commands/doctor.d.ts +6 -8
- package/commands/doctor.js +32 -21
- package/commands/feedback.d.ts +4 -1
- package/commands/feedback.js +40 -47
- package/commands/fetch.d.ts +12 -1
- package/commands/fetch.js +49 -33
- package/commands/filemanager/fetch.d.ts +4 -9
- package/commands/filemanager/fetch.js +18 -11
- package/commands/filemanager/upload.d.ts +4 -9
- package/commands/filemanager/upload.js +17 -11
- package/commands/filemanager.d.ts +3 -4
- package/commands/filemanager.js +20 -41
- package/commands/function/deploy.d.ts +6 -1
- package/commands/function/deploy.js +70 -50
- package/commands/function/list.d.ts +6 -1
- package/commands/function/list.js +44 -32
- package/commands/function/server.d.ts +10 -1
- package/commands/function/server.js +49 -38
- package/commands/function.d.ts +5 -1
- package/commands/function.js +24 -10
- package/commands/hubdb/clear.d.ts +4 -9
- package/commands/hubdb/clear.js +17 -10
- package/commands/hubdb/create.d.ts +4 -9
- package/commands/hubdb/create.js +17 -10
- package/commands/hubdb/delete.d.ts +4 -9
- package/commands/hubdb/delete.js +17 -10
- package/commands/hubdb/fetch.d.ts +4 -9
- package/commands/hubdb/fetch.js +17 -10
- package/commands/hubdb.d.ts +3 -2
- package/commands/hubdb.js +23 -45
- package/commands/init.d.ts +3 -7
- package/commands/init.js +12 -5
- package/commands/lint.d.ts +6 -4
- package/commands/lint.js +44 -43
- package/commands/list.d.ts +3 -7
- package/commands/list.js +19 -11
- package/commands/logs.d.ts +10 -1
- package/commands/logs.js +53 -44
- package/commands/module/marketplace-validate.d.ts +6 -1
- package/commands/module/marketplace-validate.js +39 -27
- package/commands/module.d.ts +3 -1
- package/commands/module.js +22 -10
- package/commands/mv.d.ts +3 -7
- package/commands/mv.js +19 -11
- package/commands/open.d.ts +3 -7
- package/commands/open.js +19 -11
- package/commands/project/cloneApp.d.ts +1 -1
- package/commands/project/cloneApp.js +2 -2
- package/commands/project/create.js +3 -3
- package/commands/project/deploy.d.ts +1 -0
- package/commands/project/deploy.js +40 -12
- package/commands/project/dev/index.d.ts +1 -4
- package/commands/project/dev/index.js +48 -16
- package/commands/project/dev/unifiedFlow.d.ts +2 -1
- package/commands/project/dev/unifiedFlow.js +85 -30
- package/commands/project/migrate.d.ts +1 -0
- package/commands/project/profile/add.d.ts +7 -0
- package/commands/project/profile/add.js +209 -0
- package/commands/project/profile/delete.d.ts +6 -0
- package/commands/project/profile/delete.js +123 -0
- package/commands/project/profile.d.ts +3 -0
- package/commands/project/profile.js +25 -0
- package/commands/project/upload.d.ts +1 -0
- package/commands/project/upload.js +38 -8
- package/commands/project/validate.d.ts +4 -0
- package/commands/project/validate.js +53 -0
- package/commands/project.js +4 -0
- package/commands/remove.d.ts +3 -7
- package/commands/remove.js +19 -11
- package/commands/sandbox/create.d.ts +4 -9
- package/commands/sandbox/create.js +18 -11
- package/commands/sandbox/delete.d.ts +4 -9
- package/commands/sandbox/delete.js +18 -11
- package/commands/sandbox.d.ts +3 -4
- package/commands/sandbox.js +20 -43
- package/commands/secret/addSecret.d.ts +4 -9
- package/commands/secret/addSecret.js +17 -10
- package/commands/secret/deleteSecret.d.ts +4 -9
- package/commands/secret/deleteSecret.js +17 -10
- package/commands/secret/listSecret.d.ts +4 -9
- package/commands/secret/listSecret.js +17 -10
- package/commands/secret/updateSecret.d.ts +4 -9
- package/commands/secret/updateSecret.js +17 -10
- package/commands/secret.d.ts +3 -4
- package/commands/secret.js +25 -48
- package/commands/setupMcp.d.ts +8 -0
- package/commands/setupMcp.js +229 -0
- package/commands/theme/generate-selectors.d.ts +3 -7
- package/commands/theme/generate-selectors.js +14 -6
- package/commands/theme/marketplace-validate.d.ts +4 -9
- package/commands/theme/marketplace-validate.js +17 -10
- package/commands/theme/preview.d.ts +4 -9
- package/commands/theme/preview.js +16 -9
- package/commands/theme.d.ts +3 -4
- package/commands/theme.js +23 -46
- package/commands/upload.d.ts +12 -1
- package/commands/upload.js +118 -97
- package/commands/watch.d.ts +14 -1
- package/commands/watch.js +76 -65
- package/lang/en.d.ts +838 -574
- package/lang/en.js +630 -373
- package/lang/en.lyaml +30 -23
- package/lib/accountTypes.js +2 -1
- package/lib/app/migrate.d.ts +23 -0
- package/lib/app/migrate.js +14 -3
- package/lib/app/migrate_legacy.js +7 -7
- package/lib/app/urls.d.ts +16 -0
- package/lib/app/urls.js +16 -0
- package/lib/configMigrate.js +24 -10
- package/lib/configOptions.d.ts +4 -0
- package/lib/configOptions.js +41 -46
- package/lib/constants.d.ts +6 -0
- package/lib/constants.js +7 -1
- package/lib/dependencyManagement.d.ts +0 -5
- package/lib/dependencyManagement.js +13 -39
- package/lib/doctor/Doctor.js +2 -1
- package/lib/filesystem.d.ts +1 -1
- package/lib/interpolation.d.ts +2 -3
- package/lib/lang.d.ts +2 -3
- package/lib/middleware/autoUpdateMiddleware.d.ts +1 -0
- package/lib/middleware/autoUpdateMiddleware.js +89 -0
- package/lib/middleware/configMiddleware.js +8 -0
- package/lib/npm.d.ts +9 -0
- package/lib/npm.js +36 -0
- package/lib/projectProfiles.d.ts +6 -0
- package/lib/projectProfiles.js +65 -0
- package/lib/projects/buildAndDeploy.js +17 -2
- package/lib/projects/localDev/AppDevModeInterface.d.ts +26 -0
- package/lib/projects/localDev/AppDevModeInterface.js +156 -0
- package/lib/projects/localDev/DevServerManagerV2.d.ts +11 -22
- package/lib/projects/localDev/DevServerManagerV2.js +19 -15
- package/lib/projects/localDev/LocalDevLogger.d.ts +30 -0
- package/lib/projects/localDev/LocalDevLogger.js +158 -0
- package/lib/projects/localDev/LocalDevManager.js +12 -5
- package/lib/projects/localDev/LocalDevProcess.d.ts +27 -0
- package/lib/projects/localDev/LocalDevProcess.js +171 -0
- package/lib/projects/localDev/LocalDevState.d.ts +37 -0
- package/lib/projects/localDev/LocalDevState.js +78 -0
- package/lib/projects/localDev/LocalDevWatcher.d.ts +10 -0
- package/lib/projects/localDev/LocalDevWatcher.js +56 -0
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +17 -0
- package/lib/projects/localDev/LocalDevWebsocketServer.js +92 -0
- package/lib/projects/localDev/helpers.d.ts +3 -2
- package/lib/projects/localDev/helpers.js +32 -2
- package/lib/projects/upload.d.ts +2 -1
- package/lib/projects/upload.js +2 -2
- package/lib/prompts/createApiSamplePrompt.d.ts +2 -10
- package/lib/prompts/createTemplatePrompt.d.ts +22 -4
- package/lib/prompts/installAppPrompt.d.ts +1 -0
- package/lib/prompts/installAppPrompt.js +35 -0
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +6 -1
- package/lib/prompts/projectDevTargetAccountPrompt.js +6 -6
- package/lib/prompts/promptUtils.d.ts +2 -1
- package/lib/prompts/promptUtils.js +2 -1
- package/lib/prompts/selectAppPrompt.d.ts +2 -0
- package/lib/prompts/selectAppPrompt.js +40 -0
- package/lib/prompts/{selectPublicAppPrompt.d.ts → selectPublicAppForMigrationPrompt.d.ts} +1 -1
- package/lib/prompts/{selectPublicAppPrompt.js → selectPublicAppForMigrationPrompt.js} +8 -8
- package/lib/testUtils.d.ts +3 -3
- package/lib/testUtils.js +8 -9
- package/lib/ui/index.js +4 -1
- package/lib/upload.d.ts +1 -1
- package/lib/validation.js +4 -5
- package/lib/yargsUtils.d.ts +4 -0
- package/lib/yargsUtils.js +6 -0
- package/mcp-server/index.d.ts +1 -0
- package/mcp-server/index.js +17 -0
- package/mcp-server/mcpLoader.d.ts +5 -0
- package/mcp-server/mcpLoader.js +24 -0
- package/mcp-server/tools/ExplainProjectStructureTool.d.ts +33 -0
- package/mcp-server/tools/ExplainProjectStructureTool.js +266 -0
- package/mcp-server/tools/GenerateAppComponentTool.d.ts +99 -0
- package/mcp-server/tools/GenerateAppComponentTool.js +193 -0
- package/mcp-server/tools/GenerateCardComponentTool.d.ts +74 -0
- package/mcp-server/tools/GenerateCardComponentTool.js +146 -0
- package/mcp-server/tools/GenerateProjectConfigTool.d.ts +32 -0
- package/mcp-server/tools/GenerateProjectConfigTool.js +40 -0
- package/mcp-server/tools/HubSpotCLIHelper.d.ts +16 -0
- package/mcp-server/tools/HubSpotCLIHelper.js +74 -0
- package/mcp-server/tools/UploadProjectTool.d.ts +44 -0
- package/mcp-server/tools/UploadProjectTool.js +149 -0
- package/mcp-server/tools/ValidateProjectTool.d.ts +62 -0
- package/mcp-server/tools/ValidateProjectTool.js +315 -0
- package/package.json +13 -6
- package/types/Cms.d.ts +30 -0
- package/types/Cms.js +2 -0
- package/types/LocalDev.d.ts +24 -0
- package/types/LocalDev.js +2 -0
- package/types/Prompts.d.ts +0 -7
- package/types/Yargs.d.ts +8 -1
- package/lib/projects/localDev/LocalDevManagerV2.d.ts +0 -64
- package/lib/projects/localDev/LocalDevManagerV2.js +0 -345
- package/lib/prompts/installPublicAppPrompt.d.ts +0 -1
- package/lib/prompts/installPublicAppPrompt.js +0 -41
|
@@ -0,0 +1,56 @@
|
|
|
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 path_1 = __importDefault(require("path"));
|
|
7
|
+
const chokidar_1 = __importDefault(require("chokidar"));
|
|
8
|
+
const constants_1 = require("../../constants");
|
|
9
|
+
const WATCH_EVENTS = {
|
|
10
|
+
add: 'add',
|
|
11
|
+
change: 'change',
|
|
12
|
+
unlink: 'unlink',
|
|
13
|
+
unlinkDir: 'unlinkDir',
|
|
14
|
+
};
|
|
15
|
+
class LocalDevWatcher {
|
|
16
|
+
localDevProcess;
|
|
17
|
+
watcher;
|
|
18
|
+
constructor(localDevProcess) {
|
|
19
|
+
this.localDevProcess = localDevProcess;
|
|
20
|
+
this.watcher = null;
|
|
21
|
+
}
|
|
22
|
+
async handleWatchEvent(filePath, event, configPaths) {
|
|
23
|
+
await this.localDevProcess.updateProjectNodes();
|
|
24
|
+
if (configPaths.includes(filePath)) {
|
|
25
|
+
this.localDevProcess.logger.uploadWarning();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.localDevProcess.handleFileChange(filePath, event);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
start() {
|
|
32
|
+
this.watcher = chokidar_1.default.watch(this.localDevProcess.projectDir, {
|
|
33
|
+
ignoreInitial: true,
|
|
34
|
+
ignored: ['**/dist'],
|
|
35
|
+
});
|
|
36
|
+
const configPaths = Object.values(this.localDevProcess.projectNodes).map(component => component.localDev.componentConfigPath);
|
|
37
|
+
const projectConfigPath = path_1.default.join(this.localDevProcess.projectDir, constants_1.PROJECT_CONFIG_FILE);
|
|
38
|
+
configPaths.push(projectConfigPath);
|
|
39
|
+
this.watcher.on('add', filePath => {
|
|
40
|
+
this.handleWatchEvent(filePath, WATCH_EVENTS.add, configPaths);
|
|
41
|
+
});
|
|
42
|
+
this.watcher.on('change', filePath => {
|
|
43
|
+
this.handleWatchEvent(filePath, WATCH_EVENTS.change, configPaths);
|
|
44
|
+
});
|
|
45
|
+
this.watcher.on('unlink', filePath => {
|
|
46
|
+
this.handleWatchEvent(filePath, WATCH_EVENTS.unlink, configPaths);
|
|
47
|
+
});
|
|
48
|
+
this.watcher.on('unlinkDir', filePath => {
|
|
49
|
+
this.handleWatchEvent(filePath, WATCH_EVENTS.unlinkDir, configPaths);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async stop() {
|
|
53
|
+
await this.watcher?.close();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.default = LocalDevWatcher;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import LocalDevProcess from './LocalDevProcess';
|
|
2
|
+
declare class LocalDevWebsocketServer {
|
|
3
|
+
private server?;
|
|
4
|
+
private _websocket?;
|
|
5
|
+
private debug?;
|
|
6
|
+
private localDevProcess;
|
|
7
|
+
constructor(localDevProcess: LocalDevProcess, debug?: boolean);
|
|
8
|
+
private websocket;
|
|
9
|
+
private log;
|
|
10
|
+
private logError;
|
|
11
|
+
private sendMessage;
|
|
12
|
+
private setupMessageHandlers;
|
|
13
|
+
private setupStateListeners;
|
|
14
|
+
start(): Promise<void>;
|
|
15
|
+
shutdown(): void;
|
|
16
|
+
}
|
|
17
|
+
export default LocalDevWebsocketServer;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ws_1 = require("ws");
|
|
4
|
+
const portManager_1 = require("@hubspot/local-dev-lib/portManager");
|
|
5
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
6
|
+
const constants_1 = require("../../constants");
|
|
7
|
+
const en_1 = require("../../../lang/en");
|
|
8
|
+
const SERVER_INSTANCE_ID = 'local-dev-ui-websocket-server';
|
|
9
|
+
const LOG_PREFIX = '[LocalDevWebsocketServer]';
|
|
10
|
+
class LocalDevWebsocketServer {
|
|
11
|
+
server;
|
|
12
|
+
_websocket;
|
|
13
|
+
debug;
|
|
14
|
+
localDevProcess;
|
|
15
|
+
constructor(localDevProcess, debug) {
|
|
16
|
+
this.localDevProcess = localDevProcess;
|
|
17
|
+
this.debug = debug;
|
|
18
|
+
}
|
|
19
|
+
websocket() {
|
|
20
|
+
if (!this._websocket) {
|
|
21
|
+
throw new Error(en_1.lib.LocalDevWebsocketServer.errors.notInitialized(LOG_PREFIX));
|
|
22
|
+
}
|
|
23
|
+
return this._websocket;
|
|
24
|
+
}
|
|
25
|
+
log(message) {
|
|
26
|
+
if (this.debug) {
|
|
27
|
+
logger_1.logger.log(LOG_PREFIX, message);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
logError(message) {
|
|
31
|
+
if (this.debug) {
|
|
32
|
+
logger_1.logger.error(LOG_PREFIX, message);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
sendMessage(message) {
|
|
36
|
+
this.websocket().send(JSON.stringify(message));
|
|
37
|
+
}
|
|
38
|
+
setupMessageHandlers() {
|
|
39
|
+
this.websocket().on('message', data => {
|
|
40
|
+
try {
|
|
41
|
+
const message = JSON.parse(data.toString());
|
|
42
|
+
if (!message.type) {
|
|
43
|
+
this.logError(en_1.lib.LocalDevWebsocketServer.errors.missingTypeField(data.toString()));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
switch (message.type) {
|
|
47
|
+
case constants_1.LOCAL_DEV_UI_WEBSOCKET_MESSAGE_TYPES.UPLOAD:
|
|
48
|
+
this.localDevProcess.uploadProject();
|
|
49
|
+
break;
|
|
50
|
+
case constants_1.LOCAL_DEV_UI_WEBSOCKET_MESSAGE_TYPES.INSTALL_DEPS:
|
|
51
|
+
break;
|
|
52
|
+
case constants_1.LOCAL_DEV_UI_WEBSOCKET_MESSAGE_TYPES.APP_INSTALLED:
|
|
53
|
+
break;
|
|
54
|
+
default:
|
|
55
|
+
this.logError(en_1.lib.LocalDevWebsocketServer.errors.unknownMessageType(message.type));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
this.logError(en_1.lib.LocalDevWebsocketServer.errors.invalidJSON(data.toString()));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
setupStateListeners() {
|
|
64
|
+
this.localDevProcess.addStateListener('projectNodes', nodes => {
|
|
65
|
+
this.sendMessage({
|
|
66
|
+
type: constants_1.LOCAL_DEV_UI_WEBSOCKET_MESSAGE_TYPES.UPDATE_PROJECT_NODES,
|
|
67
|
+
data: nodes,
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
async start() {
|
|
72
|
+
const portManagerIsRunning = await (0, portManager_1.isPortManagerServerRunning)();
|
|
73
|
+
if (!portManagerIsRunning) {
|
|
74
|
+
throw new Error(en_1.lib.LocalDevWebsocketServer.errors.portManagerNotRunning(LOG_PREFIX));
|
|
75
|
+
}
|
|
76
|
+
const portData = await (0, portManager_1.requestPorts)([{ instanceId: SERVER_INSTANCE_ID }]);
|
|
77
|
+
const port = portData[SERVER_INSTANCE_ID];
|
|
78
|
+
this.server = new ws_1.WebSocketServer({ port });
|
|
79
|
+
this.log(en_1.lib.LocalDevWebsocketServer.logs.startup(port));
|
|
80
|
+
this.server.on('connection', ws => {
|
|
81
|
+
this._websocket = ws;
|
|
82
|
+
this.setupMessageHandlers();
|
|
83
|
+
this.setupStateListeners();
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
shutdown() {
|
|
87
|
+
this.server?.close();
|
|
88
|
+
this.server = undefined;
|
|
89
|
+
this._websocket = undefined;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.default = LocalDevWebsocketServer;
|
|
@@ -4,7 +4,7 @@ import { DeveloperTestAccount } from '@hubspot/local-dev-lib/types/developerTest
|
|
|
4
4
|
import { Project } from '@hubspot/local-dev-lib/types/Project';
|
|
5
5
|
import { Build } from '@hubspot/local-dev-lib/types/Build';
|
|
6
6
|
import { ProjectConfig } from '../../../types/Projects';
|
|
7
|
-
import { ProjectDevTargetAccountPromptResponse } from '
|
|
7
|
+
import { ProjectDevTargetAccountPromptResponse } from '../../prompts/projectDevTargetAccountPrompt';
|
|
8
8
|
export declare function confirmDefaultAccountIsTarget(accountConfig: CLIAccount): Promise<void>;
|
|
9
9
|
export declare function checkIfDefaultAccountIsSupported(accountConfig: CLIAccount, hasPublicApps: boolean): Promise<void>;
|
|
10
10
|
export declare function checkIfParentAccountIsAuthed(accountConfig: CLIAccount): void;
|
|
@@ -14,6 +14,7 @@ export declare function createSandboxForLocalDev(accountId: number, accountConfi
|
|
|
14
14
|
export declare function createDeveloperTestAccountForLocalDev(accountId: number, accountConfig: CLIAccount, env: Environment): Promise<number>;
|
|
15
15
|
export declare function useExistingDevTestAccount(env: Environment, account: DeveloperTestAccount): Promise<void>;
|
|
16
16
|
export declare function createNewProjectForLocalDev(projectConfig: ProjectConfig, targetAccountId: number, shouldCreateWithoutConfirmation: boolean, hasPublicApps: boolean): Promise<Project>;
|
|
17
|
-
export declare function createInitialBuildForNewProject(projectConfig: ProjectConfig, projectDir: string, targetAccountId: number, sendIR?: boolean): Promise<Build>;
|
|
17
|
+
export declare function createInitialBuildForNewProject(projectConfig: ProjectConfig, projectDir: string, targetAccountId: number, sendIR?: boolean, profile?: string): Promise<Build>;
|
|
18
18
|
export declare function getAccountHomeUrl(accountId: number): string;
|
|
19
19
|
export declare function hasSandboxes(account: CLIAccount): Promise<boolean>;
|
|
20
|
+
export declare function selectAccountTypePrompt(accountConfig: CLIAccount): Promise<string | null>;
|
|
@@ -15,6 +15,7 @@ exports.createNewProjectForLocalDev = createNewProjectForLocalDev;
|
|
|
15
15
|
exports.createInitialBuildForNewProject = createInitialBuildForNewProject;
|
|
16
16
|
exports.getAccountHomeUrl = getAccountHomeUrl;
|
|
17
17
|
exports.hasSandboxes = hasSandboxes;
|
|
18
|
+
exports.selectAccountTypePrompt = selectAccountTypePrompt;
|
|
18
19
|
const config_1 = require("@hubspot/local-dev-lib/constants/config");
|
|
19
20
|
const index_1 = require("@hubspot/local-dev-lib/errors/index");
|
|
20
21
|
const urls_1 = require("@hubspot/local-dev-lib/urls");
|
|
@@ -212,7 +213,7 @@ async function createNewProjectForLocalDev(projectConfig, targetAccountId, shoul
|
|
|
212
213
|
.publicAppProjectMustExistExplanation
|
|
213
214
|
: en_1.lib.localDevHelpers.createNewProjectForLocalDev
|
|
214
215
|
.projectMustExistExplanation;
|
|
215
|
-
const explanationString = explanationLangFunction(
|
|
216
|
+
const explanationString = explanationLangFunction(projectConfig.name, targetAccountId);
|
|
216
217
|
logger_1.uiLogger.log('');
|
|
217
218
|
(0, ui_1.uiLine)();
|
|
218
219
|
logger_1.uiLogger.log(explanationString);
|
|
@@ -253,7 +254,7 @@ function projectUploadCallback(accountId, projectConfig, tempFile, buildId) {
|
|
|
253
254
|
}
|
|
254
255
|
// Create an initial build if the project was newly created in the account
|
|
255
256
|
// Return the newly deployed build
|
|
256
|
-
async function createInitialBuildForNewProject(projectConfig, projectDir, targetAccountId, sendIR) {
|
|
257
|
+
async function createInitialBuildForNewProject(projectConfig, projectDir, targetAccountId, sendIR, profile) {
|
|
257
258
|
const { result: initialUploadResult, uploadError } = await (0, upload_1.handleProjectUpload)({
|
|
258
259
|
accountId: targetAccountId,
|
|
259
260
|
projectConfig,
|
|
@@ -264,6 +265,7 @@ async function createInitialBuildForNewProject(projectConfig, projectDir, target
|
|
|
264
265
|
forceCreate: true,
|
|
265
266
|
skipValidation: true,
|
|
266
267
|
sendIR,
|
|
268
|
+
profile,
|
|
267
269
|
});
|
|
268
270
|
if (uploadError) {
|
|
269
271
|
if ((0, index_1.isSpecifiedError)(uploadError, {
|
|
@@ -319,3 +321,31 @@ async function hasSandboxes(account) {
|
|
|
319
321
|
return false;
|
|
320
322
|
}
|
|
321
323
|
}
|
|
324
|
+
// Top level prompt to choose the type of account to test on
|
|
325
|
+
async function selectAccountTypePrompt(accountConfig) {
|
|
326
|
+
const hasAccessToSandboxes = await hasSandboxes(accountConfig);
|
|
327
|
+
const result = await (0, promptUtils_1.listPrompt)(en_1.lib.localDevHelpers.selectAccountTypePrompt.message, {
|
|
328
|
+
choices: [
|
|
329
|
+
{
|
|
330
|
+
name: en_1.lib.localDevHelpers.selectAccountTypePrompt
|
|
331
|
+
.developerTestAccountOption,
|
|
332
|
+
value: config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST,
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
name: en_1.lib.localDevHelpers.selectAccountTypePrompt
|
|
336
|
+
.sandboxAccountOption,
|
|
337
|
+
value: config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
|
|
338
|
+
disabled: !hasAccessToSandboxes
|
|
339
|
+
? en_1.lib.localDevHelpers.selectAccountTypePrompt
|
|
340
|
+
.sandboxAccountOptionDisabled
|
|
341
|
+
: false,
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
name: en_1.lib.localDevHelpers.selectAccountTypePrompt
|
|
345
|
+
.productionAccountOption,
|
|
346
|
+
value: null,
|
|
347
|
+
},
|
|
348
|
+
],
|
|
349
|
+
});
|
|
350
|
+
return result;
|
|
351
|
+
}
|
package/lib/projects/upload.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ type HandleProjectUploadArg<T> = {
|
|
|
15
15
|
isUploadCommand?: boolean;
|
|
16
16
|
sendIR?: boolean;
|
|
17
17
|
skipValidation?: boolean;
|
|
18
|
+
profile?: string;
|
|
18
19
|
};
|
|
19
|
-
export declare function handleProjectUpload<T>({ accountId, projectConfig, projectDir, callbackFunc, uploadMessage, forceCreate, isUploadCommand, sendIR, skipValidation, }: HandleProjectUploadArg<T>): Promise<ProjectUploadResult<T>>;
|
|
20
|
+
export declare function handleProjectUpload<T>({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage, forceCreate, isUploadCommand, sendIR, skipValidation, }: HandleProjectUploadArg<T>): Promise<ProjectUploadResult<T>>;
|
|
20
21
|
export {};
|
package/lib/projects/upload.js
CHANGED
|
@@ -46,7 +46,7 @@ async function uploadProjectFiles(accountId, projectName, filePath, uploadMessag
|
|
|
46
46
|
}
|
|
47
47
|
return { buildId, error };
|
|
48
48
|
}
|
|
49
|
-
async function handleProjectUpload({ accountId, projectConfig, projectDir, callbackFunc, uploadMessage = '', forceCreate = false, isUploadCommand = false, sendIR = false, skipValidation = false, }) {
|
|
49
|
+
async function handleProjectUpload({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage = '', forceCreate = false, isUploadCommand = false, sendIR = false, skipValidation = false, }) {
|
|
50
50
|
const srcDir = path_1.default.resolve(projectDir, projectConfig.srcDir);
|
|
51
51
|
const filenames = fs_extra_1.default.readdirSync(srcDir);
|
|
52
52
|
if (!filenames || filenames.length === 0) {
|
|
@@ -66,7 +66,7 @@ async function handleProjectUpload({ accountId, projectConfig, projectDir, callb
|
|
|
66
66
|
projectSourceDir: path_1.default.join(projectDir, projectConfig.srcDir),
|
|
67
67
|
platformVersion: projectConfig.platformVersion,
|
|
68
68
|
accountId,
|
|
69
|
-
}, { skipValidation });
|
|
69
|
+
}, { skipValidation, profile });
|
|
70
70
|
logger_1.uiLogger.debug(node_util_1.default.inspect(intermediateRepresentation, false, null, true));
|
|
71
71
|
}
|
|
72
72
|
catch (e) {
|
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
name: string;
|
|
3
|
-
description: string;
|
|
4
|
-
id: string;
|
|
5
|
-
languages: string[];
|
|
6
|
-
};
|
|
7
|
-
type SampleConfig = {
|
|
8
|
-
samples: SampleChoice[];
|
|
9
|
-
};
|
|
1
|
+
import { ApiSampleConfig } from '../../types/Cms';
|
|
10
2
|
type SampleTypePromptResponse = {
|
|
11
3
|
sampleType?: string;
|
|
12
4
|
};
|
|
@@ -14,5 +6,5 @@ type LanguagePromptResponse = {
|
|
|
14
6
|
sampleLanguage?: string;
|
|
15
7
|
};
|
|
16
8
|
type CreateApiSamplePromptResponse = SampleTypePromptResponse & LanguagePromptResponse;
|
|
17
|
-
export declare function createApiSamplePrompt(samplesConfig:
|
|
9
|
+
export declare function createApiSamplePrompt(samplesConfig: ApiSampleConfig): Promise<CreateApiSamplePromptResponse>;
|
|
18
10
|
export {};
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
-
declare const templateTypeChoices: {
|
|
2
|
-
name:
|
|
3
|
-
value:
|
|
4
|
-
}
|
|
1
|
+
declare const templateTypeChoices: [{
|
|
2
|
+
readonly name: "page";
|
|
3
|
+
readonly value: "page-template";
|
|
4
|
+
}, {
|
|
5
|
+
readonly name: "email";
|
|
6
|
+
readonly value: "email-template";
|
|
7
|
+
}, {
|
|
8
|
+
readonly name: "partial";
|
|
9
|
+
readonly value: "partial";
|
|
10
|
+
}, {
|
|
11
|
+
readonly name: "global partial";
|
|
12
|
+
readonly value: "global-partial";
|
|
13
|
+
}, {
|
|
14
|
+
readonly name: "blog listing";
|
|
15
|
+
readonly value: "blog-listing-template";
|
|
16
|
+
}, {
|
|
17
|
+
readonly name: "blog post";
|
|
18
|
+
readonly value: "blog-post-template";
|
|
19
|
+
}, {
|
|
20
|
+
readonly name: "search results";
|
|
21
|
+
readonly value: "search-template";
|
|
22
|
+
}];
|
|
5
23
|
interface CreateTemplatePromptResponse {
|
|
6
24
|
templateType: (typeof templateTypeChoices)[number]['value'];
|
|
7
25
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function installAppPrompt(installUrl: string, isReinstall?: boolean): Promise<void>;
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
exports.installAppPrompt = installAppPrompt;
|
|
7
|
+
const open_1 = __importDefault(require("open"));
|
|
8
|
+
const promptUtils_1 = require("./promptUtils");
|
|
9
|
+
const exitCodes_1 = require("../enums/exitCodes");
|
|
10
|
+
const en_1 = require("../../lang/en");
|
|
11
|
+
const logger_1 = require("../ui/logger");
|
|
12
|
+
async function installAppPrompt(installUrl, isReinstall = false) {
|
|
13
|
+
logger_1.uiLogger.log('');
|
|
14
|
+
if (isReinstall) {
|
|
15
|
+
logger_1.uiLogger.log(en_1.lib.prompts.installAppPrompt.reinstallExplanation);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
logger_1.uiLogger.log(en_1.lib.prompts.installAppPrompt.explanation);
|
|
19
|
+
}
|
|
20
|
+
const { shouldOpenBrowser } = await (0, promptUtils_1.promptUser)({
|
|
21
|
+
name: 'shouldOpenBrowser',
|
|
22
|
+
type: 'confirm',
|
|
23
|
+
message: isReinstall
|
|
24
|
+
? en_1.lib.prompts.installAppPrompt.reinstallPrompt
|
|
25
|
+
: en_1.lib.prompts.installAppPrompt.prompt,
|
|
26
|
+
});
|
|
27
|
+
if (!isReinstall && !shouldOpenBrowser) {
|
|
28
|
+
logger_1.uiLogger.log(en_1.lib.prompts.installAppPrompt.decline);
|
|
29
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
30
|
+
}
|
|
31
|
+
else if (!shouldOpenBrowser) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
(0, open_1.default)(installUrl);
|
|
35
|
+
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { CLIAccount } from '@hubspot/local-dev-lib/types/Accounts';
|
|
2
2
|
import { DeveloperTestAccount } from '@hubspot/local-dev-lib/types/developerTestAccounts';
|
|
3
|
-
|
|
3
|
+
export type ProjectDevTargetAccountPromptResponse = {
|
|
4
|
+
targetAccountId: number | null;
|
|
5
|
+
createNestedAccount: boolean;
|
|
6
|
+
parentAccountId?: number | null;
|
|
7
|
+
notInConfigAccount?: DeveloperTestAccount | null;
|
|
8
|
+
};
|
|
4
9
|
export declare function selectSandboxTargetAccountPrompt(accounts: CLIAccount[], defaultAccountConfig: CLIAccount): Promise<ProjectDevTargetAccountPromptResponse>;
|
|
5
10
|
export declare function selectDeveloperTestTargetAccountPrompt(accounts: CLIAccount[], defaultAccountConfig: CLIAccount): Promise<ProjectDevTargetAccountPromptResponse>;
|
|
6
11
|
export declare function confirmDefaultAccountPrompt(accountName: string, accountType: string): Promise<boolean>;
|
|
@@ -4,16 +4,16 @@ exports.selectSandboxTargetAccountPrompt = selectSandboxTargetAccountPrompt;
|
|
|
4
4
|
exports.selectDeveloperTestTargetAccountPrompt = selectDeveloperTestTargetAccountPrompt;
|
|
5
5
|
exports.confirmDefaultAccountPrompt = confirmDefaultAccountPrompt;
|
|
6
6
|
exports.confirmUseExistingDeveloperTestAccountPrompt = confirmUseExistingDeveloperTestAccountPrompt;
|
|
7
|
-
const promptUtils_1 = require("./promptUtils");
|
|
8
|
-
const lang_1 = require("../lang");
|
|
9
|
-
const ui_1 = require("../ui");
|
|
10
|
-
const accountTypes_1 = require("../accountTypes");
|
|
11
7
|
const config_1 = require("@hubspot/local-dev-lib/config");
|
|
12
8
|
const sandboxHubs_1 = require("@hubspot/local-dev-lib/api/sandboxHubs");
|
|
13
9
|
const config_2 = require("@hubspot/local-dev-lib/constants/config");
|
|
14
10
|
const getAccountIdentifier_1 = require("@hubspot/local-dev-lib/config/getAccountIdentifier");
|
|
15
11
|
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
16
12
|
const developerTestAccounts_1 = require("@hubspot/local-dev-lib/api/developerTestAccounts");
|
|
13
|
+
const promptUtils_1 = require("./promptUtils");
|
|
14
|
+
const lang_1 = require("../lang");
|
|
15
|
+
const ui_1 = require("../ui");
|
|
16
|
+
const accountTypes_1 = require("../accountTypes");
|
|
17
17
|
const exitCodes_1 = require("../enums/exitCodes");
|
|
18
18
|
function mapNestedAccount(accountConfig) {
|
|
19
19
|
const parentAccountId = accountConfig.parentAccountId ?? null;
|
|
@@ -42,7 +42,7 @@ async function selectSandboxTargetAccountPrompt(accounts, defaultAccountConfig)
|
|
|
42
42
|
sandboxUsage = data.usage;
|
|
43
43
|
}
|
|
44
44
|
else {
|
|
45
|
-
logger_1.logger.error(`lib.prompts.projectDevTargetAccountPrompt.noAccountId`);
|
|
45
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.prompts.projectDevTargetAccountPrompt.noAccountId`));
|
|
46
46
|
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -101,7 +101,7 @@ async function selectDeveloperTestTargetAccountPrompt(accounts, defaultAccountCo
|
|
|
101
101
|
devTestAccountsResponse = data;
|
|
102
102
|
}
|
|
103
103
|
else {
|
|
104
|
-
logger_1.logger.error(`lib.prompts.projectDevTargetAccountPrompt.noAccountId`);
|
|
104
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.prompts.projectDevTargetAccountPrompt.noAccountId`));
|
|
105
105
|
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
106
106
|
}
|
|
107
107
|
}
|
|
@@ -4,9 +4,10 @@ export declare function confirmPrompt(message: string, options?: {
|
|
|
4
4
|
defaultAnswer?: boolean;
|
|
5
5
|
when?: PromptWhen;
|
|
6
6
|
}): Promise<boolean>;
|
|
7
|
-
export declare function listPrompt<T = string>(message: string, { choices, when, }: {
|
|
7
|
+
export declare function listPrompt<T = string>(message: string, { choices, when, defaultAnswer, }: {
|
|
8
8
|
choices: PromptChoices<T>;
|
|
9
9
|
when?: PromptWhen;
|
|
10
|
+
defaultAnswer?: string | number | boolean;
|
|
10
11
|
}): Promise<T>;
|
|
11
12
|
export declare function inputPrompt(message: string, { when, validate, defaultAnswer, }?: {
|
|
12
13
|
when?: boolean | (() => boolean);
|
|
@@ -22,7 +22,7 @@ async function confirmPrompt(message, options = {}) {
|
|
|
22
22
|
]);
|
|
23
23
|
return choice;
|
|
24
24
|
}
|
|
25
|
-
async function listPrompt(message, { choices, when, }) {
|
|
25
|
+
async function listPrompt(message, { choices, when, defaultAnswer, }) {
|
|
26
26
|
const { choice } = await promptUser([
|
|
27
27
|
{
|
|
28
28
|
name: 'choice',
|
|
@@ -30,6 +30,7 @@ async function listPrompt(message, { choices, when, }) {
|
|
|
30
30
|
message,
|
|
31
31
|
choices,
|
|
32
32
|
when,
|
|
33
|
+
default: defaultAnswer,
|
|
33
34
|
},
|
|
34
35
|
]);
|
|
35
36
|
return choice;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.selectAppPrompt = selectAppPrompt;
|
|
4
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
5
|
+
const appsDev_1 = require("@hubspot/local-dev-lib/api/appsDev");
|
|
6
|
+
const index_1 = require("../errorHandlers/index");
|
|
7
|
+
const en_1 = require("../../lang/en");
|
|
8
|
+
const promptUtils_1 = require("../prompts/promptUtils");
|
|
9
|
+
async function selectAppPrompt(accountId, appId) {
|
|
10
|
+
let availableApps = [];
|
|
11
|
+
try {
|
|
12
|
+
const appsResponse = await (0, appsDev_1.fetchPublicAppsForPortal)(accountId);
|
|
13
|
+
if (appsResponse.data.results) {
|
|
14
|
+
availableApps = appsResponse.data.results;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
(0, index_1.debugError)(err);
|
|
19
|
+
}
|
|
20
|
+
if (availableApps.length === 0) {
|
|
21
|
+
logger_1.logger.error(en_1.lib.prompts.selectAppPrompt.errors.noApps);
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
if (appId) {
|
|
25
|
+
const targetApp = availableApps.find(app => app.id === appId);
|
|
26
|
+
if (targetApp) {
|
|
27
|
+
return targetApp;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
logger_1.logger.error(en_1.lib.prompts.selectAppPrompt.errors.invalidAppId);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const appPromptValue = await (0, promptUtils_1.listPrompt)(en_1.lib.prompts.selectAppPrompt.selectAppId, {
|
|
34
|
+
choices: availableApps.map(app => ({
|
|
35
|
+
name: `${app.name} (${app.id})`,
|
|
36
|
+
value: app,
|
|
37
|
+
})),
|
|
38
|
+
});
|
|
39
|
+
return appPromptValue;
|
|
40
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
type PublicAppPromptResponse = {
|
|
2
2
|
appId: number;
|
|
3
3
|
};
|
|
4
|
-
export declare function
|
|
4
|
+
export declare function selectPublicAppForMigrationPrompt({ accountId, accountName, isMigratingApp, }: {
|
|
5
5
|
accountId: number | null;
|
|
6
6
|
accountName: string;
|
|
7
7
|
isMigratingApp?: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.selectPublicAppForMigrationPrompt = selectPublicAppForMigrationPrompt;
|
|
4
4
|
const promptUtils_1 = require("./promptUtils");
|
|
5
5
|
const lang_1 = require("../lang");
|
|
6
6
|
const ui_1 = require("../ui");
|
|
@@ -11,7 +11,7 @@ const exitCodes_1 = require("../enums/exitCodes");
|
|
|
11
11
|
async function fetchPublicAppOptions(accountId, accountName, isMigratingApp = false) {
|
|
12
12
|
try {
|
|
13
13
|
if (!accountId) {
|
|
14
|
-
logger_1.logger.error((0, lang_1.i18n)(`lib.prompts.
|
|
14
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.prompts.selectPublicAppForMigrationPrompt.errors.noAccountId`));
|
|
15
15
|
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
16
16
|
}
|
|
17
17
|
const { data: { results: publicApps }, } = await (0, appsDev_1.fetchPublicAppsForPortal)(accountId);
|
|
@@ -26,8 +26,8 @@ async function fetchPublicAppOptions(accountId, accountName, isMigratingApp = fa
|
|
|
26
26
|
? 'noAppsMigrationMessage'
|
|
27
27
|
: 'noAppsCloneMessage';
|
|
28
28
|
(0, ui_1.uiLine)();
|
|
29
|
-
logger_1.logger.error((0, lang_1.i18n)(`lib.prompts.
|
|
30
|
-
logger_1.logger.log((0, lang_1.i18n)(`lib.prompts.
|
|
29
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.prompts.selectPublicAppForMigrationPrompt.errors.${headerTranslationKey}`));
|
|
30
|
+
logger_1.logger.log((0, lang_1.i18n)(`lib.prompts.selectPublicAppForMigrationPrompt.errors.${messageTranslationKey}`, { accountName }));
|
|
31
31
|
(0, ui_1.uiLine)();
|
|
32
32
|
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
33
33
|
}
|
|
@@ -35,11 +35,11 @@ async function fetchPublicAppOptions(accountId, accountName, isMigratingApp = fa
|
|
|
35
35
|
}
|
|
36
36
|
catch (error) {
|
|
37
37
|
(0, index_1.logError)(error, accountId ? { accountId } : undefined);
|
|
38
|
-
logger_1.logger.error((0, lang_1.i18n)(`lib.prompts.
|
|
38
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.prompts.selectPublicAppForMigrationPrompt.errors.errorFetchingApps`));
|
|
39
39
|
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
async function
|
|
42
|
+
async function selectPublicAppForMigrationPrompt({ accountId, accountName, isMigratingApp = false, }) {
|
|
43
43
|
const publicApps = await fetchPublicAppOptions(accountId, accountName, isMigratingApp);
|
|
44
44
|
const translationKey = isMigratingApp
|
|
45
45
|
? 'selectAppIdMigrate'
|
|
@@ -47,7 +47,7 @@ async function selectPublicAppPrompt({ accountId, accountName, isMigratingApp =
|
|
|
47
47
|
return (0, promptUtils_1.promptUser)([
|
|
48
48
|
{
|
|
49
49
|
name: 'appId',
|
|
50
|
-
message: (0, lang_1.i18n)(`lib.prompts.
|
|
50
|
+
message: (0, lang_1.i18n)(`lib.prompts.selectPublicAppForMigrationPrompt.${translationKey}`, {
|
|
51
51
|
accountName,
|
|
52
52
|
}),
|
|
53
53
|
type: 'list',
|
|
@@ -56,7 +56,7 @@ async function selectPublicAppPrompt({ accountId, accountName, isMigratingApp =
|
|
|
56
56
|
if (isMigratingApp && preventProjectMigrations && listingInfo) {
|
|
57
57
|
return {
|
|
58
58
|
name: `${app.name} (${app.id})`,
|
|
59
|
-
disabled: (0, lang_1.i18n)(`lib.prompts.
|
|
59
|
+
disabled: (0, lang_1.i18n)(`lib.prompts.selectPublicAppForMigrationPrompt.errors.cannotBeMigrated`),
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
return {
|
package/lib/testUtils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HubSpotPromise } from '@hubspot/local-dev-lib/types/Http';
|
|
2
2
|
import { HubSpotHttpError } from '@hubspot/local-dev-lib/models/HubSpotHttpError';
|
|
3
3
|
type MockErrorResponse = {
|
|
4
4
|
status: number;
|
|
@@ -9,6 +9,6 @@ type MockErrorResponse = {
|
|
|
9
9
|
subCategory?: string;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
-
export declare
|
|
13
|
-
export declare
|
|
12
|
+
export declare function mockHubSpotHttpResponse<T>(data?: any): HubSpotPromise<T>;
|
|
13
|
+
export declare function mockHubSpotHttpError(message: string, response: MockErrorResponse): HubSpotHttpError;
|
|
14
14
|
export {};
|
package/lib/testUtils.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.mockHubSpotHttpResponse = mockHubSpotHttpResponse;
|
|
4
|
+
exports.mockHubSpotHttpError = mockHubSpotHttpError;
|
|
4
5
|
const axios_1 = require("axios");
|
|
5
6
|
const HubSpotHttpError_1 = require("@hubspot/local-dev-lib/models/HubSpotHttpError");
|
|
6
7
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
-
|
|
8
|
-
return {
|
|
8
|
+
function mockHubSpotHttpResponse(data) {
|
|
9
|
+
return Promise.resolve({
|
|
9
10
|
data,
|
|
10
11
|
status: 200,
|
|
11
12
|
statusText: 'OK',
|
|
@@ -13,12 +14,10 @@ const mockHubSpotHttpResponse = (data) => {
|
|
|
13
14
|
config: {
|
|
14
15
|
headers: new axios_1.AxiosHeaders(),
|
|
15
16
|
},
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const mockHubSpotHttpError = (message, response) => {
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function mockHubSpotHttpError(message, response) {
|
|
20
20
|
return new HubSpotHttpError_1.HubSpotHttpError(message, {
|
|
21
21
|
cause: { isAxiosError: true, response },
|
|
22
22
|
});
|
|
23
|
-
}
|
|
24
|
-
exports.mockHubSpotHttpError = mockHubSpotHttpError;
|
|
23
|
+
}
|
package/lib/ui/index.js
CHANGED
|
@@ -61,7 +61,10 @@ function uiAccountDescription(accountId, bold = true) {
|
|
|
61
61
|
if (account && account.accountType) {
|
|
62
62
|
message = `${account.name} [${HUBSPOT_ACCOUNT_TYPE_STRINGS[account.accountType]}] (${accountId})`;
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
else {
|
|
65
|
+
message = accountId ? accountId.toString() : '';
|
|
66
|
+
}
|
|
67
|
+
return bold ? chalk_1.default.bold(message) : message;
|
|
65
68
|
}
|
|
66
69
|
function uiInfoSection(title, logContent) {
|
|
67
70
|
uiLine();
|
package/lib/upload.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function getUploadableFileList(src: string, convertFields
|
|
1
|
+
export declare function getUploadableFileList(src: string, convertFields?: boolean): Promise<string[]>;
|