@forestadmin/forest-cloud 1.1.6 → 1.2.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.
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBd0I7QUFDeEIsOENBQXNCO0FBQ3RCLDRDQUFvQjtBQUNwQixnREFBd0I7QUFFeEIsb0RBQTRCO0FBQzVCLG9FQUEyQztBQUMzQywrRkFBcUU7QUFDckUscUZBQTJEO0FBQzNELDRFQUEyRTtBQUMzRSxtRkFBMEQ7QUFDMUQseUVBQWdEO0FBR2hELE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBMEIsRUFBYyxFQUFFO0lBQ2pFLE9BQU8sSUFBSSxxQkFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDaEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQTBCLEVBQW1CLEVBQUU7SUFDM0UsT0FBTyxJQUFJLDBCQUFlLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25GLENBQUMsQ0FBQztBQUVGLE1BQU0sTUFBTSxHQUFXO0lBQ3JCLE9BQU8sRUFBRSxJQUFBLGFBQUcsR0FBRTtJQUNkLHNDQUFzQztJQUN0QyxHQUFHLEVBQUUsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3pDLHNDQUFzQztJQUN0QyxLQUFLLEVBQUUsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0NBQzlDLENBQUM7QUFFRixTQUFTLGlCQUFpQjtJQUN4QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDNUIsWUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQ3pFLENBQUM7SUFFRixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBd0IsYUFBYTtJQUNuQyxPQUFPLElBQUEsdUJBQVksRUFBQztRQUNsQix1QkFBdUIsRUFBdkIsK0NBQXVCO1FBQ3ZCLGVBQWU7UUFDZixvQkFBb0I7UUFDcEIsS0FBSyxFQUFMLGVBQUs7UUFDTCxNQUFNO1FBQ04saUJBQWlCO1FBQ2pCLG9CQUFvQixFQUFFLElBQUksZ0NBQW9CLENBQUMsWUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6RSxlQUFlLEVBQUUsSUFBSSwyQkFBZSxFQUFFO0tBQ3ZDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFYRCxnQ0FXQyJ9
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
- if (!vars.FOREST_ENV_SECRET) {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLDZFQUFvRDtBQUNwRCxzQ0FBMEM7QUFDMUMsc0VBQThDO0FBQzlDLDZFQUFpRjtBQUNqRixzQ0FHbUI7QUFHbkIsa0JBQWUsQ0FBQyxPQUFnQixFQUFFLE9BQXFCLEVBQUUsRUFBRTtJQUN6RCxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFbEcsT0FBTztTQUNKLE9BQU8sQ0FBQyxXQUFXLENBQUM7U0FDcEIsV0FBVyxDQUFDLHdCQUF3QixDQUFDO1NBQ3JDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsaUNBQWlDLENBQUM7U0FDckQsTUFBTSxDQUNMLDJCQUEyQixFQUMzQixrRUFBa0UsQ0FDbkU7U0FDQSxNQUFNLENBQ0wsSUFBQSx1QkFBWSxFQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQWtCLEVBQUUsT0FBOEIsRUFBRSxFQUFFO1FBQ3hGLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDOUMsb0JBQW9CLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUU3QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsd0RBQStDLEVBQ2hFLEtBQUssRUFDTCxNQUFNLEVBQ04sdUJBQXVCLENBQ3hCLENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFFckUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixNQUFNLElBQUksc0JBQWEsQ0FDckIsb0NBQW9DO2dCQUNsQyxtRkFBbUY7Z0JBQ25GLHdEQUF3RCxDQUMzRCxDQUFDO1NBQ0g7UUFFRCxJQUFBLG9EQUE0QixFQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV0QixNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsTUFBTSxJQUFBLG1EQUEwQyxFQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVyRSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBQSxtQkFBUyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDcEIsZ0ZBQWdGLENBQ2pGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ04sQ0FBQyxDQUFDIn0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLDZFQUFvRDtBQUNwRCxzRUFBOEM7QUFDOUMsNkVBRzJDO0FBQzNDLHNDQUdtQjtBQUduQixrQkFBZSxDQUFDLE9BQWdCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQ3pELE1BQU0sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUVsRyxPQUFPO1NBQ0osT0FBTyxDQUFDLFdBQVcsQ0FBQztTQUNwQixXQUFXLENBQUMsd0JBQXdCLENBQUM7U0FDckMsUUFBUSxDQUFDLFFBQVEsRUFBRSxpQ0FBaUMsQ0FBQztTQUNyRCxNQUFNLENBQ0wsMkJBQTJCLEVBQzNCLG1FQUFtRTtRQUNqRSxxRUFBcUUsQ0FDeEU7U0FDQSxNQUFNLENBQ0wsSUFBQSx1QkFBWSxFQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQWtCLEVBQUUsT0FBOEIsRUFBRSxFQUFFO1FBQ3hGLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDOUMsb0JBQW9CLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUU3QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsd0RBQStDLEVBQ2hFLEtBQUssRUFDTCxNQUFNLEVBQ04sdUJBQXVCLENBQ3hCLENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDckUsSUFBQSxzREFBOEIsRUFBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFcEUsSUFBQSxvREFBNEIsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLElBQUEsbURBQTBDLEVBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFBLG1CQUFTLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUNwQixnRkFBZ0YsQ0FDakYsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDTixDQUFDLENBQUMifQ==
@@ -0,0 +1,5 @@
1
+ import { Command } from 'commander';
2
+ import { MakeCommands } from '../types';
3
+ declare const _default: (program: Command, context: MakeCommands) => void;
4
+ export default _default;
5
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1,74 @@
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 action_runner_1 = __importDefault(require("../dialogs/action-runner"));
7
+ const check_latest_version_1 = __importDefault(require("../dialogs/check-latest-version"));
8
+ const errors_1 = require("../errors");
9
+ const environment_variables_1 = require("../services/environment-variables");
10
+ const http_server_1 = __importDefault(require("../services/http-server"));
11
+ const shared_1 = require("../shared");
12
+ const levelToLog = {
13
+ Info: 'info',
14
+ Warn: 'warn',
15
+ Error: 'error',
16
+ };
17
+ const displayLog = (logger, log) => {
18
+ try {
19
+ logger[levelToLog[log.level]](log.message, log.timestamp);
20
+ }
21
+ catch (e) {
22
+ logger.log(log.message, log.timestamp);
23
+ }
24
+ };
25
+ function validateTailOption(tail) {
26
+ if (tail !== undefined) {
27
+ if (!Number.isInteger(Number(tail))) {
28
+ throw new errors_1.BusinessError('The --tail (-n) option must be an integer');
29
+ }
30
+ else if (Number(tail) < 0) {
31
+ throw new errors_1.BusinessError('The --tail (-n) option must be a positive integer');
32
+ }
33
+ else if (Number(tail) === 0) {
34
+ throw new errors_1.BusinessError('The --tail (-n) option must be greater than 0');
35
+ }
36
+ else if (Number(tail) > 1000) {
37
+ throw new errors_1.BusinessError('The --tail (-n) option must be equal or less than 1000');
38
+ }
39
+ }
40
+ }
41
+ exports.default = (program, context) => {
42
+ const { logger, getCurrentVersion, login, getEnvironmentVariables, buildHttpServer } = context;
43
+ program
44
+ .command('logs')
45
+ .option('-e, --env-secret <string>', 'Environment secret, you can find it in your environment settings.' +
46
+ ' (you can also pass it with environment variable FOREST_ENV_SECRET)')
47
+ .option('-n, --tail <integer>', 'Number of lines to show from the end of the logs in the last hour.' +
48
+ ' Default is 30, Max is 1000')
49
+ .description('Display logs of the customizations published on your agent.')
50
+ .action((0, action_runner_1.default)(logger.spinner, async (options) => {
51
+ validateTailOption(options.tail);
52
+ const tail = options.tail ?? 30;
53
+ await (0, check_latest_version_1.default)(logger.spinner, getCurrentVersion(), http_server_1.default.getLatestVersion);
54
+ const vars = await (0, shared_1.loginIfMissingAuthAndReturnEnvironmentVariables)(login, logger, getEnvironmentVariables);
55
+ vars.FOREST_ENV_SECRET = options.envSecret || vars.FOREST_ENV_SECRET;
56
+ (0, environment_variables_1.validateMissingForestEnvSecret)(vars.FOREST_ENV_SECRET, 'logs');
57
+ (0, environment_variables_1.validateEnvironmentVariables)(vars);
58
+ const { logs } = await buildHttpServer(vars).getLogs(tail);
59
+ if (logs?.length > 0) {
60
+ const pluralize = logs.length > 1 ? 's' : '';
61
+ const baseMessage = `Requested ${tail} log${pluralize} in the last hour`;
62
+ if (logs.length === Number(tail)) {
63
+ logger.spinner.succeed(baseMessage);
64
+ }
65
+ else {
66
+ logger.spinner.succeed(`${baseMessage}, but only ${logs.length} were found`);
67
+ }
68
+ logs.forEach(log => displayLog(logger, log));
69
+ }
70
+ else
71
+ logger.spinner.warn('No logs found in the last hour');
72
+ }));
73
+ };
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9sb2dzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsNkVBQW9EO0FBQ3BELDJGQUFpRTtBQUNqRSxzQ0FBMEM7QUFDMUMsNkVBRzJDO0FBQzNDLDBFQUFpRDtBQUNqRCxzQ0FBNEU7QUFHNUUsTUFBTSxVQUFVLEdBQUc7SUFDakIsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0NBQ2YsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBYyxFQUFFLEdBQVEsRUFBRSxFQUFFO0lBQzlDLElBQUk7UUFDRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzNEO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ3hDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsU0FBUyxrQkFBa0IsQ0FBQyxJQUFjO0lBQ3hDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNuQyxNQUFNLElBQUksc0JBQWEsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1NBQ3RFO2FBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLE1BQU0sSUFBSSxzQkFBYSxDQUFDLG1EQUFtRCxDQUFDLENBQUM7U0FDOUU7YUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxJQUFJLHNCQUFhLENB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
@@ -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', 'output the version number').action((0, action_runner_1.default)(logger.spinner, async () => {
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);
@@ -0,0 +1,10 @@
1
+ import { Logger } from './types';
2
+ export declare const loggerPrefix: {
3
+ Debug: string;
4
+ Info: string;
5
+ Warn: string;
6
+ Error: string;
7
+ };
8
+ declare const _default: () => Logger;
9
+ export default _default;
10
+ //# sourceMappingURL=logger.d.ts.map
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 process = (0, child_process_1.exec)(`node ${pathForest} login`);
9
- process.stderr.on('data', logger.error);
10
- process.stdout.on('data', data => {
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.log(data);
15
+ logger.write(data, 'stdout');
14
16
  });
15
- process.on('close', () => {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpREFBcUM7QUFJdEIsS0FBSyxVQUFVLEtBQUssQ0FBQyxNQUFjO0lBQ2hELE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDM0MsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzVCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFBLG9CQUFJLEVBQUMsUUFBUSxVQUFVLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFBRSxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzlELE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGVBQWU7Z0JBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUMvRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBakJELHdCQWlCQyJ9
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpREFBcUM7QUFJdEIsS0FBSyxVQUFVLEtBQUssQ0FBQyxNQUFjO0lBQ2hELE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDM0MsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzVCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6RCxNQUFNLFVBQVUsR0FBRyxJQUFBLG9CQUFJLEVBQUMsUUFBUSxVQUFVLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNsQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQUUsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM5RCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsZUFBZTtnQkFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFuQkQsd0JBbUJDIn0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1jb21tYW5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlLWNvbW1hbmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUNBQW9DO0FBRXBDLHFFQUF3RDtBQUN4RCw2REFBZ0Q7QUFDaEQsaUVBQW9EO0FBQ3BELGlFQUFvRDtBQUNwRCwrRUFBaUU7QUFDakUsaUVBQW9EO0FBR3BELFNBQXdCLFlBQVksQ0FBQyxPQUFxQjtJQUN4RCxzRkFBc0Y7SUFDdEYsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBTyxFQUFFLENBQUM7SUFFOUIsSUFBQSxtQkFBb0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsSUFBQSxpQkFBa0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsSUFBQSxpQkFBa0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsSUFBQSx3QkFBd0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsSUFBQSxlQUFnQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxJQUFBLGlCQUFrQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVyQyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBWkQsK0JBWUMifQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtdmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2Vudmlyb25tZW50LXZhcmlhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwrQ0FBNEM7QUFDNUMscUNBQWtDO0FBQ2xDLGdEQUF3QjtBQUV4QixzQ0FBMEM7QUFHMUMsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQUUsYUFBcUIsRUFBMEIsRUFBRTtJQUNuRixNQUFNLFNBQVMsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFckUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUFFLE9BQU8sSUFBQSxtQkFBUSxFQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVqRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVXLFFBQUEsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkMsaUJBQWlCLEVBQUUsNkJBQTZCO0lBQ2hELHVCQUF1QixFQUFFLHlDQUF5QztJQUNsRSw0QkFBNEIsRUFBRSxHQUFHO0lBQ2pDLFVBQVUsRUFBRSxJQUFBLGlCQUFPLEdBQUU7Q0FDdEIsQ0FBQyxDQUFDO0FBRUksS0FBSyxVQUFVLHVCQUF1QjtJQUMzQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxtQkFBVyxDQUFDLFVBQVUsQ0FBQztJQUVuRSxPQUFPO1FBQ0wsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUI7UUFDaEQsVUFBVSxFQUFFLFNBQVM7UUFDckIsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxtQkFBVyxDQUFDLGlCQUFpQjtRQUNqRix1QkFB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
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,9 @@ export default class HttpServer {
20
21
  email: string;
21
22
  };
22
23
  }>;
24
+ getLogs(tail?: number | string): Promise<{
25
+ logs: Log[];
26
+ }>;
23
27
  static getLatestVersion(packageName: string): Promise<string>;
24
28
  }
25
29
  //# sourceMappingURL=http-server.d.ts.map
@@ -102,9 +102,17 @@ class HttpServer {
102
102
  headers: this.headers,
103
103
  }, { errorMessage: `Failed to retrieve last published code details` });
104
104
  }
105
+ async getLogs(tail) {
106
+ const potentialTail = tail ? `?limit=${tail}` : '';
107
+ return handledAxios({
108
+ url: `${this.serverUrl}/api/full-hosted-agent/logs${potentialTail}`,
109
+ method: 'GET',
110
+ headers: this.headers,
111
+ }, { errorMessage: `Failed to retrieve logs` });
112
+ }
105
113
  static async getLatestVersion(packageName) {
106
114
  return (0, latest_version_1.default)(packageName);
107
115
  }
108
116
  }
109
117
  exports.default = HttpServer;
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaHR0cC1zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZDQUErQjtBQUMvQix1Q0FBeUI7QUFDekIsb0VBQTJDO0FBRTNDLHNDQUEwQztBQUUxQyxLQUFLLFVBQVUsWUFBWSxDQUN6QixrQkFBNEMsRUFDNUMsRUFBRSxZQUFZLEVBQTRCO0lBRTFDLElBQUk7UUFDRixPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7S0FDdkQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sS0FBSyxHQUFVLENBQUMsQ0FBQztRQUV2QixJQUFJLE9BQU8sQ0FBQztRQUVaLElBQUksS0FBSyxZQUFZLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQXlDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztZQUNsRixPQUFPLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDbkU7UUFFRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxNQUFNLElBQUksc0JBQWEsQ0FBQyxHQUFHLFlBQVksS0FBSyxLQUFLLENBQUMsT0FBTyxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUM7S0FDL0U7QUFDSCxDQUFDO0FBRUQsTUFBcUIsVUFBVTtJQUc3QixZQUFZLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxXQUFtQjtRQUNuRSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENB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
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaHR0cC1zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZDQUErQjtBQUMvQix1Q0FBeUI7QUFDekIsb0VBQTJDO0FBRTNDLHNDQUEwQztBQUcxQyxLQUFLLFVBQVUsWUFBWSxDQUN6QixrQkFBNEMsRUFDNUMsRUFBRSxZQUFZLEVBQTRCO0lBRTFDLElBQUk7UUFDRixPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7S0FDdkQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sS0FBSyxHQUFVLENBQUMsQ0FBQztRQUV2QixJQUFJLE9BQU8sQ0FBQztRQUVaLElBQUksS0FBSyxZQUFZLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQXlDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztZQUNsRixPQUFPLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDbkU7UUFFRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxNQUFNLElBQUksc0JBQWEsQ0FBQyxHQUFHLFlBQVksS0FBSyxLQUFLLENBQUMsT0FBTyxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUM7S0FDL0U7QUFDSCxDQUFDO0FBRUQsTUFBcUIsVUFBVTtJQUc3QixZQUFZLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxXQUFtQjtRQUNuRSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENB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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
- // we want to show the spinner only if we need to login
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnSEFBcUY7QUFDckYscUNBQXlDO0FBSWxDLE1BQU0sK0NBQStDLEdBQUcsS0FBSyxFQUNsRSxLQUFZLEVBQ1osTUFBYyxFQUNkLHVCQUE0RCxFQUM3QixFQUFFO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sdUJBQXVCLEVBQUUsQ0FBQztJQUM3QyxJQUFJLElBQUksQ0FBQyxpQkFBaUI7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV4Qyx1REFBdUQ7SUFDdkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwQixPQUFPLHVCQUF1QixFQUFFLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBYlcsUUFBQSwrQ0FBK0MsbURBYTFEO0FBRUssTUFBTSwwQ0FBMEMsR0FBRyxLQUFLLEVBQzdELE1BQWMsRUFDZCxVQUFzQixFQUNQLEVBQUU7SUFDakIsSUFDRSxDQUFDLENBQUMsTUFBTSxJQUFBLHlDQUE0QixFQUNsQyxNQUFNLENBQUMsT0FBTyxFQUNkLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3hELENBQUMsRUFDRjtRQUNBLE1BQU0sSUFBSSxzQkFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FDOUM7QUFDSCxDQUFDLENBQUM7QUFaVyxRQUFBLDBDQUEwQyw4Q0FZckQifQ==
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
- log: (text?: string) => void;
84
- error: (text?: string) => void;
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.1.6",
3
+ "version": "1.2.0",
4
4
  "description": "Utility to bootstrap and publish forest admin cloud projects customization",
5
5
  "dependencies": {
6
6
  "@forestadmin/agent": "1.38.3",
@@ -56,7 +56,6 @@
56
56
  ],
57
57
  "devDependencies": {
58
58
  "@types/adm-zip": "^0.5.5",
59
- "log-symbols": "^4.1.0",
60
59
  "nodemon": "^3.0.3"
61
60
  }
62
61
  }