@taiga-ui/addon-doc
Version:
Taiga UI based library for developing documentation portals for Angular libraries.
43 lines • 5.35 kB
JavaScript
function isEmptyParamValue(value) {
return ['NaN', 'null', 'undefined'].includes(value);
}
function isBooleanParamValue(value) {
return value === 'true' || value === 'false';
}
function isNumberParamValue(value) {
return (!!String(value).trim() &&
!Number.isNaN(Number(value)) &&
!String(value).startsWith('+'));
}
function isPossibleArray(value) {
return value.startsWith('[') && value.endsWith(']');
}
function isPossibleObject(value) {
return value.startsWith('{') && value.endsWith('}');
}
export function tuiCoerceValue(value) {
const prepared = String(value).trim();
if (isEmptyParamValue(prepared)) {
return null;
}
if (isBooleanParamValue(prepared)) {
return String(prepared) === 'true';
}
if (isNumberParamValue(prepared)) {
return Number(prepared);
}
if (prepared === '%') {
// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#exceptions
return prepared;
}
const decodedValue = decodeURIComponent(prepared);
try {
return isPossibleArray(decodedValue) || isPossibleObject(decodedValue)
? JSON.parse(decodedValue)
: decodedValue;
}
catch {
return decodedValue;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlLXZhbHVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tZG9jL3V0aWxzL2NvZXJjZS12YWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLGlCQUFpQixDQUFDLEtBQWE7SUFDcEMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLEtBQWM7SUFDdkMsT0FBTyxLQUFLLEtBQUssTUFBTSxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUM7QUFDakQsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsS0FBYztJQUN0QyxPQUFPLENBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUU7UUFDdEIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQ2pDLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBYTtJQUNsQyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFhO0lBQ25DLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUMxQixLQUFTO0lBRVQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRXRDLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDN0IsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELElBQUksbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDL0IsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssTUFBTSxDQUFDO0tBQ3RDO0lBRUQsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUM5QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUMzQjtJQUVELElBQUksUUFBUSxLQUFLLEdBQUcsRUFBRTtRQUNsQiwyR0FBMkc7UUFDM0csT0FBTyxRQUFRLENBQUM7S0FDbkI7SUFFRCxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVsRCxJQUFJO1FBQ0EsT0FBTyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksZ0JBQWdCLENBQUMsWUFBWSxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUMxQixDQUFDLENBQUMsWUFBWSxDQUFDO0tBQ3RCO0lBQUMsTUFBTTtRQUNKLE9BQU8sWUFBWSxDQUFDO0tBQ3ZCO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGlzRW1wdHlQYXJhbVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gWydOYU4nLCAnbnVsbCcsICd1bmRlZmluZWQnXS5pbmNsdWRlcyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzQm9vbGVhblBhcmFtVmFsdWUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJ2ZhbHNlJztcbn1cblxuZnVuY3Rpb24gaXNOdW1iZXJQYXJhbVZhbHVlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgISFTdHJpbmcodmFsdWUpLnRyaW0oKSAmJlxuICAgICAgICAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpICYmXG4gICAgICAgICFTdHJpbmcodmFsdWUpLnN0YXJ0c1dpdGgoJysnKVxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGlzUG9zc2libGVBcnJheSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlLnN0YXJ0c1dpdGgoJ1snKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXScpO1xufVxuXG5mdW5jdGlvbiBpc1Bvc3NpYmxlT2JqZWN0KHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUuc3RhcnRzV2l0aCgneycpICYmIHZhbHVlLmVuZHNXaXRoKCd9Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlDb2VyY2VWYWx1ZTxUPihcbiAgICB2YWx1ZT86IFQsXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgVCB8IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBwcmVwYXJlZCA9IFN0cmluZyh2YWx1ZSkudHJpbSgpO1xuXG4gICAgaWYgKGlzRW1wdHlQYXJhbVZhbHVlKHByZXBhcmVkKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaXNCb29sZWFuUGFyYW1WYWx1ZShwcmVwYXJlZCkpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhwcmVwYXJlZCkgPT09ICd0cnVlJztcbiAgICB9XG5cbiAgICBpZiAoaXNOdW1iZXJQYXJhbVZhbHVlKHByZXBhcmVkKSkge1xuICAgICAgICByZXR1cm4gTnVtYmVyKHByZXBhcmVkKTtcbiAgICB9XG5cbiAgICBpZiAocHJlcGFyZWQgPT09ICclJykge1xuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9kZWNvZGVVUklDb21wb25lbnQjZXhjZXB0aW9uc1xuICAgICAgICByZXR1cm4gcHJlcGFyZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjb2RlZFZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHByZXBhcmVkKTtcblxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBpc1Bvc3NpYmxlQXJyYXkoZGVjb2RlZFZhbHVlKSB8fCBpc1Bvc3NpYmxlT2JqZWN0KGRlY29kZWRWYWx1ZSlcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShkZWNvZGVkVmFsdWUpXG4gICAgICAgICAgICA6IGRlY29kZWRWYWx1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGRlY29kZWRWYWx1ZTtcbiAgICB9XG59XG4iXX0=