UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

53 lines 6.61 kB
/** * Obfuscates a string by replacing certain characters with a symbol. * * @param value the input string to obfuscate * @param symbol the symbol for obfuscation * @return the obfuscated string * * The function determines which characters to obfuscate using a regular expression and the string's length: * - 8 or more: show first 2 and last 2 characters * - 4 to 7: show first and last character * - less than 4: obfuscate all characters * - obfuscates only alphanumeric characters */ export function tuiObfuscate(value, symbol) { if (!value) { return value; } const match = /[\p{L}\p{N}]/gu; let visible = 0; let obfuscateIndexes = getObfuscateIndexes(value, match); if (obfuscateIndexes.length >= 8) { visible = 2; } else if (obfuscateIndexes.length >= 4) { visible = 1; } obfuscateIndexes = obfuscateIndexes.slice(visible, obfuscateIndexes.length); const lastIndex = (obfuscateIndexes.length) - visible; obfuscateIndexes = obfuscateIndexes.slice(0, lastIndex < 0 ? 0 : lastIndex); const result = value.split(''); obfuscateIndexes.forEach((index) => { result[index] = symbol; }); return result.join(''); } function getObfuscateIndexes(value, match) { if (!match) { return Array.from({ length: value.length }).map((_, index) => index); } const obfuscateIndexes = []; let matchResult; let count = 0; while ((matchResult = match.exec(value)) !== null && count < value.length) { const start = matchResult.index; const end = match.lastIndex - 1; for (let i = start; i <= end; i++) { obfuscateIndexes.push(i); } count++; } return obfuscateIndexes; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JmdXNjYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMvb2JmdXNjYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYSxFQUFFLE1BQWM7SUFDdEQsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNSLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBRUQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUM7SUFFL0IsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLElBQUksZ0JBQWdCLEdBQWEsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRW5FLElBQUksZ0JBQWdCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUM5QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2Y7U0FBTSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7UUFDckMsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNmO0lBRUQsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU1RSxNQUFNLFNBQVMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQXVCLENBQUMsR0FBRyxPQUFPLENBQUM7SUFFdkUsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTVFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFL0IsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDL0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUFhLEVBQUUsS0FBYztJQUN0RCxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RFO0lBRUQsTUFBTSxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFDdEMsSUFBSSxXQUFXLENBQUM7SUFDaEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBRWQsT0FBTyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ3ZFLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDaEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFFaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMvQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUI7UUFFRCxLQUFLLEVBQUUsQ0FBQztLQUNYO0lBRUQsT0FBTyxnQkFBZ0IsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPYmZ1c2NhdGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBjZXJ0YWluIGNoYXJhY3RlcnMgd2l0aCBhIHN5bWJvbC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgdGhlIGlucHV0IHN0cmluZyB0byBvYmZ1c2NhdGVcbiAqIEBwYXJhbSBzeW1ib2wgdGhlIHN5bWJvbCBmb3Igb2JmdXNjYXRpb25cbiAqIEByZXR1cm4gdGhlIG9iZnVzY2F0ZWQgc3RyaW5nXG4gKlxuICogVGhlIGZ1bmN0aW9uIGRldGVybWluZXMgd2hpY2ggY2hhcmFjdGVycyB0byBvYmZ1c2NhdGUgdXNpbmcgYSByZWd1bGFyIGV4cHJlc3Npb24gYW5kIHRoZSBzdHJpbmcncyBsZW5ndGg6XG4gKiAtIDggb3IgbW9yZTogc2hvdyBmaXJzdCAyIGFuZCBsYXN0IDIgY2hhcmFjdGVyc1xuICogLSA0IHRvIDc6IHNob3cgZmlyc3QgYW5kIGxhc3QgY2hhcmFjdGVyXG4gKiAtIGxlc3MgdGhhbiA0OiBvYmZ1c2NhdGUgYWxsIGNoYXJhY3RlcnNcbiAqIC0gb2JmdXNjYXRlcyBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0dWlPYmZ1c2NhdGUodmFsdWU6IHN0cmluZywgc3ltYm9sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoID0gL1tcXHB7TH1cXHB7Tn1dL2d1O1xuXG4gICAgbGV0IHZpc2libGUgPSAwO1xuICAgIGxldCBvYmZ1c2NhdGVJbmRleGVzOiBudW1iZXJbXSA9IGdldE9iZnVzY2F0ZUluZGV4ZXModmFsdWUsIG1hdGNoKTtcblxuICAgIGlmIChvYmZ1c2NhdGVJbmRleGVzLmxlbmd0aCA+PSA4KSB7XG4gICAgICAgIHZpc2libGUgPSAyO1xuICAgIH0gZWxzZSBpZiAob2JmdXNjYXRlSW5kZXhlcy5sZW5ndGggPj0gNCkge1xuICAgICAgICB2aXNpYmxlID0gMTtcbiAgICB9XG5cbiAgICBvYmZ1c2NhdGVJbmRleGVzID0gb2JmdXNjYXRlSW5kZXhlcy5zbGljZSh2aXNpYmxlLCBvYmZ1c2NhdGVJbmRleGVzLmxlbmd0aCk7XG5cbiAgICBjb25zdCBsYXN0SW5kZXggPSAob2JmdXNjYXRlSW5kZXhlcy5sZW5ndGggc2F0aXNmaWVzIG51bWJlcikgLSB2aXNpYmxlO1xuXG4gICAgb2JmdXNjYXRlSW5kZXhlcyA9IG9iZnVzY2F0ZUluZGV4ZXMuc2xpY2UoMCwgbGFzdEluZGV4IDwgMCA/IDAgOiBsYXN0SW5kZXgpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gdmFsdWUuc3BsaXQoJycpO1xuXG4gICAgb2JmdXNjYXRlSW5kZXhlcy5mb3JFYWNoKChpbmRleCkgPT4ge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gc3ltYm9sO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0T2JmdXNjYXRlSW5kZXhlcyh2YWx1ZTogc3RyaW5nLCBtYXRjaD86IFJlZ0V4cCk6IG51bWJlcltdIHtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6IHZhbHVlLmxlbmd0aH0pLm1hcCgoXywgaW5kZXgpID0+IGluZGV4KTtcbiAgICB9XG5cbiAgICBjb25zdCBvYmZ1c2NhdGVJbmRleGVzOiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBtYXRjaFJlc3VsdDtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgd2hpbGUgKChtYXRjaFJlc3VsdCA9IG1hdGNoLmV4ZWModmFsdWUpKSAhPT0gbnVsbCAmJiBjb3VudCA8IHZhbHVlLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IG1hdGNoUmVzdWx0LmluZGV4O1xuICAgICAgICBjb25zdCBlbmQgPSBtYXRjaC5sYXN0SW5kZXggLSAxO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgICAgICAgb2JmdXNjYXRlSW5kZXhlcy5wdXNoKGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gb2JmdXNjYXRlSW5kZXhlcztcbn1cbiJdfQ==