UNPKG

@pix.js/core

Version:
1 lines 26.7 kB
{"version":3,"sources":["../src/index.ts","../src/dynamic.ts","../src/types.ts","../src/utils.ts","../src/key-detector.ts","../src/schemas.ts","../src/static.ts"],"sourcesContent":["export * from './dynamic'\nexport * from './key-detector'\nexport * from './schemas'\nexport * from './static'\nexport * from './types'\n","import { crc16ccitt } from 'crc'\nimport { DynamicPixPayload } from './schemas'\nimport { ParserError, PointOfInitiationMethod } from './types'\nimport { appendToBrCode, deconstructEntries, formatText } from './utils'\n\nexport const toDynamicPix = (payload: DynamicPixPayload) => {\n const buildPayloadParts = () => {\n const parts = [\n ['00', '01'],\n ['01', payload.pointOfInitiationMethod?.toString().padStart(2, '0') ?? ''],\n [\n '26',\n [\n appendToBrCode('00', payload.merchantAccountInfo.gui ?? 'br.gov.bcb.pix'),\n appendToBrCode('25', payload.merchantAccountInfo.url),\n ].join(''),\n ],\n ['52', payload.merchantCategoryCode ?? '0000'],\n ['53', payload.transactionCurrency ?? '986'],\n ['54', payload.value?.toFixed(2) ?? ''],\n ['58', payload.countryCode ?? 'BR'],\n ['59', formatText(payload.merchantName, 25)],\n ['60', formatText(payload.merchantCity, 15)],\n ['61', payload.postalCode ?? ''],\n ['62', appendToBrCode('05', payload.additionalData.txId)],\n payload.unreservedTemplate\n ? [\n '80',\n appendToBrCode('00', payload.unreservedTemplate?.gui ?? ''),\n appendToBrCode('25', payload.unreservedTemplate?.url ?? ''),\n ]\n : [],\n ]\n\n return parts\n .filter(([_, value]) => value)\n .map(([id, value]) => appendToBrCode(id, value))\n .join('')\n }\n\n const payloadString = `${buildPayloadParts()}6304`\n const crcResult = crc16ccitt(payloadString).toString(16).toUpperCase().padStart(4, '0')\n\n return `${payloadString}${crcResult}`\n}\n\nexport const parseDynamicPix = (payload: string): DynamicPixPayload => {\n try {\n const entries = deconstructEntries(payload)\n\n entries['26'].subEntries = deconstructEntries(entries['26']?.value ?? '')\n entries['62'].subEntries = deconstructEntries(entries['62']?.value ?? '')\n\n if (entries['80']) {\n entries['80'].subEntries = deconstructEntries(entries['80']?.value ?? '')\n }\n\n return {\n merchantAccountInfo: {\n gui: entries['26'].subEntries?.['00']?.value,\n url: entries['26'].subEntries?.['25']?.value,\n },\n pointOfInitiationMethod: entries['01']?.value\n ? (Number.parseInt(entries['01']?.value) as PointOfInitiationMethod)\n : undefined,\n merchantCategoryCode: entries['52']?.value,\n transactionCurrency: entries['53']?.value,\n countryCode: entries['58']?.value,\n merchantName: entries['59']?.value,\n merchantCity: entries['60']?.value,\n postalCode: entries['61']?.value,\n additionalData: {\n txId: entries['62'].subEntries?.['05']?.value,\n },\n unreservedTemplate: entries['80']\n ? {\n gui: entries['80'].subEntries?.['00']?.value,\n url: entries['80'].subEntries?.['25']?.value,\n }\n : undefined,\n }\n } catch (error) {\n throw new ParserError(`Invalid dynamic pix payload ${error}`)\n }\n}\n\nexport const isDynamicPix = (payload: string): boolean => {\n try {\n const entries = deconstructEntries(payload)\n\n entries['26'].subEntries = deconstructEntries(entries['26'].value)\n\n return !!entries['26'].subEntries['25']?.value\n } catch (error) {\n return false\n }\n}\n","export enum PointOfInitiationMethod {\n OnTimeOnly = 12,\n}\n\nexport enum PixKeyType {\n Cpf = 'CPF',\n Cnpj = 'CNPJ',\n Email = 'EMAIL',\n Phone = 'PHONE',\n Evp = 'EVP',\n}\n\nexport enum PixQrCodeType {\n Static = 'STATIC',\n Dynamic = 'DYNAMIC',\n}\n\n// export type ParsedQrCode = {\n// type: PixQrCodeType\n// payload: DynamicPixPayload | StaticPixPayload\n// }\n\nexport class ParserError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'ParserError'\n }\n}\n","export const formatText = (text: string, maxLength: number) =>\n text\n .substring(0, maxLength)\n .normalize('NFD')\n // biome-ignore lint/suspicious/noMisleadingCharacterClass: <explanation>\n .replace(/[\\u0300-\\u036f]/g, '')\n\nexport const appendToBrCode = (id: string, value: string): string => {\n const length = value.length.toString().padStart(2, '0')\n return `${id}${length}${value}`\n}\n\ntype Entry = {\n id: string\n length: number\n value: string\n subEntries?: Record<string, Entry>\n}\n\nexport const deconstructEntries = (payload: string, signatureLength = 4) => {\n const entries: Record<string, Entry> = {}\n let position = 0\n\n while (position < payload.length - signatureLength) {\n const id = payload.slice(position, position + 2)\n position += 2\n const length = Number.parseInt(payload.slice(position, position + 2))\n position += 2\n const value = payload.slice(position, position + length)\n position += length\n\n entries[id] = { id, length, value }\n }\n\n return entries\n}\n","import { PixKeyType } from './types'\n\nexport const pixKeyRegexes = {\n email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n phone: /^(\\+)?([55]{2})?\\s?\\(?([0-9]{2})\\)?\\s?([9])([0-9]{4})-?([0-9]{4})$/,\n random: /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,\n}\n\nexport function isCPF(cpf: string): boolean {\n const cpfDigits = cpf.replace(/[^\\d]/g, '')\n if (cpfDigits.length !== 11) return false\n\n let sum = 0\n for (let i = 0; i < 9; i++) {\n sum += Number.parseInt(cpfDigits.charAt(i)) * (10 - i)\n }\n let digit = 11 - (sum % 11)\n if (digit >= 10) digit = 0\n if (digit !== Number.parseInt(cpfDigits.charAt(9))) return false\n\n sum = 0\n for (let i = 0; i < 10; i++) {\n sum += Number.parseInt(cpfDigits.charAt(i)) * (11 - i)\n }\n digit = 11 - (sum % 11)\n if (digit >= 10) digit = 0\n if (digit !== Number.parseInt(cpfDigits.charAt(10))) return false\n\n return true\n}\n\nexport function isCNPJ(cnpj: string): boolean {\n const cnpjDigits = cnpj.replace(/[^\\d]/g, '')\n if (cnpjDigits.length !== 14) return false\n\n let size = cnpjDigits.length - 2\n let numbers = cnpjDigits.substring(0, size)\n const digits = cnpjDigits.substring(size)\n let sum = 0\n let pos = size - 7\n\n for (let i = size; i >= 1; i--) {\n sum += Number.parseInt(numbers.charAt(size - i)) * pos--\n if (pos < 2) pos = 9\n }\n\n let result = sum % 11 < 2 ? 0 : 11 - (sum % 11)\n if (result !== Number.parseInt(digits.charAt(0))) return false\n\n size = size + 1\n numbers = cnpjDigits.substring(0, size)\n sum = 0\n pos = size - 7\n\n for (let i = size; i >= 1; i--) {\n sum += Number.parseInt(numbers.charAt(size - i)) * pos--\n if (pos < 2) pos = 9\n }\n\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11)\n if (result !== Number.parseInt(digits.charAt(1))) return false\n\n return true\n}\n\nexport const keyDetector = {\n isCPF: (key: string) => isCPF(key),\n isCNPJ: (key: string) => isCNPJ(key),\n isEmail: (key: string) => pixKeyRegexes.email.test(key),\n isPhone: (key: string) => pixKeyRegexes.phone.test(key),\n isRandom: (key: string) => pixKeyRegexes.random.test(key),\n}\n\nexport const getPixKeyType = (key: string): PixKeyType => {\n switch (true) {\n case keyDetector.isCPF(key):\n return PixKeyType.Cpf\n case keyDetector.isCNPJ(key):\n return PixKeyType.Cnpj\n case keyDetector.isEmail(key):\n return PixKeyType.Email\n case keyDetector.isPhone(key):\n return PixKeyType.Phone\n case keyDetector.isRandom(key):\n return PixKeyType.Evp\n default:\n throw new Error('Invalid Pix key')\n }\n}\n","import { z } from 'zod'\nimport { PointOfInitiationMethod } from './types'\n\nconst staticMerchantAccountInfoSchema = z\n .object({\n gui: z.string(),\n key: z.string(),\n merchantAdditionalInfo: z.string().optional(),\n fss: z.string().optional(),\n })\n .refine((schema) => {\n let totalLength = schema.gui.length + schema.key.length\n if (schema.merchantAdditionalInfo) {\n totalLength += schema.merchantAdditionalInfo?.length\n }\n if (schema.fss) {\n totalLength += schema.fss?.length\n }\n\n return totalLength <= 99\n }, 'Combined length of gui, key, merchantAdditionalInfo and fss must not exceed 99 characters')\n\nconst dynamicMerchantAccountInfoSchema = z\n .object({\n gui: z.string(),\n url: z.string().regex(/^[^:]+\\.[^:]+/),\n merchantAdditionalInfo: z.string().optional(),\n fss: z.string().optional(),\n })\n .refine((schema) => {\n let totalLength = schema.gui.length + schema.url.length\n if (schema.merchantAdditionalInfo) {\n totalLength += schema.merchantAdditionalInfo?.length\n }\n if (schema.fss) {\n totalLength += schema.fss?.length\n }\n\n return totalLength <= 99\n }, 'Combined length of gui, url, merchantAdditionalInfo and fss must not exceed 99 characters')\n\nconst additionalData = z.object({\n txId: z.string().min(1).max(25),\n})\n\nconst unreservedTemplate = z\n .object({\n gui: z.string().optional(),\n url: z.string().url().optional(),\n })\n .refine((schema) => {\n return (schema.gui?.length ?? 0) + (schema.url?.length ?? 0) <= 99\n }, 'Combined length of gui and url must not exceed 99 characters')\n\nexport const staticPixSchema = z\n .object({\n merchantAccountInfo: staticMerchantAccountInfoSchema,\n value: z.number().positive().min(1).max(13).optional(),\n merchantCategoryCode: z.string().max(4),\n transactionCurrency: z.string().max(3),\n countryCode: z.string().max(2),\n merchantName: z.string().max(25),\n merchantCity: z.string().max(15),\n additionalData: additionalData,\n postalCode: z.string().min(1).max(99).optional(),\n unreservedTemplate: unreservedTemplate.optional(),\n })\n .refine((schema) => {\n const totalLength = [\n schema.merchantAccountInfo.gui.length,\n schema.merchantAccountInfo.key.length,\n schema.merchantAccountInfo.merchantAdditionalInfo?.length ?? 0,\n schema.merchantAccountInfo.fss?.length ?? 0,\n schema.value ? schema.value.toString().length : 0,\n schema.merchantCategoryCode.length,\n schema.transactionCurrency.length,\n schema.countryCode.length,\n schema.merchantName.length,\n schema.merchantCity.length,\n schema.additionalData.txId.length,\n schema.postalCode?.length ?? 0,\n ].reduce((acc, length) => acc + length, 0)\n\n return totalLength <= 396\n }, 'The qrcode length must be less than 396 characters')\n\nexport const dynamicPixSchema = z\n .object({\n merchantAccountInfo: dynamicMerchantAccountInfoSchema,\n pointOfInitiationMethod: z.nativeEnum(PointOfInitiationMethod).optional(),\n value: z.number().positive().min(1).max(13).optional(),\n merchantCategoryCode: z.string().max(4),\n transactionCurrency: z.string().max(3),\n countryCode: z.string().max(2),\n merchantName: z.string().max(25),\n merchantCity: z.string().max(15),\n additionalData: additionalData,\n postalCode: z.string().min(1).max(8).optional(),\n unreservedTemplate: unreservedTemplate.optional(),\n })\n .refine((schema) => {\n const totalLength = [\n schema.merchantAccountInfo.gui.length,\n schema.merchantAccountInfo.url.length,\n schema.merchantAccountInfo.merchantAdditionalInfo?.length ?? 0,\n schema.merchantAccountInfo.fss?.length ?? 0,\n schema.pointOfInitiationMethod?.toString().length ?? 0,\n schema.value ? schema.value.toString().length : 0,\n schema.merchantCategoryCode.length,\n schema.transactionCurrency.length,\n schema.countryCode.length,\n schema.merchantName.length,\n schema.merchantCity.length,\n schema.additionalData.txId.length,\n schema.postalCode?.length ?? 0,\n ].reduce((acc, length) => acc + length, 0)\n\n return totalLength <= 396\n }, 'The qrcode length must be less than 396 characters')\n\nexport type StaticPixPayload = z.infer<typeof staticPixSchema>\nexport type DynamicPixPayload = z.infer<typeof dynamicPixSchema>\n","import { crc16ccitt } from 'crc'\nimport { StaticPixPayload } from './schemas'\nimport { ParserError } from './types'\nimport { appendToBrCode, deconstructEntries, formatText } from './utils'\n\nexport const toStaticPix = (payload: StaticPixPayload) => {\n const buildPayloadParts = () => {\n const parts = [\n ['00', '01'],\n [\n '26',\n [\n appendToBrCode('00', payload.merchantAccountInfo.gui ?? 'br.gov.bcb.pix'),\n appendToBrCode('01', payload.merchantAccountInfo.key),\n payload.merchantAccountInfo.merchantAdditionalInfo\n ? appendToBrCode('02', payload.merchantAccountInfo.merchantAdditionalInfo)\n : '',\n payload.merchantAccountInfo.fss ? appendToBrCode('03', payload.merchantAccountInfo.fss) : '',\n ].join(''),\n ],\n ['52', payload.merchantCategoryCode ?? '0000'],\n ['53', payload.transactionCurrency ?? '986'],\n ['54', payload.value?.toFixed(2) ?? ''],\n ['58', payload.countryCode ?? 'BR'],\n ['59', formatText(payload.merchantName, 25)],\n ['60', formatText(payload.merchantCity, 15)],\n ['61', payload.postalCode ?? ''],\n ['62', appendToBrCode('05', payload.additionalData.txId)],\n payload.unreservedTemplate\n ? [\n '80',\n appendToBrCode('00', payload.unreservedTemplate?.gui ?? ''),\n appendToBrCode('25', payload.unreservedTemplate?.url ?? ''),\n ]\n : [],\n ]\n\n return parts\n .filter(([_, value]) => value)\n .map(([id, value]) => appendToBrCode(id, value))\n .join('')\n }\n\n const payloadString = `${buildPayloadParts()}6304`\n const crcResult = crc16ccitt(payloadString).toString(16).toUpperCase().padStart(4, '0')\n\n return `${payloadString}${crcResult}`\n}\n\nexport const parseStaticPix = (payload: string): StaticPixPayload => {\n try {\n const entries = deconstructEntries(payload)\n\n entries['26'].subEntries = deconstructEntries(entries['26']?.value ?? '')\n entries['62'].subEntries = deconstructEntries(entries['62']?.value ?? '')\n\n if (entries['80']) {\n entries['80'].subEntries = deconstructEntries(entries['80']?.value ?? '')\n }\n\n return {\n merchantAccountInfo: {\n gui: entries['26'].subEntries?.['00']?.value,\n key: entries['26'].subEntries?.['01']?.value,\n merchantAdditionalInfo: entries['26'].subEntries?.['02']?.value,\n fss: entries['26'].subEntries?.['03']?.value,\n },\n merchantCategoryCode: entries['52']?.value,\n transactionCurrency: entries['53']?.value,\n countryCode: entries['58']?.value,\n merchantName: entries['59']?.value,\n merchantCity: entries['60']?.value,\n postalCode: entries['61']?.value,\n additionalData: {\n txId: entries['62'].subEntries?.['05']?.value,\n },\n value: entries['54']?.value ? Number.parseFloat(entries['54'].value) : undefined,\n unreservedTemplate: entries['80']\n ? {\n gui: entries['80'].subEntries?.['00']?.value,\n url: entries['80'].subEntries?.['25']?.value,\n }\n : undefined,\n }\n } catch (error) {\n throw new ParserError(`Invalid static pix payload ${error}`)\n }\n}\n\nexport const isStaticPix = (payload: string): boolean => {\n try {\n const entries = deconstructEntries(payload)\n\n entries['26'].subEntries = deconstructEntries(entries['26'].value)\n\n return !!entries['26'].subEntries['01']?.value\n } catch (error) {\n return false\n }\n}\n"],"mappings":"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","names":["PointOfInitiationMethod","PixKeyType","PixQrCodeType","import_crc"]}