@qodalis/cli-core
Version:
Core Angular CLI for @qodalis extensions.
77 lines • 11.6 kB
JavaScript
import { CliBackgroundColor, CliForegroundColor } from '../models';
import { delay } from './delay';
import { ObjectDescriber } from './object-describer';
export const getParameterValue = (p, args) => {
return (args[p.name] ??
(p.aliases?.find((alias) => args[alias]) &&
args[p.aliases.find((alias) => args[alias])]));
};
export const formatJson = (json) => {
const identedJson = JSON.stringify(json, null, 2);
return colorizeJson(identedJson.split('\n').join('\r\n'));
};
export const colorizeJson = (jsonString) => {
return jsonString
.replace(/"([^"]+)":/g, '\x1b[33m"$1":\x1b[0m') // Keys (yellow)
.replace(/: "([^"]*)"/g, ': \x1b[32m"$1"\x1b[0m') // Strings (green)
.replace(/: (\d+)/g, ': \x1b[34m$1\x1b[0m') // Numbers (blue)
.replace(/: (true|false)/g, ': \x1b[35m$1\x1b[0m') // Booleans (magenta)
.replace(/: (null)/g, ': \x1b[36m$1\x1b[0m'); // Null (cyan)
};
export const toQueryString = (params) => {
const searchParams = new URLSearchParams();
for (const key in params) {
if (params.hasOwnProperty(key)) {
const value = params[key];
// Handle array and non-primitive values
if (Array.isArray(value)) {
value.forEach((v) => searchParams.append(key, v.toString()));
}
else if (value !== null && value !== undefined) {
searchParams.append(key, value.toString());
}
}
}
return searchParams.toString();
};
export const highlightTextWithBg = (text, pattern, bgColor = CliBackgroundColor.Yellow) => {
// Replace matches with background-colored text
return text.replace(pattern, (match) => `${bgColor}${match}${CliForegroundColor.Reset}`);
};
export const getRightOfWord = (command, word) => {
// Find the position of the word in the command
const index = command.indexOf(word);
// If the word is found, extract the substring to the right
if (index !== -1) {
return command.slice(index + word.length).trim();
}
// If the word is not found, return null
return undefined;
};
export const colorFirstWord = (text, colorFunction) => {
if (!text)
return text;
// Match leading spaces and first word separately
const match = text.match(/^(\s*)(\S+)(.*)$/);
if (!match)
return text; // If no match, return original text
const [, leadingSpaces, firstWord, restOfText] = match;
// Apply color only to the first word
const firstWordColored = colorFunction(firstWord);
// Reconstruct string: Keep spaces, color first word, and append rest
return `${leadingSpaces}${firstWordColored}${restOfText}`;
};
export * from './object-describer';
export * from './delay';
export const utils = {
getParameterValue,
formatJson,
colorizeJson,
toQueryString,
highlightTextWithBg,
getRightOfWord,
colorFirstWord,
ObjectDescriber,
delay,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQzdCLENBQWlDLEVBQ2pDLElBQXlCLEVBQ1YsRUFBRTtJQUNqQixPQUFPLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQ3RELENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFTLEVBQVUsRUFBRTtJQUM1QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFbEQsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxVQUFlLEVBQVUsRUFBRTtJQUNwRCxPQUFPLFVB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YUFBYSxHQUFHLGdCQUFnQixHQUFHLFVBQVUsRUFBRSxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsY0FBYyxTQUFTLENBQUM7QUFFeEIsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ2pCLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsWUFBWTtJQUNaLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2YsS0FBSztDQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2xpQ29tbWFuZFBhcmFtZXRlckRlc2NyaXB0b3IgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENsaUJhY2tncm91bmRDb2xvciwgQ2xpRm9yZWdyb3VuZENvbG9yIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi9kZWxheSc7XG5pbXBvcnQgeyBPYmplY3REZXNjcmliZXIgfSBmcm9tICcuL29iamVjdC1kZXNjcmliZXInO1xuXG5leHBvcnQgY29uc3QgZ2V0UGFyYW1ldGVyVmFsdWUgPSAoXG4gICAgcDogSUNsaUNvbW1hbmRQYXJhbWV0ZXJEZXNjcmlwdG9yLFxuICAgIGFyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pOiBhbnkgfCB1bmRlZmluZWQgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIGFyZ3NbcC5uYW1lXSA/P1xuICAgICAgICAocC5hbGlhc2VzPy5maW5kKChhbGlhcykgPT4gYXJnc1thbGlhc10pICYmXG4gICAgICAgICAgICBhcmdzW3AuYWxpYXNlcyEuZmluZCgoYWxpYXMpID0+IGFyZ3NbYWxpYXNdKSFdKVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0SnNvbiA9IChqc29uOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGlkZW50ZWRKc29uID0gSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMik7XG5cbiAgICByZXR1cm4gY29sb3JpemVKc29uKGlkZW50ZWRKc29uLnNwbGl0KCdcXG4nKS5qb2luKCdcXHJcXG4nKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29sb3JpemVKc29uID0gKGpzb25TdHJpbmc6IGFueSk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIGpzb25TdHJpbmdcbiAgICAgICAgLnJlcGxhY2UoL1wiKFteXCJdKylcIjovZywgJ1xceDFiWzMzbVwiJDFcIjpcXHgxYlswbScpIC8vIEtleXMgKHllbGxvdylcbiAgICAgICAgLnJlcGxhY2UoLzogXCIoW15cIl0qKVwiL2csICc6IFxceDFiWzMybVwiJDFcIlxceDFiWzBtJykgLy8gU3RyaW5ncyAoZ3JlZW4pXG4gICAgICAgIC5yZXBsYWNlKC86IChcXGQrKS9nLCAnOiBcXHgxYlszNG0kMVxceDFiWzBtJykgLy8gTnVtYmVycyAoYmx1ZSlcbiAgICAgICAgLnJlcGxhY2UoLzogKHRydWV8ZmFsc2UpL2csICc6IFxceDFiWzM1bSQxXFx4MWJbMG0nKSAvLyBCb29sZWFucyAobWFnZW50YSlcbiAgICAgICAgLnJlcGxhY2UoLzogKG51bGwpL2csICc6IFxceDFiWzM2bSQxXFx4MWJbMG0nKTsgLy8gTnVsbCAoY3lhbilcbn07XG5cbmV4cG9ydCBjb25zdCB0b1F1ZXJ5U3RyaW5nID0gKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyA9PiB7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XG4gICAgICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbXNba2V5XTtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhcnJheSBhbmQgbm9uLXByaW1pdGl2ZSB2YWx1ZXNcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHYpID0+IHNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCB2LnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzZWFyY2hQYXJhbXMudG9TdHJpbmcoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoaWdobGlnaHRUZXh0V2l0aEJnID0gKFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBwYXR0ZXJuOiBSZWdFeHAsXG4gICAgYmdDb2xvcjogQ2xpQmFja2dyb3VuZENvbG9yID0gQ2xpQmFja2dyb3VuZENvbG9yLlllbGxvdyxcbik6IHN0cmluZyA9PiB7XG4gICAgLy8gUmVwbGFjZSBtYXRjaGVzIHdpdGggYmFja2dyb3VuZC1jb2xvcmVkIHRleHRcbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKFxuICAgICAgICBwYXR0ZXJuLFxuICAgICAgICAobWF0Y2gpID0+IGAke2JnQ29sb3J9JHttYXRjaH0ke0NsaUZvcmVncm91bmRDb2xvci5SZXNldH1gLFxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmlnaHRPZldvcmQgPSAoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIHdvcmQ6IHN0cmluZyxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgLy8gRmluZCB0aGUgcG9zaXRpb24gb2YgdGhlIHdvcmQgaW4gdGhlIGNvbW1hbmRcbiAgICBjb25zdCBpbmRleCA9IGNvbW1hbmQuaW5kZXhPZih3b3JkKTtcblxuICAgIC8vIElmIHRoZSB3b3JkIGlzIGZvdW5kLCBleHRyYWN0IHRoZSBzdWJzdHJpbmcgdG8gdGhlIHJpZ2h0XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gY29tbWFuZC5zbGljZShpbmRleCArIHdvcmQubGVuZ3RoKS50cmltKCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHdvcmQgaXMgbm90IGZvdW5kLCByZXR1cm4gbnVsbFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgY29sb3JGaXJzdFdvcmQgPSAoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIGNvbG9yRnVuY3Rpb246ICh3b3JkOiBzdHJpbmcpID0+IHN0cmluZyxcbikgPT4ge1xuICAgIGlmICghdGV4dCkgcmV0dXJuIHRleHQ7XG5cbiAgICAvLyBNYXRjaCBsZWFkaW5nIHNwYWNlcyBhbmQgZmlyc3Qgd29yZCBzZXBhcmF0ZWx5XG4gICAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eKFxccyopKFxcUyspKC4qKSQvKTtcblxuICAgIGlmICghbWF0Y2gpIHJldHVybiB0ZXh0OyAvLyBJZiBubyBtYXRjaCwgcmV0dXJuIG9yaWdpbmFsIHRleHRcblxuICAgIGNvbnN0IFssIGxlYWRpbmdTcGFjZXMsIGZpcnN0V29yZCwgcmVzdE9mVGV4dF0gPSBtYXRjaDtcblxuICAgIC8vIEFwcGx5IGNvbG9yIG9ubHkgdG8gdGhlIGZpcnN0IHdvcmRcbiAgICBjb25zdCBmaXJzdFdvcmRDb2xvcmVkID0gY29sb3JGdW5jdGlvbihmaXJzdFdvcmQpO1xuXG4gICAgLy8gUmVjb25zdHJ1Y3Qgc3RyaW5nOiBLZWVwIHNwYWNlcywgY29sb3IgZmlyc3Qgd29yZCwgYW5kIGFwcGVuZCByZXN0XG4gICAgcmV0dXJuIGAke2xlYWRpbmdTcGFjZXN9JHtmaXJzdFdvcmRDb2xvcmVkfSR7cmVzdE9mVGV4dH1gO1xufTtcblxuZXhwb3J0ICogZnJvbSAnLi9vYmplY3QtZGVzY3JpYmVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9kZWxheSc7XG5cbmV4cG9ydCBjb25zdCB1dGlscyA9IHtcbiAgICBnZXRQYXJhbWV0ZXJWYWx1ZSxcbiAgICBmb3JtYXRKc29uLFxuICAgIGNvbG9yaXplSnNvbixcbiAgICB0b1F1ZXJ5U3RyaW5nLFxuICAgIGhpZ2hsaWdodFRleHRXaXRoQmcsXG4gICAgZ2V0UmlnaHRPZldvcmQsXG4gICAgY29sb3JGaXJzdFdvcmQsXG4gICAgT2JqZWN0RGVzY3JpYmVyLFxuICAgIGRlbGF5LFxufTtcbiJdfQ==