UNPKG

@lacussoft/cpf-fmt

Version:
68 lines (64 loc) 9.49 kB
import { escape } from 'html-escaper'; import numOnly from 'num-only'; import mergeDeep from 'deepmerge'; const defaultOptions = { delimiters: { dot: ".", dash: "-" }, hiddenRange: { start: 3, end: 10 }, onFail: (value) => value, hiddenKey: "*", hidden: false, escape: false }; function mergeOptions(customOptions = {}) { const options = mergeDeep( defaultOptions, customOptions ); if (options.hidden) { if (isNaN(options.hiddenRange.start) || options.hiddenRange.start < 0 || options.hiddenRange.start > 10) { throw new TypeError('Option "hiddenRange.start" must be a number between 0 and 10.'); } if (isNaN(options.hiddenRange.end) || options.hiddenRange.end < 0 || options.hiddenRange.end > 10) { throw new TypeError('Option "hiddenRange.end" must be a number between 0 and 10.'); } if (options.hiddenRange.start > options.hiddenRange.end) { const aux = options.hiddenRange.start; options.hiddenRange.start = options.hiddenRange.end; options.hiddenRange.end = aux; } } if (typeof options.onFail !== "function") { throw new TypeError('The option "onFail" must be a callback function.'); } return options; } function cpfFmt(cpfString, options) { const CPF_LENGTH = 11; const cpfArray = numOnly(cpfString).split(""); const customOptions = mergeOptions(options); if (cpfArray.length !== CPF_LENGTH) { const error = new Error(`Parameter "${cpfString}" does not contain ${CPF_LENGTH} digits.`); return customOptions.onFail(cpfString, error); } if (customOptions.hidden) { for (let i = customOptions.hiddenRange.start; i <= customOptions.hiddenRange.end; i++) { cpfArray[i] = customOptions.hiddenKey; } } cpfArray.splice(9, 0, customOptions.delimiters.dash); cpfArray.splice(6, 0, customOptions.delimiters.dot); cpfArray.splice(3, 0, customOptions.delimiters.dot); const cpfPretty = cpfArray.join(""); if (customOptions.escape) { return escape(cpfPretty); } return cpfPretty; } export { cpfFmt as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlcyI6WyIuLi9zcmMvbWVyZ2Utb3B0aW9ucy50cyIsIi4uL3NyYy9jcGYtZm10LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZXJnZURlZXAgZnJvbSAnZGVlcG1lcmdlJztcblxudHlwZSBEZWVwUGFydGlhbDxUPiA9IHtcbiAgW1AgaW4ga2V5b2YgVF0/OiBEZWVwUGFydGlhbDxUW1BdPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0dWFsQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz4ge1xuICBkZWxpbWl0ZXJzOiB7XG4gICAgZGFzaDogc3RyaW5nO1xuICAgIGRvdDogc3RyaW5nO1xuICB9O1xuICBlc2NhcGU6IGJvb2xlYW47XG4gIGhpZGRlbjogYm9vbGVhbjtcbiAgaGlkZGVuS2V5OiBzdHJpbmc7XG4gIGhpZGRlblJhbmdlOiB7XG4gICAgZW5kOiBudW1iZXI7XG4gICAgc3RhcnQ6IG51bWJlcjtcbiAgfTtcbiAgb25GYWlsOiAodmFsdWU6IHN0cmluZywgZXJyb3I6IEVycm9yKSA9PiBPbkVyckZhbGxiYWNrO1xufVxuXG5leHBvcnQgdHlwZSBDcGZGb3JtYXR0aW5nT3B0aW9uczxPbkVyckZhbGxiYWNrPiA9IERlZXBQYXJ0aWFsPFxuICBBY3R1YWxDcGZGb3JtYXR0aW5nT3B0aW9uczxPbkVyckZhbGxiYWNrPlxuPjtcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IEFjdHVhbENwZkZvcm1hdHRpbmdPcHRpb25zPHN0cmluZz4gPSB7XG4gIGRlbGltaXRlcnM6IHtcbiAgICBkb3Q6ICcuJyxcbiAgICBkYXNoOiAnLScsXG4gIH0sXG4gIGhpZGRlblJhbmdlOiB7XG4gICAgc3RhcnQ6IDMsXG4gICAgZW5kOiAxMCxcbiAgfSxcbiAgb25GYWlsOiAodmFsdWUpID0+IHZhbHVlLFxuICBoaWRkZW5LZXk6ICcqJyxcbiAgaGlkZGVuOiBmYWxzZSxcbiAgZXNjYXBlOiBmYWxzZSxcbn07XG5cbi8qKlxuICogTWVyZ2UgY3VzdG9tIG9wdGlvbnMgdG8gdGhlIGRlZmF1bHQgb25lcy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VPcHRpb25zPE9uRXJyRmFsbGJhY2s+KFxuICBjdXN0b21PcHRpb25zOiBDcGZGb3JtYXR0aW5nT3B0aW9uczxPbkVyckZhbGxiYWNrPiA9IHt9LFxuKTogQWN0dWFsQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz4ge1xuICBjb25zdCBvcHRpb25zID0gbWVyZ2VEZWVwKFxuICAgIGRlZmF1bHRPcHRpb25zLFxuICAgIGN1c3RvbU9wdGlvbnMsXG4gICkgYXMgQWN0dWFsQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz47XG5cbiAgaWYgKG9wdGlvbnMuaGlkZGVuKSB7XG4gICAgaWYgKFxuICAgICAgaXNOYU4ob3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydCkgfHxcbiAgICAgIG9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQgPCAwIHx8XG4gICAgICBvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0ID4gMTBcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ09wdGlvbiBcImhpZGRlblJhbmdlLnN0YXJ0XCIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEwLicpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGlzTmFOKG9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kKSB8fFxuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQgPCAwIHx8XG4gICAgICBvcHRpb25zLmhpZGRlblJhbmdlLmVuZCA+IDEwXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPcHRpb24gXCJoaWRkZW5SYW5nZS5lbmRcIiBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAuJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQgPiBvcHRpb25zLmhpZGRlblJhbmdlLmVuZCkge1xuICAgICAgY29uc3QgYXV4ID0gb3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydDtcbiAgICAgIG9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQgPSBvcHRpb25zLmhpZGRlblJhbmdlLmVuZDtcbiAgICAgIG9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kID0gYXV4O1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5vbkZhaWwgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgb3B0aW9uIFwib25GYWlsXCIgbXVzdCBiZSBhIGNhbGxiYWNrIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1lcmdlT3B0aW9ucztcbiIsImltcG9ydCB7IGVzY2FwZSBhcyBlc2NhcGVIVE1MIH0gZnJvbSAnaHRtbC1lc2NhcGVyJztcbmltcG9ydCBudW1Pbmx5IGZyb20gJ251bS1vbmx5JztcblxuaW1wb3J0IG1lcmdlT3B0aW9ucyBmcm9tICcuL21lcmdlLW9wdGlvbnMnO1xuaW1wb3J0IHR5cGUgeyBDcGZGb3JtYXR0aW5nT3B0aW9ucyB9IGZyb20gJy4vbWVyZ2Utb3B0aW9ucyc7XG5cbi8qKlxuICogRm9ybWF0IGEgZ2l2ZW4gQ1BGIGNoYXIgc2VxdWVuY2UuXG4gKi9cbmZ1bmN0aW9uIGNwZkZtdDxPbkVyckZhbGxiYWNrID0gc3RyaW5nPihcbiAgY3BmU3RyaW5nOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBDcGZGb3JtYXR0aW5nT3B0aW9uczxPbkVyckZhbGxiYWNrPixcbik6IHN0cmluZyB7XG4gIGNvbnN0IENQRl9MRU5HVEggPSAxMTtcbiAgY29uc3QgY3BmQXJyYXkgPSBudW1Pbmx5KGNwZlN0cmluZykuc3BsaXQoJycpO1xuICBjb25zdCBjdXN0b21PcHRpb25zID0gbWVyZ2VPcHRpb25zKG9wdGlvbnMpO1xuXG4gIGlmIChjcGZBcnJheS5sZW5ndGggIT09IENQRl9MRU5HVEgpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgUGFyYW1ldGVyIFwiJHtjcGZTdHJpbmd9XCIgZG9lcyBub3QgY29udGFpbiAke0NQRl9MRU5HVEh9IGRpZ2l0cy5gKTtcblxuICAgIHJldHVybiBjdXN0b21PcHRpb25zLm9uRmFpbChjcGZTdHJpbmcsIGVycm9yKSBhcyBzdHJpbmc7XG4gIH1cblxuICBpZiAoY3VzdG9tT3B0aW9ucy5oaWRkZW4pIHtcbiAgICBmb3IgKGxldCBpID0gY3VzdG9tT3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydDsgaSA8PSBjdXN0b21PcHRpb25zLmhpZGRlblJhbmdlLmVuZDsgaSsrKSB7XG4gICAgICBjcGZBcnJheVtpXSA9IGN1c3RvbU9wdGlvbnMuaGlkZGVuS2V5O1xuICAgIH1cbiAgfVxuXG4gIGNwZkFycmF5LnNwbGljZSg5LCAwLCBjdXN0b21PcHRpb25zLmRlbGltaXRlcnMuZGFzaCk7XG4gIGNwZkFycmF5LnNwbGljZSg2LCAwLCBjdXN0b21PcHRpb25zLmRlbGltaXRlcnMuZG90KTtcbiAgY3BmQXJyYXkuc3BsaWNlKDMsIDAsIGN1c3RvbU9wdGlvbnMuZGVsaW1pdGVycy5kb3QpO1xuICBjb25zdCBjcGZQcmV0dHkgPSBjcGZBcnJheS5qb2luKCcnKTtcblxuICBpZiAoY3VzdG9tT3B0aW9ucy5lc2NhcGUpIHtcbiAgICByZXR1cm4gZXNjYXBlSFRNTChjcGZQcmV0dHkpO1xuICB9XG5cbiAgcmV0dXJuIGNwZlByZXR0eTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3BmRm10O1xuIl0sIm5hbWVzIjpbImVzY2FwZUhUTUwiXSwibWFwcGluZ3MiOiI7Ozs7QUF5QkEsTUFBTSxjQUFxRCxHQUFBO0FBQUEsRUFDekQsVUFBWSxFQUFBO0FBQUEsSUFDVixHQUFLLEVBQUEsR0FBQTtBQUFBLElBQ0wsSUFBTSxFQUFBO0FBQUEsR0FDUjtBQUFBLEVBQ0EsV0FBYSxFQUFBO0FBQUEsSUFDWCxLQUFPLEVBQUEsQ0FBQTtBQUFBLElBQ1AsR0FBSyxFQUFBO0FBQUEsR0FDUDtBQUFBLEVBQ0Es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