@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
|
@@ -1,56 +1,61 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
4
7
|
const promptUtils_1 = require("../../prompts/promptUtils");
|
|
5
|
-
const ui_extensions_dev_server_1 = require("@hubspot/ui-extensions-dev-server");
|
|
6
8
|
const portManager_1 = require("@hubspot/local-dev-lib/portManager");
|
|
7
9
|
const urls_1 = require("@hubspot/local-dev-lib/urls");
|
|
8
10
|
const config_1 = require("@hubspot/local-dev-lib/config");
|
|
11
|
+
const AppDevModeInterface_1 = __importDefault(require("./AppDevModeInterface"));
|
|
9
12
|
const en_1 = require("../../../lang/en");
|
|
10
13
|
class DevServerManagerV2 {
|
|
11
14
|
initialized;
|
|
12
15
|
started;
|
|
13
16
|
devServers;
|
|
14
|
-
|
|
17
|
+
localDevState;
|
|
18
|
+
constructor(options) {
|
|
15
19
|
this.initialized = false;
|
|
16
20
|
this.started = false;
|
|
17
|
-
this.
|
|
21
|
+
this.localDevState = options.localDevState;
|
|
22
|
+
const AppsDevServer = new AppDevModeInterface_1.default({
|
|
23
|
+
localDevState: options.localDevState,
|
|
24
|
+
localDevLogger: options.logger,
|
|
25
|
+
});
|
|
26
|
+
this.devServers = [AppsDevServer];
|
|
18
27
|
}
|
|
19
28
|
async iterateDevServers(callback) {
|
|
20
29
|
await Promise.all(this.devServers.map(devServer => callback(devServer)));
|
|
21
30
|
}
|
|
22
|
-
async setup(
|
|
31
|
+
async setup() {
|
|
23
32
|
let env;
|
|
24
|
-
const accountConfig = (0, config_1.getAccountConfig)(
|
|
33
|
+
const accountConfig = (0, config_1.getAccountConfig)(this.localDevState.targetTestingAccountId);
|
|
25
34
|
if (accountConfig) {
|
|
26
35
|
env = accountConfig.env;
|
|
27
36
|
}
|
|
28
37
|
await (0, portManager_1.startPortManagerServer)();
|
|
29
38
|
await this.iterateDevServers(async (serverInterface) => {
|
|
30
39
|
if (serverInterface.setup) {
|
|
40
|
+
// @TODO: In the future, update UIE Dev Server to use LocalDevState
|
|
31
41
|
await serverInterface.setup({
|
|
32
|
-
components: projectNodes,
|
|
42
|
+
components: this.localDevState.projectNodes,
|
|
33
43
|
promptUser: promptUtils_1.promptUser,
|
|
34
44
|
logger: logger_1.logger,
|
|
35
45
|
urls: {
|
|
36
46
|
api: (0, urls_1.getHubSpotApiOrigin)(env),
|
|
37
47
|
web: (0, urls_1.getHubSpotWebsiteOrigin)(env),
|
|
38
48
|
},
|
|
39
|
-
setActiveApp,
|
|
40
49
|
});
|
|
41
50
|
}
|
|
42
51
|
});
|
|
43
52
|
this.initialized = true;
|
|
44
53
|
}
|
|
45
|
-
async start(
|
|
54
|
+
async start() {
|
|
46
55
|
if (this.initialized) {
|
|
47
56
|
await this.iterateDevServers(async (serverInterface) => {
|
|
48
57
|
if (serverInterface.start) {
|
|
49
|
-
await serverInterface.start(
|
|
50
|
-
accountId,
|
|
51
|
-
projectConfig,
|
|
52
|
-
requestPorts: portManager_1.requestPorts,
|
|
53
|
-
});
|
|
58
|
+
await serverInterface.start();
|
|
54
59
|
}
|
|
55
60
|
});
|
|
56
61
|
}
|
|
@@ -79,5 +84,4 @@ class DevServerManagerV2 {
|
|
|
79
84
|
}
|
|
80
85
|
}
|
|
81
86
|
}
|
|
82
|
-
|
|
83
|
-
exports.default = Manager;
|
|
87
|
+
exports.default = DevServerManagerV2;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import LocalDevState from './LocalDevState';
|
|
2
|
+
declare class LocalDevLogger {
|
|
3
|
+
private state;
|
|
4
|
+
private mostRecentUploadWarning;
|
|
5
|
+
private uploadWarnings;
|
|
6
|
+
constructor(state: LocalDevState);
|
|
7
|
+
private logUploadInstructions;
|
|
8
|
+
private handleError;
|
|
9
|
+
getUploadCommand(): string;
|
|
10
|
+
uploadWarning(): void;
|
|
11
|
+
addUploadWarning(warning: string): void;
|
|
12
|
+
clearUploadWarnings(): void;
|
|
13
|
+
missingComponentsWarning(components: string[]): void;
|
|
14
|
+
fileChangeError(e: unknown): void;
|
|
15
|
+
devServerSetupError(e: unknown): void;
|
|
16
|
+
devServerStartError(e: unknown): void;
|
|
17
|
+
devServerCleanupError(e: unknown): void;
|
|
18
|
+
noDeployedBuild(): void;
|
|
19
|
+
resetSpinnies(): void;
|
|
20
|
+
startupMessage(): void;
|
|
21
|
+
cleanupStart(): void;
|
|
22
|
+
cleanupError(): void;
|
|
23
|
+
cleanupSuccess(): void;
|
|
24
|
+
uploadInitiated(): void;
|
|
25
|
+
projectConfigMismatch(): void;
|
|
26
|
+
uploadError(error: unknown): void;
|
|
27
|
+
uploadSuccess(): void;
|
|
28
|
+
monitorConsoleOutput(): void;
|
|
29
|
+
}
|
|
30
|
+
export default LocalDevLogger;
|
|
@@ -0,0 +1,158 @@
|
|
|
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 config_1 = require("@hubspot/local-dev-lib/config");
|
|
7
|
+
const config_2 = require("@hubspot/local-dev-lib/config");
|
|
8
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
9
|
+
const logger_2 = require("../../ui/logger");
|
|
10
|
+
const ui_1 = require("../../ui");
|
|
11
|
+
const en_1 = require("../../../lang/en");
|
|
12
|
+
const SpinniesManager_1 = __importDefault(require("../../ui/SpinniesManager"));
|
|
13
|
+
const errorHandlers_1 = require("../../errorHandlers");
|
|
14
|
+
class LocalDevLogger {
|
|
15
|
+
state;
|
|
16
|
+
mostRecentUploadWarning;
|
|
17
|
+
uploadWarnings;
|
|
18
|
+
constructor(state) {
|
|
19
|
+
this.state = state;
|
|
20
|
+
this.mostRecentUploadWarning = null;
|
|
21
|
+
this.uploadWarnings = new Set();
|
|
22
|
+
}
|
|
23
|
+
logUploadInstructions(warning) {
|
|
24
|
+
logger_2.uiLogger.log('');
|
|
25
|
+
logger_2.uiLogger.warn(warning);
|
|
26
|
+
logger_2.uiLogger.log('');
|
|
27
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevManager.uploadWarning.instructionsHeader);
|
|
28
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevManager.uploadWarning.stopDev);
|
|
29
|
+
if (this.state.isGithubLinked) {
|
|
30
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevManager.uploadWarning.pushToGithub);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevManager.uploadWarning.runUpload(this.getUploadCommand()));
|
|
34
|
+
}
|
|
35
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevManager.uploadWarning.restartDev);
|
|
36
|
+
}
|
|
37
|
+
handleError(e, langFunction) {
|
|
38
|
+
if (this.state.debug) {
|
|
39
|
+
logger_1.logger.error(e);
|
|
40
|
+
}
|
|
41
|
+
logger_2.uiLogger.error(langFunction(e instanceof Error ? e.message : ''));
|
|
42
|
+
}
|
|
43
|
+
getUploadCommand() {
|
|
44
|
+
const currentDefaultAccount = (0, config_2.getConfigDefaultAccount)() || undefined;
|
|
45
|
+
return this.state.targetProjectAccountId !==
|
|
46
|
+
(0, config_1.getAccountId)(currentDefaultAccount)
|
|
47
|
+
? (0, ui_1.uiCommandReference)(`hs project upload --account=${this.state.targetProjectAccountId}`)
|
|
48
|
+
: (0, ui_1.uiCommandReference)('hs project upload');
|
|
49
|
+
}
|
|
50
|
+
uploadWarning() {
|
|
51
|
+
// At the moment, there is only one additional warning. We may need to do this in a
|
|
52
|
+
// more robust way in the future
|
|
53
|
+
const additionalWarnings = Array.from(this.uploadWarnings).join('\n\n');
|
|
54
|
+
const warning = `${en_1.lib.LocalDevManager.uploadWarning.defaultWarning} ${additionalWarnings}`;
|
|
55
|
+
// Avoid logging the warning to the console if it is currently the most
|
|
56
|
+
// recently logged warning. We do not want to spam the console with the same message.
|
|
57
|
+
if (warning !== this.mostRecentUploadWarning) {
|
|
58
|
+
this.logUploadInstructions(warning);
|
|
59
|
+
this.mostRecentUploadWarning = warning;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
addUploadWarning(warning) {
|
|
63
|
+
this.uploadWarnings.add(warning);
|
|
64
|
+
}
|
|
65
|
+
clearUploadWarnings() {
|
|
66
|
+
this.uploadWarnings.clear();
|
|
67
|
+
}
|
|
68
|
+
missingComponentsWarning(components) {
|
|
69
|
+
const warning = en_1.lib.LocalDevManager.uploadWarning.missingComponents(components.join(', '));
|
|
70
|
+
if (warning !== this.mostRecentUploadWarning) {
|
|
71
|
+
this.logUploadInstructions(warning);
|
|
72
|
+
this.mostRecentUploadWarning = warning;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
fileChangeError(e) {
|
|
76
|
+
this.handleError(e, en_1.lib.LocalDevManager.devServer.fileChangeError);
|
|
77
|
+
}
|
|
78
|
+
devServerSetupError(e) {
|
|
79
|
+
this.handleError(e, en_1.lib.LocalDevManager.devServer.setupError);
|
|
80
|
+
}
|
|
81
|
+
devServerStartError(e) {
|
|
82
|
+
this.handleError(e, en_1.lib.LocalDevManager.devServer.startError);
|
|
83
|
+
}
|
|
84
|
+
devServerCleanupError(e) {
|
|
85
|
+
this.handleError(e, en_1.lib.LocalDevManager.devServer.cleanupError);
|
|
86
|
+
}
|
|
87
|
+
noDeployedBuild() {
|
|
88
|
+
logger_2.uiLogger.error(en_1.lib.LocalDevManager.noDeployedBuild(this.state.projectConfig.name, (0, ui_1.uiAccountDescription)(this.state.targetProjectAccountId), this.getUploadCommand()));
|
|
89
|
+
logger_2.uiLogger.log('');
|
|
90
|
+
}
|
|
91
|
+
resetSpinnies() {
|
|
92
|
+
SpinniesManager_1.default.stopAll();
|
|
93
|
+
SpinniesManager_1.default.init();
|
|
94
|
+
}
|
|
95
|
+
startupMessage() {
|
|
96
|
+
if (!this.state.debug) {
|
|
97
|
+
console.clear();
|
|
98
|
+
}
|
|
99
|
+
(0, ui_1.uiBetaTag)(en_1.lib.LocalDevManager.betaMessage);
|
|
100
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevManager.learnMoreLocalDevServer);
|
|
101
|
+
logger_2.uiLogger.log('');
|
|
102
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevManager.running(this.state.projectConfig.name, (0, ui_1.uiAccountDescription)(this.state.targetProjectAccountId)));
|
|
103
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevManager.viewProjectLink(this.state.projectConfig.name, this.state.targetProjectAccountId));
|
|
104
|
+
logger_2.uiLogger.log('');
|
|
105
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevManager.quitHelper);
|
|
106
|
+
(0, ui_1.uiLine)();
|
|
107
|
+
logger_2.uiLogger.log('');
|
|
108
|
+
}
|
|
109
|
+
cleanupStart() {
|
|
110
|
+
SpinniesManager_1.default.add('cleanupMessage', {
|
|
111
|
+
text: en_1.lib.LocalDevManager.exitingStart,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
cleanupError() {
|
|
115
|
+
SpinniesManager_1.default.fail('cleanupMessage', {
|
|
116
|
+
text: en_1.lib.LocalDevManager.exitingFail,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
cleanupSuccess() {
|
|
120
|
+
SpinniesManager_1.default.succeed('cleanupMessage', {
|
|
121
|
+
text: en_1.lib.LocalDevManager.exitingSucceed,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
uploadInitiated() {
|
|
125
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevProcess.uploadInitiated);
|
|
126
|
+
}
|
|
127
|
+
projectConfigMismatch() {
|
|
128
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevProcess.projectConfigMismatch);
|
|
129
|
+
}
|
|
130
|
+
uploadError(error) {
|
|
131
|
+
logger_1.logger.log('');
|
|
132
|
+
(0, errorHandlers_1.logError)(error);
|
|
133
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevProcess.uploadFailed);
|
|
134
|
+
logger_1.logger.log('');
|
|
135
|
+
}
|
|
136
|
+
uploadSuccess() {
|
|
137
|
+
logger_1.logger.log('');
|
|
138
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevProcess.uploadSuccess);
|
|
139
|
+
(0, ui_1.uiLine)();
|
|
140
|
+
logger_1.logger.log('');
|
|
141
|
+
}
|
|
142
|
+
monitorConsoleOutput() {
|
|
143
|
+
const originalStdoutWrite = process.stdout.write.bind(process.stdout);
|
|
144
|
+
function customStdoutWrite(chunk, encoding, callback) {
|
|
145
|
+
// Reset the most recently logged warning
|
|
146
|
+
if (this.mostRecentUploadWarning) {
|
|
147
|
+
this.mostRecentUploadWarning = null;
|
|
148
|
+
}
|
|
149
|
+
if (typeof encoding === 'function') {
|
|
150
|
+
return originalStdoutWrite(chunk, callback);
|
|
151
|
+
}
|
|
152
|
+
return originalStdoutWrite(chunk, encoding, callback);
|
|
153
|
+
}
|
|
154
|
+
customStdoutWrite.bind(this);
|
|
155
|
+
process.stdout.write = customStdoutWrite;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.default = LocalDevLogger;
|
|
@@ -14,17 +14,17 @@ const constants_1 = require("../../constants");
|
|
|
14
14
|
const SpinniesManager_1 = __importDefault(require("../../ui/SpinniesManager"));
|
|
15
15
|
const DevServerManager_1 = __importDefault(require("./DevServerManager"));
|
|
16
16
|
const exitCodes_1 = require("../../enums/exitCodes");
|
|
17
|
-
const urls_1 = require("../../projects/urls");
|
|
18
17
|
const helpers_1 = require("./helpers");
|
|
19
18
|
const structure_1 = require("../../projects/structure");
|
|
20
19
|
const Projects_1 = require("../../../types/Projects");
|
|
21
20
|
const ui_1 = require("../../ui");
|
|
22
21
|
const index_1 = require("../../errorHandlers/index");
|
|
23
|
-
const
|
|
22
|
+
const installAppPrompt_1 = require("../../prompts/installAppPrompt");
|
|
24
23
|
const promptUtils_1 = require("../../prompts/promptUtils");
|
|
25
24
|
const process_1 = require("../../process");
|
|
26
25
|
const en_1 = require("../../../lang/en");
|
|
27
26
|
const logger_2 = require("../../ui/logger");
|
|
27
|
+
const urls_1 = require("../../app/urls");
|
|
28
28
|
const WATCH_EVENTS = {
|
|
29
29
|
add: 'add',
|
|
30
30
|
change: 'change',
|
|
@@ -113,7 +113,7 @@ class LocalDevManager {
|
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
115
|
(0, ui_1.uiLine)();
|
|
116
|
-
logger_2.uiLogger.warn(en_1.lib.LocalDevManager.activeInstallWarning.installCount(this.activePublicAppData.name, this.publicAppActiveInstalls
|
|
116
|
+
logger_2.uiLogger.warn(en_1.lib.LocalDevManager.activeInstallWarning.installCount(this.activePublicAppData.name, this.publicAppActiveInstalls));
|
|
117
117
|
logger_2.uiLogger.log(en_1.lib.LocalDevManager.activeInstallWarning.explanation);
|
|
118
118
|
(0, ui_1.uiLine)();
|
|
119
119
|
const proceed = await (0, promptUtils_1.confirmPrompt)(en_1.lib.LocalDevManager.activeInstallWarning.confirmationPrompt, { defaultAnswer: false });
|
|
@@ -141,7 +141,7 @@ class LocalDevManager {
|
|
|
141
141
|
logger_2.uiLogger.log((0, ui_1.uiLink)(en_1.lib.LocalDevManager.learnMoreLocalDevServer, 'https://developers.hubspot.com/docs/platform/project-cli-commands#start-a-local-development-server'));
|
|
142
142
|
logger_2.uiLogger.log('');
|
|
143
143
|
logger_2.uiLogger.log(chalk_1.default.hex(ui_1.UI_COLORS.SORBET)(en_1.lib.LocalDevManager.running(this.projectConfig.name, (0, ui_1.uiAccountDescription)(this.targetAccountId))));
|
|
144
|
-
logger_2.uiLogger.log(
|
|
144
|
+
logger_2.uiLogger.log(en_1.lib.LocalDevManager.viewProjectLink(this.projectConfig.name, this.targetProjectAccountId));
|
|
145
145
|
if (this.activeApp?.type === Projects_1.ComponentTypes.PublicApp) {
|
|
146
146
|
logger_2.uiLogger.log((0, ui_1.uiLink)(en_1.lib.LocalDevManager.viewTestAccountLink, (0, helpers_1.getAccountHomeUrl)(this.targetAccountId)));
|
|
147
147
|
}
|
|
@@ -188,7 +188,14 @@ class LocalDevManager {
|
|
|
188
188
|
const { data: { isInstalledWithScopeGroups, previouslyAuthorizedScopeGroups }, } = await (0, localDevAuth_1.fetchAppInstallationData)(this.targetAccountId, this.projectId, this.activeApp.config.uid, this.activeApp.config.auth.requiredScopes, this.activeApp.config.auth.optionalScopes);
|
|
189
189
|
const isReinstall = previouslyAuthorizedScopeGroups.length > 0;
|
|
190
190
|
if (!isInstalledWithScopeGroups) {
|
|
191
|
-
|
|
191
|
+
const installUrl = (0, urls_1.getOauthAppInstallUrl)({
|
|
192
|
+
targetAccountId: this.targetAccountId,
|
|
193
|
+
env: this.env,
|
|
194
|
+
clientId: this.activePublicAppData.clientId,
|
|
195
|
+
scopes: this.activeApp.config.auth.requiredScopes,
|
|
196
|
+
redirectUrls: this.activeApp.config.auth.redirectUrls,
|
|
197
|
+
});
|
|
198
|
+
await (0, installAppPrompt_1.installAppPrompt)(installUrl, isReinstall);
|
|
192
199
|
}
|
|
193
200
|
}
|
|
194
201
|
updateKeypressListeners() {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types';
|
|
2
|
+
import LocalDevState from './LocalDevState';
|
|
3
|
+
import LocalDevLogger from './LocalDevLogger';
|
|
4
|
+
import { LocalDevStateConstructorOptions, LocalDevStateListener } from '../../../types/LocalDev';
|
|
5
|
+
declare class LocalDevProcess {
|
|
6
|
+
private state;
|
|
7
|
+
private _logger;
|
|
8
|
+
private devServerManager;
|
|
9
|
+
constructor(options: LocalDevStateConstructorOptions);
|
|
10
|
+
get projectDir(): string;
|
|
11
|
+
get projectNodes(): {
|
|
12
|
+
[key: string]: IntermediateRepresentationNodeLocalDev;
|
|
13
|
+
};
|
|
14
|
+
get logger(): LocalDevLogger;
|
|
15
|
+
private setupDevServers;
|
|
16
|
+
private startDevServers;
|
|
17
|
+
private cleanupDevServers;
|
|
18
|
+
private compareLocalProjectToDeployed;
|
|
19
|
+
private projectConfigValidForUpload;
|
|
20
|
+
handleFileChange(filePath: string, event: string): void;
|
|
21
|
+
start(): Promise<void>;
|
|
22
|
+
stop(showProgress?: boolean): Promise<void>;
|
|
23
|
+
updateProjectNodes(): Promise<void>;
|
|
24
|
+
uploadProject(): Promise<void>;
|
|
25
|
+
addStateListener<K extends keyof LocalDevState>(key: K, listener: LocalDevStateListener<K>): void;
|
|
26
|
+
}
|
|
27
|
+
export default LocalDevProcess;
|
|
@@ -0,0 +1,171 @@
|
|
|
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 project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const LocalDevState_1 = __importDefault(require("./LocalDevState"));
|
|
9
|
+
const LocalDevLogger_1 = __importDefault(require("./LocalDevLogger"));
|
|
10
|
+
const DevServerManagerV2_1 = __importDefault(require("./DevServerManagerV2"));
|
|
11
|
+
const exitCodes_1 = require("../../enums/exitCodes");
|
|
12
|
+
const transform_1 = require("@hubspot/project-parsing-lib/src/lib/transform");
|
|
13
|
+
const config_1 = require("../config");
|
|
14
|
+
const upload_1 = require("../upload");
|
|
15
|
+
const buildAndDeploy_1 = require("../buildAndDeploy");
|
|
16
|
+
class LocalDevProcess {
|
|
17
|
+
state;
|
|
18
|
+
_logger;
|
|
19
|
+
devServerManager;
|
|
20
|
+
constructor(options) {
|
|
21
|
+
this.state = new LocalDevState_1.default(options);
|
|
22
|
+
this._logger = new LocalDevLogger_1.default(this.state);
|
|
23
|
+
this.devServerManager = new DevServerManagerV2_1.default({
|
|
24
|
+
localDevState: this.state,
|
|
25
|
+
logger: this._logger,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
get projectDir() {
|
|
29
|
+
return this.state.projectDir;
|
|
30
|
+
}
|
|
31
|
+
get projectNodes() {
|
|
32
|
+
return this.state.projectNodes;
|
|
33
|
+
}
|
|
34
|
+
get logger() {
|
|
35
|
+
return this._logger;
|
|
36
|
+
}
|
|
37
|
+
async setupDevServers() {
|
|
38
|
+
try {
|
|
39
|
+
await this.devServerManager.setup();
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
this.logger.devServerSetupError(e);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async startDevServers() {
|
|
48
|
+
try {
|
|
49
|
+
await this.devServerManager.start();
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
this.logger.devServerStartError(e);
|
|
53
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async cleanupDevServers() {
|
|
57
|
+
try {
|
|
58
|
+
await this.devServerManager.cleanup();
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
this.logger.devServerCleanupError(e);
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
compareLocalProjectToDeployed() {
|
|
67
|
+
const deployedComponentNames = this.state.deployedBuild.subbuildStatuses.map(subbuildStatus => subbuildStatus.buildName);
|
|
68
|
+
const missingProjectNodes = [];
|
|
69
|
+
Object.values(this.projectNodes).forEach(node => {
|
|
70
|
+
if (!deployedComponentNames.includes(node.uid)) {
|
|
71
|
+
const userFriendlyName = (0, transform_1.mapToUserFriendlyName)(node.componentType);
|
|
72
|
+
const label = userFriendlyName ? `[${userFriendlyName}] ` : '';
|
|
73
|
+
missingProjectNodes.push(`${label}${node.uid}`);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
if (missingProjectNodes.length) {
|
|
77
|
+
this.logger.missingComponentsWarning(missingProjectNodes);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async projectConfigValidForUpload() {
|
|
81
|
+
const { projectConfig } = await (0, config_1.getProjectConfig)();
|
|
82
|
+
if (!projectConfig) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
Object.keys(projectConfig).forEach(key => {
|
|
86
|
+
const field = key;
|
|
87
|
+
if (projectConfig[field] !== this.state.projectConfig[field]) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
handleFileChange(filePath, event) {
|
|
94
|
+
try {
|
|
95
|
+
this.devServerManager.fileChange({ filePath, event });
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
this.logger.fileChangeError(e);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async start() {
|
|
102
|
+
this.logger.resetSpinnies();
|
|
103
|
+
// Local dev currently relies on the existence of a deployed build in the target account
|
|
104
|
+
if (!this.state.deployedBuild) {
|
|
105
|
+
this.logger.noDeployedBuild();
|
|
106
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
107
|
+
}
|
|
108
|
+
const setupSucceeded = await this.setupDevServers();
|
|
109
|
+
if (!setupSucceeded) {
|
|
110
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
111
|
+
}
|
|
112
|
+
this.logger.startupMessage();
|
|
113
|
+
await this.startDevServers();
|
|
114
|
+
this.logger.monitorConsoleOutput();
|
|
115
|
+
// Verify that there are no mismatches between components in the local project
|
|
116
|
+
// and components in the deployed build of the project.
|
|
117
|
+
this.compareLocalProjectToDeployed();
|
|
118
|
+
}
|
|
119
|
+
async stop(showProgress = true) {
|
|
120
|
+
if (showProgress) {
|
|
121
|
+
this.logger.cleanupStart();
|
|
122
|
+
}
|
|
123
|
+
const cleanupSucceeded = await this.cleanupDevServers();
|
|
124
|
+
if (!cleanupSucceeded) {
|
|
125
|
+
if (showProgress) {
|
|
126
|
+
this.logger.cleanupError();
|
|
127
|
+
}
|
|
128
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
129
|
+
}
|
|
130
|
+
if (showProgress) {
|
|
131
|
+
this.logger.cleanupSuccess();
|
|
132
|
+
}
|
|
133
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
134
|
+
}
|
|
135
|
+
async updateProjectNodes() {
|
|
136
|
+
const intermediateRepresentation = await (0, project_parsing_lib_1.translateForLocalDev)({
|
|
137
|
+
projectSourceDir: path_1.default.join(this.state.projectDir, this.state.projectConfig.srcDir),
|
|
138
|
+
platformVersion: this.state.projectConfig.platformVersion,
|
|
139
|
+
accountId: this.state.targetProjectAccountId,
|
|
140
|
+
});
|
|
141
|
+
this.state.projectNodes =
|
|
142
|
+
intermediateRepresentation.intermediateNodesIndexedByUid;
|
|
143
|
+
}
|
|
144
|
+
async uploadProject() {
|
|
145
|
+
this.logger.uploadInitiated();
|
|
146
|
+
const isUploadable = await this.projectConfigValidForUpload();
|
|
147
|
+
if (!isUploadable) {
|
|
148
|
+
this.logger.projectConfigMismatch();
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const { uploadError } = await (0, upload_1.handleProjectUpload)({
|
|
152
|
+
accountId: this.state.targetProjectAccountId,
|
|
153
|
+
projectConfig: this.state.projectConfig,
|
|
154
|
+
projectDir: this.state.projectDir,
|
|
155
|
+
callbackFunc: buildAndDeploy_1.pollProjectBuildAndDeploy,
|
|
156
|
+
sendIR: true,
|
|
157
|
+
skipValidation: true,
|
|
158
|
+
});
|
|
159
|
+
if (uploadError) {
|
|
160
|
+
this.logger.uploadError(uploadError);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
this.logger.uploadSuccess();
|
|
164
|
+
this.logger.clearUploadWarnings();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
addStateListener(key, listener) {
|
|
168
|
+
this.state.addListener(key, listener);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
exports.default = LocalDevProcess;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Build } from '@hubspot/local-dev-lib/types/Build';
|
|
2
|
+
import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types';
|
|
3
|
+
import { Environment } from '@hubspot/local-dev-lib/types/Config';
|
|
4
|
+
import { ProjectConfig } from '../../../types/Projects';
|
|
5
|
+
import { LocalDevStateConstructorOptions, LocalDevStateListener } from '../../../types/LocalDev';
|
|
6
|
+
declare class LocalDevState {
|
|
7
|
+
private _targetProjectAccountId;
|
|
8
|
+
private _targetTestingAccountId;
|
|
9
|
+
private _projectConfig;
|
|
10
|
+
private _projectDir;
|
|
11
|
+
private _projectId;
|
|
12
|
+
private _debug;
|
|
13
|
+
private _deployedBuild?;
|
|
14
|
+
private _isGithubLinked;
|
|
15
|
+
private _projectNodes;
|
|
16
|
+
private _env;
|
|
17
|
+
private _listeners;
|
|
18
|
+
constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectId, debug, deployedBuild, isGithubLinked, initialProjectNodes, env, }: LocalDevStateConstructorOptions);
|
|
19
|
+
private runListeners;
|
|
20
|
+
get targetProjectAccountId(): number;
|
|
21
|
+
get targetTestingAccountId(): number;
|
|
22
|
+
get projectConfig(): ProjectConfig;
|
|
23
|
+
get projectDir(): string;
|
|
24
|
+
get projectId(): number;
|
|
25
|
+
get debug(): boolean;
|
|
26
|
+
get deployedBuild(): Build | undefined;
|
|
27
|
+
get isGithubLinked(): boolean;
|
|
28
|
+
get projectNodes(): {
|
|
29
|
+
[key: string]: IntermediateRepresentationNodeLocalDev;
|
|
30
|
+
};
|
|
31
|
+
set projectNodes(nodes: {
|
|
32
|
+
[key: string]: IntermediateRepresentationNodeLocalDev;
|
|
33
|
+
});
|
|
34
|
+
get env(): Environment;
|
|
35
|
+
addListener<K extends keyof LocalDevState>(key: K, listener: LocalDevStateListener<K>): void;
|
|
36
|
+
}
|
|
37
|
+
export default LocalDevState;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class LocalDevState {
|
|
4
|
+
_targetProjectAccountId;
|
|
5
|
+
_targetTestingAccountId;
|
|
6
|
+
_projectConfig;
|
|
7
|
+
_projectDir;
|
|
8
|
+
_projectId;
|
|
9
|
+
_debug;
|
|
10
|
+
_deployedBuild;
|
|
11
|
+
_isGithubLinked;
|
|
12
|
+
_projectNodes;
|
|
13
|
+
_env;
|
|
14
|
+
_listeners;
|
|
15
|
+
constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectId, debug, deployedBuild, isGithubLinked, initialProjectNodes, env, }) {
|
|
16
|
+
this._targetProjectAccountId = targetProjectAccountId;
|
|
17
|
+
this._targetTestingAccountId = targetTestingAccountId;
|
|
18
|
+
this._projectConfig = projectConfig;
|
|
19
|
+
this._projectDir = projectDir;
|
|
20
|
+
this._projectId = projectId;
|
|
21
|
+
this._debug = debug || false;
|
|
22
|
+
this._deployedBuild = deployedBuild;
|
|
23
|
+
this._isGithubLinked = isGithubLinked;
|
|
24
|
+
this._projectNodes = initialProjectNodes;
|
|
25
|
+
this._env = env;
|
|
26
|
+
this._listeners = {};
|
|
27
|
+
}
|
|
28
|
+
runListeners(key) {
|
|
29
|
+
if (this._listeners[key] && this._listeners[key].length) {
|
|
30
|
+
this._listeners[key].forEach(listener => listener(this[key]));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
get targetProjectAccountId() {
|
|
34
|
+
return this._targetProjectAccountId;
|
|
35
|
+
}
|
|
36
|
+
get targetTestingAccountId() {
|
|
37
|
+
return this._targetTestingAccountId;
|
|
38
|
+
}
|
|
39
|
+
get projectConfig() {
|
|
40
|
+
return {
|
|
41
|
+
...this._projectConfig,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
get projectDir() {
|
|
45
|
+
return this._projectDir;
|
|
46
|
+
}
|
|
47
|
+
get projectId() {
|
|
48
|
+
return this._projectId;
|
|
49
|
+
}
|
|
50
|
+
get debug() {
|
|
51
|
+
return this._debug;
|
|
52
|
+
}
|
|
53
|
+
get deployedBuild() {
|
|
54
|
+
return (this._deployedBuild && {
|
|
55
|
+
...this._deployedBuild,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
get isGithubLinked() {
|
|
59
|
+
return this._isGithubLinked;
|
|
60
|
+
}
|
|
61
|
+
get projectNodes() {
|
|
62
|
+
return { ...this._projectNodes };
|
|
63
|
+
}
|
|
64
|
+
set projectNodes(nodes) {
|
|
65
|
+
this._projectNodes = nodes;
|
|
66
|
+
this.runListeners('projectNodes');
|
|
67
|
+
}
|
|
68
|
+
get env() {
|
|
69
|
+
return this._env;
|
|
70
|
+
}
|
|
71
|
+
addListener(key, listener) {
|
|
72
|
+
if (!this._listeners[key]) {
|
|
73
|
+
this._listeners[key] = [];
|
|
74
|
+
}
|
|
75
|
+
this._listeners[key].push(listener);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.default = LocalDevState;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import LocalDevProcess from './LocalDevProcess';
|
|
2
|
+
declare class LocalDevWatcher {
|
|
3
|
+
private localDevProcess;
|
|
4
|
+
private watcher;
|
|
5
|
+
constructor(localDevProcess: LocalDevProcess);
|
|
6
|
+
private handleWatchEvent;
|
|
7
|
+
start(): void;
|
|
8
|
+
stop(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export default LocalDevWatcher;
|