Skip to content

Commit

Permalink
Fix workers with old targets (#6579)
Browse files Browse the repository at this point in the history
  • Loading branch information
devongovett committed Jul 11, 2021
1 parent a46b68d commit 89eebc0
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 9 deletions.
4 changes: 4 additions & 0 deletions packages/core/core/src/public/Environment.js
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,10 @@ export default class Environment implements IEnvironment {
}

let matchedBrowsers = browserslist(browsers);
if (matchedBrowsers.length === 0) {
return false;
}

let minBrowsers = getExcludedBrowsers(minVersions);
let withoutMinBrowsers = browserslist([...browsers, ...minBrowsers]);
return matchedBrowsers.length === withoutMinBrowsers.length;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
let worker = new Worker(new URL('worker.js', import.meta.url), {type: 'module'});
export default new Promise(resolve => {
worker.addEventListener('message', resolve);
});
worker.addEventListener('message', output);
51 changes: 45 additions & 6 deletions packages/core/integration-tests/test/javascript.js
Original file line number Diff line number Diff line change
Expand Up @@ -798,13 +798,48 @@ describe('javascript', function() {
assertBundles(b, [
{
name: 'index.js',
assets: ['index.js', 'bundle-url.js', 'get-worker-url.js'],
},
{
assets: [
'index.js',
'worker.js',
'bundle-url.js',
'get-worker-url.js',
'esmodule-helpers.js',
'cacheLoader.js',
'js-loader.js',
],
},
{
assets: ['async.js', 'esmodule-helpers.js'],
},
]);

let res = await new Promise(resolve => {
run(b, {
output: resolve,
});
});
assert.deepEqual(res, {default: 42});
});

it('should support bundling workers with dynamic import with legacy browser targets', async function() {
let b = await bundle(
path.join(__dirname, '/integration/worker-dynamic/index.js'),
{
defaultTargetOptions: {
outputFormat: 'esmodule',
shouldScopeHoist: true,
engines: {
browsers: 'IE 11',
},
},
},
);

assertBundles(b, [
{
name: 'index.js',
assets: ['index.js', 'bundle-url.js', 'get-worker-url.js'],
},
{
assets: [
'worker.js',
Expand All @@ -814,12 +849,16 @@ describe('javascript', function() {
],
},
{
assets: ['async.js', 'esmodule-helpers.js'],
assets: ['async.js'],
},
]);

let res = await run(b);
assert.deepEqual(await res.default, {default: 42});
let res = await new Promise(resolve => {
run(b, {
output: resolve,
});
});
assert.deepEqual(res, {default: 42});
});

it('should support bundling workers of type module', async function() {
Expand Down
1 change: 1 addition & 0 deletions packages/transformers/js/core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,7 @@ pub fn transform(config: Config) -> Result<TransformResult, std::io::Error> {
let decls = collect_decls(&module);

let mut preset_env_config = swc_ecma_preset_env::Config::default();
preset_env_config.dynamic_import = true;
if let Some(versions) = targets_to_versions(&config.targets) {
preset_env_config.targets = Some(Targets::Versions(versions));
preset_env_config.shipped_proposals = true;
Expand Down

0 comments on commit 89eebc0

Please sign in to comment.