From 8e2d73e068e52958f07f0eee93c59a4431aa26e8 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Fri, 4 Jan 2019 14:33:04 +0100 Subject: [PATCH] Do not fail when generating hashes for tree-shaken dynamic imports --- src/Chunk.ts | 5 +++-- .../samples/tree-shaken-dynamic-hash/_config.js | 10 ++++++++++ .../tree-shaken-dynamic-hash/_expected/amd/5654511d.js | 7 +++++++ .../tree-shaken-dynamic-hash/_expected/cjs/69b0b1f3.js | 5 +++++ .../tree-shaken-dynamic-hash/_expected/es/21d179d7.js | 3 +++ .../_expected/system/8714c598.js | 10 ++++++++++ .../samples/tree-shaken-dynamic-hash/foo.js | 1 + .../samples/tree-shaken-dynamic-hash/main.js | 3 +++ 8 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 test/chunking-form/samples/tree-shaken-dynamic-hash/_config.js create mode 100644 test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/amd/5654511d.js create mode 100644 test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/cjs/69b0b1f3.js create mode 100644 test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/es/21d179d7.js create mode 100644 test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/system/8714c598.js create mode 100644 test/chunking-form/samples/tree-shaken-dynamic-hash/foo.js create mode 100644 test/chunking-form/samples/tree-shaken-dynamic-hash/main.js diff --git a/src/Chunk.ts b/src/Chunk.ts index 253c99bd903..a1419590e0c 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -132,7 +132,7 @@ export default class Chunk { } = undefined; private renderedHash: string = undefined; private renderedModuleSources: MagicString[] = undefined; - private renderedSource: MagicStringBundle = undefined; + private renderedSource: MagicStringBundle | null = null; private renderedSourceLength: number = undefined; constructor(graph: Graph, orderedModules: Module[], inlineDynamicImports: boolean) { @@ -662,8 +662,9 @@ export default class Chunk { return exports; } - getRenderedHash() { + getRenderedHash(): string { if (this.renderedHash) return this.renderedHash; + if (!this.renderedSource) return ''; const hash = sha256(); hash.update(this.renderedSource.toString()); return (this.renderedHash = hash.digest('hex')); diff --git a/test/chunking-form/samples/tree-shaken-dynamic-hash/_config.js b/test/chunking-form/samples/tree-shaken-dynamic-hash/_config.js new file mode 100644 index 00000000000..fde4c170eb6 --- /dev/null +++ b/test/chunking-form/samples/tree-shaken-dynamic-hash/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: + 'Does not fail when calculating the hash of a file containing a tree-shaken dynamic import', + options: { + input: ['main.js'], + output: { + entryFileNames: '[hash].js' + } + } +}; diff --git a/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/amd/5654511d.js b/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/amd/5654511d.js new file mode 100644 index 00000000000..6cd703051b6 --- /dev/null +++ b/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/amd/5654511d.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var main = null; + + return main; + +}); diff --git a/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/cjs/69b0b1f3.js b/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/cjs/69b0b1f3.js new file mode 100644 index 00000000000..17727e7adc9 --- /dev/null +++ b/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/cjs/69b0b1f3.js @@ -0,0 +1,5 @@ +'use strict'; + +var main = null; + +module.exports = main; diff --git a/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/es/21d179d7.js b/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/es/21d179d7.js new file mode 100644 index 00000000000..ed075f84a16 --- /dev/null +++ b/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/es/21d179d7.js @@ -0,0 +1,3 @@ +var main = null; + +export default main; diff --git a/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/system/8714c598.js b/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/system/8714c598.js new file mode 100644 index 00000000000..920769af32e --- /dev/null +++ b/test/chunking-form/samples/tree-shaken-dynamic-hash/_expected/system/8714c598.js @@ -0,0 +1,10 @@ +System.register([], function (exports, module) { + 'use strict'; + return { + execute: function () { + + var main = exports('default', null); + + } + }; +}); diff --git a/test/chunking-form/samples/tree-shaken-dynamic-hash/foo.js b/test/chunking-form/samples/tree-shaken-dynamic-hash/foo.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/chunking-form/samples/tree-shaken-dynamic-hash/foo.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/chunking-form/samples/tree-shaken-dynamic-hash/main.js b/test/chunking-form/samples/tree-shaken-dynamic-hash/main.js new file mode 100644 index 00000000000..b813b9414db --- /dev/null +++ b/test/chunking-form/samples/tree-shaken-dynamic-hash/main.js @@ -0,0 +1,3 @@ +export default false + ? import('./foo.js') + : null;