Skip to content

Commit

Permalink
Refine worker test
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed Apr 19, 2019
1 parent 190be24 commit 3a0201d
Show file tree
Hide file tree
Showing 25 changed files with 132 additions and 62 deletions.
1 change: 0 additions & 1 deletion src/utils/pluginDriver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import { NameCollection } from './reservedNames';

type Args<T> = T extends (...args: infer K) => any ? K : never;

// TODO Lukas include defaultPlugin type
export interface PluginDriver {
emitAsset: EmitAsset;
hasLoadersOrTransforms: boolean;
Expand Down
31 changes: 22 additions & 9 deletions test/chunking-form/samples/emit-entry-worker/_config.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
let metaId;
let workerId;
let proxyId;

// TODO Lukas can we load requirejs via renderChunk?
// importScripts('../../../../../../node_modules/requirejs/require.js');
// requirejs([], function () { ...
// also test shared modules
module.exports = {
description: 'allows adding additional entry points',
options: {
Expand All @@ -14,18 +11,34 @@ module.exports = {
plugins: {
load(id) {
if (id === 'merged' || id === 'nested') {
if (!metaId) {
metaId = this.emitEntryChunk('worker');
if (!workerId) {
workerId = this.emitEntryChunk('worker');
proxyId = this.emitEntryChunk('worker-proxy');
}
return `
export const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker(import.meta.ROLLUP_CHUNK_URL_${metaId}, {type: 'module'});
const worker = new Worker(import.meta.ROLLUP_CHUNK_URL_${proxyId});
worker.onmessage = resolve;
});`;
}
if (id === 'worker-proxy') {
return `PLACEHOLDER(import.meta.ROLLUP_CHUNK_URL_${workerId})`;
}
},
renderChunk(code, chunk, options) {
if (chunk.facadeModuleId === 'worker-proxy') {
if (options.format === 'system') {
return `importScripts('../../../../../../node_modules/systemjs/dist/system.js');
System.import('./${this.getChunkFileName(workerId)}');`;
}
if (options.format === 'amd') {
return `importScripts('../../../../../../node_modules/requirejs/require.js');
requirejs(['./${this.getChunkFileName(workerId)}']);`;
}
}
},
resolveId(id) {
if (id === 'merged' || id === 'nested') {
if (id === 'merged' || id === 'nested' || id === 'worker-proxy') {
return id;
}
return null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
define(['module', 'exports'], function (module, exports) { 'use strict';
define(['exports'], function (exports) { 'use strict';

const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker(new URL(module.uri + '/../../worker.js', document.baseURI).href, {type: 'module'});
worker.onmessage = resolve;
});
const shared = 'shared';

exports.getWorkerMessage = getWorkerMessage;
exports.shared = shared;

});
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
define(['module', 'exports'], function (module, exports) { 'use strict';

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

exports.getWorkerMessage = getWorkerMessage;

});
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
define(['module', 'require'], function (module, require) { 'use strict';
define(['module', 'require', './chunks/chunk.js'], function (module, require, __chunk_1) { 'use strict';

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

getWorkerMessage().then(message => document.write(`<h1>1: ${message.data}</h1>`));
document.body.innerHTML += `<h1>main: ${__chunk_1.shared}</h1>`;
getWorkerMessage().then(message => (document.body.innerHTML += `<h1>1: ${message.data}</h1>`));

new Promise(function (resolve, reject) { require(['./chunks/chunk.js'], resolve, reject) })
new Promise(function (resolve, reject) { require(['./chunks/chunk2.js'], resolve, reject) })
.then(result => result.getWorkerMessage())
.then(message => document.write(`<h1>2: ${message.data}</h1>`));
.then(message => (document.body.innerHTML += `<h1>2: ${message.data}</h1>`));

});
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
importScripts('../../../../../../node_modules/requirejs/require.js');
requirejs(['./worker.js']);
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
define(function () { 'use strict';
define(['./chunks/chunk.js'], function (__chunk_1) { 'use strict';

postMessage('from worker');
postMessage(`from worker: ${__chunk_1.shared}`);

});
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
'use strict';

const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/../worker.js').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../../worker.js').href), {type: 'module'});
worker.onmessage = resolve;
});
const shared = 'shared';

exports.getWorkerMessage = getWorkerMessage;
exports.shared = shared;
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
'use strict';

const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/../worker-proxy.js').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../../worker-proxy.js').href));
worker.onmessage = resolve;
});

exports.getWorkerMessage = getWorkerMessage;
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
'use strict';

var __chunk_1 = require('./chunks/chunk.js');

const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/worker.js').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../worker.js').href), {type: 'module'});
const worker = new Worker((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/worker-proxy.js').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../worker-proxy.js').href));
worker.onmessage = resolve;
});

getWorkerMessage().then(message => document.write(`<h1>1: ${message.data}</h1>`));
document.body.innerHTML += `<h1>main: ${__chunk_1.shared}</h1>`;
getWorkerMessage().then(message => (document.body.innerHTML += `<h1>1: ${message.data}</h1>`));

Promise.resolve(require('./chunks/chunk.js'))
Promise.resolve(require('./chunks/chunk2.js'))
.then(result => result.getWorkerMessage())
.then(message => document.write(`<h1>2: ${message.data}</h1>`));
.then(message => (document.body.innerHTML += `<h1>2: ${message.data}</h1>`));
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
'use strict';

PLACEHOLDER((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __dirname + '/worker.js').href : new URL((document.currentScript && document.currentScript.src || document.baseURI) + '/../worker.js').href));
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict';

postMessage('from worker');
var __chunk_1 = require('./chunks/chunk.js');

postMessage(`from worker: ${__chunk_1.shared}`);
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker(new URL('../worker.js', import.meta.url).href, {type: 'module'});
worker.onmessage = resolve;
});
const shared = 'shared';

export { getWorkerMessage };
export { shared as a };
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker(new URL('../worker-proxy.js', import.meta.url).href);
worker.onmessage = resolve;
});

export { getWorkerMessage };
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { a as shared } from './chunks/chunk.js';

const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker(new URL('worker.js', import.meta.url).href, {type: 'module'});
const worker = new Worker(new URL('worker-proxy.js', import.meta.url).href);
worker.onmessage = resolve;
});

getWorkerMessage().then(message => document.write(`<h1>1: ${message.data}</h1>`));
document.body.innerHTML += `<h1>main: ${shared}</h1>`;
getWorkerMessage().then(message => (document.body.innerHTML += `<h1>1: ${message.data}</h1>`));

import('./chunks/chunk.js')
import('./chunks/chunk2.js')
.then(result => result.getWorkerMessage())
.then(message => document.write(`<h1>2: ${message.data}</h1>`));
.then(message => (document.body.innerHTML += `<h1>2: ${message.data}</h1>`));
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PLACEHOLDER(new URL('worker.js', import.meta.url).href);
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
postMessage('from worker');
import { a as shared } from './chunks/chunk.js';

postMessage(`from worker: ${shared}`);
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
System.register([], function (exports, module) {
'use strict';
return {
execute: function () {
'use strict';
return {
execute: function () {

const getWorkerMessage = exports('getWorkerMessage', () => new Promise(resolve => {
const worker = new Worker(new URL('../worker.js', module.meta.url).href, {type: 'module'});
worker.onmessage = resolve;
}));
const shared = exports('a', 'shared');

}
};
}
};
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
System.register([], function (exports, module) {
'use strict';
return {
execute: function () {

const getWorkerMessage = exports('getWorkerMessage', () => new Promise(resolve => {
const worker = new Worker(new URL('../worker-proxy.js', module.meta.url).href);
worker.onmessage = resolve;
}));

}
};
});
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
System.register([], function (exports, module) {
System.register(['./chunks/chunk.js'], function (exports, module) {
'use strict';
var shared;
return {
setters: [function (module) {
shared = module.a;
}],
execute: function () {

const getWorkerMessage = () => new Promise(resolve => {
const worker = new Worker(new URL('worker.js', module.meta.url).href, {type: 'module'});
const worker = new Worker(new URL('worker-proxy.js', module.meta.url).href);
worker.onmessage = resolve;
});

getWorkerMessage().then(message => document.write(`<h1>1: ${message.data}</h1>`));
document.body.innerHTML += `<h1>main: ${shared}</h1>`;
getWorkerMessage().then(message => (document.body.innerHTML += `<h1>1: ${message.data}</h1>`));

module.import('./chunks/chunk.js')
module.import('./chunks/chunk2.js')
.then(result => result.getWorkerMessage())
.then(message => document.write(`<h1>2: ${message.data}</h1>`));
.then(message => (document.body.innerHTML += `<h1>2: ${message.data}</h1>`));

}
};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
importScripts('../../../../../../node_modules/systemjs/dist/system.js');
System.import('./worker.js');
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
System.register([], function (exports, module) {
System.register(['./chunks/chunk.js'], function (exports, module) {
'use strict';
var shared;
return {
setters: [function (module) {
shared = module.a;
}],
execute: function () {

postMessage('from worker');
postMessage(`from worker: ${shared}`);

}
};
Expand Down
6 changes: 4 additions & 2 deletions test/chunking-form/samples/emit-entry-worker/main.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { getWorkerMessage } from 'merged';
import { shared } from './shared';

getWorkerMessage().then(message => document.write(`<h1>1: ${message.data}</h1>`));
document.body.innerHTML += `<h1>main: ${shared}</h1>`;
getWorkerMessage().then(message => (document.body.innerHTML += `<h1>1: ${message.data}</h1>`));

import('nested')
.then(result => result.getWorkerMessage())
.then(message => document.write(`<h1>2: ${message.data}</h1>`));
.then(message => (document.body.innerHTML += `<h1>2: ${message.data}</h1>`));
1 change: 1 addition & 0 deletions test/chunking-form/samples/emit-entry-worker/shared.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const shared = 'shared';
4 changes: 3 additions & 1 deletion test/chunking-form/samples/emit-entry-worker/worker.js
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
postMessage('from worker');
import {shared} from './shared';

postMessage(`from worker: ${shared}`);

0 comments on commit 3a0201d

Please sign in to comment.