Skip to content

Commit

Permalink
Only overwrite content when resolving import.meta properties (#2986)
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed Jul 9, 2019
1 parent e66d7be commit 893c725
Show file tree
Hide file tree
Showing 27 changed files with 122 additions and 38 deletions.
7 changes: 4 additions & 3 deletions src/ast/nodes/MetaProperty.ts
Expand Up @@ -100,7 +100,8 @@ export default class MetaProperty extends NodeBase {
code.overwrite(
(parent as MemberExpression).start,
(parent as MemberExpression).end,
replacement
replacement,
{ contentOnly: true }
);
return;
}
Expand All @@ -115,9 +116,9 @@ export default class MetaProperty extends NodeBase {
]);
if (typeof replacement === 'string') {
if (parent instanceof MemberExpression) {
code.overwrite(parent.start, parent.end, replacement);
code.overwrite(parent.start, parent.end, replacement, { contentOnly: true });
} else {
code.overwrite(this.start, this.end, replacement);
code.overwrite(this.start, this.end, replacement, { contentOnly: true });
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/ast/nodes/VariableDeclaration.ts
Expand Up @@ -89,7 +89,7 @@ export default class VariableDeclaration extends NodeBase {
private renderDeclarationEnd(
code: MagicString,
separatorString: string,
lastSeparatorPos: number,
lastSeparatorPos: number | null,
actualContentEnd: number,
renderedContentEnd: number,
addSemicolon: boolean,
Expand Down
@@ -1,7 +1,7 @@
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'
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';

exports.asset = asset;
exports.chunk = chunk;
Expand Down
@@ -1,7 +1,7 @@
'use strict';

const asset = 'chunkId=nested/chunk2.js:moduleId=solved:fileName=assets/asset-solved-9b321da2.txt:format=cjs:relativePath=../assets/asset-solved-9b321da2.txt:assetReferenceId=6296c678:chunkReferenceId=null'
const chunk = 'chunkId=nested/chunk2.js:moduleId=solved:fileName=nested/chunk.js:format=cjs:relativePath=chunk.js:assetReferenceId=null:chunkReferenceId=f6c25ae7'
const asset = 'chunkId=nested/chunk2.js:moduleId=solved:fileName=assets/asset-solved-9b321da2.txt:format=cjs:relativePath=../assets/asset-solved-9b321da2.txt:assetReferenceId=6296c678:chunkReferenceId=null';
const chunk = 'chunkId=nested/chunk2.js:moduleId=solved:fileName=nested/chunk.js:format=cjs:relativePath=chunk.js:assetReferenceId=null:chunkReferenceId=f6c25ae7';

exports.asset = asset;
exports.chunk = chunk;
@@ -1,4 +1,4 @@
const asset = 'chunkId=nested/chunk2.js:moduleId=solved:fileName=assets/asset-solved-9b321da2.txt:format=es:relativePath=../assets/asset-solved-9b321da2.txt:assetReferenceId=6296c678:chunkReferenceId=null'
const chunk = 'chunkId=nested/chunk2.js:moduleId=solved:fileName=nested/chunk.js:format=es:relativePath=chunk.js:assetReferenceId=null:chunkReferenceId=f6c25ae7'
const asset = 'chunkId=nested/chunk2.js:moduleId=solved:fileName=assets/asset-solved-9b321da2.txt:format=es:relativePath=../assets/asset-solved-9b321da2.txt:assetReferenceId=6296c678:chunkReferenceId=null';
const chunk = 'chunkId=nested/chunk2.js:moduleId=solved:fileName=nested/chunk.js:format=es:relativePath=chunk.js:assetReferenceId=null:chunkReferenceId=f6c25ae7';

export { asset, chunk };
Expand Up @@ -3,8 +3,8 @@ System.register([], function (exports, module) {
return {
execute: function () {

const asset = exports('asset', 'chunkId=nested/chunk2.js:moduleId=solved:fileName=assets/asset-solved-9b321da2.txt:format=system:relativePath=../assets/asset-solved-9b321da2.txt:assetReferenceId=6296c678:chunkReferenceId=null'
const chunk = exports('chunk', 'chunkId=nested/chunk2.js:moduleId=solved:fileName=nested/chunk.js:format=system:relativePath=chunk.js:assetReferenceId=null:chunkReferenceId=f6c25ae7'
const asset = exports('asset', 'chunkId=nested/chunk2.js:moduleId=solved:fileName=assets/asset-solved-9b321da2.txt:format=system:relativePath=../assets/asset-solved-9b321da2.txt:assetReferenceId=6296c678:chunkReferenceId=null');
const chunk = exports('chunk', 'chunkId=nested/chunk2.js:moduleId=solved:fileName=nested/chunk.js:format=system:relativePath=chunk.js:assetReferenceId=null:chunkReferenceId=f6c25ae7');

}
};
Expand Down
11 changes: 0 additions & 11 deletions test/form/samples/configure-import-meta-url/_expected/es.js

This file was deleted.

13 changes: 13 additions & 0 deletions test/form/samples/resolve-import-meta-url-export/_config.js
@@ -0,0 +1,13 @@
module.exports = {
description: 'correctly exports resolved import.meta.url',
options: {
plugins: [
{
resolveImportMeta(prop) {
return prop ? "'url'" : "'meta'";
}
}
],
output: { name: 'bundle' }
}
};
11 changes: 11 additions & 0 deletions test/form/samples/resolve-import-meta-url-export/_expected/amd.js
@@ -0,0 +1,11 @@
define(['module', 'exports'], function (module, exports) { 'use strict';

const url = 'url';
const meta = 'meta';

exports.meta = meta;
exports.url = url;

Object.defineProperty(exports, '__esModule', { value: true });

});
@@ -0,0 +1,9 @@
'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

const url = 'url';
const meta = 'meta';

exports.meta = meta;
exports.url = url;
@@ -0,0 +1,4 @@
const url = 'url';
const meta = 'meta';

export { meta, url };
12 changes: 12 additions & 0 deletions test/form/samples/resolve-import-meta-url-export/_expected/iife.js
@@ -0,0 +1,12 @@
var bundle = (function (exports) {
'use strict';

const url = 'url';
const meta = 'meta';

exports.meta = meta;
exports.url = url;

return exports;

}({}));
@@ -0,0 +1,11 @@
System.register('bundle', [], function (exports, module) {
'use strict';
return {
execute: function () {

const url = exports('url', 'url');
const meta = exports('meta', 'meta');

}
};
});
15 changes: 15 additions & 0 deletions test/form/samples/resolve-import-meta-url-export/_expected/umd.js
@@ -0,0 +1,15 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.bundle = {}));
}(this, function (exports) { 'use strict';

const url = 'url';
const meta = 'meta';

exports.meta = meta;
exports.url = url;

Object.defineProperty(exports, '__esModule', { value: true });

}));
2 changes: 2 additions & 0 deletions test/form/samples/resolve-import-meta-url-export/main.js
@@ -0,0 +1,2 @@
export const url = import.meta.url;
export const meta = import.meta;
Expand Up @@ -8,8 +8,8 @@ define(['module'], function (module) { 'use strict';
console.log(undefined);
console.log(({ url: new URL(module.uri, document.baseURI).href }));

console.log('url=amd.js:configure-import-meta-url/main.js');
console.log('privateProp=amd.js:configure-import-meta-url/main.js');
console.log('null=amd.js:configure-import-meta-url/main.js');
console.log('url=amd.js:resolve-import-meta-url/main.js');
console.log('privateProp=amd.js:resolve-import-meta-url/main.js');
console.log('null=amd.js:resolve-import-meta-url/main.js');

});
Expand Up @@ -8,6 +8,6 @@ console.log((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('fi
console.log(undefined);
console.log(({ url: (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('cjs.js', document.baseURI).href)) }));

console.log('url=cjs.js:configure-import-meta-url/main.js');
console.log('privateProp=cjs.js:configure-import-meta-url/main.js');
console.log('null=cjs.js:configure-import-meta-url/main.js');
console.log('url=cjs.js:resolve-import-meta-url/main.js');
console.log('privateProp=cjs.js:resolve-import-meta-url/main.js');
console.log('null=cjs.js:resolve-import-meta-url/main.js');
11 changes: 11 additions & 0 deletions test/form/samples/resolve-import-meta-url/_expected/es.js
@@ -0,0 +1,11 @@
console.log('resolved');
console.log('resolved');
console.log('resolved');

console.log(import.meta.url);
console.log(import.meta.privateProp);
console.log(import.meta);

console.log('url=es.js:resolve-import-meta-url/main.js');
console.log('privateProp=es.js:resolve-import-meta-url/main.js');
console.log('null=es.js:resolve-import-meta-url/main.js');
Expand Up @@ -9,8 +9,8 @@
console.log(undefined);
console.log(({ url: (document.currentScript && document.currentScript.src || new URL('iife.js', document.baseURI).href) }));

console.log('url=iife.js:configure-import-meta-url/main.js');
console.log('privateProp=iife.js:configure-import-meta-url/main.js');
console.log('null=iife.js:configure-import-meta-url/main.js');
console.log('url=iife.js:resolve-import-meta-url/main.js');
console.log('privateProp=iife.js:resolve-import-meta-url/main.js');
console.log('null=iife.js:resolve-import-meta-url/main.js');

}());
Expand Up @@ -11,9 +11,9 @@ System.register([], function (exports, module) {
console.log(module.meta.privateProp);
console.log(module.meta);

console.log('url=system.js:configure-import-meta-url/main.js');
console.log('privateProp=system.js:configure-import-meta-url/main.js');
console.log('null=system.js:configure-import-meta-url/main.js');
console.log('url=system.js:resolve-import-meta-url/main.js');
console.log('privateProp=system.js:resolve-import-meta-url/main.js');
console.log('null=system.js:resolve-import-meta-url/main.js');

}
};
Expand Down
Expand Up @@ -11,8 +11,8 @@
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=umd.js:configure-import-meta-url/main.js');
console.log('privateProp=umd.js:configure-import-meta-url/main.js');
console.log('null=umd.js:configure-import-meta-url/main.js');
console.log('url=umd.js:resolve-import-meta-url/main.js');
console.log('privateProp=umd.js:resolve-import-meta-url/main.js');
console.log('null=umd.js:resolve-import-meta-url/main.js');

}));
3 changes: 3 additions & 0 deletions test/form/samples/resolve-import-meta-url/resolved.js
@@ -0,0 +1,3 @@
console.log(import.meta.url);
console.log(import.meta.privateProp);
console.log(import.meta);
3 changes: 3 additions & 0 deletions test/form/samples/resolve-import-meta-url/unresolved.js
@@ -0,0 +1,3 @@
console.log(import.meta.url);
console.log(import.meta.privateProp);
console.log(import.meta);

0 comments on commit 893c725

Please sign in to comment.