UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

54 lines (52 loc) 2 kB
"use strict"; 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); }