@taiga-ui/addon-doc
Version:
Taiga UI based library for developing documentation portals for Angular libraries.
21 lines • 5.18 kB
JavaScript
export function tuiTypeReferenceParser(types) {
const generics = types.match(/<([^>]+)>/g);
const escaped = generics
? generics
.reduce((result, current) => result.replace(current, current.replaceAll('|', '&')), types)
.split('|')
.map((item) => item.trim())
: types.split('|').map((item) => item.trim());
return escaped.reduce((result, type) => {
let extracted = type.trim().replaceAll('readonly ', '').replaceAll('[]', '');
extracted =
/ReadonlyArray<([^>]+)>/.exec(extracted)?.[1]?.split('&')?.[0] ?? extracted;
extracted = /\[([^\]]+)\]/.exec(extracted)?.[1]?.split(',')?.[0] ?? extracted;
extracted = (extracted.split('<')?.[0] ?? extracted)?.trim() ?? '';
extracted = Number.isNaN(parseFloat(extracted)) ? extracted : 'number';
extracted = /^'(.+)'$|^"(.+)"$|^`(.+)`$/.test(extracted) ? 'string' : extracted;
extracted = extracted.length === 1 ? 'unknown' : extracted;
return result.concat({ type: type.replaceAll('&', '|'), extracted });
}, []);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1yZWZlcmVuY2UtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tZG9jL3V0aWxzL3R5cGUtcmVmZXJlbmNlLXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsc0JBQXNCLENBQUMsS0FBYTtJQUNoRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRTNDLE1BQU0sT0FBTyxHQUFHLFFBQVE7UUFDcEIsQ0FBQyxDQUFDLFFBQVE7YUFDSCxNQUFNLENBQ0gsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFDekQsS0FBSyxDQUNSO2FBQ0EsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFbEQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUE0QixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUM5RCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTdFLFNBQVM7WUFDTCx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDaEYsU0FBUyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDOUUsU0FBUyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNuRSxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDdkUsU0FBUyxHQUFHLDRCQUE0QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEYsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUUzRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVHVpRG9jVHlwZVJlZmVyZW5jZVBhcnNlZCA9IFJlYWRvbmx5QXJyYXk8e3R5cGU6IHN0cmluZzsgZXh0cmFjdGVkOiBzdHJpbmd9PjtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aVR5cGVSZWZlcmVuY2VQYXJzZXIodHlwZXM6IHN0cmluZyk6IFR1aURvY1R5cGVSZWZlcmVuY2VQYXJzZWQge1xuICAgIGNvbnN0IGdlbmVyaWNzID0gdHlwZXMubWF0Y2goLzwoW14+XSspPi9nKTtcblxuICAgIGNvbnN0IGVzY2FwZWQgPSBnZW5lcmljc1xuICAgICAgICA/IGdlbmVyaWNzXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAocmVzdWx0LCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlKGN1cnJlbnQsIGN1cnJlbnQucmVwbGFjZUFsbCgnfCcsICcmJykpLFxuICAgICAgICAgICAgICAgICAgdHlwZXMsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnNwbGl0KCd8JylcbiAgICAgICAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS50cmltKCkpXG4gICAgICAgIDogdHlwZXMuc3BsaXQoJ3wnKS5tYXAoKGl0ZW0pID0+IGl0ZW0udHJpbSgpKTtcblxuICAgIHJldHVybiBlc2NhcGVkLnJlZHVjZTxUdWlEb2NUeXBlUmVmZXJlbmNlUGFyc2VkPigocmVzdWx0LCB0eXBlKSA9PiB7XG4gICAgICAgIGxldCBleHRyYWN0ZWQgPSB0eXBlLnRyaW0oKS5yZXBsYWNlQWxsKCdyZWFkb25seSAnLCAnJykucmVwbGFjZUFsbCgnW10nLCAnJyk7XG5cbiAgICAgICAgZXh0cmFjdGVkID1cbiAgICAgICAgICAgIC9SZWFkb25seUFycmF5PChbXj5dKyk+Ly5leGVjKGV4dHJhY3RlZCk/LlsxXT8uc3BsaXQoJyYnKT8uWzBdID8/IGV4dHJhY3RlZDtcbiAgICAgICAgZXh0cmFjdGVkID0gL1xcWyhbXlxcXV0rKVxcXS8uZXhlYyhleHRyYWN0ZWQpPy5bMV0/LnNwbGl0KCcsJyk/LlswXSA/PyBleHRyYWN0ZWQ7XG4gICAgICAgIGV4dHJhY3RlZCA9IChleHRyYWN0ZWQuc3BsaXQoJzwnKT8uWzBdID8/IGV4dHJhY3RlZCk/LnRyaW0oKSA/PyAnJztcbiAgICAgICAgZXh0cmFjdGVkID0gTnVtYmVyLmlzTmFOKHBhcnNlRmxvYXQoZXh0cmFjdGVkKSkgPyBleHRyYWN0ZWQgOiAnbnVtYmVyJztcbiAgICAgICAgZXh0cmFjdGVkID0gL14nKC4rKSckfF5cIiguKylcIiR8XmAoLispYCQvLnRlc3QoZXh0cmFjdGVkKSA/ICdzdHJpbmcnIDogZXh0cmFjdGVkO1xuICAgICAgICBleHRyYWN0ZWQgPSBleHRyYWN0ZWQubGVuZ3RoID09PSAxID8gJ3Vua25vd24nIDogZXh0cmFjdGVkO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQuY29uY2F0KHt0eXBlOiB0eXBlLnJlcGxhY2VBbGwoJyYnLCAnfCcpLCBleHRyYWN0ZWR9KTtcbiAgICB9LCBbXSk7XG59XG4iXX0=