@qodalis/cli-core 0.0.16 → 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 -81
- package/esm2022/lib/utils/object-describer.mjs +0 -134
- package/esm2022/lib/utils/terminal-utils.mjs +0 -16
- package/esm2022/lib/utils/version-utils.mjs +0 -25
- 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 -722
- 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 -303
- 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 -25
- package/lib/utils/object-describer.d.ts +0 -12
- package/lib/utils/terminal-utils.d.ts +0 -7
- package/lib/utils/version-utils.d.ts +0 -9
- 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,81 +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 * from './version-utils';
|
|
70
|
-
export const utils = {
|
|
71
|
-
getParameterValue,
|
|
72
|
-
formatJson,
|
|
73
|
-
colorizeJson,
|
|
74
|
-
toQueryString,
|
|
75
|
-
highlightTextWithBg,
|
|
76
|
-
getRightOfWord,
|
|
77
|
-
colorFirstWord,
|
|
78
|
-
ObjectDescriber,
|
|
79
|
-
delay,
|
|
80
|
-
};
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQzdCLENBQWlDLEVBQ2pDLElBQXlCLEVBQ1YsRUFBRTtJQUNqQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1FBQzVCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN2QjtJQUNELE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDM0UsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVMsRUFBVSxFQUFFO0lBQzVDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVsRCxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxN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QUMsU0FBUyxDQUFDLENBQUM7SUFFbEQscUVBQXFFO0lBQ3JFLE9BQU8sR0FBRyxhQUFhLEdBQUcsZ0JBQWdCLEdBQUcsVUFBVSxFQUFFLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsY0FBYyxvQkFBb0IsQ0FBQztBQUVuQyxjQUFjLFNBQVMsQ0FBQztBQUV4QixjQUFjLGtCQUFrQixDQUFDO0FBRWpDLGNBQWMsaUJBQWlCLENBQUM7QUFFaEMsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ2pCLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsWUFBWTtJQUNaLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2YsS0FBSztDQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2xpQ29tbWFuZFBhcmFtZXRlckRlc2NyaXB0b3IgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENsaUJhY2tncm91bmRDb2xvciwgQ2xpRm9yZWdyb3VuZENvbG9yIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi9kZWxheSc7XG5pbXBvcnQgeyBPYmplY3REZXNjcmliZXIgfSBmcm9tICcuL29iamVjdC1kZXNjcmliZXInO1xuXG5leHBvcnQgY29uc3QgZ2V0UGFyYW1ldGVyVmFsdWUgPSAoXG4gICAgcDogSUNsaUNvbW1hbmRQYXJhbWV0ZXJEZXNjcmlwdG9yLFxuICAgIGFyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pOiBhbnkgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChhcmdzW3AubmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gYXJnc1twLm5hbWVdO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaGVkQWxpYXMgPSBwLmFsaWFzZXM/LmZpbmQoKGFsaWFzKSA9PiBhcmdzW2FsaWFzXSAhPT0gdW5kZWZpbmVkKTtcbiAgICByZXR1cm4gbWF0Y2hlZEFsaWFzID8gYXJnc1ttYXRjaGVkQWxpYXNdIDogdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEpzb24gPSAoanNvbjogYW55KTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBpZGVudGVkSnNvbiA9IEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpO1xuXG4gICAgcmV0dXJuIGNvbG9yaXplSnNvbihpZGVudGVkSnNvbi5zcGxpdCgnXFxuJykuam9pbignXFxyXFxuJykpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbG9yaXplSnNvbiA9IChqc29uU3RyaW5nOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiBqc29uU3RyaW5nXG4gICAgICAgIC5yZXBsYWNlKC9cIihbXlwiXSspXCI6L2csICdcXHgxYlszM21cIiQxXCI6XFx4MWJbMG0nKSAvLyBLZXlzICh5ZWxsb3cpXG4gICAgICAgIC5yZXBsYWNlKC86IFwiKFteXCJdKilcIi9nLCAnOiBcXHgxYlszMm1cIiQxXCJcXHgxYlswbScpIC8vIFN0cmluZ3MgKGdyZWVuKVxuICAgICAgICAucmVwbGFjZSgvOiAoXFxkKykvZywgJzogXFx4MWJbMzRtJDFcXHgxYlswbScpIC8vIE51bWJlcnMgKGJsdWUpXG4gICAgICAgIC5yZXBsYWNlKC86ICh0cnVlfGZhbHNlKS9nLCAnOiBcXHgxYlszNW0kMVxceDFiWzBtJykgLy8gQm9vbGVhbnMgKG1hZ2VudGEpXG4gICAgICAgIC5yZXBsYWNlKC86IChudWxsKS9nLCAnOiBcXHgxYlszNm0kMVxceDFiWzBtJyk7IC8vIE51bGwgKGN5YW4pXG59O1xuXG5leHBvcnQgY29uc3QgdG9RdWVyeVN0cmluZyA9IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHBhcmFtcykge1xuICAgICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zW2tleV07XG4gICAgICAgICAgICAvLyBIYW5kbGUgYXJyYXkgYW5kIG5vbi1wcmltaXRpdmUgdmFsdWVzXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiBzZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgdi50b1N0cmluZygpKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2VhcmNoUGFyYW1zLnRvU3RyaW5nKCk7XG59O1xuXG5leHBvcnQgY29uc3QgaGlnaGxpZ2h0VGV4dFdpdGhCZyA9IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgcGF0dGVybjogUmVnRXhwLFxuICAgIGJnQ29sb3I6IENsaUJhY2tncm91bmRDb2xvciA9IENsaUJhY2tncm91bmRDb2xvci5ZZWxsb3csXG4pOiBzdHJpbmcgPT4ge1xuICAgIC8vIFJlcGxhY2UgbWF0Y2hlcyB3aXRoIGJhY2tncm91bmQtY29sb3JlZCB0ZXh0XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShcbiAgICAgICAgcGF0dGVybixcbiAgICAgICAgKG1hdGNoKSA9PiBgJHtiZ0NvbG9yfSR7bWF0Y2h9JHtDbGlGb3JlZ3JvdW5kQ29sb3IuUmVzZXR9YCxcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJpZ2h0T2ZXb3JkID0gKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICB3b3JkOiBzdHJpbmcsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICAgIC8vIEZpbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSB3b3JkIGluIHRoZSBjb21tYW5kXG4gICAgY29uc3QgaW5kZXggPSBjb21tYW5kLmluZGV4T2Yod29yZCk7XG5cbiAgICAvLyBJZiB0aGUgd29yZCBpcyBmb3VuZCwgZXh0cmFjdCB0aGUgc3Vic3RyaW5nIHRvIHRoZSByaWdodFxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGNvbW1hbmQuc2xpY2UoaW5kZXggKyB3b3JkLmxlbmd0aCkudHJpbSgpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSB3b3JkIGlzIG5vdCBmb3VuZCwgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbG9yRmlyc3RXb3JkID0gKFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBjb2xvckZ1bmN0aW9uOiAod29yZDogc3RyaW5nKSA9PiBzdHJpbmcsXG4pID0+IHtcbiAgICBpZiAoIXRleHQpIHJldHVybiB0ZXh0O1xuXG4gICAgLy8gTWF0Y2ggbGVhZGluZyBzcGFjZXMgYW5kIGZpcnN0IHdvcmQgc2VwYXJhdGVseVxuICAgIGNvbnN0IG1hdGNoID0gdGV4dC5tYXRjaCgvXihcXHMqKShcXFMrKSguKikkLyk7XG5cbiAgICBpZiAoIW1hdGNoKSByZXR1cm4gdGV4dDsgLy8gSWYgbm8gbWF0Y2gsIHJldHVybiBvcmlnaW5hbCB0ZXh0XG5cbiAgICBjb25zdCBbLCBsZWFkaW5nU3BhY2VzLCBmaXJzdFdvcmQsIHJlc3RPZlRleHRdID0gbWF0Y2g7XG5cbiAgICAvLyBBcHBseSBjb2xvciBvbmx5IHRvIHRoZSBmaXJzdCB3b3JkXG4gICAgY29uc3QgZmlyc3RXb3JkQ29sb3JlZCA9IGNvbG9yRnVuY3Rpb24oZmlyc3RXb3JkKTtcblxuICAgIC8vIFJlY29uc3RydWN0IHN0cmluZzogS2VlcCBzcGFjZXMsIGNvbG9yIGZpcnN0IHdvcmQsIGFuZCBhcHBlbmQgcmVzdFxuICAgIHJldHVybiBgJHtsZWFkaW5nU3BhY2VzfSR7Zmlyc3RXb3JkQ29sb3JlZH0ke3Jlc3RPZlRleHR9YDtcbn07XG5cbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0LWRlc2NyaWJlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGVsYXknO1xuXG5leHBvcnQgKiBmcm9tICcuL3Rlcm1pbmFsLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uLXV0aWxzJztcblxuZXhwb3J0IGNvbnN0IHV0aWxzID0ge1xuICAgIGdldFBhcmFtZXRlclZhbHVlLFxuICAgIGZvcm1hdEpzb24sXG4gICAgY29sb3JpemVKc29uLFxuICAgIHRvUXVlcnlTdHJpbmcsXG4gICAgaGlnaGxpZ2h0VGV4dFdpdGhCZyxcbiAgICBnZXRSaWdodE9mV29yZCxcbiAgICBjb2xvckZpcnN0V29yZCxcbiAgICBPYmplY3REZXNjcmliZXIsXG4gICAgZGVsYXksXG59O1xuIl19
|
|
@@ -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=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compares two dotted version strings (e.g. "1.0.37" vs "0.0.16").
|
|
3
|
-
* Returns -1 if a < b, 0 if equal, 1 if a > b.
|
|
4
|
-
*/
|
|
5
|
-
export function compareVersions(a, b) {
|
|
6
|
-
const partsA = a.split('.').map(Number);
|
|
7
|
-
const partsB = b.split('.').map(Number);
|
|
8
|
-
const length = Math.max(partsA.length, partsB.length);
|
|
9
|
-
for (let i = 0; i < length; i++) {
|
|
10
|
-
const numA = partsA[i] || 0;
|
|
11
|
-
const numB = partsB[i] || 0;
|
|
12
|
-
if (numA < numB)
|
|
13
|
-
return -1;
|
|
14
|
-
if (numA > numB)
|
|
15
|
-
return 1;
|
|
16
|
-
}
|
|
17
|
-
return 0;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Returns true if the installed version satisfies the minimum required version.
|
|
21
|
-
*/
|
|
22
|
-
export function satisfiesMinVersion(installed, required) {
|
|
23
|
-
return compareVersions(installed, required) >= 0;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi91dGlscy92ZXJzaW9uLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV0RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixJQUFJLElBQUksR0FBRyxJQUFJO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzQixJQUFJLElBQUksR0FBRyxJQUFJO1lBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7SUFFRCxPQUFPLENBQUMsQ0FBQztBQUNiLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsU0FBaUIsRUFDakIsUUFBZ0I7SUFFaEIsT0FBTyxlQUFlLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21wYXJlcyB0d28gZG90dGVkIHZlcnNpb24gc3RyaW5ncyAoZS5nLiBcIjEuMC4zN1wiIHZzIFwiMC4wLjE2XCIpLlxuICogUmV0dXJucyAtMSBpZiBhIDwgYiwgMCBpZiBlcXVhbCwgMSBpZiBhID4gYi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVWZXJzaW9ucyhhOiBzdHJpbmcsIGI6IHN0cmluZyk6IC0xIHwgMCB8IDEge1xuICAgIGNvbnN0IHBhcnRzQSA9IGEuc3BsaXQoJy4nKS5tYXAoTnVtYmVyKTtcbiAgICBjb25zdCBwYXJ0c0IgPSBiLnNwbGl0KCcuJykubWFwKE51bWJlcik7XG4gICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgocGFydHNBLmxlbmd0aCwgcGFydHNCLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG51bUEgPSBwYXJ0c0FbaV0gfHwgMDtcbiAgICAgICAgY29uc3QgbnVtQiA9IHBhcnRzQltpXSB8fCAwO1xuXG4gICAgICAgIGlmIChudW1BIDwgbnVtQikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAobnVtQSA+IG51bUIpIHJldHVybiAxO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgaW5zdGFsbGVkIHZlcnNpb24gc2F0aXNmaWVzIHRoZSBtaW5pbXVtIHJlcXVpcmVkIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYXRpc2ZpZXNNaW5WZXJzaW9uKFxuICAgIGluc3RhbGxlZDogc3RyaW5nLFxuICAgIHJlcXVpcmVkOiBzdHJpbmcsXG4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29tcGFyZVZlcnNpb25zKGluc3RhbGxlZCwgcmVxdWlyZWQpID49IDA7XG59XG4iXX0=
|
package/esm2022/lib/version.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// Automatically generated during build
|
|
2
|
-
export const LIBRARY_VERSION = '0.0.16';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkdXJpbmcgYnVpbGRcbmV4cG9ydCBjb25zdCBMSUJSQVJZX1ZFUlNJT04gPSAnMC4wLjE2JztcbiAgIl19
|
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==
|