From 6e96f51fc28439916d43fac82228e2044c539e0f Mon Sep 17 00:00:00 2001 From: Shu Ding Date: Thu, 25 Mar 2021 21:46:29 +0800 Subject: [PATCH 1/4] fix png decoder --- .../server/lib/squoosh/png/squoosh_png.js | 2 +- .../lib/squoosh/png/squoosh_png_bg.wasm | Bin 127134 -> 123672 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js b/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js index e190cdcad0275..d3c3a75602684 100644 --- a/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js +++ b/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js @@ -145,7 +145,7 @@ async function load(module, imports) { async function init(input) { if (typeof input === 'undefined') { - // input = import.meta.url.replace(/\.js$/, '_bg.wasm') + // input = import.meta.url.replace(/\.js$/, '_bg.wasm'); throw new Error('invariant') } const imports = {} diff --git a/packages/next/next-server/server/lib/squoosh/png/squoosh_png_bg.wasm b/packages/next/next-server/server/lib/squoosh/png/squoosh_png_bg.wasm index 65f76eaa1946c5d8d2bbfbdc3cc544bfc70d3bab..ef074fafe8b10e34c95cd0a66cec99ddf39ee726 100644 GIT binary patch delta 30811 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 delta 33435 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 TuT;zU`1}jCXaDq(m?{1b2qu%< From 14fcedfd1101bc8fe7a3f76851b11af85f7a1204 Mon Sep 17 00:00:00 2001 From: Shu Ding Date: Thu, 25 Mar 2021 21:47:18 +0800 Subject: [PATCH 2/4] fix unintended change --- packages/next/next-server/server/lib/squoosh/png/squoosh_png.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js b/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js index d3c3a75602684..e190cdcad0275 100644 --- a/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js +++ b/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js @@ -145,7 +145,7 @@ async function load(module, imports) { async function init(input) { if (typeof input === 'undefined') { - // input = import.meta.url.replace(/\.js$/, '_bg.wasm'); + // input = import.meta.url.replace(/\.js$/, '_bg.wasm') throw new Error('invariant') } const imports = {} From d7218b9c3076cb62986a10a7fbf7e8c23b963156 Mon Sep 17 00:00:00 2001 From: Shu Ding Date: Thu, 1 Apr 2021 19:50:15 +0800 Subject: [PATCH 3/4] fix codec --- .../server/lib/squoosh/png/squoosh_png.js | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js b/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js index 2971ef3cce647..300c68daf6309 100644 --- a/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js +++ b/packages/next/next-server/server/lib/squoosh/png/squoosh_png.js @@ -1,5 +1,29 @@ +import { TextDecoder } from '../text-decoder' + let wasm +let cachedTextDecoder = new TextDecoder('utf-8', { + ignoreBOM: true, + fatal: true, +}) + +cachedTextDecoder.decode() + +let cachegetUint8Memory0 = null +function getUint8Memory0() { + if ( + cachegetUint8Memory0 === null || + cachegetUint8Memory0.buffer !== wasm.memory.buffer + ) { + cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer) + } + return cachegetUint8Memory0 +} + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)) +} + let cachegetUint8ClampedMemory0 = null function getUint8ClampedMemory0() { if ( @@ -30,17 +54,6 @@ function addHeapObject(obj) { return idx } -let cachegetUint8Memory0 = null -function getUint8Memory0() { - if ( - cachegetUint8Memory0 === null || - cachegetUint8Memory0.buffer !== wasm.memory.buffer - ) { - cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer) - } - return cachegetUint8Memory0 -} - let WASM_VECTOR_LEN = 0 function passArray8ToWasm0(arg, malloc) { @@ -161,7 +174,9 @@ async function init(input) { var ret = new ImageData(v0, arg2 >>> 0, arg3 >>> 0) return addHeapObject(ret) } - + imports.wbg.__wbindgen_throw = function (arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)) + } if ( typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || From d31f71b002a6278434d22fbd2ef0f6d3214500ef Mon Sep 17 00:00:00 2001 From: Shu Ding Date: Thu, 1 Apr 2021 21:27:02 +0800 Subject: [PATCH 4/4] add integration test --- .../image-optimizer/public/grayscale.png | Bin 0 -> 234 bytes .../image-optimizer/test/index.test.js | 20 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 test/integration/image-optimizer/public/grayscale.png diff --git a/test/integration/image-optimizer/public/grayscale.png b/test/integration/image-optimizer/public/grayscale.png new file mode 100644 index 0000000000000000000000000000000000000000..85c55456d8c7904da7b4b1766ed8814308601326 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8LpMo$;VkcwMxr{3mmHsEo!_N!AW z-0Y(wc9P@XVeJhGPros*iCMWadZE~fpInaZNBE1ZZ=T?c65}&jo*1~&Wn)mg>*YUx ziu&J{%(^ek8Qu6s*{Rv$N*~+H1Z`b)@mm%dvzu?UDch83=qnkCowXNT`11{m>(ad7 z+?$+TZ+==C-)uOsO!k%Q8kf_TIxY5DYQ(Xq9#xAwa{s3G4V%C0tKN8*2whCK|Gz%g ieckdy5&Zw2>|i#QkCA9Ev { + // https://github.com/vercel/next.js/issues/22929 + // A grayscaled PNG with transparent pixels. + const query = { url: '/grayscale.png', w: largeSize, q: 80 } + const opts = { headers: { accept: 'image/png' } } + const res = await fetchViaHTTP(appPort, '/_next/image', query, opts) + expect(res.status).toBe(200) + expect(res.headers.get('Content-Type')).toBe('image/png') + expect(res.headers.get('cache-control')).toBe( + 'public, max-age=0, must-revalidate' + ) + + const png = await res.buffer() + + // Read the color type byte (offset 9 + magic number 16). + // http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html + const colorType = png.readUIntBE(25, 1) + expect(colorType).toBe(4) + }) + it("should error if the resource isn't a valid image", async () => { const query = { url: '/test.txt', w, q: 80 } const opts = { headers: { accept: 'image/webp' } }