{"version":3,"sources":["../src/lib/util.ts","../src/lib/init.ts","../src/index.ts"],"sourcesContent":["import fs from 'fs';\nimport QRCode from 'qrcode';\nimport { eclType } from '../types/dataType';\nimport sharp from 'sharp';\n\nexport default class Util {\n\n    public static generatePngQR = async (payload: string, size: number = 400, ecl: eclType = 'H', fileName: string, filePath: string): Promise<boolean> => {\n        try {\n            size = parseInt(String(size));\n            const result = new Promise<string>((resolve, reject) => {\n                QRCode.toFile(\n                    `${filePath}/${fileName}.png`,\n                    [{ data: payload }],\n                    { width: size, margin: 0.5, type: 'png', errorCorrectionLevel: ecl },\n                    (err?: any | null, url?: string) => {\n                        if (err) {\n                            reject(err);\n                        } else {\n                            resolve(url!);\n                        }\n                    });\n            });\n            return true;\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static generatePngQRWithLogo = async (payload: string, size: number = 400, ecl: eclType = 'H', fileName: string, filePath: string, logoPath: string): Promise<boolean> => {\n        try {\n            size = parseInt(String(size));\n            const qrBuffer = await QRCode.toBuffer(\n                [{ data: payload }],\n                { width: size, margin: 0.5, type: 'png', errorCorrectionLevel: ecl },\n            );\n\n            const qrImage = sharp(qrBuffer).resize(size, size);\n            const logoImage = sharp(logoPath,)\n                .resize(Math.floor(size / 4), Math.floor(size / 4), { fit: 'contain', background: { r: 255, g: 255, b: 255, alpha: 0 } })\n                .toFormat('png');\n\n            const compositeImage = await qrImage\n                .composite([{ input: await logoImage.toBuffer(), gravity: 'center' }])\n                .png()\n                .toBuffer();\n\n            fs.writeFileSync(`${filePath}/${fileName}.png`, compositeImage);\n            return true;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static generateSvgQR = async (payload: string, size: number = 400, ecl: eclType = 'H', fileName: string, filePath: string): Promise<string | boolean> => {\n        try {\n            size = parseInt(String(size));\n            if (filePath && fileName) {\n                const result = new Promise<string>((resolve, reject) => {\n                    QRCode.toFile(\n                        `${filePath}/${fileName}.svg`,\n                        [{ data: payload }],\n                        { width: size, margin: 0.5, type: 'svg', errorCorrectionLevel: ecl },\n                        (err?: any | null, url?: string) => {\n                            if (err) {\n                                reject(err);\n                            } else {\n                                resolve(url!);\n                            }\n                        });\n                });\n                return true;\n            } else {\n                const result = new Promise<string>((resolve, reject) => {\n                    QRCode.toString([{ data: payload }], { type: 'svg', width: size, margin: 0.5, errorCorrectionLevel: ecl }, (err?: any | null, url?: string) => {\n                        if (err) {\n                            reject(err);\n                        } else {\n                            if (url) {\n                                resolve(url);\n                            } else {\n                                reject(new Error(\"QRCode generation failed\"));\n                            }\n                        }\n                    });\n                });\n                return result;\n            }\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static generateSvgQRWithLogo = async (payload: string, size: number = 400, ecl: eclType = 'H', fileName: string, filePath: string, logoPath: string): Promise<string | boolean> => {\n        try {\n\n            size = parseInt(String(size));\n            const qrBuffer = await QRCode.toBuffer(payload, {\n                width: size,\n                margin: 0.5,\n                errorCorrectionLevel: ecl,\n            });\n\n            const qrImage = sharp(qrBuffer).resize(size, size);\n            const logoSize = Math.floor(size / 4);\n            const logoImage = sharp(logoPath)\n                .resize(logoSize, logoSize, { fit: 'contain', background: { r: 255, g: 255, b: 255, alpha: 0 } })\n                .toFormat('png');\n\n            const compositeImage = await qrImage\n                .composite([{ input: await logoImage.toBuffer(), gravity: 'center' }])\n                .png()\n                .toBuffer();\n\n            const base64Data = `data:image/png;base64,${compositeImage.toString('base64')}`;\n\n      \n            // Convert base64 image to an SVG-compatible format\n            const svgData = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"400\" height=\"400\" viewBox=\"0 0 400 400\">\n                <image href=\"${base64Data}\" width=\"400\" height=\"400\"/>\n            </svg>`;\n\n            if (filePath && fileName) {\n                fs.writeFileSync(`${filePath}/${fileName}.svg`, svgData, 'utf-8');\n                return true;\n            }\n\n            return svgData;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    };\n\n    public static generateSvgQRFile = async (payload: string, size: number = 400, ecl: eclType = 'H', fileName: string, filePath: string): Promise<boolean> => {\n        try {\n            size = parseInt(String(size));\n            const result = new Promise<string>((resolve, reject) => {\n                QRCode.toFile(\n                    `${filePath}/${fileName}.svg`,\n                    [{ data: payload }],\n                    { width: size, margin: 0.5, type: 'svg', errorCorrectionLevel: ecl },\n                    (err?: any | null, url?: string) => {\n                        if (err) {\n                            reject(err);\n                        } else {\n                            resolve(url!);\n                        }\n                    });\n            });\n            return true;\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static generateSvgQRWithLogoFile = async (payload: string, size: number = 400, ecl: eclType = 'H', fileName: string, filePath: string, logoPath: string): Promise<boolean> => {\n        try {\n\n            size = parseInt(String(size));\n            const qrBuffer = await QRCode.toBuffer(payload, {\n                width: size,\n                margin: 0.5,\n                errorCorrectionLevel: ecl,\n            });\n\n            const qrImage = sharp(qrBuffer).resize(size, size);\n            const logoSize = Math.floor(size / 4);\n            const logoImage = sharp(logoPath)\n                .resize(logoSize, logoSize, { fit: 'contain', background: { r: 255, g: 255, b: 255, alpha: 0 } })\n                .toFormat('png');\n\n            const compositeImage = await qrImage\n                .composite([{ input: await logoImage.toBuffer(), gravity: 'center' }])\n                .png()\n                .toBuffer();\n\n            const base64Data = `data:image/png;base64,${compositeImage.toString('base64')}`;\n\n            // Convert base64 image to an SVG-compatible format\n            const svgData = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"400\" height=\"400\" viewBox=\"0 0 400 400\">\n                <image href=\"${base64Data}\" width=\"400\" height=\"400\"/>\n            </svg>`;\n\n            // Save the properly formatted SVG file\n            fs.writeFileSync(`${filePath}/${fileName}.svg`, svgData, 'utf-8');\n\n            return true;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    };\n\n    public static generateBase64QR = async (payload: string, size: number = 400, ecl: eclType = 'H'): Promise<string> => {\n        try {\n            size = parseInt(String(size));\n            const result = new Promise<string>((resolve, reject) => {\n                QRCode.toDataURL([{ data: payload }], { width: size, margin: 0.5, errorCorrectionLevel: ecl }, (err?: any | null, url?: string) => {\n                    if (err) {\n                        reject(err);\n                    } else {\n                        if (url) {\n                            resolve(url);\n                        } else {\n                            reject(new Error(\"QRCode generation failed\"));\n                        }\n                    }\n                })\n            });\n            return result;\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static generateBase64QrWithLogo = async (payload: string, size: number = 400, ecl: eclType = 'H', logoPath: string): Promise<string> => {\n        try {\n\n            size = parseInt(String(size));\n            const qrBuffer = await QRCode.toBuffer(payload, {\n                width: size,\n                margin: 0.5,\n                errorCorrectionLevel: ecl,\n            });\n\n            const qrImage = sharp(qrBuffer).resize(size, size);\n            const logoSize = Math.floor(size / 4);\n            const logoImage = sharp(logoPath)\n                .resize(logoSize, logoSize, { fit: 'contain', background: { r: 255, g: 255, b: 255, alpha: 0 } })\n                .toFormat('png');\n\n            const compositeImage = await qrImage\n                .composite([{ input: await logoImage.toBuffer(), gravity: 'center' }])\n                .png()\n                .toBuffer();\n\n            return `data:image/png;base64,${compositeImage.toString('base64')}`;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static base64ToImage = async (base64Data: string, fileName: string, filePath: string): Promise<boolean> => {\n        try {\n\n            const data = base64Data.replace(/^data:image\\/\\w+;base64,/, \"\");\n            const buf = Buffer.from(data, 'base64');\n            fs.writeFileSync(`${filePath}/${fileName}`, buf)\n\n            return true\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n\n    public static base64ToSvg = async (base64Data: string, fileName: string, filePath: string): Promise<boolean> => {\n        try {\n\n            // Convert base64 image to an SVG-compatible format\n            const svgData = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"400\" height=\"400\" viewBox=\"0 0 400 400\">\n                <image href=\"${base64Data}\" width=\"400\" height=\"400\"/>\n            </svg>`;\n\n            // Save the properly formatted SVG file\n            fs.writeFileSync(`${filePath}/${fileName}`, svgData, 'utf-8');\n            return true;\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n}","import Util from './util';\nimport { eclType } from '../types/dataType';\nexport default class Init {\n\n    public static async png(payload: string, size: number = 400, ecl: eclType, fileName: string, filePath: string): Promise<boolean> {\n        try {\n            const result = await Util.generatePngQR(payload, size, ecl, fileName, filePath);\n            return result;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static async pngWithLogo(payload: string, size: number = 400, ecl: eclType, fileName: string, filePath: string, logoPath: string): Promise<boolean> {\n        try {\n        \n            // const base64Data = await Util.generateBase64QrWithLogo(payload, size, ecl, logoPath);\n            // const result = await Util.base64ToImage(base64Data, fileName, filePath);\n            const result = await Util.generatePngQRWithLogo(payload, size, ecl, fileName, filePath, logoPath);\n            return result;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n\n    public static async base64(payload: string, size: number = 400, ecl: eclType): Promise<string> {\n        try {\n            const result = await Util.generateBase64QR(payload, size, ecl);\n            return result;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static async base64WithLogo(payload: string, size: number = 400, ecl: eclType, logoPath: string): Promise<string> {\n        try {\n\n            const result = await Util.generateBase64QrWithLogo(payload, size, ecl, logoPath);\n                return result;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static async svg(payload: string, size: number = 400, ecl: eclType, fileName: string, filePath: string): Promise<string | boolean> {\n        try {\n            const result = await Util.generateSvgQR(payload, size, ecl, fileName, filePath);\n            return result;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static async svgWithLogo(payload: string, size: number = 400, ecl: eclType, fileName: string, filePath: string, logoPath: string): Promise<string | boolean> {\n        try {\n            const result = await Util.generateSvgQRWithLogo(payload, size, ecl, fileName, filePath, logoPath);\n            return result;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n\n    public static async svgFile(payload: string, size: number = 400, ecl: eclType, fileName: string, filePath: string): Promise<boolean> {\n        try {\n\n            const result = await Util.generateSvgQRFile(payload, size, ecl, fileName, filePath);\n            return result;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n    public static async svgWithLogoFile(payload: string, size: number = 400, ecl: eclType, fileName: string, filePath: string, logoPath: string): Promise<boolean> {\n        try {\n\n            // const base64Data = await Util.generateBase64QrWithLogo(payload, size, ecl, logoPath);\n            // const result = await Util.base64ToSvg(base64Data, fileName, filePath);\n\n            const result = await Util.generateSvgQRWithLogoFile(payload, size, ecl, fileName, filePath, logoPath);\n            return result;\n\n        } catch (error: any) {\n            throw new Error(error);\n        }\n    }\n\n}","import Init from \"./lib/init\";\nimport { QRCodeOptions } from './types/dataType';\nclass QR {\n\n    constructor() {}\n\n    private static validateLogoPath(logoPath: string | null): string | null {\n        if (!logoPath) return null;\n\n        if (!/\\.(png|svg)$/i.test(logoPath)) {\n            throw new Error(`Invalid logo file type \"${logoPath}\". Only .png or .svg files are allowed.`);\n        }\n\n        return logoPath;\n    }\n\n    public static generate(payload: any, options: QRCodeOptions): Promise<string | boolean> {\n        \n        const { format = 'png', size = 400, errorCorrection = 'M', filePath, fileName, logoPath } = options;\n        \n        const validLogoPath = this.validateLogoPath(logoPath ?? '');\n\n        switch (format) {\n            case 'png':\n                return logoPath\n                    ? Init.pngWithLogo(payload, size, errorCorrection, fileName!, filePath!, validLogoPath!)\n                    : Init.png(payload, size, errorCorrection, fileName!, filePath!);\n            case 'svg':\n                return logoPath\n                    ? Init.svgWithLogo(payload, size, errorCorrection, fileName!, filePath!, validLogoPath!)\n                    : Init.svg(payload, size, errorCorrection, fileName!, filePath!);\n            case 'base64':\n                return logoPath\n                    ? Init.base64WithLogo(payload, size, errorCorrection, validLogoPath!)\n                    : Init.base64(payload, size, errorCorrection);\n            default:\n                throw new Error('Invalid format. Supported formats: png, svg, base64.');\n        }\n    }\n}\n// ✅ Fix export: Works for both CommonJS and ESM\nexport { QR };\nexport default QR;"],"mappings":"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","names":[]}