UNPKG

@pix.js/validator

Version:
50 lines (45 loc) 1.58 kB
// src/index.ts import { getPixKeyType } from "@pix.js/core"; // src/dynamic.ts import { dynamicPixSchema, parseDynamicPix } from "@pix.js/core"; // src/crc-validator.ts import { crc16ccitt } from "crc"; var isValidCrc = (qrcode) => { const payload = qrcode.slice(0, -4); const crc = qrcode.slice(-4); const crcCalculated = crc16ccitt(payload).toString(16).toUpperCase().padStart(4, "0"); return crcCalculated === crc; }; // src/dynamic.ts var isValidDynamicQrCode = (payload, options = { throwError: false }) => { if (options.throwError) { const parsed2 = dynamicPixSchema.parse(parseDynamicPix(payload)); return !!parsed2; } const parsed = dynamicPixSchema.safeParse(parseDynamicPix(payload)); const crcValid = isValidCrc(payload); return parsed.success && crcValid; }; // src/keys.ts import { keyDetector } from "@pix.js/core"; function isPixKey(key) { return keyDetector.isCPF(key) || keyDetector.isCNPJ(key) || keyDetector.isEmail(key) || keyDetector.isPhone(key) || keyDetector.isRandom(key); } // src/static.ts import { parseStaticPix, staticPixSchema } from "@pix.js/core"; var isValidStaticQrCode = (payload, options = { throwError: false }) => { if (options.throwError) { const parsed2 = staticPixSchema.parse(parseStaticPix(payload)); return !!parsed2; } const parsed = staticPixSchema.safeParse(parseStaticPix(payload)); const crcValid = isValidCrc(payload); return parsed.success && crcValid; }; export { getPixKeyType, isPixKey, isValidDynamicQrCode, isValidStaticQrCode }; //# sourceMappingURL=index.js.map