From 2bc6ed9ab63a35533c1637f558f64253defd789b Mon Sep 17 00:00:00 2001 From: Fathy Boundjadj Date: Sun, 8 Jul 2018 01:31:32 +0200 Subject: [PATCH] Fix generating names when outside of the entry directory (#1206) --- src/Bundle.js | 2 +- test/integration/service-worker/a/index.js | 3 ++ .../service-worker/b/nested/index.js | 1 + .../{worker.js => b/nested/worker-nested.js} | 0 .../service-worker/b/worker-outside.js | 1 + test/integration/service-worker/index.js | 1 - test/javascript.js | 30 +++++++++++++++++++ 7 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 test/integration/service-worker/a/index.js create mode 100644 test/integration/service-worker/b/nested/index.js rename test/integration/service-worker/{worker.js => b/nested/worker-nested.js} (100%) create mode 100644 test/integration/service-worker/b/worker-outside.js delete mode 100644 test/integration/service-worker/index.js diff --git a/src/Bundle.js b/src/Bundle.js index 0208c98c15f..e4dbf718776 100644 --- a/src/Bundle.js +++ b/src/Bundle.js @@ -142,7 +142,7 @@ class Bundle { Path.dirname(entryAsset.name) ), name + ext - ); + ).replace(/\.\.(\/|\\)/g, '__$1'); } // If this is an index file, use the parent directory name instead diff --git a/test/integration/service-worker/a/index.js b/test/integration/service-worker/a/index.js new file mode 100644 index 00000000000..f585ad4c620 --- /dev/null +++ b/test/integration/service-worker/a/index.js @@ -0,0 +1,3 @@ +import '../b/nested' + +navigator.serviceWorker.register('../b/worker-outside.js'); diff --git a/test/integration/service-worker/b/nested/index.js b/test/integration/service-worker/b/nested/index.js new file mode 100644 index 00000000000..9aafb5de246 --- /dev/null +++ b/test/integration/service-worker/b/nested/index.js @@ -0,0 +1 @@ +navigator.serviceWorker.register('worker-nested.js', { scope: './' }); diff --git a/test/integration/service-worker/worker.js b/test/integration/service-worker/b/nested/worker-nested.js similarity index 100% rename from test/integration/service-worker/worker.js rename to test/integration/service-worker/b/nested/worker-nested.js diff --git a/test/integration/service-worker/b/worker-outside.js b/test/integration/service-worker/b/worker-outside.js new file mode 100644 index 00000000000..d0965140fe7 --- /dev/null +++ b/test/integration/service-worker/b/worker-outside.js @@ -0,0 +1 @@ +self.addEventListener('message', () => {}); diff --git a/test/integration/service-worker/index.js b/test/integration/service-worker/index.js deleted file mode 100644 index a06a9c931a8..00000000000 --- a/test/integration/service-worker/index.js +++ /dev/null @@ -1 +0,0 @@ -navigator.serviceWorker.register('worker.js', { scope: './' }); diff --git a/test/javascript.js b/test/javascript.js index fdf19034966..65a2fb36bce 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -220,6 +220,36 @@ describe('javascript', function() { }); }); + it('should support bundling service-workers', async function() { + let b = await bundle(__dirname + '/integration/service-worker/a/index.js'); + + assertBundleTree(b, { + name: 'index.js', + assets: ['index.js', 'index.js'], + childBundles: [ + { + type: 'map' + }, + { + assets: ['worker-nested.js'], + childBundles: [ + { + type: 'map' + } + ] + }, + { + assets: ['worker-outside.js'], + childBundles: [ + { + type: 'map' + } + ] + } + ] + }); + }); + it('should dynamic import files which import raw files', async function() { let b = await bundle( __dirname + '/integration/dynamic-references-raw/index.js'