Skip to content

Commit

Permalink
Use require.toUrl instead of concatenating strings to resolve files f…
Browse files Browse the repository at this point in the history
…or AMD
  • Loading branch information
lukastaegert committed May 31, 2019
1 parent 89a3024 commit bae5b25
Show file tree
Hide file tree
Showing 19 changed files with 31 additions and 33 deletions.
6 changes: 2 additions & 4 deletions src/utils/defaultPlugin.ts
Expand Up @@ -11,8 +11,6 @@ export function getRollupDefaultPlugin(preserveSymlinks: boolean): Plugin {
return readFileSync(id, 'utf-8');
},
resolveFileUrl({ relativePath, format }) {
// TODO consider using improved AMD relative imports:
// https://requirejs.org/docs/api.html#modulenotes-urls
return relativeUrlMechanisms[format](relativePath);
},
resolveImportMeta(prop, { chunkId, format }) {
Expand Down Expand Up @@ -114,7 +112,7 @@ const getRelativeUrlFromDocument = (relativePath: string) =>
);

const relativeUrlMechanisms: Record<string, (relativePath: string) => string> = {
amd: relativePath => getResolveUrl(`module.uri + '/../${relativePath}', document.baseURI`),
amd: relativePath => getResolveUrl(`require.toUrl('${relativePath}'), document.baseURI`),
cjs: relativePath =>
`(typeof document === 'undefined' ? ${getResolveUrl(
`'file:' + __dirname + '/${relativePath}'`,
Expand All @@ -139,7 +137,7 @@ export const accessedMetaUrlGlobals = {
};

export const accessedFileUrlGlobals = {
amd: ['document', 'module', 'URL'],
amd: ['document', 'require', 'URL'],
cjs: ['document', 'require', 'URL'],
iife: ['document', 'URL'],
system: ['module', 'URL'],
Expand Down
@@ -1,6 +1,6 @@
define(['module', 'require', './nested/chunk'], function (module, require, __chunk_1) { 'use strict';
define(['require', './nested/chunk'], function (require, __chunk_1) { 'use strict';

var logo = new URL(module.uri + '/../assets/logo1-25253976.svg', document.baseURI).href;
var logo = new URL(require.toUrl('assets/logo1-25253976.svg'), document.baseURI).href;

__chunk_1.showImage(logo);
new Promise(function (resolve, reject) { require(['./nested/chunk2'], resolve, reject) });
Expand Down
@@ -1,6 +1,6 @@
define(['module', './chunk'], function (module, __chunk_1) { 'use strict';
define(['require', './chunk'], function (require, __chunk_1) { 'use strict';

var logo = new URL(module.uri + '/../../assets/logo2-25253976.svg', document.baseURI).href;
var logo = new URL(require.toUrl('../assets/logo2-25253976.svg'), document.baseURI).href;

__chunk_1.showImage(logo);

Expand Down
Expand Up @@ -3,4 +3,4 @@ System.register([],function(exports){'use strict';return{execute:function(){expo
}function fn$1 () {
fn();
console.log('dep2 fn');
}}}});
}}}});
Expand Up @@ -5,4 +5,4 @@ System.register(['./generated-chunk.js'],function(exports){'use strict';var fn$1
fn();
fn$1();
}
} exports('default', Main1);}}});
} exports('default', Main1);}}});
Expand Up @@ -9,4 +9,4 @@ System.register(['./generated-chunk.js','external'],function(exports){'use stric
fn$1();
fn$3();
}
} exports('default', Main2);}}});
} exports('default', Main2);}}});
@@ -1,8 +1,8 @@
define(['module', 'require'], function (module, require) { 'use strict';
define(['require'], function (require) { 'use strict';

var asset2 = 'resolved';

var asset3 = new URL(module.uri + '/../assets/asset-unresolved-9548436d.txt', document.baseURI).href;
var asset3 = new URL(require.toUrl('assets/asset-unresolved-9548436d.txt'), document.baseURI).href;

new Promise(function (resolve, reject) { require(['./nested/chunk'], resolve, reject) }).then(result => console.log(result, asset2, asset3));

Expand Down
@@ -1,4 +1,4 @@
define(['module', 'exports'], function (module, exports) { 'use strict';
define(['require', 'exports'], function (require, exports) { 'use strict';

var solved = 'nested/chunk.js:solved:assets/asset-solved-9b321da2.txt:../assets/asset-solved-9b321da2.txt';

Expand Down
@@ -1,10 +1,10 @@
define(['module', 'require'], function (module, require) { 'use strict';
define(['require'], function (require) { 'use strict';

const asset = 'resolved';
const chunk = 'resolved';

const asset$1 = new URL(module.uri + '/../assets/asset-unresolved-9548436d.txt', document.baseURI).href;
const chunk$1 = new URL(module.uri + '/../nested/chunk.js', document.baseURI).href;
const asset$1 = new URL(require.toUrl('assets/asset-unresolved-9548436d.txt'), document.baseURI).href;
const chunk$1 = new URL(require.toUrl('nested/chunk.js'), document.baseURI).href;

new Promise(function (resolve, reject) { require(['./nested/chunk2'], resolve, reject) }).then(result => console.log(result, chunk, chunk$1, asset, asset$1));

Expand Down
@@ -1,4 +1,4 @@
define(['module', 'exports'], function (module, exports) { 'use strict';
define(['require', 'exports'], function (require, exports) { 'use strict';

const asset = 'chunkId=nested/chunk2.js:moduleId=solved:fileName=assets/asset-solved-9b321da2.txt:format=amd:relativePath=../assets/asset-solved-9b321da2.txt:assetReferenceId=6296c678:chunkReferenceId=null'
const chunk = 'chunkId=nested/chunk2.js:moduleId=solved:fileName=nested/chunk.js:format=amd:relativePath=chunk.js:assetReferenceId=null:chunkReferenceId=f6c25ae7'
Expand Down
@@ -1,7 +1,7 @@
define(['module', 'exports'], function (module, exports) { 'use strict';
define(['require', 'exports'], function (require, exports) { 'use strict';

const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker(new URL(module.uri + '/../worker-proxy.js', document.baseURI).href);
const worker = new Worker(new URL(require.toUrl('worker-proxy.js'), document.baseURI).href);
worker.onmessage = resolve;
});

Expand Down
@@ -1,7 +1,7 @@
define(['module', 'require', './chunks/chunk'], function (module, require, __chunk_1) { 'use strict';
define(['require', './chunks/chunk'], function (require, __chunk_1) { 'use strict';

const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker(new URL(module.uri + '/../chunks/worker-proxy.js', document.baseURI).href);
const worker = new Worker(new URL(require.toUrl('chunks/worker-proxy.js'), document.baseURI).href);
worker.onmessage = resolve;
});

Expand Down
@@ -1,6 +1,6 @@
define(['module', './chunks/chunk'], function (module, __chunk_1) { 'use strict';
define(['require', './chunks/chunk'], function (require, __chunk_1) { 'use strict';

CSS.paintWorklet.addModule(new URL(module.uri + '/../chunks/worklet.js', document.baseURI).href);
CSS.paintWorklet.addModule(new URL(require.toUrl('chunks/worklet.js'), document.baseURI).href);

document.body.innerHTML += `<h1 style="background-image: paint(vertical-lines);">color: ${__chunk_1.color}, size: ${__chunk_1.size}</h1>`;

Expand Down
@@ -1,4 +1,4 @@
System.register([], function (exports, module) {
System.register([], function (exports) {
'use strict';
return {
execute: function () {
Expand Down
@@ -1,4 +1,4 @@
System.register(['./generated-chunk.js'], function (exports, module) {
System.register(['./generated-chunk.js'], function (exports) {
'use strict';
return {
setters: [function (module) {
Expand Down
@@ -1,4 +1,4 @@
System.register(['./generated-chunk.js'], function (exports, module) {
System.register(['./generated-chunk.js'], function (exports) {
'use strict';
return {
setters: [function (module) {
Expand Down
4 changes: 2 additions & 2 deletions test/form/samples/asset-emission/_expected/amd.js
@@ -1,6 +1,6 @@
define(['module'], function (module) { 'use strict';
define(['require'], function (require) { 'use strict';

var logo = new URL(module.uri + '/../assets/logo-25253976.svg', document.baseURI).href;
var logo = new URL(require.toUrl('assets/logo-25253976.svg'), document.baseURI).href;

function showImage(url) {
console.log(url);
Expand Down
4 changes: 2 additions & 2 deletions test/form/samples/configure-asset-url/_expected/amd.js
@@ -1,10 +1,10 @@
define(['module'], function (module) { 'use strict';
define(['require'], function (require) { 'use strict';

var asset1 = 'amd.js:solved:assets/asset-solved-9b321da2.txt:assets/asset-solved-9b321da2.txt';

var asset2 = 'resolved';

var asset3 = new URL(module.uri + '/../assets/asset-unresolved-9548436d.txt', document.baseURI).href;
var asset3 = new URL(require.toUrl('assets/asset-unresolved-9548436d.txt'), document.baseURI).href;

console.log(asset1, asset2, asset3);

Expand Down
4 changes: 2 additions & 2 deletions test/form/samples/configure-file-url/_expected/amd.js
@@ -1,10 +1,10 @@
define(['module'], function (module) { 'use strict';
define(['require'], function (require) { 'use strict';

var asset1 = 'chunkId=amd.js:moduleId=solved:fileName=assets/asset-solved-9b321da2.txt:format=amd:relativePath=assets/asset-solved-9b321da2.txt:assetReferenceId=6296c678:chunkReferenceId=null';

var asset2 = 'resolved';

var asset3 = new URL(module.uri + '/../assets/asset-unresolved-9548436d.txt', document.baseURI).href;
var asset3 = new URL(require.toUrl('assets/asset-unresolved-9548436d.txt'), document.baseURI).href;

console.log(asset1, asset2, asset3);

Expand Down

0 comments on commit bae5b25

Please sign in to comment.