dev3000 0.0.96 → 0.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev-environment.d.ts +1 -0
- package/dist/dev-environment.d.ts.map +1 -1
- package/dist/dev-environment.js +31 -7
- package/dist/dev-environment.js.map +1 -1
- package/dist/src/tui-interface-impl.tsx +12 -5
- package/dist/tui-interface-impl.d.ts.map +1 -1
- package/dist/tui-interface-impl.js +12 -5
- package/dist/tui-interface-impl.js.map +1 -1
- package/mcp-server/.next/BUILD_ID +1 -1
- package/mcp-server/.next/build-manifest.json +10 -8
- package/mcp-server/.next/fallback-build-manifest.json +5 -3
- package/mcp-server/.next/images-manifest.json +2 -8
- package/mcp-server/.next/next-minimal-server.js.nft.json +1 -1
- package/mcp-server/.next/next-server.js.nft.json +1 -1
- package/mcp-server/.next/prerender-manifest.json +3 -3
- package/mcp-server/.next/required-server-files.json +18 -19
- package/mcp-server/.next/server/app/_global-error/page/build-manifest.json +5 -5
- package/mcp-server/.next/server/app/_global-error/page.js +8 -8
- package/mcp-server/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/_global-error.html +2 -2
- package/mcp-server/.next/server/app/_global-error.meta +1 -6
- package/mcp-server/.next/server/app/_global-error.rsc +13 -11
- package/mcp-server/.next/server/app/_not-found/page/build-manifest.json +5 -5
- package/mcp-server/.next/server/app/_not-found/page.js +10 -10
- package/mcp-server/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/_not-found.html +1 -1
- package/mcp-server/.next/server/app/_not-found.meta +1 -7
- package/mcp-server/.next/server/app/_not-found.rsc +14 -12
- package/mcp-server/.next/server/app/api/jank/[session]/route.js +6 -6
- package/mcp-server/.next/server/app/api/jank/[session]/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/append/route.js +4 -4
- package/mcp-server/.next/server/app/api/logs/append/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/head/route.js +4 -4
- package/mcp-server/.next/server/app/api/logs/head/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/list/route.js +4 -4
- package/mcp-server/.next/server/app/api/logs/list/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/rotate/route.js +5 -5
- package/mcp-server/.next/server/app/api/logs/rotate/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/stream/route.js +4 -4
- package/mcp-server/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/tail/route.js +4 -4
- package/mcp-server/.next/server/app/api/logs/tail/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/orchestrator/route.js +5 -5
- package/mcp-server/.next/server/app/api/orchestrator/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js +5 -5
- package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/screenshots/list/route.js +5 -5
- package/mcp-server/.next/server/app/api/screenshots/list/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/tools/route.js +5 -5
- package/mcp-server/.next/server/app/api/tools/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/index.html +1 -1
- package/mcp-server/.next/server/app/index.meta +2 -7
- package/mcp-server/.next/server/app/index.rsc +16 -14
- package/mcp-server/.next/server/app/logs/page/build-manifest.json +5 -5
- package/mcp-server/.next/server/app/logs/page.js +13 -13
- package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/mcp/route.js +4 -4
- package/mcp-server/.next/server/app/mcp/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/page/build-manifest.json +5 -5
- package/mcp-server/.next/server/app/page.js +12 -12
- package/mcp-server/.next/server/app/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/video/[session]/page/build-manifest.json +5 -5
- package/mcp-server/.next/server/app/video/[session]/page.js +12 -12
- package/mcp-server/.next/server/app/video/[session]/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/video/[session]/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__013bbeea._.js +7 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__013bbeea._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__05e38acd._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__05e38acd._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__2056c8b5._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__2056c8b5._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__3130ceec._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__3130ceec._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__5114419d._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__5114419d._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__5248c9ff._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__73645708._.js +11 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__73645708._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__8fc8f497._.js +4 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__8fc8f497._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__94037b23._.js +2 -2
- package/mcp-server/.next/server/chunks/[root-of-the-server]__94037b23._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__9a45c8f9._.js +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__9a45c8f9._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__9c489027._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__9c489027._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__a004a307._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__a004a307._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__ae49815f._.js +2 -2
- package/mcp-server/.next/server/chunks/[root-of-the-server]__ae49815f._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__cc74dbef._.js +2 -2
- package/mcp-server/.next/server/chunks/[root-of-the-server]__cc74dbef._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__cc81580c._.js +3 -0
- package/mcp-server/.next/server/chunks/{[root-of-the-server]__3899cb0e._.js.map → [root-of-the-server]__cc81580c._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__d200fe4a._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__d200fe4a._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__dc0b0022._.js +17 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__dc0b0022._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__e1a64519._.js +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__e1a64519._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[turbopack]_runtime.js +1 -1
- package/mcp-server/.next/server/chunks/[turbopack]_runtime.js.map +1 -1
- package/mcp-server/.next/server/chunks/d1d76_next_09a9e080._.js +17 -0
- package/mcp-server/.next/server/chunks/d1d76_next_09a9e080._.js.map +1 -0
- package/mcp-server/.next/server/chunks/d1d76_next_dist_esm_build_templates_app-route_820fc951.js +3 -0
- package/mcp-server/.next/server/chunks/d1d76_next_dist_esm_build_templates_app-route_820fc951.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__02a8c992._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__05689c01._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__9fa75557._.js.map → [root-of-the-server]__05689c01._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__61c905ce._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__00b0a236._.js.map → [root-of-the-server]__61c905ce._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__8863b0f6._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__8863b0f6._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9bc632fa._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__7a510847._.js.map → [root-of-the-server]__9bc632fa._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9f07837d._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__1c9d4256._.js.map → [root-of-the-server]__9f07837d._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__295a5dca._.js → [root-of-the-server]__a4bb31a6._.js} +2 -2
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__295a5dca._.js.map → [root-of-the-server]__a4bb31a6._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__aed64cd3._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__d545d815._.js.map → [root-of-the-server]__aed64cd3._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__cf030fda._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__28056c4f._.js.map → [root-of-the-server]__cf030fda._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__db74836a._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__712e3fd9._.js.map → [root-of-the-server]__db74836a._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__fc10c8f1._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__93844002._.js.map → [root-of-the-server]__fc10c8f1._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/[turbopack]_runtime.js +1 -1
- package/mcp-server/.next/server/chunks/ssr/[turbopack]_runtime.js.map +1 -1
- package/mcp-server/.next/server/chunks/ssr/_0b8335fc._.js +8 -0
- package/mcp-server/.next/server/chunks/ssr/_0b8335fc._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/_6129d8ec._.js +4 -0
- package/mcp-server/.next/server/chunks/ssr/_6129d8ec._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/_74bf5366._.js +8 -0
- package/mcp-server/.next/server/chunks/ssr/_74bf5366._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/_7d3d2f5f._.js +4 -0
- package/mcp-server/.next/server/chunks/ssr/_7d3d2f5f._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/_e4aa8f16._.js +4 -0
- package/mcp-server/.next/server/chunks/ssr/_e4aa8f16._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_032c5c2e._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_032c5c2e._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_08b22e19._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_08b22e19._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_369453b3._.js +6 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_369453b3._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_ad253fdc._.js +4 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_ad253fdc._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_b9509b36._.js +6 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_b9509b36._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_client_components_6557bb14._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{962f0_next_dist_client_components_0633a613._.js.map → d1d76_next_dist_client_components_6557bb14._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/{962f0_next_dist_client_components_builtin_forbidden_828a4c7b.js → d1d76_next_dist_client_components_builtin_forbidden_c162dd05.js} +2 -2
- package/mcp-server/.next/server/chunks/ssr/{962f0_next_dist_client_components_builtin_forbidden_828a4c7b.js.map → d1d76_next_dist_client_components_builtin_forbidden_c162dd05.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_client_components_builtin_global-error_3d982957.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{962f0_next_dist_client_components_builtin_global-error_c9f9f74f.js.map → d1d76_next_dist_client_components_builtin_global-error_3d982957.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/{962f0_next_dist_client_components_builtin_unauthorized_0a08bab6.js → d1d76_next_dist_client_components_builtin_unauthorized_e4f02ffd.js} +2 -2
- package/mcp-server/.next/server/chunks/ssr/{962f0_next_dist_client_components_builtin_unauthorized_0a08bab6.js.map → d1d76_next_dist_client_components_builtin_unauthorized_e4f02ffd.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_esm_build_templates_app-page_134a93a5.js +4 -0
- package/mcp-server/.next/server/chunks/ssr/d1d76_next_dist_esm_build_templates_app-page_134a93a5.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/mcp-server_app_layout_tsx_afa41767._.js +1 -1
- package/mcp-server/.next/server/chunks/ssr/mcp-server_app_page_tsx_9fc46577._.js +1 -1
- package/mcp-server/.next/server/chunks/ssr/mcp-server_app_page_tsx_9fc46577._.js.map +1 -1
- package/mcp-server/.next/server/chunks/ssr/mcp-server_components_dark-mode-toggle_tsx_f31dd15d._.js +1 -1
- package/mcp-server/.next/server/chunks/ssr/mcp-server_components_dark-mode-toggle_tsx_f31dd15d._.js.map +1 -1
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_3d10aa72._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_3d10aa72._.js.map +1 -0
- package/mcp-server/.next/server/middleware-build-manifest.js +8 -6
- package/mcp-server/.next/server/server-reference-manifest.js +1 -1
- package/mcp-server/.next/server/server-reference-manifest.json +1 -1
- package/mcp-server/.next/static/chunks/02f9434392c7ca30.js +1 -0
- package/mcp-server/.next/static/chunks/189ddffb3a8cbfbd.js +1 -0
- package/mcp-server/.next/static/chunks/1d2676338b51bbcf.js +1 -0
- package/mcp-server/.next/static/chunks/526448e84b58822c.js +1 -0
- package/mcp-server/.next/static/chunks/{e161f5ca5017b065.js → 711519b5a2e53fc8.js} +1 -1
- package/mcp-server/.next/static/chunks/7abbb9a17b62c1fa.js +1 -0
- package/mcp-server/.next/static/chunks/8364b81221aabb64.js +1 -0
- package/mcp-server/.next/static/chunks/98f7307a4a4d67d3.js +1 -0
- package/mcp-server/.next/static/chunks/a0ba80c585f94c7d.js +1 -0
- package/mcp-server/.next/static/chunks/addab50e23821c6c.js +1 -0
- package/mcp-server/.next/static/chunks/b5c56c55f894681d.js +1 -0
- package/mcp-server/.next/static/chunks/bb2e6ac36794beea.css +1 -0
- package/mcp-server/.next/static/chunks/turbopack-22a9e2c19fd12b04.js +3 -0
- package/mcp-server/next.config.mjs +0 -4
- package/package.json +1 -1
- package/src/tui-interface-impl.tsx +12 -5
- package/mcp-server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +0 -5
- package/mcp-server/.next/server/app/_global-error.segments/_index.segment.rsc +0 -4
- package/mcp-server/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -7
- package/mcp-server/.next/server/app/_not-found.segments/_index.segment.rsc +0 -5
- package/mcp-server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
- package/mcp-server/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -4
- package/mcp-server/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -8
- package/mcp-server/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -9
- package/mcp-server/.next/server/app/index.segments/_index.segment.rsc +0 -5
- package/mcp-server/.next/server/app/index.segments/_tree.segment.rsc +0 -8
- package/mcp-server/.next/server/chunks/962f0_next_80b90dc3._.js +0 -17
- package/mcp-server/.next/server/chunks/962f0_next_80b90dc3._.js.map +0 -1
- package/mcp-server/.next/server/chunks/962f0_next_dist_esm_build_templates_app-route_fbcab413.js +0 -3
- package/mcp-server/.next/server/chunks/962f0_next_dist_esm_build_templates_app-route_fbcab413.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__05e1e17a._.js +0 -11
- package/mcp-server/.next/server/chunks/[root-of-the-server]__05e1e17a._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__0f1f904c._.js +0 -4
- package/mcp-server/.next/server/chunks/[root-of-the-server]__0f1f904c._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__37cbcfad._.js +0 -3
- package/mcp-server/.next/server/chunks/[root-of-the-server]__3899cb0e._.js +0 -3
- package/mcp-server/.next/server/chunks/[root-of-the-server]__40003a13._.js +0 -3
- package/mcp-server/.next/server/chunks/[root-of-the-server]__40003a13._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__4e52a647._.js +0 -3
- package/mcp-server/.next/server/chunks/[root-of-the-server]__4e52a647._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__746ebd24._.js +0 -3
- package/mcp-server/.next/server/chunks/[root-of-the-server]__746ebd24._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__7820f710._.js +0 -7
- package/mcp-server/.next/server/chunks/[root-of-the-server]__7820f710._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__8caade4f._.js +0 -17
- package/mcp-server/.next/server/chunks/[root-of-the-server]__8caade4f._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__be04c8ec._.js +0 -3
- package/mcp-server/.next/server/chunks/[root-of-the-server]__be04c8ec._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__d8c4b7af._.js +0 -3
- package/mcp-server/.next/server/chunks/[root-of-the-server]__d8c4b7af._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__db4dce5b._.js +0 -3
- package/mcp-server/.next/server/chunks/[root-of-the-server]__db4dce5b._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__e305b486._.js +0 -3
- package/mcp-server/.next/server/chunks/[root-of-the-server]__e305b486._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_0ff128f8._.js +0 -6
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_0ff128f8._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_431de271._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_431de271._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_7f9577da._.js +0 -24
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_7f9577da._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_a28dc041._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_a28dc041._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_a8de8a6b._.js +0 -4
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_a8de8a6b._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_client_components_0633a613._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_client_components_builtin_global-error_c9f9f74f.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_esm_build_templates_app-page_077a704a.js +0 -4
- package/mcp-server/.next/server/chunks/ssr/962f0_next_dist_esm_build_templates_app-page_077a704a.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__00b0a236._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__1c9d4256._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__28056c4f._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__2c3254f5._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__4e8e802a._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__4e8e802a._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__712e3fd9._.js +0 -4
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__7a510847._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__93844002._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9fa75557._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__d545d815._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/_2485ac42._.js +0 -4
- package/mcp-server/.next/server/chunks/ssr/_2485ac42._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/_7665d4b6._.js +0 -8
- package/mcp-server/.next/server/chunks/ssr/_7665d4b6._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/_85b0bb0e._.js +0 -4
- package/mcp-server/.next/server/chunks/ssr/_85b0bb0e._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/_ab0d4e66._.js +0 -4
- package/mcp-server/.next/server/chunks/ssr/_ab0d4e66._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/_f8d18179._.js +0 -8
- package/mcp-server/.next/server/chunks/ssr/_f8d18179._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_c4e917e2._.js +0 -5
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_c4e917e2._.js.map +0 -1
- package/mcp-server/.next/static/chunks/05266f8dc7f39515.js +0 -1
- package/mcp-server/.next/static/chunks/254fc038b458fc24.js +0 -1
- package/mcp-server/.next/static/chunks/47dfa4a59a973c81.js +0 -3
- package/mcp-server/.next/static/chunks/523922d638939c73.js +0 -3
- package/mcp-server/.next/static/chunks/65304580f587f083.js +0 -4
- package/mcp-server/.next/static/chunks/6ceb8223d9b0e885.js +0 -1
- package/mcp-server/.next/static/chunks/8ed7fe711322c4f9.css +0 -1
- package/mcp-server/.next/static/chunks/9d92c8368f54bcf4.js +0 -1
- package/mcp-server/.next/static/chunks/c5e14dcc4f8e1b05.js +0 -20
- package/mcp-server/.next/static/chunks/cf974972e06aaa61.js +0 -3
- package/mcp-server/.next/static/chunks/f4943fd29d67839f.js +0 -1
- package/mcp-server/.next/static/chunks/turbopack-d86fbc741b623284.js +0 -3
- /package/mcp-server/.next/server/chunks/{[root-of-the-server]__37cbcfad._.js.map → [root-of-the-server]__5248c9ff._.js.map} +0 -0
- /package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__2c3254f5._.js.map → [root-of-the-server]__02a8c992._.js.map} +0 -0
- /package/mcp-server/.next/static/{IjjcEdBSrakBEegq2HWWk → 1GDuzglZduptPjz52czMu}/_buildManifest.js +0 -0
- /package/mcp-server/.next/static/{IjjcEdBSrakBEegq2HWWk → 1GDuzglZduptPjz52czMu}/_clientMiddlewareManifest.json +0 -0
- /package/mcp-server/.next/static/{IjjcEdBSrakBEegq2HWWk → 1GDuzglZduptPjz52czMu}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/node_modules/.pnpm/pixelmatch@7.1.0/node_modules/pixelmatch/index.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/chunkstream.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/interlace.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/paeth-predictor.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-parse.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-parse-async.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/constants.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/crc.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/parser.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/bitmapper.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/format-normaliser.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/parser-async.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/bitpacker.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-pack.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/packer.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/packer-async.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/sync-inflate.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/sync-reader.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-parse-sync.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/parser-sync.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/packer-sync.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/png-sync.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/png.js"],"sourcesContent":["/**\n * Compare two equally sized images, pixel by pixel.\n *\n * @param {Uint8Array | Uint8ClampedArray} img1 First image data.\n * @param {Uint8Array | Uint8ClampedArray} img2 Second image data.\n * @param {Uint8Array | Uint8ClampedArray | void} output Image data to write the diff to, if provided.\n * @param {number} width Input images width.\n * @param {number} height Input images height.\n *\n * @param {Object} [options]\n * @param {number} [options.threshold=0.1] Matching threshold (0 to 1); smaller is more sensitive.\n * @param {boolean} [options.includeAA=false] Whether to skip anti-aliasing detection.\n * @param {number} [options.alpha=0.1] Opacity of original image in diff output.\n * @param {[number, number, number]} [options.aaColor=[255, 255, 0]] Color of anti-aliased pixels in diff output.\n * @param {[number, number, number]} [options.diffColor=[255, 0, 0]] Color of different pixels in diff output.\n * @param {[number, number, number]} [options.diffColorAlt=options.diffColor] Whether to detect dark on light differences between img1 and img2 and set an alternative color to differentiate between the two.\n * @param {boolean} [options.diffMask=false] Draw the diff over a transparent background (a mask).\n *\n * @return {number} The number of mismatched pixels.\n */\nexport default function pixelmatch(img1, img2, output, width, height, options = {}) {\n const {\n threshold = 0.1,\n alpha = 0.1,\n aaColor = [255, 255, 0],\n diffColor = [255, 0, 0],\n includeAA, diffColorAlt, diffMask\n } = options;\n\n if (!isPixelData(img1) || !isPixelData(img2) || (output && !isPixelData(output)))\n throw new Error('Image data: Uint8Array, Uint8ClampedArray or Buffer expected.');\n\n if (img1.length !== img2.length || (output && output.length !== img1.length))\n throw new Error('Image sizes do not match.');\n\n if (img1.length !== width * height * 4) throw new Error('Image data size does not match width/height.');\n\n // check if images are identical\n const len = width * height;\n const a32 = new Uint32Array(img1.buffer, img1.byteOffset, len);\n const b32 = new Uint32Array(img2.buffer, img2.byteOffset, len);\n let identical = true;\n\n for (let i = 0; i < len; i++) {\n if (a32[i] !== b32[i]) { identical = false; break; }\n }\n if (identical) { // fast path if identical\n if (output && !diffMask) {\n for (let i = 0; i < len; i++) drawGrayPixel(img1, 4 * i, alpha, output);\n }\n return 0;\n }\n\n // maximum acceptable square distance between two colors;\n // 35215 is the maximum possible value for the YIQ difference metric\n const maxDelta = 35215 * threshold * threshold;\n const [aaR, aaG, aaB] = aaColor;\n const [diffR, diffG, diffB] = diffColor;\n const [altR, altG, altB] = diffColorAlt || diffColor;\n let diff = 0;\n\n // compare each pixel of one image against the other one\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n\n const i = y * width + x;\n const pos = i * 4;\n\n // squared YUV distance between colors at this pixel position, negative if the img2 pixel is darker\n const delta = a32[i] === b32[i] ? 0 : colorDelta(img1, img2, pos, pos, false);\n\n // the color difference is above the threshold\n if (Math.abs(delta) > maxDelta) {\n // check it's a real rendering difference or just anti-aliasing\n const isAA = antialiased(img1, x, y, width, height, a32, b32) || antialiased(img2, x, y, width, height, b32, a32);\n if (!includeAA && isAA) {\n // one of the pixels is anti-aliasing; draw as yellow and do not count as difference\n // note that we do not include such pixels in a mask\n if (output && !diffMask) drawPixel(output, pos, aaR, aaG, aaB);\n\n } else {\n // found substantial difference not caused by anti-aliasing; draw it as such\n if (output) {\n if (delta < 0) {\n drawPixel(output, pos, altR, altG, altB);\n } else {\n drawPixel(output, pos, diffR, diffG, diffB);\n }\n }\n diff++;\n }\n\n } else if (output && !diffMask) {\n // pixels are similar; draw background as grayscale image blended with white\n drawGrayPixel(img1, pos, alpha, output);\n }\n }\n }\n\n // return the number of different pixels\n return diff;\n}\n\n/** @param {Uint8Array | Uint8ClampedArray} arr */\nfunction isPixelData(arr) {\n // work around instanceof Uint8Array not working properly in some Jest environments\n return ArrayBuffer.isView(arr) && arr.BYTES_PER_ELEMENT === 1;\n}\n\n/**\n * Check if a pixel is likely a part of anti-aliasing;\n * based on \"Anti-aliased Pixel and Intensity Slope Detector\" paper by V. Vysniauskas, 2009\n * @param {Uint8Array | Uint8ClampedArray} img\n * @param {number} x1\n * @param {number} y1\n * @param {number} width\n * @param {number} height\n * @param {Uint32Array} a32\n * @param {Uint32Array} b32\n */\nfunction antialiased(img, x1, y1, width, height, a32, b32) {\n const x0 = Math.max(x1 - 1, 0);\n const y0 = Math.max(y1 - 1, 0);\n const x2 = Math.min(x1 + 1, width - 1);\n const y2 = Math.min(y1 + 1, height - 1);\n const pos = y1 * width + x1;\n let zeroes = x1 === x0 || x1 === x2 || y1 === y0 || y1 === y2 ? 1 : 0;\n let min = 0;\n let max = 0;\n let minX = 0;\n let minY = 0;\n let maxX = 0;\n let maxY = 0;\n\n // go through 8 adjacent pixels\n for (let x = x0; x <= x2; x++) {\n for (let y = y0; y <= y2; y++) {\n if (x === x1 && y === y1) continue;\n\n // brightness delta between the center pixel and adjacent one\n const delta = colorDelta(img, img, pos * 4, (y * width + x) * 4, true);\n\n // count the number of equal, darker and brighter adjacent pixels\n if (delta === 0) {\n zeroes++;\n // if found more than 2 equal siblings, it's definitely not anti-aliasing\n if (zeroes > 2) return false;\n\n // remember the darkest pixel\n } else if (delta < min) {\n min = delta;\n minX = x;\n minY = y;\n\n // remember the brightest pixel\n } else if (delta > max) {\n max = delta;\n maxX = x;\n maxY = y;\n }\n }\n }\n\n // if there are no both darker and brighter pixels among siblings, it's not anti-aliasing\n if (min === 0 || max === 0) return false;\n\n // if either the darkest or the brightest pixel has 3+ equal siblings in both images\n // (definitely not anti-aliased), this pixel is anti-aliased\n return (hasManySiblings(a32, minX, minY, width, height) && hasManySiblings(b32, minX, minY, width, height)) ||\n (hasManySiblings(a32, maxX, maxY, width, height) && hasManySiblings(b32, maxX, maxY, width, height));\n}\n\n/**\n * Check if a pixel has 3+ adjacent pixels of the same color.\n * @param {Uint32Array} img\n * @param {number} x1\n * @param {number} y1\n * @param {number} width\n * @param {number} height\n */\nfunction hasManySiblings(img, x1, y1, width, height) {\n const x0 = Math.max(x1 - 1, 0);\n const y0 = Math.max(y1 - 1, 0);\n const x2 = Math.min(x1 + 1, width - 1);\n const y2 = Math.min(y1 + 1, height - 1);\n const val = img[y1 * width + x1];\n let zeroes = x1 === x0 || x1 === x2 || y1 === y0 || y1 === y2 ? 1 : 0;\n\n // go through 8 adjacent pixels\n for (let x = x0; x <= x2; x++) {\n for (let y = y0; y <= y2; y++) {\n if (x === x1 && y === y1) continue;\n zeroes += +(val === img[y * width + x]);\n if (zeroes > 2) return true;\n }\n }\n return false;\n}\n\n/**\n * Calculate color difference according to the paper \"Measuring perceived color difference\n * using YIQ NTSC transmission color space in mobile applications\" by Y. Kotsarenko and F. Ramos\n * @param {Uint8Array | Uint8ClampedArray} img1\n * @param {Uint8Array | Uint8ClampedArray} img2\n * @param {number} k\n * @param {number} m\n * @param {boolean} yOnly\n */\nfunction colorDelta(img1, img2, k, m, yOnly) {\n const r1 = img1[k];\n const g1 = img1[k + 1];\n const b1 = img1[k + 2];\n const a1 = img1[k + 3];\n const r2 = img2[m];\n const g2 = img2[m + 1];\n const b2 = img2[m + 2];\n const a2 = img2[m + 3];\n\n let dr = r1 - r2;\n let dg = g1 - g2;\n let db = b1 - b2;\n const da = a1 - a2;\n\n if (!dr && !dg && !db && !da) return 0;\n\n if (a1 < 255 || a2 < 255) { // blend pixels with background\n const rb = 48 + 159 * (k % 2);\n const gb = 48 + 159 * ((k / 1.618033988749895 | 0) % 2);\n const bb = 48 + 159 * ((k / 2.618033988749895 | 0) % 2);\n dr = (r1 * a1 - r2 * a2 - rb * da) / 255;\n dg = (g1 * a1 - g2 * a2 - gb * da) / 255;\n db = (b1 * a1 - b2 * a2 - bb * da) / 255;\n }\n\n const y = dr * 0.29889531 + dg * 0.58662247 + db * 0.11448223;\n\n if (yOnly) return y; // brightness difference only\n\n const i = dr * 0.59597799 - dg * 0.27417610 - db * 0.32180189;\n const q = dr * 0.21147017 - dg * 0.52261711 + db * 0.31114694;\n\n const delta = 0.5053 * y * y + 0.299 * i * i + 0.1957 * q * q;\n\n // encode whether the pixel lightens or darkens in the sign\n return y > 0 ? -delta : delta;\n}\n\n/**\n * @param {Uint8Array | Uint8ClampedArray} output\n * @param {number} pos\n * @param {number} r\n * @param {number} g\n * @param {number} b\n */\nfunction drawPixel(output, pos, r, g, b) {\n output[pos + 0] = r;\n output[pos + 1] = g;\n output[pos + 2] = b;\n output[pos + 3] = 255;\n}\n\n/**\n * @param {Uint8Array | Uint8ClampedArray} img\n * @param {number} i\n * @param {number} alpha\n * @param {Uint8Array | Uint8ClampedArray} output\n */\nfunction drawGrayPixel(img, i, alpha, output) {\n const val = 255 + (img[i] * 0.29889531 + img[i + 1] * 0.58662247 + img[i + 2] * 0.11448223 - 255) * alpha * img[i + 3] / 255;\n drawPixel(output, i, val, val, val);\n}\n","\"use strict\";\n\nlet util = require(\"util\");\nlet Stream = require(\"stream\");\n\nlet ChunkStream = (module.exports = function () {\n Stream.call(this);\n\n this._buffers = [];\n this._buffered = 0;\n\n this._reads = [];\n this._paused = false;\n\n this._encoding = \"utf8\";\n this.writable = true;\n});\nutil.inherits(ChunkStream, Stream);\n\nChunkStream.prototype.read = function (length, callback) {\n this._reads.push({\n length: Math.abs(length), // if length < 0 then at most this length\n allowLess: length < 0,\n func: callback,\n });\n\n process.nextTick(\n function () {\n this._process();\n\n // its paused and there is not enought data then ask for more\n if (this._paused && this._reads && this._reads.length > 0) {\n this._paused = false;\n\n this.emit(\"drain\");\n }\n }.bind(this)\n );\n};\n\nChunkStream.prototype.write = function (data, encoding) {\n if (!this.writable) {\n this.emit(\"error\", new Error(\"Stream not writable\"));\n return false;\n }\n\n let dataBuffer;\n if (Buffer.isBuffer(data)) {\n dataBuffer = data;\n } else {\n dataBuffer = Buffer.from(data, encoding || this._encoding);\n }\n\n this._buffers.push(dataBuffer);\n this._buffered += dataBuffer.length;\n\n this._process();\n\n // ok if there are no more read requests\n if (this._reads && this._reads.length === 0) {\n this._paused = true;\n }\n\n return this.writable && !this._paused;\n};\n\nChunkStream.prototype.end = function (data, encoding) {\n if (data) {\n this.write(data, encoding);\n }\n\n this.writable = false;\n\n // already destroyed\n if (!this._buffers) {\n return;\n }\n\n // enqueue or handle end\n if (this._buffers.length === 0) {\n this._end();\n } else {\n this._buffers.push(null);\n this._process();\n }\n};\n\nChunkStream.prototype.destroySoon = ChunkStream.prototype.end;\n\nChunkStream.prototype._end = function () {\n if (this._reads.length > 0) {\n this.emit(\"error\", new Error(\"Unexpected end of input\"));\n }\n\n this.destroy();\n};\n\nChunkStream.prototype.destroy = function () {\n if (!this._buffers) {\n return;\n }\n\n this.writable = false;\n this._reads = null;\n this._buffers = null;\n\n this.emit(\"close\");\n};\n\nChunkStream.prototype._processReadAllowingLess = function (read) {\n // ok there is any data so that we can satisfy this request\n this._reads.shift(); // == read\n\n // first we need to peek into first buffer\n let smallerBuf = this._buffers[0];\n\n // ok there is more data than we need\n if (smallerBuf.length > read.length) {\n this._buffered -= read.length;\n this._buffers[0] = smallerBuf.slice(read.length);\n\n read.func.call(this, smallerBuf.slice(0, read.length));\n } else {\n // ok this is less than maximum length so use it all\n this._buffered -= smallerBuf.length;\n this._buffers.shift(); // == smallerBuf\n\n read.func.call(this, smallerBuf);\n }\n};\n\nChunkStream.prototype._processRead = function (read) {\n this._reads.shift(); // == read\n\n let pos = 0;\n let count = 0;\n let data = Buffer.alloc(read.length);\n\n // create buffer for all data\n while (pos < read.length) {\n let buf = this._buffers[count++];\n let len = Math.min(buf.length, read.length - pos);\n\n buf.copy(data, pos, 0, len);\n pos += len;\n\n // last buffer wasn't used all so just slice it and leave\n if (len !== buf.length) {\n this._buffers[--count] = buf.slice(len);\n }\n }\n\n // remove all used buffers\n if (count > 0) {\n this._buffers.splice(0, count);\n }\n\n this._buffered -= read.length;\n\n read.func.call(this, data);\n};\n\nChunkStream.prototype._process = function () {\n try {\n // as long as there is any data and read requests\n while (this._buffered > 0 && this._reads && this._reads.length > 0) {\n let read = this._reads[0];\n\n // read any data (but no more than length)\n if (read.allowLess) {\n this._processReadAllowingLess(read);\n } else if (this._buffered >= read.length) {\n // ok we can meet some expectations\n\n this._processRead(read);\n } else {\n // not enought data to satisfy first request in queue\n // so we need to wait for more\n break;\n }\n }\n\n if (this._buffers && !this.writable) {\n this._end();\n }\n } catch (ex) {\n this.emit(\"error\", ex);\n }\n};\n","\"use strict\";\n\n// Adam 7\n// 0 1 2 3 4 5 6 7\n// 0 x 6 4 6 x 6 4 6\n// 1 7 7 7 7 7 7 7 7\n// 2 5 6 5 6 5 6 5 6\n// 3 7 7 7 7 7 7 7 7\n// 4 3 6 4 6 3 6 4 6\n// 5 7 7 7 7 7 7 7 7\n// 6 5 6 5 6 5 6 5 6\n// 7 7 7 7 7 7 7 7 7\n\nlet imagePasses = [\n {\n // pass 1 - 1px\n x: [0],\n y: [0],\n },\n {\n // pass 2 - 1px\n x: [4],\n y: [0],\n },\n {\n // pass 3 - 2px\n x: [0, 4],\n y: [4],\n },\n {\n // pass 4 - 4px\n x: [2, 6],\n y: [0, 4],\n },\n {\n // pass 5 - 8px\n x: [0, 2, 4, 6],\n y: [2, 6],\n },\n {\n // pass 6 - 16px\n x: [1, 3, 5, 7],\n y: [0, 2, 4, 6],\n },\n {\n // pass 7 - 32px\n x: [0, 1, 2, 3, 4, 5, 6, 7],\n y: [1, 3, 5, 7],\n },\n];\n\nexports.getImagePasses = function (width, height) {\n let images = [];\n let xLeftOver = width % 8;\n let yLeftOver = height % 8;\n let xRepeats = (width - xLeftOver) / 8;\n let yRepeats = (height - yLeftOver) / 8;\n for (let i = 0; i < imagePasses.length; i++) {\n let pass = imagePasses[i];\n let passWidth = xRepeats * pass.x.length;\n let passHeight = yRepeats * pass.y.length;\n for (let j = 0; j < pass.x.length; j++) {\n if (pass.x[j] < xLeftOver) {\n passWidth++;\n } else {\n break;\n }\n }\n for (let j = 0; j < pass.y.length; j++) {\n if (pass.y[j] < yLeftOver) {\n passHeight++;\n } else {\n break;\n }\n }\n if (passWidth > 0 && passHeight > 0) {\n images.push({ width: passWidth, height: passHeight, index: i });\n }\n }\n return images;\n};\n\nexports.getInterlaceIterator = function (width) {\n return function (x, y, pass) {\n let outerXLeftOver = x % imagePasses[pass].x.length;\n let outerX =\n ((x - outerXLeftOver) / imagePasses[pass].x.length) * 8 +\n imagePasses[pass].x[outerXLeftOver];\n let outerYLeftOver = y % imagePasses[pass].y.length;\n let outerY =\n ((y - outerYLeftOver) / imagePasses[pass].y.length) * 8 +\n imagePasses[pass].y[outerYLeftOver];\n return outerX * 4 + outerY * width * 4;\n };\n};\n","\"use strict\";\n\nmodule.exports = function paethPredictor(left, above, upLeft) {\n let paeth = left + above - upLeft;\n let pLeft = Math.abs(paeth - left);\n let pAbove = Math.abs(paeth - above);\n let pUpLeft = Math.abs(paeth - upLeft);\n\n if (pLeft <= pAbove && pLeft <= pUpLeft) {\n return left;\n }\n if (pAbove <= pUpLeft) {\n return above;\n }\n return upLeft;\n};\n","\"use strict\";\n\nlet interlaceUtils = require(\"./interlace\");\nlet paethPredictor = require(\"./paeth-predictor\");\n\nfunction getByteWidth(width, bpp, depth) {\n let byteWidth = width * bpp;\n if (depth !== 8) {\n byteWidth = Math.ceil(byteWidth / (8 / depth));\n }\n return byteWidth;\n}\n\nlet Filter = (module.exports = function (bitmapInfo, dependencies) {\n let width = bitmapInfo.width;\n let height = bitmapInfo.height;\n let interlace = bitmapInfo.interlace;\n let bpp = bitmapInfo.bpp;\n let depth = bitmapInfo.depth;\n\n this.read = dependencies.read;\n this.write = dependencies.write;\n this.complete = dependencies.complete;\n\n this._imageIndex = 0;\n this._images = [];\n if (interlace) {\n let passes = interlaceUtils.getImagePasses(width, height);\n for (let i = 0; i < passes.length; i++) {\n this._images.push({\n byteWidth: getByteWidth(passes[i].width, bpp, depth),\n height: passes[i].height,\n lineIndex: 0,\n });\n }\n } else {\n this._images.push({\n byteWidth: getByteWidth(width, bpp, depth),\n height: height,\n lineIndex: 0,\n });\n }\n\n // when filtering the line we look at the pixel to the left\n // the spec also says it is done on a byte level regardless of the number of pixels\n // so if the depth is byte compatible (8 or 16) we subtract the bpp in order to compare back\n // a pixel rather than just a different byte part. However if we are sub byte, we ignore.\n if (depth === 8) {\n this._xComparison = bpp;\n } else if (depth === 16) {\n this._xComparison = bpp * 2;\n } else {\n this._xComparison = 1;\n }\n});\n\nFilter.prototype.start = function () {\n this.read(\n this._images[this._imageIndex].byteWidth + 1,\n this._reverseFilterLine.bind(this)\n );\n};\n\nFilter.prototype._unFilterType1 = function (\n rawData,\n unfilteredLine,\n byteWidth\n) {\n let xComparison = this._xComparison;\n let xBiggerThan = xComparison - 1;\n\n for (let x = 0; x < byteWidth; x++) {\n let rawByte = rawData[1 + x];\n let f1Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n unfilteredLine[x] = rawByte + f1Left;\n }\n};\n\nFilter.prototype._unFilterType2 = function (\n rawData,\n unfilteredLine,\n byteWidth\n) {\n let lastLine = this._lastLine;\n\n for (let x = 0; x < byteWidth; x++) {\n let rawByte = rawData[1 + x];\n let f2Up = lastLine ? lastLine[x] : 0;\n unfilteredLine[x] = rawByte + f2Up;\n }\n};\n\nFilter.prototype._unFilterType3 = function (\n rawData,\n unfilteredLine,\n byteWidth\n) {\n let xComparison = this._xComparison;\n let xBiggerThan = xComparison - 1;\n let lastLine = this._lastLine;\n\n for (let x = 0; x < byteWidth; x++) {\n let rawByte = rawData[1 + x];\n let f3Up = lastLine ? lastLine[x] : 0;\n let f3Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n let f3Add = Math.floor((f3Left + f3Up) / 2);\n unfilteredLine[x] = rawByte + f3Add;\n }\n};\n\nFilter.prototype._unFilterType4 = function (\n rawData,\n unfilteredLine,\n byteWidth\n) {\n let xComparison = this._xComparison;\n let xBiggerThan = xComparison - 1;\n let lastLine = this._lastLine;\n\n for (let x = 0; x < byteWidth; x++) {\n let rawByte = rawData[1 + x];\n let f4Up = lastLine ? lastLine[x] : 0;\n let f4Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n let f4UpLeft = x > xBiggerThan && lastLine ? lastLine[x - xComparison] : 0;\n let f4Add = paethPredictor(f4Left, f4Up, f4UpLeft);\n unfilteredLine[x] = rawByte + f4Add;\n }\n};\n\nFilter.prototype._reverseFilterLine = function (rawData) {\n let filter = rawData[0];\n let unfilteredLine;\n let currentImage = this._images[this._imageIndex];\n let byteWidth = currentImage.byteWidth;\n\n if (filter === 0) {\n unfilteredLine = rawData.slice(1, byteWidth + 1);\n } else {\n unfilteredLine = Buffer.alloc(byteWidth);\n\n switch (filter) {\n case 1:\n this._unFilterType1(rawData, unfilteredLine, byteWidth);\n break;\n case 2:\n this._unFilterType2(rawData, unfilteredLine, byteWidth);\n break;\n case 3:\n this._unFilterType3(rawData, unfilteredLine, byteWidth);\n break;\n case 4:\n this._unFilterType4(rawData, unfilteredLine, byteWidth);\n break;\n default:\n throw new Error(\"Unrecognised filter type - \" + filter);\n }\n }\n\n this.write(unfilteredLine);\n\n currentImage.lineIndex++;\n if (currentImage.lineIndex >= currentImage.height) {\n this._lastLine = null;\n this._imageIndex++;\n currentImage = this._images[this._imageIndex];\n } else {\n this._lastLine = unfilteredLine;\n }\n\n if (currentImage) {\n // read, using the byte width that may be from the new current image\n this.read(currentImage.byteWidth + 1, this._reverseFilterLine.bind(this));\n } else {\n this._lastLine = null;\n this.complete();\n }\n};\n","\"use strict\";\n\nlet util = require(\"util\");\nlet ChunkStream = require(\"./chunkstream\");\nlet Filter = require(\"./filter-parse\");\n\nlet FilterAsync = (module.exports = function (bitmapInfo) {\n ChunkStream.call(this);\n\n let buffers = [];\n let that = this;\n this._filter = new Filter(bitmapInfo, {\n read: this.read.bind(this),\n write: function (buffer) {\n buffers.push(buffer);\n },\n complete: function () {\n that.emit(\"complete\", Buffer.concat(buffers));\n },\n });\n\n this._filter.start();\n});\nutil.inherits(FilterAsync, ChunkStream);\n","\"use strict\";\n\nmodule.exports = {\n PNG_SIGNATURE: [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a],\n\n TYPE_IHDR: 0x49484452,\n TYPE_IEND: 0x49454e44,\n TYPE_IDAT: 0x49444154,\n TYPE_PLTE: 0x504c5445,\n TYPE_tRNS: 0x74524e53, // eslint-disable-line camelcase\n TYPE_gAMA: 0x67414d41, // eslint-disable-line camelcase\n\n // color-type bits\n COLORTYPE_GRAYSCALE: 0,\n COLORTYPE_PALETTE: 1,\n COLORTYPE_COLOR: 2,\n COLORTYPE_ALPHA: 4, // e.g. grayscale and alpha\n\n // color-type combinations\n COLORTYPE_PALETTE_COLOR: 3,\n COLORTYPE_COLOR_ALPHA: 6,\n\n COLORTYPE_TO_BPP_MAP: {\n 0: 1,\n 2: 3,\n 3: 1,\n 4: 2,\n 6: 4,\n },\n\n GAMMA_DIVISION: 100000,\n};\n","\"use strict\";\n\nlet crcTable = [];\n\n(function () {\n for (let i = 0; i < 256; i++) {\n let currentCrc = i;\n for (let j = 0; j < 8; j++) {\n if (currentCrc & 1) {\n currentCrc = 0xedb88320 ^ (currentCrc >>> 1);\n } else {\n currentCrc = currentCrc >>> 1;\n }\n }\n crcTable[i] = currentCrc;\n }\n})();\n\nlet CrcCalculator = (module.exports = function () {\n this._crc = -1;\n});\n\nCrcCalculator.prototype.write = function (data) {\n for (let i = 0; i < data.length; i++) {\n this._crc = crcTable[(this._crc ^ data[i]) & 0xff] ^ (this._crc >>> 8);\n }\n return true;\n};\n\nCrcCalculator.prototype.crc32 = function () {\n return this._crc ^ -1;\n};\n\nCrcCalculator.crc32 = function (buf) {\n let crc = -1;\n for (let i = 0; i < buf.length; i++) {\n crc = crcTable[(crc ^ buf[i]) & 0xff] ^ (crc >>> 8);\n }\n return crc ^ -1;\n};\n","\"use strict\";\n\nlet constants = require(\"./constants\");\nlet CrcCalculator = require(\"./crc\");\n\nlet Parser = (module.exports = function (options, dependencies) {\n this._options = options;\n options.checkCRC = options.checkCRC !== false;\n\n this._hasIHDR = false;\n this._hasIEND = false;\n this._emittedHeadersFinished = false;\n\n // input flags/metadata\n this._palette = [];\n this._colorType = 0;\n\n this._chunks = {};\n this._chunks[constants.TYPE_IHDR] = this._handleIHDR.bind(this);\n this._chunks[constants.TYPE_IEND] = this._handleIEND.bind(this);\n this._chunks[constants.TYPE_IDAT] = this._handleIDAT.bind(this);\n this._chunks[constants.TYPE_PLTE] = this._handlePLTE.bind(this);\n this._chunks[constants.TYPE_tRNS] = this._handleTRNS.bind(this);\n this._chunks[constants.TYPE_gAMA] = this._handleGAMA.bind(this);\n\n this.read = dependencies.read;\n this.error = dependencies.error;\n this.metadata = dependencies.metadata;\n this.gamma = dependencies.gamma;\n this.transColor = dependencies.transColor;\n this.palette = dependencies.palette;\n this.parsed = dependencies.parsed;\n this.inflateData = dependencies.inflateData;\n this.finished = dependencies.finished;\n this.simpleTransparency = dependencies.simpleTransparency;\n this.headersFinished = dependencies.headersFinished || function () {};\n});\n\nParser.prototype.start = function () {\n this.read(constants.PNG_SIGNATURE.length, this._parseSignature.bind(this));\n};\n\nParser.prototype._parseSignature = function (data) {\n let signature = constants.PNG_SIGNATURE;\n\n for (let i = 0; i < signature.length; i++) {\n if (data[i] !== signature[i]) {\n this.error(new Error(\"Invalid file signature\"));\n return;\n }\n }\n this.read(8, this._parseChunkBegin.bind(this));\n};\n\nParser.prototype._parseChunkBegin = function (data) {\n // chunk content length\n let length = data.readUInt32BE(0);\n\n // chunk type\n let type = data.readUInt32BE(4);\n let name = \"\";\n for (let i = 4; i < 8; i++) {\n name += String.fromCharCode(data[i]);\n }\n\n //console.log('chunk ', name, length);\n\n // chunk flags\n let ancillary = Boolean(data[4] & 0x20); // or critical\n // priv = Boolean(data[5] & 0x20), // or public\n // safeToCopy = Boolean(data[7] & 0x20); // or unsafe\n\n if (!this._hasIHDR && type !== constants.TYPE_IHDR) {\n this.error(new Error(\"Expected IHDR on beggining\"));\n return;\n }\n\n this._crc = new CrcCalculator();\n this._crc.write(Buffer.from(name));\n\n if (this._chunks[type]) {\n return this._chunks[type](length);\n }\n\n if (!ancillary) {\n this.error(new Error(\"Unsupported critical chunk type \" + name));\n return;\n }\n\n this.read(length + 4, this._skipChunk.bind(this));\n};\n\nParser.prototype._skipChunk = function (/*data*/) {\n this.read(8, this._parseChunkBegin.bind(this));\n};\n\nParser.prototype._handleChunkEnd = function () {\n this.read(4, this._parseChunkEnd.bind(this));\n};\n\nParser.prototype._parseChunkEnd = function (data) {\n let fileCrc = data.readInt32BE(0);\n let calcCrc = this._crc.crc32();\n\n // check CRC\n if (this._options.checkCRC && calcCrc !== fileCrc) {\n this.error(new Error(\"Crc error - \" + fileCrc + \" - \" + calcCrc));\n return;\n }\n\n if (!this._hasIEND) {\n this.read(8, this._parseChunkBegin.bind(this));\n }\n};\n\nParser.prototype._handleIHDR = function (length) {\n this.read(length, this._parseIHDR.bind(this));\n};\nParser.prototype._parseIHDR = function (data) {\n this._crc.write(data);\n\n let width = data.readUInt32BE(0);\n let height = data.readUInt32BE(4);\n let depth = data[8];\n let colorType = data[9]; // bits: 1 palette, 2 color, 4 alpha\n let compr = data[10];\n let filter = data[11];\n let interlace = data[12];\n\n // console.log(' width', width, 'height', height,\n // 'depth', depth, 'colorType', colorType,\n // 'compr', compr, 'filter', filter, 'interlace', interlace\n // );\n\n if (\n depth !== 8 &&\n depth !== 4 &&\n depth !== 2 &&\n depth !== 1 &&\n depth !== 16\n ) {\n this.error(new Error(\"Unsupported bit depth \" + depth));\n return;\n }\n if (!(colorType in constants.COLORTYPE_TO_BPP_MAP)) {\n this.error(new Error(\"Unsupported color type\"));\n return;\n }\n if (compr !== 0) {\n this.error(new Error(\"Unsupported compression method\"));\n return;\n }\n if (filter !== 0) {\n this.error(new Error(\"Unsupported filter method\"));\n return;\n }\n if (interlace !== 0 && interlace !== 1) {\n this.error(new Error(\"Unsupported interlace method\"));\n return;\n }\n\n this._colorType = colorType;\n\n let bpp = constants.COLORTYPE_TO_BPP_MAP[this._colorType];\n\n this._hasIHDR = true;\n\n this.metadata({\n width: width,\n height: height,\n depth: depth,\n interlace: Boolean(interlace),\n palette: Boolean(colorType & constants.COLORTYPE_PALETTE),\n color: Boolean(colorType & constants.COLORTYPE_COLOR),\n alpha: Boolean(colorType & constants.COLORTYPE_ALPHA),\n bpp: bpp,\n colorType: colorType,\n });\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handlePLTE = function (length) {\n this.read(length, this._parsePLTE.bind(this));\n};\nParser.prototype._parsePLTE = function (data) {\n this._crc.write(data);\n\n let entries = Math.floor(data.length / 3);\n // console.log('Palette:', entries);\n\n for (let i = 0; i < entries; i++) {\n this._palette.push([data[i * 3], data[i * 3 + 1], data[i * 3 + 2], 0xff]);\n }\n\n this.palette(this._palette);\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleTRNS = function (length) {\n this.simpleTransparency();\n this.read(length, this._parseTRNS.bind(this));\n};\nParser.prototype._parseTRNS = function (data) {\n this._crc.write(data);\n\n // palette\n if (this._colorType === constants.COLORTYPE_PALETTE_COLOR) {\n if (this._palette.length === 0) {\n this.error(new Error(\"Transparency chunk must be after palette\"));\n return;\n }\n if (data.length > this._palette.length) {\n this.error(new Error(\"More transparent colors than palette size\"));\n return;\n }\n for (let i = 0; i < data.length; i++) {\n this._palette[i][3] = data[i];\n }\n this.palette(this._palette);\n }\n\n // for colorType 0 (grayscale) and 2 (rgb)\n // there might be one gray/color defined as transparent\n if (this._colorType === constants.COLORTYPE_GRAYSCALE) {\n // grey, 2 bytes\n this.transColor([data.readUInt16BE(0)]);\n }\n if (this._colorType === constants.COLORTYPE_COLOR) {\n this.transColor([\n data.readUInt16BE(0),\n data.readUInt16BE(2),\n data.readUInt16BE(4),\n ]);\n }\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleGAMA = function (length) {\n this.read(length, this._parseGAMA.bind(this));\n};\nParser.prototype._parseGAMA = function (data) {\n this._crc.write(data);\n this.gamma(data.readUInt32BE(0) / constants.GAMMA_DIVISION);\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleIDAT = function (length) {\n if (!this._emittedHeadersFinished) {\n this._emittedHeadersFinished = true;\n this.headersFinished();\n }\n this.read(-length, this._parseIDAT.bind(this, length));\n};\nParser.prototype._parseIDAT = function (length, data) {\n this._crc.write(data);\n\n if (\n this._colorType === constants.COLORTYPE_PALETTE_COLOR &&\n this._palette.length === 0\n ) {\n throw new Error(\"Expected palette not found\");\n }\n\n this.inflateData(data);\n let leftOverLength = length - data.length;\n\n if (leftOverLength > 0) {\n this._handleIDAT(leftOverLength);\n } else {\n this._handleChunkEnd();\n }\n};\n\nParser.prototype._handleIEND = function (length) {\n this.read(length, this._parseIEND.bind(this));\n};\nParser.prototype._parseIEND = function (data) {\n this._crc.write(data);\n\n this._hasIEND = true;\n this._handleChunkEnd();\n\n if (this.finished) {\n this.finished();\n }\n};\n","\"use strict\";\n\nlet interlaceUtils = require(\"./interlace\");\n\nlet pixelBppMapper = [\n // 0 - dummy entry\n function () {},\n\n // 1 - L\n // 0: 0, 1: 0, 2: 0, 3: 0xff\n function (pxData, data, pxPos, rawPos) {\n if (rawPos === data.length) {\n throw new Error(\"Ran out of data\");\n }\n\n let pixel = data[rawPos];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = 0xff;\n },\n\n // 2 - LA\n // 0: 0, 1: 0, 2: 0, 3: 1\n function (pxData, data, pxPos, rawPos) {\n if (rawPos + 1 >= data.length) {\n throw new Error(\"Ran out of data\");\n }\n\n let pixel = data[rawPos];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = data[rawPos + 1];\n },\n\n // 3 - RGB\n // 0: 0, 1: 1, 2: 2, 3: 0xff\n function (pxData, data, pxPos, rawPos) {\n if (rawPos + 2 >= data.length) {\n throw new Error(\"Ran out of data\");\n }\n\n pxData[pxPos] = data[rawPos];\n pxData[pxPos + 1] = data[rawPos + 1];\n pxData[pxPos + 2] = data[rawPos + 2];\n pxData[pxPos + 3] = 0xff;\n },\n\n // 4 - RGBA\n // 0: 0, 1: 1, 2: 2, 3: 3\n function (pxData, data, pxPos, rawPos) {\n if (rawPos + 3 >= data.length) {\n throw new Error(\"Ran out of data\");\n }\n\n pxData[pxPos] = data[rawPos];\n pxData[pxPos + 1] = data[rawPos + 1];\n pxData[pxPos + 2] = data[rawPos + 2];\n pxData[pxPos + 3] = data[rawPos + 3];\n },\n];\n\nlet pixelBppCustomMapper = [\n // 0 - dummy entry\n function () {},\n\n // 1 - L\n // 0: 0, 1: 0, 2: 0, 3: 0xff\n function (pxData, pixelData, pxPos, maxBit) {\n let pixel = pixelData[0];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = maxBit;\n },\n\n // 2 - LA\n // 0: 0, 1: 0, 2: 0, 3: 1\n function (pxData, pixelData, pxPos) {\n let pixel = pixelData[0];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = pixelData[1];\n },\n\n // 3 - RGB\n // 0: 0, 1: 1, 2: 2, 3: 0xff\n function (pxData, pixelData, pxPos, maxBit) {\n pxData[pxPos] = pixelData[0];\n pxData[pxPos + 1] = pixelData[1];\n pxData[pxPos + 2] = pixelData[2];\n pxData[pxPos + 3] = maxBit;\n },\n\n // 4 - RGBA\n // 0: 0, 1: 1, 2: 2, 3: 3\n function (pxData, pixelData, pxPos) {\n pxData[pxPos] = pixelData[0];\n pxData[pxPos + 1] = pixelData[1];\n pxData[pxPos + 2] = pixelData[2];\n pxData[pxPos + 3] = pixelData[3];\n },\n];\n\nfunction bitRetriever(data, depth) {\n let leftOver = [];\n let i = 0;\n\n function split() {\n if (i === data.length) {\n throw new Error(\"Ran out of data\");\n }\n let byte = data[i];\n i++;\n let byte8, byte7, byte6, byte5, byte4, byte3, byte2, byte1;\n switch (depth) {\n default:\n throw new Error(\"unrecognised depth\");\n case 16:\n byte2 = data[i];\n i++;\n leftOver.push((byte << 8) + byte2);\n break;\n case 4:\n byte2 = byte & 0x0f;\n byte1 = byte >> 4;\n leftOver.push(byte1, byte2);\n break;\n case 2:\n byte4 = byte & 3;\n byte3 = (byte >> 2) & 3;\n byte2 = (byte >> 4) & 3;\n byte1 = (byte >> 6) & 3;\n leftOver.push(byte1, byte2, byte3, byte4);\n break;\n case 1:\n byte8 = byte & 1;\n byte7 = (byte >> 1) & 1;\n byte6 = (byte >> 2) & 1;\n byte5 = (byte >> 3) & 1;\n byte4 = (byte >> 4) & 1;\n byte3 = (byte >> 5) & 1;\n byte2 = (byte >> 6) & 1;\n byte1 = (byte >> 7) & 1;\n leftOver.push(byte1, byte2, byte3, byte4, byte5, byte6, byte7, byte8);\n break;\n }\n }\n\n return {\n get: function (count) {\n while (leftOver.length < count) {\n split();\n }\n let returner = leftOver.slice(0, count);\n leftOver = leftOver.slice(count);\n return returner;\n },\n resetAfterLine: function () {\n leftOver.length = 0;\n },\n end: function () {\n if (i !== data.length) {\n throw new Error(\"extra data found\");\n }\n },\n };\n}\n\nfunction mapImage8Bit(image, pxData, getPxPos, bpp, data, rawPos) {\n // eslint-disable-line max-params\n let imageWidth = image.width;\n let imageHeight = image.height;\n let imagePass = image.index;\n for (let y = 0; y < imageHeight; y++) {\n for (let x = 0; x < imageWidth; x++) {\n let pxPos = getPxPos(x, y, imagePass);\n pixelBppMapper[bpp](pxData, data, pxPos, rawPos);\n rawPos += bpp; //eslint-disable-line no-param-reassign\n }\n }\n return rawPos;\n}\n\nfunction mapImageCustomBit(image, pxData, getPxPos, bpp, bits, maxBit) {\n // eslint-disable-line max-params\n let imageWidth = image.width;\n let imageHeight = image.height;\n let imagePass = image.index;\n for (let y = 0; y < imageHeight; y++) {\n for (let x = 0; x < imageWidth; x++) {\n let pixelData = bits.get(bpp);\n let pxPos = getPxPos(x, y, imagePass);\n pixelBppCustomMapper[bpp](pxData, pixelData, pxPos, maxBit);\n }\n bits.resetAfterLine();\n }\n}\n\nexports.dataToBitMap = function (data, bitmapInfo) {\n let width = bitmapInfo.width;\n let height = bitmapInfo.height;\n let depth = bitmapInfo.depth;\n let bpp = bitmapInfo.bpp;\n let interlace = bitmapInfo.interlace;\n let bits;\n\n if (depth !== 8) {\n bits = bitRetriever(data, depth);\n }\n let pxData;\n if (depth <= 8) {\n pxData = Buffer.alloc(width * height * 4);\n } else {\n pxData = new Uint16Array(width * height * 4);\n }\n let maxBit = Math.pow(2, depth) - 1;\n let rawPos = 0;\n let images;\n let getPxPos;\n\n if (interlace) {\n images = interlaceUtils.getImagePasses(width, height);\n getPxPos = interlaceUtils.getInterlaceIterator(width, height);\n } else {\n let nonInterlacedPxPos = 0;\n getPxPos = function () {\n let returner = nonInterlacedPxPos;\n nonInterlacedPxPos += 4;\n return returner;\n };\n images = [{ width: width, height: height }];\n }\n\n for (let imageIndex = 0; imageIndex < images.length; imageIndex++) {\n if (depth === 8) {\n rawPos = mapImage8Bit(\n images[imageIndex],\n pxData,\n getPxPos,\n bpp,\n data,\n rawPos\n );\n } else {\n mapImageCustomBit(\n images[imageIndex],\n pxData,\n getPxPos,\n bpp,\n bits,\n maxBit\n );\n }\n }\n if (depth === 8) {\n if (rawPos !== data.length) {\n throw new Error(\"extra data found\");\n }\n } else {\n bits.end();\n }\n\n return pxData;\n};\n","\"use strict\";\n\nfunction dePalette(indata, outdata, width, height, palette) {\n let pxPos = 0;\n // use values from palette\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n let color = palette[indata[pxPos]];\n\n if (!color) {\n throw new Error(\"index \" + indata[pxPos] + \" not in palette\");\n }\n\n for (let i = 0; i < 4; i++) {\n outdata[pxPos + i] = color[i];\n }\n pxPos += 4;\n }\n }\n}\n\nfunction replaceTransparentColor(indata, outdata, width, height, transColor) {\n let pxPos = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n let makeTrans = false;\n\n if (transColor.length === 1) {\n if (transColor[0] === indata[pxPos]) {\n makeTrans = true;\n }\n } else if (\n transColor[0] === indata[pxPos] &&\n transColor[1] === indata[pxPos + 1] &&\n transColor[2] === indata[pxPos + 2]\n ) {\n makeTrans = true;\n }\n if (makeTrans) {\n for (let i = 0; i < 4; i++) {\n outdata[pxPos + i] = 0;\n }\n }\n pxPos += 4;\n }\n }\n}\n\nfunction scaleDepth(indata, outdata, width, height, depth) {\n let maxOutSample = 255;\n let maxInSample = Math.pow(2, depth) - 1;\n let pxPos = 0;\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n for (let i = 0; i < 4; i++) {\n outdata[pxPos + i] = Math.floor(\n (indata[pxPos + i] * maxOutSample) / maxInSample + 0.5\n );\n }\n pxPos += 4;\n }\n }\n}\n\nmodule.exports = function (indata, imageData, skipRescale = false) {\n let depth = imageData.depth;\n let width = imageData.width;\n let height = imageData.height;\n let colorType = imageData.colorType;\n let transColor = imageData.transColor;\n let palette = imageData.palette;\n\n let outdata = indata; // only different for 16 bits\n\n if (colorType === 3) {\n // paletted\n dePalette(indata, outdata, width, height, palette);\n } else {\n if (transColor) {\n replaceTransparentColor(indata, outdata, width, height, transColor);\n }\n // if it needs scaling\n if (depth !== 8 && !skipRescale) {\n // if we need to change the buffer size\n if (depth === 16) {\n outdata = Buffer.alloc(width * height * 4);\n }\n scaleDepth(indata, outdata, width, height, depth);\n }\n }\n return outdata;\n};\n","\"use strict\";\n\nlet util = require(\"util\");\nlet zlib = require(\"zlib\");\nlet ChunkStream = require(\"./chunkstream\");\nlet FilterAsync = require(\"./filter-parse-async\");\nlet Parser = require(\"./parser\");\nlet bitmapper = require(\"./bitmapper\");\nlet formatNormaliser = require(\"./format-normaliser\");\n\nlet ParserAsync = (module.exports = function (options) {\n ChunkStream.call(this);\n\n this._parser = new Parser(options, {\n read: this.read.bind(this),\n error: this._handleError.bind(this),\n metadata: this._handleMetaData.bind(this),\n gamma: this.emit.bind(this, \"gamma\"),\n palette: this._handlePalette.bind(this),\n transColor: this._handleTransColor.bind(this),\n finished: this._finished.bind(this),\n inflateData: this._inflateData.bind(this),\n simpleTransparency: this._simpleTransparency.bind(this),\n headersFinished: this._headersFinished.bind(this),\n });\n this._options = options;\n this.writable = true;\n\n this._parser.start();\n});\nutil.inherits(ParserAsync, ChunkStream);\n\nParserAsync.prototype._handleError = function (err) {\n this.emit(\"error\", err);\n\n this.writable = false;\n\n this.destroy();\n\n if (this._inflate && this._inflate.destroy) {\n this._inflate.destroy();\n }\n\n if (this._filter) {\n this._filter.destroy();\n // For backward compatibility with Node 7 and below.\n // Suppress errors due to _inflate calling write() even after\n // it's destroy()'ed.\n this._filter.on(\"error\", function () {});\n }\n\n this.errord = true;\n};\n\nParserAsync.prototype._inflateData = function (data) {\n if (!this._inflate) {\n if (this._bitmapInfo.interlace) {\n this._inflate = zlib.createInflate();\n\n this._inflate.on(\"error\", this.emit.bind(this, \"error\"));\n this._filter.on(\"complete\", this._complete.bind(this));\n\n this._inflate.pipe(this._filter);\n } else {\n let rowSize =\n ((this._bitmapInfo.width *\n this._bitmapInfo.bpp *\n this._bitmapInfo.depth +\n 7) >>\n 3) +\n 1;\n let imageSize = rowSize * this._bitmapInfo.height;\n let chunkSize = Math.max(imageSize, zlib.Z_MIN_CHUNK);\n\n this._inflate = zlib.createInflate({ chunkSize: chunkSize });\n let leftToInflate = imageSize;\n\n let emitError = this.emit.bind(this, \"error\");\n this._inflate.on(\"error\", function (err) {\n if (!leftToInflate) {\n return;\n }\n\n emitError(err);\n });\n this._filter.on(\"complete\", this._complete.bind(this));\n\n let filterWrite = this._filter.write.bind(this._filter);\n this._inflate.on(\"data\", function (chunk) {\n if (!leftToInflate) {\n return;\n }\n\n if (chunk.length > leftToInflate) {\n chunk = chunk.slice(0, leftToInflate);\n }\n\n leftToInflate -= chunk.length;\n\n filterWrite(chunk);\n });\n\n this._inflate.on(\"end\", this._filter.end.bind(this._filter));\n }\n }\n this._inflate.write(data);\n};\n\nParserAsync.prototype._handleMetaData = function (metaData) {\n this._metaData = metaData;\n this._bitmapInfo = Object.create(metaData);\n\n this._filter = new FilterAsync(this._bitmapInfo);\n};\n\nParserAsync.prototype._handleTransColor = function (transColor) {\n this._bitmapInfo.transColor = transColor;\n};\n\nParserAsync.prototype._handlePalette = function (palette) {\n this._bitmapInfo.palette = palette;\n};\n\nParserAsync.prototype._simpleTransparency = function () {\n this._metaData.alpha = true;\n};\n\nParserAsync.prototype._headersFinished = function () {\n // Up until this point, we don't know if we have a tRNS chunk (alpha)\n // so we can't emit metadata any earlier\n this.emit(\"metadata\", this._metaData);\n};\n\nParserAsync.prototype._finished = function () {\n if (this.errord) {\n return;\n }\n\n if (!this._inflate) {\n this.emit(\"error\", \"No Inflate block\");\n } else {\n // no more data to inflate\n this._inflate.end();\n }\n};\n\nParserAsync.prototype._complete = function (filteredData) {\n if (this.errord) {\n return;\n }\n\n let normalisedBitmapData;\n\n try {\n let bitmapData = bitmapper.dataToBitMap(filteredData, this._bitmapInfo);\n\n normalisedBitmapData = formatNormaliser(\n bitmapData,\n this._bitmapInfo,\n this._options.skipRescale\n );\n bitmapData = null;\n } catch (ex) {\n this._handleError(ex);\n return;\n }\n\n this.emit(\"parsed\", normalisedBitmapData);\n};\n","\"use strict\";\n\nlet constants = require(\"./constants\");\n\nmodule.exports = function (dataIn, width, height, options) {\n let outHasAlpha =\n [constants.COLORTYPE_COLOR_ALPHA, constants.COLORTYPE_ALPHA].indexOf(\n options.colorType\n ) !== -1;\n if (options.colorType === options.inputColorType) {\n let bigEndian = (function () {\n let buffer = new ArrayBuffer(2);\n new DataView(buffer).setInt16(0, 256, true /* littleEndian */);\n // Int16Array uses the platform's endianness.\n return new Int16Array(buffer)[0] !== 256;\n })();\n // If no need to convert to grayscale and alpha is present/absent in both, take a fast route\n if (options.bitDepth === 8 || (options.bitDepth === 16 && bigEndian)) {\n return dataIn;\n }\n }\n\n // map to a UInt16 array if data is 16bit, fix endianness below\n let data = options.bitDepth !== 16 ? dataIn : new Uint16Array(dataIn.buffer);\n\n let maxValue = 255;\n let inBpp = constants.COLORTYPE_TO_BPP_MAP[options.inputColorType];\n if (inBpp === 4 && !options.inputHasAlpha) {\n inBpp = 3;\n }\n let outBpp = constants.COLORTYPE_TO_BPP_MAP[options.colorType];\n if (options.bitDepth === 16) {\n maxValue = 65535;\n outBpp *= 2;\n }\n let outData = Buffer.alloc(width * height * outBpp);\n\n let inIndex = 0;\n let outIndex = 0;\n\n let bgColor = options.bgColor || {};\n if (bgColor.red === undefined) {\n bgColor.red = maxValue;\n }\n if (bgColor.green === undefined) {\n bgColor.green = maxValue;\n }\n if (bgColor.blue === undefined) {\n bgColor.blue = maxValue;\n }\n\n function getRGBA() {\n let red;\n let green;\n let blue;\n let alpha = maxValue;\n switch (options.inputColorType) {\n case constants.COLORTYPE_COLOR_ALPHA:\n alpha = data[inIndex + 3];\n red = data[inIndex];\n green = data[inIndex + 1];\n blue = data[inIndex + 2];\n break;\n case constants.COLORTYPE_COLOR:\n red = data[inIndex];\n green = data[inIndex + 1];\n blue = data[inIndex + 2];\n break;\n case constants.COLORTYPE_ALPHA:\n alpha = data[inIndex + 1];\n red = data[inIndex];\n green = red;\n blue = red;\n break;\n case constants.COLORTYPE_GRAYSCALE:\n red = data[inIndex];\n green = red;\n blue = red;\n break;\n default:\n throw new Error(\n \"input color type:\" +\n options.inputColorType +\n \" is not supported at present\"\n );\n }\n\n if (options.inputHasAlpha) {\n if (!outHasAlpha) {\n alpha /= maxValue;\n red = Math.min(\n Math.max(Math.round((1 - alpha) * bgColor.red + alpha * red), 0),\n maxValue\n );\n green = Math.min(\n Math.max(Math.round((1 - alpha) * bgColor.green + alpha * green), 0),\n maxValue\n );\n blue = Math.min(\n Math.max(Math.round((1 - alpha) * bgColor.blue + alpha * blue), 0),\n maxValue\n );\n }\n }\n return { red: red, green: green, blue: blue, alpha: alpha };\n }\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n let rgba = getRGBA(data, inIndex);\n\n switch (options.colorType) {\n case constants.COLORTYPE_COLOR_ALPHA:\n case constants.COLORTYPE_COLOR:\n if (options.bitDepth === 8) {\n outData[outIndex] = rgba.red;\n outData[outIndex + 1] = rgba.green;\n outData[outIndex + 2] = rgba.blue;\n if (outHasAlpha) {\n outData[outIndex + 3] = rgba.alpha;\n }\n } else {\n outData.writeUInt16BE(rgba.red, outIndex);\n outData.writeUInt16BE(rgba.green, outIndex + 2);\n outData.writeUInt16BE(rgba.blue, outIndex + 4);\n if (outHasAlpha) {\n outData.writeUInt16BE(rgba.alpha, outIndex + 6);\n }\n }\n break;\n case constants.COLORTYPE_ALPHA:\n case constants.COLORTYPE_GRAYSCALE: {\n // Convert to grayscale and alpha\n let grayscale = (rgba.red + rgba.green + rgba.blue) / 3;\n if (options.bitDepth === 8) {\n outData[outIndex] = grayscale;\n if (outHasAlpha) {\n outData[outIndex + 1] = rgba.alpha;\n }\n } else {\n outData.writeUInt16BE(grayscale, outIndex);\n if (outHasAlpha) {\n outData.writeUInt16BE(rgba.alpha, outIndex + 2);\n }\n }\n break;\n }\n default:\n throw new Error(\"unrecognised color Type \" + options.colorType);\n }\n\n inIndex += inBpp;\n outIndex += outBpp;\n }\n }\n\n return outData;\n};\n","\"use strict\";\n\nlet paethPredictor = require(\"./paeth-predictor\");\n\nfunction filterNone(pxData, pxPos, byteWidth, rawData, rawPos) {\n for (let x = 0; x < byteWidth; x++) {\n rawData[rawPos + x] = pxData[pxPos + x];\n }\n}\n\nfunction filterSumNone(pxData, pxPos, byteWidth) {\n let sum = 0;\n let length = pxPos + byteWidth;\n\n for (let i = pxPos; i < length; i++) {\n sum += Math.abs(pxData[i]);\n }\n return sum;\n}\n\nfunction filterSub(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let val = pxData[pxPos + x] - left;\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumSub(pxData, pxPos, byteWidth, bpp) {\n let sum = 0;\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let val = pxData[pxPos + x] - left;\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterUp(pxData, pxPos, byteWidth, rawData, rawPos) {\n for (let x = 0; x < byteWidth; x++) {\n let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n let val = pxData[pxPos + x] - up;\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumUp(pxData, pxPos, byteWidth) {\n let sum = 0;\n let length = pxPos + byteWidth;\n for (let x = pxPos; x < length; x++) {\n let up = pxPos > 0 ? pxData[x - byteWidth] : 0;\n let val = pxData[x] - up;\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterAvg(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n let val = pxData[pxPos + x] - ((left + up) >> 1);\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumAvg(pxData, pxPos, byteWidth, bpp) {\n let sum = 0;\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n let val = pxData[pxPos + x] - ((left + up) >> 1);\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterPaeth(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n let upleft =\n pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;\n let val = pxData[pxPos + x] - paethPredictor(left, up, upleft);\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumPaeth(pxData, pxPos, byteWidth, bpp) {\n let sum = 0;\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n let upleft =\n pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;\n let val = pxData[pxPos + x] - paethPredictor(left, up, upleft);\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nlet filters = {\n 0: filterNone,\n 1: filterSub,\n 2: filterUp,\n 3: filterAvg,\n 4: filterPaeth,\n};\n\nlet filterSums = {\n 0: filterSumNone,\n 1: filterSumSub,\n 2: filterSumUp,\n 3: filterSumAvg,\n 4: filterSumPaeth,\n};\n\nmodule.exports = function (pxData, width, height, options, bpp) {\n let filterTypes;\n if (!(\"filterType\" in options) || options.filterType === -1) {\n filterTypes = [0, 1, 2, 3, 4];\n } else if (typeof options.filterType === \"number\") {\n filterTypes = [options.filterType];\n } else {\n throw new Error(\"unrecognised filter types\");\n }\n\n if (options.bitDepth === 16) {\n bpp *= 2;\n }\n let byteWidth = width * bpp;\n let rawPos = 0;\n let pxPos = 0;\n let rawData = Buffer.alloc((byteWidth + 1) * height);\n\n let sel = filterTypes[0];\n\n for (let y = 0; y < height; y++) {\n if (filterTypes.length > 1) {\n // find best filter for this line (with lowest sum of values)\n let min = Infinity;\n\n for (let i = 0; i < filterTypes.length; i++) {\n let sum = filterSums[filterTypes[i]](pxData, pxPos, byteWidth, bpp);\n if (sum < min) {\n sel = filterTypes[i];\n min = sum;\n }\n }\n }\n\n rawData[rawPos] = sel;\n rawPos++;\n filters[sel](pxData, pxPos, byteWidth, rawData, rawPos, bpp);\n rawPos += byteWidth;\n pxPos += byteWidth;\n }\n return rawData;\n};\n","\"use strict\";\n\nlet constants = require(\"./constants\");\nlet CrcStream = require(\"./crc\");\nlet bitPacker = require(\"./bitpacker\");\nlet filter = require(\"./filter-pack\");\nlet zlib = require(\"zlib\");\n\nlet Packer = (module.exports = function (options) {\n this._options = options;\n\n options.deflateChunkSize = options.deflateChunkSize || 32 * 1024;\n options.deflateLevel =\n options.deflateLevel != null ? options.deflateLevel : 9;\n options.deflateStrategy =\n options.deflateStrategy != null ? options.deflateStrategy : 3;\n options.inputHasAlpha =\n options.inputHasAlpha != null ? options.inputHasAlpha : true;\n options.deflateFactory = options.deflateFactory || zlib.createDeflate;\n options.bitDepth = options.bitDepth || 8;\n // This is outputColorType\n options.colorType =\n typeof options.colorType === \"number\"\n ? options.colorType\n : constants.COLORTYPE_COLOR_ALPHA;\n options.inputColorType =\n typeof options.inputColorType === \"number\"\n ? options.inputColorType\n : constants.COLORTYPE_COLOR_ALPHA;\n\n if (\n [\n constants.COLORTYPE_GRAYSCALE,\n constants.COLORTYPE_COLOR,\n constants.COLORTYPE_COLOR_ALPHA,\n constants.COLORTYPE_ALPHA,\n ].indexOf(options.colorType) === -1\n ) {\n throw new Error(\n \"option color type:\" + options.colorType + \" is not supported at present\"\n );\n }\n if (\n [\n constants.COLORTYPE_GRAYSCALE,\n constants.COLORTYPE_COLOR,\n constants.COLORTYPE_COLOR_ALPHA,\n constants.COLORTYPE_ALPHA,\n ].indexOf(options.inputColorType) === -1\n ) {\n throw new Error(\n \"option input color type:\" +\n options.inputColorType +\n \" is not supported at present\"\n );\n }\n if (options.bitDepth !== 8 && options.bitDepth !== 16) {\n throw new Error(\n \"option bit depth:\" + options.bitDepth + \" is not supported at present\"\n );\n }\n});\n\nPacker.prototype.getDeflateOptions = function () {\n return {\n chunkSize: this._options.deflateChunkSize,\n level: this._options.deflateLevel,\n strategy: this._options.deflateStrategy,\n };\n};\n\nPacker.prototype.createDeflate = function () {\n return this._options.deflateFactory(this.getDeflateOptions());\n};\n\nPacker.prototype.filterData = function (data, width, height) {\n // convert to correct format for filtering (e.g. right bpp and bit depth)\n let packedData = bitPacker(data, width, height, this._options);\n\n // filter pixel data\n let bpp = constants.COLORTYPE_TO_BPP_MAP[this._options.colorType];\n let filteredData = filter(packedData, width, height, this._options, bpp);\n return filteredData;\n};\n\nPacker.prototype._packChunk = function (type, data) {\n let len = data ? data.length : 0;\n let buf = Buffer.alloc(len + 12);\n\n buf.writeUInt32BE(len, 0);\n buf.writeUInt32BE(type, 4);\n\n if (data) {\n data.copy(buf, 8);\n }\n\n buf.writeInt32BE(\n CrcStream.crc32(buf.slice(4, buf.length - 4)),\n buf.length - 4\n );\n return buf;\n};\n\nPacker.prototype.packGAMA = function (gamma) {\n let buf = Buffer.alloc(4);\n buf.writeUInt32BE(Math.floor(gamma * constants.GAMMA_DIVISION), 0);\n return this._packChunk(constants.TYPE_gAMA, buf);\n};\n\nPacker.prototype.packIHDR = function (width, height) {\n let buf = Buffer.alloc(13);\n buf.writeUInt32BE(width, 0);\n buf.writeUInt32BE(height, 4);\n buf[8] = this._options.bitDepth; // Bit depth\n buf[9] = this._options.colorType; // colorType\n buf[10] = 0; // compression\n buf[11] = 0; // filter\n buf[12] = 0; // interlace\n\n return this._packChunk(constants.TYPE_IHDR, buf);\n};\n\nPacker.prototype.packIDAT = function (data) {\n return this._packChunk(constants.TYPE_IDAT, data);\n};\n\nPacker.prototype.packIEND = function () {\n return this._packChunk(constants.TYPE_IEND, null);\n};\n","\"use strict\";\n\nlet util = require(\"util\");\nlet Stream = require(\"stream\");\nlet constants = require(\"./constants\");\nlet Packer = require(\"./packer\");\n\nlet PackerAsync = (module.exports = function (opt) {\n Stream.call(this);\n\n let options = opt || {};\n\n this._packer = new Packer(options);\n this._deflate = this._packer.createDeflate();\n\n this.readable = true;\n});\nutil.inherits(PackerAsync, Stream);\n\nPackerAsync.prototype.pack = function (data, width, height, gamma) {\n // Signature\n this.emit(\"data\", Buffer.from(constants.PNG_SIGNATURE));\n this.emit(\"data\", this._packer.packIHDR(width, height));\n\n if (gamma) {\n this.emit(\"data\", this._packer.packGAMA(gamma));\n }\n\n let filteredData = this._packer.filterData(data, width, height);\n\n // compress it\n this._deflate.on(\"error\", this.emit.bind(this, \"error\"));\n\n this._deflate.on(\n \"data\",\n function (compressedData) {\n this.emit(\"data\", this._packer.packIDAT(compressedData));\n }.bind(this)\n );\n\n this._deflate.on(\n \"end\",\n function () {\n this.emit(\"data\", this._packer.packIEND());\n this.emit(\"end\");\n }.bind(this)\n );\n\n this._deflate.end(filteredData);\n};\n","\"use strict\";\n\nlet assert = require(\"assert\").ok;\nlet zlib = require(\"zlib\");\nlet util = require(\"util\");\n\nlet kMaxLength = require(\"buffer\").kMaxLength;\n\nfunction Inflate(opts) {\n if (!(this instanceof Inflate)) {\n return new Inflate(opts);\n }\n\n if (opts && opts.chunkSize < zlib.Z_MIN_CHUNK) {\n opts.chunkSize = zlib.Z_MIN_CHUNK;\n }\n\n zlib.Inflate.call(this, opts);\n\n // Node 8 --> 9 compatibility check\n this._offset = this._offset === undefined ? this._outOffset : this._offset;\n this._buffer = this._buffer || this._outBuffer;\n\n if (opts && opts.maxLength != null) {\n this._maxLength = opts.maxLength;\n }\n}\n\nfunction createInflate(opts) {\n return new Inflate(opts);\n}\n\nfunction _close(engine, callback) {\n if (callback) {\n process.nextTick(callback);\n }\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) {\n return;\n }\n\n engine._handle.close();\n engine._handle = null;\n}\n\nInflate.prototype._processChunk = function (chunk, flushFlag, asyncCb) {\n if (typeof asyncCb === \"function\") {\n return zlib.Inflate._processChunk.call(this, chunk, flushFlag, asyncCb);\n }\n\n let self = this;\n\n let availInBefore = chunk && chunk.length;\n let availOutBefore = this._chunkSize - this._offset;\n let leftToInflate = this._maxLength;\n let inOff = 0;\n\n let buffers = [];\n let nread = 0;\n\n let error;\n this.on(\"error\", function (err) {\n error = err;\n });\n\n function handleChunk(availInAfter, availOutAfter) {\n if (self._hadError) {\n return;\n }\n\n let have = availOutBefore - availOutAfter;\n assert(have >= 0, \"have should not go down\");\n\n if (have > 0) {\n let out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n\n if (out.length > leftToInflate) {\n out = out.slice(0, leftToInflate);\n }\n\n buffers.push(out);\n nread += out.length;\n leftToInflate -= out.length;\n\n if (leftToInflate === 0) {\n return false;\n }\n }\n\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n\n if (availOutAfter === 0) {\n inOff += availInBefore - availInAfter;\n availInBefore = availInAfter;\n\n return true;\n }\n\n return false;\n }\n\n assert(this._handle, \"zlib binding closed\");\n let res;\n do {\n res = this._handle.writeSync(\n flushFlag,\n chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore\n ); // out_len\n // Node 8 --> 9 compatibility check\n res = res || this._writeState;\n } while (!this._hadError && handleChunk(res[0], res[1]));\n\n if (this._hadError) {\n throw error;\n }\n\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError(\n \"Cannot create final Buffer. It would be larger than 0x\" +\n kMaxLength.toString(16) +\n \" bytes\"\n );\n }\n\n let buf = Buffer.concat(buffers, nread);\n _close(this);\n\n return buf;\n};\n\nutil.inherits(Inflate, zlib.Inflate);\n\nfunction zlibBufferSync(engine, buffer) {\n if (typeof buffer === \"string\") {\n buffer = Buffer.from(buffer);\n }\n if (!(buffer instanceof Buffer)) {\n throw new TypeError(\"Not a string or buffer\");\n }\n\n let flushFlag = engine._finishFlushFlag;\n if (flushFlag == null) {\n flushFlag = zlib.Z_FINISH;\n }\n\n return engine._processChunk(buffer, flushFlag);\n}\n\nfunction inflateSync(buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n}\n\nmodule.exports = exports = inflateSync;\nexports.Inflate = Inflate;\nexports.createInflate = createInflate;\nexports.inflateSync = inflateSync;\n","\"use strict\";\n\nlet SyncReader = (module.exports = function (buffer) {\n this._buffer = buffer;\n this._reads = [];\n});\n\nSyncReader.prototype.read = function (length, callback) {\n this._reads.push({\n length: Math.abs(length), // if length < 0 then at most this length\n allowLess: length < 0,\n func: callback,\n });\n};\n\nSyncReader.prototype.process = function () {\n // as long as there is any data and read requests\n while (this._reads.length > 0 && this._buffer.length) {\n let read = this._reads[0];\n\n if (\n this._buffer.length &&\n (this._buffer.length >= read.length || read.allowLess)\n ) {\n // ok there is any data so that we can satisfy this request\n this._reads.shift(); // == read\n\n let buf = this._buffer;\n\n this._buffer = buf.slice(read.length);\n\n read.func.call(this, buf.slice(0, read.length));\n } else {\n break;\n }\n }\n\n if (this._reads.length > 0) {\n throw new Error(\"There are some read requests waitng on finished stream\");\n }\n\n if (this._buffer.length > 0) {\n throw new Error(\"unrecognised content at end of stream\");\n }\n};\n","\"use strict\";\n\nlet SyncReader = require(\"./sync-reader\");\nlet Filter = require(\"./filter-parse\");\n\nexports.process = function (inBuffer, bitmapInfo) {\n let outBuffers = [];\n let reader = new SyncReader(inBuffer);\n let filter = new Filter(bitmapInfo, {\n read: reader.read.bind(reader),\n write: function (bufferPart) {\n outBuffers.push(bufferPart);\n },\n complete: function () {},\n });\n\n filter.start();\n reader.process();\n\n return Buffer.concat(outBuffers);\n};\n","\"use strict\";\n\nlet hasSyncZlib = true;\nlet zlib = require(\"zlib\");\nlet inflateSync = require(\"./sync-inflate\");\nif (!zlib.deflateSync) {\n hasSyncZlib = false;\n}\nlet SyncReader = require(\"./sync-reader\");\nlet FilterSync = require(\"./filter-parse-sync\");\nlet Parser = require(\"./parser\");\nlet bitmapper = require(\"./bitmapper\");\nlet formatNormaliser = require(\"./format-normaliser\");\n\nmodule.exports = function (buffer, options) {\n if (!hasSyncZlib) {\n throw new Error(\n \"To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0\"\n );\n }\n\n let err;\n function handleError(_err_) {\n err = _err_;\n }\n\n let metaData;\n function handleMetaData(_metaData_) {\n metaData = _metaData_;\n }\n\n function handleTransColor(transColor) {\n metaData.transColor = transColor;\n }\n\n function handlePalette(palette) {\n metaData.palette = palette;\n }\n\n function handleSimpleTransparency() {\n metaData.alpha = true;\n }\n\n let gamma;\n function handleGamma(_gamma_) {\n gamma = _gamma_;\n }\n\n let inflateDataList = [];\n function handleInflateData(inflatedData) {\n inflateDataList.push(inflatedData);\n }\n\n let reader = new SyncReader(buffer);\n\n let parser = new Parser(options, {\n read: reader.read.bind(reader),\n error: handleError,\n metadata: handleMetaData,\n gamma: handleGamma,\n palette: handlePalette,\n transColor: handleTransColor,\n inflateData: handleInflateData,\n simpleTransparency: handleSimpleTransparency,\n });\n\n parser.start();\n reader.process();\n\n if (err) {\n throw err;\n }\n\n //join together the inflate datas\n let inflateData = Buffer.concat(inflateDataList);\n inflateDataList.length = 0;\n\n let inflatedData;\n if (metaData.interlace) {\n inflatedData = zlib.inflateSync(inflateData);\n } else {\n let rowSize =\n ((metaData.width * metaData.bpp * metaData.depth + 7) >> 3) + 1;\n let imageSize = rowSize * metaData.height;\n inflatedData = inflateSync(inflateData, {\n chunkSize: imageSize,\n maxLength: imageSize,\n });\n }\n inflateData = null;\n\n if (!inflatedData || !inflatedData.length) {\n throw new Error(\"bad png - invalid inflate data response\");\n }\n\n let unfilteredData = FilterSync.process(inflatedData, metaData);\n inflateData = null;\n\n let bitmapData = bitmapper.dataToBitMap(unfilteredData, metaData);\n unfilteredData = null;\n\n let normalisedBitmapData = formatNormaliser(\n bitmapData,\n metaData,\n options.skipRescale\n );\n\n metaData.data = normalisedBitmapData;\n metaData.gamma = gamma || 0;\n\n return metaData;\n};\n","\"use strict\";\n\nlet hasSyncZlib = true;\nlet zlib = require(\"zlib\");\nif (!zlib.deflateSync) {\n hasSyncZlib = false;\n}\nlet constants = require(\"./constants\");\nlet Packer = require(\"./packer\");\n\nmodule.exports = function (metaData, opt) {\n if (!hasSyncZlib) {\n throw new Error(\n \"To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0\"\n );\n }\n\n let options = opt || {};\n\n let packer = new Packer(options);\n\n let chunks = [];\n\n // Signature\n chunks.push(Buffer.from(constants.PNG_SIGNATURE));\n\n // Header\n chunks.push(packer.packIHDR(metaData.width, metaData.height));\n\n if (metaData.gamma) {\n chunks.push(packer.packGAMA(metaData.gamma));\n }\n\n let filteredData = packer.filterData(\n metaData.data,\n metaData.width,\n metaData.height\n );\n\n // compress it\n let compressedData = zlib.deflateSync(\n filteredData,\n packer.getDeflateOptions()\n );\n filteredData = null;\n\n if (!compressedData || !compressedData.length) {\n throw new Error(\"bad png - invalid compressed data response\");\n }\n chunks.push(packer.packIDAT(compressedData));\n\n // End\n chunks.push(packer.packIEND());\n\n return Buffer.concat(chunks);\n};\n","\"use strict\";\n\nlet parse = require(\"./parser-sync\");\nlet pack = require(\"./packer-sync\");\n\nexports.read = function (buffer, options) {\n return parse(buffer, options || {});\n};\n\nexports.write = function (png, options) {\n return pack(png, options);\n};\n","\"use strict\";\n\nlet util = require(\"util\");\nlet Stream = require(\"stream\");\nlet Parser = require(\"./parser-async\");\nlet Packer = require(\"./packer-async\");\nlet PNGSync = require(\"./png-sync\");\n\nlet PNG = (exports.PNG = function (options) {\n Stream.call(this);\n\n options = options || {}; // eslint-disable-line no-param-reassign\n\n // coerce pixel dimensions to integers (also coerces undefined -> 0):\n this.width = options.width | 0;\n this.height = options.height | 0;\n\n this.data =\n this.width > 0 && this.height > 0\n ? Buffer.alloc(4 * this.width * this.height)\n : null;\n\n if (options.fill && this.data) {\n this.data.fill(0);\n }\n\n this.gamma = 0;\n this.readable = this.writable = true;\n\n this._parser = new Parser(options);\n\n this._parser.on(\"error\", this.emit.bind(this, \"error\"));\n this._parser.on(\"close\", this._handleClose.bind(this));\n this._parser.on(\"metadata\", this._metadata.bind(this));\n this._parser.on(\"gamma\", this._gamma.bind(this));\n this._parser.on(\n \"parsed\",\n function (data) {\n this.data = data;\n this.emit(\"parsed\", data);\n }.bind(this)\n );\n\n this._packer = new Packer(options);\n this._packer.on(\"data\", this.emit.bind(this, \"data\"));\n this._packer.on(\"end\", this.emit.bind(this, \"end\"));\n this._parser.on(\"close\", this._handleClose.bind(this));\n this._packer.on(\"error\", this.emit.bind(this, \"error\"));\n});\nutil.inherits(PNG, Stream);\n\nPNG.sync = PNGSync;\n\nPNG.prototype.pack = function () {\n if (!this.data || !this.data.length) {\n this.emit(\"error\", \"No data provided\");\n return this;\n }\n\n process.nextTick(\n function () {\n this._packer.pack(this.data, this.width, this.height, this.gamma);\n }.bind(this)\n );\n\n return this;\n};\n\nPNG.prototype.parse = function (data, callback) {\n if (callback) {\n let onParsed, onError;\n\n onParsed = function (parsedData) {\n this.removeListener(\"error\", onError);\n\n this.data = parsedData;\n callback(null, this);\n }.bind(this);\n\n onError = function (err) {\n this.removeListener(\"parsed\", onParsed);\n\n callback(err, null);\n }.bind(this);\n\n this.once(\"parsed\", onParsed);\n this.once(\"error\", onError);\n }\n\n this.end(data);\n return this;\n};\n\nPNG.prototype.write = function (data) {\n this._parser.write(data);\n return true;\n};\n\nPNG.prototype.end = function (data) {\n this._parser.end(data);\n};\n\nPNG.prototype._metadata = function (metadata) {\n this.width = metadata.width;\n this.height = metadata.height;\n\n this.emit(\"metadata\", metadata);\n};\n\nPNG.prototype._gamma = function (gamma) {\n this.gamma = gamma;\n};\n\nPNG.prototype._handleClose = function () {\n if (!this._parser.writable && !this._packer.readable) {\n this.emit(\"close\");\n }\n};\n\nPNG.bitblt = function (src, dst, srcX, srcY, width, height, deltaX, deltaY) {\n // eslint-disable-line max-params\n // coerce pixel dimensions to integers (also coerces undefined -> 0):\n /* eslint-disable no-param-reassign */\n srcX |= 0;\n srcY |= 0;\n width |= 0;\n height |= 0;\n deltaX |= 0;\n deltaY |= 0;\n /* eslint-enable no-param-reassign */\n\n if (\n srcX > src.width ||\n srcY > src.height ||\n srcX + width > src.width ||\n srcY + height > src.height\n ) {\n throw new Error(\"bitblt reading outside image\");\n }\n\n if (\n deltaX > dst.width ||\n deltaY > dst.height ||\n deltaX + width > dst.width ||\n deltaY + height > dst.height\n ) {\n throw new Error(\"bitblt writing outside image\");\n }\n\n for (let y = 0; y < height; y++) {\n src.data.copy(\n dst.data,\n ((deltaY + y) * dst.width + deltaX) << 2,\n ((srcY + y) * src.width + srcX) << 2,\n ((srcY + y) * src.width + srcX + width) << 2\n );\n }\n};\n\nPNG.prototype.bitblt = function (\n dst,\n srcX,\n srcY,\n width,\n height,\n deltaX,\n deltaY\n) {\n // eslint-disable-line max-params\n\n PNG.bitblt(this, dst, srcX, srcY, width, height, deltaX, deltaY);\n return this;\n};\n\nPNG.adjustGamma = function (src) {\n if (src.gamma) {\n for (let y = 0; y < src.height; y++) {\n for (let x = 0; x < src.width; x++) {\n let idx = (src.width * y + x) << 2;\n\n for (let i = 0; i < 3; i++) {\n let sample = src.data[idx + i] / 255;\n sample = Math.pow(sample, 1 / 2.2 / src.gamma);\n src.data[idx + i] = Math.round(sample * 255);\n }\n }\n }\n src.gamma = 0;\n }\n};\n\nPNG.prototype.adjustGamma = function () {\n PNG.adjustGamma(this);\n};\n"],"names":[],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]}
|
|
1
|
+
{"version":3,"sources":["turbopack:///[project]/node_modules/.pnpm/pixelmatch@7.1.0/node_modules/pixelmatch/index.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/chunkstream.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/interlace.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/paeth-predictor.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-parse.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-parse-async.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/constants.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/crc.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/parser.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/bitmapper.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/format-normaliser.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/parser-async.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/bitpacker.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-pack.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/packer.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/packer-async.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/sync-inflate.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/sync-reader.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-parse-sync.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/parser-sync.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/packer-sync.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/png-sync.js","turbopack:///[project]/node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/png.js"],"sourcesContent":["/**\n * Compare two equally sized images, pixel by pixel.\n *\n * @param {Uint8Array | Uint8ClampedArray} img1 First image data.\n * @param {Uint8Array | Uint8ClampedArray} img2 Second image data.\n * @param {Uint8Array | Uint8ClampedArray | void} output Image data to write the diff to, if provided.\n * @param {number} width Input images width.\n * @param {number} height Input images height.\n *\n * @param {Object} [options]\n * @param {number} [options.threshold=0.1] Matching threshold (0 to 1); smaller is more sensitive.\n * @param {boolean} [options.includeAA=false] Whether to skip anti-aliasing detection.\n * @param {number} [options.alpha=0.1] Opacity of original image in diff output.\n * @param {[number, number, number]} [options.aaColor=[255, 255, 0]] Color of anti-aliased pixels in diff output.\n * @param {[number, number, number]} [options.diffColor=[255, 0, 0]] Color of different pixels in diff output.\n * @param {[number, number, number]} [options.diffColorAlt=options.diffColor] Whether to detect dark on light differences between img1 and img2 and set an alternative color to differentiate between the two.\n * @param {boolean} [options.diffMask=false] Draw the diff over a transparent background (a mask).\n *\n * @return {number} The number of mismatched pixels.\n */\nexport default function pixelmatch(img1, img2, output, width, height, options = {}) {\n const {\n threshold = 0.1,\n alpha = 0.1,\n aaColor = [255, 255, 0],\n diffColor = [255, 0, 0],\n includeAA, diffColorAlt, diffMask\n } = options;\n\n if (!isPixelData(img1) || !isPixelData(img2) || (output && !isPixelData(output)))\n throw new Error('Image data: Uint8Array, Uint8ClampedArray or Buffer expected.');\n\n if (img1.length !== img2.length || (output && output.length !== img1.length))\n throw new Error('Image sizes do not match.');\n\n if (img1.length !== width * height * 4) throw new Error('Image data size does not match width/height.');\n\n // check if images are identical\n const len = width * height;\n const a32 = new Uint32Array(img1.buffer, img1.byteOffset, len);\n const b32 = new Uint32Array(img2.buffer, img2.byteOffset, len);\n let identical = true;\n\n for (let i = 0; i < len; i++) {\n if (a32[i] !== b32[i]) { identical = false; break; }\n }\n if (identical) { // fast path if identical\n if (output && !diffMask) {\n for (let i = 0; i < len; i++) drawGrayPixel(img1, 4 * i, alpha, output);\n }\n return 0;\n }\n\n // maximum acceptable square distance between two colors;\n // 35215 is the maximum possible value for the YIQ difference metric\n const maxDelta = 35215 * threshold * threshold;\n const [aaR, aaG, aaB] = aaColor;\n const [diffR, diffG, diffB] = diffColor;\n const [altR, altG, altB] = diffColorAlt || diffColor;\n let diff = 0;\n\n // compare each pixel of one image against the other one\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n\n const i = y * width + x;\n const pos = i * 4;\n\n // squared YUV distance between colors at this pixel position, negative if the img2 pixel is darker\n const delta = a32[i] === b32[i] ? 0 : colorDelta(img1, img2, pos, pos, false);\n\n // the color difference is above the threshold\n if (Math.abs(delta) > maxDelta) {\n // check it's a real rendering difference or just anti-aliasing\n const isAA = antialiased(img1, x, y, width, height, a32, b32) || antialiased(img2, x, y, width, height, b32, a32);\n if (!includeAA && isAA) {\n // one of the pixels is anti-aliasing; draw as yellow and do not count as difference\n // note that we do not include such pixels in a mask\n if (output && !diffMask) drawPixel(output, pos, aaR, aaG, aaB);\n\n } else {\n // found substantial difference not caused by anti-aliasing; draw it as such\n if (output) {\n if (delta < 0) {\n drawPixel(output, pos, altR, altG, altB);\n } else {\n drawPixel(output, pos, diffR, diffG, diffB);\n }\n }\n diff++;\n }\n\n } else if (output && !diffMask) {\n // pixels are similar; draw background as grayscale image blended with white\n drawGrayPixel(img1, pos, alpha, output);\n }\n }\n }\n\n // return the number of different pixels\n return diff;\n}\n\n/** @param {Uint8Array | Uint8ClampedArray} arr */\nfunction isPixelData(arr) {\n // work around instanceof Uint8Array not working properly in some Jest environments\n return ArrayBuffer.isView(arr) && arr.BYTES_PER_ELEMENT === 1;\n}\n\n/**\n * Check if a pixel is likely a part of anti-aliasing;\n * based on \"Anti-aliased Pixel and Intensity Slope Detector\" paper by V. Vysniauskas, 2009\n * @param {Uint8Array | Uint8ClampedArray} img\n * @param {number} x1\n * @param {number} y1\n * @param {number} width\n * @param {number} height\n * @param {Uint32Array} a32\n * @param {Uint32Array} b32\n */\nfunction antialiased(img, x1, y1, width, height, a32, b32) {\n const x0 = Math.max(x1 - 1, 0);\n const y0 = Math.max(y1 - 1, 0);\n const x2 = Math.min(x1 + 1, width - 1);\n const y2 = Math.min(y1 + 1, height - 1);\n const pos = y1 * width + x1;\n let zeroes = x1 === x0 || x1 === x2 || y1 === y0 || y1 === y2 ? 1 : 0;\n let min = 0;\n let max = 0;\n let minX = 0;\n let minY = 0;\n let maxX = 0;\n let maxY = 0;\n\n // go through 8 adjacent pixels\n for (let x = x0; x <= x2; x++) {\n for (let y = y0; y <= y2; y++) {\n if (x === x1 && y === y1) continue;\n\n // brightness delta between the center pixel and adjacent one\n const delta = colorDelta(img, img, pos * 4, (y * width + x) * 4, true);\n\n // count the number of equal, darker and brighter adjacent pixels\n if (delta === 0) {\n zeroes++;\n // if found more than 2 equal siblings, it's definitely not anti-aliasing\n if (zeroes > 2) return false;\n\n // remember the darkest pixel\n } else if (delta < min) {\n min = delta;\n minX = x;\n minY = y;\n\n // remember the brightest pixel\n } else if (delta > max) {\n max = delta;\n maxX = x;\n maxY = y;\n }\n }\n }\n\n // if there are no both darker and brighter pixels among siblings, it's not anti-aliasing\n if (min === 0 || max === 0) return false;\n\n // if either the darkest or the brightest pixel has 3+ equal siblings in both images\n // (definitely not anti-aliased), this pixel is anti-aliased\n return (hasManySiblings(a32, minX, minY, width, height) && hasManySiblings(b32, minX, minY, width, height)) ||\n (hasManySiblings(a32, maxX, maxY, width, height) && hasManySiblings(b32, maxX, maxY, width, height));\n}\n\n/**\n * Check if a pixel has 3+ adjacent pixels of the same color.\n * @param {Uint32Array} img\n * @param {number} x1\n * @param {number} y1\n * @param {number} width\n * @param {number} height\n */\nfunction hasManySiblings(img, x1, y1, width, height) {\n const x0 = Math.max(x1 - 1, 0);\n const y0 = Math.max(y1 - 1, 0);\n const x2 = Math.min(x1 + 1, width - 1);\n const y2 = Math.min(y1 + 1, height - 1);\n const val = img[y1 * width + x1];\n let zeroes = x1 === x0 || x1 === x2 || y1 === y0 || y1 === y2 ? 1 : 0;\n\n // go through 8 adjacent pixels\n for (let x = x0; x <= x2; x++) {\n for (let y = y0; y <= y2; y++) {\n if (x === x1 && y === y1) continue;\n zeroes += +(val === img[y * width + x]);\n if (zeroes > 2) return true;\n }\n }\n return false;\n}\n\n/**\n * Calculate color difference according to the paper \"Measuring perceived color difference\n * using YIQ NTSC transmission color space in mobile applications\" by Y. Kotsarenko and F. Ramos\n * @param {Uint8Array | Uint8ClampedArray} img1\n * @param {Uint8Array | Uint8ClampedArray} img2\n * @param {number} k\n * @param {number} m\n * @param {boolean} yOnly\n */\nfunction colorDelta(img1, img2, k, m, yOnly) {\n const r1 = img1[k];\n const g1 = img1[k + 1];\n const b1 = img1[k + 2];\n const a1 = img1[k + 3];\n const r2 = img2[m];\n const g2 = img2[m + 1];\n const b2 = img2[m + 2];\n const a2 = img2[m + 3];\n\n let dr = r1 - r2;\n let dg = g1 - g2;\n let db = b1 - b2;\n const da = a1 - a2;\n\n if (!dr && !dg && !db && !da) return 0;\n\n if (a1 < 255 || a2 < 255) { // blend pixels with background\n const rb = 48 + 159 * (k % 2);\n const gb = 48 + 159 * ((k / 1.618033988749895 | 0) % 2);\n const bb = 48 + 159 * ((k / 2.618033988749895 | 0) % 2);\n dr = (r1 * a1 - r2 * a2 - rb * da) / 255;\n dg = (g1 * a1 - g2 * a2 - gb * da) / 255;\n db = (b1 * a1 - b2 * a2 - bb * da) / 255;\n }\n\n const y = dr * 0.29889531 + dg * 0.58662247 + db * 0.11448223;\n\n if (yOnly) return y; // brightness difference only\n\n const i = dr * 0.59597799 - dg * 0.27417610 - db * 0.32180189;\n const q = dr * 0.21147017 - dg * 0.52261711 + db * 0.31114694;\n\n const delta = 0.5053 * y * y + 0.299 * i * i + 0.1957 * q * q;\n\n // encode whether the pixel lightens or darkens in the sign\n return y > 0 ? -delta : delta;\n}\n\n/**\n * @param {Uint8Array | Uint8ClampedArray} output\n * @param {number} pos\n * @param {number} r\n * @param {number} g\n * @param {number} b\n */\nfunction drawPixel(output, pos, r, g, b) {\n output[pos + 0] = r;\n output[pos + 1] = g;\n output[pos + 2] = b;\n output[pos + 3] = 255;\n}\n\n/**\n * @param {Uint8Array | Uint8ClampedArray} img\n * @param {number} i\n * @param {number} alpha\n * @param {Uint8Array | Uint8ClampedArray} output\n */\nfunction drawGrayPixel(img, i, alpha, output) {\n const val = 255 + (img[i] * 0.29889531 + img[i + 1] * 0.58662247 + img[i + 2] * 0.11448223 - 255) * alpha * img[i + 3] / 255;\n drawPixel(output, i, val, val, val);\n}\n","\"use strict\";\n\nlet util = require(\"util\");\nlet Stream = require(\"stream\");\n\nlet ChunkStream = (module.exports = function () {\n Stream.call(this);\n\n this._buffers = [];\n this._buffered = 0;\n\n this._reads = [];\n this._paused = false;\n\n this._encoding = \"utf8\";\n this.writable = true;\n});\nutil.inherits(ChunkStream, Stream);\n\nChunkStream.prototype.read = function (length, callback) {\n this._reads.push({\n length: Math.abs(length), // if length < 0 then at most this length\n allowLess: length < 0,\n func: callback,\n });\n\n process.nextTick(\n function () {\n this._process();\n\n // its paused and there is not enought data then ask for more\n if (this._paused && this._reads && this._reads.length > 0) {\n this._paused = false;\n\n this.emit(\"drain\");\n }\n }.bind(this)\n );\n};\n\nChunkStream.prototype.write = function (data, encoding) {\n if (!this.writable) {\n this.emit(\"error\", new Error(\"Stream not writable\"));\n return false;\n }\n\n let dataBuffer;\n if (Buffer.isBuffer(data)) {\n dataBuffer = data;\n } else {\n dataBuffer = Buffer.from(data, encoding || this._encoding);\n }\n\n this._buffers.push(dataBuffer);\n this._buffered += dataBuffer.length;\n\n this._process();\n\n // ok if there are no more read requests\n if (this._reads && this._reads.length === 0) {\n this._paused = true;\n }\n\n return this.writable && !this._paused;\n};\n\nChunkStream.prototype.end = function (data, encoding) {\n if (data) {\n this.write(data, encoding);\n }\n\n this.writable = false;\n\n // already destroyed\n if (!this._buffers) {\n return;\n }\n\n // enqueue or handle end\n if (this._buffers.length === 0) {\n this._end();\n } else {\n this._buffers.push(null);\n this._process();\n }\n};\n\nChunkStream.prototype.destroySoon = ChunkStream.prototype.end;\n\nChunkStream.prototype._end = function () {\n if (this._reads.length > 0) {\n this.emit(\"error\", new Error(\"Unexpected end of input\"));\n }\n\n this.destroy();\n};\n\nChunkStream.prototype.destroy = function () {\n if (!this._buffers) {\n return;\n }\n\n this.writable = false;\n this._reads = null;\n this._buffers = null;\n\n this.emit(\"close\");\n};\n\nChunkStream.prototype._processReadAllowingLess = function (read) {\n // ok there is any data so that we can satisfy this request\n this._reads.shift(); // == read\n\n // first we need to peek into first buffer\n let smallerBuf = this._buffers[0];\n\n // ok there is more data than we need\n if (smallerBuf.length > read.length) {\n this._buffered -= read.length;\n this._buffers[0] = smallerBuf.slice(read.length);\n\n read.func.call(this, smallerBuf.slice(0, read.length));\n } else {\n // ok this is less than maximum length so use it all\n this._buffered -= smallerBuf.length;\n this._buffers.shift(); // == smallerBuf\n\n read.func.call(this, smallerBuf);\n }\n};\n\nChunkStream.prototype._processRead = function (read) {\n this._reads.shift(); // == read\n\n let pos = 0;\n let count = 0;\n let data = Buffer.alloc(read.length);\n\n // create buffer for all data\n while (pos < read.length) {\n let buf = this._buffers[count++];\n let len = Math.min(buf.length, read.length - pos);\n\n buf.copy(data, pos, 0, len);\n pos += len;\n\n // last buffer wasn't used all so just slice it and leave\n if (len !== buf.length) {\n this._buffers[--count] = buf.slice(len);\n }\n }\n\n // remove all used buffers\n if (count > 0) {\n this._buffers.splice(0, count);\n }\n\n this._buffered -= read.length;\n\n read.func.call(this, data);\n};\n\nChunkStream.prototype._process = function () {\n try {\n // as long as there is any data and read requests\n while (this._buffered > 0 && this._reads && this._reads.length > 0) {\n let read = this._reads[0];\n\n // read any data (but no more than length)\n if (read.allowLess) {\n this._processReadAllowingLess(read);\n } else if (this._buffered >= read.length) {\n // ok we can meet some expectations\n\n this._processRead(read);\n } else {\n // not enought data to satisfy first request in queue\n // so we need to wait for more\n break;\n }\n }\n\n if (this._buffers && !this.writable) {\n this._end();\n }\n } catch (ex) {\n this.emit(\"error\", ex);\n }\n};\n","\"use strict\";\n\n// Adam 7\n// 0 1 2 3 4 5 6 7\n// 0 x 6 4 6 x 6 4 6\n// 1 7 7 7 7 7 7 7 7\n// 2 5 6 5 6 5 6 5 6\n// 3 7 7 7 7 7 7 7 7\n// 4 3 6 4 6 3 6 4 6\n// 5 7 7 7 7 7 7 7 7\n// 6 5 6 5 6 5 6 5 6\n// 7 7 7 7 7 7 7 7 7\n\nlet imagePasses = [\n {\n // pass 1 - 1px\n x: [0],\n y: [0],\n },\n {\n // pass 2 - 1px\n x: [4],\n y: [0],\n },\n {\n // pass 3 - 2px\n x: [0, 4],\n y: [4],\n },\n {\n // pass 4 - 4px\n x: [2, 6],\n y: [0, 4],\n },\n {\n // pass 5 - 8px\n x: [0, 2, 4, 6],\n y: [2, 6],\n },\n {\n // pass 6 - 16px\n x: [1, 3, 5, 7],\n y: [0, 2, 4, 6],\n },\n {\n // pass 7 - 32px\n x: [0, 1, 2, 3, 4, 5, 6, 7],\n y: [1, 3, 5, 7],\n },\n];\n\nexports.getImagePasses = function (width, height) {\n let images = [];\n let xLeftOver = width % 8;\n let yLeftOver = height % 8;\n let xRepeats = (width - xLeftOver) / 8;\n let yRepeats = (height - yLeftOver) / 8;\n for (let i = 0; i < imagePasses.length; i++) {\n let pass = imagePasses[i];\n let passWidth = xRepeats * pass.x.length;\n let passHeight = yRepeats * pass.y.length;\n for (let j = 0; j < pass.x.length; j++) {\n if (pass.x[j] < xLeftOver) {\n passWidth++;\n } else {\n break;\n }\n }\n for (let j = 0; j < pass.y.length; j++) {\n if (pass.y[j] < yLeftOver) {\n passHeight++;\n } else {\n break;\n }\n }\n if (passWidth > 0 && passHeight > 0) {\n images.push({ width: passWidth, height: passHeight, index: i });\n }\n }\n return images;\n};\n\nexports.getInterlaceIterator = function (width) {\n return function (x, y, pass) {\n let outerXLeftOver = x % imagePasses[pass].x.length;\n let outerX =\n ((x - outerXLeftOver) / imagePasses[pass].x.length) * 8 +\n imagePasses[pass].x[outerXLeftOver];\n let outerYLeftOver = y % imagePasses[pass].y.length;\n let outerY =\n ((y - outerYLeftOver) / imagePasses[pass].y.length) * 8 +\n imagePasses[pass].y[outerYLeftOver];\n return outerX * 4 + outerY * width * 4;\n };\n};\n","\"use strict\";\n\nmodule.exports = function paethPredictor(left, above, upLeft) {\n let paeth = left + above - upLeft;\n let pLeft = Math.abs(paeth - left);\n let pAbove = Math.abs(paeth - above);\n let pUpLeft = Math.abs(paeth - upLeft);\n\n if (pLeft <= pAbove && pLeft <= pUpLeft) {\n return left;\n }\n if (pAbove <= pUpLeft) {\n return above;\n }\n return upLeft;\n};\n","\"use strict\";\n\nlet interlaceUtils = require(\"./interlace\");\nlet paethPredictor = require(\"./paeth-predictor\");\n\nfunction getByteWidth(width, bpp, depth) {\n let byteWidth = width * bpp;\n if (depth !== 8) {\n byteWidth = Math.ceil(byteWidth / (8 / depth));\n }\n return byteWidth;\n}\n\nlet Filter = (module.exports = function (bitmapInfo, dependencies) {\n let width = bitmapInfo.width;\n let height = bitmapInfo.height;\n let interlace = bitmapInfo.interlace;\n let bpp = bitmapInfo.bpp;\n let depth = bitmapInfo.depth;\n\n this.read = dependencies.read;\n this.write = dependencies.write;\n this.complete = dependencies.complete;\n\n this._imageIndex = 0;\n this._images = [];\n if (interlace) {\n let passes = interlaceUtils.getImagePasses(width, height);\n for (let i = 0; i < passes.length; i++) {\n this._images.push({\n byteWidth: getByteWidth(passes[i].width, bpp, depth),\n height: passes[i].height,\n lineIndex: 0,\n });\n }\n } else {\n this._images.push({\n byteWidth: getByteWidth(width, bpp, depth),\n height: height,\n lineIndex: 0,\n });\n }\n\n // when filtering the line we look at the pixel to the left\n // the spec also says it is done on a byte level regardless of the number of pixels\n // so if the depth is byte compatible (8 or 16) we subtract the bpp in order to compare back\n // a pixel rather than just a different byte part. However if we are sub byte, we ignore.\n if (depth === 8) {\n this._xComparison = bpp;\n } else if (depth === 16) {\n this._xComparison = bpp * 2;\n } else {\n this._xComparison = 1;\n }\n});\n\nFilter.prototype.start = function () {\n this.read(\n this._images[this._imageIndex].byteWidth + 1,\n this._reverseFilterLine.bind(this)\n );\n};\n\nFilter.prototype._unFilterType1 = function (\n rawData,\n unfilteredLine,\n byteWidth\n) {\n let xComparison = this._xComparison;\n let xBiggerThan = xComparison - 1;\n\n for (let x = 0; x < byteWidth; x++) {\n let rawByte = rawData[1 + x];\n let f1Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n unfilteredLine[x] = rawByte + f1Left;\n }\n};\n\nFilter.prototype._unFilterType2 = function (\n rawData,\n unfilteredLine,\n byteWidth\n) {\n let lastLine = this._lastLine;\n\n for (let x = 0; x < byteWidth; x++) {\n let rawByte = rawData[1 + x];\n let f2Up = lastLine ? lastLine[x] : 0;\n unfilteredLine[x] = rawByte + f2Up;\n }\n};\n\nFilter.prototype._unFilterType3 = function (\n rawData,\n unfilteredLine,\n byteWidth\n) {\n let xComparison = this._xComparison;\n let xBiggerThan = xComparison - 1;\n let lastLine = this._lastLine;\n\n for (let x = 0; x < byteWidth; x++) {\n let rawByte = rawData[1 + x];\n let f3Up = lastLine ? lastLine[x] : 0;\n let f3Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n let f3Add = Math.floor((f3Left + f3Up) / 2);\n unfilteredLine[x] = rawByte + f3Add;\n }\n};\n\nFilter.prototype._unFilterType4 = function (\n rawData,\n unfilteredLine,\n byteWidth\n) {\n let xComparison = this._xComparison;\n let xBiggerThan = xComparison - 1;\n let lastLine = this._lastLine;\n\n for (let x = 0; x < byteWidth; x++) {\n let rawByte = rawData[1 + x];\n let f4Up = lastLine ? lastLine[x] : 0;\n let f4Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n let f4UpLeft = x > xBiggerThan && lastLine ? lastLine[x - xComparison] : 0;\n let f4Add = paethPredictor(f4Left, f4Up, f4UpLeft);\n unfilteredLine[x] = rawByte + f4Add;\n }\n};\n\nFilter.prototype._reverseFilterLine = function (rawData) {\n let filter = rawData[0];\n let unfilteredLine;\n let currentImage = this._images[this._imageIndex];\n let byteWidth = currentImage.byteWidth;\n\n if (filter === 0) {\n unfilteredLine = rawData.slice(1, byteWidth + 1);\n } else {\n unfilteredLine = Buffer.alloc(byteWidth);\n\n switch (filter) {\n case 1:\n this._unFilterType1(rawData, unfilteredLine, byteWidth);\n break;\n case 2:\n this._unFilterType2(rawData, unfilteredLine, byteWidth);\n break;\n case 3:\n this._unFilterType3(rawData, unfilteredLine, byteWidth);\n break;\n case 4:\n this._unFilterType4(rawData, unfilteredLine, byteWidth);\n break;\n default:\n throw new Error(\"Unrecognised filter type - \" + filter);\n }\n }\n\n this.write(unfilteredLine);\n\n currentImage.lineIndex++;\n if (currentImage.lineIndex >= currentImage.height) {\n this._lastLine = null;\n this._imageIndex++;\n currentImage = this._images[this._imageIndex];\n } else {\n this._lastLine = unfilteredLine;\n }\n\n if (currentImage) {\n // read, using the byte width that may be from the new current image\n this.read(currentImage.byteWidth + 1, this._reverseFilterLine.bind(this));\n } else {\n this._lastLine = null;\n this.complete();\n }\n};\n","\"use strict\";\n\nlet util = require(\"util\");\nlet ChunkStream = require(\"./chunkstream\");\nlet Filter = require(\"./filter-parse\");\n\nlet FilterAsync = (module.exports = function (bitmapInfo) {\n ChunkStream.call(this);\n\n let buffers = [];\n let that = this;\n this._filter = new Filter(bitmapInfo, {\n read: this.read.bind(this),\n write: function (buffer) {\n buffers.push(buffer);\n },\n complete: function () {\n that.emit(\"complete\", Buffer.concat(buffers));\n },\n });\n\n this._filter.start();\n});\nutil.inherits(FilterAsync, ChunkStream);\n","\"use strict\";\n\nmodule.exports = {\n PNG_SIGNATURE: [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a],\n\n TYPE_IHDR: 0x49484452,\n TYPE_IEND: 0x49454e44,\n TYPE_IDAT: 0x49444154,\n TYPE_PLTE: 0x504c5445,\n TYPE_tRNS: 0x74524e53, // eslint-disable-line camelcase\n TYPE_gAMA: 0x67414d41, // eslint-disable-line camelcase\n\n // color-type bits\n COLORTYPE_GRAYSCALE: 0,\n COLORTYPE_PALETTE: 1,\n COLORTYPE_COLOR: 2,\n COLORTYPE_ALPHA: 4, // e.g. grayscale and alpha\n\n // color-type combinations\n COLORTYPE_PALETTE_COLOR: 3,\n COLORTYPE_COLOR_ALPHA: 6,\n\n COLORTYPE_TO_BPP_MAP: {\n 0: 1,\n 2: 3,\n 3: 1,\n 4: 2,\n 6: 4,\n },\n\n GAMMA_DIVISION: 100000,\n};\n","\"use strict\";\n\nlet crcTable = [];\n\n(function () {\n for (let i = 0; i < 256; i++) {\n let currentCrc = i;\n for (let j = 0; j < 8; j++) {\n if (currentCrc & 1) {\n currentCrc = 0xedb88320 ^ (currentCrc >>> 1);\n } else {\n currentCrc = currentCrc >>> 1;\n }\n }\n crcTable[i] = currentCrc;\n }\n})();\n\nlet CrcCalculator = (module.exports = function () {\n this._crc = -1;\n});\n\nCrcCalculator.prototype.write = function (data) {\n for (let i = 0; i < data.length; i++) {\n this._crc = crcTable[(this._crc ^ data[i]) & 0xff] ^ (this._crc >>> 8);\n }\n return true;\n};\n\nCrcCalculator.prototype.crc32 = function () {\n return this._crc ^ -1;\n};\n\nCrcCalculator.crc32 = function (buf) {\n let crc = -1;\n for (let i = 0; i < buf.length; i++) {\n crc = crcTable[(crc ^ buf[i]) & 0xff] ^ (crc >>> 8);\n }\n return crc ^ -1;\n};\n","\"use strict\";\n\nlet constants = require(\"./constants\");\nlet CrcCalculator = require(\"./crc\");\n\nlet Parser = (module.exports = function (options, dependencies) {\n this._options = options;\n options.checkCRC = options.checkCRC !== false;\n\n this._hasIHDR = false;\n this._hasIEND = false;\n this._emittedHeadersFinished = false;\n\n // input flags/metadata\n this._palette = [];\n this._colorType = 0;\n\n this._chunks = {};\n this._chunks[constants.TYPE_IHDR] = this._handleIHDR.bind(this);\n this._chunks[constants.TYPE_IEND] = this._handleIEND.bind(this);\n this._chunks[constants.TYPE_IDAT] = this._handleIDAT.bind(this);\n this._chunks[constants.TYPE_PLTE] = this._handlePLTE.bind(this);\n this._chunks[constants.TYPE_tRNS] = this._handleTRNS.bind(this);\n this._chunks[constants.TYPE_gAMA] = this._handleGAMA.bind(this);\n\n this.read = dependencies.read;\n this.error = dependencies.error;\n this.metadata = dependencies.metadata;\n this.gamma = dependencies.gamma;\n this.transColor = dependencies.transColor;\n this.palette = dependencies.palette;\n this.parsed = dependencies.parsed;\n this.inflateData = dependencies.inflateData;\n this.finished = dependencies.finished;\n this.simpleTransparency = dependencies.simpleTransparency;\n this.headersFinished = dependencies.headersFinished || function () {};\n});\n\nParser.prototype.start = function () {\n this.read(constants.PNG_SIGNATURE.length, this._parseSignature.bind(this));\n};\n\nParser.prototype._parseSignature = function (data) {\n let signature = constants.PNG_SIGNATURE;\n\n for (let i = 0; i < signature.length; i++) {\n if (data[i] !== signature[i]) {\n this.error(new Error(\"Invalid file signature\"));\n return;\n }\n }\n this.read(8, this._parseChunkBegin.bind(this));\n};\n\nParser.prototype._parseChunkBegin = function (data) {\n // chunk content length\n let length = data.readUInt32BE(0);\n\n // chunk type\n let type = data.readUInt32BE(4);\n let name = \"\";\n for (let i = 4; i < 8; i++) {\n name += String.fromCharCode(data[i]);\n }\n\n //console.log('chunk ', name, length);\n\n // chunk flags\n let ancillary = Boolean(data[4] & 0x20); // or critical\n // priv = Boolean(data[5] & 0x20), // or public\n // safeToCopy = Boolean(data[7] & 0x20); // or unsafe\n\n if (!this._hasIHDR && type !== constants.TYPE_IHDR) {\n this.error(new Error(\"Expected IHDR on beggining\"));\n return;\n }\n\n this._crc = new CrcCalculator();\n this._crc.write(Buffer.from(name));\n\n if (this._chunks[type]) {\n return this._chunks[type](length);\n }\n\n if (!ancillary) {\n this.error(new Error(\"Unsupported critical chunk type \" + name));\n return;\n }\n\n this.read(length + 4, this._skipChunk.bind(this));\n};\n\nParser.prototype._skipChunk = function (/*data*/) {\n this.read(8, this._parseChunkBegin.bind(this));\n};\n\nParser.prototype._handleChunkEnd = function () {\n this.read(4, this._parseChunkEnd.bind(this));\n};\n\nParser.prototype._parseChunkEnd = function (data) {\n let fileCrc = data.readInt32BE(0);\n let calcCrc = this._crc.crc32();\n\n // check CRC\n if (this._options.checkCRC && calcCrc !== fileCrc) {\n this.error(new Error(\"Crc error - \" + fileCrc + \" - \" + calcCrc));\n return;\n }\n\n if (!this._hasIEND) {\n this.read(8, this._parseChunkBegin.bind(this));\n }\n};\n\nParser.prototype._handleIHDR = function (length) {\n this.read(length, this._parseIHDR.bind(this));\n};\nParser.prototype._parseIHDR = function (data) {\n this._crc.write(data);\n\n let width = data.readUInt32BE(0);\n let height = data.readUInt32BE(4);\n let depth = data[8];\n let colorType = data[9]; // bits: 1 palette, 2 color, 4 alpha\n let compr = data[10];\n let filter = data[11];\n let interlace = data[12];\n\n // console.log(' width', width, 'height', height,\n // 'depth', depth, 'colorType', colorType,\n // 'compr', compr, 'filter', filter, 'interlace', interlace\n // );\n\n if (\n depth !== 8 &&\n depth !== 4 &&\n depth !== 2 &&\n depth !== 1 &&\n depth !== 16\n ) {\n this.error(new Error(\"Unsupported bit depth \" + depth));\n return;\n }\n if (!(colorType in constants.COLORTYPE_TO_BPP_MAP)) {\n this.error(new Error(\"Unsupported color type\"));\n return;\n }\n if (compr !== 0) {\n this.error(new Error(\"Unsupported compression method\"));\n return;\n }\n if (filter !== 0) {\n this.error(new Error(\"Unsupported filter method\"));\n return;\n }\n if (interlace !== 0 && interlace !== 1) {\n this.error(new Error(\"Unsupported interlace method\"));\n return;\n }\n\n this._colorType = colorType;\n\n let bpp = constants.COLORTYPE_TO_BPP_MAP[this._colorType];\n\n this._hasIHDR = true;\n\n this.metadata({\n width: width,\n height: height,\n depth: depth,\n interlace: Boolean(interlace),\n palette: Boolean(colorType & constants.COLORTYPE_PALETTE),\n color: Boolean(colorType & constants.COLORTYPE_COLOR),\n alpha: Boolean(colorType & constants.COLORTYPE_ALPHA),\n bpp: bpp,\n colorType: colorType,\n });\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handlePLTE = function (length) {\n this.read(length, this._parsePLTE.bind(this));\n};\nParser.prototype._parsePLTE = function (data) {\n this._crc.write(data);\n\n let entries = Math.floor(data.length / 3);\n // console.log('Palette:', entries);\n\n for (let i = 0; i < entries; i++) {\n this._palette.push([data[i * 3], data[i * 3 + 1], data[i * 3 + 2], 0xff]);\n }\n\n this.palette(this._palette);\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleTRNS = function (length) {\n this.simpleTransparency();\n this.read(length, this._parseTRNS.bind(this));\n};\nParser.prototype._parseTRNS = function (data) {\n this._crc.write(data);\n\n // palette\n if (this._colorType === constants.COLORTYPE_PALETTE_COLOR) {\n if (this._palette.length === 0) {\n this.error(new Error(\"Transparency chunk must be after palette\"));\n return;\n }\n if (data.length > this._palette.length) {\n this.error(new Error(\"More transparent colors than palette size\"));\n return;\n }\n for (let i = 0; i < data.length; i++) {\n this._palette[i][3] = data[i];\n }\n this.palette(this._palette);\n }\n\n // for colorType 0 (grayscale) and 2 (rgb)\n // there might be one gray/color defined as transparent\n if (this._colorType === constants.COLORTYPE_GRAYSCALE) {\n // grey, 2 bytes\n this.transColor([data.readUInt16BE(0)]);\n }\n if (this._colorType === constants.COLORTYPE_COLOR) {\n this.transColor([\n data.readUInt16BE(0),\n data.readUInt16BE(2),\n data.readUInt16BE(4),\n ]);\n }\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleGAMA = function (length) {\n this.read(length, this._parseGAMA.bind(this));\n};\nParser.prototype._parseGAMA = function (data) {\n this._crc.write(data);\n this.gamma(data.readUInt32BE(0) / constants.GAMMA_DIVISION);\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleIDAT = function (length) {\n if (!this._emittedHeadersFinished) {\n this._emittedHeadersFinished = true;\n this.headersFinished();\n }\n this.read(-length, this._parseIDAT.bind(this, length));\n};\nParser.prototype._parseIDAT = function (length, data) {\n this._crc.write(data);\n\n if (\n this._colorType === constants.COLORTYPE_PALETTE_COLOR &&\n this._palette.length === 0\n ) {\n throw new Error(\"Expected palette not found\");\n }\n\n this.inflateData(data);\n let leftOverLength = length - data.length;\n\n if (leftOverLength > 0) {\n this._handleIDAT(leftOverLength);\n } else {\n this._handleChunkEnd();\n }\n};\n\nParser.prototype._handleIEND = function (length) {\n this.read(length, this._parseIEND.bind(this));\n};\nParser.prototype._parseIEND = function (data) {\n this._crc.write(data);\n\n this._hasIEND = true;\n this._handleChunkEnd();\n\n if (this.finished) {\n this.finished();\n }\n};\n","\"use strict\";\n\nlet interlaceUtils = require(\"./interlace\");\n\nlet pixelBppMapper = [\n // 0 - dummy entry\n function () {},\n\n // 1 - L\n // 0: 0, 1: 0, 2: 0, 3: 0xff\n function (pxData, data, pxPos, rawPos) {\n if (rawPos === data.length) {\n throw new Error(\"Ran out of data\");\n }\n\n let pixel = data[rawPos];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = 0xff;\n },\n\n // 2 - LA\n // 0: 0, 1: 0, 2: 0, 3: 1\n function (pxData, data, pxPos, rawPos) {\n if (rawPos + 1 >= data.length) {\n throw new Error(\"Ran out of data\");\n }\n\n let pixel = data[rawPos];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = data[rawPos + 1];\n },\n\n // 3 - RGB\n // 0: 0, 1: 1, 2: 2, 3: 0xff\n function (pxData, data, pxPos, rawPos) {\n if (rawPos + 2 >= data.length) {\n throw new Error(\"Ran out of data\");\n }\n\n pxData[pxPos] = data[rawPos];\n pxData[pxPos + 1] = data[rawPos + 1];\n pxData[pxPos + 2] = data[rawPos + 2];\n pxData[pxPos + 3] = 0xff;\n },\n\n // 4 - RGBA\n // 0: 0, 1: 1, 2: 2, 3: 3\n function (pxData, data, pxPos, rawPos) {\n if (rawPos + 3 >= data.length) {\n throw new Error(\"Ran out of data\");\n }\n\n pxData[pxPos] = data[rawPos];\n pxData[pxPos + 1] = data[rawPos + 1];\n pxData[pxPos + 2] = data[rawPos + 2];\n pxData[pxPos + 3] = data[rawPos + 3];\n },\n];\n\nlet pixelBppCustomMapper = [\n // 0 - dummy entry\n function () {},\n\n // 1 - L\n // 0: 0, 1: 0, 2: 0, 3: 0xff\n function (pxData, pixelData, pxPos, maxBit) {\n let pixel = pixelData[0];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = maxBit;\n },\n\n // 2 - LA\n // 0: 0, 1: 0, 2: 0, 3: 1\n function (pxData, pixelData, pxPos) {\n let pixel = pixelData[0];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = pixelData[1];\n },\n\n // 3 - RGB\n // 0: 0, 1: 1, 2: 2, 3: 0xff\n function (pxData, pixelData, pxPos, maxBit) {\n pxData[pxPos] = pixelData[0];\n pxData[pxPos + 1] = pixelData[1];\n pxData[pxPos + 2] = pixelData[2];\n pxData[pxPos + 3] = maxBit;\n },\n\n // 4 - RGBA\n // 0: 0, 1: 1, 2: 2, 3: 3\n function (pxData, pixelData, pxPos) {\n pxData[pxPos] = pixelData[0];\n pxData[pxPos + 1] = pixelData[1];\n pxData[pxPos + 2] = pixelData[2];\n pxData[pxPos + 3] = pixelData[3];\n },\n];\n\nfunction bitRetriever(data, depth) {\n let leftOver = [];\n let i = 0;\n\n function split() {\n if (i === data.length) {\n throw new Error(\"Ran out of data\");\n }\n let byte = data[i];\n i++;\n let byte8, byte7, byte6, byte5, byte4, byte3, byte2, byte1;\n switch (depth) {\n default:\n throw new Error(\"unrecognised depth\");\n case 16:\n byte2 = data[i];\n i++;\n leftOver.push((byte << 8) + byte2);\n break;\n case 4:\n byte2 = byte & 0x0f;\n byte1 = byte >> 4;\n leftOver.push(byte1, byte2);\n break;\n case 2:\n byte4 = byte & 3;\n byte3 = (byte >> 2) & 3;\n byte2 = (byte >> 4) & 3;\n byte1 = (byte >> 6) & 3;\n leftOver.push(byte1, byte2, byte3, byte4);\n break;\n case 1:\n byte8 = byte & 1;\n byte7 = (byte >> 1) & 1;\n byte6 = (byte >> 2) & 1;\n byte5 = (byte >> 3) & 1;\n byte4 = (byte >> 4) & 1;\n byte3 = (byte >> 5) & 1;\n byte2 = (byte >> 6) & 1;\n byte1 = (byte >> 7) & 1;\n leftOver.push(byte1, byte2, byte3, byte4, byte5, byte6, byte7, byte8);\n break;\n }\n }\n\n return {\n get: function (count) {\n while (leftOver.length < count) {\n split();\n }\n let returner = leftOver.slice(0, count);\n leftOver = leftOver.slice(count);\n return returner;\n },\n resetAfterLine: function () {\n leftOver.length = 0;\n },\n end: function () {\n if (i !== data.length) {\n throw new Error(\"extra data found\");\n }\n },\n };\n}\n\nfunction mapImage8Bit(image, pxData, getPxPos, bpp, data, rawPos) {\n // eslint-disable-line max-params\n let imageWidth = image.width;\n let imageHeight = image.height;\n let imagePass = image.index;\n for (let y = 0; y < imageHeight; y++) {\n for (let x = 0; x < imageWidth; x++) {\n let pxPos = getPxPos(x, y, imagePass);\n pixelBppMapper[bpp](pxData, data, pxPos, rawPos);\n rawPos += bpp; //eslint-disable-line no-param-reassign\n }\n }\n return rawPos;\n}\n\nfunction mapImageCustomBit(image, pxData, getPxPos, bpp, bits, maxBit) {\n // eslint-disable-line max-params\n let imageWidth = image.width;\n let imageHeight = image.height;\n let imagePass = image.index;\n for (let y = 0; y < imageHeight; y++) {\n for (let x = 0; x < imageWidth; x++) {\n let pixelData = bits.get(bpp);\n let pxPos = getPxPos(x, y, imagePass);\n pixelBppCustomMapper[bpp](pxData, pixelData, pxPos, maxBit);\n }\n bits.resetAfterLine();\n }\n}\n\nexports.dataToBitMap = function (data, bitmapInfo) {\n let width = bitmapInfo.width;\n let height = bitmapInfo.height;\n let depth = bitmapInfo.depth;\n let bpp = bitmapInfo.bpp;\n let interlace = bitmapInfo.interlace;\n let bits;\n\n if (depth !== 8) {\n bits = bitRetriever(data, depth);\n }\n let pxData;\n if (depth <= 8) {\n pxData = Buffer.alloc(width * height * 4);\n } else {\n pxData = new Uint16Array(width * height * 4);\n }\n let maxBit = Math.pow(2, depth) - 1;\n let rawPos = 0;\n let images;\n let getPxPos;\n\n if (interlace) {\n images = interlaceUtils.getImagePasses(width, height);\n getPxPos = interlaceUtils.getInterlaceIterator(width, height);\n } else {\n let nonInterlacedPxPos = 0;\n getPxPos = function () {\n let returner = nonInterlacedPxPos;\n nonInterlacedPxPos += 4;\n return returner;\n };\n images = [{ width: width, height: height }];\n }\n\n for (let imageIndex = 0; imageIndex < images.length; imageIndex++) {\n if (depth === 8) {\n rawPos = mapImage8Bit(\n images[imageIndex],\n pxData,\n getPxPos,\n bpp,\n data,\n rawPos\n );\n } else {\n mapImageCustomBit(\n images[imageIndex],\n pxData,\n getPxPos,\n bpp,\n bits,\n maxBit\n );\n }\n }\n if (depth === 8) {\n if (rawPos !== data.length) {\n throw new Error(\"extra data found\");\n }\n } else {\n bits.end();\n }\n\n return pxData;\n};\n","\"use strict\";\n\nfunction dePalette(indata, outdata, width, height, palette) {\n let pxPos = 0;\n // use values from palette\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n let color = palette[indata[pxPos]];\n\n if (!color) {\n throw new Error(\"index \" + indata[pxPos] + \" not in palette\");\n }\n\n for (let i = 0; i < 4; i++) {\n outdata[pxPos + i] = color[i];\n }\n pxPos += 4;\n }\n }\n}\n\nfunction replaceTransparentColor(indata, outdata, width, height, transColor) {\n let pxPos = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n let makeTrans = false;\n\n if (transColor.length === 1) {\n if (transColor[0] === indata[pxPos]) {\n makeTrans = true;\n }\n } else if (\n transColor[0] === indata[pxPos] &&\n transColor[1] === indata[pxPos + 1] &&\n transColor[2] === indata[pxPos + 2]\n ) {\n makeTrans = true;\n }\n if (makeTrans) {\n for (let i = 0; i < 4; i++) {\n outdata[pxPos + i] = 0;\n }\n }\n pxPos += 4;\n }\n }\n}\n\nfunction scaleDepth(indata, outdata, width, height, depth) {\n let maxOutSample = 255;\n let maxInSample = Math.pow(2, depth) - 1;\n let pxPos = 0;\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n for (let i = 0; i < 4; i++) {\n outdata[pxPos + i] = Math.floor(\n (indata[pxPos + i] * maxOutSample) / maxInSample + 0.5\n );\n }\n pxPos += 4;\n }\n }\n}\n\nmodule.exports = function (indata, imageData, skipRescale = false) {\n let depth = imageData.depth;\n let width = imageData.width;\n let height = imageData.height;\n let colorType = imageData.colorType;\n let transColor = imageData.transColor;\n let palette = imageData.palette;\n\n let outdata = indata; // only different for 16 bits\n\n if (colorType === 3) {\n // paletted\n dePalette(indata, outdata, width, height, palette);\n } else {\n if (transColor) {\n replaceTransparentColor(indata, outdata, width, height, transColor);\n }\n // if it needs scaling\n if (depth !== 8 && !skipRescale) {\n // if we need to change the buffer size\n if (depth === 16) {\n outdata = Buffer.alloc(width * height * 4);\n }\n scaleDepth(indata, outdata, width, height, depth);\n }\n }\n return outdata;\n};\n","\"use strict\";\n\nlet util = require(\"util\");\nlet zlib = require(\"zlib\");\nlet ChunkStream = require(\"./chunkstream\");\nlet FilterAsync = require(\"./filter-parse-async\");\nlet Parser = require(\"./parser\");\nlet bitmapper = require(\"./bitmapper\");\nlet formatNormaliser = require(\"./format-normaliser\");\n\nlet ParserAsync = (module.exports = function (options) {\n ChunkStream.call(this);\n\n this._parser = new Parser(options, {\n read: this.read.bind(this),\n error: this._handleError.bind(this),\n metadata: this._handleMetaData.bind(this),\n gamma: this.emit.bind(this, \"gamma\"),\n palette: this._handlePalette.bind(this),\n transColor: this._handleTransColor.bind(this),\n finished: this._finished.bind(this),\n inflateData: this._inflateData.bind(this),\n simpleTransparency: this._simpleTransparency.bind(this),\n headersFinished: this._headersFinished.bind(this),\n });\n this._options = options;\n this.writable = true;\n\n this._parser.start();\n});\nutil.inherits(ParserAsync, ChunkStream);\n\nParserAsync.prototype._handleError = function (err) {\n this.emit(\"error\", err);\n\n this.writable = false;\n\n this.destroy();\n\n if (this._inflate && this._inflate.destroy) {\n this._inflate.destroy();\n }\n\n if (this._filter) {\n this._filter.destroy();\n // For backward compatibility with Node 7 and below.\n // Suppress errors due to _inflate calling write() even after\n // it's destroy()'ed.\n this._filter.on(\"error\", function () {});\n }\n\n this.errord = true;\n};\n\nParserAsync.prototype._inflateData = function (data) {\n if (!this._inflate) {\n if (this._bitmapInfo.interlace) {\n this._inflate = zlib.createInflate();\n\n this._inflate.on(\"error\", this.emit.bind(this, \"error\"));\n this._filter.on(\"complete\", this._complete.bind(this));\n\n this._inflate.pipe(this._filter);\n } else {\n let rowSize =\n ((this._bitmapInfo.width *\n this._bitmapInfo.bpp *\n this._bitmapInfo.depth +\n 7) >>\n 3) +\n 1;\n let imageSize = rowSize * this._bitmapInfo.height;\n let chunkSize = Math.max(imageSize, zlib.Z_MIN_CHUNK);\n\n this._inflate = zlib.createInflate({ chunkSize: chunkSize });\n let leftToInflate = imageSize;\n\n let emitError = this.emit.bind(this, \"error\");\n this._inflate.on(\"error\", function (err) {\n if (!leftToInflate) {\n return;\n }\n\n emitError(err);\n });\n this._filter.on(\"complete\", this._complete.bind(this));\n\n let filterWrite = this._filter.write.bind(this._filter);\n this._inflate.on(\"data\", function (chunk) {\n if (!leftToInflate) {\n return;\n }\n\n if (chunk.length > leftToInflate) {\n chunk = chunk.slice(0, leftToInflate);\n }\n\n leftToInflate -= chunk.length;\n\n filterWrite(chunk);\n });\n\n this._inflate.on(\"end\", this._filter.end.bind(this._filter));\n }\n }\n this._inflate.write(data);\n};\n\nParserAsync.prototype._handleMetaData = function (metaData) {\n this._metaData = metaData;\n this._bitmapInfo = Object.create(metaData);\n\n this._filter = new FilterAsync(this._bitmapInfo);\n};\n\nParserAsync.prototype._handleTransColor = function (transColor) {\n this._bitmapInfo.transColor = transColor;\n};\n\nParserAsync.prototype._handlePalette = function (palette) {\n this._bitmapInfo.palette = palette;\n};\n\nParserAsync.prototype._simpleTransparency = function () {\n this._metaData.alpha = true;\n};\n\nParserAsync.prototype._headersFinished = function () {\n // Up until this point, we don't know if we have a tRNS chunk (alpha)\n // so we can't emit metadata any earlier\n this.emit(\"metadata\", this._metaData);\n};\n\nParserAsync.prototype._finished = function () {\n if (this.errord) {\n return;\n }\n\n if (!this._inflate) {\n this.emit(\"error\", \"No Inflate block\");\n } else {\n // no more data to inflate\n this._inflate.end();\n }\n};\n\nParserAsync.prototype._complete = function (filteredData) {\n if (this.errord) {\n return;\n }\n\n let normalisedBitmapData;\n\n try {\n let bitmapData = bitmapper.dataToBitMap(filteredData, this._bitmapInfo);\n\n normalisedBitmapData = formatNormaliser(\n bitmapData,\n this._bitmapInfo,\n this._options.skipRescale\n );\n bitmapData = null;\n } catch (ex) {\n this._handleError(ex);\n return;\n }\n\n this.emit(\"parsed\", normalisedBitmapData);\n};\n","\"use strict\";\n\nlet constants = require(\"./constants\");\n\nmodule.exports = function (dataIn, width, height, options) {\n let outHasAlpha =\n [constants.COLORTYPE_COLOR_ALPHA, constants.COLORTYPE_ALPHA].indexOf(\n options.colorType\n ) !== -1;\n if (options.colorType === options.inputColorType) {\n let bigEndian = (function () {\n let buffer = new ArrayBuffer(2);\n new DataView(buffer).setInt16(0, 256, true /* littleEndian */);\n // Int16Array uses the platform's endianness.\n return new Int16Array(buffer)[0] !== 256;\n })();\n // If no need to convert to grayscale and alpha is present/absent in both, take a fast route\n if (options.bitDepth === 8 || (options.bitDepth === 16 && bigEndian)) {\n return dataIn;\n }\n }\n\n // map to a UInt16 array if data is 16bit, fix endianness below\n let data = options.bitDepth !== 16 ? dataIn : new Uint16Array(dataIn.buffer);\n\n let maxValue = 255;\n let inBpp = constants.COLORTYPE_TO_BPP_MAP[options.inputColorType];\n if (inBpp === 4 && !options.inputHasAlpha) {\n inBpp = 3;\n }\n let outBpp = constants.COLORTYPE_TO_BPP_MAP[options.colorType];\n if (options.bitDepth === 16) {\n maxValue = 65535;\n outBpp *= 2;\n }\n let outData = Buffer.alloc(width * height * outBpp);\n\n let inIndex = 0;\n let outIndex = 0;\n\n let bgColor = options.bgColor || {};\n if (bgColor.red === undefined) {\n bgColor.red = maxValue;\n }\n if (bgColor.green === undefined) {\n bgColor.green = maxValue;\n }\n if (bgColor.blue === undefined) {\n bgColor.blue = maxValue;\n }\n\n function getRGBA() {\n let red;\n let green;\n let blue;\n let alpha = maxValue;\n switch (options.inputColorType) {\n case constants.COLORTYPE_COLOR_ALPHA:\n alpha = data[inIndex + 3];\n red = data[inIndex];\n green = data[inIndex + 1];\n blue = data[inIndex + 2];\n break;\n case constants.COLORTYPE_COLOR:\n red = data[inIndex];\n green = data[inIndex + 1];\n blue = data[inIndex + 2];\n break;\n case constants.COLORTYPE_ALPHA:\n alpha = data[inIndex + 1];\n red = data[inIndex];\n green = red;\n blue = red;\n break;\n case constants.COLORTYPE_GRAYSCALE:\n red = data[inIndex];\n green = red;\n blue = red;\n break;\n default:\n throw new Error(\n \"input color type:\" +\n options.inputColorType +\n \" is not supported at present\"\n );\n }\n\n if (options.inputHasAlpha) {\n if (!outHasAlpha) {\n alpha /= maxValue;\n red = Math.min(\n Math.max(Math.round((1 - alpha) * bgColor.red + alpha * red), 0),\n maxValue\n );\n green = Math.min(\n Math.max(Math.round((1 - alpha) * bgColor.green + alpha * green), 0),\n maxValue\n );\n blue = Math.min(\n Math.max(Math.round((1 - alpha) * bgColor.blue + alpha * blue), 0),\n maxValue\n );\n }\n }\n return { red: red, green: green, blue: blue, alpha: alpha };\n }\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n let rgba = getRGBA(data, inIndex);\n\n switch (options.colorType) {\n case constants.COLORTYPE_COLOR_ALPHA:\n case constants.COLORTYPE_COLOR:\n if (options.bitDepth === 8) {\n outData[outIndex] = rgba.red;\n outData[outIndex + 1] = rgba.green;\n outData[outIndex + 2] = rgba.blue;\n if (outHasAlpha) {\n outData[outIndex + 3] = rgba.alpha;\n }\n } else {\n outData.writeUInt16BE(rgba.red, outIndex);\n outData.writeUInt16BE(rgba.green, outIndex + 2);\n outData.writeUInt16BE(rgba.blue, outIndex + 4);\n if (outHasAlpha) {\n outData.writeUInt16BE(rgba.alpha, outIndex + 6);\n }\n }\n break;\n case constants.COLORTYPE_ALPHA:\n case constants.COLORTYPE_GRAYSCALE: {\n // Convert to grayscale and alpha\n let grayscale = (rgba.red + rgba.green + rgba.blue) / 3;\n if (options.bitDepth === 8) {\n outData[outIndex] = grayscale;\n if (outHasAlpha) {\n outData[outIndex + 1] = rgba.alpha;\n }\n } else {\n outData.writeUInt16BE(grayscale, outIndex);\n if (outHasAlpha) {\n outData.writeUInt16BE(rgba.alpha, outIndex + 2);\n }\n }\n break;\n }\n default:\n throw new Error(\"unrecognised color Type \" + options.colorType);\n }\n\n inIndex += inBpp;\n outIndex += outBpp;\n }\n }\n\n return outData;\n};\n","\"use strict\";\n\nlet paethPredictor = require(\"./paeth-predictor\");\n\nfunction filterNone(pxData, pxPos, byteWidth, rawData, rawPos) {\n for (let x = 0; x < byteWidth; x++) {\n rawData[rawPos + x] = pxData[pxPos + x];\n }\n}\n\nfunction filterSumNone(pxData, pxPos, byteWidth) {\n let sum = 0;\n let length = pxPos + byteWidth;\n\n for (let i = pxPos; i < length; i++) {\n sum += Math.abs(pxData[i]);\n }\n return sum;\n}\n\nfunction filterSub(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let val = pxData[pxPos + x] - left;\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumSub(pxData, pxPos, byteWidth, bpp) {\n let sum = 0;\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let val = pxData[pxPos + x] - left;\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterUp(pxData, pxPos, byteWidth, rawData, rawPos) {\n for (let x = 0; x < byteWidth; x++) {\n let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n let val = pxData[pxPos + x] - up;\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumUp(pxData, pxPos, byteWidth) {\n let sum = 0;\n let length = pxPos + byteWidth;\n for (let x = pxPos; x < length; x++) {\n let up = pxPos > 0 ? pxData[x - byteWidth] : 0;\n let val = pxData[x] - up;\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterAvg(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n let val = pxData[pxPos + x] - ((left + up) >> 1);\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumAvg(pxData, pxPos, byteWidth, bpp) {\n let sum = 0;\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n let val = pxData[pxPos + x] - ((left + up) >> 1);\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterPaeth(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n let upleft =\n pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;\n let val = pxData[pxPos + x] - paethPredictor(left, up, upleft);\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumPaeth(pxData, pxPos, byteWidth, bpp) {\n let sum = 0;\n for (let x = 0; x < byteWidth; x++) {\n let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n let upleft =\n pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;\n let val = pxData[pxPos + x] - paethPredictor(left, up, upleft);\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nlet filters = {\n 0: filterNone,\n 1: filterSub,\n 2: filterUp,\n 3: filterAvg,\n 4: filterPaeth,\n};\n\nlet filterSums = {\n 0: filterSumNone,\n 1: filterSumSub,\n 2: filterSumUp,\n 3: filterSumAvg,\n 4: filterSumPaeth,\n};\n\nmodule.exports = function (pxData, width, height, options, bpp) {\n let filterTypes;\n if (!(\"filterType\" in options) || options.filterType === -1) {\n filterTypes = [0, 1, 2, 3, 4];\n } else if (typeof options.filterType === \"number\") {\n filterTypes = [options.filterType];\n } else {\n throw new Error(\"unrecognised filter types\");\n }\n\n if (options.bitDepth === 16) {\n bpp *= 2;\n }\n let byteWidth = width * bpp;\n let rawPos = 0;\n let pxPos = 0;\n let rawData = Buffer.alloc((byteWidth + 1) * height);\n\n let sel = filterTypes[0];\n\n for (let y = 0; y < height; y++) {\n if (filterTypes.length > 1) {\n // find best filter for this line (with lowest sum of values)\n let min = Infinity;\n\n for (let i = 0; i < filterTypes.length; i++) {\n let sum = filterSums[filterTypes[i]](pxData, pxPos, byteWidth, bpp);\n if (sum < min) {\n sel = filterTypes[i];\n min = sum;\n }\n }\n }\n\n rawData[rawPos] = sel;\n rawPos++;\n filters[sel](pxData, pxPos, byteWidth, rawData, rawPos, bpp);\n rawPos += byteWidth;\n pxPos += byteWidth;\n }\n return rawData;\n};\n","\"use strict\";\n\nlet constants = require(\"./constants\");\nlet CrcStream = require(\"./crc\");\nlet bitPacker = require(\"./bitpacker\");\nlet filter = require(\"./filter-pack\");\nlet zlib = require(\"zlib\");\n\nlet Packer = (module.exports = function (options) {\n this._options = options;\n\n options.deflateChunkSize = options.deflateChunkSize || 32 * 1024;\n options.deflateLevel =\n options.deflateLevel != null ? options.deflateLevel : 9;\n options.deflateStrategy =\n options.deflateStrategy != null ? options.deflateStrategy : 3;\n options.inputHasAlpha =\n options.inputHasAlpha != null ? options.inputHasAlpha : true;\n options.deflateFactory = options.deflateFactory || zlib.createDeflate;\n options.bitDepth = options.bitDepth || 8;\n // This is outputColorType\n options.colorType =\n typeof options.colorType === \"number\"\n ? options.colorType\n : constants.COLORTYPE_COLOR_ALPHA;\n options.inputColorType =\n typeof options.inputColorType === \"number\"\n ? options.inputColorType\n : constants.COLORTYPE_COLOR_ALPHA;\n\n if (\n [\n constants.COLORTYPE_GRAYSCALE,\n constants.COLORTYPE_COLOR,\n constants.COLORTYPE_COLOR_ALPHA,\n constants.COLORTYPE_ALPHA,\n ].indexOf(options.colorType) === -1\n ) {\n throw new Error(\n \"option color type:\" + options.colorType + \" is not supported at present\"\n );\n }\n if (\n [\n constants.COLORTYPE_GRAYSCALE,\n constants.COLORTYPE_COLOR,\n constants.COLORTYPE_COLOR_ALPHA,\n constants.COLORTYPE_ALPHA,\n ].indexOf(options.inputColorType) === -1\n ) {\n throw new Error(\n \"option input color type:\" +\n options.inputColorType +\n \" is not supported at present\"\n );\n }\n if (options.bitDepth !== 8 && options.bitDepth !== 16) {\n throw new Error(\n \"option bit depth:\" + options.bitDepth + \" is not supported at present\"\n );\n }\n});\n\nPacker.prototype.getDeflateOptions = function () {\n return {\n chunkSize: this._options.deflateChunkSize,\n level: this._options.deflateLevel,\n strategy: this._options.deflateStrategy,\n };\n};\n\nPacker.prototype.createDeflate = function () {\n return this._options.deflateFactory(this.getDeflateOptions());\n};\n\nPacker.prototype.filterData = function (data, width, height) {\n // convert to correct format for filtering (e.g. right bpp and bit depth)\n let packedData = bitPacker(data, width, height, this._options);\n\n // filter pixel data\n let bpp = constants.COLORTYPE_TO_BPP_MAP[this._options.colorType];\n let filteredData = filter(packedData, width, height, this._options, bpp);\n return filteredData;\n};\n\nPacker.prototype._packChunk = function (type, data) {\n let len = data ? data.length : 0;\n let buf = Buffer.alloc(len + 12);\n\n buf.writeUInt32BE(len, 0);\n buf.writeUInt32BE(type, 4);\n\n if (data) {\n data.copy(buf, 8);\n }\n\n buf.writeInt32BE(\n CrcStream.crc32(buf.slice(4, buf.length - 4)),\n buf.length - 4\n );\n return buf;\n};\n\nPacker.prototype.packGAMA = function (gamma) {\n let buf = Buffer.alloc(4);\n buf.writeUInt32BE(Math.floor(gamma * constants.GAMMA_DIVISION), 0);\n return this._packChunk(constants.TYPE_gAMA, buf);\n};\n\nPacker.prototype.packIHDR = function (width, height) {\n let buf = Buffer.alloc(13);\n buf.writeUInt32BE(width, 0);\n buf.writeUInt32BE(height, 4);\n buf[8] = this._options.bitDepth; // Bit depth\n buf[9] = this._options.colorType; // colorType\n buf[10] = 0; // compression\n buf[11] = 0; // filter\n buf[12] = 0; // interlace\n\n return this._packChunk(constants.TYPE_IHDR, buf);\n};\n\nPacker.prototype.packIDAT = function (data) {\n return this._packChunk(constants.TYPE_IDAT, data);\n};\n\nPacker.prototype.packIEND = function () {\n return this._packChunk(constants.TYPE_IEND, null);\n};\n","\"use strict\";\n\nlet util = require(\"util\");\nlet Stream = require(\"stream\");\nlet constants = require(\"./constants\");\nlet Packer = require(\"./packer\");\n\nlet PackerAsync = (module.exports = function (opt) {\n Stream.call(this);\n\n let options = opt || {};\n\n this._packer = new Packer(options);\n this._deflate = this._packer.createDeflate();\n\n this.readable = true;\n});\nutil.inherits(PackerAsync, Stream);\n\nPackerAsync.prototype.pack = function (data, width, height, gamma) {\n // Signature\n this.emit(\"data\", Buffer.from(constants.PNG_SIGNATURE));\n this.emit(\"data\", this._packer.packIHDR(width, height));\n\n if (gamma) {\n this.emit(\"data\", this._packer.packGAMA(gamma));\n }\n\n let filteredData = this._packer.filterData(data, width, height);\n\n // compress it\n this._deflate.on(\"error\", this.emit.bind(this, \"error\"));\n\n this._deflate.on(\n \"data\",\n function (compressedData) {\n this.emit(\"data\", this._packer.packIDAT(compressedData));\n }.bind(this)\n );\n\n this._deflate.on(\n \"end\",\n function () {\n this.emit(\"data\", this._packer.packIEND());\n this.emit(\"end\");\n }.bind(this)\n );\n\n this._deflate.end(filteredData);\n};\n","\"use strict\";\n\nlet assert = require(\"assert\").ok;\nlet zlib = require(\"zlib\");\nlet util = require(\"util\");\n\nlet kMaxLength = require(\"buffer\").kMaxLength;\n\nfunction Inflate(opts) {\n if (!(this instanceof Inflate)) {\n return new Inflate(opts);\n }\n\n if (opts && opts.chunkSize < zlib.Z_MIN_CHUNK) {\n opts.chunkSize = zlib.Z_MIN_CHUNK;\n }\n\n zlib.Inflate.call(this, opts);\n\n // Node 8 --> 9 compatibility check\n this._offset = this._offset === undefined ? this._outOffset : this._offset;\n this._buffer = this._buffer || this._outBuffer;\n\n if (opts && opts.maxLength != null) {\n this._maxLength = opts.maxLength;\n }\n}\n\nfunction createInflate(opts) {\n return new Inflate(opts);\n}\n\nfunction _close(engine, callback) {\n if (callback) {\n process.nextTick(callback);\n }\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) {\n return;\n }\n\n engine._handle.close();\n engine._handle = null;\n}\n\nInflate.prototype._processChunk = function (chunk, flushFlag, asyncCb) {\n if (typeof asyncCb === \"function\") {\n return zlib.Inflate._processChunk.call(this, chunk, flushFlag, asyncCb);\n }\n\n let self = this;\n\n let availInBefore = chunk && chunk.length;\n let availOutBefore = this._chunkSize - this._offset;\n let leftToInflate = this._maxLength;\n let inOff = 0;\n\n let buffers = [];\n let nread = 0;\n\n let error;\n this.on(\"error\", function (err) {\n error = err;\n });\n\n function handleChunk(availInAfter, availOutAfter) {\n if (self._hadError) {\n return;\n }\n\n let have = availOutBefore - availOutAfter;\n assert(have >= 0, \"have should not go down\");\n\n if (have > 0) {\n let out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n\n if (out.length > leftToInflate) {\n out = out.slice(0, leftToInflate);\n }\n\n buffers.push(out);\n nread += out.length;\n leftToInflate -= out.length;\n\n if (leftToInflate === 0) {\n return false;\n }\n }\n\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n\n if (availOutAfter === 0) {\n inOff += availInBefore - availInAfter;\n availInBefore = availInAfter;\n\n return true;\n }\n\n return false;\n }\n\n assert(this._handle, \"zlib binding closed\");\n let res;\n do {\n res = this._handle.writeSync(\n flushFlag,\n chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore\n ); // out_len\n // Node 8 --> 9 compatibility check\n res = res || this._writeState;\n } while (!this._hadError && handleChunk(res[0], res[1]));\n\n if (this._hadError) {\n throw error;\n }\n\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError(\n \"Cannot create final Buffer. It would be larger than 0x\" +\n kMaxLength.toString(16) +\n \" bytes\"\n );\n }\n\n let buf = Buffer.concat(buffers, nread);\n _close(this);\n\n return buf;\n};\n\nutil.inherits(Inflate, zlib.Inflate);\n\nfunction zlibBufferSync(engine, buffer) {\n if (typeof buffer === \"string\") {\n buffer = Buffer.from(buffer);\n }\n if (!(buffer instanceof Buffer)) {\n throw new TypeError(\"Not a string or buffer\");\n }\n\n let flushFlag = engine._finishFlushFlag;\n if (flushFlag == null) {\n flushFlag = zlib.Z_FINISH;\n }\n\n return engine._processChunk(buffer, flushFlag);\n}\n\nfunction inflateSync(buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n}\n\nmodule.exports = exports = inflateSync;\nexports.Inflate = Inflate;\nexports.createInflate = createInflate;\nexports.inflateSync = inflateSync;\n","\"use strict\";\n\nlet SyncReader = (module.exports = function (buffer) {\n this._buffer = buffer;\n this._reads = [];\n});\n\nSyncReader.prototype.read = function (length, callback) {\n this._reads.push({\n length: Math.abs(length), // if length < 0 then at most this length\n allowLess: length < 0,\n func: callback,\n });\n};\n\nSyncReader.prototype.process = function () {\n // as long as there is any data and read requests\n while (this._reads.length > 0 && this._buffer.length) {\n let read = this._reads[0];\n\n if (\n this._buffer.length &&\n (this._buffer.length >= read.length || read.allowLess)\n ) {\n // ok there is any data so that we can satisfy this request\n this._reads.shift(); // == read\n\n let buf = this._buffer;\n\n this._buffer = buf.slice(read.length);\n\n read.func.call(this, buf.slice(0, read.length));\n } else {\n break;\n }\n }\n\n if (this._reads.length > 0) {\n throw new Error(\"There are some read requests waitng on finished stream\");\n }\n\n if (this._buffer.length > 0) {\n throw new Error(\"unrecognised content at end of stream\");\n }\n};\n","\"use strict\";\n\nlet SyncReader = require(\"./sync-reader\");\nlet Filter = require(\"./filter-parse\");\n\nexports.process = function (inBuffer, bitmapInfo) {\n let outBuffers = [];\n let reader = new SyncReader(inBuffer);\n let filter = new Filter(bitmapInfo, {\n read: reader.read.bind(reader),\n write: function (bufferPart) {\n outBuffers.push(bufferPart);\n },\n complete: function () {},\n });\n\n filter.start();\n reader.process();\n\n return Buffer.concat(outBuffers);\n};\n","\"use strict\";\n\nlet hasSyncZlib = true;\nlet zlib = require(\"zlib\");\nlet inflateSync = require(\"./sync-inflate\");\nif (!zlib.deflateSync) {\n hasSyncZlib = false;\n}\nlet SyncReader = require(\"./sync-reader\");\nlet FilterSync = require(\"./filter-parse-sync\");\nlet Parser = require(\"./parser\");\nlet bitmapper = require(\"./bitmapper\");\nlet formatNormaliser = require(\"./format-normaliser\");\n\nmodule.exports = function (buffer, options) {\n if (!hasSyncZlib) {\n throw new Error(\n \"To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0\"\n );\n }\n\n let err;\n function handleError(_err_) {\n err = _err_;\n }\n\n let metaData;\n function handleMetaData(_metaData_) {\n metaData = _metaData_;\n }\n\n function handleTransColor(transColor) {\n metaData.transColor = transColor;\n }\n\n function handlePalette(palette) {\n metaData.palette = palette;\n }\n\n function handleSimpleTransparency() {\n metaData.alpha = true;\n }\n\n let gamma;\n function handleGamma(_gamma_) {\n gamma = _gamma_;\n }\n\n let inflateDataList = [];\n function handleInflateData(inflatedData) {\n inflateDataList.push(inflatedData);\n }\n\n let reader = new SyncReader(buffer);\n\n let parser = new Parser(options, {\n read: reader.read.bind(reader),\n error: handleError,\n metadata: handleMetaData,\n gamma: handleGamma,\n palette: handlePalette,\n transColor: handleTransColor,\n inflateData: handleInflateData,\n simpleTransparency: handleSimpleTransparency,\n });\n\n parser.start();\n reader.process();\n\n if (err) {\n throw err;\n }\n\n //join together the inflate datas\n let inflateData = Buffer.concat(inflateDataList);\n inflateDataList.length = 0;\n\n let inflatedData;\n if (metaData.interlace) {\n inflatedData = zlib.inflateSync(inflateData);\n } else {\n let rowSize =\n ((metaData.width * metaData.bpp * metaData.depth + 7) >> 3) + 1;\n let imageSize = rowSize * metaData.height;\n inflatedData = inflateSync(inflateData, {\n chunkSize: imageSize,\n maxLength: imageSize,\n });\n }\n inflateData = null;\n\n if (!inflatedData || !inflatedData.length) {\n throw new Error(\"bad png - invalid inflate data response\");\n }\n\n let unfilteredData = FilterSync.process(inflatedData, metaData);\n inflateData = null;\n\n let bitmapData = bitmapper.dataToBitMap(unfilteredData, metaData);\n unfilteredData = null;\n\n let normalisedBitmapData = formatNormaliser(\n bitmapData,\n metaData,\n options.skipRescale\n );\n\n metaData.data = normalisedBitmapData;\n metaData.gamma = gamma || 0;\n\n return metaData;\n};\n","\"use strict\";\n\nlet hasSyncZlib = true;\nlet zlib = require(\"zlib\");\nif (!zlib.deflateSync) {\n hasSyncZlib = false;\n}\nlet constants = require(\"./constants\");\nlet Packer = require(\"./packer\");\n\nmodule.exports = function (metaData, opt) {\n if (!hasSyncZlib) {\n throw new Error(\n \"To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0\"\n );\n }\n\n let options = opt || {};\n\n let packer = new Packer(options);\n\n let chunks = [];\n\n // Signature\n chunks.push(Buffer.from(constants.PNG_SIGNATURE));\n\n // Header\n chunks.push(packer.packIHDR(metaData.width, metaData.height));\n\n if (metaData.gamma) {\n chunks.push(packer.packGAMA(metaData.gamma));\n }\n\n let filteredData = packer.filterData(\n metaData.data,\n metaData.width,\n metaData.height\n );\n\n // compress it\n let compressedData = zlib.deflateSync(\n filteredData,\n packer.getDeflateOptions()\n );\n filteredData = null;\n\n if (!compressedData || !compressedData.length) {\n throw new Error(\"bad png - invalid compressed data response\");\n }\n chunks.push(packer.packIDAT(compressedData));\n\n // End\n chunks.push(packer.packIEND());\n\n return Buffer.concat(chunks);\n};\n","\"use strict\";\n\nlet parse = require(\"./parser-sync\");\nlet pack = require(\"./packer-sync\");\n\nexports.read = function (buffer, options) {\n return parse(buffer, options || {});\n};\n\nexports.write = function (png, options) {\n return pack(png, options);\n};\n","\"use strict\";\n\nlet util = require(\"util\");\nlet Stream = require(\"stream\");\nlet Parser = require(\"./parser-async\");\nlet Packer = require(\"./packer-async\");\nlet PNGSync = require(\"./png-sync\");\n\nlet PNG = (exports.PNG = function (options) {\n Stream.call(this);\n\n options = options || {}; // eslint-disable-line no-param-reassign\n\n // coerce pixel dimensions to integers (also coerces undefined -> 0):\n this.width = options.width | 0;\n this.height = options.height | 0;\n\n this.data =\n this.width > 0 && this.height > 0\n ? Buffer.alloc(4 * this.width * this.height)\n : null;\n\n if (options.fill && this.data) {\n this.data.fill(0);\n }\n\n this.gamma = 0;\n this.readable = this.writable = true;\n\n this._parser = new Parser(options);\n\n this._parser.on(\"error\", this.emit.bind(this, \"error\"));\n this._parser.on(\"close\", this._handleClose.bind(this));\n this._parser.on(\"metadata\", this._metadata.bind(this));\n this._parser.on(\"gamma\", this._gamma.bind(this));\n this._parser.on(\n \"parsed\",\n function (data) {\n this.data = data;\n this.emit(\"parsed\", data);\n }.bind(this)\n );\n\n this._packer = new Packer(options);\n this._packer.on(\"data\", this.emit.bind(this, \"data\"));\n this._packer.on(\"end\", this.emit.bind(this, \"end\"));\n this._parser.on(\"close\", this._handleClose.bind(this));\n this._packer.on(\"error\", this.emit.bind(this, \"error\"));\n});\nutil.inherits(PNG, Stream);\n\nPNG.sync = PNGSync;\n\nPNG.prototype.pack = function () {\n if (!this.data || !this.data.length) {\n this.emit(\"error\", \"No data provided\");\n return this;\n }\n\n process.nextTick(\n function () {\n this._packer.pack(this.data, this.width, this.height, this.gamma);\n }.bind(this)\n );\n\n return this;\n};\n\nPNG.prototype.parse = function (data, callback) {\n if (callback) {\n let onParsed, onError;\n\n onParsed = function (parsedData) {\n this.removeListener(\"error\", onError);\n\n this.data = parsedData;\n callback(null, this);\n }.bind(this);\n\n onError = function (err) {\n this.removeListener(\"parsed\", onParsed);\n\n callback(err, null);\n }.bind(this);\n\n this.once(\"parsed\", onParsed);\n this.once(\"error\", onError);\n }\n\n this.end(data);\n return this;\n};\n\nPNG.prototype.write = function (data) {\n this._parser.write(data);\n return true;\n};\n\nPNG.prototype.end = function (data) {\n this._parser.end(data);\n};\n\nPNG.prototype._metadata = function (metadata) {\n this.width = metadata.width;\n this.height = metadata.height;\n\n this.emit(\"metadata\", metadata);\n};\n\nPNG.prototype._gamma = function (gamma) {\n this.gamma = gamma;\n};\n\nPNG.prototype._handleClose = function () {\n if (!this._parser.writable && !this._packer.readable) {\n this.emit(\"close\");\n }\n};\n\nPNG.bitblt = function (src, dst, srcX, srcY, width, height, deltaX, deltaY) {\n // eslint-disable-line max-params\n // coerce pixel dimensions to integers (also coerces undefined -> 0):\n /* eslint-disable no-param-reassign */\n srcX |= 0;\n srcY |= 0;\n width |= 0;\n height |= 0;\n deltaX |= 0;\n deltaY |= 0;\n /* eslint-enable no-param-reassign */\n\n if (\n srcX > src.width ||\n srcY > src.height ||\n srcX + width > src.width ||\n srcY + height > src.height\n ) {\n throw new Error(\"bitblt reading outside image\");\n }\n\n if (\n deltaX > dst.width ||\n deltaY > dst.height ||\n deltaX + width > dst.width ||\n deltaY + height > dst.height\n ) {\n throw new Error(\"bitblt writing outside image\");\n }\n\n for (let y = 0; y < height; y++) {\n src.data.copy(\n dst.data,\n ((deltaY + y) * dst.width + deltaX) << 2,\n ((srcY + y) * src.width + srcX) << 2,\n ((srcY + y) * src.width + srcX + width) << 2\n );\n }\n};\n\nPNG.prototype.bitblt = function (\n dst,\n srcX,\n srcY,\n width,\n height,\n deltaX,\n deltaY\n) {\n // eslint-disable-line max-params\n\n PNG.bitblt(this, dst, srcX, srcY, width, height, deltaX, deltaY);\n return this;\n};\n\nPNG.adjustGamma = function (src) {\n if (src.gamma) {\n for (let y = 0; y < src.height; y++) {\n for (let x = 0; x < src.width; x++) {\n let idx = (src.width * y + x) << 2;\n\n for (let i = 0; i < 3; i++) {\n let sample = src.data[idx + i] / 255;\n sample = Math.pow(sample, 1 / 2.2 / src.gamma);\n src.data[idx + i] = Math.round(sample * 255);\n }\n }\n }\n src.gamma = 0;\n }\n};\n\nPNG.prototype.adjustGamma = function () {\n PNG.adjustGamma(this);\n};\n"],"names":[],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]}
|