Skip to content

Commit

Permalink
Pass targets for swc/helpers to Rust and only filter them for preset …
Browse files Browse the repository at this point in the history
…env (#8020)
  • Loading branch information
mischnic committed Apr 30, 2022
1 parent 50893a7 commit 27034ec
Show file tree
Hide file tree
Showing 11 changed files with 48 additions and 19 deletions.
@@ -0,0 +1 @@
export {bar} from "./other.js";
@@ -0,0 +1 @@
export const bar = "bar";
@@ -0,0 +1,5 @@
import * as helpers from "@swc/helpers";
import * as bar from "./bar";
import * as foo from "foo";

export default [helpers, bar, foo];

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

@@ -0,0 +1,3 @@
{
"browserslist": "ie 11"
}
Empty file.
8 changes: 8 additions & 0 deletions packages/core/integration-tests/test/javascript.js
Expand Up @@ -5110,6 +5110,14 @@ describe('javascript', function () {
assert.deepEqual(res, {a: 4});
});

it('should not use arrow functions for reexport declarations unless supported', async function () {
let b = await bundle(
path.join(__dirname, 'integration/js-export-arrow-support/index.js'),
);
let content = await outputFS.readFile(b.getBundles()[0].filePath, 'utf8');
assert(!content.includes('=>'));
});

it('should support import namespace declarations of other ES modules', async function () {
let b = await bundle(
path.join(__dirname, 'integration/js-import-namespace/a.js'),
Expand Down
37 changes: 23 additions & 14 deletions packages/transformers/js/core/src/lib.rs
Expand Up @@ -91,6 +91,7 @@ pub struct Config {
is_library: bool,
is_esm_output: bool,
trace_bailouts: bool,
is_swc_helpers: bool,
}

#[derive(Serialize, Debug, Default)]
Expand Down Expand Up @@ -318,11 +319,16 @@ pub fn transform(config: Config) -> Result<TransformResult, std::io::Error> {
..Default::default()
};
let versions = targets_to_versions(&config.targets);
if let Some(versions) = versions {
preset_env_config.targets = Some(Targets::Versions(versions));
preset_env_config.shipped_proposals = true;
preset_env_config.mode = Some(Entry);
preset_env_config.bugfixes = true;
if !config.is_swc_helpers {
// Avoid transpiling @swc/helpers so that we don't cause infinite recursion.
// Filter the versions for preset_env only so that syntax support checks
// (e.g. in esm2cjs) still work correctly.
if let Some(versions) = versions {
preset_env_config.targets = Some(Targets::Versions(versions));
preset_env_config.shipped_proposals = true;
preset_env_config.mode = Some(Entry);
preset_env_config.bugfixes = true;
}
}

let mut diagnostics = vec![];
Expand Down Expand Up @@ -384,15 +390,18 @@ pub fn transform(config: Config) -> Result<TransformResult, std::io::Error> {
config.insert_node_globals && config.source_type != SourceType::Script
),
// Transpile new syntax to older syntax if needed
Optional::new(
preset_env(
global_mark,
Some(&comments),
preset_env_config,
Default::default()
),
config.targets.is_some()
),
{
let should_transpile = preset_env_config.targets.is_some();
Optional::new(
preset_env(
global_mark,
Some(&comments),
preset_env_config,
Default::default(),
),
should_transpile,
)
},
// Inject SWC helpers if needed.
helpers::inject_helpers(),
);
Expand Down
6 changes: 1 addition & 5 deletions packages/transformers/js/src/JSTransformer.js
Expand Up @@ -334,11 +334,6 @@ export default (new Transformer({
targets = {node: semver.minVersion(asset.env.engines.node)?.toString()};
}

// Avoid transpiling @swc/helpers so that we don't cause infinite recursion.
if (/@swc[/\\]helpers/.test(asset.filePath)) {
targets = null;
}

let env: EnvMap = {};

if (!config?.inlineEnvironment) {
Expand Down Expand Up @@ -420,6 +415,7 @@ export default (new Transformer({
is_library: asset.env.isLibrary,
is_esm_output: asset.env.outputFormat === 'esmodule',
trace_bailouts: options.logLevel === 'verbose',
is_swc_helpers: /@swc[/\\]helpers/.test(asset.filePath),
});

let convertLoc = loc => {
Expand Down

0 comments on commit 27034ec

Please sign in to comment.