From 14cf0dd331bf783223be88833555b4d4a060f193 Mon Sep 17 00:00:00 2001 From: ceifa Date: Thu, 22 Jul 2021 23:34:48 -0300 Subject: [PATCH 1/3] Fix import.meta.url on web workers --- src/ast/nodes/MetaProperty.ts | 8 ++++---- test/form/samples/configure-file-url/_expected/umd.js | 2 +- .../_expected/umd.js | 4 ++-- .../deprecated/configure-asset-url/_expected/umd.js | 2 +- .../samples/deprecated/emit-asset/_expected/umd.js | 2 +- test/form/samples/emit-asset-file/_expected/umd.js | 2 +- .../samples/emit-uint8array-no-buffer/_expected/umd.js | 10 +++++----- test/form/samples/import-meta-url/_expected/umd.js | 2 +- test/form/samples/import-meta/_expected/umd.js | 2 +- .../samples/resolve-import-meta-url/_expected/umd.js | 4 ++-- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/ast/nodes/MetaProperty.ts b/src/ast/nodes/MetaProperty.ts index 3ef25a379d3..51bb4fa6883 100644 --- a/src/ast/nodes/MetaProperty.ts +++ b/src/ast/nodes/MetaProperty.ts @@ -217,10 +217,10 @@ const relativeUrlMechanisms: Record getRelativeUrlFromDocument(relativePath), system: relativePath => getResolveUrl(`'${relativePath}', module.meta.url`), umd: relativePath => - `(typeof document === 'undefined' ? ${getResolveUrl( + `(typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? ${getResolveUrl( `'file:' + __dirname + '/${relativePath}'`, `(require('u' + 'rl').URL)` - )} : ${getRelativeUrlFromDocument(relativePath)})` + )} : location.href) : ${getRelativeUrlFromDocument(relativePath)})` }; const importMetaMechanisms: Record string> = { @@ -236,9 +236,9 @@ const importMetaMechanisms: Record (prop === null ? `module.meta` : `module.meta.${prop}`), umd: getGenericImportMetaMechanism( chunkId => - `(typeof document === 'undefined' ? ${getResolveUrl( + `(typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? ${getResolveUrl( `'file:' + __filename`, `(require('u' + 'rl').URL)` - )} : ${getUrlFromDocument(chunkId)})` + )} : location.href) : ${getUrlFromDocument(chunkId)})` ) }; diff --git a/test/form/samples/configure-file-url/_expected/umd.js b/test/form/samples/configure-file-url/_expected/umd.js index c032668765d..c262f04a1e0 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-8dcd7fca.txt').href : new URL('assets/asset-unresolved-8dcd7fca.txt', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset3 = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-8dcd7fca.txt').href : location.href) : new URL('assets/asset-unresolved-8dcd7fca.txt', document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1, asset2, asset3); diff --git a/test/form/samples/deconflict-format-specific-globals/_expected/umd.js b/test/form/samples/deconflict-format-specific-globals/_expected/umd.js index 3a2206c125a..ee58ecc10cc 100644 --- a/test/form/samples/deconflict-format-specific-globals/_expected/umd.js +++ b/test/form/samples/deconflict-format-specific-globals/_expected/umd.js @@ -21,7 +21,7 @@ import('external').then(console.log); exports['default'] = 0; - console.log((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + console.log((typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); function nested1() { const _interopDefault = 1; @@ -35,7 +35,7 @@ import('external').then(console.log); exports['default'] = 1; - console.log((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + console.log((typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); } nested1(); diff --git a/test/form/samples/deprecated/configure-asset-url/_expected/umd.js b/test/form/samples/deprecated/configure-asset-url/_expected/umd.js index 203e93624e1..fa6103191a1 100644 --- a/test/form/samples/deprecated/configure-asset-url/_expected/umd.js +++ b/test/form/samples/deprecated/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-8dcd7fca.txt').href : new URL('assets/asset-unresolved-8dcd7fca.txt', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset3 = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-8dcd7fca.txt').href : location.href) : new URL('assets/asset-unresolved-8dcd7fca.txt', document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1, asset2, asset3); diff --git a/test/form/samples/deprecated/emit-asset/_expected/umd.js b/test/form/samples/deprecated/emit-asset/_expected/umd.js index 313ffcb5169..93359b01b6d 100644 --- a/test/form/samples/deprecated/emit-asset/_expected/umd.js +++ b/test/form/samples/deprecated/emit-asset/_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-25585ac1.svg').href : new URL('assets/logo-25585ac1.svg', document.currentScript && document.currentScript.src || document.baseURI).href); + var logo = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25585ac1.svg').href : location.href) : new URL('assets/logo-25585ac1.svg', document.currentScript && document.currentScript.src || document.baseURI).href); function showImage(url) { console.log(url); diff --git a/test/form/samples/emit-asset-file/_expected/umd.js b/test/form/samples/emit-asset-file/_expected/umd.js index 313ffcb5169..93359b01b6d 100644 --- a/test/form/samples/emit-asset-file/_expected/umd.js +++ b/test/form/samples/emit-asset-file/_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-25585ac1.svg').href : new URL('assets/logo-25585ac1.svg', document.currentScript && document.currentScript.src || document.baseURI).href); + var logo = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25585ac1.svg').href : location.href) : new URL('assets/logo-25585ac1.svg', document.currentScript && document.currentScript.src || document.baseURI).href); function showImage(url) { console.log(url); diff --git a/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js b/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js index 1e07d70a4da..433a62d414d 100644 --- a/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js +++ b/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js @@ -3,15 +3,15 @@ factory(); }((function () { 'use strict'; - var asset1a = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href : new URL('assets/asset-dc5cb674', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset1a = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href : location.href) : new URL('assets/asset-dc5cb674', document.currentScript && document.currentScript.src || document.baseURI).href); - var asset1b = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href : new URL('assets/asset-dc5cb674', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset1b = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href : location.href) : new URL('assets/asset-dc5cb674', document.currentScript && document.currentScript.src || document.baseURI).href); - var asset2a = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href : new URL('assets/asset-52cbd095', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset2a = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href : location.href) : new URL('assets/asset-52cbd095', document.currentScript && document.currentScript.src || document.baseURI).href); - var asset2b = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href : new URL('assets/asset-52cbd095', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset2b = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href : location.href) : new URL('assets/asset-52cbd095', document.currentScript && document.currentScript.src || document.baseURI).href); - var asset99a = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-c568a840').href : new URL('assets/asset-c568a840', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset99a = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-c568a840').href : location.href) : new URL('assets/asset-c568a840', document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1a, asset1b, asset2a, asset2b, asset99a); diff --git a/test/form/samples/import-meta-url/_expected/umd.js b/test/form/samples/import-meta-url/_expected/umd.js index 31f722ed30b..3e667a897d4 100644 --- a/test/form/samples/import-meta-url/_expected/umd.js +++ b/test/form/samples/import-meta-url/_expected/umd.js @@ -11,6 +11,6 @@ } } - log((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + log((typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); }))); diff --git a/test/form/samples/import-meta/_expected/umd.js b/test/form/samples/import-meta/_expected/umd.js index 56d3917be05..4a80e783898 100644 --- a/test/form/samples/import-meta/_expected/umd.js +++ b/test/form/samples/import-meta/_expected/umd.js @@ -3,6 +3,6 @@ factory(); }((function () { 'use strict'; - console.log(({ url: (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); + console.log(({ url: (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); }))); diff --git a/test/form/samples/resolve-import-meta-url/_expected/umd.js b/test/form/samples/resolve-import-meta-url/_expected/umd.js index 8e71385a96a..e912e2376f7 100644 --- a/test/form/samples/resolve-import-meta-url/_expected/umd.js +++ b/test/form/samples/resolve-import-meta-url/_expected/umd.js @@ -7,9 +7,9 @@ console.log('resolved'); console.log('resolved'); - console.log((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + console.log((typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); console.log(undefined); - console.log(({ url: (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); + console.log(({ url: (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); console.log('url=umd.js:resolve-import-meta-url/main.js'); console.log('privateProp=umd.js:resolve-import-meta-url/main.js'); From 9b0690b8a21acae355d0f67d2535795684d70e84 Mon Sep 17 00:00:00 2001 From: ceifa Date: Fri, 23 Jul 2021 20:11:03 -0300 Subject: [PATCH 2/3] Simplify location variable check --- src/ast/nodes/MetaProperty.ts | 8 ++++---- test/form/samples/configure-file-url/_expected/umd.js | 2 +- .../_expected/umd.js | 4 ++-- .../deprecated/configure-asset-url/_expected/umd.js | 2 +- .../samples/deprecated/emit-asset/_expected/umd.js | 2 +- test/form/samples/emit-asset-file/_expected/umd.js | 2 +- .../samples/emit-uint8array-no-buffer/_expected/umd.js | 10 +++++----- test/form/samples/import-meta-url/_expected/umd.js | 2 +- test/form/samples/import-meta/_expected/umd.js | 2 +- .../samples/resolve-import-meta-url/_expected/umd.js | 4 ++-- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/ast/nodes/MetaProperty.ts b/src/ast/nodes/MetaProperty.ts index 51bb4fa6883..69f318aa7fa 100644 --- a/src/ast/nodes/MetaProperty.ts +++ b/src/ast/nodes/MetaProperty.ts @@ -217,10 +217,10 @@ const relativeUrlMechanisms: Record getRelativeUrlFromDocument(relativePath), system: relativePath => getResolveUrl(`'${relativePath}', module.meta.url`), umd: relativePath => - `(typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? ${getResolveUrl( + `(typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : ${getResolveUrl( `'file:' + __dirname + '/${relativePath}'`, `(require('u' + 'rl').URL)` - )} : location.href) : ${getRelativeUrlFromDocument(relativePath)})` + )}) : ${getRelativeUrlFromDocument(relativePath)})` }; const importMetaMechanisms: Record string> = { @@ -236,9 +236,9 @@ const importMetaMechanisms: Record (prop === null ? `module.meta` : `module.meta.${prop}`), umd: getGenericImportMetaMechanism( chunkId => - `(typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? ${getResolveUrl( + `(typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : ${getResolveUrl( `'file:' + __filename`, `(require('u' + 'rl').URL)` - )} : location.href) : ${getUrlFromDocument(chunkId)})` + )}) : ${getUrlFromDocument(chunkId)})` ) }; diff --git a/test/form/samples/configure-file-url/_expected/umd.js b/test/form/samples/configure-file-url/_expected/umd.js index c262f04a1e0..bb28a03ac73 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' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-8dcd7fca.txt').href : location.href) : new URL('assets/asset-unresolved-8dcd7fca.txt', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset3 = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-8dcd7fca.txt').href) : new URL('assets/asset-unresolved-8dcd7fca.txt', document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1, asset2, asset3); diff --git a/test/form/samples/deconflict-format-specific-globals/_expected/umd.js b/test/form/samples/deconflict-format-specific-globals/_expected/umd.js index ee58ecc10cc..910ec891eea 100644 --- a/test/form/samples/deconflict-format-specific-globals/_expected/umd.js +++ b/test/form/samples/deconflict-format-specific-globals/_expected/umd.js @@ -21,7 +21,7 @@ import('external').then(console.log); exports['default'] = 0; - console.log((typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + console.log((typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); function nested1() { const _interopDefault = 1; @@ -35,7 +35,7 @@ import('external').then(console.log); exports['default'] = 1; - console.log((typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + console.log((typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); } nested1(); diff --git a/test/form/samples/deprecated/configure-asset-url/_expected/umd.js b/test/form/samples/deprecated/configure-asset-url/_expected/umd.js index fa6103191a1..52269f2e170 100644 --- a/test/form/samples/deprecated/configure-asset-url/_expected/umd.js +++ b/test/form/samples/deprecated/configure-asset-url/_expected/umd.js @@ -7,7 +7,7 @@ var asset2 = 'resolved'; - var asset3 = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-8dcd7fca.txt').href : location.href) : new URL('assets/asset-unresolved-8dcd7fca.txt', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset3 = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-8dcd7fca.txt').href) : new URL('assets/asset-unresolved-8dcd7fca.txt', document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1, asset2, asset3); diff --git a/test/form/samples/deprecated/emit-asset/_expected/umd.js b/test/form/samples/deprecated/emit-asset/_expected/umd.js index 93359b01b6d..c38c758f5ae 100644 --- a/test/form/samples/deprecated/emit-asset/_expected/umd.js +++ b/test/form/samples/deprecated/emit-asset/_expected/umd.js @@ -3,7 +3,7 @@ factory(); }((function () { 'use strict'; - var logo = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25585ac1.svg').href : location.href) : new URL('assets/logo-25585ac1.svg', document.currentScript && document.currentScript.src || document.baseURI).href); + var logo = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25585ac1.svg').href) : new URL('assets/logo-25585ac1.svg', document.currentScript && document.currentScript.src || document.baseURI).href); function showImage(url) { console.log(url); diff --git a/test/form/samples/emit-asset-file/_expected/umd.js b/test/form/samples/emit-asset-file/_expected/umd.js index 93359b01b6d..c38c758f5ae 100644 --- a/test/form/samples/emit-asset-file/_expected/umd.js +++ b/test/form/samples/emit-asset-file/_expected/umd.js @@ -3,7 +3,7 @@ factory(); }((function () { 'use strict'; - var logo = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25585ac1.svg').href : location.href) : new URL('assets/logo-25585ac1.svg', document.currentScript && document.currentScript.src || document.baseURI).href); + var logo = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25585ac1.svg').href) : new URL('assets/logo-25585ac1.svg', document.currentScript && document.currentScript.src || document.baseURI).href); function showImage(url) { console.log(url); diff --git a/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js b/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js index 433a62d414d..171a05c9c92 100644 --- a/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js +++ b/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js @@ -3,15 +3,15 @@ factory(); }((function () { 'use strict'; - var asset1a = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href : location.href) : new URL('assets/asset-dc5cb674', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset1a = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href) : new URL('assets/asset-dc5cb674', document.currentScript && document.currentScript.src || document.baseURI).href); - var asset1b = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href : location.href) : new URL('assets/asset-dc5cb674', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset1b = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href) : new URL('assets/asset-dc5cb674', document.currentScript && document.currentScript.src || document.baseURI).href); - var asset2a = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href : location.href) : new URL('assets/asset-52cbd095', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset2a = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href) : new URL('assets/asset-52cbd095', document.currentScript && document.currentScript.src || document.baseURI).href); - var asset2b = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href : location.href) : new URL('assets/asset-52cbd095', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset2b = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href) : new URL('assets/asset-52cbd095', document.currentScript && document.currentScript.src || document.baseURI).href); - var asset99a = (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-c568a840').href : location.href) : new URL('assets/asset-c568a840', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset99a = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-c568a840').href) : new URL('assets/asset-c568a840', document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1a, asset1b, asset2a, asset2b, asset99a); diff --git a/test/form/samples/import-meta-url/_expected/umd.js b/test/form/samples/import-meta-url/_expected/umd.js index 3e667a897d4..899139e4632 100644 --- a/test/form/samples/import-meta-url/_expected/umd.js +++ b/test/form/samples/import-meta-url/_expected/umd.js @@ -11,6 +11,6 @@ } } - log((typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + log((typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); }))); diff --git a/test/form/samples/import-meta/_expected/umd.js b/test/form/samples/import-meta/_expected/umd.js index 4a80e783898..4eff0410f2f 100644 --- a/test/form/samples/import-meta/_expected/umd.js +++ b/test/form/samples/import-meta/_expected/umd.js @@ -3,6 +3,6 @@ factory(); }((function () { 'use strict'; - console.log(({ url: (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); + console.log(({ url: (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); }))); diff --git a/test/form/samples/resolve-import-meta-url/_expected/umd.js b/test/form/samples/resolve-import-meta-url/_expected/umd.js index e912e2376f7..5784f0e2ce4 100644 --- a/test/form/samples/resolve-import-meta-url/_expected/umd.js +++ b/test/form/samples/resolve-import-meta-url/_expected/umd.js @@ -7,9 +7,9 @@ console.log('resolved'); console.log('resolved'); - console.log((typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + console.log((typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); console.log(undefined); - console.log(({ url: (typeof document === 'undefined' ? (typeof self === 'undefined' || typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : location.href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); + console.log(({ url: (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); console.log('url=umd.js:resolve-import-meta-url/main.js'); console.log('privateProp=umd.js:resolve-import-meta-url/main.js'); From 9aee71cf45886c7e1c01721efd5a96374065e5a3 Mon Sep 17 00:00:00 2001 From: ceifa Date: Fri, 23 Jul 2021 22:38:21 -0300 Subject: [PATCH 3/3] Add normalization for location based url --- src/ast/nodes/MetaProperty.ts | 20 +++++++++++-------- .../configure-file-url/_expected/umd.js | 2 +- .../_expected/umd.js | 4 ++-- .../configure-asset-url/_expected/umd.js | 2 +- .../deprecated/emit-asset/_expected/umd.js | 2 +- .../samples/emit-asset-file/_expected/umd.js | 2 +- .../_expected/umd.js | 10 +++++----- .../samples/import-meta-url/_expected/umd.js | 2 +- .../form/samples/import-meta/_expected/umd.js | 2 +- .../resolve-import-meta-url/_expected/umd.js | 4 ++-- 10 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/ast/nodes/MetaProperty.ts b/src/ast/nodes/MetaProperty.ts index 69f318aa7fa..38da8c66ca1 100644 --- a/src/ast/nodes/MetaProperty.ts +++ b/src/ast/nodes/MetaProperty.ts @@ -185,9 +185,11 @@ const accessedFileUrlGlobals = { const getResolveUrl = (path: string, URL = 'URL') => `new ${URL}(${path}).href`; -const getRelativeUrlFromDocument = (relativePath: string) => +const getRelativeUrlFromDocument = (relativePath: string, umd = false) => getResolveUrl( - `'${relativePath}', document.currentScript && document.currentScript.src || document.baseURI` + `'${relativePath}', ${ + umd ? `typeof document === 'undefined' ? location.href : ` : '' + }document.currentScript && document.currentScript.src || document.baseURI` ); const getGenericImportMetaMechanism = @@ -200,8 +202,10 @@ const getGenericImportMetaMechanism = : 'undefined'; }; -const getUrlFromDocument = (chunkId: string) => - `(document.currentScript && document.currentScript.src || new URL('${chunkId}', document.baseURI).href)`; +const getUrlFromDocument = (chunkId: string, umd = false) => + `${ + umd ? `typeof document === 'undefined' ? location.href : ` : '' + }(document.currentScript && document.currentScript.src || new URL('${chunkId}', document.baseURI).href)`; const relativeUrlMechanisms: Record string> = { amd: relativePath => { @@ -217,10 +221,10 @@ const relativeUrlMechanisms: Record getRelativeUrlFromDocument(relativePath), system: relativePath => getResolveUrl(`'${relativePath}', module.meta.url`), umd: relativePath => - `(typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : ${getResolveUrl( + `(typeof document === 'undefined' && typeof location === 'undefined' ? ${getResolveUrl( `'file:' + __dirname + '/${relativePath}'`, `(require('u' + 'rl').URL)` - )}) : ${getRelativeUrlFromDocument(relativePath)})` + )} : ${getRelativeUrlFromDocument(relativePath, true)})` }; const importMetaMechanisms: Record string> = { @@ -236,9 +240,9 @@ const importMetaMechanisms: Record (prop === null ? `module.meta` : `module.meta.${prop}`), umd: getGenericImportMetaMechanism( chunkId => - `(typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : ${getResolveUrl( + `(typeof document === 'undefined' && typeof location === 'undefined' ? ${getResolveUrl( `'file:' + __filename`, `(require('u' + 'rl').URL)` - )}) : ${getUrlFromDocument(chunkId)})` + )} : ${getUrlFromDocument(chunkId, true)})` ) }; diff --git a/test/form/samples/configure-file-url/_expected/umd.js b/test/form/samples/configure-file-url/_expected/umd.js index bb28a03ac73..9a08ce0cf0a 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' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-8dcd7fca.txt').href) : new URL('assets/asset-unresolved-8dcd7fca.txt', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset3 = (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-8dcd7fca.txt').href : new URL('assets/asset-unresolved-8dcd7fca.txt', typeof document === 'undefined' ? location.href : document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1, asset2, asset3); diff --git a/test/form/samples/deconflict-format-specific-globals/_expected/umd.js b/test/form/samples/deconflict-format-specific-globals/_expected/umd.js index 910ec891eea..d3dffc20e1a 100644 --- a/test/form/samples/deconflict-format-specific-globals/_expected/umd.js +++ b/test/form/samples/deconflict-format-specific-globals/_expected/umd.js @@ -21,7 +21,7 @@ import('external').then(console.log); exports['default'] = 0; - console.log((typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + console.log((typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : typeof document === 'undefined' ? location.href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); function nested1() { const _interopDefault = 1; @@ -35,7 +35,7 @@ import('external').then(console.log); exports['default'] = 1; - console.log((typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + console.log((typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : typeof document === 'undefined' ? location.href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); } nested1(); diff --git a/test/form/samples/deprecated/configure-asset-url/_expected/umd.js b/test/form/samples/deprecated/configure-asset-url/_expected/umd.js index 52269f2e170..01d7292481b 100644 --- a/test/form/samples/deprecated/configure-asset-url/_expected/umd.js +++ b/test/form/samples/deprecated/configure-asset-url/_expected/umd.js @@ -7,7 +7,7 @@ var asset2 = 'resolved'; - var asset3 = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-8dcd7fca.txt').href) : new URL('assets/asset-unresolved-8dcd7fca.txt', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset3 = (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-unresolved-8dcd7fca.txt').href : new URL('assets/asset-unresolved-8dcd7fca.txt', typeof document === 'undefined' ? location.href : document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1, asset2, asset3); diff --git a/test/form/samples/deprecated/emit-asset/_expected/umd.js b/test/form/samples/deprecated/emit-asset/_expected/umd.js index c38c758f5ae..6e3f75b83ee 100644 --- a/test/form/samples/deprecated/emit-asset/_expected/umd.js +++ b/test/form/samples/deprecated/emit-asset/_expected/umd.js @@ -3,7 +3,7 @@ factory(); }((function () { 'use strict'; - var logo = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25585ac1.svg').href) : new URL('assets/logo-25585ac1.svg', document.currentScript && document.currentScript.src || document.baseURI).href); + var logo = (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25585ac1.svg').href : new URL('assets/logo-25585ac1.svg', typeof document === 'undefined' ? location.href : document.currentScript && document.currentScript.src || document.baseURI).href); function showImage(url) { console.log(url); diff --git a/test/form/samples/emit-asset-file/_expected/umd.js b/test/form/samples/emit-asset-file/_expected/umd.js index c38c758f5ae..6e3f75b83ee 100644 --- a/test/form/samples/emit-asset-file/_expected/umd.js +++ b/test/form/samples/emit-asset-file/_expected/umd.js @@ -3,7 +3,7 @@ factory(); }((function () { 'use strict'; - var logo = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25585ac1.svg').href) : new URL('assets/logo-25585ac1.svg', document.currentScript && document.currentScript.src || document.baseURI).href); + var logo = (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/logo-25585ac1.svg').href : new URL('assets/logo-25585ac1.svg', typeof document === 'undefined' ? location.href : document.currentScript && document.currentScript.src || document.baseURI).href); function showImage(url) { console.log(url); diff --git a/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js b/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js index 171a05c9c92..705db002333 100644 --- a/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js +++ b/test/form/samples/emit-uint8array-no-buffer/_expected/umd.js @@ -3,15 +3,15 @@ factory(); }((function () { 'use strict'; - var asset1a = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href) : new URL('assets/asset-dc5cb674', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset1a = (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href : new URL('assets/asset-dc5cb674', typeof document === 'undefined' ? location.href : document.currentScript && document.currentScript.src || document.baseURI).href); - var asset1b = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href) : new URL('assets/asset-dc5cb674', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset1b = (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-dc5cb674').href : new URL('assets/asset-dc5cb674', typeof document === 'undefined' ? location.href : document.currentScript && document.currentScript.src || document.baseURI).href); - var asset2a = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href) : new URL('assets/asset-52cbd095', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset2a = (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href : new URL('assets/asset-52cbd095', typeof document === 'undefined' ? location.href : document.currentScript && document.currentScript.src || document.baseURI).href); - var asset2b = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href) : new URL('assets/asset-52cbd095', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset2b = (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-52cbd095').href : new URL('assets/asset-52cbd095', typeof document === 'undefined' ? location.href : document.currentScript && document.currentScript.src || document.baseURI).href); - var asset99a = (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-c568a840').href) : new URL('assets/asset-c568a840', document.currentScript && document.currentScript.src || document.baseURI).href); + var asset99a = (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/assets/asset-c568a840').href : new URL('assets/asset-c568a840', typeof document === 'undefined' ? location.href : document.currentScript && document.currentScript.src || document.baseURI).href); console.log(asset1a, asset1b, asset2a, asset2b, asset99a); diff --git a/test/form/samples/import-meta-url/_expected/umd.js b/test/form/samples/import-meta-url/_expected/umd.js index 899139e4632..2db6c13aa6b 100644 --- a/test/form/samples/import-meta-url/_expected/umd.js +++ b/test/form/samples/import-meta-url/_expected/umd.js @@ -11,6 +11,6 @@ } } - log((typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + log((typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : typeof document === 'undefined' ? location.href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); }))); diff --git a/test/form/samples/import-meta/_expected/umd.js b/test/form/samples/import-meta/_expected/umd.js index 4eff0410f2f..247618e5576 100644 --- a/test/form/samples/import-meta/_expected/umd.js +++ b/test/form/samples/import-meta/_expected/umd.js @@ -3,6 +3,6 @@ factory(); }((function () { 'use strict'; - console.log(({ url: (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); + console.log(({ url: (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : typeof document === 'undefined' ? location.href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); }))); diff --git a/test/form/samples/resolve-import-meta-url/_expected/umd.js b/test/form/samples/resolve-import-meta-url/_expected/umd.js index 5784f0e2ce4..c05449667f7 100644 --- a/test/form/samples/resolve-import-meta-url/_expected/umd.js +++ b/test/form/samples/resolve-import-meta-url/_expected/umd.js @@ -7,9 +7,9 @@ console.log('resolved'); console.log('resolved'); - console.log((typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); + console.log((typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : typeof document === 'undefined' ? location.href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href))); console.log(undefined); - console.log(({ url: (typeof document === 'undefined' ? (typeof location !== 'undefined' ? location.href : new (require('u' + 'rl').URL)('file:' + __filename).href) : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); + console.log(({ url: (typeof document === 'undefined' && typeof location === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : typeof document === 'undefined' ? location.href : (document.currentScript && document.currentScript.src || new URL('umd.js', document.baseURI).href)) })); console.log('url=umd.js:resolve-import-meta-url/main.js'); console.log('privateProp=umd.js:resolve-import-meta-url/main.js');