vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
54 lines (52 loc) • 2 kB
JavaScript
exports.__esModule = true;
exports.DesensitizeStrategy = void 0;
exports.desensitize = desensitize;
var DesensitizeStrategy = exports.DesensitizeStrategy = /*#__PURE__*/function (DesensitizeStrategy) {
DesensitizeStrategy["CHINESE_NAME"] = "CHINESE_NAME";
DesensitizeStrategy["CHINESE_ID_CARD_NUMBER"] = "CHINESE_ID_CARD_NUMBER";
DesensitizeStrategy["CHINESE_MOBILE_PHONE_NUMBER"] = "CHINESE_MOBILE_PHONE_NUMBER";
DesensitizeStrategy["EMAIL"] = "EMAIL";
return DesensitizeStrategy;
}({});
function replace(text, start, end, replacer) {
var res = text.substring(0, start);
for (var i = start; i < end; i++) {
res += replacer;
}
res += text.substring(end);
return res;
}
/**
* 文本脱敏。
*
* @param text 待脱敏的文本
* @param options 脱敏选项
*/
function desensitize(text, options) {
var _options$replacer, _options;
if (options === void 0) {
options = {};
}
if (!text) return text;
var replacer = (_options$replacer = (_options = options) == null ? void 0 : _options.replacer) != null ? _options$replacer : '*';
if (options.strategy) {
if (options.strategy === DesensitizeStrategy.CHINESE_NAME) {
return replace(text, 1, text.length, replacer);
}
if (options.strategy === DesensitizeStrategy.CHINESE_ID_CARD_NUMBER) {
return replace(text, 1, text.length - 2, replacer);
}
if (options.strategy === DesensitizeStrategy.CHINESE_MOBILE_PHONE_NUMBER) {
return replace(text, 3, text.length - 4, replacer);
}
if (options.strategy === DesensitizeStrategy.EMAIL) {
return replace(text, 1, text.indexOf('@'), replacer);
}
}
if (options.preKeep != null || options.postKeep != null) {
var _options$preKeep, _options$postKeep;
return replace(text, (_options$preKeep = options.preKeep) != null ? _options$preKeep : 0, text.length - ((_options$postKeep = options.postKeep) != null ? _options$postKeep : 0), replacer);
}
return replace(text, 0, text.length, replacer);
}
;