@pix.js/validator
Version:
Validate Pix keys and QRCode
50 lines (45 loc) • 1.58 kB
JavaScript
// 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