Skip to content

Commit c6ddc42

Browse files
authored
fix Data URLs and add Data URL tests
fix Data URLs and add Data URL tests
1 parent fb8f209 commit c6ddc42

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

src/node/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ function workerThread() {
176176

177177
const isDataUrl = /^data:/.test(mod);
178178
if (type === 'module') {
179-
import(URL.pathToFileURL(mod))
179+
import(isDataUrl ? mod : URL.pathToFileURL(mod))
180180
.catch(err => {
181181
if (isDataUrl && err.message === 'Not supported') {
182182
console.warn('Worker(): Importing data: URLs requires Node 12.10+. Falling back to classic worker.');

test/index.test.js

+20-4
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import Worker from '../dist/node/index.cjs';
1919

2020
let worker;
2121

22-
function createModuleWorker(url) {
23-
const worker = new Worker(url, { type: 'module' });
22+
function createModuleWorker(url, opts) {
23+
const worker = new Worker(url, opts || { type: 'module' });
2424
worker.events = [];
2525
worker.addEventListener('message', e => {
2626
worker.events.push(e);
@@ -36,7 +36,7 @@ test.after.always(t => {
3636

3737
test.serial('instantiation', async t => {
3838
worker = createModuleWorker('./test/fixtures/worker.mjs');
39-
await sleep(500);
39+
await sleep(50);
4040
t.is(worker.events.length, 1, 'should have received a message event');
4141
t.is(worker.events[0].data, 42);
4242
});
@@ -49,7 +49,7 @@ test.serial('postMessage', async t => {
4949
worker.postMessage(msg);
5050
const timestamp = Date.now();
5151

52-
await sleep(500);
52+
await sleep(50);
5353

5454
t.is(worker.events.length, 2, 'should have received two message responses');
5555

@@ -75,3 +75,19 @@ test.serial('close', async t => {
7575
});
7676
t.is(closed, true, 'should have closed itself');
7777
});
78+
79+
test.serial('data URL - module', async t => {
80+
t.teardown(() => worker && worker.terminate());
81+
const worker = createModuleWorker('data:application/javascript,postMessage(42)');
82+
await sleep(50);
83+
t.is(worker.events.length, 1, 'should have received a message event');
84+
t.is(worker.events[0].data, 42);
85+
});
86+
87+
test.serial('data URL - classic', async t => {
88+
t.teardown(() => worker && worker.terminate());
89+
const worker = createModuleWorker('data:application/javascript,postMessage(42)', {});
90+
await sleep(50);
91+
t.is(worker.events.length, 1, 'should have received a message event');
92+
t.is(worker.events[0].data, 42);
93+
});

0 commit comments

Comments
 (0)