@forestadmin/forest-cloud 1.1.6 → 1.3.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/dist/build-commands.js +3 -10
- package/dist/commands/bootstrap.js +4 -9
- package/dist/commands/logs.d.ts +5 -0
- package/dist/commands/logs.js +135 -0
- package/dist/commands/version.js +1 -1
- package/dist/errors.d.ts +2 -0
- package/dist/errors.js +5 -2
- package/dist/logger.d.ts +10 -0
- package/dist/logger.js +42 -0
- package/dist/login.js +8 -6
- package/dist/make-commands.js +16 -2
- package/dist/services/environment-variables.d.ts +1 -0
- package/dist/services/environment-variables.js +10 -2
- package/dist/services/http-server.d.ts +7 -0
- package/dist/services/http-server.js +18 -5
- package/dist/shared.js +3 -2
- package/dist/types.d.ts +11 -2
- package/package.json +3 -3
package/dist/build-commands.js
CHANGED
|
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const fs_1 = __importDefault(require("fs"));
|
|
7
|
-
const ora_1 = __importDefault(require("ora"));
|
|
8
7
|
const os_1 = __importDefault(require("os"));
|
|
9
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const logger_1 = __importDefault(require("./logger"));
|
|
10
10
|
const login_1 = __importDefault(require("./login"));
|
|
11
11
|
const make_commands_1 = __importDefault(require("./make-commands"));
|
|
12
12
|
const bootstrap_path_manager_1 = __importDefault(require("./services/bootstrap-path-manager"));
|
|
@@ -20,13 +20,6 @@ const buildHttpServer = (envs) => {
|
|
|
20
20
|
const buildEventSubscriber = (envs) => {
|
|
21
21
|
return new event_subscriber_1.default(envs.FOREST_SUBSCRIPTION_URL, envs.FOREST_AUTH_TOKEN);
|
|
22
22
|
};
|
|
23
|
-
const logger = {
|
|
24
|
-
spinner: (0, ora_1.default)(),
|
|
25
|
-
// eslint-disable-next-line no-console
|
|
26
|
-
log: (text) => console.log(text),
|
|
27
|
-
// eslint-disable-next-line no-console
|
|
28
|
-
error: (text) => console.error(text),
|
|
29
|
-
};
|
|
30
23
|
function getCurrentVersion() {
|
|
31
24
|
const { version } = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
32
25
|
return version;
|
|
@@ -37,11 +30,11 @@ function buildCommands() {
|
|
|
37
30
|
buildHttpServer,
|
|
38
31
|
buildEventSubscriber,
|
|
39
32
|
login: login_1.default,
|
|
40
|
-
logger,
|
|
33
|
+
logger: (0, logger_1.default)(),
|
|
41
34
|
getCurrentVersion,
|
|
42
35
|
bootstrapPathManager: new bootstrap_path_manager_1.default(os_1.default.tmpdir(), os_1.default.homedir()),
|
|
43
36
|
distPathManager: new dist_path_manager_1.default(),
|
|
44
37
|
});
|
|
45
38
|
}
|
|
46
39
|
exports.default = buildCommands;
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBd0I7QUFDeEIsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUV4QixzREFBb0M7QUFDcEMsb0RBQTRCO0FBQzVCLG9FQUEyQztBQUMzQywrRkFBcUU7QUFDckUscUZBQTJEO0FBQzNELDRFQUEyRTtBQUMzRSxtRkFBMEQ7QUFDMUQseUVBQWdEO0FBR2hELE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBMEIsRUFBYyxFQUFFO0lBQ2pFLE9BQU8sSUFBSSxxQkFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDaEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQTBCLEVBQW1CLEVBQUU7SUFDM0UsT0FBTyxJQUFJLDBCQUFlLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25GLENBQUMsQ0FBQztBQUVGLFNBQVMsaUJBQWlCO0lBQ3hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUM1QixZQUFNLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FDekUsQ0FBQztJQUVGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUF3QixhQUFhO0lBQ25DLE9BQU8sSUFBQSx1QkFBWSxFQUFDO1FBQ2xCLHVCQUF1QixFQUF2QiwrQ0FBdUI7UUFDdkIsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixLQUFLLEVBQUwsZUFBSztRQUNMLE1BQU0sRUFBRSxJQUFBLGdCQUFZLEdBQUU7UUFDdEIsaUJBQWlCO1FBQ2pCLG9CQUFvQixFQUFFLElBQUksZ0NBQW9CLENBQUMsWUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6RSxlQUFlLEVBQUUsSUFBSSwyQkFBZSxFQUFFO0tBQ3ZDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFYRCxnQ0FXQyJ9
|
|
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const action_runner_1 = __importDefault(require("../dialogs/action-runner"));
|
|
7
|
-
const errors_1 = require("../errors");
|
|
8
7
|
const bootstrap_1 = __importDefault(require("../services/bootstrap"));
|
|
9
8
|
const environment_variables_1 = require("../services/environment-variables");
|
|
10
9
|
const shared_1 = require("../shared");
|
|
@@ -14,20 +13,16 @@ exports.default = (program, context) => {
|
|
|
14
13
|
.command('bootstrap')
|
|
15
14
|
.description('Bootstrap your project')
|
|
16
15
|
.argument('<name>', 'The name of your project folder')
|
|
17
|
-
.option('-e, --env-secret <string>', 'Environment secret, you can find it in your environment settings'
|
|
16
|
+
.option('-e, --env-secret <string>', 'Environment secret, you can find it in your environment settings.' +
|
|
17
|
+
' (you can also pass it with environment variable FOREST_ENV_SECRET)')
|
|
18
18
|
.action((0, action_runner_1.default)(logger.spinner, async (folderName, options) => {
|
|
19
19
|
logger.spinner.start('Bootstrapping project');
|
|
20
20
|
bootstrapPathManager.folderName = folderName;
|
|
21
21
|
const vars = await (0, shared_1.loginIfMissingAuthAndReturnEnvironmentVariables)(login, logger, getEnvironmentVariables);
|
|
22
22
|
vars.FOREST_ENV_SECRET = options.envSecret || vars.FOREST_ENV_SECRET;
|
|
23
|
-
|
|
24
|
-
throw new errors_1.BusinessError('Your forest env secret is missing.' +
|
|
25
|
-
' Please provide it with the `bootstrap --env-secret <your-secret-key>` command or' +
|
|
26
|
-
' add it to your .env file or in environment variables.');
|
|
27
|
-
}
|
|
23
|
+
(0, environment_variables_1.validateMissingForestEnvSecret)(vars.FOREST_ENV_SECRET, 'bootstrap');
|
|
28
24
|
(0, environment_variables_1.validateEnvironmentVariables)(vars);
|
|
29
25
|
logger.spinner.succeed('Environment found');
|
|
30
|
-
logger.spinner.stop();
|
|
31
26
|
const httpServer = buildHttpServer(vars);
|
|
32
27
|
await (0, shared_1.askToOverwriteCustomizationsOrAbortCommand)(logger, httpServer);
|
|
33
28
|
logger.spinner.start();
|
|
@@ -35,4 +30,4 @@ exports.default = (program, context) => {
|
|
|
35
30
|
logger.spinner.succeed('Project successfully bootstrapped. You can start creating your customizations!');
|
|
36
31
|
}));
|
|
37
32
|
};
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLDZFQUFvRDtBQUNwRCxzRUFBOEM7QUFDOUMsNkVBRzJDO0FBQzNDLHNDQUdtQjtBQUduQixrQkFBZSxDQUFDLE9BQWdCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQ3pELE1BQU0sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUVsRyxPQUFPO1NBQ0osT0FBTyxDQUFDLFdBQVcsQ0FBQztTQUNwQixXQUFXLENBQUMsd0JBQXdCLENBQUM7U0FDckMsUUFBUSxDQUFDLFFBQVEsRUFBRSxpQ0FBaUMsQ0FBQztTQUNyRCxNQUFNLENBQ0wsMkJBQTJCLEVBQzNCLG1FQUFtRTtRQUNqRSxxRUFBcUUsQ0FDeEU7U0FDQSxNQUFNLENBQ0wsSUFBQSx1QkFBWSxFQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQWtCLEVBQUUsT0FBOEIsRUFBRSxFQUFFO1FBQ3hGLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDOUMsb0JBQW9CLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUU3QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsd0RBQStDLEVBQ2hFLEtBQUssRUFDTCxNQUFNLEVBQ04sdUJBQXVCLENBQ3hCLENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDckUsSUFBQSxzREFBOEIsRUFBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFcEUsSUFBQSxvREFBNEIsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLElBQUEsbURBQTBDLEVBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFBLG1CQUFTLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUNwQixnRkFBZ0YsQ0FDakYsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDTixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,135 @@
|
|
|
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 joi_1 = __importDefault(require("joi"));
|
|
7
|
+
const action_runner_1 = __importDefault(require("../dialogs/action-runner"));
|
|
8
|
+
const check_latest_version_1 = __importDefault(require("../dialogs/check-latest-version"));
|
|
9
|
+
const errors_1 = require("../errors");
|
|
10
|
+
const environment_variables_1 = require("../services/environment-variables");
|
|
11
|
+
const http_server_1 = __importDefault(require("../services/http-server"));
|
|
12
|
+
const shared_1 = require("../shared");
|
|
13
|
+
const levelToLog = {
|
|
14
|
+
Info: 'info',
|
|
15
|
+
Warn: 'warn',
|
|
16
|
+
Error: 'error',
|
|
17
|
+
};
|
|
18
|
+
const displayLog = (logger, log) => {
|
|
19
|
+
try {
|
|
20
|
+
logger[levelToLog[log.level]](log.message, log.timestamp);
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
logger.log(log.message, log.timestamp);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
function validateTailOption(tail) {
|
|
27
|
+
if (tail === undefined)
|
|
28
|
+
return;
|
|
29
|
+
if (joi_1.default.number().integer().validate(tail).error) {
|
|
30
|
+
throw new errors_1.BusinessError('The --tail (-n) option must be an integer');
|
|
31
|
+
}
|
|
32
|
+
else if (joi_1.default.number().positive().validate(tail).error) {
|
|
33
|
+
throw new errors_1.BusinessError('The --tail (-n) option must be a positive integer');
|
|
34
|
+
}
|
|
35
|
+
else if (joi_1.default.number().max(1000).validate(tail).error) {
|
|
36
|
+
throw new errors_1.BusinessError('The --tail (-n) option must be equal or less than 1000');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function fromAndToValidator() {
|
|
40
|
+
const dateMatchValidator = joi_1.default.string().regex(/^now(-)\d+(s|m|H|h|d|w|M|y)(\/d)?$/);
|
|
41
|
+
return joi_1.default.alternatives([joi_1.default.date(), dateMatchValidator]).optional();
|
|
42
|
+
}
|
|
43
|
+
function validateFromOption(from) {
|
|
44
|
+
if (!from)
|
|
45
|
+
return;
|
|
46
|
+
if (fromAndToValidator().validate(from).error) {
|
|
47
|
+
throw new errors_1.BusinessError('The --from (-f) option must be a valid timestamp.' +
|
|
48
|
+
' You must enter a date (e.g: 2021-01-01T00:00:00.000Z) or' +
|
|
49
|
+
' match a relative date (e.g. now-1d)');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function validateToOption(to) {
|
|
53
|
+
if (joi_1.default.alternatives(fromAndToValidator(), joi_1.default.string().valid('now')).validate(to).error) {
|
|
54
|
+
throw new errors_1.BusinessError('The --to (-t) option must be a valid timestamp.' +
|
|
55
|
+
' You must enter a date (e.g: 2021-01-01T00:00:00.000Z) or' +
|
|
56
|
+
'match a relative date (e.g. now-1d)');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.default = (program, context) => {
|
|
60
|
+
const { logger, getCurrentVersion, login, getEnvironmentVariables, buildHttpServer } = context;
|
|
61
|
+
program
|
|
62
|
+
.command('logs')
|
|
63
|
+
.option('-e, --env-secret <string>', 'Environment secret, you can find it in your environment settings.' +
|
|
64
|
+
' (you can also pass it with environment variable FOREST_ENV_SECRET)')
|
|
65
|
+
.option('-n, --tail <integer>', 'Number of lines to show from the end of the logs in the last hour.' +
|
|
66
|
+
' Default is 30, Max is 1000. Use from option to get older logs.')
|
|
67
|
+
.option('-f, --from <timestamp>', 'Minimum timestamp for requested logs. Default is the last hour (now-1h)')
|
|
68
|
+
.option('-t, --to <timestamp>', 'Maximum timestamp for requested logs. Default is now')
|
|
69
|
+
.description('Display logs of the customizations published on your agent')
|
|
70
|
+
.action((0, action_runner_1.default)(logger.spinner, async (options) => {
|
|
71
|
+
validateTailOption(options.tail);
|
|
72
|
+
validateFromOption(options.from);
|
|
73
|
+
validateToOption(options.to);
|
|
74
|
+
const { spinner } = logger;
|
|
75
|
+
const tail = Number(options.tail ?? 30);
|
|
76
|
+
const from = options.from ?? 'now-1h';
|
|
77
|
+
const to = options.to ?? 'now';
|
|
78
|
+
await (0, check_latest_version_1.default)(spinner, getCurrentVersion(), http_server_1.default.getLatestVersion);
|
|
79
|
+
const vars = await (0, shared_1.loginIfMissingAuthAndReturnEnvironmentVariables)(login, logger, getEnvironmentVariables);
|
|
80
|
+
vars.FOREST_ENV_SECRET = options.envSecret || vars.FOREST_ENV_SECRET;
|
|
81
|
+
(0, environment_variables_1.validateMissingForestEnvSecret)(vars.FOREST_ENV_SECRET, 'logs');
|
|
82
|
+
(0, environment_variables_1.validateEnvironmentVariables)(vars);
|
|
83
|
+
let logs;
|
|
84
|
+
try {
|
|
85
|
+
logs = await buildHttpServer(vars).getLogs({
|
|
86
|
+
from,
|
|
87
|
+
to,
|
|
88
|
+
limit: tail,
|
|
89
|
+
// we want to get the logs from the oldest to the newest when we have a from option
|
|
90
|
+
orderByRecentFirst: !options.from,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
if (e instanceof errors_1.ValidationError) {
|
|
95
|
+
logger.spinner.warn(`Given Options: from=${from}, to=${to}, tail=${tail}`);
|
|
96
|
+
}
|
|
97
|
+
throw e;
|
|
98
|
+
}
|
|
99
|
+
let message;
|
|
100
|
+
let orderDetails;
|
|
101
|
+
if (options.from && options.to) {
|
|
102
|
+
orderDetails = '- Logs are returned from the oldest to the newest';
|
|
103
|
+
message = `between "${from}" and "${to}"`;
|
|
104
|
+
}
|
|
105
|
+
else if (options.from) {
|
|
106
|
+
orderDetails = '- Logs are returned from the oldest to the newest';
|
|
107
|
+
message = `since "${from}"`;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
orderDetails = '- Logs are returned from the newest to the oldest';
|
|
111
|
+
message = `until "${to}"`;
|
|
112
|
+
}
|
|
113
|
+
const helperMessage = `You can increase your tail option to get more logs or ` +
|
|
114
|
+
'increase/decrease your from and to options to get older or newer logs';
|
|
115
|
+
if (logs?.length > 0) {
|
|
116
|
+
logs.forEach(log => displayLog(logger, log));
|
|
117
|
+
const pluralize = tail > 1 ? 's' : '';
|
|
118
|
+
const baseMessage = `Requested ${tail} log${pluralize} ${message} ${orderDetails}`;
|
|
119
|
+
const fromToMessage = `You have received logs from ${logs[0].timestamp} to ${logs[logs.length - 1].timestamp}`;
|
|
120
|
+
if (logs.length === tail) {
|
|
121
|
+
logger.log('...you have probably more logs...');
|
|
122
|
+
logger.log(`${helperMessage}\n`);
|
|
123
|
+
spinner.succeed(`${baseMessage}\n${fromToMessage}`);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
spinner.succeed(`${baseMessage}, but only ${logs.length} were found\n${fromToMessage}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
spinner.warn(`No logs found ${message}`);
|
|
131
|
+
logger.log(helperMessage);
|
|
132
|
+
}
|
|
133
|
+
}));
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9sb2dzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsOENBQXNCO0FBRXRCLDZFQUFvRDtBQUNwRCwyRkFBaUU7QUFDakUsc0NBQTJEO0FBQzNELDZFQUcyQztBQUMzQywwRUFBaUQ7QUFDakQsc0NBQTRFO0FBRzVFLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsT0FBTztDQUNmLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQWMsRUFBRSxHQUFRLEVBQUUsRUFBRTtJQUM5QyxJQUFJO1FBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUMzRDtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN4QztBQUNILENBQUMsQ0FBQztBQUVGLFNBQVMsa0JBQWtCLENBQUMsSUFBYztJQUN4QyxJQUFJLElBQUksS0FBSyxTQUFTO1FBQUUsT0FBTztJQUUvQixJQUFJLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO1FBQy9DLE1BQU0sSUFBSSxzQkFBYSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7S0FDdEU7U0FBTSxJQUFJLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO1FBQ3ZELE1BQU0sSUFBSSxzQkFBYSxDQUFDLG1EQUFtRCxDQUFDLENB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
|
package/dist/commands/version.js
CHANGED
|
@@ -8,7 +8,7 @@ const check_latest_version_1 = __importDefault(require("../dialogs/check-latest-
|
|
|
8
8
|
const http_server_1 = __importDefault(require("../services/http-server"));
|
|
9
9
|
exports.default = (program, context) => {
|
|
10
10
|
const { logger, getCurrentVersion } = context;
|
|
11
|
-
program.option('-v, --version', '
|
|
11
|
+
program.option('-v, --version', 'Output the version number').action((0, action_runner_1.default)(logger.spinner, async () => {
|
|
12
12
|
// we want to display before to display the warning
|
|
13
13
|
const version = getCurrentVersion();
|
|
14
14
|
logger.log(version);
|
package/dist/errors.d.ts
CHANGED
package/dist/errors.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CloudToolkitVersionError = exports.CustomizationError = exports.BusinessError = void 0;
|
|
3
|
+
exports.CloudToolkitVersionError = exports.CustomizationError = exports.ValidationError = exports.BusinessError = void 0;
|
|
4
4
|
/* eslint-disable max-classes-per-file */
|
|
5
5
|
class BusinessError extends Error {
|
|
6
6
|
}
|
|
7
7
|
exports.BusinessError = BusinessError;
|
|
8
|
+
class ValidationError extends BusinessError {
|
|
9
|
+
}
|
|
10
|
+
exports.ValidationError = ValidationError;
|
|
8
11
|
class CustomizationError extends BusinessError {
|
|
9
12
|
constructor(message, stack) {
|
|
10
13
|
super(message);
|
|
@@ -15,4 +18,4 @@ exports.CustomizationError = CustomizationError;
|
|
|
15
18
|
class CloudToolkitVersionError extends BusinessError {
|
|
16
19
|
}
|
|
17
20
|
exports.CloudToolkitVersionError = CloudToolkitVersionError;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBeUM7QUFDekMsTUFBYSxhQUFjLFNBQVEsS0FBSztDQUFHO0FBQTNDLHNDQUEyQztBQUMzQyxNQUFhLGVBQWdCLFNBQVEsYUFBYTtDQUFHO0FBQXJELDBDQUFxRDtBQUNyRCxNQUFhLGtCQUFtQixTQUFRLGFBQWE7SUFDbkQsWUFBWSxPQUFlLEVBQUUsS0FBYztRQUN6QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFMRCxnREFLQztBQUNELE1BQWEsd0JBQXlCLFNBQVEsYUFBYTtDQUFHO0FBQTlELDREQUE4RCJ9
|
package/dist/logger.d.ts
ADDED
package/dist/logger.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
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.loggerPrefix = void 0;
|
|
7
|
+
const ora_1 = __importDefault(require("ora"));
|
|
8
|
+
exports.loggerPrefix = {
|
|
9
|
+
Debug: '\x1b[34mdebug:\x1b[0m',
|
|
10
|
+
Info: '\x1b[32minfo:\x1b[0m',
|
|
11
|
+
Warn: '\x1b[33mwarning:\x1b[0m',
|
|
12
|
+
Error: '\x1b[31merror:\x1b[0m',
|
|
13
|
+
};
|
|
14
|
+
exports.default = () => {
|
|
15
|
+
const addPrefix = (text, prefix) => {
|
|
16
|
+
if (!prefix)
|
|
17
|
+
return text;
|
|
18
|
+
return `${prefix} | ${text}`;
|
|
19
|
+
};
|
|
20
|
+
const write = (text, outputType) => {
|
|
21
|
+
if (outputType === 'stderr')
|
|
22
|
+
process.stderr.write(text);
|
|
23
|
+
else
|
|
24
|
+
process.stdout.write(text);
|
|
25
|
+
};
|
|
26
|
+
const log = (text, prefix) => {
|
|
27
|
+
write(`${addPrefix(text, prefix)}\n`);
|
|
28
|
+
};
|
|
29
|
+
const logLevel = (level, text, prefix) => {
|
|
30
|
+
log(`${exports.loggerPrefix[level]} ${text}`, prefix);
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
spinner: (0, ora_1.default)(),
|
|
34
|
+
write: (text, outputType) => write(text, outputType),
|
|
35
|
+
log: (text, prefix) => log(text, prefix),
|
|
36
|
+
info: (text, prefix) => logLevel('Info', text, prefix),
|
|
37
|
+
error: (text, prefix) => logLevel('Error', text, prefix),
|
|
38
|
+
warn: (text, prefix) => logLevel('Warn', text, prefix),
|
|
39
|
+
debug: (text, prefix) => logLevel('Debug', text, prefix),
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FBc0I7QUFJVCxRQUFBLFlBQVksR0FBRztJQUMxQixLQUFLLEVBQUUsdUJBQXVCO0lBQzlCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsSUFBSSxFQUFFLHlCQUF5QjtJQUMvQixLQUFLLEVBQUUsdUJBQXVCO0NBQy9CLENBQUM7QUFFRixrQkFBZSxHQUFXLEVBQUU7SUFDMUIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsTUFBYyxFQUFFLEVBQUU7UUFDakQsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUV6QixPQUFPLEdBQUcsTUFBTSxNQUFNLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUMsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBWSxFQUFFLFVBQWdDLEVBQUUsRUFBRTtRQUMvRCxJQUFJLFVBQVUsS0FBSyxRQUFRO1lBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7O1lBQ25ELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQztJQUVGLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBYSxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzdDLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYSxFQUFFLElBQWEsRUFBRSxNQUFlLEVBQUUsRUFBRTtRQUNqRSxHQUFHLENBQUMsR0FBRyxvQkFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQztJQUVGLE9BQU87UUFDTCxPQUFPLEVBQUUsSUFBQSxhQUFHLEdBQUU7UUFDZCxLQUFLLEVBQUUsQ0FBQyxJQUFZLEVBQUUsVUFBZ0MsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7UUFDbEYsR0FBRyxFQUFFLENBQUMsSUFBYSxFQUFFLE1BQWUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7UUFDMUQsSUFBSSxFQUFFLENBQUMsSUFBYSxFQUFFLE1BQWUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ3hFLEtBQUssRUFBRSxDQUFDLElBQWEsRUFBRSxNQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUMxRSxJQUFJLEVBQUUsQ0FBQyxJQUFhLEVBQUUsTUFBZSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUM7UUFDeEUsS0FBSyxFQUFFLENBQUMsSUFBYSxFQUFFLE1BQWUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO0tBQzNFLENBQUM7QUFDSixDQUFDLENBQUMifQ==
|
package/dist/login.js
CHANGED
|
@@ -5,14 +5,16 @@ async function login(logger) {
|
|
|
5
5
|
return new Promise((resolve, reject) => {
|
|
6
6
|
let hasLoginSuccess = false;
|
|
7
7
|
const pathForest = require.resolve('forest-cli/bin/run');
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const subProcess = (0, child_process_1.exec)(`node ${pathForest} login`);
|
|
9
|
+
subProcess.stderr.on('data', data => {
|
|
10
|
+
logger.write(data, 'stderr');
|
|
11
|
+
});
|
|
12
|
+
subProcess.stdout.on('data', data => {
|
|
11
13
|
if (data.includes('Login successful'))
|
|
12
14
|
hasLoginSuccess = true;
|
|
13
|
-
logger.
|
|
15
|
+
logger.write(data, 'stdout');
|
|
14
16
|
});
|
|
15
|
-
|
|
17
|
+
subProcess.on('close', () => {
|
|
16
18
|
if (!hasLoginSuccess)
|
|
17
19
|
return reject(new Error('Login failed'));
|
|
18
20
|
resolve();
|
|
@@ -20,4 +22,4 @@ async function login(logger) {
|
|
|
20
22
|
});
|
|
21
23
|
}
|
|
22
24
|
exports.default = login;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpREFBcUM7QUFJdEIsS0FBSyxVQUFVLEtBQUssQ0FBQyxNQUFjO0lBQ2hELE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDM0MsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzVCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6RCxNQUFNLFVBQVUsR0FBRyxJQUFBLG9CQUFJLEVBQUMsUUFBUSxVQUFVLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNsQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQUUsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM5RCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsZUFBZTtnQkFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFuQkQsd0JBbUJDIn0=
|
package/dist/make-commands.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const commander_1 = require("commander");
|
|
7
7
|
const bootstrap_1 = __importDefault(require("./commands/bootstrap"));
|
|
8
8
|
const login_1 = __importDefault(require("./commands/login"));
|
|
9
|
+
const logs_1 = __importDefault(require("./commands/logs"));
|
|
9
10
|
const package_1 = __importDefault(require("./commands/package"));
|
|
10
11
|
const publish_1 = __importDefault(require("./commands/publish"));
|
|
11
12
|
const update_typings_1 = __importDefault(require("./commands/update-typings"));
|
|
@@ -13,13 +14,26 @@ const version_1 = __importDefault(require("./commands/version"));
|
|
|
13
14
|
function makeCommands(context) {
|
|
14
15
|
// it's very important to use a new instance of Command each time for testing purposes
|
|
15
16
|
const program = new commander_1.Command();
|
|
17
|
+
program.configureOutput({
|
|
18
|
+
writeOut: context.logger.log,
|
|
19
|
+
writeErr: message => {
|
|
20
|
+
if (message.startsWith('error:')) {
|
|
21
|
+
const messageWithoutError = message.slice(6);
|
|
22
|
+
context.logger.error(messageWithoutError);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
context.logger.error(message);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
});
|
|
16
29
|
(0, bootstrap_1.default)(program, context);
|
|
30
|
+
(0, login_1.default)(program, context);
|
|
31
|
+
(0, logs_1.default)(program, context);
|
|
17
32
|
(0, package_1.default)(program, context);
|
|
18
33
|
(0, publish_1.default)(program, context);
|
|
19
34
|
(0, update_typings_1.default)(program, context);
|
|
20
|
-
(0, login_1.default)(program, context);
|
|
21
35
|
(0, version_1.default)(program, context);
|
|
22
36
|
return program;
|
|
23
37
|
}
|
|
24
38
|
exports.default = makeCommands;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1jb21tYW5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlLWNvbW1hbmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUNBQW9DO0FBRXBDLHFFQUF3RDtBQUN4RCw2REFBZ0Q7QUFDaEQsMkRBQThDO0FBQzlDLGlFQUFvRDtBQUNwRCxpRUFBb0Q7QUFDcEQsK0VBQWlFO0FBQ2pFLGlFQUFvRDtBQUdwRCxTQUF3QixZQUFZLENBQUMsT0FBcUI7SUFDeEQsc0ZBQXNGO0lBQ3RGLE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQU8sRUFBRSxDQUFDO0lBRTlCLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDdEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRztRQUM1QixRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDM0M7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDL0I7UUFDSCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsSUFBQSxtQkFBb0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsSUFBQSxlQUFnQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxJQUFBLGNBQWUsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEMsSUFBQSxpQkFBa0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsSUFBQSxpQkFBa0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsSUFBQSx3QkFBd0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsSUFBQSxpQkFBa0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFckMsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQXpCRCwrQkF5QkMifQ==
|
|
@@ -8,5 +8,6 @@ export declare const defaultEnvs: Readonly<{
|
|
|
8
8
|
export declare function getEnvironmentVariables(): Promise<EnvironmentVariables>;
|
|
9
9
|
export declare function validateServerUrl(serverUrl: string): void;
|
|
10
10
|
export declare function validateSubscriptionUrl(subscriptionUrl: string): void;
|
|
11
|
+
export declare function validateMissingForestEnvSecret(forestEnvSecret: string, fromCommand: 'logs' | 'bootstrap'): void;
|
|
11
12
|
export declare function validateEnvironmentVariables(env: EnvironmentVariables): void;
|
|
12
13
|
//# sourceMappingURL=environment-variables.d.ts.map
|
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.validateEnvironmentVariables = exports.validateSubscriptionUrl = exports.validateServerUrl = exports.getEnvironmentVariables = exports.defaultEnvs = void 0;
|
|
29
|
+
exports.validateEnvironmentVariables = exports.validateMissingForestEnvSecret = exports.validateSubscriptionUrl = exports.validateServerUrl = exports.getEnvironmentVariables = exports.defaultEnvs = void 0;
|
|
30
30
|
const fs = __importStar(require("fs"));
|
|
31
31
|
const promises_1 = require("node:fs/promises");
|
|
32
32
|
const node_os_1 = require("node:os");
|
|
@@ -81,6 +81,14 @@ function validateSubscriptionUrl(subscriptionUrl) {
|
|
|
81
81
|
validateUrl(subscriptionUrl, 'FOREST_SUBSCRIPTION_URL', ['wss:']);
|
|
82
82
|
}
|
|
83
83
|
exports.validateSubscriptionUrl = validateSubscriptionUrl;
|
|
84
|
+
function validateMissingForestEnvSecret(forestEnvSecret, fromCommand) {
|
|
85
|
+
if (!forestEnvSecret) {
|
|
86
|
+
throw new errors_1.BusinessError('Your forest env secret is missing.' +
|
|
87
|
+
` Please provide it with the \`${fromCommand} --env-secret <your-secret-key>\` command or` +
|
|
88
|
+
' add it to your .env file or in environment variables.');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.validateMissingForestEnvSecret = validateMissingForestEnvSecret;
|
|
84
92
|
function validateEnvironmentVariables(env) {
|
|
85
93
|
if (!env.FOREST_ENV_SECRET) {
|
|
86
94
|
throw new errors_1.BusinessError('Missing FOREST_ENV_SECRET. Please check your .env file.');
|
|
@@ -97,4 +105,4 @@ function validateEnvironmentVariables(env) {
|
|
|
97
105
|
validateSubscriptionUrl(env.FOREST_SUBSCRIPTION_URL);
|
|
98
106
|
}
|
|
99
107
|
exports.validateEnvironmentVariables = validateEnvironmentVariables;
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtdmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2Vudmlyb25tZW50LXZhcmlhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwrQ0FBNEM7QUFDNUMscUNBQWtDO0FBQ2xDLGdEQUF3QjtBQUV4QixzQ0FBMEM7QUFHMUMsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQUUsYUFBcUIsRUFBMEIsRUFBRTtJQUNuRixNQUFNLFNBQVMsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFckUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUFFLE9BQU8sSUFBQSxtQkFBUSxFQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVqRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVXLFFBQUEsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkMsaUJBQWlCLEVBQUUsNkJBQTZCO0lBQ2hELHVCQUF1QixFQUFFLHlDQUF5QztJQUNsRSw0QkFBNEIsRUFBRSxHQUFHO0lBQ2pDLFVBQVUsRUFBRSxJQUFBLGlCQUFPLEdBQUU7Q0FDdEIsQ0FBQyxDQUFDO0FBRUksS0FBSyxVQUFVLHVCQUF1QjtJQUMzQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxtQkFBVyxDQUFDLFVBQVUsQ0FBQztJQUVuRSxPQUFPO1FBQ0wsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUI7UUFDaEQsVUFBVSxFQUFFLFNBQVM7UUFDckIsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxtQkFBVyxDQUFDLGlCQUFpQjtRQUNqRix1QkFB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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Table } from '@forestadmin/datasource-sql';
|
|
2
|
+
import { Log } from '../types';
|
|
2
3
|
export default class HttpServer {
|
|
3
4
|
private readonly serverUrl;
|
|
4
5
|
private readonly headers;
|
|
@@ -20,6 +21,12 @@ export default class HttpServer {
|
|
|
20
21
|
email: string;
|
|
21
22
|
};
|
|
22
23
|
}>;
|
|
24
|
+
getLogs({ limit, from, to, orderByRecentFirst, }: {
|
|
25
|
+
limit: number;
|
|
26
|
+
from: string;
|
|
27
|
+
to: string;
|
|
28
|
+
orderByRecentFirst: boolean;
|
|
29
|
+
}): Promise<Log[]>;
|
|
23
30
|
static getLatestVersion(packageName: string): Promise<string>;
|
|
24
31
|
}
|
|
25
32
|
//# sourceMappingURL=http-server.d.ts.map
|
|
@@ -36,13 +36,17 @@ async function handledAxios(axiosRequestConfig, { errorMessage }) {
|
|
|
36
36
|
}
|
|
37
37
|
catch (e) {
|
|
38
38
|
const error = e;
|
|
39
|
-
let details;
|
|
39
|
+
let details = '';
|
|
40
40
|
if (error instanceof axios.AxiosError) {
|
|
41
41
|
const errors = error.response?.data?.errors;
|
|
42
|
-
details = errors?.map(innerError =>
|
|
42
|
+
details = errors?.map(innerError => `🚨 ${innerError.detail}`).join(`\n`);
|
|
43
|
+
}
|
|
44
|
+
if (e.response?.status === 400) {
|
|
45
|
+
throw new errors_1.ValidationError(details);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
throw new errors_1.BusinessError(`${errorMessage}: ${error.message}\n${details}`.trim());
|
|
43
49
|
}
|
|
44
|
-
const detailsOrEmpty = details ? ` ${details}` : '';
|
|
45
|
-
throw new errors_1.BusinessError(`${errorMessage}: ${error.message}${detailsOrEmpty}`);
|
|
46
50
|
}
|
|
47
51
|
}
|
|
48
52
|
class HttpServer {
|
|
@@ -102,9 +106,18 @@ class HttpServer {
|
|
|
102
106
|
headers: this.headers,
|
|
103
107
|
}, { errorMessage: `Failed to retrieve last published code details` });
|
|
104
108
|
}
|
|
109
|
+
async getLogs({ limit, from, to, orderByRecentFirst, }) {
|
|
110
|
+
const base = `${this.serverUrl}/api/full-hosted-agent/logs`;
|
|
111
|
+
return (await handledAxios({
|
|
112
|
+
// eslint-disable-next-line max-len
|
|
113
|
+
url: `${base}?limit=${limit}&from=${from}&to=${to}&order-by-recent-first=${orderByRecentFirst}`,
|
|
114
|
+
method: 'GET',
|
|
115
|
+
headers: this.headers,
|
|
116
|
+
}, { errorMessage: `Failed to retrieve logs` })).logs;
|
|
117
|
+
}
|
|
105
118
|
static async getLatestVersion(packageName) {
|
|
106
119
|
return (0, latest_version_1.default)(packageName);
|
|
107
120
|
}
|
|
108
121
|
}
|
|
109
122
|
exports.default = HttpServer;
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaHR0cC1zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZDQUErQjtBQUMvQix1Q0FBeUI7QUFDekIsb0VBQTJDO0FBRTNDLHNDQUEyRDtBQUczRCxLQUFLLFVBQVUsWUFBWSxDQUN6QixrQkFBNEMsRUFDNUMsRUFBRSxZQUFZLEVBQTRCO0lBRTFDLElBQUk7UUFDRixPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7S0FDdkQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sS0FBSyxHQUFVLENBQUMsQ0FBQztRQUN2QixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFFakIsSUFBSSxLQUFLLFlBQVksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBeUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO1lBQ2xGLE9BQU8sR0FBRyxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0U7UUFFRCxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLEdBQUcsRUFBRTtZQUM5QixNQUFNLElBQUksd0JBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwQzthQUFNO1lBQ0wsTUFBTSxJQUFJLHNCQUFhLENBQUMsR0FBRyxZQUFZLEtBQUssS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2pGO0tBQ0Y7QUFDSCxDQUFDO0FBRUQsTUFBcUIsVUFBVTtJQUc3QixZQUFZ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
|
package/dist/shared.js
CHANGED
|
@@ -10,7 +10,8 @@ const loginIfMissingAuthAndReturnEnvironmentVariables = async (login, logger, ge
|
|
|
10
10
|
const vars = await getEnvironmentVariables();
|
|
11
11
|
if (vars.FOREST_AUTH_TOKEN)
|
|
12
12
|
return vars;
|
|
13
|
-
//
|
|
13
|
+
// must be sure to stop the spinner before calling login
|
|
14
|
+
// because the spinner will clear the process.stdout
|
|
14
15
|
logger.spinner.stop();
|
|
15
16
|
await login(logger);
|
|
16
17
|
return getEnvironmentVariables();
|
|
@@ -22,4 +23,4 @@ const askToOverwriteCustomizationsOrAbortCommand = async (logger, httpServer) =>
|
|
|
22
23
|
}
|
|
23
24
|
};
|
|
24
25
|
exports.askToOverwriteCustomizationsOrAbortCommand = askToOverwriteCustomizationsOrAbortCommand;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnSEFBcUY7QUFDckYscUNBQXlDO0FBSWxDLE1BQU0sK0NBQStDLEdBQUcsS0FBSyxFQUNsRSxLQUFZLEVBQ1osTUFBYyxFQUNkLHVCQUE0RCxFQUM3QixFQUFFO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sdUJBQXVCLEVBQUUsQ0FBQztJQUM3QyxJQUFJLElBQUksQ0FBQyxpQkFBaUI7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV4Qyx3REFBd0Q7SUFDeEQsb0RBQW9EO0lBQ3BELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEIsT0FBTyx1QkFBdUIsRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQWRXLFFBQUEsK0NBQStDLG1EQWMxRDtBQUVLLE1BQU0sMENBQTBDLEdBQUcsS0FBSyxFQUM3RCxNQUFjLEVBQ2QsVUFBc0IsRUFDUCxFQUFFO0lBQ2pCLElBQ0UsQ0FBQyxDQUFDLE1BQU0sSUFBQSx5Q0FBNEIsRUFDbEMsTUFBTSxDQUFDLE9BQU8sRUFDZCxVQUFVLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUN4RCxDQUFDLEVBQ0Y7UUFDQSxNQUFNLElBQUksc0JBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0tBQzlDO0FBQ0gsQ0FBQyxDQUFDO0FBWlcsUUFBQSwwQ0FBMEMsOENBWXJEIn0=
|
package/dist/types.d.ts
CHANGED
|
@@ -80,10 +80,19 @@ export type Spinner = {
|
|
|
80
80
|
};
|
|
81
81
|
export type Logger = {
|
|
82
82
|
spinner: Spinner;
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
write: (text: string, outputType?: 'stderr' | 'stdout') => void;
|
|
84
|
+
log: (text?: string, prefix?: string) => void;
|
|
85
|
+
info: (text?: string, prefix?: string) => void;
|
|
86
|
+
error: (text?: string, prefix?: string) => void;
|
|
87
|
+
warn: (text?: string, prefix?: string) => void;
|
|
88
|
+
debug: (text?: string, prefix?: string) => void;
|
|
85
89
|
};
|
|
86
90
|
export type Login = (logger: Logger) => Promise<void>;
|
|
87
91
|
export type BuildHttpServer = (envs: EnvironmentVariables) => HttpServer;
|
|
88
92
|
export type BuildEventSubscriber = (vars: EnvironmentVariables) => EventSubscriber;
|
|
93
|
+
export type Log = {
|
|
94
|
+
message: string;
|
|
95
|
+
timestamp: string;
|
|
96
|
+
level?: 'Info' | 'Warn' | 'Error';
|
|
97
|
+
};
|
|
89
98
|
//# sourceMappingURL=types.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/forest-cloud",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Utility to bootstrap and publish forest admin cloud projects customization",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@forestadmin/agent": "1.38.3",
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"ora": "^3.2.0",
|
|
22
22
|
"sqlite3": "^5.1.7",
|
|
23
23
|
"subscriptions-transport-ws": "^0.9.19",
|
|
24
|
-
"ws": "^8.16.0"
|
|
24
|
+
"ws": "^8.16.0",
|
|
25
|
+
"joi": "^17.12.2"
|
|
25
26
|
},
|
|
26
27
|
"publishConfig": {
|
|
27
28
|
"access": "public"
|
|
@@ -56,7 +57,6 @@
|
|
|
56
57
|
],
|
|
57
58
|
"devDependencies": {
|
|
58
59
|
"@types/adm-zip": "^0.5.5",
|
|
59
|
-
"log-symbols": "^4.1.0",
|
|
60
60
|
"nodemon": "^3.0.3"
|
|
61
61
|
}
|
|
62
62
|
}
|