OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-wallet-lib / qr-svg.cjs

33 lines · javascript ref:
// QR Code generator using SVG (no fs dependency)

// Polyfill TextEncoder for Bare runtime
if (typeof global.TextEncoder === 'undefined') {
  const { TextEncoder, TextDecoder } = require('bare-encoding')
  global.TextEncoder = TextEncoder
  global.TextDecoder = TextDecoder
}

const QRCode = require('qrcode/lib/core/qrcode')
const SvgRenderer = require('qrcode/lib/renderer/svg')

async function generateQRCodeSVG(text, options = {}) {
  console.log('QRCode type:', typeof QRCode)
  console.log('QRCode.create type:', typeof QRCode?.create)
  console.log('QRCode keys:', Object.keys(QRCode || {}))

  // Create QR code data structure
  const qrData = QRCode.create(text, options)

  // Render to SVG
  const svg = await SvgRenderer.render(qrData, {
    ...options,
    type: 'svg'
  })

  // Convert SVG string to data URL
  const svgDataURL = `data:image/svg+xml;base64,${Buffer.from(svg).toString('base64')}`
  return svgDataURL
}

module.exports = { generateQRCodeSVG }