Socket
Socket
Sign inDemoInstall

swissqrbill

Package Overview
Dependencies
1
Maintainers
1
Versions
66
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 4.0.0-alpha.2 to 4.0.0-alpha.3

lib/node/cjs/pdf/swissqrbill.d.ts

158

lib/node/cjs/shared/qr-code-generator.js

@@ -48,58 +48,2 @@ /* eslint-disable no-useless-escape */

class QrCode {
/*-- Constructor (low level) and fields --*/
// Creates a new QR Code with the given version number,
// error correction level, data codeword bytes, and mask number.
// This is a low-level API that most users should not use directly.
// A mid-level API is the encodeSegments() function.
constructor(
// The version number of this QR Code, which is between 1 and 40 (inclusive).
// This determines the size of this barcode.
version,
// The error correction level used in this QR Code.
errorCorrectionLevel, dataCodewords, msk) {
this.version = version;
this.errorCorrectionLevel = errorCorrectionLevel;
// The modules of this QR Code (false = light, true = dark).
// Immutable after constructor finishes. Accessed through getModule().
this.modules = [];
// Indicates function modules that are not subjected to masking. Discarded when constructor finishes.
this.isFunction = [];
// Check scalar arguments
if (version < QrCode.MIN_VERSION || version > QrCode.MAX_VERSION)
throw "Version value out of range";
if (msk < -1 || msk > 7)
throw "Mask value out of range";
this.size = version * 4 + 17;
// Initialize both grids to be size*size arrays of Boolean false
const row = [];
for (let i = 0; i < this.size; i++)
row.push(false);
for (let i = 0; i < this.size; i++) {
this.modules.push(row.slice()); // Initially all light
this.isFunction.push(row.slice());
}
// Compute ECC, draw modules
this.drawFunctionPatterns();
const allCodewords = this.addEccAndInterleave(dataCodewords);
this.drawCodewords(allCodewords);
// Do masking
if (msk == -1) { // Automatically choose best mask
let minPenalty = 1000000000;
for (let i = 0; i < 8; i++) {
this.applyMask(i);
this.drawFormatBits(i);
const penalty = this.getPenaltyScore();
if (penalty < minPenalty) {
msk = i;
minPenalty = penalty;
}
this.applyMask(i); // Undoes the mask due to XOR
}
}
assert(0 <= msk && msk <= 7);
this.mask = msk;
this.applyMask(msk); // Apply the final choice of mask
this.drawFormatBits(msk); // Overwrite old format bits
this.isFunction = [];
}
/*-- Static factory functions (high level) --*/

@@ -181,2 +125,58 @@ // Returns a QR Code representing the given Unicode text string at the given error correction level.

}
/*-- Constructor (low level) and fields --*/
// Creates a new QR Code with the given version number,
// error correction level, data codeword bytes, and mask number.
// This is a low-level API that most users should not use directly.
// A mid-level API is the encodeSegments() function.
constructor(
// The version number of this QR Code, which is between 1 and 40 (inclusive).
// This determines the size of this barcode.
version,
// The error correction level used in this QR Code.
errorCorrectionLevel, dataCodewords, msk) {
this.version = version;
this.errorCorrectionLevel = errorCorrectionLevel;
// The modules of this QR Code (false = light, true = dark).
// Immutable after constructor finishes. Accessed through getModule().
this.modules = [];
// Indicates function modules that are not subjected to masking. Discarded when constructor finishes.
this.isFunction = [];
// Check scalar arguments
if (version < QrCode.MIN_VERSION || version > QrCode.MAX_VERSION)
throw "Version value out of range";
if (msk < -1 || msk > 7)
throw "Mask value out of range";
this.size = version * 4 + 17;
// Initialize both grids to be size*size arrays of Boolean false
const row = [];
for (let i = 0; i < this.size; i++)
row.push(false);
for (let i = 0; i < this.size; i++) {
this.modules.push(row.slice()); // Initially all light
this.isFunction.push(row.slice());
}
// Compute ECC, draw modules
this.drawFunctionPatterns();
const allCodewords = this.addEccAndInterleave(dataCodewords);
this.drawCodewords(allCodewords);
// Do masking
if (msk == -1) { // Automatically choose best mask
let minPenalty = 1000000000;
for (let i = 0; i < 8; i++) {
this.applyMask(i);
this.drawFormatBits(i);
const penalty = this.getPenaltyScore();
if (penalty < minPenalty) {
msk = i;
minPenalty = penalty;
}
this.applyMask(i); // Undoes the mask due to XOR
}
}
assert(0 <= msk && msk <= 7);
this.mask = msk;
this.applyMask(msk); // Apply the final choice of mask
this.drawFormatBits(msk); // Overwrite old format bits
this.isFunction = [];
}
/*-- Accessor methods --*/

@@ -640,22 +640,2 @@ // Returns the color of the module (pixel) at the given coordinates, which is false

class QrSegment {
/*-- Constructor (low level) and fields --*/
// Creates a new QR Code segment with the given attributes and data.
// The character count (numChars) must agree with the mode and the bit buffer length,
// but the constraint isn't checked. The given bit buffer is cloned and stored.
constructor(
// The mode indicator of this segment.
mode,
// The length of this segment's unencoded data. Measured in characters for
// numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.
// Always zero or positive. Not the same as the data's bit length.
numChars,
// The data bits of this segment. Accessed through getData().
bitData) {
this.mode = mode;
this.numChars = numChars;
this.bitData = bitData;
if (numChars < 0)
throw "Invalid argument";
this.bitData = bitData.slice(); // Make defensive copy
}
/*-- Static factory functions (mid level) --*/

@@ -744,2 +724,22 @@ // Returns a segment representing the given binary data encoded in

}
/*-- Constructor (low level) and fields --*/
// Creates a new QR Code segment with the given attributes and data.
// The character count (numChars) must agree with the mode and the bit buffer length,
// but the constraint isn't checked. The given bit buffer is cloned and stored.
constructor(
// The mode indicator of this segment.
mode,
// The length of this segment's unencoded data. Measured in characters for
// numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.
// Always zero or positive. Not the same as the data's bit length.
numChars,
// The data bits of this segment. Accessed through getData().
bitData) {
this.mode = mode;
this.numChars = numChars;
this.bitData = bitData;
if (numChars < 0)
throw "Invalid argument";
this.bitData = bitData.slice(); // Make defensive copy
}
/*-- Methods --*/

@@ -786,3 +786,3 @@ // Returns a new copy of the data bits of this segment.

qrcodegen.QrSegment = QrSegment;
})(qrcodegen = exports.qrcodegen || (exports.qrcodegen = {}));
})(qrcodegen || (exports.qrcodegen = qrcodegen = {}));
/*---- Public helper enumeration ----*/

@@ -813,3 +813,3 @@ (function (qrcodegen) {

})(QrCode = qrcodegen.QrCode || (qrcodegen.QrCode = {}));
})(qrcodegen = exports.qrcodegen || (exports.qrcodegen = {}));
})(qrcodegen || (exports.qrcodegen = qrcodegen = {}));
/*---- Public helper enumeration ----*/

@@ -847,3 +847,3 @@ (function (qrcodegen) {

})(QrSegment = qrcodegen.QrSegment || (qrcodegen.QrSegment = {}));
})(qrcodegen = exports.qrcodegen || (exports.qrcodegen = {}));
})(qrcodegen || (exports.qrcodegen = qrcodegen = {}));
//# sourceMappingURL=qr-code-generator.js.map

@@ -1,2 +0,3 @@

import { Data } from "./types";
export default function generateQRCode(data: Data, size: number): string;
import type { Data } from "./types.js";
export declare function generateQRData(data: Data): string;
export declare function renderQRCode(qrData: string, type: "pdf" | "svg", size: number, xOrigin?: number, yOrigin?: number): string;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.renderQRCode = exports.generateQRData = void 0;
const utils_js_1 = require("../shared/utils.js");
const qr_code_generator_js_1 = require("./qr-code-generator.js");
function generateQRCode(data, size) {
var _a;
let qrString = "";
//-- Swiss Payments Code
qrString += "SPC";
//-- Version
qrString += "\n0200";
//-- Coding Type UTF-8
qrString += "\n1";
//-- IBAN
qrString += (_a = "\n" + data.creditor.account) !== null && _a !== void 0 ? _a : "\n";
//-- Creditor
if (data.creditor.buildingNumber !== undefined) {
// Address Type
qrString += "\nS";
// Name
qrString += "\n" + data.creditor.name;
// Address
qrString += "\n" + data.creditor.address;
// House number
qrString += "\n" + data.creditor.buildingNumber;
// Zip
qrString += "\n" + data.creditor.zip;
// City
qrString += "\n" + data.creditor.city;
}
else {
// Address Type
qrString += "\nK";
// Name
qrString += "\n" + data.creditor.name;
// Address
qrString += "\n" + data.creditor.address;
// Zip + city
if ((data.creditor.zip + " " + data.creditor.city).length > 70) {
throw new Error("Creditor zip plus city must be a maximum of 70 characters.");
}
qrString += "\n" + data.creditor.zip + " " + data.creditor.city;
// Empty zip field
qrString += "\n";
// Empty city field
qrString += "\n";
}
qrString += "\n" + data.creditor.country;
//-- 7 x empty
qrString += "\n"; // 1
qrString += "\n"; // 2
qrString += "\n"; // 3
qrString += "\n"; // 4
qrString += "\n"; // 5
qrString += "\n"; // 6
qrString += "\n"; // 7
//-- Amount
if (data.amount !== undefined) {
qrString += "\n" + data.amount.toFixed(2);
}
else {
qrString += "\n";
}
//-- Currency
qrString += "\n" + data.currency;
//-- Debtor
if (data.debtor !== undefined) {
if (data.debtor.buildingNumber !== undefined) {
// Address type
qrString += "\nS";
// Name
qrString += "\n" + data.debtor.name;
// Address
qrString += "\n" + data.debtor.address;
// House number
qrString += "\n" + data.debtor.buildingNumber;
// Zip
qrString += "\n" + data.debtor.zip;
// City
qrString += "\n" + data.debtor.city;
}
else {
// Address type
qrString += "\nK";
// Name
qrString += "\n" + data.debtor.name;
// Address
qrString += "\n" + data.debtor.address;
// Zip + city
if ((data.debtor.zip + " " + data.debtor.city).length > 70) {
throw new Error("Debtor zip plus city must be a maximum of 70 characters.");
}
qrString += "\n" + data.debtor.zip + " " + data.debtor.city;
// Empty field zip
qrString += "\n";
// Empty field city
qrString += "\n";
}
// Country
qrString += "\n" + data.debtor.country;
}
else {
// Empty field type
qrString += "\n";
// Empty field name
qrString += "\n";
// Empty field address
qrString += "\n";
// Empty field house number
qrString += "\n";
// Empty field zip
qrString += "\n";
// Empty field city
qrString += "\n";
// Empty field country
qrString += "\n";
}
//-- Reference type
qrString += "\n" + (0, utils_js_1.getReferenceType)(data.reference);
//-- Reference
if (data.reference !== undefined) {
qrString += "\n" + data.reference;
}
else {
qrString += "\n";
}
//-- Unstructured message
if (data.message !== undefined) {
qrString += "\n" + data.message;
}
else {
qrString += "\n";
}
//-- End Payment Data
qrString += "\n" + "EPD";
//-- Additional information
if (data.additionalInformation !== undefined) {
qrString += "\n" + data.additionalInformation;
}
else {
qrString += "\n";
}
//-- AV1
if (data.av1 !== undefined) {
qrString += "\n" + data.av1;
}
if (data.av2 !== undefined) {
qrString += "\n" + data.av2;
}
//-- Create QR Code
function generateQRData(data) {
var _a, _b, _c, _d, _e, _f, _g;
const amount = (_a = data.amount) === null || _a === void 0 ? void 0 : _a.toFixed(2);
const reference = (0, utils_js_1.getReferenceType)(data.reference);
const qrData = [
"SPC",
"0200",
"1",
(_b = data.creditor.account) !== null && _b !== void 0 ? _b : "",
...data.creditor.buildingNumber
? [
"S",
data.creditor.name,
data.creditor.address,
`${data.creditor.buildingNumber}`,
`${data.creditor.zip}`,
data.creditor.city // City
]
: [
"K",
data.creditor.name,
data.creditor.address,
`${data.creditor.zip} ${data.creditor.city}`,
"",
"" // Empty city field
],
data.creditor.country,
"",
"",
"",
"",
"",
"",
"",
amount !== null && amount !== void 0 ? amount : "",
data.currency,
...data.debtor
? [
...data.debtor.buildingNumber
? [
"S",
data.debtor.name,
data.debtor.address,
`${data.debtor.buildingNumber}`,
`${data.debtor.zip}`,
data.debtor.city // City
]
: [
"K",
data.debtor.name,
data.debtor.address,
`${data.debtor.zip} ${data.debtor.city}`,
"",
"" // Empty city field
],
(_d = (_c = data.debtor) === null || _c === void 0 ? void 0 : _c.country) !== null && _d !== void 0 ? _d : "" // Country
]
: [
"",
"",
"",
"",
"",
"",
"" // Empty country
],
reference,
(_e = data.reference) !== null && _e !== void 0 ? _e : "",
(_f = data.message) !== null && _f !== void 0 ? _f : "",
"EPD",
(_g = data.additionalInformation) !== null && _g !== void 0 ? _g : "",
...data.av1 // Alternative scheme 1
? [
data.av1
]
: [],
...data.av2 // Alternative scheme 2
? [
data.av2
]
: []
];
return qrData.join("\n");
}
exports.generateQRData = generateQRData;
function renderQRCode(qrData, type, size, xOrigin = 0, yOrigin = 0) {
const eci = qr_code_generator_js_1.qrcodegen.QrSegment.makeEci(26);
const segments = qr_code_generator_js_1.qrcodegen.QrSegment.makeSegments(qrString);
const qrCode = qr_code_generator_js_1.qrcodegen.QrCode.encodeSegments([eci, ...segments], qr_code_generator_js_1.qrcodegen.QrCode.Ecc.MEDIUM);
const segments = qr_code_generator_js_1.qrcodegen.QrSegment.makeSegments(qrData);
const qrCode = qr_code_generator_js_1.qrcodegen.QrCode.encodeSegments([eci, ...segments], qr_code_generator_js_1.qrcodegen.QrCode.Ecc.MEDIUM, 10, 25);
const blockSize = size / qrCode.size;

@@ -161,3 +102,10 @@ const parts = [];

if (qrCode.getModule(x, y)) {
parts.push(`M ${xPos}, ${yPos} V ${yPos + blockSize} H ${xPos + blockSize} V ${yPos} H ${xPos} Z `);
switch (type) {
case "pdf":
parts.push(`${limitNumber(xOrigin + xPos)} ${limitNumber(yOrigin + yPos)} ${limitNumber(blockSize)} ${limitNumber(blockSize)} re`);
break;
case "svg":
parts.push(`M ${xPos}, ${yPos} V ${yPos + blockSize} H ${xPos + blockSize} V ${yPos} H ${xPos} Z `);
break;
}
}

@@ -168,3 +116,16 @@ }

}
exports.default = generateQRCode;
exports.renderQRCode = renderQRCode;
/**
* Limits the maximum and minimum number possible according to the PDF specifications.
* Borrowed from: https://github.com/foliojs/pdfkit/blob/120c3f9519e49d719a88d22d70139cc9f54d17d8/lib/object.js#L123-L130
* @param n The number to limit
* @returns The limited number
* @throws { RangeError } If the number is out of range.
*/
function limitNumber(n) {
if (n > -1e21 && n < 1e21) {
return Math.round(n * 1e6) / 1e6;
}
throw new RangeError(`unsupported number: ${n}`);
}
//# sourceMappingURL=qr-code.js.map
declare const translations: {
DE: {
paymentPart: string;
acceptancePoint: string;
account: string;
reference: string;
additionalInformation: string;
amount: string;
currency: string;
amount: string;
inFavourOf: string;
payableBy: string;
payableByName: string;
paymentPart: string;
receipt: string;
acceptancePoint: string;
reference: string;
separate: string;
payableBy: string;
payableByName: string;
inFavourOf: string;
};
EN: {
paymentPart: string;
acceptancePoint: string;
account: string;
reference: string;
additionalInformation: string;
amount: string;
currency: string;
amount: string;
inFavourOf: string;
payableBy: string;
payableByName: string;
paymentPart: string;
receipt: string;
reference: string;
separate: string;
};
FR: {
acceptancePoint: string;
separate: string;
account: string;
additionalInformation: string;
amount: string;
currency: string;
inFavourOf: string;
payableBy: string;
payableByName: string;
inFavourOf: string;
paymentPart: string;
receipt: string;
reference: string;
separate: string;
};
IT: {
paymentPart: string;
acceptancePoint: string;
account: string;
reference: string;
additionalInformation: string;
amount: string;
currency: string;
amount: string;
receipt: string;
acceptancePoint: string;
separate: string;
inFavourOf: string;
payableBy: string;
payableByName: string;
inFavourOf: string;
};
FR: {
paymentPart: string;
account: string;
receipt: string;
reference: string;
additionalInformation: string;
currency: string;
amount: string;
receipt: string;
acceptancePoint: string;
separate: string;
payableBy: string;
payableByName: string;
inFavourOf: string;
};
};
export default translations;

@@ -5,56 +5,56 @@ "use strict";

DE: {
paymentPart: "Zahlteil",
acceptancePoint: "Annahmestelle",
account: "Konto / Zahlbar an",
reference: "Referenz",
additionalInformation: "Zusätzliche Informationen",
amount: "Betrag",
currency: "Währung",
amount: "Betrag",
receipt: "Empfangsschein",
acceptancePoint: "Annahmestelle",
separate: "Vor der Einzahlung abzutrennen",
inFavourOf: "Zugunsten",
payableBy: "Zahlbar durch",
payableByName: "Zahlbar durch (Name/Adresse)",
inFavourOf: "Zugunsten"
paymentPart: "Zahlteil",
receipt: "Empfangsschein",
reference: "Referenz",
separate: "Vor der Einzahlung abzutrennen"
},
EN: {
paymentPart: "Payment part",
acceptancePoint: "Acceptance point",
account: "Account / Payable to",
reference: "Reference",
additionalInformation: "Additional information",
amount: "Amount",
currency: "Currency",
amount: "Amount",
receipt: "Receipt",
acceptancePoint: "Acceptance point",
separate: "Separate before paying in",
inFavourOf: "In favour of",
payableBy: "Payable by",
payableByName: "Payable by (name/address)",
inFavourOf: "In favour of"
paymentPart: "Payment part",
receipt: "Receipt",
reference: "Reference",
separate: "Separate before paying in"
},
FR: {
acceptancePoint: "Point de dépôt",
account: "Compte / Payable à",
additionalInformation: "Informations supplémentaires",
amount: "Montant",
currency: "Monnaie",
inFavourOf: "En faveur de",
payableBy: "Payable par",
payableByName: "Payable par (nom/adresse)",
paymentPart: "Section paiement",
receipt: "Récépissé",
reference: "Référence",
separate: "A détacher avant le versement"
},
IT: {
paymentPart: "Sezione pagamento",
acceptancePoint: "Punto di accettazione",
account: "Conto / Pagabile a",
reference: "Riferimento",
additionalInformation: "Informazioni supplementari",
amount: "Importo",
currency: "Valuta",
amount: "Importo",
receipt: "Ricevuta",
acceptancePoint: "Punto di accettazione",
separate: "Da staccare prima del versamento",
inFavourOf: "A favore di",
payableBy: "Pagabile da",
payableByName: "Pagabile da (nome/indirizzo)",
inFavourOf: "A favore di"
},
FR: {
paymentPart: "Section paiement",
account: "Compte / Payable à",
reference: "Référence",
additionalInformation: "Informations supplémentaires",
currency: "Monnaie",
amount: "Montant",
receipt: "Récépissé",
acceptancePoint: "Point de dépôt",
separate: "A détacher avant le versement",
payableBy: "Payable par",
payableByName: "Payable par (nom/adresse)",
inFavourOf: "En faveur de"
paymentPart: "Sezione pagamento",
receipt: "Ricevuta",
reference: "Riferimento",
separate: "Da staccare prima del versamento"
}

@@ -61,0 +61,0 @@ };

@@ -1,7 +0,11 @@

export { PDFTable, PDFRow, PDFColumn } from "../pdf/extended-pdf";
export declare type Currency = "CHF" | "EUR";
export declare type Size = "A4" | "A6/5";
export declare type Languages = "DE" | "EN" | "IT" | "FR";
export { PDFColumn, PDFRow, PDFTable } from "../pdf/table.js";
export type Currency = "CHF" | "EUR";
export type Size = "A4" | "A6" | "A6/5";
export type Languages = "DE" | "EN" | "FR" | "IT";
export interface Data {
/**
* Creditor related data.
*/
creditor: Creditor;
/**
* The currency to be used. **3 characters.**

@@ -11,2 +15,8 @@ */

/**
* Additional information. **Max 140 characters.**
*
* Bill information contain coded information for automated booking of the payment. The data is not forwarded with the payment.
*/
additionalInformation?: string;
/**
* The amount. **Max. 12 digits.**

@@ -16,20 +26,5 @@ */

/**
* A reference number. **Max 27 characters.**
* > QR-IBAN: Maximum 27 characters. Must be filled if a QR-IBAN is used.
* Creditor Reference (ISO 11649): Maximum 25 characters.
*/
reference?: string;
/**
* A message. **Max. 140 characters.**
* > message can be used to indicate the payment purpose or for additional textual information about payments with a structured reference.
*/
message?: string;
/**
* Additional information. **Max 140 characters.**
* > Bill information contain coded information for automated booking of the payment. The data is not forwarded with the payment.
*/
additionalInformation?: string;
/**
* Alternative scheme. **Max. 100 characters.**
* > Parameter character chain of the alternative scheme according to the syntax definition in the [“Alternative scheme” section](https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf)
*
* Parameter character chain of the alternative scheme according to the syntax definition in the [“Alternative scheme” section](https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf)
*/

@@ -39,20 +34,26 @@ av1?: string;

* Alternative scheme. **Max. 100 characters.**
* > Parameter character chain of the alternative scheme according to the syntax definition in the [“Alternative scheme” section](https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf)
*
* Parameter character chain of the alternative scheme according to the syntax definition in the [“Alternative scheme” section](https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf)
*/
av2?: string;
/**
* Creditor related data.
* Debtor related data.
*/
creditor: Creditor;
debtor?: Debtor;
/**
* Debtor related data.
* A message. **Max. 140 characters.**
*
* message can be used to indicate the payment purpose or for additional textual information about payments with a structured reference.
*/
debtor?: Debtor;
message?: string;
/**
* A reference number. **Max 27 characters.**
*
* QR-IBAN: Maximum 27 characters. Must be filled if a QR-IBAN is used.
* Creditor Reference (ISO 11649): Maximum 25 characters.
*/
reference?: string;
}
export interface Debtor {
/**
* Name. **Max. 70 characters.**
*/
name: string;
/**
* Address. **Max 70 characters.**

@@ -62,17 +63,21 @@ */

/**
* Building number. **Max 16 characters.**
* City. **Max 35 characters.**
*/
buildingNumber?: string | number;
city: string;
/**
* Postal code. **Max 16 characters.**
* Country code. **2 characters.**
*/
zip: string | number;
country: string;
/**
* City. **Max 35 characters.**
* Name. **Max. 70 characters.**
*/
city: string;
name: string;
/**
* Country code. **2 characters.**
* Postal code. **Max 16 characters.**
*/
country: string;
zip: number | string;
/**
* Building number. **Max 16 characters.**
*/
buildingNumber?: number | string;
}

@@ -85,3 +90,3 @@ export interface Creditor extends Debtor {

}
export interface PDFOptions {
export interface QRBillOptions {
/**

@@ -93,9 +98,10 @@ * The language with which the bill is rendered.

/**
* The page size.
* @defaultValue `"A6/5"`
* Whether you want render the outlines. This option may be disabled if you use perforated paper.
* @defaultValue `true`
*/
size?: Size;
outlines?: boolean;
/**
* Whether you want to show the scissors icons or the text `Separate before paying in`.
* > **Warning:** Setting **scissors** to false sets **separate** to true. To disable scissors and separate, you have to set both options to false.
* Whether you want to show the scissors icons or the text `Separate before paying in`.
*
* **Warning:** Setting **scissors** to false sets **separate** to true. To disable scissors and separate, you have to set both options to false.
* @defaultValue `true`

@@ -105,4 +111,5 @@ */

/**
* Whether you want to show the text `Separate before paying in` rather than the scissors icons.
* > **Warning:** Setting **separate** to true sets **scissors** to false. To disable scissors and separate, you have to set both options to false.
* Whether you want to show the text `Separate before paying in` rather than the scissors icons.
*
* **Warning:** Setting **separate** to true sets **scissors** to false. To disable scissors and separate, you have to set both options to false.
* @defaultValue `false`

@@ -112,8 +119,10 @@ */

/**
* Whether you want render the outlines. This option may be disabled if you use perforated paper.
* @defaultValue `true`
* The page size.
* @defaultValue `"A6"`
*/
outlines?: boolean;
size?: Size;
}
export interface PDFOptions extends QRBillOptions {
/**
* Whether you want to automatically finalize the PDF. When set to false you are able to add your own content to the PDF using PDFKit.
* Whether you want to automatically finalize the PDF. When set to false you are able to add your own content to the PDF using PDFKit.
* @defaultValue `true`

@@ -120,0 +129,0 @@ */

/**
* Checks whether the given iban is a QR-IBAN or not.
*
* @param iban - The IBAN to be checked.
* @param iban The IBAN to be checked.
* @returns `true` if the given IBAN is a QR-IBAN and `false` otherwise.

@@ -10,4 +9,3 @@ */

* Validates the given IBAN.
*
* @param iban - The IBAN to be checked.
* @param iban The IBAN to be checked.
* @returns `true` if the checksum of the given IBAN is valid and `false` otherwise.

@@ -18,4 +16,3 @@ */

* Formats the given IBAN according the specifications to be easily readable.
*
* @param iban - The IBAN to be formatted.
* @param iban The IBAN to be formatted.
* @returns The formatted IBAN.

@@ -26,11 +23,10 @@ */

* Checks whether the given reference is a QR-Reference or not.
*
* @param reference - The Reference to be checked.
* @param reference The Reference to be checked.
* @returns `true` if the given reference is a QR-Reference and `false` otherwise.
* @remarks The QR-Reference is a 27 digits long string containing only digits. The last digit is the checksum.
*/
export declare function isQRReference(reference: string): boolean;
/**
* Validates the given reference.
*
* @param reference - The reference to be checked.
* Validates the given QR-Reference.
* @param reference The reference to be checked.
* @returns `true` if the given reference is valid and `false` otherwise.

@@ -40,5 +36,23 @@ */

/**
* Checks whether the given reference is a SCOR-Reference or not.
* @param reference The Reference to be checked.
* @returns `true` if the given reference is a SCOR-Reference and `false` otherwise.
* @remarks The SCOR-Reference is an alphanumeric string beginning with 'RF' and containing a 2 digit checksum and a max 21 digits long reference.
*/
export declare function isSCORReference(reference: string): boolean;
/**
* Validates the given SCOR-Reference.
* @param reference The reference to be checked.
* @returns `true` if the given reference is valid and `false` otherwise.
*/
export declare function isSCORReferenceValid(reference: string): boolean;
/**
* Calculates the checksum according to the ISO 11649 standard.
* @param reference The max 21 digits long reference (without the "RF" and the 2 digit checksum) whose checksum should be calculated.
* @returns The calculated checksum as 2 digit string.
*/
export declare function calculateSCORReferenceChecksum(reference: string): string;
/**
* Calculates the checksum according the specifications.
*
* @param reference - The 26 digits long reference (without the checksum) whose checksum should be calculated.
* @param reference The 26 digits long reference (without the checksum) whose checksum should be calculated.
* @returns The calculated checksum.

@@ -49,4 +63,3 @@ */

* Formats the given QR-Reference according the specifications to be easily readable.
*
* @param reference - The QR-Reference to be formatted.
* @param reference The QR-Reference to be formatted.
* @returns The formatted QR-Reference.

@@ -56,5 +69,10 @@ */

/**
* Formats the given SCOR-Reference according the specifications to be easily readable.
* @param reference The SCOR-Reference to be formatted.
* @returns The formatted SCOR-Reference.
*/
export declare function formatSCORReference(reference: string): string;
/**
* Detects the type of the given reference and formats it according the specifications to be easily readable.
*
* @param reference - The reference to be formatted.
* @param reference The reference to be formatted.
* @returns The formatted reference.

@@ -64,12 +82,4 @@ */

/**
* Formats the given SCOR-Reference according the specifications to be easily readable.
*
* @param reference - The SCOR-Reference to be formatted.
* @returns The formatted SCOR-Reference.
*/
export declare function formatSCORReference(reference: string): string;
/**
* Formats the given amount according the specifications to be easily readable.
*
* @param amount - containing the amount to be formatted.
* @param amount containing the amount to be formatted.
* @returns The formatted amount.

@@ -80,4 +90,3 @@ */

* Converts millimeters to points.
*
* @param millimeters - The millimeters you want to convert to points.
* @param millimeters The millimeters you want to convert to points.
* @returns The converted millimeters in points.

@@ -88,4 +97,3 @@ */

* Converts points to millimeters.
*
* @param points - The points you want to convert to millimeters.
* @param points The points you want to convert to millimeters.
* @returns The converted points in millimeters.

@@ -96,4 +104,3 @@ */

* Converts millimeters to pixels.
*
* @param millimeters - The millimeters you want to convert to pixels.
* @param millimeters The millimeters you want to convert to pixels.
* @returns The converted millimeters in pixels.

@@ -104,7 +111,11 @@ */

* Converts pixels to millimeters.
*
* @param pixels - containg the pixels you want to convert to millimeters.
* @param pixels containing the pixels you want to convert to millimeters.
* @returns The converted pixels in millimeters.
*/
export declare function px2mm(pixels: number): number;
export declare function getReferenceType(reference: string | undefined): "QRR" | "SCOR" | "NON";
/**
* Detects the type of the given reference.
* @param reference The reference to get the type of.
* @returns The type of the given reference.
*/
export declare function getReferenceType(reference: string | undefined): "NON" | "QRR" | "SCOR";
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getReferenceType = exports.px2mm = exports.mm2px = exports.pt2mm = exports.mm2pt = exports.formatAmount = exports.formatSCORReference = exports.formatReference = exports.formatQRReference = exports.calculateQRReferenceChecksum = exports.isQRReferenceValid = exports.isQRReference = exports.formatIBAN = exports.isIBANValid = exports.isQRIBAN = void 0;
exports.getReferenceType = exports.px2mm = exports.mm2px = exports.pt2mm = exports.mm2pt = exports.formatAmount = exports.formatReference = exports.formatSCORReference = exports.formatQRReference = exports.calculateQRReferenceChecksum = exports.calculateSCORReferenceChecksum = exports.isSCORReferenceValid = exports.isSCORReference = exports.isQRReferenceValid = exports.isQRReference = exports.formatIBAN = exports.isIBANValid = exports.isQRIBAN = void 0;
/**
* Checks whether the given iban is a QR-IBAN or not.
*
* @param iban - The IBAN to be checked.
* @param iban The IBAN to be checked.
* @returns `true` if the given IBAN is a QR-IBAN and `false` otherwise.

@@ -12,4 +11,4 @@ */

iban = iban.replace(/ /g, "");
const QRIID = iban.substr(4, 5);
return (+QRIID >= 30000 && +QRIID <= 31999);
const QRIID = iban.substring(4, 9);
return +QRIID >= 30000 && +QRIID <= 31999;
}

@@ -19,22 +18,13 @@ exports.isQRIBAN = isQRIBAN;

* Validates the given IBAN.
*
* @param iban - The IBAN to be checked.
* @param iban The IBAN to be checked.
* @returns `true` if the checksum of the given IBAN is valid and `false` otherwise.
*/
function isIBANValid(iban) {
iban = iban.replace(/ /g, "");
iban = iban.toUpperCase();
//-- Move country code + checksum to end
iban = iban.substr(4) + iban.substr(0, 4);
//-- Convert letters to numbers, beginning with A = 10...Z = 35
const A = "A".charCodeAt(0);
const ibanArr = iban.split("");
for (let i = 0; i < ibanArr.length; i++) {
const charCode = ibanArr[i].charCodeAt(0);
if (charCode >= A) {
ibanArr[i] = charCode - A + 10 + "";
}
}
//-- Calculate mod9710
return mod9710(ibanArr.join("")) === 1;
iban = iban
.replace(/ /g, "")
.toUpperCase();
// Move country code + checksum to end
iban = iban.substring(4) + iban.substring(0, 4);
// Calculate mod97
return mod97(iban) === 1;
}

@@ -44,4 +34,3 @@ exports.isIBANValid = isIBANValid;

* Formats the given IBAN according the specifications to be easily readable.
*
* @param iban - The IBAN to be formatted.
* @param iban The IBAN to be formatted.
* @returns The formatted IBAN.

@@ -51,4 +40,5 @@ */

var _a;
iban = iban.replace(/ /g, "");
const ibanArray = iban.replace(/ /g, "").match(/.{1,4}/g);
const ibanArray = iban
.replace(/ /g, "")
.match(/.{1,4}/g);
return (_a = ibanArray === null || ibanArray === void 0 ? void 0 : ibanArray.join(" ")) !== null && _a !== void 0 ? _a : iban;

@@ -59,23 +49,20 @@ }

* Checks whether the given reference is a QR-Reference or not.
*
* @param reference - The Reference to be checked.
* @param reference The Reference to be checked.
* @returns `true` if the given reference is a QR-Reference and `false` otherwise.
* @remarks The QR-Reference is a 27 digits long string containing only digits. The last digit is the checksum.
*/
function isQRReference(reference) {
reference = reference.replace(/ /g, "");
if (reference.length === 27) {
if (!isNaN(+reference)) {
return true;
}
if (reference.length !== 27) {
return false;
}
if (reference.replace(/ /g, "").length <= 25) {
if (!/^\d+$/.test(reference)) {
return false;
}
throw new Error("Reference is not valid.");
return true;
}
exports.isQRReference = isQRReference;
/**
* Validates the given reference.
*
* @param reference - The reference to be checked.
* Validates the given QR-Reference.
* @param reference The reference to be checked.
* @returns `true` if the given reference is valid and `false` otherwise.

@@ -85,18 +72,67 @@ */

reference = reference.replace(/ /g, "");
if (!isQRReference(reference)) {
return false;
}
const ref = reference.substring(0, 26);
const checksum = reference.substring(26, 27);
const calculatedChecksum = calculateQRReferenceChecksum(ref);
return calculatedChecksum === checksum;
}
exports.isQRReferenceValid = isQRReferenceValid;
/**
* Checks whether the given reference is a SCOR-Reference or not.
* @param reference The Reference to be checked.
* @returns `true` if the given reference is a SCOR-Reference and `false` otherwise.
* @remarks The SCOR-Reference is an alphanumeric string beginning with 'RF' and containing a 2 digit checksum and a max 21 digits long reference.
*/
function isSCORReference(reference) {
reference = reference.replace(/ /g, "").toUpperCase();
if (!reference.startsWith("RF")) {
return false;
}
if (reference.length < 5 || reference.length > 25) {
return false;
}
if (!/^[\dA-Z]+$/.test(reference)) {
return false;
}
return true;
}
exports.isSCORReference = isSCORReference;
/**
* Validates the given SCOR-Reference.
* @param reference The reference to be checked.
* @returns `true` if the given reference is valid and `false` otherwise.
*/
function isSCORReferenceValid(reference) {
reference = reference.replace(/ /g, "");
if (!isSCORReference(reference)) {
return false;
}
const ref = reference.substring(4);
if (Number.isNaN(reference)) {
return false;
}
if (reference.length !== 27) {
const checksum = reference.substring(2, 4);
if (Number.isNaN(checksum)) {
return false;
}
const ref = reference.substr(0, 26);
const checksum = reference.substr(26, 1);
const calculatedChecksum = calculateQRReferenceChecksum(ref);
const calculatedChecksum = calculateSCORReferenceChecksum(ref);
return calculatedChecksum === checksum;
}
exports.isQRReferenceValid = isQRReferenceValid;
exports.isSCORReferenceValid = isSCORReferenceValid;
/**
* Calculates the checksum according to the ISO 11649 standard.
* @param reference The max 21 digits long reference (without the "RF" and the 2 digit checksum) whose checksum should be calculated.
* @returns The calculated checksum as 2 digit string.
*/
function calculateSCORReferenceChecksum(reference) {
reference = reference.replace(/ /g, "");
const checksum = 98 - mod97(`${reference}RF00`);
return `${checksum}`.padStart(2, "0");
}
exports.calculateSCORReferenceChecksum = calculateSCORReferenceChecksum;
/**
* Calculates the checksum according the specifications.
*
* @param reference - The 26 digits long reference (without the checksum) whose checksum should be calculated.
* @param reference The 26 digits long reference (without the checksum) whose checksum should be calculated.
* @returns The calculated checksum.

@@ -110,20 +146,30 @@ */

* Formats the given QR-Reference according the specifications to be easily readable.
*
* @param reference - The QR-Reference to be formatted.
* @param reference The QR-Reference to be formatted.
* @returns The formatted QR-Reference.
*/
function formatQRReference(reference) {
reference = reference.replace(/ /g, "");
let referenceArray = [];
const match = reference.substring(2).match(/.{1,5}/g);
if (match !== null) {
referenceArray = [reference.substring(0, 2)].concat(match);
}
return referenceArray.join(" ");
const trimmedReference = reference.replace(/ /g, "");
const match = trimmedReference
.substring(2)
.match(/.{1,5}/g);
return match
? `${trimmedReference.substring(0, 2)} ${match.join(" ")}`
: reference;
}
exports.formatQRReference = formatQRReference;
/**
* Formats the given SCOR-Reference according the specifications to be easily readable.
* @param reference The SCOR-Reference to be formatted.
* @returns The formatted SCOR-Reference.
*/
function formatSCORReference(reference) {
var _a;
const trimmedReference = reference.replace(/ /g, "");
const match = trimmedReference.match(/.{1,4}/g);
return (_a = match === null || match === void 0 ? void 0 : match.join(" ")) !== null && _a !== void 0 ? _a : reference;
}
exports.formatSCORReference = formatSCORReference;
/**
* Detects the type of the given reference and formats it according the specifications to be easily readable.
*
* @param reference - The reference to be formatted.
* @param reference The reference to be formatted.
* @returns The formatted reference.

@@ -143,21 +189,4 @@ */

/**
* Formats the given SCOR-Reference according the specifications to be easily readable.
*
* @param reference - The SCOR-Reference to be formatted.
* @returns The formatted SCOR-Reference.
*/
function formatSCORReference(reference) {
reference = reference.replace(/ /g, "");
let referenceArray = [];
const match = reference.match(/.{1,4}/g);
if (match !== null) {
referenceArray = match;
}
return referenceArray.join(" ");
}
exports.formatSCORReference = formatSCORReference;
/**
* Formats the given amount according the specifications to be easily readable.
*
* @param amount - containing the amount to be formatted.
* @param amount containing the amount to be formatted.
* @returns The formatted amount.

@@ -172,7 +201,7 @@ */

if (i === 3) {
formattedAmountWithoutDecimals = " " + formattedAmountWithoutDecimals;
formattedAmountWithoutDecimals = ` ${formattedAmountWithoutDecimals}`;
i = 0;
}
}
return formattedAmountWithoutDecimals.trim() + "." + amountArray[1];
return `${formattedAmountWithoutDecimals.trim()}.${amountArray[1]}`;
}

@@ -182,4 +211,3 @@ exports.formatAmount = formatAmount;

* Converts millimeters to points.
*
* @param millimeters - The millimeters you want to convert to points.
* @param millimeters The millimeters you want to convert to points.
* @returns The converted millimeters in points.

@@ -193,4 +221,3 @@ */

* Converts points to millimeters.
*
* @param points - The points you want to convert to millimeters.
* @param points The points you want to convert to millimeters.
* @returns The converted points in millimeters.

@@ -204,4 +231,3 @@ */

* Converts millimeters to pixels.
*
* @param millimeters - The millimeters you want to convert to pixels.
* @param millimeters The millimeters you want to convert to pixels.
* @returns The converted millimeters in pixels.

@@ -215,4 +241,3 @@ */

* Converts pixels to millimeters.
*
* @param pixels - containg the pixels you want to convert to millimeters.
* @param pixels containing the pixels you want to convert to millimeters.
* @returns The converted pixels in millimeters.

@@ -224,2 +249,7 @@ */

exports.px2mm = px2mm;
/**
* Detects the type of the given reference.
* @param reference The reference to get the type of.
* @returns The type of the given reference.
*/
function getReferenceType(reference) {

@@ -237,17 +267,37 @@ if (typeof reference === "undefined") {

exports.getReferenceType = getReferenceType;
function mod9710(iban) {
let remainder = iban;
let block;
while (remainder.length > 2) {
block = remainder.slice(0, 9);
remainder = parseInt(block, 10) % 97 + remainder.slice(block.length);
/**
* Calculates the checksum according to the ISO 7064 standard.
* @param input The input whose checksum should be calculated.
* @returns The calculated checksum.
*/
function mod97(input) {
// Convert letters to numbers (A = 10, B = 11, ..., Z = 35)
const charCodeOfLetterA = "A".charCodeAt(0);
const inputArr = input.split("");
for (let i = 0; i < inputArr.length; i++) {
const charCode = inputArr[i].charCodeAt(0);
if (charCode >= charCodeOfLetterA) {
inputArr[i] = `${charCode - charCodeOfLetterA + 10}`;
}
}
return parseInt(remainder, 10) % 97;
input = inputArr.join("");
// Apply the mod97 algorithm
let remainder = 0;
for (let i = 0; i < input.length; i++) {
const digit = +input[i];
remainder = (10 * remainder + digit) % 97;
}
return remainder;
}
function mod10(code) {
code = code.replace(/ /g, "");
/**
* Calculates the checksum according to the ISO 7812-1 standard.
* @param input The input whose checksum should be calculated.
* @returns The calculated checksum.
*/
function mod10(input) {
const trimmedInput = input.replace(/ /g, "");
const table = [0, 9, 4, 6, 8, 2, 7, 1, 3, 5];
let carry = 0;
for (let i = 0; i < code.length; i++) {
carry = table[(carry + parseInt(code.substr(i, 1), 10)) % 10];
for (let i = 0; i < trimmedInput.length; i++) {
carry = table[(carry + parseInt(trimmedInput.substring(i, i + 1), 10)) % 10];
}

@@ -254,0 +304,0 @@ return ((10 - carry) % 10).toString();

export declare const arial8pt: {
"32": number;
"33": number;
"34": number;
"35": number;
"36": number;
"37": number;
"38": number;
"39": number;
"40": number;
"41": number;
"42": number;
"43": number;
"44": number;
"45": number;
"46": number;
"47": number;
"48": number;
"49": number;
"50": number;
"51": number;
"52": number;
"53": number;
"54": number;
"55": number;
"56": number;
"57": number;
"58": number;
"59": number;
"60": number;
"61": number;
"62": number;
"63": number;
"64": number;
"65": number;
"66": number;
"67": number;
"68": number;
"69": number;
"70": number;
"71": number;
"72": number;
"73": number;
"74": number;
"75": number;
"76": number;
"77": number;
"78": number;
"79": number;
"80": number;
"81": number;
"82": number;
"83": number;
"84": number;
"85": number;
"86": number;
"87": number;
"88": number;
"89": number;
"90": number;
"91": number;
"92": number;
"93": number;
"94": number;
"95": number;
"96": number;
"97": number;
"98": number;
"99": number;
"100": number;
"101": number;
"102": number;
"103": number;
"104": number;
"105": number;
"106": number;
"107": number;
"108": number;
"109": number;
"110": number;
"111": number;
"112": number;
"113": number;
"114": number;
"115": number;
"116": number;
"117": number;
"118": number;
"119": number;
"120": number;
"121": number;
"122": number;
"123": number;
"124": number;
"125": number;
"126": number;
"160": number;
"161": number;
"162": number;
"163": number;
"164": number;
"165": number;
"166": number;
"167": number;
"168": number;
"169": number;
"170": number;
"171": number;
"172": number;
"173": number;
"174": number;
"175": number;
"176": number;
"177": number;
"178": number;
"179": number;
"180": number;
"181": number;
"182": number;
"183": number;
"184": number;
"185": number;
"186": number;
"187": number;
"188": number;
"189": number;
"190": number;
"191": number;
"192": number;
"193": number;
"194": number;
"195": number;
"196": number;
"197": number;
"198": number;
"199": number;
"200": number;
"201": number;
"202": number;
"203": number;
"204": number;
"205": number;
"206": number;
"207": number;
"208": number;
"209": number;
"210": number;
"211": number;
"212": number;
"213": number;
"214": number;
"215": number;
"216": number;
"217": number;
"218": number;
"219": number;
"220": number;
"221": number;
"222": number;
"223": number;
"224": number;
"225": number;
"226": number;
"227": number;
"228": number;
"229": number;
"230": number;
"231": number;
"232": number;
"233": number;
"234": number;
"235": number;
"236": number;
"237": number;
"238": number;
"239": number;
"240": number;
"241": number;
"242": number;
"243": number;
"244": number;
"245": number;
"246": number;
"247": number;
"248": number;
"249": number;
"250": number;
"251": number;
"252": number;
"253": number;
"254": number;
100: number;
101: number;
102: number;
103: number;
104: number;
105: number;
106: number;
107: number;
108: number;
109: number;
110: number;
111: number;
112: number;
113: number;
114: number;
115: number;
116: number;
117: number;
118: number;
119: number;
120: number;
121: number;
122: number;
123: number;
124: number;
125: number;
126: number;
160: number;
161: number;
162: number;
163: number;
164: number;
165: number;
166: number;
167: number;
168: number;
169: number;
170: number;
171: number;
172: number;
173: number;
174: number;
175: number;
176: number;
177: number;
178: number;
179: number;
180: number;
181: number;
182: number;
183: number;
184: number;
185: number;
186: number;
187: number;
188: number;
189: number;
190: number;
191: number;
192: number;
193: number;
194: number;
195: number;
196: number;
197: number;
198: number;
199: number;
200: number;
201: number;
202: number;
203: number;
204: number;
205: number;
206: number;
207: number;
208: number;
209: number;
210: number;
211: number;
212: number;
213: number;
214: number;
215: number;
216: number;
217: number;
218: number;
219: number;
220: number;
221: number;
222: number;
223: number;
224: number;
225: number;
226: number;
227: number;
228: number;
229: number;
230: number;
231: number;
232: number;
233: number;
234: number;
235: number;
236: number;
237: number;
238: number;
239: number;
240: number;
241: number;
242: number;
243: number;
244: number;
245: number;
246: number;
247: number;
248: number;
249: number;
250: number;
251: number;
252: number;
253: number;
254: number;
32: number;
33: number;
34: number;
35: number;
36: number;
37: number;
38: number;
39: number;
40: number;
41: number;
42: number;
43: number;
44: number;
45: number;
46: number;
47: number;
48: number;
49: number;
50: number;
51: number;
52: number;
53: number;
54: number;
55: number;
56: number;
57: number;
58: number;
59: number;
60: number;
61: number;
62: number;
63: number;
64: number;
65: number;
66: number;
67: number;
68: number;
69: number;
70: number;
71: number;
72: number;
73: number;
74: number;
75: number;
76: number;
77: number;
78: number;
79: number;
80: number;
81: number;
82: number;
83: number;
84: number;
85: number;
86: number;
87: number;
88: number;
89: number;
90: number;
91: number;
92: number;
93: number;
94: number;
95: number;
96: number;
97: number;
98: number;
99: number;
};
export declare const arial10pt: {
"32": number;
"33": number;
"34": number;
"35": number;
"36": number;
"37": number;
"38": number;
"39": number;
"40": number;
"41": number;
"42": number;
"43": number;
"44": number;
"45": number;
"46": number;
"47": number;
"48": number;
"49": number;
"50": number;
"51": number;
"52": number;
"53": number;
"54": number;
"55": number;
"56": number;
"57": number;
"58": number;
"59": number;
"60": number;
"61": number;
"62": number;
"63": number;
"64": number;
"65": number;
"66": number;
"67": number;
"68": number;
"69": number;
"70": number;
"71": number;
"72": number;
"73": number;
"74": number;
"75": number;
"76": number;
"77": number;
"78": number;
"79": number;
"80": number;
"81": number;
"82": number;
"83": number;
"84": number;
"85": number;
"86": number;
"87": number;
"88": number;
"89": number;
"90": number;
"91": number;
"92": number;
"93": number;
"94": number;
"95": number;
"96": number;
"97": number;
"98": number;
"99": number;
"100": number;
"101": number;
"102": number;
"103": number;
"104": number;
"105": number;
"106": number;
"107": number;
"108": number;
"109": number;
"110": number;
"111": number;
"112": number;
"113": number;
"114": number;
"115": number;
"116": number;
"117": number;
"118": number;
"119": number;
"120": number;
"121": number;
"122": number;
"123": number;
"124": number;
"125": number;
"126": number;
"160": number;
"161": number;
"162": number;
"163": number;
"164": number;
"165": number;
"166": number;
"167": number;
"168": number;
"169": number;
"170": number;
"171": number;
"172": number;
"173": number;
"174": number;
"175": number;
"176": number;
"177": number;
"178": number;
"179": number;
"180": number;
"181": number;
"182": number;
"183": number;
"184": number;
"185": number;
"186": number;
"187": number;
"188": number;
"189": number;
"190": number;
"191": number;
"192": number;
"193": number;
"194": number;
"195": number;
"196": number;
"197": number;
"198": number;
"199": number;
"200": number;
"201": number;
"202": number;
"203": number;
"204": number;
"205": number;
"206": number;
"207": number;
"208": number;
"209": number;
"210": number;
"211": number;
"212": number;
"213": number;
"214": number;
"215": number;
"216": number;
"217": number;
"218": number;
"219": number;
"220": number;
"221": number;
"222": number;
"223": number;
"224": number;
"225": number;
"226": number;
"227": number;
"228": number;
"229": number;
"230": number;
"231": number;
"232": number;
"233": number;
"234": number;
"235": number;
"236": number;
"237": number;
"238": number;
"239": number;
"240": number;
"241": number;
"242": number;
"243": number;
"244": number;
"245": number;
"246": number;
"247": number;
"248": number;
"249": number;
"250": number;
"251": number;
"252": number;
"253": number;
"254": number;
100: number;
101: number;
102: number;
103: number;
104: number;
105: number;
106: number;
107: number;
108: number;
109: number;
110: number;
111: number;
112: number;
113: number;
114: number;
115: number;
116: number;
117: number;
118: number;
119: number;
120: number;
121: number;
122: number;
123: number;
124: number;
125: number;
126: number;
160: number;
161: number;
162: number;
163: number;
164: number;
165: number;
166: number;
167: number;
168: number;
169: number;
170: number;
171: number;
172: number;
173: number;
174: number;
175: number;
176: number;
177: number;
178: number;
179: number;
180: number;
181: number;
182: number;
183: number;
184: number;
185: number;
186: number;
187: number;
188: number;
189: number;
190: number;
191: number;
192: number;
193: number;
194: number;
195: number;
196: number;
197: number;
198: number;
199: number;
200: number;
201: number;
202: number;
203: number;
204: number;
205: number;
206: number;
207: number;
208: number;
209: number;
210: number;
211: number;
212: number;
213: number;
214: number;
215: number;
216: number;
217: number;
218: number;
219: number;
220: number;
221: number;
222: number;
223: number;
224: number;
225: number;
226: number;
227: number;
228: number;
229: number;
230: number;
231: number;
232: number;
233: number;
234: number;
235: number;
236: number;
237: number;
238: number;
239: number;
240: number;
241: number;
242: number;
243: number;
244: number;
245: number;
246: number;
247: number;
248: number;
249: number;
250: number;
251: number;
252: number;
253: number;
254: number;
32: number;
33: number;
34: number;
35: number;
36: number;
37: number;
38: number;
39: number;
40: number;
41: number;
42: number;
43: number;
44: number;
45: number;
46: number;
47: number;
48: number;
49: number;
50: number;
51: number;
52: number;
53: number;
54: number;
55: number;
56: number;
57: number;
58: number;
59: number;
60: number;
61: number;
62: number;
63: number;
64: number;
65: number;
66: number;
67: number;
68: number;
69: number;
70: number;
71: number;
72: number;
73: number;
74: number;
75: number;
76: number;
77: number;
78: number;
79: number;
80: number;
81: number;
82: number;
83: number;
84: number;
85: number;
86: number;
87: number;
88: number;
89: number;
90: number;
91: number;
92: number;
93: number;
94: number;
95: number;
96: number;
97: number;
98: number;
99: number;
};
export declare function calculateTextWidth(text: string, size: "8pt" | "10pt"): number;

@@ -5,384 +5,384 @@ "use strict";

exports.arial8pt = {
"32": 3.05615234375,
"33": 3.05615234375,
"34": 3.90478515625,
"35": 6.11767578125,
"36": 6.11767578125,
"37": 9.78076171875,
"38": 7.3369140625,
"39": 2.10009765625,
"40": 3.6630859375,
"41": 3.6630859375,
"42": 4.28076171875,
"43": 6.423828125,
"44": 3.05615234375,
"45": 3.6630859375,
"46": 3.05615234375,
"47": 3.05615234375,
"48": 6.11767578125,
"49": 6.11767578125,
"50": 6.11767578125,
"51": 6.11767578125,
"52": 6.11767578125,
"53": 6.11767578125,
"54": 6.11767578125,
"55": 6.11767578125,
"56": 6.11767578125,
"57": 6.11767578125,
"58": 3.05615234375,
"59": 3.05615234375,
"60": 6.423828125,
"61": 6.423828125,
"62": 6.423828125,
"63": 6.11767578125,
"64": 11.16650390625,
"65": 7.3369140625,
"66": 7.3369140625,
"67": 7.94384765625,
"68": 7.94384765625,
"69": 7.3369140625,
"70": 6.71923828125,
"71": 8.55615234375,
"72": 7.94384765625,
"73": 3.05615234375,
"74": 5.5,
"75": 7.3369140625,
"76": 6.11767578125,
"77": 9.1630859375,
"78": 7.94384765625,
"79": 8.55615234375,
"80": 7.3369140625,
"81": 8.55615234375,
"82": 7.94384765625,
"83": 7.3369140625,
"84": 6.71923828125,
"85": 7.94384765625,
"86": 7.3369140625,
"87": 10.38232421875,
"88": 7.3369140625,
"89": 7.3369140625,
"90": 6.71923828125,
"91": 3.05615234375,
"92": 3.05615234375,
"93": 3.05615234375,
"94": 5.16162109375,
"95": 6.11767578125,
"96": 3.6630859375,
"97": 6.11767578125,
"98": 6.11767578125,
"99": 5.5,
"100": 6.11767578125,
"101": 6.11767578125,
"102": 3.05615234375,
"103": 6.11767578125,
"104": 6.11767578125,
"105": 2.44384765625,
"106": 2.44384765625,
"107": 5.5,
"108": 2.44384765625,
"109": 9.1630859375,
"110": 6.11767578125,
"111": 6.11767578125,
"112": 6.11767578125,
"113": 6.11767578125,
"114": 3.6630859375,
"115": 5.5,
"116": 3.05615234375,
"117": 6.11767578125,
"118": 5.5,
"119": 7.94384765625,
"120": 5.5,
"121": 5.5,
"122": 5.5,
"123": 3.673828125,
"124": 2.857421875,
"125": 3.673828125,
"126": 6.423828125,
"160": 3.05615234375,
"161": 3.6630859375,
"162": 6.11767578125,
"163": 6.11767578125,
"164": 6.11767578125,
"165": 6.11767578125,
"166": 2.857421875,
"167": 6.11767578125,
"168": 3.6630859375,
"169": 8.10498046875,
"170": 4.0712890625,
"171": 6.11767578125,
"172": 6.423828125,
"173": 0,
"174": 8.10498046875,
"175": 6.07470703125,
"176": 4.39892578125,
"177": 6.037109375,
"178": 3.6630859375,
"179": 3.6630859375,
"180": 3.6630859375,
"181": 6.337890625,
"182": 5.908203125,
"183": 3.6630859375,
"184": 3.6630859375,
"185": 3.6630859375,
"186": 4.017578125,
"187": 6.11767578125,
"188": 9.173828125,
"189": 9.173828125,
"190": 9.173828125,
"191": 6.71923828125,
"192": 7.3369140625,
"193": 7.3369140625,
"194": 7.3369140625,
"195": 7.3369140625,
"196": 7.3369140625,
"197": 7.3369140625,
"198": 11,
"199": 7.94384765625,
"200": 7.3369140625,
"201": 7.3369140625,
"202": 7.3369140625,
"203": 7.3369140625,
"204": 3.05615234375,
"205": 3.05615234375,
"206": 3.05615234375,
"207": 3.05615234375,
"208": 7.94384765625,
"209": 7.94384765625,
"210": 8.55615234375,
"211": 8.55615234375,
"212": 8.55615234375,
"213": 8.55615234375,
"214": 8.55615234375,
"215": 6.423828125,
"216": 8.55615234375,
"217": 7.94384765625,
"218": 7.94384765625,
"219": 7.94384765625,
"220": 7.94384765625,
"221": 7.3369140625,
"222": 7.3369140625,
"223": 6.71923828125,
"224": 6.11767578125,
"225": 6.11767578125,
"226": 6.11767578125,
"227": 6.11767578125,
"228": 6.11767578125,
"229": 6.11767578125,
"230": 9.78076171875,
"231": 5.5,
"232": 6.11767578125,
"233": 6.11767578125,
"234": 6.11767578125,
"235": 6.11767578125,
"236": 3.05615234375,
"237": 3.05615234375,
"238": 3.05615234375,
"239": 3.05615234375,
"240": 6.11767578125,
"241": 6.11767578125,
"242": 6.11767578125,
"243": 6.11767578125,
"244": 6.11767578125,
"245": 6.11767578125,
"246": 6.11767578125,
"247": 6.037109375,
"248": 6.71923828125,
"249": 6.11767578125,
"250": 6.11767578125,
"251": 6.11767578125,
"252": 6.11767578125,
"253": 5.5,
"254": 6.11767578125
100: 6.11767578125,
101: 6.11767578125,
102: 3.05615234375,
103: 6.11767578125,
104: 6.11767578125,
105: 2.44384765625,
106: 2.44384765625,
107: 5.5,
108: 2.44384765625,
109: 9.1630859375,
110: 6.11767578125,
111: 6.11767578125,
112: 6.11767578125,
113: 6.11767578125,
114: 3.6630859375,
115: 5.5,
116: 3.05615234375,
117: 6.11767578125,
118: 5.5,
119: 7.94384765625,
120: 5.5,
121: 5.5,
122: 5.5,
123: 3.673828125,
124: 2.857421875,
125: 3.673828125,
126: 6.423828125,
160: 3.05615234375,
161: 3.6630859375,
162: 6.11767578125,
163: 6.11767578125,
164: 6.11767578125,
165: 6.11767578125,
166: 2.857421875,
167: 6.11767578125,
168: 3.6630859375,
169: 8.10498046875,
170: 4.0712890625,
171: 6.11767578125,
172: 6.423828125,
173: 0,
174: 8.10498046875,
175: 6.07470703125,
176: 4.39892578125,
177: 6.037109375,
178: 3.6630859375,
179: 3.6630859375,
180: 3.6630859375,
181: 6.337890625,
182: 5.908203125,
183: 3.6630859375,
184: 3.6630859375,
185: 3.6630859375,
186: 4.017578125,
187: 6.11767578125,
188: 9.173828125,
189: 9.173828125,
190: 9.173828125,
191: 6.71923828125,
192: 7.3369140625,
193: 7.3369140625,
194: 7.3369140625,
195: 7.3369140625,
196: 7.3369140625,
197: 7.3369140625,
198: 11,
199: 7.94384765625,
200: 7.3369140625,
201: 7.3369140625,
202: 7.3369140625,
203: 7.3369140625,
204: 3.05615234375,
205: 3.05615234375,
206: 3.05615234375,
207: 3.05615234375,
208: 7.94384765625,
209: 7.94384765625,
210: 8.55615234375,
211: 8.55615234375,
212: 8.55615234375,
213: 8.55615234375,
214: 8.55615234375,
215: 6.423828125,
216: 8.55615234375,
217: 7.94384765625,
218: 7.94384765625,
219: 7.94384765625,
220: 7.94384765625,
221: 7.3369140625,
222: 7.3369140625,
223: 6.71923828125,
224: 6.11767578125,
225: 6.11767578125,
226: 6.11767578125,
227: 6.11767578125,
228: 6.11767578125,
229: 6.11767578125,
230: 9.78076171875,
231: 5.5,
232: 6.11767578125,
233: 6.11767578125,
234: 6.11767578125,
235: 6.11767578125,
236: 3.05615234375,
237: 3.05615234375,
238: 3.05615234375,
239: 3.05615234375,
240: 6.11767578125,
241: 6.11767578125,
242: 6.11767578125,
243: 6.11767578125,
244: 6.11767578125,
245: 6.11767578125,
246: 6.11767578125,
247: 6.037109375,
248: 6.71923828125,
249: 6.11767578125,
250: 6.11767578125,
251: 6.11767578125,
252: 6.11767578125,
253: 5.5,
254: 6.11767578125,
32: 3.05615234375,
33: 3.05615234375,
34: 3.90478515625,
35: 6.11767578125,
36: 6.11767578125,
37: 9.78076171875,
38: 7.3369140625,
39: 2.10009765625,
40: 3.6630859375,
41: 3.6630859375,
42: 4.28076171875,
43: 6.423828125,
44: 3.05615234375,
45: 3.6630859375,
46: 3.05615234375,
47: 3.05615234375,
48: 6.11767578125,
49: 6.11767578125,
50: 6.11767578125,
51: 6.11767578125,
52: 6.11767578125,
53: 6.11767578125,
54: 6.11767578125,
55: 6.11767578125,
56: 6.11767578125,
57: 6.11767578125,
58: 3.05615234375,
59: 3.05615234375,
60: 6.423828125,
61: 6.423828125,
62: 6.423828125,
63: 6.11767578125,
64: 11.16650390625,
65: 7.3369140625,
66: 7.3369140625,
67: 7.94384765625,
68: 7.94384765625,
69: 7.3369140625,
70: 6.71923828125,
71: 8.55615234375,
72: 7.94384765625,
73: 3.05615234375,
74: 5.5,
75: 7.3369140625,
76: 6.11767578125,
77: 9.1630859375,
78: 7.94384765625,
79: 8.55615234375,
80: 7.3369140625,
81: 8.55615234375,
82: 7.94384765625,
83: 7.3369140625,
84: 6.71923828125,
85: 7.94384765625,
86: 7.3369140625,
87: 10.38232421875,
88: 7.3369140625,
89: 7.3369140625,
90: 6.71923828125,
91: 3.05615234375,
92: 3.05615234375,
93: 3.05615234375,
94: 5.16162109375,
95: 6.11767578125,
96: 3.6630859375,
97: 6.11767578125,
98: 6.11767578125,
99: 5.5
};
exports.arial10pt = {
"32": 3.61181640625,
"33": 3.61181640625,
"34": 4.61474609375,
"35": 7.22998046875,
"36": 7.22998046875,
"37": 11.55908203125,
"38": 8.6708984375,
"39": 2.48193359375,
"40": 4.3291015625,
"41": 4.3291015625,
"42": 5.05908203125,
"43": 7.591796875,
"44": 3.61181640625,
"45": 4.3291015625,
"46": 3.61181640625,
"47": 3.61181640625,
"48": 7.22998046875,
"49": 7.22998046875,
"50": 7.22998046875,
"51": 7.22998046875,
"52": 7.22998046875,
"53": 7.22998046875,
"54": 7.22998046875,
"55": 7.22998046875,
"56": 7.22998046875,
"57": 7.22998046875,
"58": 3.61181640625,
"59": 3.61181640625,
"60": 7.591796875,
"61": 7.591796875,
"62": 7.591796875,
"63": 7.22998046875,
"64": 13.19677734375,
"65": 8.6708984375,
"66": 8.6708984375,
"67": 9.38818359375,
"68": 9.38818359375,
"69": 8.6708984375,
"70": 7.94091796875,
"71": 10.11181640625,
"72": 9.38818359375,
"73": 3.61181640625,
"74": 6.5,
"75": 8.6708984375,
"76": 7.22998046875,
"77": 10.8291015625,
"78": 9.38818359375,
"79": 10.11181640625,
"80": 8.6708984375,
"81": 10.11181640625,
"82": 9.38818359375,
"83": 8.6708984375,
"84": 7.94091796875,
"85": 9.38818359375,
"86": 8.6708984375,
"87": 12.27001953125,
"88": 8.6708984375,
"89": 8.6708984375,
"90": 7.94091796875,
"91": 3.61181640625,
"92": 3.61181640625,
"93": 3.61181640625,
"94": 6.10009765625,
"95": 7.22998046875,
"96": 4.3291015625,
"97": 7.22998046875,
"98": 7.22998046875,
"99": 6.5,
"100": 7.22998046875,
"101": 7.22998046875,
"102": 3.61181640625,
"103": 7.22998046875,
"104": 7.22998046875,
"105": 2.88818359375,
"106": 2.88818359375,
"107": 6.5,
"108": 2.88818359375,
"109": 10.8291015625,
"110": 7.22998046875,
"111": 7.22998046875,
"112": 7.22998046875,
"113": 7.22998046875,
"114": 4.3291015625,
"115": 6.5,
"116": 3.61181640625,
"117": 7.22998046875,
"118": 6.5,
"119": 9.38818359375,
"120": 6.5,
"121": 6.5,
"122": 6.5,
"123": 4.341796875,
"124": 3.376953125,
"125": 4.341796875,
"126": 7.591796875,
"160": 3.61181640625,
"161": 4.3291015625,
"162": 7.22998046875,
"163": 7.22998046875,
"164": 7.22998046875,
"165": 7.22998046875,
"166": 3.376953125,
"167": 7.22998046875,
"168": 4.3291015625,
"169": 9.57861328125,
"170": 4.8115234375,
"171": 7.22998046875,
"172": 7.591796875,
"173": 0,
"174": 9.57861328125,
"175": 7.17919921875,
"176": 5.19873046875,
"177": 7.134765625,
"178": 4.3291015625,
"179": 4.3291015625,
"180": 4.3291015625,
"181": 7.490234375,
"182": 6.982421875,
"183": 4.3291015625,
"184": 4.3291015625,
"185": 4.3291015625,
"186": 4.748046875,
"187": 7.22998046875,
"188": 10.841796875,
"189": 10.841796875,
"190": 10.841796875,
"191": 7.94091796875,
"192": 8.6708984375,
"193": 8.6708984375,
"194": 8.6708984375,
"195": 8.6708984375,
"196": 8.6708984375,
"197": 8.6708984375,
"198": 13,
"199": 9.38818359375,
"200": 8.6708984375,
"201": 8.6708984375,
"202": 8.6708984375,
"203": 8.6708984375,
"204": 3.61181640625,
"205": 3.61181640625,
"206": 3.61181640625,
"207": 3.61181640625,
"208": 9.38818359375,
"209": 9.38818359375,
"210": 10.11181640625,
"211": 10.11181640625,
"212": 10.11181640625,
"213": 10.11181640625,
"214": 10.11181640625,
"215": 7.591796875,
"216": 10.11181640625,
"217": 9.38818359375,
"218": 9.38818359375,
"219": 9.38818359375,
"220": 9.38818359375,
"221": 8.6708984375,
"222": 8.6708984375,
"223": 7.94091796875,
"224": 7.22998046875,
"225": 7.22998046875,
"226": 7.22998046875,
"227": 7.22998046875,
"228": 7.22998046875,
"229": 7.22998046875,
"230": 11.55908203125,
"231": 6.5,
"232": 7.22998046875,
"233": 7.22998046875,
"234": 7.22998046875,
"235": 7.22998046875,
"236": 3.61181640625,
"237": 3.61181640625,
"238": 3.61181640625,
"239": 3.61181640625,
"240": 7.22998046875,
"241": 7.22998046875,
"242": 7.22998046875,
"243": 7.22998046875,
"244": 7.22998046875,
"245": 7.22998046875,
"246": 7.22998046875,
"247": 7.134765625,
"248": 7.94091796875,
"249": 7.22998046875,
"250": 7.22998046875,
"251": 7.22998046875,
"252": 7.22998046875,
"253": 6.5,
"254": 7.22998046875
100: 7.22998046875,
101: 7.22998046875,
102: 3.61181640625,
103: 7.22998046875,
104: 7.22998046875,
105: 2.88818359375,
106: 2.88818359375,
107: 6.5,
108: 2.88818359375,
109: 10.8291015625,
110: 7.22998046875,
111: 7.22998046875,
112: 7.22998046875,
113: 7.22998046875,
114: 4.3291015625,
115: 6.5,
116: 3.61181640625,
117: 7.22998046875,
118: 6.5,
119: 9.38818359375,
120: 6.5,
121: 6.5,
122: 6.5,
123: 4.341796875,
124: 3.376953125,
125: 4.341796875,
126: 7.591796875,
160: 3.61181640625,
161: 4.3291015625,
162: 7.22998046875,
163: 7.22998046875,
164: 7.22998046875,
165: 7.22998046875,
166: 3.376953125,
167: 7.22998046875,
168: 4.3291015625,
169: 9.57861328125,
170: 4.8115234375,
171: 7.22998046875,
172: 7.591796875,
173: 0,
174: 9.57861328125,
175: 7.17919921875,
176: 5.19873046875,
177: 7.134765625,
178: 4.3291015625,
179: 4.3291015625,
180: 4.3291015625,
181: 7.490234375,
182: 6.982421875,
183: 4.3291015625,
184: 4.3291015625,
185: 4.3291015625,
186: 4.748046875,
187: 7.22998046875,
188: 10.841796875,
189: 10.841796875,
190: 10.841796875,
191: 7.94091796875,
192: 8.6708984375,
193: 8.6708984375,
194: 8.6708984375,
195: 8.6708984375,
196: 8.6708984375,
197: 8.6708984375,
198: 13,
199: 9.38818359375,
200: 8.6708984375,
201: 8.6708984375,
202: 8.6708984375,
203: 8.6708984375,
204: 3.61181640625,
205: 3.61181640625,
206: 3.61181640625,
207: 3.61181640625,
208: 9.38818359375,
209: 9.38818359375,
210: 10.11181640625,
211: 10.11181640625,
212: 10.11181640625,
213: 10.11181640625,
214: 10.11181640625,
215: 7.591796875,
216: 10.11181640625,
217: 9.38818359375,
218: 9.38818359375,
219: 9.38818359375,
220: 9.38818359375,
221: 8.6708984375,
222: 8.6708984375,
223: 7.94091796875,
224: 7.22998046875,
225: 7.22998046875,
226: 7.22998046875,
227: 7.22998046875,
228: 7.22998046875,
229: 7.22998046875,
230: 11.55908203125,
231: 6.5,
232: 7.22998046875,
233: 7.22998046875,
234: 7.22998046875,
235: 7.22998046875,
236: 3.61181640625,
237: 3.61181640625,
238: 3.61181640625,
239: 3.61181640625,
240: 7.22998046875,
241: 7.22998046875,
242: 7.22998046875,
243: 7.22998046875,
244: 7.22998046875,
245: 7.22998046875,
246: 7.22998046875,
247: 7.134765625,
248: 7.94091796875,
249: 7.22998046875,
250: 7.22998046875,
251: 7.22998046875,
252: 7.22998046875,
253: 6.5,
254: 7.22998046875,
32: 3.61181640625,
33: 3.61181640625,
34: 4.61474609375,
35: 7.22998046875,
36: 7.22998046875,
37: 11.55908203125,
38: 8.6708984375,
39: 2.48193359375,
40: 4.3291015625,
41: 4.3291015625,
42: 5.05908203125,
43: 7.591796875,
44: 3.61181640625,
45: 4.3291015625,
46: 3.61181640625,
47: 3.61181640625,
48: 7.22998046875,
49: 7.22998046875,
50: 7.22998046875,
51: 7.22998046875,
52: 7.22998046875,
53: 7.22998046875,
54: 7.22998046875,
55: 7.22998046875,
56: 7.22998046875,
57: 7.22998046875,
58: 3.61181640625,
59: 3.61181640625,
60: 7.591796875,
61: 7.591796875,
62: 7.591796875,
63: 7.22998046875,
64: 13.19677734375,
65: 8.6708984375,
66: 8.6708984375,
67: 9.38818359375,
68: 9.38818359375,
69: 8.6708984375,
70: 7.94091796875,
71: 10.11181640625,
72: 9.38818359375,
73: 3.61181640625,
74: 6.5,
75: 8.6708984375,
76: 7.22998046875,
77: 10.8291015625,
78: 9.38818359375,
79: 10.11181640625,
80: 8.6708984375,
81: 10.11181640625,
82: 9.38818359375,
83: 8.6708984375,
84: 7.94091796875,
85: 9.38818359375,
86: 8.6708984375,
87: 12.27001953125,
88: 8.6708984375,
89: 8.6708984375,
90: 7.94091796875,
91: 3.61181640625,
92: 3.61181640625,
93: 3.61181640625,
94: 6.10009765625,
95: 7.22998046875,
96: 4.3291015625,
97: 7.22998046875,
98: 7.22998046875,
99: 6.5
};

@@ -389,0 +389,0 @@ function calculateTextWidth(text, size) {

@@ -46,58 +46,2 @@ /* eslint-disable no-useless-escape */

class QrCode {
/*-- Constructor (low level) and fields --*/
// Creates a new QR Code with the given version number,
// error correction level, data codeword bytes, and mask number.
// This is a low-level API that most users should not use directly.
// A mid-level API is the encodeSegments() function.
constructor(
// The version number of this QR Code, which is between 1 and 40 (inclusive).
// This determines the size of this barcode.
version,
// The error correction level used in this QR Code.
errorCorrectionLevel, dataCodewords, msk) {
this.version = version;
this.errorCorrectionLevel = errorCorrectionLevel;
// The modules of this QR Code (false = light, true = dark).
// Immutable after constructor finishes. Accessed through getModule().
this.modules = [];
// Indicates function modules that are not subjected to masking. Discarded when constructor finishes.
this.isFunction = [];
// Check scalar arguments
if (version < QrCode.MIN_VERSION || version > QrCode.MAX_VERSION)
throw "Version value out of range";
if (msk < -1 || msk > 7)
throw "Mask value out of range";
this.size = version * 4 + 17;
// Initialize both grids to be size*size arrays of Boolean false
const row = [];
for (let i = 0; i < this.size; i++)
row.push(false);
for (let i = 0; i < this.size; i++) {
this.modules.push(row.slice()); // Initially all light
this.isFunction.push(row.slice());
}
// Compute ECC, draw modules
this.drawFunctionPatterns();
const allCodewords = this.addEccAndInterleave(dataCodewords);
this.drawCodewords(allCodewords);
// Do masking
if (msk == -1) { // Automatically choose best mask
let minPenalty = 1000000000;
for (let i = 0; i < 8; i++) {
this.applyMask(i);
this.drawFormatBits(i);
const penalty = this.getPenaltyScore();
if (penalty < minPenalty) {
msk = i;
minPenalty = penalty;
}
this.applyMask(i); // Undoes the mask due to XOR
}
}
assert(0 <= msk && msk <= 7);
this.mask = msk;
this.applyMask(msk); // Apply the final choice of mask
this.drawFormatBits(msk); // Overwrite old format bits
this.isFunction = [];
}
/*-- Static factory functions (high level) --*/

@@ -179,2 +123,58 @@ // Returns a QR Code representing the given Unicode text string at the given error correction level.

}
/*-- Constructor (low level) and fields --*/
// Creates a new QR Code with the given version number,
// error correction level, data codeword bytes, and mask number.
// This is a low-level API that most users should not use directly.
// A mid-level API is the encodeSegments() function.
constructor(
// The version number of this QR Code, which is between 1 and 40 (inclusive).
// This determines the size of this barcode.
version,
// The error correction level used in this QR Code.
errorCorrectionLevel, dataCodewords, msk) {
this.version = version;
this.errorCorrectionLevel = errorCorrectionLevel;
// The modules of this QR Code (false = light, true = dark).
// Immutable after constructor finishes. Accessed through getModule().
this.modules = [];
// Indicates function modules that are not subjected to masking. Discarded when constructor finishes.
this.isFunction = [];
// Check scalar arguments
if (version < QrCode.MIN_VERSION || version > QrCode.MAX_VERSION)
throw "Version value out of range";
if (msk < -1 || msk > 7)
throw "Mask value out of range";
this.size = version * 4 + 17;
// Initialize both grids to be size*size arrays of Boolean false
const row = [];
for (let i = 0; i < this.size; i++)
row.push(false);
for (let i = 0; i < this.size; i++) {
this.modules.push(row.slice()); // Initially all light
this.isFunction.push(row.slice());
}
// Compute ECC, draw modules
this.drawFunctionPatterns();
const allCodewords = this.addEccAndInterleave(dataCodewords);
this.drawCodewords(allCodewords);
// Do masking
if (msk == -1) { // Automatically choose best mask
let minPenalty = 1000000000;
for (let i = 0; i < 8; i++) {
this.applyMask(i);
this.drawFormatBits(i);
const penalty = this.getPenaltyScore();
if (penalty < minPenalty) {
msk = i;
minPenalty = penalty;
}
this.applyMask(i); // Undoes the mask due to XOR
}
}
assert(0 <= msk && msk <= 7);
this.mask = msk;
this.applyMask(msk); // Apply the final choice of mask
this.drawFormatBits(msk); // Overwrite old format bits
this.isFunction = [];
}
/*-- Accessor methods --*/

@@ -638,22 +638,2 @@ // Returns the color of the module (pixel) at the given coordinates, which is false

class QrSegment {
/*-- Constructor (low level) and fields --*/
// Creates a new QR Code segment with the given attributes and data.
// The character count (numChars) must agree with the mode and the bit buffer length,
// but the constraint isn't checked. The given bit buffer is cloned and stored.
constructor(
// The mode indicator of this segment.
mode,
// The length of this segment's unencoded data. Measured in characters for
// numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.
// Always zero or positive. Not the same as the data's bit length.
numChars,
// The data bits of this segment. Accessed through getData().
bitData) {
this.mode = mode;
this.numChars = numChars;
this.bitData = bitData;
if (numChars < 0)
throw "Invalid argument";
this.bitData = bitData.slice(); // Make defensive copy
}
/*-- Static factory functions (mid level) --*/

@@ -742,2 +722,22 @@ // Returns a segment representing the given binary data encoded in

}
/*-- Constructor (low level) and fields --*/
// Creates a new QR Code segment with the given attributes and data.
// The character count (numChars) must agree with the mode and the bit buffer length,
// but the constraint isn't checked. The given bit buffer is cloned and stored.
constructor(
// The mode indicator of this segment.
mode,
// The length of this segment's unencoded data. Measured in characters for
// numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.
// Always zero or positive. Not the same as the data's bit length.
numChars,
// The data bits of this segment. Accessed through getData().
bitData) {
this.mode = mode;
this.numChars = numChars;
this.bitData = bitData;
if (numChars < 0)
throw "Invalid argument";
this.bitData = bitData.slice(); // Make defensive copy
}
/*-- Methods --*/

@@ -744,0 +744,0 @@ // Returns a new copy of the data bits of this segment.

@@ -1,2 +0,3 @@

import { Data } from "./types";
export default function generateQRCode(data: Data, size: number): string;
import type { Data } from "./types.js";
export declare function generateQRData(data: Data): string;
export declare function renderQRCode(qrData: string, type: "pdf" | "svg", size: number, xOrigin?: number, yOrigin?: number): string;
import { getReferenceType } from "../shared/utils.js";
import { qrcodegen } from "./qr-code-generator.js";
export default function generateQRCode(data, size) {
var _a;
let qrString = "";
//-- Swiss Payments Code
qrString += "SPC";
//-- Version
qrString += "\n0200";
//-- Coding Type UTF-8
qrString += "\n1";
//-- IBAN
qrString += (_a = "\n" + data.creditor.account) !== null && _a !== void 0 ? _a : "\n";
//-- Creditor
if (data.creditor.buildingNumber !== undefined) {
// Address Type
qrString += "\nS";
// Name
qrString += "\n" + data.creditor.name;
// Address
qrString += "\n" + data.creditor.address;
// House number
qrString += "\n" + data.creditor.buildingNumber;
// Zip
qrString += "\n" + data.creditor.zip;
// City
qrString += "\n" + data.creditor.city;
}
else {
// Address Type
qrString += "\nK";
// Name
qrString += "\n" + data.creditor.name;
// Address
qrString += "\n" + data.creditor.address;
// Zip + city
if ((data.creditor.zip + " " + data.creditor.city).length > 70) {
throw new Error("Creditor zip plus city must be a maximum of 70 characters.");
}
qrString += "\n" + data.creditor.zip + " " + data.creditor.city;
// Empty zip field
qrString += "\n";
// Empty city field
qrString += "\n";
}
qrString += "\n" + data.creditor.country;
//-- 7 x empty
qrString += "\n"; // 1
qrString += "\n"; // 2
qrString += "\n"; // 3
qrString += "\n"; // 4
qrString += "\n"; // 5
qrString += "\n"; // 6
qrString += "\n"; // 7
//-- Amount
if (data.amount !== undefined) {
qrString += "\n" + data.amount.toFixed(2);
}
else {
qrString += "\n";
}
//-- Currency
qrString += "\n" + data.currency;
//-- Debtor
if (data.debtor !== undefined) {
if (data.debtor.buildingNumber !== undefined) {
// Address type
qrString += "\nS";
// Name
qrString += "\n" + data.debtor.name;
// Address
qrString += "\n" + data.debtor.address;
// House number
qrString += "\n" + data.debtor.buildingNumber;
// Zip
qrString += "\n" + data.debtor.zip;
// City
qrString += "\n" + data.debtor.city;
}
else {
// Address type
qrString += "\nK";
// Name
qrString += "\n" + data.debtor.name;
// Address
qrString += "\n" + data.debtor.address;
// Zip + city
if ((data.debtor.zip + " " + data.debtor.city).length > 70) {
throw new Error("Debtor zip plus city must be a maximum of 70 characters.");
}
qrString += "\n" + data.debtor.zip + " " + data.debtor.city;
// Empty field zip
qrString += "\n";
// Empty field city
qrString += "\n";
}
// Country
qrString += "\n" + data.debtor.country;
}
else {
// Empty field type
qrString += "\n";
// Empty field name
qrString += "\n";
// Empty field address
qrString += "\n";
// Empty field house number
qrString += "\n";
// Empty field zip
qrString += "\n";
// Empty field city
qrString += "\n";
// Empty field country
qrString += "\n";
}
//-- Reference type
qrString += "\n" + getReferenceType(data.reference);
//-- Reference
if (data.reference !== undefined) {
qrString += "\n" + data.reference;
}
else {
qrString += "\n";
}
//-- Unstructured message
if (data.message !== undefined) {
qrString += "\n" + data.message;
}
else {
qrString += "\n";
}
//-- End Payment Data
qrString += "\n" + "EPD";
//-- Additional information
if (data.additionalInformation !== undefined) {
qrString += "\n" + data.additionalInformation;
}
else {
qrString += "\n";
}
//-- AV1
if (data.av1 !== undefined) {
qrString += "\n" + data.av1;
}
if (data.av2 !== undefined) {
qrString += "\n" + data.av2;
}
//-- Create QR Code
export function generateQRData(data) {
var _a, _b, _c, _d, _e, _f, _g;
const amount = (_a = data.amount) === null || _a === void 0 ? void 0 : _a.toFixed(2);
const reference = getReferenceType(data.reference);
const qrData = [
"SPC",
"0200",
"1",
(_b = data.creditor.account) !== null && _b !== void 0 ? _b : "",
...data.creditor.buildingNumber
? [
"S",
data.creditor.name,
data.creditor.address,
`${data.creditor.buildingNumber}`,
`${data.creditor.zip}`,
data.creditor.city // City
]
: [
"K",
data.creditor.name,
data.creditor.address,
`${data.creditor.zip} ${data.creditor.city}`,
"",
"" // Empty city field
],
data.creditor.country,
"",
"",
"",
"",
"",
"",
"",
amount !== null && amount !== void 0 ? amount : "",
data.currency,
...data.debtor
? [
...data.debtor.buildingNumber
? [
"S",
data.debtor.name,
data.debtor.address,
`${data.debtor.buildingNumber}`,
`${data.debtor.zip}`,
data.debtor.city // City
]
: [
"K",
data.debtor.name,
data.debtor.address,
`${data.debtor.zip} ${data.debtor.city}`,
"",
"" // Empty city field
],
(_d = (_c = data.debtor) === null || _c === void 0 ? void 0 : _c.country) !== null && _d !== void 0 ? _d : "" // Country
]
: [
"",
"",
"",
"",
"",
"",
"" // Empty country
],
reference,
(_e = data.reference) !== null && _e !== void 0 ? _e : "",
(_f = data.message) !== null && _f !== void 0 ? _f : "",
"EPD",
(_g = data.additionalInformation) !== null && _g !== void 0 ? _g : "",
...data.av1 // Alternative scheme 1
? [
data.av1
]
: [],
...data.av2 // Alternative scheme 2
? [
data.av2
]
: []
];
return qrData.join("\n");
}
export function renderQRCode(qrData, type, size, xOrigin = 0, yOrigin = 0) {
const eci = qrcodegen.QrSegment.makeEci(26);
const segments = qrcodegen.QrSegment.makeSegments(qrString);
const qrCode = qrcodegen.QrCode.encodeSegments([eci, ...segments], qrcodegen.QrCode.Ecc.MEDIUM);
const segments = qrcodegen.QrSegment.makeSegments(qrData);
const qrCode = qrcodegen.QrCode.encodeSegments([eci, ...segments], qrcodegen.QrCode.Ecc.MEDIUM, 10, 25);
const blockSize = size / qrCode.size;

@@ -159,3 +98,10 @@ const parts = [];

if (qrCode.getModule(x, y)) {
parts.push(`M ${xPos}, ${yPos} V ${yPos + blockSize} H ${xPos + blockSize} V ${yPos} H ${xPos} Z `);
switch (type) {
case "pdf":
parts.push(`${limitNumber(xOrigin + xPos)} ${limitNumber(yOrigin + yPos)} ${limitNumber(blockSize)} ${limitNumber(blockSize)} re`);
break;
case "svg":
parts.push(`M ${xPos}, ${yPos} V ${yPos + blockSize} H ${xPos + blockSize} V ${yPos} H ${xPos} Z `);
break;
}
}

@@ -166,2 +112,15 @@ }

}
/**
* Limits the maximum and minimum number possible according to the PDF specifications.
* Borrowed from: https://github.com/foliojs/pdfkit/blob/120c3f9519e49d719a88d22d70139cc9f54d17d8/lib/object.js#L123-L130
* @param n The number to limit
* @returns The limited number
* @throws { RangeError } If the number is out of range.
*/
function limitNumber(n) {
if (n > -1e21 && n < 1e21) {
return Math.round(n * 1e6) / 1e6;
}
throw new RangeError(`unsupported number: ${n}`);
}
//# sourceMappingURL=qr-code.js.map
declare const translations: {
DE: {
paymentPart: string;
acceptancePoint: string;
account: string;
reference: string;
additionalInformation: string;
amount: string;
currency: string;
amount: string;
inFavourOf: string;
payableBy: string;
payableByName: string;
paymentPart: string;
receipt: string;
acceptancePoint: string;
reference: string;
separate: string;
payableBy: string;
payableByName: string;
inFavourOf: string;
};
EN: {
paymentPart: string;
acceptancePoint: string;
account: string;
reference: string;
additionalInformation: string;
amount: string;
currency: string;
amount: string;
inFavourOf: string;
payableBy: string;
payableByName: string;
paymentPart: string;
receipt: string;
reference: string;
separate: string;
};
FR: {
acceptancePoint: string;
separate: string;
account: string;
additionalInformation: string;
amount: string;
currency: string;
inFavourOf: string;
payableBy: string;
payableByName: string;
inFavourOf: string;
paymentPart: string;
receipt: string;
reference: string;
separate: string;
};
IT: {
paymentPart: string;
acceptancePoint: string;
account: string;
reference: string;
additionalInformation: string;
amount: string;
currency: string;
amount: string;
receipt: string;
acceptancePoint: string;
separate: string;
inFavourOf: string;
payableBy: string;
payableByName: string;
inFavourOf: string;
};
FR: {
paymentPart: string;
account: string;
receipt: string;
reference: string;
additionalInformation: string;
currency: string;
amount: string;
receipt: string;
acceptancePoint: string;
separate: string;
payableBy: string;
payableByName: string;
inFavourOf: string;
};
};
export default translations;
const translations = {
DE: {
paymentPart: "Zahlteil",
acceptancePoint: "Annahmestelle",
account: "Konto / Zahlbar an",
reference: "Referenz",
additionalInformation: "Zusätzliche Informationen",
amount: "Betrag",
currency: "Währung",
amount: "Betrag",
receipt: "Empfangsschein",
acceptancePoint: "Annahmestelle",
separate: "Vor der Einzahlung abzutrennen",
inFavourOf: "Zugunsten",
payableBy: "Zahlbar durch",
payableByName: "Zahlbar durch (Name/Adresse)",
inFavourOf: "Zugunsten"
paymentPart: "Zahlteil",
receipt: "Empfangsschein",
reference: "Referenz",
separate: "Vor der Einzahlung abzutrennen"
},
EN: {
paymentPart: "Payment part",
acceptancePoint: "Acceptance point",
account: "Account / Payable to",
reference: "Reference",
additionalInformation: "Additional information",
amount: "Amount",
currency: "Currency",
amount: "Amount",
receipt: "Receipt",
acceptancePoint: "Acceptance point",
separate: "Separate before paying in",
inFavourOf: "In favour of",
payableBy: "Payable by",
payableByName: "Payable by (name/address)",
inFavourOf: "In favour of"
paymentPart: "Payment part",
receipt: "Receipt",
reference: "Reference",
separate: "Separate before paying in"
},
FR: {
acceptancePoint: "Point de dépôt",
account: "Compte / Payable à",
additionalInformation: "Informations supplémentaires",
amount: "Montant",
currency: "Monnaie",
inFavourOf: "En faveur de",
payableBy: "Payable par",
payableByName: "Payable par (nom/adresse)",
paymentPart: "Section paiement",
receipt: "Récépissé",
reference: "Référence",
separate: "A détacher avant le versement"
},
IT: {
paymentPart: "Sezione pagamento",
acceptancePoint: "Punto di accettazione",
account: "Conto / Pagabile a",
reference: "Riferimento",
additionalInformation: "Informazioni supplementari",
amount: "Importo",
currency: "Valuta",
amount: "Importo",
receipt: "Ricevuta",
acceptancePoint: "Punto di accettazione",
separate: "Da staccare prima del versamento",
inFavourOf: "A favore di",
payableBy: "Pagabile da",
payableByName: "Pagabile da (nome/indirizzo)",
inFavourOf: "A favore di"
},
FR: {
paymentPart: "Section paiement",
account: "Compte / Payable à",
reference: "Référence",
additionalInformation: "Informations supplémentaires",
currency: "Monnaie",
amount: "Montant",
receipt: "Récépissé",
acceptancePoint: "Point de dépôt",
separate: "A détacher avant le versement",
payableBy: "Payable par",
payableByName: "Payable par (nom/adresse)",
inFavourOf: "En faveur de"
paymentPart: "Sezione pagamento",
receipt: "Ricevuta",
reference: "Riferimento",
separate: "Da staccare prima del versamento"
}

@@ -58,0 +58,0 @@ };

@@ -1,7 +0,11 @@

export { PDFTable, PDFRow, PDFColumn } from "../pdf/extended-pdf";
export declare type Currency = "CHF" | "EUR";
export declare type Size = "A4" | "A6/5";
export declare type Languages = "DE" | "EN" | "IT" | "FR";
export { PDFColumn, PDFRow, PDFTable } from "../pdf/table.js";
export type Currency = "CHF" | "EUR";
export type Size = "A4" | "A6" | "A6/5";
export type Languages = "DE" | "EN" | "FR" | "IT";
export interface Data {
/**
* Creditor related data.
*/
creditor: Creditor;
/**
* The currency to be used. **3 characters.**

@@ -11,2 +15,8 @@ */

/**
* Additional information. **Max 140 characters.**
*
* Bill information contain coded information for automated booking of the payment. The data is not forwarded with the payment.
*/
additionalInformation?: string;
/**
* The amount. **Max. 12 digits.**

@@ -16,20 +26,5 @@ */

/**
* A reference number. **Max 27 characters.**
* > QR-IBAN: Maximum 27 characters. Must be filled if a QR-IBAN is used.
* Creditor Reference (ISO 11649): Maximum 25 characters.
*/
reference?: string;
/**
* A message. **Max. 140 characters.**
* > message can be used to indicate the payment purpose or for additional textual information about payments with a structured reference.
*/
message?: string;
/**
* Additional information. **Max 140 characters.**
* > Bill information contain coded information for automated booking of the payment. The data is not forwarded with the payment.
*/
additionalInformation?: string;
/**
* Alternative scheme. **Max. 100 characters.**
* > Parameter character chain of the alternative scheme according to the syntax definition in the [“Alternative scheme” section](https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf)
*
* Parameter character chain of the alternative scheme according to the syntax definition in the [“Alternative scheme” section](https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf)
*/

@@ -39,20 +34,26 @@ av1?: string;

* Alternative scheme. **Max. 100 characters.**
* > Parameter character chain of the alternative scheme according to the syntax definition in the [“Alternative scheme” section](https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf)
*
* Parameter character chain of the alternative scheme according to the syntax definition in the [“Alternative scheme” section](https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf)
*/
av2?: string;
/**
* Creditor related data.
* Debtor related data.
*/
creditor: Creditor;
debtor?: Debtor;
/**
* Debtor related data.
* A message. **Max. 140 characters.**
*
* message can be used to indicate the payment purpose or for additional textual information about payments with a structured reference.
*/
debtor?: Debtor;
message?: string;
/**
* A reference number. **Max 27 characters.**
*
* QR-IBAN: Maximum 27 characters. Must be filled if a QR-IBAN is used.
* Creditor Reference (ISO 11649): Maximum 25 characters.
*/
reference?: string;
}
export interface Debtor {
/**
* Name. **Max. 70 characters.**
*/
name: string;
/**
* Address. **Max 70 characters.**

@@ -62,17 +63,21 @@ */

/**
* Building number. **Max 16 characters.**
* City. **Max 35 characters.**
*/
buildingNumber?: string | number;
city: string;
/**
* Postal code. **Max 16 characters.**
* Country code. **2 characters.**
*/
zip: string | number;
country: string;
/**
* City. **Max 35 characters.**
* Name. **Max. 70 characters.**
*/
city: string;
name: string;
/**
* Country code. **2 characters.**
* Postal code. **Max 16 characters.**
*/
country: string;
zip: number | string;
/**
* Building number. **Max 16 characters.**
*/
buildingNumber?: number | string;
}

@@ -85,3 +90,3 @@ export interface Creditor extends Debtor {

}
export interface PDFOptions {
export interface QRBillOptions {
/**

@@ -93,9 +98,10 @@ * The language with which the bill is rendered.

/**
* The page size.
* @defaultValue `"A6/5"`
* Whether you want render the outlines. This option may be disabled if you use perforated paper.
* @defaultValue `true`
*/
size?: Size;
outlines?: boolean;
/**
* Whether you want to show the scissors icons or the text `Separate before paying in`.
* > **Warning:** Setting **scissors** to false sets **separate** to true. To disable scissors and separate, you have to set both options to false.
* Whether you want to show the scissors icons or the text `Separate before paying in`.
*
* **Warning:** Setting **scissors** to false sets **separate** to true. To disable scissors and separate, you have to set both options to false.
* @defaultValue `true`

@@ -105,4 +111,5 @@ */

/**
* Whether you want to show the text `Separate before paying in` rather than the scissors icons.
* > **Warning:** Setting **separate** to true sets **scissors** to false. To disable scissors and separate, you have to set both options to false.
* Whether you want to show the text `Separate before paying in` rather than the scissors icons.
*
* **Warning:** Setting **separate** to true sets **scissors** to false. To disable scissors and separate, you have to set both options to false.
* @defaultValue `false`

@@ -112,8 +119,10 @@ */

/**
* Whether you want render the outlines. This option may be disabled if you use perforated paper.
* @defaultValue `true`
* The page size.
* @defaultValue `"A6"`
*/
outlines?: boolean;
size?: Size;
}
export interface PDFOptions extends QRBillOptions {
/**
* Whether you want to automatically finalize the PDF. When set to false you are able to add your own content to the PDF using PDFKit.
* Whether you want to automatically finalize the PDF. When set to false you are able to add your own content to the PDF using PDFKit.
* @defaultValue `true`

@@ -120,0 +129,0 @@ */

/**
* Checks whether the given iban is a QR-IBAN or not.
*
* @param iban - The IBAN to be checked.
* @param iban The IBAN to be checked.
* @returns `true` if the given IBAN is a QR-IBAN and `false` otherwise.

@@ -10,4 +9,3 @@ */

* Validates the given IBAN.
*
* @param iban - The IBAN to be checked.
* @param iban The IBAN to be checked.
* @returns `true` if the checksum of the given IBAN is valid and `false` otherwise.

@@ -18,4 +16,3 @@ */

* Formats the given IBAN according the specifications to be easily readable.
*
* @param iban - The IBAN to be formatted.
* @param iban The IBAN to be formatted.
* @returns The formatted IBAN.

@@ -26,11 +23,10 @@ */

* Checks whether the given reference is a QR-Reference or not.
*
* @param reference - The Reference to be checked.
* @param reference The Reference to be checked.
* @returns `true` if the given reference is a QR-Reference and `false` otherwise.
* @remarks The QR-Reference is a 27 digits long string containing only digits. The last digit is the checksum.
*/
export declare function isQRReference(reference: string): boolean;
/**
* Validates the given reference.
*
* @param reference - The reference to be checked.
* Validates the given QR-Reference.
* @param reference The reference to be checked.
* @returns `true` if the given reference is valid and `false` otherwise.

@@ -40,5 +36,23 @@ */

/**
* Checks whether the given reference is a SCOR-Reference or not.
* @param reference The Reference to be checked.
* @returns `true` if the given reference is a SCOR-Reference and `false` otherwise.
* @remarks The SCOR-Reference is an alphanumeric string beginning with 'RF' and containing a 2 digit checksum and a max 21 digits long reference.
*/
export declare function isSCORReference(reference: string): boolean;
/**
* Validates the given SCOR-Reference.
* @param reference The reference to be checked.
* @returns `true` if the given reference is valid and `false` otherwise.
*/
export declare function isSCORReferenceValid(reference: string): boolean;
/**
* Calculates the checksum according to the ISO 11649 standard.
* @param reference The max 21 digits long reference (without the "RF" and the 2 digit checksum) whose checksum should be calculated.
* @returns The calculated checksum as 2 digit string.
*/
export declare function calculateSCORReferenceChecksum(reference: string): string;
/**
* Calculates the checksum according the specifications.
*
* @param reference - The 26 digits long reference (without the checksum) whose checksum should be calculated.
* @param reference The 26 digits long reference (without the checksum) whose checksum should be calculated.
* @returns The calculated checksum.

@@ -49,4 +63,3 @@ */

* Formats the given QR-Reference according the specifications to be easily readable.
*
* @param reference - The QR-Reference to be formatted.
* @param reference The QR-Reference to be formatted.
* @returns The formatted QR-Reference.

@@ -56,5 +69,10 @@ */

/**
* Formats the given SCOR-Reference according the specifications to be easily readable.
* @param reference The SCOR-Reference to be formatted.
* @returns The formatted SCOR-Reference.
*/
export declare function formatSCORReference(reference: string): string;
/**
* Detects the type of the given reference and formats it according the specifications to be easily readable.
*
* @param reference - The reference to be formatted.
* @param reference The reference to be formatted.
* @returns The formatted reference.

@@ -64,12 +82,4 @@ */

/**
* Formats the given SCOR-Reference according the specifications to be easily readable.
*
* @param reference - The SCOR-Reference to be formatted.
* @returns The formatted SCOR-Reference.
*/
export declare function formatSCORReference(reference: string): string;
/**
* Formats the given amount according the specifications to be easily readable.
*
* @param amount - containing the amount to be formatted.
* @param amount containing the amount to be formatted.
* @returns The formatted amount.

@@ -80,4 +90,3 @@ */

* Converts millimeters to points.
*
* @param millimeters - The millimeters you want to convert to points.
* @param millimeters The millimeters you want to convert to points.
* @returns The converted millimeters in points.

@@ -88,4 +97,3 @@ */

* Converts points to millimeters.
*
* @param points - The points you want to convert to millimeters.
* @param points The points you want to convert to millimeters.
* @returns The converted points in millimeters.

@@ -96,4 +104,3 @@ */

* Converts millimeters to pixels.
*
* @param millimeters - The millimeters you want to convert to pixels.
* @param millimeters The millimeters you want to convert to pixels.
* @returns The converted millimeters in pixels.

@@ -104,7 +111,11 @@ */

* Converts pixels to millimeters.
*
* @param pixels - containg the pixels you want to convert to millimeters.
* @param pixels containing the pixels you want to convert to millimeters.
* @returns The converted pixels in millimeters.
*/
export declare function px2mm(pixels: number): number;
export declare function getReferenceType(reference: string | undefined): "QRR" | "SCOR" | "NON";
/**
* Detects the type of the given reference.
* @param reference The reference to get the type of.
* @returns The type of the given reference.
*/
export declare function getReferenceType(reference: string | undefined): "NON" | "QRR" | "SCOR";
/**
* Checks whether the given iban is a QR-IBAN or not.
*
* @param iban - The IBAN to be checked.
* @param iban The IBAN to be checked.
* @returns `true` if the given IBAN is a QR-IBAN and `false` otherwise.

@@ -9,32 +8,22 @@ */

iban = iban.replace(/ /g, "");
const QRIID = iban.substr(4, 5);
return (+QRIID >= 30000 && +QRIID <= 31999);
const QRIID = iban.substring(4, 9);
return +QRIID >= 30000 && +QRIID <= 31999;
}
/**
* Validates the given IBAN.
*
* @param iban - The IBAN to be checked.
* @param iban The IBAN to be checked.
* @returns `true` if the checksum of the given IBAN is valid and `false` otherwise.
*/
export function isIBANValid(iban) {
iban = iban.replace(/ /g, "");
iban = iban.toUpperCase();
//-- Move country code + checksum to end
iban = iban.substr(4) + iban.substr(0, 4);
//-- Convert letters to numbers, beginning with A = 10...Z = 35
const A = "A".charCodeAt(0);
const ibanArr = iban.split("");
for (let i = 0; i < ibanArr.length; i++) {
const charCode = ibanArr[i].charCodeAt(0);
if (charCode >= A) {
ibanArr[i] = charCode - A + 10 + "";
}
}
//-- Calculate mod9710
return mod9710(ibanArr.join("")) === 1;
iban = iban
.replace(/ /g, "")
.toUpperCase();
// Move country code + checksum to end
iban = iban.substring(4) + iban.substring(0, 4);
// Calculate mod97
return mod97(iban) === 1;
}
/**
* Formats the given IBAN according the specifications to be easily readable.
*
* @param iban - The IBAN to be formatted.
* @param iban The IBAN to be formatted.
* @returns The formatted IBAN.

@@ -44,4 +33,5 @@ */

var _a;
iban = iban.replace(/ /g, "");
const ibanArray = iban.replace(/ /g, "").match(/.{1,4}/g);
const ibanArray = iban
.replace(/ /g, "")
.match(/.{1,4}/g);
return (_a = ibanArray === null || ibanArray === void 0 ? void 0 : ibanArray.join(" ")) !== null && _a !== void 0 ? _a : iban;

@@ -51,22 +41,19 @@ }

* Checks whether the given reference is a QR-Reference or not.
*
* @param reference - The Reference to be checked.
* @param reference The Reference to be checked.
* @returns `true` if the given reference is a QR-Reference and `false` otherwise.
* @remarks The QR-Reference is a 27 digits long string containing only digits. The last digit is the checksum.
*/
export function isQRReference(reference) {
reference = reference.replace(/ /g, "");
if (reference.length === 27) {
if (!isNaN(+reference)) {
return true;
}
if (reference.length !== 27) {
return false;
}
if (reference.replace(/ /g, "").length <= 25) {
if (!/^\d+$/.test(reference)) {
return false;
}
throw new Error("Reference is not valid.");
return true;
}
/**
* Validates the given reference.
*
* @param reference - The reference to be checked.
* Validates the given QR-Reference.
* @param reference The reference to be checked.
* @returns `true` if the given reference is valid and `false` otherwise.

@@ -76,17 +63,63 @@ */

reference = reference.replace(/ /g, "");
if (!isQRReference(reference)) {
return false;
}
const ref = reference.substring(0, 26);
const checksum = reference.substring(26, 27);
const calculatedChecksum = calculateQRReferenceChecksum(ref);
return calculatedChecksum === checksum;
}
/**
* Checks whether the given reference is a SCOR-Reference or not.
* @param reference The Reference to be checked.
* @returns `true` if the given reference is a SCOR-Reference and `false` otherwise.
* @remarks The SCOR-Reference is an alphanumeric string beginning with 'RF' and containing a 2 digit checksum and a max 21 digits long reference.
*/
export function isSCORReference(reference) {
reference = reference.replace(/ /g, "").toUpperCase();
if (!reference.startsWith("RF")) {
return false;
}
if (reference.length < 5 || reference.length > 25) {
return false;
}
if (!/^[\dA-Z]+$/.test(reference)) {
return false;
}
return true;
}
/**
* Validates the given SCOR-Reference.
* @param reference The reference to be checked.
* @returns `true` if the given reference is valid and `false` otherwise.
*/
export function isSCORReferenceValid(reference) {
reference = reference.replace(/ /g, "");
if (!isSCORReference(reference)) {
return false;
}
const ref = reference.substring(4);
if (Number.isNaN(reference)) {
return false;
}
if (reference.length !== 27) {
const checksum = reference.substring(2, 4);
if (Number.isNaN(checksum)) {
return false;
}
const ref = reference.substr(0, 26);
const checksum = reference.substr(26, 1);
const calculatedChecksum = calculateQRReferenceChecksum(ref);
const calculatedChecksum = calculateSCORReferenceChecksum(ref);
return calculatedChecksum === checksum;
}
/**
* Calculates the checksum according to the ISO 11649 standard.
* @param reference The max 21 digits long reference (without the "RF" and the 2 digit checksum) whose checksum should be calculated.
* @returns The calculated checksum as 2 digit string.
*/
export function calculateSCORReferenceChecksum(reference) {
reference = reference.replace(/ /g, "");
const checksum = 98 - mod97(`${reference}RF00`);
return `${checksum}`.padStart(2, "0");
}
/**
* Calculates the checksum according the specifications.
*
* @param reference - The 26 digits long reference (without the checksum) whose checksum should be calculated.
* @param reference The 26 digits long reference (without the checksum) whose checksum should be calculated.
* @returns The calculated checksum.

@@ -99,19 +132,28 @@ */

* Formats the given QR-Reference according the specifications to be easily readable.
*
* @param reference - The QR-Reference to be formatted.
* @param reference The QR-Reference to be formatted.
* @returns The formatted QR-Reference.
*/
export function formatQRReference(reference) {
reference = reference.replace(/ /g, "");
let referenceArray = [];
const match = reference.substring(2).match(/.{1,5}/g);
if (match !== null) {
referenceArray = [reference.substring(0, 2)].concat(match);
}
return referenceArray.join(" ");
const trimmedReference = reference.replace(/ /g, "");
const match = trimmedReference
.substring(2)
.match(/.{1,5}/g);
return match
? `${trimmedReference.substring(0, 2)} ${match.join(" ")}`
: reference;
}
/**
* Formats the given SCOR-Reference according the specifications to be easily readable.
* @param reference The SCOR-Reference to be formatted.
* @returns The formatted SCOR-Reference.
*/
export function formatSCORReference(reference) {
var _a;
const trimmedReference = reference.replace(/ /g, "");
const match = trimmedReference.match(/.{1,4}/g);
return (_a = match === null || match === void 0 ? void 0 : match.join(" ")) !== null && _a !== void 0 ? _a : reference;
}
/**
* Detects the type of the given reference and formats it according the specifications to be easily readable.
*
* @param reference - The reference to be formatted.
* @param reference The reference to be formatted.
* @returns The formatted reference.

@@ -130,20 +172,4 @@ */

/**
* Formats the given SCOR-Reference according the specifications to be easily readable.
*
* @param reference - The SCOR-Reference to be formatted.
* @returns The formatted SCOR-Reference.
*/
export function formatSCORReference(reference) {
reference = reference.replace(/ /g, "");
let referenceArray = [];
const match = reference.match(/.{1,4}/g);
if (match !== null) {
referenceArray = match;
}
return referenceArray.join(" ");
}
/**
* Formats the given amount according the specifications to be easily readable.
*
* @param amount - containing the amount to be formatted.
* @param amount containing the amount to be formatted.
* @returns The formatted amount.

@@ -158,12 +184,11 @@ */

if (i === 3) {
formattedAmountWithoutDecimals = " " + formattedAmountWithoutDecimals;
formattedAmountWithoutDecimals = ` ${formattedAmountWithoutDecimals}`;
i = 0;
}
}
return formattedAmountWithoutDecimals.trim() + "." + amountArray[1];
return `${formattedAmountWithoutDecimals.trim()}.${amountArray[1]}`;
}
/**
* Converts millimeters to points.
*
* @param millimeters - The millimeters you want to convert to points.
* @param millimeters The millimeters you want to convert to points.
* @returns The converted millimeters in points.

@@ -176,4 +201,3 @@ */

* Converts points to millimeters.
*
* @param points - The points you want to convert to millimeters.
* @param points The points you want to convert to millimeters.
* @returns The converted points in millimeters.

@@ -186,4 +210,3 @@ */

* Converts millimeters to pixels.
*
* @param millimeters - The millimeters you want to convert to pixels.
* @param millimeters The millimeters you want to convert to pixels.
* @returns The converted millimeters in pixels.

@@ -196,4 +219,3 @@ */

* Converts pixels to millimeters.
*
* @param pixels - containg the pixels you want to convert to millimeters.
* @param pixels containing the pixels you want to convert to millimeters.
* @returns The converted pixels in millimeters.

@@ -204,2 +226,7 @@ */

}
/**
* Detects the type of the given reference.
* @param reference The reference to get the type of.
* @returns The type of the given reference.
*/
export function getReferenceType(reference) {

@@ -216,17 +243,37 @@ if (typeof reference === "undefined") {

}
function mod9710(iban) {
let remainder = iban;
let block;
while (remainder.length > 2) {
block = remainder.slice(0, 9);
remainder = parseInt(block, 10) % 97 + remainder.slice(block.length);
/**
* Calculates the checksum according to the ISO 7064 standard.
* @param input The input whose checksum should be calculated.
* @returns The calculated checksum.
*/
function mod97(input) {
// Convert letters to numbers (A = 10, B = 11, ..., Z = 35)
const charCodeOfLetterA = "A".charCodeAt(0);
const inputArr = input.split("");
for (let i = 0; i < inputArr.length; i++) {
const charCode = inputArr[i].charCodeAt(0);
if (charCode >= charCodeOfLetterA) {
inputArr[i] = `${charCode - charCodeOfLetterA + 10}`;
}
}
return parseInt(remainder, 10) % 97;
input = inputArr.join("");
// Apply the mod97 algorithm
let remainder = 0;
for (let i = 0; i < input.length; i++) {
const digit = +input[i];
remainder = (10 * remainder + digit) % 97;
}
return remainder;
}
function mod10(code) {
code = code.replace(/ /g, "");
/**
* Calculates the checksum according to the ISO 7812-1 standard.
* @param input The input whose checksum should be calculated.
* @returns The calculated checksum.
*/
function mod10(input) {
const trimmedInput = input.replace(/ /g, "");
const table = [0, 9, 4, 6, 8, 2, 7, 1, 3, 5];
let carry = 0;
for (let i = 0; i < code.length; i++) {
carry = table[(carry + parseInt(code.substr(i, 1), 10)) % 10];
for (let i = 0; i < trimmedInput.length; i++) {
carry = table[(carry + parseInt(trimmedInput.substring(i, i + 1), 10)) % 10];
}

@@ -233,0 +280,0 @@ return ((10 - carry) % 10).toString();

export declare const arial8pt: {
"32": number;
"33": number;
"34": number;
"35": number;
"36": number;
"37": number;
"38": number;
"39": number;
"40": number;
"41": number;
"42": number;
"43": number;
"44": number;
"45": number;
"46": number;
"47": number;
"48": number;
"49": number;
"50": number;
"51": number;
"52": number;
"53": number;
"54": number;
"55": number;
"56": number;
"57": number;
"58": number;
"59": number;
"60": number;
"61": number;
"62": number;
"63": number;
"64": number;
"65": number;
"66": number;
"67": number;
"68": number;
"69": number;
"70": number;
"71": number;
"72": number;
"73": number;
"74": number;
"75": number;
"76": number;
"77": number;
"78": number;
"79": number;
"80": number;
"81": number;
"82": number;
"83": number;
"84": number;
"85": number;
"86": number;
"87": number;
"88": number;
"89": number;
"90": number;
"91": number;
"92": number;
"93": number;
"94": number;
"95": number;
"96": number;
"97": number;
"98": number;
"99": number;
"100": number;
"101": number;
"102": number;
"103": number;
"104": number;
"105": number;
"106": number;
"107": number;
"108": number;
"109": number;
"110": number;
"111": number;
"112": number;
"113": number;
"114": number;
"115": number;
"116": number;
"117": number;
"118": number;
"119": number;
"120": number;
"121": number;
"122": number;
"123": number;
"124": number;
"125": number;
"126": number;
"160": number;
"161": number;
"162": number;
"163": number;
"164": number;
"165": number;
"166": number;
"167": number;
"168": number;
"169": number;
"170": number;
"171": number;
"172": number;
"173": number;
"174": number;
"175": number;
"176": number;
"177": number;
"178": number;
"179": number;
"180": number;
"181": number;
"182": number;
"183": number;
"184": number;
"185": number;
"186": number;
"187": number;
"188": number;
"189": number;
"190": number;
"191": number;
"192": number;
"193": number;
"194": number;
"195": number;
"196": number;
"197": number;
"198": number;
"199": number;
"200": number;
"201": number;
"202": number;
"203": number;
"204": number;
"205": number;
"206": number;
"207": number;
"208": number;
"209": number;
"210": number;
"211": number;
"212": number;
"213": number;
"214": number;
"215": number;
"216": number;
"217": number;
"218": number;
"219": number;
"220": number;
"221": number;
"222": number;
"223": number;
"224": number;
"225": number;
"226": number;
"227": number;
"228": number;
"229": number;
"230": number;
"231": number;
"232": number;
"233": number;
"234": number;
"235": number;
"236": number;
"237": number;
"238": number;
"239": number;
"240": number;
"241": number;
"242": number;
"243": number;
"244": number;
"245": number;
"246": number;
"247": number;
"248": number;
"249": number;
"250": number;
"251": number;
"252": number;
"253": number;
"254": number;
100: number;
101: number;
102: number;
103: number;
104: number;
105: number;
106: number;
107: number;
108: number;
109: number;
110: number;
111: number;
112: number;
113: number;
114: number;
115: number;
116: number;
117: number;
118: number;
119: number;
120: number;
121: number;
122: number;
123: number;
124: number;
125: number;
126: number;
160: number;
161: number;
162: number;
163: number;
164: number;
165: number;
166: number;
167: number;
168: number;
169: number;
170: number;
171: number;
172: number;
173: number;
174: number;
175: number;
176: number;
177: number;
178: number;
179: number;
180: number;
181: number;
182: number;
183: number;
184: number;
185: number;
186: number;
187: number;
188: number;
189: number;
190: number;
191: number;
192: number;
193: number;
194: number;
195: number;
196: number;
197: number;
198: number;
199: number;
200: number;
201: number;
202: number;
203: number;
204: number;
205: number;
206: number;
207: number;
208: number;
209: number;
210: number;
211: number;
212: number;
213: number;
214: number;
215: number;
216: number;
217: number;
218: number;
219: number;
220: number;
221: number;
222: number;
223: number;
224: number;
225: number;
226: number;
227: number;
228: number;
229: number;
230: number;
231: number;
232: number;
233: number;
234: number;
235: number;
236: number;
237: number;
238: number;
239: number;
240: number;
241: number;
242: number;
243: number;
244: number;
245: number;
246: number;
247: number;
248: number;
249: number;
250: number;
251: number;
252: number;
253: number;
254: number;
32: number;
33: number;
34: number;
35: number;
36: number;
37: number;
38: number;
39: number;
40: number;
41: number;
42: number;
43: number;
44: number;
45: number;
46: number;
47: number;
48: number;
49: number;
50: number;
51: number;
52: number;
53: number;
54: number;
55: number;
56: number;
57: number;
58: number;
59: number;
60: number;
61: number;
62: number;
63: number;
64: number;
65: number;
66: number;
67: number;
68: number;
69: number;
70: number;
71: number;
72: number;
73: number;
74: number;
75: number;
76: number;
77: number;
78: number;
79: number;
80: number;
81: number;
82: number;
83: number;
84: number;
85: number;
86: number;
87: number;
88: number;
89: number;
90: number;
91: number;
92: number;
93: number;
94: number;
95: number;
96: number;
97: number;
98: number;
99: number;
};
export declare const arial10pt: {
"32": number;
"33": number;
"34": number;
"35": number;
"36": number;
"37": number;
"38": number;
"39": number;
"40": number;
"41": number;
"42": number;
"43": number;
"44": number;
"45": number;
"46": number;
"47": number;
"48": number;
"49": number;
"50": number;
"51": number;
"52": number;
"53": number;
"54": number;
"55": number;
"56": number;
"57": number;
"58": number;
"59": number;
"60": number;
"61": number;
"62": number;
"63": number;
"64": number;
"65": number;
"66": number;
"67": number;
"68": number;
"69": number;
"70": number;
"71": number;
"72": number;
"73": number;
"74": number;
"75": number;
"76": number;
"77": number;
"78": number;
"79": number;
"80": number;
"81": number;
"82": number;
"83": number;
"84": number;
"85": number;
"86": number;
"87": number;
"88": number;
"89": number;
"90": number;
"91": number;
"92": number;
"93": number;
"94": number;
"95": number;
"96": number;
"97": number;
"98": number;
"99": number;
"100": number;
"101": number;
"102": number;
"103": number;
"104": number;
"105": number;
"106": number;
"107": number;
"108": number;
"109": number;
"110": number;
"111": number;
"112": number;
"113": number;
"114": number;
"115": number;
"116": number;
"117": number;
"118": number;
"119": number;
"120": number;
"121": number;
"122": number;
"123": number;
"124": number;
"125": number;
"126": number;
"160": number;
"161": number;
"162": number;
"163": number;
"164": number;
"165": number;
"166": number;
"167": number;
"168": number;
"169": number;
"170": number;
"171": number;
"172": number;
"173": number;
"174": number;
"175": number;
"176": number;
"177": number;
"178": number;
"179": number;
"180": number;
"181": number;
"182": number;
"183": number;
"184": number;
"185": number;
"186": number;
"187": number;
"188": number;
"189": number;
"190": number;
"191": number;
"192": number;
"193": number;
"194": number;
"195": number;
"196": number;
"197": number;
"198": number;
"199": number;
"200": number;
"201": number;
"202": number;
"203": number;
"204": number;
"205": number;
"206": number;
"207": number;
"208": number;
"209": number;
"210": number;
"211": number;
"212": number;
"213": number;
"214": number;
"215": number;
"216": number;
"217": number;
"218": number;
"219": number;
"220": number;
"221": number;
"222": number;
"223": number;
"224": number;
"225": number;
"226": number;
"227": number;
"228": number;
"229": number;
"230": number;
"231": number;
"232": number;
"233": number;
"234": number;
"235": number;
"236": number;
"237": number;
"238": number;
"239": number;
"240": number;
"241": number;
"242": number;
"243": number;
"244": number;
"245": number;
"246": number;
"247": number;
"248": number;
"249": number;
"250": number;
"251": number;
"252": number;
"253": number;
"254": number;
100: number;
101: number;
102: number;
103: number;
104: number;
105: number;
106: number;
107: number;
108: number;
109: number;
110: number;
111: number;
112: number;
113: number;
114: number;
115: number;
116: number;
117: number;
118: number;
119: number;
120: number;
121: number;
122: number;
123: number;
124: number;
125: number;
126: number;
160: number;
161: number;
162: number;
163: number;
164: number;
165: number;
166: number;
167: number;
168: number;
169: number;
170: number;
171: number;
172: number;
173: number;
174: number;
175: number;
176: number;
177: number;
178: number;
179: number;
180: number;
181: number;
182: number;
183: number;
184: number;
185: number;
186: number;
187: number;
188: number;
189: number;
190: number;
191: number;
192: number;
193: number;
194: number;
195: number;
196: number;
197: number;
198: number;
199: number;
200: number;
201: number;
202: number;
203: number;
204: number;
205: number;
206: number;
207: number;
208: number;
209: number;
210: number;
211: number;
212: number;
213: number;
214: number;
215: number;
216: number;
217: number;
218: number;
219: number;
220: number;
221: number;
222: number;
223: number;
224: number;
225: number;
226: number;
227: number;
228: number;
229: number;
230: number;
231: number;
232: number;
233: number;
234: number;
235: number;
236: number;
237: number;
238: number;
239: number;
240: number;
241: number;
242: number;
243: number;
244: number;
245: number;
246: number;
247: number;
248: number;
249: number;
250: number;
251: number;
252: number;
253: number;
254: number;
32: number;
33: number;
34: number;
35: number;
36: number;
37: number;
38: number;
39: number;
40: number;
41: number;
42: number;
43: number;
44: number;
45: number;
46: number;
47: number;
48: number;
49: number;
50: number;
51: number;
52: number;
53: number;
54: number;
55: number;
56: number;
57: number;
58: number;
59: number;
60: number;
61: number;
62: number;
63: number;
64: number;
65: number;
66: number;
67: number;
68: number;
69: number;
70: number;
71: number;
72: number;
73: number;
74: number;
75: number;
76: number;
77: number;
78: number;
79: number;
80: number;
81: number;
82: number;
83: number;
84: number;
85: number;
86: number;
87: number;
88: number;
89: number;
90: number;
91: number;
92: number;
93: number;
94: number;
95: number;
96: number;
97: number;
98: number;
99: number;
};
export declare function calculateTextWidth(text: string, size: "8pt" | "10pt"): number;
export const arial8pt = {
"32": 3.05615234375,
"33": 3.05615234375,
"34": 3.90478515625,
"35": 6.11767578125,
"36": 6.11767578125,
"37": 9.78076171875,
"38": 7.3369140625,
"39": 2.10009765625,
"40": 3.6630859375,
"41": 3.6630859375,
"42": 4.28076171875,
"43": 6.423828125,
"44": 3.05615234375,
"45": 3.6630859375,
"46": 3.05615234375,
"47": 3.05615234375,
"48": 6.11767578125,
"49": 6.11767578125,
"50": 6.11767578125,
"51": 6.11767578125,
"52": 6.11767578125,
"53": 6.11767578125,
"54": 6.11767578125,
"55": 6.11767578125,
"56": 6.11767578125,
"57": 6.11767578125,
"58": 3.05615234375,
"59": 3.05615234375,
"60": 6.423828125,
"61": 6.423828125,
"62": 6.423828125,
"63": 6.11767578125,
"64": 11.16650390625,
"65": 7.3369140625,
"66": 7.3369140625,
"67": 7.94384765625,
"68": 7.94384765625,
"69": 7.3369140625,
"70": 6.71923828125,
"71": 8.55615234375,
"72": 7.94384765625,
"73": 3.05615234375,
"74": 5.5,
"75": 7.3369140625,
"76": 6.11767578125,
"77": 9.1630859375,
"78": 7.94384765625,
"79": 8.55615234375,
"80": 7.3369140625,
"81": 8.55615234375,
"82": 7.94384765625,
"83": 7.3369140625,
"84": 6.71923828125,
"85": 7.94384765625,
"86": 7.3369140625,
"87": 10.38232421875,
"88": 7.3369140625,
"89": 7.3369140625,
"90": 6.71923828125,
"91": 3.05615234375,
"92": 3.05615234375,
"93": 3.05615234375,
"94": 5.16162109375,
"95": 6.11767578125,
"96": 3.6630859375,
"97": 6.11767578125,
"98": 6.11767578125,
"99": 5.5,
"100": 6.11767578125,
"101": 6.11767578125,
"102": 3.05615234375,
"103": 6.11767578125,
"104": 6.11767578125,
"105": 2.44384765625,
"106": 2.44384765625,
"107": 5.5,
"108": 2.44384765625,
"109": 9.1630859375,
"110": 6.11767578125,
"111": 6.11767578125,
"112": 6.11767578125,
"113": 6.11767578125,
"114": 3.6630859375,
"115": 5.5,
"116": 3.05615234375,
"117": 6.11767578125,
"118": 5.5,
"119": 7.94384765625,
"120": 5.5,
"121": 5.5,
"122": 5.5,
"123": 3.673828125,
"124": 2.857421875,
"125": 3.673828125,
"126": 6.423828125,
"160": 3.05615234375,
"161": 3.6630859375,
"162": 6.11767578125,
"163": 6.11767578125,
"164": 6.11767578125,
"165": 6.11767578125,
"166": 2.857421875,
"167": 6.11767578125,
"168": 3.6630859375,
"169": 8.10498046875,
"170": 4.0712890625,
"171": 6.11767578125,
"172": 6.423828125,
"173": 0,
"174": 8.10498046875,
"175": 6.07470703125,
"176": 4.39892578125,
"177": 6.037109375,
"178": 3.6630859375,
"179": 3.6630859375,
"180": 3.6630859375,
"181": 6.337890625,
"182": 5.908203125,
"183": 3.6630859375,
"184": 3.6630859375,
"185": 3.6630859375,
"186": 4.017578125,
"187": 6.11767578125,
"188": 9.173828125,
"189": 9.173828125,
"190": 9.173828125,
"191": 6.71923828125,
"192": 7.3369140625,
"193": 7.3369140625,
"194": 7.3369140625,
"195": 7.3369140625,
"196": 7.3369140625,
"197": 7.3369140625,
"198": 11,
"199": 7.94384765625,
"200": 7.3369140625,
"201": 7.3369140625,
"202": 7.3369140625,
"203": 7.3369140625,
"204": 3.05615234375,
"205": 3.05615234375,
"206": 3.05615234375,
"207": 3.05615234375,
"208": 7.94384765625,
"209": 7.94384765625,
"210": 8.55615234375,
"211": 8.55615234375,
"212": 8.55615234375,
"213": 8.55615234375,
"214": 8.55615234375,
"215": 6.423828125,
"216": 8.55615234375,
"217": 7.94384765625,
"218": 7.94384765625,
"219": 7.94384765625,
"220": 7.94384765625,
"221": 7.3369140625,
"222": 7.3369140625,
"223": 6.71923828125,
"224": 6.11767578125,
"225": 6.11767578125,
"226": 6.11767578125,
"227": 6.11767578125,
"228": 6.11767578125,
"229": 6.11767578125,
"230": 9.78076171875,
"231": 5.5,
"232": 6.11767578125,
"233": 6.11767578125,
"234": 6.11767578125,
"235": 6.11767578125,
"236": 3.05615234375,
"237": 3.05615234375,
"238": 3.05615234375,
"239": 3.05615234375,
"240": 6.11767578125,
"241": 6.11767578125,
"242": 6.11767578125,
"243": 6.11767578125,
"244": 6.11767578125,
"245": 6.11767578125,
"246": 6.11767578125,
"247": 6.037109375,
"248": 6.71923828125,
"249": 6.11767578125,
"250": 6.11767578125,
"251": 6.11767578125,
"252": 6.11767578125,
"253": 5.5,
"254": 6.11767578125
100: 6.11767578125,
101: 6.11767578125,
102: 3.05615234375,
103: 6.11767578125,
104: 6.11767578125,
105: 2.44384765625,
106: 2.44384765625,
107: 5.5,
108: 2.44384765625,
109: 9.1630859375,
110: 6.11767578125,
111: 6.11767578125,
112: 6.11767578125,
113: 6.11767578125,
114: 3.6630859375,
115: 5.5,
116: 3.05615234375,
117: 6.11767578125,
118: 5.5,
119: 7.94384765625,
120: 5.5,
121: 5.5,
122: 5.5,
123: 3.673828125,
124: 2.857421875,
125: 3.673828125,
126: 6.423828125,
160: 3.05615234375,
161: 3.6630859375,
162: 6.11767578125,
163: 6.11767578125,
164: 6.11767578125,
165: 6.11767578125,
166: 2.857421875,
167: 6.11767578125,
168: 3.6630859375,
169: 8.10498046875,
170: 4.0712890625,
171: 6.11767578125,
172: 6.423828125,
173: 0,
174: 8.10498046875,
175: 6.07470703125,
176: 4.39892578125,
177: 6.037109375,
178: 3.6630859375,
179: 3.6630859375,
180: 3.6630859375,
181: 6.337890625,
182: 5.908203125,
183: 3.6630859375,
184: 3.6630859375,
185: 3.6630859375,
186: 4.017578125,
187: 6.11767578125,
188: 9.173828125,
189: 9.173828125,
190: 9.173828125,
191: 6.71923828125,
192: 7.3369140625,
193: 7.3369140625,
194: 7.3369140625,
195: 7.3369140625,
196: 7.3369140625,
197: 7.3369140625,
198: 11,
199: 7.94384765625,
200: 7.3369140625,
201: 7.3369140625,
202: 7.3369140625,
203: 7.3369140625,
204: 3.05615234375,
205: 3.05615234375,
206: 3.05615234375,
207: 3.05615234375,
208: 7.94384765625,
209: 7.94384765625,
210: 8.55615234375,
211: 8.55615234375,
212: 8.55615234375,
213: 8.55615234375,
214: 8.55615234375,
215: 6.423828125,
216: 8.55615234375,
217: 7.94384765625,
218: 7.94384765625,
219: 7.94384765625,
220: 7.94384765625,
221: 7.3369140625,
222: 7.3369140625,
223: 6.71923828125,
224: 6.11767578125,
225: 6.11767578125,
226: 6.11767578125,
227: 6.11767578125,
228: 6.11767578125,
229: 6.11767578125,
230: 9.78076171875,
231: 5.5,
232: 6.11767578125,
233: 6.11767578125,
234: 6.11767578125,
235: 6.11767578125,
236: 3.05615234375,
237: 3.05615234375,
238: 3.05615234375,
239: 3.05615234375,
240: 6.11767578125,
241: 6.11767578125,
242: 6.11767578125,
243: 6.11767578125,
244: 6.11767578125,
245: 6.11767578125,
246: 6.11767578125,
247: 6.037109375,
248: 6.71923828125,
249: 6.11767578125,
250: 6.11767578125,
251: 6.11767578125,
252: 6.11767578125,
253: 5.5,
254: 6.11767578125,
32: 3.05615234375,
33: 3.05615234375,
34: 3.90478515625,
35: 6.11767578125,
36: 6.11767578125,
37: 9.78076171875,
38: 7.3369140625,
39: 2.10009765625,
40: 3.6630859375,
41: 3.6630859375,
42: 4.28076171875,
43: 6.423828125,
44: 3.05615234375,
45: 3.6630859375,
46: 3.05615234375,
47: 3.05615234375,
48: 6.11767578125,
49: 6.11767578125,
50: 6.11767578125,
51: 6.11767578125,
52: 6.11767578125,
53: 6.11767578125,
54: 6.11767578125,
55: 6.11767578125,
56: 6.11767578125,
57: 6.11767578125,
58: 3.05615234375,
59: 3.05615234375,
60: 6.423828125,
61: 6.423828125,
62: 6.423828125,
63: 6.11767578125,
64: 11.16650390625,
65: 7.3369140625,
66: 7.3369140625,
67: 7.94384765625,
68: 7.94384765625,
69: 7.3369140625,
70: 6.71923828125,
71: 8.55615234375,
72: 7.94384765625,
73: 3.05615234375,
74: 5.5,
75: 7.3369140625,
76: 6.11767578125,
77: 9.1630859375,
78: 7.94384765625,
79: 8.55615234375,
80: 7.3369140625,
81: 8.55615234375,
82: 7.94384765625,
83: 7.3369140625,
84: 6.71923828125,
85: 7.94384765625,
86: 7.3369140625,
87: 10.38232421875,
88: 7.3369140625,
89: 7.3369140625,
90: 6.71923828125,
91: 3.05615234375,
92: 3.05615234375,
93: 3.05615234375,
94: 5.16162109375,
95: 6.11767578125,
96: 3.6630859375,
97: 6.11767578125,
98: 6.11767578125,
99: 5.5
};
export const arial10pt = {
"32": 3.61181640625,
"33": 3.61181640625,
"34": 4.61474609375,
"35": 7.22998046875,
"36": 7.22998046875,
"37": 11.55908203125,
"38": 8.6708984375,
"39": 2.48193359375,
"40": 4.3291015625,
"41": 4.3291015625,
"42": 5.05908203125,
"43": 7.591796875,
"44": 3.61181640625,
"45": 4.3291015625,
"46": 3.61181640625,
"47": 3.61181640625,
"48": 7.22998046875,
"49": 7.22998046875,
"50": 7.22998046875,
"51": 7.22998046875,
"52": 7.22998046875,
"53": 7.22998046875,
"54": 7.22998046875,
"55": 7.22998046875,
"56": 7.22998046875,
"57": 7.22998046875,
"58": 3.61181640625,
"59": 3.61181640625,
"60": 7.591796875,
"61": 7.591796875,
"62": 7.591796875,
"63": 7.22998046875,
"64": 13.19677734375,
"65": 8.6708984375,
"66": 8.6708984375,
"67": 9.38818359375,
"68": 9.38818359375,
"69": 8.6708984375,
"70": 7.94091796875,
"71": 10.11181640625,
"72": 9.38818359375,
"73": 3.61181640625,
"74": 6.5,
"75": 8.6708984375,
"76": 7.22998046875,
"77": 10.8291015625,
"78": 9.38818359375,
"79": 10.11181640625,
"80": 8.6708984375,
"81": 10.11181640625,
"82": 9.38818359375,
"83": 8.6708984375,
"84": 7.94091796875,
"85": 9.38818359375,
"86": 8.6708984375,
"87": 12.27001953125,
"88": 8.6708984375,
"89": 8.6708984375,
"90": 7.94091796875,
"91": 3.61181640625,
"92": 3.61181640625,
"93": 3.61181640625,
"94": 6.10009765625,
"95": 7.22998046875,
"96": 4.3291015625,
"97": 7.22998046875,
"98": 7.22998046875,
"99": 6.5,
"100": 7.22998046875,
"101": 7.22998046875,
"102": 3.61181640625,
"103": 7.22998046875,
"104": 7.22998046875,
"105": 2.88818359375,
"106": 2.88818359375,
"107": 6.5,
"108": 2.88818359375,
"109": 10.8291015625,
"110": 7.22998046875,
"111": 7.22998046875,
"112": 7.22998046875,
"113": 7.22998046875,
"114": 4.3291015625,
"115": 6.5,
"116": 3.61181640625,
"117": 7.22998046875,
"118": 6.5,
"119": 9.38818359375,
"120": 6.5,
"121": 6.5,
"122": 6.5,
"123": 4.341796875,
"124": 3.376953125,
"125": 4.341796875,
"126": 7.591796875,
"160": 3.61181640625,
"161": 4.3291015625,
"162": 7.22998046875,
"163": 7.22998046875,
"164": 7.22998046875,
"165": 7.22998046875,
"166": 3.376953125,
"167": 7.22998046875,
"168": 4.3291015625,
"169": 9.57861328125,
"170": 4.8115234375,
"171": 7.22998046875,
"172": 7.591796875,
"173": 0,
"174": 9.57861328125,
"175": 7.17919921875,
"176": 5.19873046875,
"177": 7.134765625,
"178": 4.3291015625,
"179": 4.3291015625,
"180": 4.3291015625,
"181": 7.490234375,
"182": 6.982421875,
"183": 4.3291015625,
"184": 4.3291015625,
"185": 4.3291015625,
"186": 4.748046875,
"187": 7.22998046875,
"188": 10.841796875,
"189": 10.841796875,
"190": 10.841796875,
"191": 7.94091796875,
"192": 8.6708984375,
"193": 8.6708984375,
"194": 8.6708984375,
"195": 8.6708984375,
"196": 8.6708984375,
"197": 8.6708984375,
"198": 13,
"199": 9.38818359375,
"200": 8.6708984375,
"201": 8.6708984375,
"202": 8.6708984375,
"203": 8.6708984375,
"204": 3.61181640625,
"205": 3.61181640625,
"206": 3.61181640625,
"207": 3.61181640625,
"208": 9.38818359375,
"209": 9.38818359375,
"210": 10.11181640625,
"211": 10.11181640625,
"212": 10.11181640625,
"213": 10.11181640625,
"214": 10.11181640625,
"215": 7.591796875,
"216": 10.11181640625,
"217": 9.38818359375,
"218": 9.38818359375,
"219": 9.38818359375,
"220": 9.38818359375,
"221": 8.6708984375,
"222": 8.6708984375,
"223": 7.94091796875,
"224": 7.22998046875,
"225": 7.22998046875,
"226": 7.22998046875,
"227": 7.22998046875,
"228": 7.22998046875,
"229": 7.22998046875,
"230": 11.55908203125,
"231": 6.5,
"232": 7.22998046875,
"233": 7.22998046875,
"234": 7.22998046875,
"235": 7.22998046875,
"236": 3.61181640625,
"237": 3.61181640625,
"238": 3.61181640625,
"239": 3.61181640625,
"240": 7.22998046875,
"241": 7.22998046875,
"242": 7.22998046875,
"243": 7.22998046875,
"244": 7.22998046875,
"245": 7.22998046875,
"246": 7.22998046875,
"247": 7.134765625,
"248": 7.94091796875,
"249": 7.22998046875,
"250": 7.22998046875,
"251": 7.22998046875,
"252": 7.22998046875,
"253": 6.5,
"254": 7.22998046875
100: 7.22998046875,
101: 7.22998046875,
102: 3.61181640625,
103: 7.22998046875,
104: 7.22998046875,
105: 2.88818359375,
106: 2.88818359375,
107: 6.5,
108: 2.88818359375,
109: 10.8291015625,
110: 7.22998046875,
111: 7.22998046875,
112: 7.22998046875,
113: 7.22998046875,
114: 4.3291015625,
115: 6.5,
116: 3.61181640625,
117: 7.22998046875,
118: 6.5,
119: 9.38818359375,
120: 6.5,
121: 6.5,
122: 6.5,
123: 4.341796875,
124: 3.376953125,
125: 4.341796875,
126: 7.591796875,
160: 3.61181640625,
161: 4.3291015625,
162: 7.22998046875,
163: 7.22998046875,
164: 7.22998046875,
165: 7.22998046875,
166: 3.376953125,
167: 7.22998046875,
168: 4.3291015625,
169: 9.57861328125,
170: 4.8115234375,
171: 7.22998046875,
172: 7.591796875,
173: 0,
174: 9.57861328125,
175: 7.17919921875,
176: 5.19873046875,
177: 7.134765625,
178: 4.3291015625,
179: 4.3291015625,
180: 4.3291015625,
181: 7.490234375,
182: 6.982421875,
183: 4.3291015625,
184: 4.3291015625,
185: 4.3291015625,
186: 4.748046875,
187: 7.22998046875,
188: 10.841796875,
189: 10.841796875,
190: 10.841796875,
191: 7.94091796875,
192: 8.6708984375,
193: 8.6708984375,
194: 8.6708984375,
195: 8.6708984375,
196: 8.6708984375,
197: 8.6708984375,
198: 13,
199: 9.38818359375,
200: 8.6708984375,
201: 8.6708984375,
202: 8.6708984375,
203: 8.6708984375,
204: 3.61181640625,
205: 3.61181640625,
206: 3.61181640625,
207: 3.61181640625,
208: 9.38818359375,
209: 9.38818359375,
210: 10.11181640625,
211: 10.11181640625,
212: 10.11181640625,
213: 10.11181640625,
214: 10.11181640625,
215: 7.591796875,
216: 10.11181640625,
217: 9.38818359375,
218: 9.38818359375,
219: 9.38818359375,
220: 9.38818359375,
221: 8.6708984375,
222: 8.6708984375,
223: 7.94091796875,
224: 7.22998046875,
225: 7.22998046875,
226: 7.22998046875,
227: 7.22998046875,
228: 7.22998046875,
229: 7.22998046875,
230: 11.55908203125,
231: 6.5,
232: 7.22998046875,
233: 7.22998046875,
234: 7.22998046875,
235: 7.22998046875,
236: 3.61181640625,
237: 3.61181640625,
238: 3.61181640625,
239: 3.61181640625,
240: 7.22998046875,
241: 7.22998046875,
242: 7.22998046875,
243: 7.22998046875,
244: 7.22998046875,
245: 7.22998046875,
246: 7.22998046875,
247: 7.134765625,
248: 7.94091796875,
249: 7.22998046875,
250: 7.22998046875,
251: 7.22998046875,
252: 7.22998046875,
253: 6.5,
254: 7.22998046875,
32: 3.61181640625,
33: 3.61181640625,
34: 4.61474609375,
35: 7.22998046875,
36: 7.22998046875,
37: 11.55908203125,
38: 8.6708984375,
39: 2.48193359375,
40: 4.3291015625,
41: 4.3291015625,
42: 5.05908203125,
43: 7.591796875,
44: 3.61181640625,
45: 4.3291015625,
46: 3.61181640625,
47: 3.61181640625,
48: 7.22998046875,
49: 7.22998046875,
50: 7.22998046875,
51: 7.22998046875,
52: 7.22998046875,
53: 7.22998046875,
54: 7.22998046875,
55: 7.22998046875,
56: 7.22998046875,
57: 7.22998046875,
58: 3.61181640625,
59: 3.61181640625,
60: 7.591796875,
61: 7.591796875,
62: 7.591796875,
63: 7.22998046875,
64: 13.19677734375,
65: 8.6708984375,
66: 8.6708984375,
67: 9.38818359375,
68: 9.38818359375,
69: 8.6708984375,
70: 7.94091796875,
71: 10.11181640625,
72: 9.38818359375,
73: 3.61181640625,
74: 6.5,
75: 8.6708984375,
76: 7.22998046875,
77: 10.8291015625,
78: 9.38818359375,
79: 10.11181640625,
80: 8.6708984375,
81: 10.11181640625,
82: 9.38818359375,
83: 8.6708984375,
84: 7.94091796875,
85: 9.38818359375,
86: 8.6708984375,
87: 12.27001953125,
88: 8.6708984375,
89: 8.6708984375,
90: 7.94091796875,
91: 3.61181640625,
92: 3.61181640625,
93: 3.61181640625,
94: 6.10009765625,
95: 7.22998046875,
96: 4.3291015625,
97: 7.22998046875,
98: 7.22998046875,
99: 6.5
};

@@ -385,0 +385,0 @@ export function calculateTextWidth(text, size) {

{
"version": "4.0.0-alpha.3",
"type": "module",
"name": "swissqrbill",
"version": "4.0.0-alpha.2",
"description": "Swiss QR Bill generation in Node.js and browsers",
"main": "./lib/node/cjs/node/index.js",
"module": "./lib/node/esm/node/index.js",
"browser": "./lib/browser/bundle/index.js",
"license": "MIT",
"author": "Roger Schönbächler",
"homepage": "https://github.com/schoero/SwissQRBill#readme",
"repository": {
"type": "git",
"url": "git+https://github.com/schoero/SwissQRBill.git"
},
"bugs": {
"url": "https://github.com/schoero/SwissQRBill/issues"
},
"sideEffects": false,
"exports": {
".": {
"node": {
"require": "./lib/node/cjs/node/index.js",
"import": "./lib/node/esm/node/index.js"
},
"browser": {
"require": "./lib/browser/bundle/index.js",
"import": "./lib/browser/esm/browser/index.js"
},
"default": {
"require": "./lib/node/cjs/node/index.js",
"import": "./lib/node/esm/node/index.js"
}
"./errors": {
"import": "./lib/esm/shared/errors.js",
"require": "./lib/cjs/shared/errors.js"
},
"./pdf": {
"import": "./lib/esm/pdf/swissqrbill.js",
"require": "./lib/cjs/pdf/swissqrbill.js"
},
"./svg": {
"node": {
"require": "./lib/node/cjs/node/svg.js",
"import": "./lib/node/esm/node/svg.js"
},
"browser": {
"require": "./lib/browser/bundle/index.js",
"import": "./lib/browser/esm/browser/svg.js"
},
"default": {
"require": "./lib/node/cjs/node/svg.js",
"import": "./lib/node/esm/node/svg.js"
}
"import": "./lib/esm/svg/swissqrbill.js",
"require": "./lib/cjs/svg/swissqrbill.js"
},
"./pdf": {
"node": {
"require": "./lib/node/cjs/node/pdf.js",
"import": "./lib/node/esm/node/pdf.js"
},
"browser": {
"require": "./lib/browser/bundle/index.js",
"import": "./lib/browser/esm/browser/pdf.js"
},
"default": {
"require": "./lib/node/cjs/node/pdf.js",
"import": "./lib/node/esm/node/pdf.js"
}
"./table": {
"import": "./lib/esm/pdf/table.js",
"require": "./lib/cjs/pdf/table.js"
},
"./utils": {
"node": {
"require": "./lib/node/cjs/shared/utils.js",
"import": "./lib/node/esm/shared/utils.js"
},
"browser": {
"require": "./lib/browser/bundle/index.js",
"import": "./lib/browser/esm/shared/utils.js"
},
"default": {
"require": "./lib/node/cjs/shared/utils.js",
"import": "./lib/node/esm/shared/utils.js"
}
},
"./types": {
"node": {
"require": "./lib/node/cjs/shared/types.js",
"import": "./lib/node/esm/shared/types.js"
},
"browser": {
"require": "./lib/browser/bundle/index.js",
"import": "./lib/browser/esm/shared/types.js"
},
"default": {
"require": "./lib/node/cjs/shared/types.js",
"import": "./lib/node/esm/shared/types.js"
}
"import": "./lib/esm/shared/types.js",
"require": "./lib/cjs/shared/types.js"
},
"./bundle": "./lib/browser/bundle/index.js",
"./lib/browser/bundle/index": "./lib/browser/bundle/index",
"./lib/browser/bundle/index.js": "./lib/browser/bundle/index.js",
"./lib/node/cjs/node/index": "./lib/node/cjs/node/index",
"./lib/node/esm/node/index": "./lib/node/esm/node/index",
"./lib/browser/esm/browser/index": "./lib/browser/esm/browser/index",
"./lib/node/cjs/node/index.js": "./lib/node/cjs/node/index.js",
"./lib/node/esm/node/index.js": "./lib/node/esm/node/index.js",
"./lib/browser/esm/browser/index.js": "./lib/browser/esm/browser/index.js",
"./lib/node/cjs/node/svg": "./lib/node/cjs/node/svg",
"./lib/node/esm/node/svg": "./lib/node/esm/node/svg",
"./lib/browser/esm/browser/svg": "./lib/browser/esm/browser/svg",
"./lib/node/cjs/node/svg.js": "./lib/node/cjs/node/svg.js",
"./lib/node/esm/node/svg.js": "./lib/node/esm/node/svg.js",
"./lib/browser/esm/browser/svg.js": "./lib/browser/esm/browser/svg.js",
"./lib/node/cjs/node/pdf": "./lib/node/cjs/node/pdf",
"./lib/node/esm/node/pdf": "./lib/node/esm/node/pdf",
"./lib/browser/esm/browser/pdf": "./lib/browser/esm/browser/pdf",
"./lib/node/cjs/node/pdf.js": "./lib/node/cjs/node/pdf.js",
"./lib/node/esm/node/pdf.js": "./lib/node/esm/node/pdf.js",
"./lib/browser/esm/browser/pdf.js": "./lib/browser/esm/browser/pdf.js",
"./lib/node/cjs/shared/utils": "./lib/node/cjs/shared/utils",
"./lib/node/esm/shared/utils": "./lib/node/esm/shared/utils",
"./lib/browser/esm/shared/utils": "./lib/browser/esm/shared/utils",
"./lib/node/cjs/shared/utils.js": "./lib/node/cjs/shared/utils.js",
"./lib/node/esm/shared/utils.js": "./lib/node/esm/shared/utils.js",
"./lib/browser/esm/shared/utils.js": "./lib/browser/esm/shared/utils.js",
"./lib/node/cjs/shared/types": "./lib/node/cjs/shared/types",
"./lib/node/esm/shared/types": "./lib/node/esm/shared/types",
"./lib/browser/esm/shared/types": "./lib/browser/esm/shared/types",
"./lib/node/cjs/shared/types.js": "./lib/node/cjs/shared/types.js",
"./lib/node/esm/shared/types.js": "./lib/node/esm/shared/types.js",
"./lib/browser/esm/shared/types.js": "./lib/browser/esm/shared/types.js"
"./utils": {
"import": "./lib/esm/shared/utils.js",
"require": "./lib/cjs/shared/utils.js"
}
},
"scripts": {
"build": "npm run build:esm && npm run build:cjs",
"build:cjs": "./scripts/build-cjs.sh",
"build:esm": "./scripts/build-esm.sh",
"docs": "npm run docs:pdf && npm run docs:svg && npm run docs:shared",
"docs:pdf": "unwritten src/pdf/swissqrbill.ts src/shared/types.ts -t tsconfig.docs.json -o docs/pdf/",
"docs:shared": "unwritten src/shared/utils.ts -t tsconfig.docs.json -o docs/utils/",
"docs:svg": "unwritten src/svg/swissqrbill.ts src/shared/types.ts -t tsconfig.docs.json -o docs/svg/",
"eslint": "eslint --ext .ts,.tsx,.js,.jsx,.json,.jsonc,.yml,.md ./",
"eslint:ci": "npm run eslint -- --max-warnings 0",
"eslint:fix": "npm run eslint -- --fix",
"lint": "npm run eslint && npm run markdownlint",
"lint:ci": "npm run eslint:ci && npm run markdownlint:ci",
"lint:fix": "npm run eslint:fix && npm run markdownlint:fix",
"markdownlint": "markdownlint-cli2 '**/*.md' '#node_modules'",
"markdownlint:ci": "npm run markdownlint",
"markdownlint:fix": "markdownlint-cli2-fix '**/*.md' '#node_modules'",
"spellcheck": "cspell lint",
"spellcheck:ci": "npm run spellcheck -- --no-progress",
"test": "vitest --config ./vite.config.ts --threads=false",
"test:update": "npm run test -- --update --run",
"test:visual": "cross-env VISUAL=true npm run test -- --run"
},
"files": [
"lib"
],
"scripts": {
"test": "npm run build && cd tests && sh run.sh",
"build": "tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && tsc -p tsconfig.browser.esm.json && webpack --mode production",
"postbuild": "sh fix-exports.sh"
"dependencies": {
"svg-engine": "^0.2.3"
},
"repository": {
"type": "git",
"url": "git+https://github.com/schoero/SwissQRBill.git"
"devDependencies": {
"@cspell/dict-fr-fr": "^2.2.2",
"@cspell/dict-it-it": "^3.0.1",
"@schoero/cspell-config": "^1.6.16",
"@schoero/eslint-config": "^1.41.17",
"@schoero/markdownlint-config": "^1.1.7",
"@schoero/ts-config": "^0.3.5",
"@schoero/unwritten-config": "^0.0.3",
"@schoero/vite-config": "^0.0.25",
"@types/node": "^20.6.3",
"@types/pdfkit": "^0.12.11",
"@types/svg-parser": "^2.0.3",
"@typescript-eslint/eslint-plugin": "^6.7.2",
"@typescript-eslint/parser": "^6.7.2",
"pdf2json": "^3.0.4",
"pdfkit": "^0.13.0",
"typescript": "^5.2.2",
"unwritten": "^0.0.3",
"vitest": "^0.34.4"
},

@@ -145,36 +111,6 @@ "keywords": [

],
"author": "Roger Schönbächler",
"license": "MIT",
"bugs": {
"url": "https://github.com/schoero/SwissQRBill/issues"
},
"homepage": "https://github.com/schoero/SwissQRBill#readme",
"devDependencies": {
"@schoero/eslint-config": "^1.4.0",
"@types/blob-stream": "^0.1.30",
"@types/node": "^17.0.19",
"@types/svg-parser": "^2.0.3",
"@typescript-eslint/eslint-plugin": "^5.12.1",
"@typescript-eslint/parser": "^5.12.1",
"assert": "^2.0.0",
"brfs": "^2.0.2",
"browserify-zlib": "^0.2.0",
"buffer": "^6.0.3",
"eslint": "^8.9.0",
"process": "^0.11.10",
"readable-stream": "^3.6.0",
"transform-loader": "^0.2.4",
"ts-loader": "^9.2.6",
"typescript": "^4.5.5",
"util": "^0.12.4",
"webpack": "^5.69.1",
"webpack-cli": "^4.9.2"
},
"dependencies": {
"@types/pdfkit": "^0.12.3",
"blob-stream": "^0.1.3",
"pdfkit": "^0.13.0",
"svg-engine": "^0.2.3",
"svgpath": "^2.5.0"
"volta": {
"node": "20.6.1",
"npm": "10.1.0"
}
}

@@ -26,3 +26,3 @@ <div align="center">

<a href="https://github.com/schoero/SwissQRBill/actions?query=workflow%3ACI">
<img alt="CI" src="https://img.shields.io/github/workflow/status/schoero/SwissQRBill/CI?style=flat-square">
<img alt="CI" src="https://img.shields.io/github/actions/workflow/status/schoero/SwissQRBill/ci.yml?branch=master&style=flat-square">
</a>

@@ -36,3 +36,3 @@ </div>

With SwissQRBill you can easily generate the new QR Code payment slips in Node.js and the browser. The new QR Code payment slips were introduced in Switzerland on June 30th, 2020 and should replace the current payment slips until September 30, 2022. In addition to the payment section, you can [generate a complete invoice](#further-informations) with SwissQRBill by inserting your own content above the payment section.
With SwissQRBill you can easily generate the new QR Code payment slips in Node.js and the browser. The new QR Code payment slips were introduced in Switzerland on June 30th, 2020 and replaces the old payment slips since October 1st, 2022. In addition to the payment section, you can [generate a complete invoice](#further-information) with SwissQRBill by inserting your own content above the payment section.

@@ -44,3 +44,2 @@ <br/>

<br/>

@@ -51,25 +50,25 @@ <br/>

* [Features](#features)
* [Installation](#installation)
* [Importing the library](#importing-the-library)
* [Quick start](#quick-start)
* [Browser usage](#browser-usage)
* [API documentation](https://github.com/schoero/SwissQRBill/blob/master/doc/api.md)
* [PDFKit documentation](http://pdfkit.org/docs/getting_started.html)
* [How to create a complete bill](https://github.com/schoero/SwissQRBill/blob/master/doc/how-to-create-a-complete-bill.md)
* [QR bill validator](https://swiss-qr-invoice.org/validator/?lang=de)
* [QR bill specifications](https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf)
* [Features](#features)
* [Installation](#installation)
* [Importing the library](#importing-the-library)
* [Quick start](#quick-start)
* [Browser usage](#browser-usage)
* [API documentation](https://github.com/schoero/SwissQRBill/blob/master/doc/api.md)
* [PDFKit documentation](http://pdfkit.org/docs/getting_started.html)
* [How to create a complete bill](https://github.com/schoero/SwissQRBill/blob/master/doc/how-to-create-a-complete-bill.md)
* [QR bill validator](https://swiss-qr-invoice.org/validator/?lang=de)
* [QR bill specifications](https://www.six-group.com/dam/download/banking-services/standardization/qr-bill/ig-qr-bill-v2.2-en.pdf)
<br/>
## Features
- Generate complete invoices, or only the QR Bill, as a PDF file.
- Generate the QR Bill as a scalable vector graphic (SVG).
- Works in browsers and Node.js.
- Supports german, english, italian and french invoices.
- Allows you to add other content above the invoice using [PDFKit](https://github.com/foliojs/pdfkit).
- Easy to use.
- Free and open source.
* Generate complete invoices, or only the QR Bill, as a PDF file.
* Generate the QR Bill as a scalable vector graphic (SVG).
* Works in browsers and Node.js.
* Supports german, english, italian and french invoices.
* Allows you to add other content above the invoice using [PDFKit](https://github.com/foliojs/pdfkit).
* Easy to use.
* Free and open source.
<br/>

@@ -109,3 +108,14 @@

Unfortunately, The [current version of TypeScript](https://github.com/microsoft/TypeScript/issues/46452) and Node.js prior to v12.16.0 or v13.6.0, do not support this feature.
Be aware that TypeScript versions prior to v4.7.0 and Node.js prior to v12.16.0 or v13.6.0, do not support this feature.
To get conditional exports to work with TypeScript > v4.7.0, you have to set these two options your `tsconfig.json`:
```json
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "NodeNext"
}
}
```
If you are using a TypeScript or Node.js version that doesn't support the new export feature, you can still take advantage of tree-shaking, by importing the files directly by their path.

@@ -126,3 +136,3 @@

```html
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/swissqrbill/lib/browser/bundle/index.js" />
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/swissqrbill/lib/browser/bundle/index.js"></script>
```

@@ -137,5 +147,4 @@

However, if you want to take advantage of tree-shaking in the browser, you have to bundle the library by yourself.
You can find an example, how this could be done using webpack, at https://github.com/schoero/SwissQRBill-browser-example.
You can find an example, how this could be done using webpack, at <https://github.com/schoero/SwissQRBill-browser-example>.
<br/>

@@ -152,25 +161,25 @@ <br/>

const data = {
currency: "CHF",
amount: 1199.95,
reference: "210000000003139471430009017",
creditor: {
name: "Robert Schneider AG",
account: "CH4431999123000889012",
address: "Rue du Lac",
buildingNumber: "1268",
zip: 2501,
city: "Biel",
account: "CH4431999123000889012",
country: "CH"
country: "CH",
name: "Robert Schneider AG",
zip: 2501
},
currency: "CHF",
debtor: {
name: "Pia-Maria Rutschmann-Schnyder",
address: "Grosse Marktgasse",
buildingNumber: "28",
zip: 9400,
city: "Rorschach",
country: "CH"
}
country: "CH",
name: "Pia-Maria Rutschmann-Schnyder",
zip: 9400
},
reference: "210000000003139471430009017"
};
const pdf = new PDF(data, "qrbill.pdf", () => {
const pdf = new PDF(data, "qr-bill.pdf", () => {
console.log("PDF has been successfully created.");

@@ -193,3 +202,3 @@ });

```js
import { PDF, BlobStream } from "swissqrbill/pdf";
import { BlobStream, PDF } from "swissqrbill/pdf";

@@ -216,6 +225,7 @@ const stream = new BlobStream();

```
<br/>
<br/>
## Further informations
## Further information

@@ -227,2 +237,2 @@ SwissQRBill.PDF extends [PDFKit](https://github.com/foliojs/pdfkit) to generate PDF files and adds a few extra methods. You can generate a complete PDF bill using the original PDFKit methods and the additional methods documented in [doc/api.md](https://github.com/schoero/SwissQRBill/tree/master/doc/api.md#methods).

[<img src="https://raw.githubusercontent.com/schoero/SwissQRBill/master/assets/complete-qr-bill.png">](https://github.com/schoero/SwissQRBill/tree/master/doc/how-to-create-a-complete-bill.md)
[<img src="https://raw.githubusercontent.com/schoero/SwissQRBill/master/assets/complete-qr-bill.png">](https://github.com/schoero/SwissQRBill/tree/master/doc/how-to-create-a-complete-bill.md)

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc