"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const cleaner = require("./cleaner.cjs"); const qrCodeGenerator = require("./qr-code-generator.cjs"); const validator = require("./validator.cjs"); const utils = require("./utils.cjs"); function generateQRData(data) { var _a, _b, _c, _d, _e, _f; const cleanedData = cleaner.cleanData(data); validator.validateData(cleanedData); const amount = (_a = cleanedData.amount) == null ? void 0 : _a.toFixed(2); const reference = utils.getReferenceType(cleanedData.reference); const qrData = [ "SPC", // Swiss Payments Code "0200", // Version "1", // Coding Type UTF-8 (_b = cleanedData.creditor.account) != null ? _b : "", // IBAN "S", // Address Type cleanedData.creditor.name, // Name cleanedData.creditor.address, // Address cleanedData.creditor.buildingNumber ? `${cleanedData.creditor.buildingNumber}` : "", `${cleanedData.creditor.zip}`, // Zip cleanedData.creditor.city, // City cleanedData.creditor.country, // Country "", // 1x Empty "", // 2x Empty "", // 3x Empty "", // 4x Empty "", // 5x Empty "", // 6x Empty "", // 7x Empty amount != null ? amount : "", // Amount cleanedData.currency, // Currency ...cleanedData.debtor ? [ "S", // Address Type cleanedData.debtor.name, // Name cleanedData.debtor.address, // Address cleanedData.debtor.buildingNumber ? `${cleanedData.debtor.buildingNumber}` : "", `${cleanedData.debtor.zip}`, // Zip cleanedData.debtor.city, // City (_c = cleanedData.debtor.country) != null ? _c : "" // Country ] : [ "", // Empty address type "", // Empty name "", // Empty address "", // Empty building number "", // Empty zip field "", // Empty city field "" // Empty country ], reference, // Reference type (_d = cleanedData.reference) != null ? _d : "", // Reference (_e = cleanedData.message) != null ? _e : "", // Unstructured message "EPD", // End of payment data (_f = cleanedData.additionalInformation) != null ? _f : "", // Additional information ...cleanedData.av1 ? [ cleanedData.av1 ] : [], ...cleanedData.av2 ? [ cleanedData.av2 ] : [] ]; return qrData.join("\n"); } function renderQRCode(data, size, renderBlockFunction) { const qrData = generateQRData(data); const eci = qrCodeGenerator.qrcodegen.QrSegment.makeEci(26); const segments = qrCodeGenerator.qrcodegen.QrSegment.makeSegments(qrData); const qrCode = qrCodeGenerator.qrcodegen.QrCode.encodeSegments([eci, ...segments], qrCodeGenerator.qrcodegen.QrCode.Ecc.MEDIUM, 10, 25); const blockSize = size / qrCode.size; for (let x = 0; x < qrCode.size; x++) { const xPos = x * blockSize; for (let y = 0; y < qrCode.size; y++) { const yPos = y * blockSize; if (qrCode.getModule(x, y)) { renderBlockFunction(xPos, yPos, blockSize); } } } } function renderSwissCross(size, renderRectFunction) { const scale = size / utils.mm2pt(46); const swissCrossWhiteBackgroundSize = utils.mm2pt(7) * scale; const swissCrossBlackBackgroundSize = utils.mm2pt(6) * scale; const swissCrossThickness = utils.mm2pt(1.17) * scale; const swissCrossLength = utils.mm2pt(3.89) * scale; renderRectFunction( size / 2 - swissCrossWhiteBackgroundSize / 2, size / 2 - swissCrossWhiteBackgroundSize / 2, swissCrossWhiteBackgroundSize, swissCrossWhiteBackgroundSize, "white" ); renderRectFunction( size / 2 - swissCrossBlackBackgroundSize / 2, size / 2 - swissCrossBlackBackgroundSize / 2, swissCrossBlackBackgroundSize, swissCrossBlackBackgroundSize, "black" ); renderRectFunction( size / 2 - swissCrossLength / 2, size / 2 - swissCrossThickness / 2, swissCrossLength, swissCrossThickness, "white" ); renderRectFunction( size / 2 - swissCrossThickness / 2, size / 2 - swissCrossLength / 2, swissCrossThickness, swissCrossLength, "white" ); } exports.generateQRData = generateQRData; exports.renderQRCode = renderQRCode; exports.renderSwissCross = renderSwissCross;