[
  {
    "name": "react",
    "version": "19.3.0",
    "license": "MIT",
    "purpose": "Interactive UI",
    "source": "https://github.com/react/react",
    "notice": "/licenses/react.txt"
  },
  {
    "name": "react-dom",
    "version": "19.3.0",
    "license": "MIT",
    "purpose": "UI renderer",
    "source": "https://github.com/react/react",
    "notice": "/licenses/react-dom.txt"
  },
  {
    "name": "scheduler",
    "version": "0.28.0",
    "license": "MIT",
    "purpose": "React scheduler",
    "source": "https://github.com/react/react",
    "notice": "/licenses/scheduler.txt"
  },
  {
    "name": "fflate",
    "version": "0.8.3",
    "license": "MIT",
    "purpose": "ZIP creation",
    "source": "https://github.com/101arrowz/fflate",
    "notice": "/licenses/fflate.txt"
  },
  {
    "name": "omggif",
    "version": "1.0.10",
    "license": "MIT",
    "purpose": "GIF decoder/encoder",
    "source": "https://github.com/deanm/omggif",
    "notice": "/licenses/omggif.txt"
  },
  {
    "name": "utif",
    "version": "3.1.0",
    "license": "MIT",
    "purpose": "TIFF decoder/encoder",
    "source": "https://github.com/photopea/UTIF.js",
    "notice": "/licenses/utif.txt"
  },
  {
    "name": "pako",
    "version": "1.0.11",
    "license": "(MIT AND Zlib)",
    "purpose": "Deflate codec",
    "source": "https://github.com/nodeca/pako",
    "notice": "/licenses/pako.txt"
  },
  {
    "name": "pdf-lib",
    "version": "1.17.1",
    "license": "MIT",
    "purpose": "PDF generation",
    "source": "https://github.com/Hopding/pdf-lib",
    "notice": "/licenses/pdf-lib.txt"
  },
  {
    "name": "@pdf-lib/standard-fonts",
    "version": "1.0.0",
    "license": "MIT",
    "purpose": "PDF standard-font metrics",
    "source": "https://github.com/Hopding/standard-fonts",
    "notice": "/licenses/pdf-lib-standard-fonts.txt"
  },
  {
    "name": "@pdf-lib/upng",
    "version": "1.0.1",
    "license": "MIT",
    "purpose": "PNG codec",
    "source": "https://github.com/Hopding/upng",
    "notice": "/licenses/pdf-lib-upng.txt"
  },
  {
    "name": "tslib",
    "version": "1.14.1",
    "license": "0BSD",
    "purpose": "TypeScript helpers",
    "source": "https://github.com/Microsoft/tslib",
    "notice": "/licenses/tslib.txt"
  },
  {
    "name": "@pdf-lib/fontkit",
    "version": "1.1.1",
    "license": "MIT",
    "purpose": "Lazy PDF Sign Unicode font embedding (upstream MIT declaration and bundled notices retained)",
    "source": "git://github.com/Hopding/fontkit",
    "notice": "/licenses/pdf-lib-fontkit.txt"
  },
  {
    "name": "pdfjs-dist",
    "version": "6.4.299",
    "license": "Apache-2.0",
    "purpose": "PDF parsing/rendering",
    "source": "https://github.com/mozilla/pdf.js",
    "notice": "/licenses/pdfjs-dist.txt"
  },
  {
    "name": "exifr",
    "version": "7.1.3",
    "license": "MIT",
    "purpose": "Local image metadata parsing",
    "source": "https://github.com/MikeKovarik/exifr",
    "notice": "/licenses/exifr.txt"
  },
  {
    "name": "mediainfo.js",
    "version": "0.3.8",
    "license": "BSD-2-Clause",
    "purpose": "Lazy local media inspection (MediaInfoLib WASM; native notices at /licenses/media-info/NOTICE.txt)",
    "source": "https://github.com/buzz/mediainfo.js",
    "notice": "/licenses/mediainfo.js.txt"
  },
  {
    "name": "tesseract.js",
    "version": "7.0.0",
    "license": "Apache-2.0",
    "purpose": "Lazy local image OCR (core, model and bundled runtime notices at /licenses/ocr/NOTICE.txt)",
    "source": "https://github.com/naptha/tesseract.js",
    "notice": "/licenses/tesseract.js.txt"
  },
  {
    "name": "@jsquash/avif",
    "version": "2.1.1",
    "license": "Apache-2.0",
    "purpose": "Lazy AVIF WASM encode/decode (libavif 1.0.1, libaom 3.7.0, libsharpyuv)",
    "source": "https://github.com/jamsinclair/jSquash",
    "notice": "/licenses/jsquash-avif.txt"
  },
  {
    "name": "wasm-feature-detect",
    "version": "1.9.0",
    "license": "Apache-2.0",
    "purpose": "Transitive helper",
    "source": "https://github.com/GoogleChromeLabs/wasm-feature-detect",
    "notice": "/licenses/wasm-feature-detect.txt"
  },
  {
    "name": "@ffmpeg/ffmpeg",
    "version": "0.12.15",
    "license": "MIT",
    "purpose": "Lazy browser worker API (MIT)",
    "source": "https://github.com/ffmpegwasm/ffmpeg.wasm",
    "notice": "/licenses/ffmpeg-ffmpeg.txt"
  },
  {
    "name": "@ffmpeg/types",
    "version": "0.12.4",
    "license": "MIT",
    "purpose": "FFmpeg TypeScript definitions (MIT)",
    "source": "https://github.com/ffmpegwasm/ffmpeg.wasm",
    "notice": "/licenses/ffmpeg-types.txt"
  },
  {
    "name": "qrcode-generator",
    "version": "2.0.4",
    "license": "MIT",
    "purpose": "Lazy local transfer pairing QR generation (MIT)",
    "source": "https://github.com/kazuhikoarase/qrcode-generator",
    "notice": "/licenses/qrcode-generator.txt"
  },
  {
    "name": "jsqr",
    "version": "1.4.0",
    "license": "Apache-2.0",
    "purpose": "Lazy local camera QR decoding (Apache-2.0)",
    "source": "https://github.com/cozmo/jsQR",
    "notice": "/licenses/jsqr.txt"
  },
  {
    "name": "@noble/hashes",
    "version": "2.0.1",
    "license": "MIT",
    "purpose": "Incremental SHA-256 for WebRTC file integrity (MIT)",
    "source": "https://github.com/paulmillr/noble-hashes",
    "notice": "/licenses/noble-hashes.txt"
  },
  {
    "name": "bmp-js",
    "version": "0.1.0",
    "license": "MIT",
    "purpose": "Transitive helper",
    "source": "https://github.com/shaozilee/bmp-js",
    "notice": "/licenses/bmp-js.txt"
  },
  {
    "name": "idb-keyval",
    "version": "6.3.0",
    "license": "Apache-2.0",
    "purpose": "Transitive helper",
    "source": "https://github.com/jakearchibald/idb-keyval",
    "notice": "/licenses/idb-keyval.txt"
  },
  {
    "name": "is-url",
    "version": "1.2.4",
    "license": "MIT",
    "purpose": "Transitive helper",
    "source": "https://github.com/segmentio/is-url",
    "notice": "/licenses/is-url.txt"
  },
  {
    "name": "regenerator-runtime",
    "version": "0.13.11",
    "license": "MIT",
    "purpose": "Transitive helper",
    "source": "https://github.com/facebook/regenerator/tree/main/packages/runtime",
    "notice": "/licenses/regenerator-runtime.txt"
  },
  {
    "name": "zlibjs",
    "version": "0.3.1",
    "license": "MIT",
    "purpose": "Transitive helper",
    "source": "git://github.com/imaya/zlib.js",
    "notice": "/licenses/zlibjs.txt"
  },
  {
    "name": "formatplease-ffmpeg-core",
    "version": "0.12.10-formatplease.1",
    "license": "GPL-2.0-or-later",
    "purpose": "FFmpeg 5.1.4 single-thread WASM (GPL-2.0-or-later; see video source record)",
    "source": "https://github.com/ffmpegwasm/ffmpeg.wasm",
    "notice": "/licenses/formatplease-ffmpeg-core.txt"
  },
  {
    "name": "astro",
    "version": "7.3.5",
    "license": "MIT",
    "purpose": "Static site and browser hydration bootstrap",
    "source": "https://github.com/withastro/astro",
    "notice": "/licenses/astro.txt"
  },
  {
    "name": "@astrojs/react",
    "version": "7.0.0",
    "license": "MIT",
    "purpose": "React island hydration adapter",
    "source": "https://github.com/withastro/astro",
    "notice": "/licenses/astrojs-react.txt"
  },
  {
    "name": "tailwindcss",
    "version": "4.3.3",
    "license": "MIT",
    "purpose": "Compiled styles",
    "source": "https://github.com/tailwindlabs/tailwindcss",
    "notice": "/licenses/tailwindcss.txt"
  }
]
