Skip to content

Commit c2566d3

Browse files
committed
add import option to enable preload
1 parent 85f9565 commit c2566d3

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"author": "Jason Miller <[email protected]> (http://jasonformat.com)",
3434
"license": "MIT",
3535
"devDependencies": {
36-
"eslint": "^5.0.0",
36+
"eslint": "^5.16.0",
3737
"eslint-config-developit": "^1.1.1",
3838
"karmatic": "^1.2.0",
3939
"microbundle": "^0.6.0",

src/index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,16 @@ loader.pitch = function(request) {
122122
delete this._compilation.assets[worker.file];
123123
}
124124

125+
let workerUrl = worker.url;
126+
if (options.import) {
127+
workerUrl = `"data:,importScripts('"+location.origin+${workerUrl}+"')"`;
128+
}
129+
125130
return cb(null, `
126131
var addMethods = require(${loaderUtils.stringifyRequest(this, path.resolve(__dirname, 'rpc-wrapper.js'))})
127132
var methods = ${JSON.stringify(exports)}
128133
module.exports = function() {
129-
var w = new Worker(${worker.url}, { name: ${JSON.stringify(filename)} })
134+
var w = new Worker(${workerUrl}, { name: ${JSON.stringify(filename)} })
130135
addMethods(w, methods)
131136
${ options.ready ? 'w.ready = new Promise(function(r) { w.addEventListener("ready", function(){ r(w) }) })' : '' }
132137
return w

test/src/index.test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import './other';
22
import Worker from 'workerize-loader?ready&name=test!./worker';
33
import InlineWorker from 'workerize-loader?ready&inline&name=test!./worker';
4+
import ImportWorker from 'workerize-loader?import!./worker';
45

56
describe('worker', () => {
67
let worker;
@@ -95,3 +96,21 @@ describe('async/await demo', () => {
9596
expect(elapsed).toBeLessThan(20);
9697
});
9798
});
99+
100+
describe('?import option', () => {
101+
let worker;
102+
103+
it('should be an instance of Worker', () => {
104+
worker = new ImportWorker();
105+
expect(worker).toEqual(jasmine.any(window.Worker));
106+
});
107+
108+
it('worker.foo()', async () => {
109+
expect(await worker.foo()).toBe(1);
110+
});
111+
112+
it('worker.bar()', async () => {
113+
let out = await worker.bar('a', 'b');
114+
expect(out).toEqual('a [bar:3] b');
115+
});
116+
});

0 commit comments

Comments
 (0)