@qodalis/cli-core 0.0.15 → 2.0.0-beta.1
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/README.md +399 -31
- package/package.json +16 -23
- package/public-api.d.mts +2322 -0
- package/public-api.d.ts +2322 -8
- package/public-api.js +3597 -0
- package/public-api.js.map +1 -0
- package/public-api.mjs +3545 -0
- package/public-api.mjs.map +1 -0
- package/esm2022/lib/constants/index.mjs +0 -8
- package/esm2022/lib/interfaces/command-hooks.mjs +0 -2
- package/esm2022/lib/interfaces/command-processor.mjs +0 -2
- package/esm2022/lib/interfaces/execution-context.mjs +0 -2
- package/esm2022/lib/interfaces/index.mjs +0 -6
- package/esm2022/lib/interfaces/progress-bars.mjs +0 -2
- package/esm2022/lib/interfaces/users.mjs +0 -2
- package/esm2022/lib/models/index.mjs +0 -175
- package/esm2022/lib/models/services.mjs +0 -2
- package/esm2022/lib/models/users.mjs +0 -2
- package/esm2022/lib/modules/index.mjs +0 -30
- package/esm2022/lib/themes/index.mjs +0 -221
- package/esm2022/lib/types/CancellablePromise.mjs +0 -28
- package/esm2022/lib/types/index.mjs +0 -2
- package/esm2022/lib/utils/delay.mjs +0 -4
- package/esm2022/lib/utils/index.mjs +0 -80
- package/esm2022/lib/utils/object-describer.mjs +0 -134
- package/esm2022/lib/utils/terminal-utils.mjs +0 -16
- package/esm2022/lib/version.mjs +0 -3
- package/esm2022/public-api.mjs +0 -12
- package/esm2022/qodalis-cli-core.mjs +0 -5
- package/fesm2022/qodalis-cli-core.mjs +0 -697
- package/fesm2022/qodalis-cli-core.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/constants/index.d.ts +0 -5
- package/lib/interfaces/command-hooks.d.ts +0 -5
- package/lib/interfaces/command-processor.d.ts +0 -151
- package/lib/interfaces/execution-context.d.ts +0 -109
- package/lib/interfaces/index.d.ts +0 -349
- package/lib/interfaces/progress-bars.d.ts +0 -72
- package/lib/interfaces/users.d.ts +0 -42
- package/lib/models/index.d.ts +0 -293
- package/lib/models/services.d.ts +0 -20
- package/lib/models/users.d.ts +0 -30
- package/lib/modules/index.d.ts +0 -6
- package/lib/themes/index.d.ts +0 -16
- package/lib/types/CancellablePromise.d.ts +0 -8
- package/lib/types/index.d.ts +0 -1
- package/lib/utils/delay.d.ts +0 -1
- package/lib/utils/index.d.ts +0 -24
- package/lib/utils/object-describer.d.ts +0 -12
- package/lib/utils/terminal-utils.d.ts +0 -7
- package/lib/version.d.ts +0 -1
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export class CancellablePromise {
|
|
2
|
-
constructor(executor) {
|
|
3
|
-
this.executor = executor;
|
|
4
|
-
this.hasCancelled = false;
|
|
5
|
-
this.abortController = new AbortController();
|
|
6
|
-
}
|
|
7
|
-
execute() {
|
|
8
|
-
return new Promise((resolve, reject) => {
|
|
9
|
-
this.abortController.signal.onabort = () => {
|
|
10
|
-
reject(new Error('Promise cancelled'));
|
|
11
|
-
};
|
|
12
|
-
this.executor((value) => {
|
|
13
|
-
if (!this.hasCancelled) {
|
|
14
|
-
resolve(value);
|
|
15
|
-
}
|
|
16
|
-
}, (reason) => {
|
|
17
|
-
if (!this.hasCancelled) {
|
|
18
|
-
reject(reason);
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
cancel() {
|
|
24
|
-
this.hasCancelled = true;
|
|
25
|
-
this.abortController.abort();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuY2VsbGFibGVQcm9taXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3R5cGVzL0NhbmNlbGxhYmxlUHJvbWlzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sa0JBQWtCO0lBSzNCLFlBQ1ksUUFHQztRQUhELGFBQVEsR0FBUixRQUFRLENBR1A7UUFSTCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixvQkFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7SUFPN0MsQ0FBQztJQUVHLE9BQU87UUFDVixPQUFPLElBQUksT0FBTyxDQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7Z0JBQ3ZDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDO1lBRUYsSUFBSSxDQUFDLFFBQVEsQ0FDVCxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2xCO1lBQ0wsQ0FBQyxFQUNELENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDbEI7WUFDTCxDQUFDLENBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgIHByaXZhdGUgaGFzQ2FuY2VsbGVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGV4ZWN1dG9yOiAoXG4gICAgICAgICAgICByZXNvbHZlOiAodmFsdWU6IFQpID0+IHZvaWQsXG4gICAgICAgICAgICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQsXG4gICAgICAgICkgPT4gdm9pZCxcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgZXhlY3V0ZSgpOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5vbmFib3J0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Byb21pc2UgY2FuY2VsbGVkJykpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5leGVjdXRvcihcbiAgICAgICAgICAgICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0NhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChyZWFzb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0NhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgICB0aGlzLmhhc0NhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './CancellablePromise';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQ2FuY2VsbGFibGVQcm9taXNlJztcbiJdfQ==
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export const delay = (ms) => {
|
|
2
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
3
|
-
};
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXRpbHMvZGVsYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFpQixFQUFFO0lBQy9DLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZGVsYXkgPSAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufTtcbiJdfQ==
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { CliBackgroundColor, CliForegroundColor } from '../models';
|
|
2
|
-
import { delay } from './delay';
|
|
3
|
-
import { ObjectDescriber } from './object-describer';
|
|
4
|
-
export const getParameterValue = (p, args) => {
|
|
5
|
-
if (args[p.name] !== undefined) {
|
|
6
|
-
return args[p.name];
|
|
7
|
-
}
|
|
8
|
-
const matchedAlias = p.aliases?.find((alias) => args[alias] !== undefined);
|
|
9
|
-
return matchedAlias ? args[matchedAlias] : undefined;
|
|
10
|
-
};
|
|
11
|
-
export const formatJson = (json) => {
|
|
12
|
-
const identedJson = JSON.stringify(json, null, 2);
|
|
13
|
-
return colorizeJson(identedJson.split('\n').join('\r\n'));
|
|
14
|
-
};
|
|
15
|
-
export const colorizeJson = (jsonString) => {
|
|
16
|
-
return jsonString
|
|
17
|
-
.replace(/"([^"]+)":/g, '\x1b[33m"$1":\x1b[0m') // Keys (yellow)
|
|
18
|
-
.replace(/: "([^"]*)"/g, ': \x1b[32m"$1"\x1b[0m') // Strings (green)
|
|
19
|
-
.replace(/: (\d+)/g, ': \x1b[34m$1\x1b[0m') // Numbers (blue)
|
|
20
|
-
.replace(/: (true|false)/g, ': \x1b[35m$1\x1b[0m') // Booleans (magenta)
|
|
21
|
-
.replace(/: (null)/g, ': \x1b[36m$1\x1b[0m'); // Null (cyan)
|
|
22
|
-
};
|
|
23
|
-
export const toQueryString = (params) => {
|
|
24
|
-
const searchParams = new URLSearchParams();
|
|
25
|
-
for (const key in params) {
|
|
26
|
-
if (params.hasOwnProperty(key)) {
|
|
27
|
-
const value = params[key];
|
|
28
|
-
// Handle array and non-primitive values
|
|
29
|
-
if (Array.isArray(value)) {
|
|
30
|
-
value.forEach((v) => searchParams.append(key, v.toString()));
|
|
31
|
-
}
|
|
32
|
-
else if (value !== null && value !== undefined) {
|
|
33
|
-
searchParams.append(key, value.toString());
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return searchParams.toString();
|
|
38
|
-
};
|
|
39
|
-
export const highlightTextWithBg = (text, pattern, bgColor = CliBackgroundColor.Yellow) => {
|
|
40
|
-
// Replace matches with background-colored text
|
|
41
|
-
return text.replace(pattern, (match) => `${bgColor}${match}${CliForegroundColor.Reset}`);
|
|
42
|
-
};
|
|
43
|
-
export const getRightOfWord = (command, word) => {
|
|
44
|
-
// Find the position of the word in the command
|
|
45
|
-
const index = command.indexOf(word);
|
|
46
|
-
// If the word is found, extract the substring to the right
|
|
47
|
-
if (index !== -1) {
|
|
48
|
-
return command.slice(index + word.length).trim();
|
|
49
|
-
}
|
|
50
|
-
// If the word is not found, return null
|
|
51
|
-
return undefined;
|
|
52
|
-
};
|
|
53
|
-
export const colorFirstWord = (text, colorFunction) => {
|
|
54
|
-
if (!text)
|
|
55
|
-
return text;
|
|
56
|
-
// Match leading spaces and first word separately
|
|
57
|
-
const match = text.match(/^(\s*)(\S+)(.*)$/);
|
|
58
|
-
if (!match)
|
|
59
|
-
return text; // If no match, return original text
|
|
60
|
-
const [, leadingSpaces, firstWord, restOfText] = match;
|
|
61
|
-
// Apply color only to the first word
|
|
62
|
-
const firstWordColored = colorFunction(firstWord);
|
|
63
|
-
// Reconstruct string: Keep spaces, color first word, and append rest
|
|
64
|
-
return `${leadingSpaces}${firstWordColored}${restOfText}`;
|
|
65
|
-
};
|
|
66
|
-
export * from './object-describer';
|
|
67
|
-
export * from './delay';
|
|
68
|
-
export * from './terminal-utils';
|
|
69
|
-
export const utils = {
|
|
70
|
-
getParameterValue,
|
|
71
|
-
formatJson,
|
|
72
|
-
colorizeJson,
|
|
73
|
-
toQueryString,
|
|
74
|
-
highlightTextWithBg,
|
|
75
|
-
getRightOfWord,
|
|
76
|
-
colorFirstWord,
|
|
77
|
-
ObjectDescriber,
|
|
78
|
-
delay,
|
|
79
|
-
};
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQzdCLENBQWlDLEVBQ2pDLElBQXlCLEVBQ1YsRUFBRTtJQUNqQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1FBQzVCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN2QjtJQUNELE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDM0UsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVMsRUFBVSxFQUFFO0lBQzVDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVsRCxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxN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QUMsU0FBUyxDQUFDLENBQUM7SUFFbEQscUVBQXFFO0lBQ3JFLE9BQU8sR0FBRyxhQUFhLEdBQUcsZ0JBQWdCLEdBQUcsVUFBVSxFQUFFLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsY0FBYyxvQkFBb0IsQ0FBQztBQUVuQyxjQUFjLFNBQVMsQ0FBQztBQUV4QixjQUFjLGtCQUFrQixDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRztJQUNqQixpQkFBaUI7SUFDakIsVUFBVTtJQUNWLFlBQVk7SUFDWixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLGNBQWM7SUFDZCxjQUFjO0lBQ2QsZUFBZTtJQUNmLEtBQUs7Q0FDUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNsaUNvbW1hbmRQYXJhbWV0ZXJEZXNjcmlwdG9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDbGlCYWNrZ3JvdW5kQ29sb3IsIENsaUZvcmVncm91bmRDb2xvciB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4vZGVsYXknO1xuaW1wb3J0IHsgT2JqZWN0RGVzY3JpYmVyIH0gZnJvbSAnLi9vYmplY3QtZGVzY3JpYmVyJztcblxuZXhwb3J0IGNvbnN0IGdldFBhcmFtZXRlclZhbHVlID0gKFxuICAgIHA6IElDbGlDb21tYW5kUGFyYW1ldGVyRGVzY3JpcHRvcixcbiAgICBhcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKTogYW55IHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoYXJnc1twLm5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbcC5uYW1lXTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlZEFsaWFzID0gcC5hbGlhc2VzPy5maW5kKChhbGlhcykgPT4gYXJnc1thbGlhc10gIT09IHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIG1hdGNoZWRBbGlhcyA/IGFyZ3NbbWF0Y2hlZEFsaWFzXSA6IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRKc29uID0gKGpzb246IGFueSk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgaWRlbnRlZEpzb24gPSBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKTtcblxuICAgIHJldHVybiBjb2xvcml6ZUpzb24oaWRlbnRlZEpzb24uc3BsaXQoJ1xcbicpLmpvaW4oJ1xcclxcbicpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb2xvcml6ZUpzb24gPSAoanNvblN0cmluZzogYW55KTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4ganNvblN0cmluZ1xuICAgICAgICAucmVwbGFjZSgvXCIoW15cIl0rKVwiOi9nLCAnXFx4MWJbMzNtXCIkMVwiOlxceDFiWzBtJykgLy8gS2V5cyAoeWVsbG93KVxuICAgICAgICAucmVwbGFjZSgvOiBcIihbXlwiXSopXCIvZywgJzogXFx4MWJbMzJtXCIkMVwiXFx4MWJbMG0nKSAvLyBTdHJpbmdzIChncmVlbilcbiAgICAgICAgLnJlcGxhY2UoLzogKFxcZCspL2csICc6IFxceDFiWzM0bSQxXFx4MWJbMG0nKSAvLyBOdW1iZXJzIChibHVlKVxuICAgICAgICAucmVwbGFjZSgvOiAodHJ1ZXxmYWxzZSkvZywgJzogXFx4MWJbMzVtJDFcXHgxYlswbScpIC8vIEJvb2xlYW5zIChtYWdlbnRhKVxuICAgICAgICAucmVwbGFjZSgvOiAobnVsbCkvZywgJzogXFx4MWJbMzZtJDFcXHgxYlswbScpOyAvLyBOdWxsIChjeWFuKVxufTtcblxuZXhwb3J0IGNvbnN0IHRvUXVlcnlTdHJpbmcgPSAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtc1trZXldO1xuICAgICAgICAgICAgLy8gSGFuZGxlIGFycmF5IGFuZCBub24tcHJpbWl0aXZlIHZhbHVlc1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4gc2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIHYudG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlYXJjaFBhcmFtcy50b1N0cmluZygpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhpZ2hsaWdodFRleHRXaXRoQmcgPSAoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHBhdHRlcm46IFJlZ0V4cCxcbiAgICBiZ0NvbG9yOiBDbGlCYWNrZ3JvdW5kQ29sb3IgPSBDbGlCYWNrZ3JvdW5kQ29sb3IuWWVsbG93LFxuKTogc3RyaW5nID0+IHtcbiAgICAvLyBSZXBsYWNlIG1hdGNoZXMgd2l0aCBiYWNrZ3JvdW5kLWNvbG9yZWQgdGV4dFxuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoXG4gICAgICAgIHBhdHRlcm4sXG4gICAgICAgIChtYXRjaCkgPT4gYCR7YmdDb2xvcn0ke21hdGNofSR7Q2xpRm9yZWdyb3VuZENvbG9yLlJlc2V0fWAsXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSaWdodE9mV29yZCA9IChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgd29yZDogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgICAvLyBGaW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgd29yZCBpbiB0aGUgY29tbWFuZFxuICAgIGNvbnN0IGluZGV4ID0gY29tbWFuZC5pbmRleE9mKHdvcmQpO1xuXG4gICAgLy8gSWYgdGhlIHdvcmQgaXMgZm91bmQsIGV4dHJhY3QgdGhlIHN1YnN0cmluZyB0byB0aGUgcmlnaHRcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjb21tYW5kLnNsaWNlKGluZGV4ICsgd29yZC5sZW5ndGgpLnRyaW0oKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgd29yZCBpcyBub3QgZm91bmQsIHJldHVybiBudWxsXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBjb2xvckZpcnN0V29yZCA9IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgY29sb3JGdW5jdGlvbjogKHdvcmQ6IHN0cmluZykgPT4gc3RyaW5nLFxuKSA9PiB7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gdGV4dDtcblxuICAgIC8vIE1hdGNoIGxlYWRpbmcgc3BhY2VzIGFuZCBmaXJzdCB3b3JkIHNlcGFyYXRlbHlcbiAgICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goL14oXFxzKikoXFxTKykoLiopJC8pO1xuXG4gICAgaWYgKCFtYXRjaCkgcmV0dXJuIHRleHQ7IC8vIElmIG5vIG1hdGNoLCByZXR1cm4gb3JpZ2luYWwgdGV4dFxuXG4gICAgY29uc3QgWywgbGVhZGluZ1NwYWNlcywgZmlyc3RXb3JkLCByZXN0T2ZUZXh0XSA9IG1hdGNoO1xuXG4gICAgLy8gQXBwbHkgY29sb3Igb25seSB0byB0aGUgZmlyc3Qgd29yZFxuICAgIGNvbnN0IGZpcnN0V29yZENvbG9yZWQgPSBjb2xvckZ1bmN0aW9uKGZpcnN0V29yZCk7XG5cbiAgICAvLyBSZWNvbnN0cnVjdCBzdHJpbmc6IEtlZXAgc3BhY2VzLCBjb2xvciBmaXJzdCB3b3JkLCBhbmQgYXBwZW5kIHJlc3RcbiAgICByZXR1cm4gYCR7bGVhZGluZ1NwYWNlc30ke2ZpcnN0V29yZENvbG9yZWR9JHtyZXN0T2ZUZXh0fWA7XG59O1xuXG5leHBvcnQgKiBmcm9tICcuL29iamVjdC1kZXNjcmliZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2RlbGF5JztcblxuZXhwb3J0ICogZnJvbSAnLi90ZXJtaW5hbC11dGlscyc7XG5cbmV4cG9ydCBjb25zdCB1dGlscyA9IHtcbiAgICBnZXRQYXJhbWV0ZXJWYWx1ZSxcbiAgICBmb3JtYXRKc29uLFxuICAgIGNvbG9yaXplSnNvbixcbiAgICB0b1F1ZXJ5U3RyaW5nLFxuICAgIGhpZ2hsaWdodFRleHRXaXRoQmcsXG4gICAgZ2V0UmlnaHRPZldvcmQsXG4gICAgY29sb3JGaXJzdFdvcmQsXG4gICAgT2JqZWN0RGVzY3JpYmVyLFxuICAgIGRlbGF5LFxufTtcbiJdfQ==
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { CliForegroundColor } from '../models';
|
|
2
|
-
export class ObjectDescriber {
|
|
3
|
-
static describe(obj, options) {
|
|
4
|
-
const { filter } = options || {};
|
|
5
|
-
const processors = [];
|
|
6
|
-
const keys = Object.keys(obj);
|
|
7
|
-
const functions = keys.filter((key) => typeof obj[key] === 'function');
|
|
8
|
-
for (const func of functions) {
|
|
9
|
-
const funcValue = obj[func];
|
|
10
|
-
const args = this.getFunctionArguments(funcValue);
|
|
11
|
-
if (filter) {
|
|
12
|
-
const shouldInclude = filter({
|
|
13
|
-
funcName: func,
|
|
14
|
-
func: funcValue,
|
|
15
|
-
args,
|
|
16
|
-
});
|
|
17
|
-
if (!shouldInclude) {
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
const supportsMultipleArgs = args.length > 1;
|
|
22
|
-
const supportsDynamicArgs = this.supportsDynamicArgs(funcValue);
|
|
23
|
-
if (args.length === 0 && !supportsDynamicArgs) {
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
if (args.length > 0 &&
|
|
27
|
-
args.some((arg) => arg === 'function' || arg === 'func')) {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
const processor = {
|
|
31
|
-
command: func,
|
|
32
|
-
description: `A command that executes the function ${func} with the provided arguments`,
|
|
33
|
-
allowUnlistedCommands: true,
|
|
34
|
-
valueRequired: true,
|
|
35
|
-
parameters: [
|
|
36
|
-
{
|
|
37
|
-
name: 'debug',
|
|
38
|
-
description: 'Debug',
|
|
39
|
-
type: 'boolean',
|
|
40
|
-
required: false,
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
processCommand: async (command, context) => {
|
|
44
|
-
const debug = command.args['debug'];
|
|
45
|
-
if (debug) {
|
|
46
|
-
context.writer.writeln('Executing command: ' + func);
|
|
47
|
-
context.writer.writeln('Arguments: ' + JSON.stringify(command.args));
|
|
48
|
-
context.writer.writeln('Function: ' + funcValue.toString());
|
|
49
|
-
}
|
|
50
|
-
const argsToCallF = [];
|
|
51
|
-
if (supportsMultipleArgs) {
|
|
52
|
-
for (const arg of args.slice(1)) {
|
|
53
|
-
argsToCallF.push(command.args[arg]);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (supportsDynamicArgs && command.value) {
|
|
57
|
-
const delimiter = command.args['delimiter'] || ',';
|
|
58
|
-
argsToCallF.push(...command.value.split(delimiter));
|
|
59
|
-
}
|
|
60
|
-
if (debug) {
|
|
61
|
-
context.writer.writeln('Arguments after processing: ' +
|
|
62
|
-
JSON.stringify(argsToCallF));
|
|
63
|
-
}
|
|
64
|
-
const result = supportsDynamicArgs && args.length === 0
|
|
65
|
-
? funcValue(...argsToCallF)
|
|
66
|
-
: funcValue(command.value, ...argsToCallF);
|
|
67
|
-
context.writer.write(context.writer.wrapInColor('Result: ', CliForegroundColor.Yellow));
|
|
68
|
-
if (result === null) {
|
|
69
|
-
context.writer.writeln('null');
|
|
70
|
-
}
|
|
71
|
-
else if (result === undefined) {
|
|
72
|
-
context.writer.writeln('undefined');
|
|
73
|
-
}
|
|
74
|
-
else if (typeof result === 'boolean') {
|
|
75
|
-
context.writer.writeln(result.toString());
|
|
76
|
-
}
|
|
77
|
-
else if (typeof result === 'number') {
|
|
78
|
-
context.writer.writeln(result.toString());
|
|
79
|
-
}
|
|
80
|
-
else if (Array.isArray(result)) {
|
|
81
|
-
context.writer.writeJson(result);
|
|
82
|
-
}
|
|
83
|
-
else if (typeof result === 'string') {
|
|
84
|
-
context.writer.writeln(result);
|
|
85
|
-
}
|
|
86
|
-
else if (typeof result === 'object') {
|
|
87
|
-
context.writer.writeJson(result);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
context.writer.writeln(result?.toString());
|
|
91
|
-
}
|
|
92
|
-
context.process.output(result?.toString());
|
|
93
|
-
},
|
|
94
|
-
writeDescription: (context) => {
|
|
95
|
-
context.writer.writeln(func);
|
|
96
|
-
},
|
|
97
|
-
};
|
|
98
|
-
if (supportsDynamicArgs) {
|
|
99
|
-
processor.parameters?.push({
|
|
100
|
-
name: 'delimiter',
|
|
101
|
-
description: 'Delimiter',
|
|
102
|
-
type: 'string',
|
|
103
|
-
required: false,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
if (supportsMultipleArgs) {
|
|
107
|
-
processor.parameters?.push(...args.slice(1).map((arg) => ({
|
|
108
|
-
name: arg,
|
|
109
|
-
description: arg,
|
|
110
|
-
type: 'string',
|
|
111
|
-
required: false,
|
|
112
|
-
})));
|
|
113
|
-
}
|
|
114
|
-
processors.push(processor);
|
|
115
|
-
}
|
|
116
|
-
return processors;
|
|
117
|
-
}
|
|
118
|
-
static supportsDynamicArgs(func) {
|
|
119
|
-
const funcStr = func.toString();
|
|
120
|
-
return funcStr.includes('arguments');
|
|
121
|
-
}
|
|
122
|
-
static getFunctionArguments(func) {
|
|
123
|
-
const funcStr = func.toString();
|
|
124
|
-
const args = funcStr.match(/\(([^)]*)\)/);
|
|
125
|
-
if (!args) {
|
|
126
|
-
return [];
|
|
127
|
-
}
|
|
128
|
-
return args[1]
|
|
129
|
-
.split(',')
|
|
130
|
-
.map((arg) => arg.trim())
|
|
131
|
-
.filter((arg) => arg !== '');
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRlc2NyaWJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi91dGlscy9vYmplY3QtZGVzY3JpYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsTUFBTSxXQUFXLENBQUM7QUFFbEUsTUFBTSxPQUFPLGVBQWU7SUFDeEIsTUFBTSxDQUFDLFFBQVEsQ0FDWCxHQUFRLEVBQ1IsT0FNQztRQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1FBRWpDLE1BQU0sVUFBVSxHQUEyQixFQUFFLENBQUM7UUFFOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU5QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQztRQUV2RSxLQUFLLE1BQU0sSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUMxQixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRWxELElBQUksTUFBTSxFQUFFO2dCQUNSLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQztvQkFDekIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsSUFBSTtpQkFDUCxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDaEIsU0FBUztpQkFDWjthQUNKO1lBRUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUU3QyxNQUFNLG1CQUFtQixHQUFHLElB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LENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNsaUNvbW1hbmRQcm9jZXNzb3IsIElDbGlFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDbGlGb3JlZ3JvdW5kQ29sb3IsIENsaVByb2Nlc3NDb21tYW5kIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNsYXNzIE9iamVjdERlc2NyaWJlciB7XG4gICAgc3RhdGljIGRlc2NyaWJlKFxuICAgICAgICBvYmo6IGFueSxcbiAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICAgIGZpbHRlcj86IChvOiB7XG4gICAgICAgICAgICAgICAgZnVuY05hbWU6IHN0cmluZztcbiAgICAgICAgICAgICAgICBmdW5jOiBhbnk7XG4gICAgICAgICAgICAgICAgYXJnczogc3RyaW5nW107XG4gICAgICAgICAgICB9KSA9PiBib29sZWFuO1xuICAgICAgICB9LFxuICAgICk6IElDbGlDb21tYW5kUHJvY2Vzc29yW10ge1xuICAgICAgICBjb25zdCB7IGZpbHRlciB9ID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICBjb25zdCBwcm9jZXNzb3JzOiBJQ2xpQ29tbWFuZFByb2Nlc3NvcltdID0gW107XG5cbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG5cbiAgICAgICAgY29uc3QgZnVuY3Rpb25zID0ga2V5cy5maWx0ZXIoKGtleSkgPT4gdHlwZW9mIG9ialtrZXldID09PSAnZnVuY3Rpb24nKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGZ1bmMgb2YgZnVuY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBmdW5jVmFsdWUgPSBvYmpbZnVuY107XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gdGhpcy5nZXRGdW5jdGlvbkFyZ3VtZW50cyhmdW5jVmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkSW5jbHVkZSA9IGZpbHRlcih7XG4gICAgICAgICAgICAgICAgICAgIGZ1bmNOYW1lOiBmdW5jLFxuICAgICAgICAgICAgICAgICAgICBmdW5jOiBmdW5jVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNob3VsZEluY2x1ZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzdXBwb3J0c011bHRpcGxlQXJncyA9IGFyZ3MubGVuZ3RoID4gMTtcblxuICAgICAgICAgICAgY29uc3Qgc3VwcG9ydHNEeW5hbWljQXJncyA9IHRoaXMuc3VwcG9ydHNEeW5hbWljQXJncyhmdW5jVmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDAgJiYgIXN1cHBvcnRzRHluYW1pY0FyZ3MpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGFyZ3MubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIGFyZ3Muc29tZSgoYXJnKSA9PiBhcmcgPT09ICdmdW5jdGlvbicgfHwgYXJnID09PSAnZnVuYycpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yOiBJQ2xpQ29tbWFuZFByb2Nlc3NvciA9IHtcbiAgICAgICAgICAgICAgICBjb21tYW5kOiBmdW5jLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQSBjb21tYW5kIHRoYXQgZXhlY3V0ZXMgdGhlIGZ1bmN0aW9uICR7ZnVuY30gd2l0aCB0aGUgcHJvdmlkZWQgYXJndW1lbnRzYCxcbiAgICAgICAgICAgICAgICBhbGxvd1VubGlzdGVkQ29tbWFuZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZWJ1ZycsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0RlYnVnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tYW5kOiBhc3luYyAoXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6IENsaVByb2Nlc3NDb21tYW5kLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBJQ2xpRXhlY3V0aW9uQ29udGV4dCxcbiAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVidWcgPSBjb21tYW5kLmFyZ3NbJ2RlYnVnJ10gYXMgYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4oJ0V4ZWN1dGluZyBjb21tYW5kOiAnICsgZnVuYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZWxuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBcmd1bWVudHM6ICcgKyBKU09OLnN0cmluZ2lmeShjb21tYW5kLmFyZ3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Z1bmN0aW9uOiAnICsgZnVuY1ZhbHVlLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJnc1RvQ2FsbEY6IGFueVtdID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRzTXVsdGlwbGVBcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzLnNsaWNlKDEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1RvQ2FsbEYucHVzaChjb21tYW5kLmFyZ3NbYXJnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydHNEeW5hbWljQXJncyAmJiBjb21tYW5kLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWxpbWl0ZXIgPSBjb21tYW5kLmFyZ3NbJ2RlbGltaXRlciddIHx8ICcsJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NUb0NhbGxGLnB1c2goLi4uY29tbWFuZC52YWx1ZS5zcGxpdChkZWxpbWl0ZXIpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXJndW1lbnRzIGFmdGVyIHByb2Nlc3Npbmc6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhcmdzVG9DYWxsRiksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRHluYW1pY0FyZ3MgJiYgYXJncy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZ1bmNWYWx1ZSguLi5hcmdzVG9DYWxsRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZ1bmNWYWx1ZShjb21tYW5kLnZhbHVlLCAuLi5hcmdzVG9DYWxsRik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVzdWx0OiAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3csXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4oJ251bGwnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbigndW5kZWZpbmVkJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZWxuKHJlc3VsdC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbihyZXN1bHQudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUpzb24ocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbihyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUpzb24ocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4ocmVzdWx0Py50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucHJvY2Vzcy5vdXRwdXQocmVzdWx0Py50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdyaXRlRGVzY3JpcHRpb246IChjb250ZXh0OiBJQ2xpRXhlY3V0aW9uQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZWxuKGZ1bmMpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoc3VwcG9ydHNEeW5hbWljQXJncykge1xuICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5wYXJhbWV0ZXJzPy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2RlbGltaXRlcicsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGVsaW1pdGVyJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN1cHBvcnRzTXVsdGlwbGVBcmdzKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc29yLnBhcmFtZXRlcnM/LnB1c2goXG4gICAgICAgICAgICAgICAgICAgIC4uLmFyZ3Muc2xpY2UoMSkubWFwKChhcmcpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhcmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYXJnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm9jZXNzb3JzLnB1c2gocHJvY2Vzc29yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcm9jZXNzb3JzO1xuICAgIH1cblxuICAgIHN0YXRpYyBzdXBwb3J0c0R5bmFtaWNBcmdzKGZ1bmM6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmdW5jU3RyID0gZnVuYy50b1N0cmluZygpO1xuICAgICAgICByZXR1cm4gZnVuY1N0ci5pbmNsdWRlcygnYXJndW1lbnRzJyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldEZ1bmN0aW9uQXJndW1lbnRzKGZ1bmM6IGFueSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgZnVuY1N0ciA9IGZ1bmMudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgYXJncyA9IGZ1bmNTdHIubWF0Y2goL1xcKChbXildKilcXCkvKTtcbiAgICAgICAgaWYgKCFhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFyZ3NbMV1cbiAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKChhcmc6IHN0cmluZykgPT4gYXJnLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGFyZzogc3RyaW5nKSA9PiBhcmcgIT09ICcnKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Clears the current line in the terminal, accounting for text that wraps across multiple lines.
|
|
3
|
-
* @param terminal The xterm terminal instance
|
|
4
|
-
* @param contentLength The total visible character count on the line (prompt + text)
|
|
5
|
-
*/
|
|
6
|
-
export const clearTerminalLine = (terminal, contentLength) => {
|
|
7
|
-
const lines = Math.max(1, Math.ceil(contentLength / terminal.cols));
|
|
8
|
-
for (let i = 0; i < lines; i++) {
|
|
9
|
-
terminal.write('\x1b[2K');
|
|
10
|
-
if (i < lines - 1) {
|
|
11
|
-
terminal.write('\x1b[A');
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
terminal.write('\r');
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXRpbHMvdGVybWluYWwtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQzdCLFFBQWtCLEVBQ2xCLGFBQXFCLEVBQ2pCLEVBQUU7SUFDTixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVwRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzVCLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNmLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDNUI7S0FDSjtJQUVELFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVybWluYWwgfSBmcm9tICdAeHRlcm0veHRlcm0nO1xuXG4vKipcbiAqIENsZWFycyB0aGUgY3VycmVudCBsaW5lIGluIHRoZSB0ZXJtaW5hbCwgYWNjb3VudGluZyBmb3IgdGV4dCB0aGF0IHdyYXBzIGFjcm9zcyBtdWx0aXBsZSBsaW5lcy5cbiAqIEBwYXJhbSB0ZXJtaW5hbCBUaGUgeHRlcm0gdGVybWluYWwgaW5zdGFuY2VcbiAqIEBwYXJhbSBjb250ZW50TGVuZ3RoIFRoZSB0b3RhbCB2aXNpYmxlIGNoYXJhY3RlciBjb3VudCBvbiB0aGUgbGluZSAocHJvbXB0ICsgdGV4dClcbiAqL1xuZXhwb3J0IGNvbnN0IGNsZWFyVGVybWluYWxMaW5lID0gKFxuICAgIHRlcm1pbmFsOiBUZXJtaW5hbCxcbiAgICBjb250ZW50TGVuZ3RoOiBudW1iZXIsXG4pOiB2b2lkID0+IHtcbiAgICBjb25zdCBsaW5lcyA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChjb250ZW50TGVuZ3RoIC8gdGVybWluYWwuY29scykpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lczsgaSsrKSB7XG4gICAgICAgIHRlcm1pbmFsLndyaXRlKCdcXHgxYlsySycpO1xuICAgICAgICBpZiAoaSA8IGxpbmVzIC0gMSkge1xuICAgICAgICAgICAgdGVybWluYWwud3JpdGUoJ1xceDFiW0EnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRlcm1pbmFsLndyaXRlKCdcXHInKTtcbn07XG4iXX0=
|
package/esm2022/lib/version.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// Automatically generated during build
|
|
2
|
-
export const LIBRARY_VERSION = '0.0.15';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkdXJpbmcgYnVpbGRcbmV4cG9ydCBjb25zdCBMSUJSQVJZX1ZFUlNJT04gPSAnMC4wLjE1JztcbiAgIl19
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of core
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/models';
|
|
5
|
-
export * from './lib/interfaces';
|
|
6
|
-
export * from './lib/modules';
|
|
7
|
-
export * from './lib/utils';
|
|
8
|
-
export * from './lib/constants';
|
|
9
|
-
export * from './lib/types';
|
|
10
|
-
export * from './lib/themes';
|
|
11
|
-
export * from './lib/version';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixjQUFjLGtCQUFrQixDQUFDO0FBRWpDLGNBQWMsZUFBZSxDQUFDO0FBRTlCLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGNBQWMsaUJBQWlCLENBQUM7QUFFaEMsY0FBYyxhQUFhLENBQUM7QUFFNUIsY0FBYyxjQUFjLENBQUM7QUFFN0IsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGNvcmVcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc3RhbnRzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90aGVtZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi92ZXJzaW9uJztcbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW9kYWxpcy1jbGktY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3FvZGFsaXMtY2xpLWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|