@forestadmin/forest-cloud 1.5.4 → 1.6.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.
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const fs_1 = __importDefault(require("fs"));
7
7
  const os_1 = __importDefault(require("os"));
8
8
  const path_1 = __importDefault(require("path"));
9
- const logger_1 = __importDefault(require("./logger"));
10
- const login_1 = __importDefault(require("./login"));
9
+ const logger_1 = __importDefault(require("./externals/logger"));
10
+ const login_1 = __importDefault(require("./externals/login"));
11
11
  const make_commands_1 = __importDefault(require("./make-commands"));
12
12
  const bootstrap_path_manager_1 = __importDefault(require("./services/bootstrap-path-manager"));
13
13
  const dist_path_manager_1 = __importDefault(require("./services/dist-path-manager"));
@@ -37,4 +37,4 @@ function buildCommands() {
37
37
  });
38
38
  }
39
39
  exports.default = buildCommands;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBd0I7QUFDeEIsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUV4QixzREFBb0M7QUFDcEMsb0RBQTRCO0FBQzVCLG9FQUEyQztBQUMzQywrRkFBcUU7QUFDckUscUZBQTJEO0FBQzNELDRFQUEyRTtBQUMzRSxtRkFBMEQ7QUFDMUQseUVBQWdEO0FBR2hELE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBMEIsRUFBYyxFQUFFO0lBQ2pFLE9BQU8sSUFBSSxxQkFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDaEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQTBCLEVBQW1CLEVBQUU7SUFDM0UsT0FBTyxJQUFJLDBCQUFlLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25GLENBQUMsQ0FBQztBQUVGLFNBQVMsaUJBQWlCO0lBQ3hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUM1QixZQUFNLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FDekUsQ0FBQztJQUVGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUF3QixhQUFhO0lBQ25DLE9BQU8sSUFBQSx1QkFBWSxFQUFDO1FBQ2xCLHVCQUF1QixFQUF2QiwrQ0FBdUI7UUFDdkIsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixLQUFLLEVBQUwsZUFBSztRQUNMLE1BQU0sRUFBRSxJQUFBLGdCQUFZLEdBQUU7UUFDdEIsaUJBQWlCO1FBQ2pCLG9CQUFvQixFQUFFLElBQUksZ0NBQW9CLENBQUMsWUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6RSxlQUFlLEVBQUUsSUFBSSwyQkFBZSxFQUFFO0tBQ3ZDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFYRCxnQ0FXQyJ9
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBd0I7QUFDeEIsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUV4QixnRUFBOEM7QUFDOUMsOERBQXNDO0FBQ3RDLG9FQUEyQztBQUMzQywrRkFBcUU7QUFDckUscUZBQTJEO0FBQzNELDRFQUEyRTtBQUMzRSxtRkFBMEQ7QUFDMUQseUVBQWdEO0FBR2hELE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBMEIsRUFBYyxFQUFFO0lBQ2pFLE9BQU8sSUFBSSxxQkFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDaEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQTBCLEVBQW1CLEVBQUU7SUFDM0UsT0FBTyxJQUFJLDBCQUFlLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25GLENBQUMsQ0FBQztBQUVGLFNBQVMsaUJBQWlCO0lBQ3hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUM1QixZQUFNLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FDekUsQ0FBQztJQUVGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUF3QixhQUFhO0lBQ25DLE9BQU8sSUFBQSx1QkFBWSxFQUFDO1FBQ2xCLHVCQUF1QixFQUF2QiwrQ0FBdUI7UUFDdkIsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixLQUFLLEVBQUwsZUFBSztRQUNMLE1BQU0sRUFBRSxJQUFBLGdCQUFZLEdBQUU7UUFDdEIsaUJBQWlCO1FBQ2pCLG9CQUFvQixFQUFFLElBQUksZ0NBQW9CLENBQUMsWUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6RSxlQUFlLEVBQUUsSUFBSSwyQkFBZSxFQUFFO0tBQ3ZDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFYRCxnQ0FXQyJ9
@@ -1,4 +1,4 @@
1
- import { Logger } from './types';
1
+ import { Logger } from '../types';
2
2
  export declare const loggerPrefix: {
3
3
  Debug: string;
4
4
  Info: string;
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dGVybmFscy9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXNCO0FBSVQsUUFBQSxZQUFZLEdBQUc7SUFDMUIsS0FBSyxFQUFFLHVCQUF1QjtJQUM5QixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLElBQUksRUFBRSx5QkFBeUI7SUFDL0IsS0FBSyxFQUFFLHVCQUF1QjtDQUMvQixDQUFDO0FBRUYsa0JBQWUsR0FBVyxFQUFFO0lBQzFCLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLE1BQWMsRUFBRSxFQUFFO1FBQ2pELElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFekIsT0FBTyxHQUFHLE1BQU0sTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDLENBQUM7SUFFRixNQUFNLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxVQUFnQyxFQUFFLEVBQUU7UUFDL0QsSUFBSSxVQUFVLEtBQUssUUFBUTtZQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUNuRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUM7SUFFRixNQUFNLEdBQUcsR0FBRyxDQUFDLElBQWEsRUFBRSxNQUFlLEVBQUUsRUFBRTtRQUM3QyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUM7SUFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQWEsRUFBRSxJQUFhLEVBQUUsTUFBZSxFQUFFLEVBQUU7UUFDakUsR0FBRyxDQUFDLEdBQUcsb0JBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsT0FBTyxFQUFFLElBQUEsYUFBRyxHQUFFO1FBQ2QsS0FBSyxFQUFFLENBQUMsSUFBWSxFQUFFLFVBQWdDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO1FBQ2xGLEdBQUcsRUFBRSxDQUFDLElBQWEsRUFBRSxNQUFlLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQzFELElBQUksRUFBRSxDQUFDLElBQWEsRUFBRSxNQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUN4RSxLQUFLLEVBQUUsQ0FBQyxJQUFhLEVBQUUsTUFBZSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUM7UUFDMUUsSUFBSSxFQUFFLENBQUMsSUFBYSxFQUFFLE1BQWUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ3hFLEtBQUssRUFBRSxDQUFDLElBQWEsRUFBRSxNQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztLQUMzRSxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ import { Logger } from '../types';
2
+ export default function login(logger: Logger): Promise<void>;
3
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const child_process_1 = require("child_process");
4
+ async function login(logger) {
5
+ return new Promise((resolve, reject) => {
6
+ let hasLoginSuccess = false;
7
+ const pathForest = require.resolve('forest-cli/bin/run');
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 => {
13
+ if (data.includes('Login successful'))
14
+ hasLoginSuccess = true;
15
+ logger.write(data, 'stdout');
16
+ });
17
+ subProcess.on('close', () => {
18
+ if (!hasLoginSuccess)
19
+ return reject(new Error('Login failed'));
20
+ resolve();
21
+ });
22
+ });
23
+ }
24
+ exports.default = login;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXh0ZXJuYWxzL2xvZ2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaURBQXFDO0FBSXRCLEtBQUssVUFBVSxLQUFLLENBQUMsTUFBYztJQUNoRCxPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzNDLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM1QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDekQsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBSSxFQUFDLFFBQVEsVUFBVSxRQUFRLENBQUMsQ0FBQztRQUNwRCxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDbEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUFFLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDOUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGVBQWU7Z0JBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUMvRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBbkJELHdCQW1CQyJ9
@@ -45,7 +45,12 @@ async function handledAxios(axiosRequestConfig, { errorMessage }) {
45
45
  throw new errors_1.ValidationError(details);
46
46
  }
47
47
  else {
48
- throw new errors_1.BusinessError(`${errorMessage}: ${error.message}\n${details}`.trim());
48
+ const baseMessage = `${errorMessage}: ${error.message}\n${details}`.trim();
49
+ if (e.response?.status === 401 || e.response?.status === 403) {
50
+ const loginMessage = " You can try to login again by running 'npx @forestadmin/forest-cloud@latest login'";
51
+ throw new errors_1.BusinessError(`${baseMessage}\n${loginMessage}`);
52
+ }
53
+ throw new errors_1.BusinessError(baseMessage);
49
54
  }
50
55
  }
51
56
  }
@@ -120,4 +125,4 @@ class HttpServer {
120
125
  }
121
126
  }
122
127
  exports.default = HttpServer;
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaHR0cC1zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZDQUErQjtBQUMvQix1Q0FBeUI7QUFFekIsc0VBQTZDO0FBQzdDLHNDQUEyRDtBQUczRCxLQUFLLFVBQVUsWUFBWSxDQUN6QixrQkFBNEMsRUFDNUMsRUFBRSxZQUFZLEVBQTRCO0lBRTFDLElBQUk7UUFDRixPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7S0FDdkQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sS0FBSyxHQUFVLENBQUMsQ0FBQztRQUN2QixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFFakIsSUFBSSxLQUFLLFlBQVksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBeUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO1lBQ2xGLE9BQU8sR0FBRyxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0U7UUFFRCxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLEdBQUcsRUFBRTtZQUM5QixNQUFNLElBQUksd0JBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwQzthQUFNO1lBQ0wsTUFBTSxJQUFJLHNCQUFhLENBQUMsR0FBRyxZQUFZLEtBQUssS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2pGO0tBQ0Y7QUFDSCxDQUFDO0FBRUQsTUFBcUIsVUFBVTtJQUc3QixZQUFZ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
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaHR0cC1zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZDQUErQjtBQUMvQix1Q0FBeUI7QUFFekIsc0VBQTZDO0FBQzdDLHNDQUEyRDtBQUczRCxLQUFLLFVBQVUsWUFBWSxDQUN6QixrQkFBNEMsRUFDNUMsRUFBRSxZQUFZLEVBQTRCO0lBRTFDLElBQUk7UUFDRixPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7S0FDdkQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sS0FBSyxHQUFVLENBQUMsQ0FBQztRQUN2QixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFFakIsSUFBSSxLQUFLLFlBQVksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBeUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO1lBQ2xGLE9BQU8sR0FBRyxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0U7UUFFRCxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLEdBQUcsRUFBRTtZQUM5QixNQUFNLElBQUksd0JBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwQzthQUFNO1lBQ0wsTUFBTSxXQUFXLEdBQUcsR0FBRyxZQUFZLEtBQUssS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUUzRSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLENB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/forest-cloud",
3
- "version": "1.5.4",
3
+ "version": "1.6.0",
4
4
  "description": "Utility to bootstrap and publish forest admin cloud projects customization",
5
5
  "dependencies": {
6
6
  "@forestadmin/agent": "1.38.7",
package/dist/logger.js DELETED
@@ -1,42 +0,0 @@
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.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { Logger } from './types';
2
- export default function login(logger: Logger): Promise<void>;
3
- //# sourceMappingURL=login.d.ts.map
package/dist/login.js DELETED
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const child_process_1 = require("child_process");
4
- async function login(logger) {
5
- return new Promise((resolve, reject) => {
6
- let hasLoginSuccess = false;
7
- const pathForest = require.resolve('forest-cli/bin/run');
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 => {
13
- if (data.includes('Login successful'))
14
- hasLoginSuccess = true;
15
- logger.write(data, 'stdout');
16
- });
17
- subProcess.on('close', () => {
18
- if (!hasLoginSuccess)
19
- return reject(new Error('Login failed'));
20
- resolve();
21
- });
22
- });
23
- }
24
- exports.default = login;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpREFBcUM7QUFJdEIsS0FBSyxVQUFVLEtBQUssQ0FBQyxNQUFjO0lBQ2hELE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDM0MsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzVCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6RCxNQUFNLFVBQVUsR0FBRyxJQUFBLG9CQUFJLEVBQUMsUUFBUSxVQUFVLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNsQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQUUsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM5RCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsZUFBZTtnQkFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFuQkQsd0JBbUJDIn0=