From 1934044506b820074864bec2ae90c004043f228e Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Fri, 14 Jun 2019 07:31:13 +0200 Subject: [PATCH] Fix URL resolution to work when the current script contains query parameters (#2937) --- src/utils/defaultPlugin.ts | 2 +- .../samples/asset-emission/_expected/cjs/main.js | 2 +- .../asset-emission/_expected/cjs/nested/chunk2.js | 2 +- .../samples/configure-asset-url/_expected/cjs/main.js | 2 +- .../samples/configure-file-url/_expected/cjs/main.js | 4 ++-- .../emit-chunk-worker/_expected/cjs/chunks/nested.js | 2 +- .../_expected/cjs/chunks/worker-proxy.js | 2 +- .../samples/emit-chunk-worker/_expected/cjs/main.js | 2 +- .../samples/emit-chunk-worklet/_expected/cjs/main.js | 2 +- test/form/samples/asset-emission/_expected/cjs.js | 2 +- test/form/samples/asset-emission/_expected/iife.js | 2 +- test/form/samples/asset-emission/_expected/umd.js | 2 +- .../asset-emission/index-umd-iife-queryparam.html | 10 ++++++++++ test/form/samples/configure-asset-url/_expected/cjs.js | 2 +- .../form/samples/configure-asset-url/_expected/iife.js | 2 +- test/form/samples/configure-asset-url/_expected/umd.js | 2 +- test/form/samples/configure-file-url/_expected/cjs.js | 2 +- test/form/samples/configure-file-url/_expected/iife.js | 2 +- test/form/samples/configure-file-url/_expected/umd.js | 2 +- test/hooks/index.js | 2 +- 20 files changed, 30 insertions(+), 20 deletions(-) create mode 100644 test/form/samples/asset-emission/index-umd-iife-queryparam.html diff --git a/src/utils/defaultPlugin.ts b/src/utils/defaultPlugin.ts index 1da30300ae7..c79b9deb422 100644 --- a/src/utils/defaultPlugin.ts +++ b/src/utils/defaultPlugin.ts @@ -108,7 +108,7 @@ const importMetaMechanisms: Record getResolveUrl( - `(document.currentScript && document.currentScript.src || document.baseURI) + '/../${relativePath}'` + `'${relativePath}', document.currentScript && document.currentScript.src || document.baseURI` ); const relativeUrlMechanisms: Record string> = { diff --git a/test/chunking-form/samples/asset-emission/_expected/cjs/main.js b/test/chunking-form/samples/asset-emission/_expected/cjs/main.js index e6461f5d2b4..218ad8e14c1 100644 --- a/test/chunking-form/samples/asset-emission/_expected/cjs/main.js +++ b/test/chunking-form/samples/asset-emission/_expected/cjs/main.js @@ -2,7 +2,7 @@ var __chunk_1 = require('./nested/chunk.js'); -var logo = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo1-25253976.svg').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/logo1-25253976.svg').href); +var logo = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo1-25253976.svg').href : new URL('assets/logo1-25253976.svg', document.currentScript && document.currentScript.src || document.baseURI).href); __chunk_1.showImage(logo); Promise.resolve(require('./nested/chunk2.js')); diff --git a/test/chunking-form/samples/asset-emission/_expected/cjs/nested/chunk2.js b/test/chunking-form/samples/asset-emission/_expected/cjs/nested/chunk2.js index 195d71e0356..10f8b21bde6 100644 --- a/test/chunking-form/samples/asset-emission/_expected/cjs/nested/chunk2.js +++ b/test/chunking-form/samples/asset-emission/_expected/cjs/nested/chunk2.js @@ -2,6 +2,6 @@ var __chunk_1 = require('./chunk.js'); -var logo = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/../assets/logo2-25253976.svg').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../../assets/logo2-25253976.svg').href); +var logo = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/../assets/logo2-25253976.svg').href : new URL('../assets/logo2-25253976.svg', document.currentScript && document.currentScript.src || document.baseURI).href); __chunk_1.showImage(logo); diff --git a/test/chunking-form/samples/configure-asset-url/_expected/cjs/main.js b/test/chunking-form/samples/configure-asset-url/_expected/cjs/main.js index 02ac6ba542d..06d653838af 100644 --- a/test/chunking-form/samples/configure-asset-url/_expected/cjs/main.js +++ b/test/chunking-form/samples/configure-asset-url/_expected/cjs/main.js @@ -2,6 +2,6 @@ var asset2 = 'resolved'; -var asset3 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/asset-unresolved-9548436d.txt').href); +var asset3 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL('assets/asset-unresolved-9548436d.txt', document.currentScript && document.currentScript.src || document.baseURI).href); Promise.resolve(require('./nested/chunk.js')).then(result => console.log(result, asset2, asset3)); diff --git a/test/chunking-form/samples/configure-file-url/_expected/cjs/main.js b/test/chunking-form/samples/configure-file-url/_expected/cjs/main.js index 53e5508203c..de1e61444a0 100644 --- a/test/chunking-form/samples/configure-file-url/_expected/cjs/main.js +++ b/test/chunking-form/samples/configure-file-url/_expected/cjs/main.js @@ -3,7 +3,7 @@ const asset = 'resolved'; const chunk = 'resolved'; -const asset$1 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/asset-unresolved-9548436d.txt').href); -const chunk$1 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/nested/chunk.js').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../nested/chunk.js').href); +const asset$1 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL('assets/asset-unresolved-9548436d.txt', document.currentScript && document.currentScript.src || document.baseURI).href); +const chunk$1 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/nested/chunk.js').href : new URL('nested/chunk.js', document.currentScript && document.currentScript.src || document.baseURI).href); Promise.resolve(require('./nested/chunk2.js')).then(result => console.log(result, chunk, chunk$1, asset, asset$1)); diff --git a/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/chunks/nested.js b/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/chunks/nested.js index e7ed919b078..b1544deca5e 100644 --- a/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/chunks/nested.js +++ b/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/chunks/nested.js @@ -1,7 +1,7 @@ 'use strict'; const getWorkerMessage = () => new Promise(resolve => { - const worker = new Worker((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/worker-proxy.js').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../worker-proxy.js').href)); + const worker = new Worker((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/worker-proxy.js').href : new URL('worker-proxy.js', document.currentScript && document.currentScript.src || document.baseURI).href)); worker.onmessage = resolve; }); diff --git a/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/chunks/worker-proxy.js b/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/chunks/worker-proxy.js index cc45d6af87d..0171ef8895e 100644 --- a/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/chunks/worker-proxy.js +++ b/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/chunks/worker-proxy.js @@ -1,3 +1,3 @@ 'use strict'; -PLACEHOLDER((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/worker.js').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../worker.js').href)); +PLACEHOLDER((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/worker.js').href : new URL('worker.js', document.currentScript && document.currentScript.src || document.baseURI).href)); diff --git a/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/main.js b/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/main.js index 2fb3a0fd077..4da69307c80 100644 --- a/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/main.js +++ b/test/chunking-form/samples/emit-chunk-worker/_expected/cjs/main.js @@ -3,7 +3,7 @@ var __chunk_1 = require('./chunks/chunk.js'); const getWorkerMessage = () => new Promise(resolve => { - const worker = new Worker((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/chunks/worker-proxy.js').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../chunks/worker-proxy.js').href)); + const worker = new Worker((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/chunks/worker-proxy.js').href : new URL('chunks/worker-proxy.js', document.currentScript && document.currentScript.src || document.baseURI).href)); worker.onmessage = resolve; }); diff --git a/test/chunking-form/samples/emit-chunk-worklet/_expected/cjs/main.js b/test/chunking-form/samples/emit-chunk-worklet/_expected/cjs/main.js index ca4d7d2e014..a5404718a54 100644 --- a/test/chunking-form/samples/emit-chunk-worklet/_expected/cjs/main.js +++ b/test/chunking-form/samples/emit-chunk-worklet/_expected/cjs/main.js @@ -2,6 +2,6 @@ var __chunk_1 = require('./chunks/chunk.js'); -CSS.paintWorklet.addModule((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/chunks/worklet.js').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../chunks/worklet.js').href)); +CSS.paintWorklet.addModule((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/chunks/worklet.js').href : new URL('chunks/worklet.js', document.currentScript && document.currentScript.src || document.baseURI).href)); document.body.innerHTML += `

color: ${__chunk_1.color}, size: ${__chunk_1.size}

`; diff --git a/test/form/samples/asset-emission/_expected/cjs.js b/test/form/samples/asset-emission/_expected/cjs.js index 55eb8a4a004..6705b3c1d7c 100644 --- a/test/form/samples/asset-emission/_expected/cjs.js +++ b/test/form/samples/asset-emission/_expected/cjs.js @@ -1,6 +1,6 @@ 'use strict'; -var logo = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25253976.svg').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/logo-25253976.svg').href); +var logo = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25253976.svg').href : new URL('assets/logo-25253976.svg', document.currentScript && document.currentScript.src || document.baseURI).href); function showImage(url) { console.log(url); diff --git a/test/form/samples/asset-emission/_expected/iife.js b/test/form/samples/asset-emission/_expected/iife.js index 561aff639dc..713c4aa8f2a 100644 --- a/test/form/samples/asset-emission/_expected/iife.js +++ b/test/form/samples/asset-emission/_expected/iife.js @@ -1,7 +1,7 @@ (function () { 'use strict'; - var logo = new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/logo-25253976.svg').href; + var logo = new URL('assets/logo-25253976.svg', document.currentScript && document.currentScript.src || document.baseURI).href; function showImage(url) { console.log(url); diff --git a/test/form/samples/asset-emission/_expected/umd.js b/test/form/samples/asset-emission/_expected/umd.js index 4bae7b42681..2f993d8c725 100644 --- a/test/form/samples/asset-emission/_expected/umd.js +++ b/test/form/samples/asset-emission/_expected/umd.js @@ -3,7 +3,7 @@ factory(); }(function () { 'use strict'; - var logo = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25253976.svg').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/logo-25253976.svg').href); + var logo = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25253976.svg').href : new URL('assets/logo-25253976.svg', document.currentScript && document.currentScript.src || document.baseURI).href); function showImage(url) { console.log(url); diff --git a/test/form/samples/asset-emission/index-umd-iife-queryparam.html b/test/form/samples/asset-emission/index-umd-iife-queryparam.html new file mode 100644 index 00000000000..fda3f3f6195 --- /dev/null +++ b/test/form/samples/asset-emission/index-umd-iife-queryparam.html @@ -0,0 +1,10 @@ + + + + + UMD (IIFE) + query parameter + + + + + diff --git a/test/form/samples/configure-asset-url/_expected/cjs.js b/test/form/samples/configure-asset-url/_expected/cjs.js index 34e6af70544..7b4374d5b06 100644 --- a/test/form/samples/configure-asset-url/_expected/cjs.js +++ b/test/form/samples/configure-asset-url/_expected/cjs.js @@ -4,6 +4,6 @@ var asset1 = 'cjs.js:solved:assets/asset-solved-9b321da2.txt:assets/asset-solved var asset2 = 'resolved'; -var asset3 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/asset-unresolved-9548436d.txt').href); +var asset3 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL('assets/asset-unresolved-9548436d.txt', document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1, asset2, asset3); diff --git a/test/form/samples/configure-asset-url/_expected/iife.js b/test/form/samples/configure-asset-url/_expected/iife.js index 23d28d32452..6adb782db61 100644 --- a/test/form/samples/configure-asset-url/_expected/iife.js +++ b/test/form/samples/configure-asset-url/_expected/iife.js @@ -5,7 +5,7 @@ var asset2 = 'resolved'; - var asset3 = new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/asset-unresolved-9548436d.txt').href; + var asset3 = new URL('assets/asset-unresolved-9548436d.txt', document.currentScript && document.currentScript.src || document.baseURI).href; console.log(asset1, asset2, asset3); diff --git a/test/form/samples/configure-asset-url/_expected/umd.js b/test/form/samples/configure-asset-url/_expected/umd.js index 9a058fff2d7..8487ec43437 100644 --- a/test/form/samples/configure-asset-url/_expected/umd.js +++ b/test/form/samples/configure-asset-url/_expected/umd.js @@ -7,7 +7,7 @@ var asset2 = 'resolved'; - var asset3 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/asset-unresolved-9548436d.txt').href); + var asset3 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL('assets/asset-unresolved-9548436d.txt', document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1, asset2, asset3); diff --git a/test/form/samples/configure-file-url/_expected/cjs.js b/test/form/samples/configure-file-url/_expected/cjs.js index 0cd0cf76d41..be58150cae8 100644 --- a/test/form/samples/configure-file-url/_expected/cjs.js +++ b/test/form/samples/configure-file-url/_expected/cjs.js @@ -4,6 +4,6 @@ var asset1 = 'chunkId=cjs.js:moduleId=solved:fileName=assets/asset-solved-9b321d var asset2 = 'resolved'; -var asset3 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/asset-unresolved-9548436d.txt').href); +var asset3 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL('assets/asset-unresolved-9548436d.txt', document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1, asset2, asset3); diff --git a/test/form/samples/configure-file-url/_expected/iife.js b/test/form/samples/configure-file-url/_expected/iife.js index 08bb0ddca71..2d562e6b043 100644 --- a/test/form/samples/configure-file-url/_expected/iife.js +++ b/test/form/samples/configure-file-url/_expected/iife.js @@ -5,7 +5,7 @@ var asset2 = 'resolved'; - var asset3 = new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/asset-unresolved-9548436d.txt').href; + var asset3 = new URL('assets/asset-unresolved-9548436d.txt', document.currentScript && document.currentScript.src || document.baseURI).href; console.log(asset1, asset2, asset3); diff --git a/test/form/samples/configure-file-url/_expected/umd.js b/test/form/samples/configure-file-url/_expected/umd.js index ce104bada6e..2fece7a5b8f 100644 --- a/test/form/samples/configure-file-url/_expected/umd.js +++ b/test/form/samples/configure-file-url/_expected/umd.js @@ -7,7 +7,7 @@ var asset2 = 'resolved'; - var asset3 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/asset-unresolved-9548436d.txt').href); + var asset3 = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-9548436d.txt').href : new URL('assets/asset-unresolved-9548436d.txt', document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1, asset2, asset3); diff --git a/test/hooks/index.js b/test/hooks/index.js index 13de715b592..bde06fd7069 100644 --- a/test/hooks/index.js +++ b/test/hooks/index.js @@ -615,7 +615,7 @@ describe('hooks', () => { code, `'use strict'; -var input = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/test-19916f7d.ext').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../assets/test-19916f7d.ext').href); +var input = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/test-19916f7d.ext').href : new URL('assets/test-19916f7d.ext', document.currentScript && document.currentScript.src || document.baseURI).href); module.exports = input; `