Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(bundler): Fix bugs #1382

Merged
merged 246 commits into from
Feb 22, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
246 commits
Select commit Hold shift + click to select a range
185857d
Step 2 for denoland/deno#9350
kdy1 Feb 8, 2021
6e25ba2
fixup
kdy1 Feb 8, 2021
0cf21e2
fixup
kdy1 Feb 8, 2021
33a1140
Add a test for denoland/deno#9450
kdy1 Feb 10, 2021
11260e0
fxhash
kdy1 Feb 11, 2021
ebbef25
Enable 8597
kdy1 Feb 11, 2021
62d0996
Use ahash
kdy1 Feb 11, 2021
730d8b0
WIP: faster graph
kdy1 Feb 11, 2021
cd9348e
Add a test for denoland/deno#9464
kdy1 Feb 10, 2021
d37d7f7
Debug mode
kdy1 Feb 10, 2021
bec24b8
Don't sort if not required
kdy1 Feb 11, 2021
71dfd90
Don't print
kdy1 Feb 11, 2021
236f87c
Use fast graph
kdy1 Feb 11, 2021
8d2ccb9
Enable aes
kdy1 Feb 11, 2021
e52310a
WIP: Use ahash
kdy1 Feb 11, 2021
d028e77
fixup
kdy1 Feb 11, 2021
6b78be1
fixup
kdy1 Feb 11, 2021
d085842
Use ahash
kdy1 Feb 11, 2021
77213d5
impl MapWithMut for more types.
kdy1 Feb 11, 2021
ee7732f
Optimize react pass.
kdy1 Feb 11, 2021
64c52d9
Enable debug mode
kdy1 Feb 12, 2021
b44f966
Fixing tests
kdy1 Feb 12, 2021
34eeac2
Sort at proper step
kdy1 Feb 12, 2021
9b428f6
Ignore one
kdy1 Feb 12, 2021
2922150
Improve performance by replacing hashmap with a vector.
kdy1 Feb 12, 2021
0de910f
TRY: Sorting based on module dep graph
kdy1 Feb 13, 2021
0e25524
fiixup
kdy1 Feb 13, 2021
427eac6
More work for module-based sorting
kdy1 Feb 13, 2021
4c5917e
fixup
kdy1 Feb 13, 2021
58fb802
More work
kdy1 Feb 13, 2021
ab420b8
Fix compilation
kdy1 Feb 13, 2021
dbab0ac
Rename a var
kdy1 Feb 13, 2021
672c98d
Rename
kdy1 Feb 13, 2021
2f92046
Type
kdy1 Feb 13, 2021
44080e7
lint
kdy1 Feb 13, 2021
d1b2c56
Fix tests
kdy1 Feb 13, 2021
54fe788
normalize_injected
kdy1 Feb 13, 2021
b3d8661
Rename
kdy1 Feb 13, 2021
fad7bb7
Doc
kdy1 Feb 14, 2021
14c5cc5
Rename
kdy1 Feb 14, 2021
7c4a869
Add chunk.rs
kdy1 Feb 14, 2021
4c75c14
WIP: Chunk based sorting
kdy1 Feb 14, 2021
25976ba
Move some codes
kdy1 Feb 14, 2021
6e8ead7
WIP
kdy1 Feb 14, 2021
526d01a
lint
kdy1 Feb 14, 2021
70bd996
WIP: Chunk
kdy1 Feb 14, 2021
27685b1
Remove unused
kdy1 Feb 14, 2021
80e64d5
WIP: Use Custom graph structure
kdy1 Feb 14, 2021
134a9df
Revert "WIP: Use Custom graph structure"
kdy1 Feb 14, 2021
14b5ac1
Consider dependencies
kdy1 Feb 14, 2021
3381454
Track `done`
kdy1 Feb 14, 2021
051cd2c
TODO
kdy1 Feb 14, 2021
a0917e9
Rename
kdy1 Feb 14, 2021
7a39d45
Add stmt.rs
kdy1 Feb 14, 2021
35a8011
Revert "Add stmt.rs"
kdy1 Feb 14, 2021
7f5c0c8
WIP: Prepend / Append
kdy1 Feb 14, 2021
be1cd73
WIP
kdy1 Feb 14, 2021
1d9e0b7
WIP
kdy1 Feb 14, 2021
b5cd821
fixup
kdy1 Feb 14, 2021
f9cceb0
More work
kdy1 Feb 14, 2021
504bd21
lint
kdy1 Feb 14, 2021
4c94b7a
More migration to append / prepend system
kdy1 Feb 14, 2021
0f0e90a
fixup
kdy1 Feb 14, 2021
4d580b5
Reworking sort
kdy1 Feb 14, 2021
b08a72e
Rework
kdy1 Feb 14, 2021
7dfe430
Ignore outdated tests
kdy1 Feb 14, 2021
0976da4
Add some assertions
kdy1 Feb 14, 2021
7705ad6
Revert "Add some assertions"
kdy1 Feb 14, 2021
107bfc1
Remove wrong check
kdy1 Feb 14, 2021
08240e6
Fix sorter
kdy1 Feb 14, 2021
6f49a96
WIP
kdy1 Feb 14, 2021
40e7b52
Fix
kdy1 Feb 15, 2021
81e2cb7
Let's start with privous impl
kdy1 Feb 15, 2021
bbc2eaf
Preserve previous semantics
kdy1 Feb 15, 2021
dfcd1db
fixup
kdy1 Feb 15, 2021
b5c4f7a
fixup
kdy1 Feb 15, 2021
661d157
Debug more for sorting
kdy1 Feb 15, 2021
62a6633
Revert "Debug more for sorting"
kdy1 Feb 15, 2021
1268955
Debug mode for sorting
kdy1 Feb 15, 2021
d7c8a62
fixup
kdy1 Feb 15, 2021
bcc4b1b
Add an unit test
kdy1 Feb 15, 2021
112526c
fixup
kdy1 Feb 15, 2021
233080d
Remove wrong test
kdy1 Feb 15, 2021
258720a
A unit test
kdy1 Feb 15, 2021
cdec5f8
Fix sorter
kdy1 Feb 15, 2021
78d7031
Remove logging
kdy1 Feb 15, 2021
6e5778c
Change logging
kdy1 Feb 15, 2021
6676c58
Remove dbg!
kdy1 Feb 15, 2021
16bff6b
Remove empty sttmts
kdy1 Feb 15, 2021
081d886
One more fast-path
kdy1 Feb 15, 2021
6bacb30
WIP: Multi-module sorter
kdy1 Feb 15, 2021
228ef05
Multi-module sorter
kdy1 Feb 15, 2021
2d81204
Remove logging
kdy1 Feb 15, 2021
a81497c
One more fast path
kdy1 Feb 15, 2021
369f9eb
Logging
kdy1 Feb 15, 2021
96cb968
Handle deps of modules with circular imports.
kdy1 Feb 15, 2021
3f605fa
Fix statement sorter
kdy1 Feb 15, 2021
9b717ff
Add deps in reverse order
kdy1 Feb 15, 2021
40ebbaf
lint
kdy1 Feb 15, 2021
7c64187
Change rule of handling `export *`
kdy1 Feb 16, 2021
eab4d43
Don't sort
kdy1 Feb 16, 2021
4a9cc65
Revert "Don't sort"
kdy1 Feb 16, 2021
b737582
Don't emit free dependants eagerly
kdy1 Feb 16, 2021
98bdb63
Cleanup
kdy1 Feb 16, 2021
7ef01f7
Comment out dbg!
kdy1 Feb 16, 2021
f08822f
It's not too slow anymore
kdy1 Feb 16, 2021
785846a
WIP: Optimize dep graph
kdy1 Feb 16, 2021
3ab091c
Optimize calc_deps
kdy1 Feb 16, 2021
e4838fc
Debugging statement sorter
kdy1 Feb 16, 2021
c1d4cbf
Revert "Debugging statement sorter"
kdy1 Feb 16, 2021
8c78e99
Revert "Optimize calc_deps"
kdy1 Feb 16, 2021
3fcb55f
Revert "WIP: Optimize dep graph"
kdy1 Feb 16, 2021
3940544
Cleanup
kdy1 Feb 16, 2021
6c2c4cd
Rebase
kdy1 Feb 16, 2021
862fbea
fixup
kdy1 Feb 16, 2021
0d5239c
Remove debug code for sorter
kdy1 Feb 16, 2021
792d162
WIP: Exports in wrapped esms
kdy1 Feb 16, 2021
fddeb78
Handle exports in wrapped esms correctly
kdy1 Feb 16, 2021
da6f3c0
Debugging wrapped esms
kdy1 Feb 16, 2021
fb45433
Add an assertion
kdy1 Feb 16, 2021
6b49254
We don't need this
kdy1 Feb 16, 2021
af2f95e
Print more
kdy1 Feb 16, 2021
8d781f5
Fix Modules.push_all
kdy1 Feb 16, 2021
5aab3a6
Debugging
kdy1 Feb 16, 2021
1c8bb45
typo
kdy1 Feb 16, 2021
7baaa48
Don't hang on circular imports mixed with wrapped esms.
kdy1 Feb 16, 2021
91a9ab2
Use correct context.
kdy1 Feb 16, 2021
d0863b3
Debugging
kdy1 Feb 16, 2021
0bf8b12
Revert "Don't hang on circular imports mixed with wrapped esms."
kdy1 Feb 16, 2021
c248aa0
Revert "Revert "Don't hang on circular imports mixed with wrapped esm…
kdy1 Feb 16, 2021
27795dd
Add a TODO
kdy1 Feb 17, 2021
2cd3067
Revert "Revert "Revert "Don't hang on circular imports mixed with wra…
kdy1 Feb 17, 2021
7ef10e9
Fix?
kdy1 Feb 17, 2021
17dcbcc
Remove dbg!
kdy1 Feb 17, 2021
f1a66c4
Check for wrapped esms while handling circular imports.
kdy1 Feb 17, 2021
7356697
[TRY] Prevent infinite loop
kdy1 Feb 17, 2021
33ba9d0
Revert "[TRY] Prevent infinite loop"
kdy1 Feb 17, 2021
72de18c
Split wrapped modules
kdy1 Feb 17, 2021
5b94e4f
Revert "Split wrapped modules"
kdy1 Feb 17, 2021
c4a8cac
Rebase
kdy1 Feb 19, 2021
461b5d7
fixup
kdy1 Feb 19, 2021
7c508bf
fixup
kdy1 Feb 19, 2021
10363ae
Merge branch 'master' into bundler
kdy1 Feb 19, 2021
eff8871
Debugging sort
kdy1 Feb 19, 2021
0116d50
Print 'done'
kdy1 Feb 19, 2021
f56417f
Store content of wrapped esm at top level.
kdy1 Feb 19, 2021
7021ff2
Use `foo#4` instead of `mod#4.foo`.
kdy1 Feb 19, 2021
1e14ecb
Prevent panic
kdy1 Feb 19, 2021
fad689a
timeout
kdy1 Feb 19, 2021
0f5ea7b
Fix export_key_value
kdy1 Feb 19, 2021
feb3ef8
Fix planning
kdy1 Feb 19, 2021
f51fbb5
stmt sorter: Emit free dependants as early as possible.
kdy1 Feb 19, 2021
0a92796
Comment out wrong code
kdy1 Feb 19, 2021
91b37e9
Inline injected variables
kdy1 Feb 20, 2021
e4de194
Change order of passes
kdy1 Feb 20, 2021
997904c
More check before inlining
kdy1 Feb 20, 2021
b904a15
Doc
kdy1 Feb 20, 2021
7ebae3d
Prevent inlining in wrong places
kdy1 Feb 20, 2021
7599a57
inliner: Exclude vars generated by synthesized exports.
kdy1 Feb 20, 2021
b550cce
Comment out outdated logic
kdy1 Feb 20, 2021
b895eed
Remove wrong check
kdy1 Feb 20, 2021
5cefb6f
Don't inline variables declared in subscopes.
kdy1 Feb 20, 2021
173b805
inliner: Don't modify exported identifier
kdy1 Feb 20, 2021
800ba03
fixup
kdy1 Feb 20, 2021
70cae6d
Change msg
kdy1 Feb 20, 2021
c32b504
Remove old, wrong logic
kdy1 Feb 20, 2021
e37395e
Remove wrong, outdated test.
kdy1 Feb 20, 2021
ce92a8c
Add some smaller tests for deafult exports
kdy1 Feb 20, 2021
03bbea2
Remove dbg!
kdy1 Feb 20, 2021
05826ec
More logging
kdy1 Feb 20, 2021
7f06cf6
Drop defaults exports while merging `export *`
kdy1 Feb 20, 2021
65ccdf7
Retain `default` as a variable while handling `export *`
kdy1 Feb 20, 2021
a480f56
Wrapped esm should store all varaibles in top level.
kdy1 Feb 20, 2021
b89684b
Increase time limit
kdy1 Feb 20, 2021
541fd6e
Ignore 8597
kdy1 Feb 20, 2021
0248972
WIP: Fixing tests
kdy1 Feb 20, 2021
999338c
Merge branch 'master' into bundler
kdy1 Feb 20, 2021
5d4b9b5
Update test refs
kdy1 Feb 20, 2021
18099a0
Update test refs
kdy1 Feb 20, 2021
bb86f09
Remove garbagex
kdy1 Feb 20, 2021
1a4dae5
Update test refs
kdy1 Feb 20, 2021
ad047c3
Update test refs
kdy1 Feb 20, 2021
74842be
Update test refs
kdy1 Feb 20, 2021
5fb4528
Update test refs
kdy1 Feb 20, 2021
64f1cb7
Update test refs
kdy1 Feb 20, 2021
f6c6a7e
Update test refs
kdy1 Feb 20, 2021
6062807
Update test refs
kdy1 Feb 20, 2021
9dc476c
Fix warnings
kdy1 Feb 20, 2021
7da878e
Update test refs
kdy1 Feb 20, 2021
1cbd0de
Fix test
kdy1 Feb 20, 2021
39184ab
Update test refs
kdy1 Feb 20, 2021
b57d6ea
Update test refs
kdy1 Feb 20, 2021
d17c633
Update test refs
kdy1 Feb 20, 2021
fde1671
Update test refs
kdy1 Feb 20, 2021
e57c2a4
Update test refs
kdy1 Feb 20, 2021
283cf21
Update test refs
kdy1 Feb 20, 2021
d62136a
Update test refs
kdy1 Feb 20, 2021
9f8517f
Update test refs
kdy1 Feb 20, 2021
f4ac0ac
Update test refs
kdy1 Feb 20, 2021
32a45a2
Update test refs
kdy1 Feb 20, 2021
2f6626f
Change order
kdy1 Feb 21, 2021
41049b4
Revert "Change order"
kdy1 Feb 21, 2021
e2acbc6
Reverse
kdy1 Feb 21, 2021
a4bf782
Update test refs
kdy1 Feb 21, 2021
09bf3ca
Don't inject wrong variables
kdy1 Feb 21, 2021
d424c38
Don't create duplicate variables
kdy1 Feb 21, 2021
c11c9bd
inliner: Handle shorthand properties properly
kdy1 Feb 21, 2021
3f05422
WIP: Debugging module graph sorter
kdy1 Feb 22, 2021
e89d618
module graph sorter: Prevent infinite loop
kdy1 Feb 22, 2021
28370f1
Update test refs
kdy1 Feb 22, 2021
a286379
Update test refs
kdy1 Feb 22, 2021
b1c1a6a
Update test refs
kdy1 Feb 22, 2021
16a738a
Update test refs
kdy1 Feb 22, 2021
1a5a144
Update test refs
kdy1 Feb 22, 2021
f9e181d
Update test refs
kdy1 Feb 22, 2021
7b53184
Update test refs
kdy1 Feb 22, 2021
1d4d0fc
Update test refs
kdy1 Feb 22, 2021
7d284fd
Update test refs
kdy1 Feb 22, 2021
a58f181
Udpate test refs
kdy1 Feb 22, 2021
b37e72c
Fix panic
kdy1 Feb 22, 2021
09a103b
Reverse path correctly
kdy1 Feb 22, 2021
79ea389
kdy1 Feb 22, 2021
2121417
Update test refs
kdy1 Feb 22, 2021
65acaf0
Update test refs
kdy1 Feb 22, 2021
51f2263
inliner: Optimize shorthand props.
kdy1 Feb 22, 2021
627cb75
Update test refs
kdy1 Feb 22, 2021
1b9dafb
Create more variables for wrapped esms.
kdy1 Feb 22, 2021
57044f8
Update test refs
kdy1 Feb 22, 2021
a38d6d8
Revert "Create more variables for wrapped esms."
kdy1 Feb 22, 2021
2eb1814
Revert "Revert "Create more variables for wrapped esms.""
kdy1 Feb 22, 2021
245b662
More fine-grained rule for generating variables.
kdy1 Feb 22, 2021
fc2282b
Optimize
kdy1 Feb 22, 2021
22067ef
[TRY]: synthesized_ctxt
kdy1 Feb 22, 2021
9bca63c
Revert "[TRY]: synthesized_ctxt"
kdy1 Feb 22, 2021
8f66b0d
WIP: Fix 9200 by handling exports instead of variables
kdy1 Feb 22, 2021
006036a
FIx 9200
kdy1 Feb 22, 2021
d7eda08
lints
kdy1 Feb 22, 2021
013a646
Update test refs
kdy1 Feb 22, 2021
ffda0d5
[TRY]: Inject named export
kdy1 Feb 22, 2021
ea2997b
Fix 9200.
kdy1 Feb 22, 2021
ff110e7
Update test refs
kdy1 Feb 22, 2021
65d722d
Fixed?
kdy1 Feb 22, 2021
19997d6
lint
kdy1 Feb 22, 2021
7fcf10f
Merge branch 'master' into bundler
kdy1 Feb 22, 2021
ff4c6a4
Bump version
kdy1 Feb 22, 2021
da1f184
Remove dbg
kdy1 Feb 22, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cargo/config
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
[build]
rustflags = [
"--cfg", "procmacro2_semver_exempt",
"-C", "target-feature=+sse2",
"-C", "target-feature=+sse2,+aes",
]

rustdocflags = [
Expand Down
18 changes: 9 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ edition = "2018"
license = "Apache-2.0/MIT"
name = "swc"
repository = "https://github.com/swc-project/swc.git"
version = "0.6.1"
version = "0.7.0"

[lib]
name = "swc"
Expand All @@ -29,21 +29,21 @@ serde_json = "1"
sourcemap = "6"
swc_atoms = {version = "0.2", path = "./atoms"}
swc_common = {version = "0.10.10", path = "./common", features = ["sourcemap", "concurrent"]}
swc_ecma_ast = {version = "0.39.1", path = "./ecmascript/ast"}
swc_ecma_codegen = {version = "0.46.1", path = "./ecmascript/codegen"}
swc_ecma_ext_transforms = {version = "0.5.1", path = "./ecmascript/ext-transforms"}
swc_ecma_parser = {version = "0.48.1", path = "./ecmascript/parser"}
swc_ecma_preset_env = {version = "0.7.1", path = "./ecmascript/preset_env"}
swc_ecma_transforms = {version = "0.37.1", path = "./ecmascript/transforms", features = [
swc_ecma_ast = {version = "0.40.0", path = "./ecmascript/ast"}
swc_ecma_codegen = {version = "0.47.0", path = "./ecmascript/codegen"}
swc_ecma_ext_transforms = {version = "0.6.0", path = "./ecmascript/ext-transforms"}
swc_ecma_parser = {version = "0.49.0", path = "./ecmascript/parser"}
swc_ecma_preset_env = {version = "0.8.0", path = "./ecmascript/preset_env"}
swc_ecma_transforms = {version = "0.38.0", path = "./ecmascript/transforms", features = [
"compat",
"module",
"optimization",
"proposal",
"react",
"typescript",
]}
swc_ecma_utils = {version = "0.29.1", path = "./ecmascript/utils"}
swc_ecma_visit = {version = "0.25.1", path = "./ecmascript/visit"}
swc_ecma_utils = {version = "0.30.0", path = "./ecmascript/utils"}
swc_ecma_visit = {version = "0.26.0", path = "./ecmascript/visit"}
swc_visit = {version = "0.2.3", path = "./visit"}

[dev-dependencies]
Expand Down
17 changes: 9 additions & 8 deletions bundler/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@ include = ["Cargo.toml", "build.rs", "src/**/*.rs", "src/**/*.js"]
license = "Apache-2.0/MIT"
name = "swc_bundler"
repository = "https://github.com/swc-project/swc.git"
version = "0.24.1"
version = "0.25.0"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[features]
concurrent = ["swc_common/concurrent", "dashmap", "rayon", "indexmap/rayon"]
default = []

[dependencies]
ahash = "0.7"
anyhow = "1"
crc = "1.8"
dashmap = {version = "3", optional = true}
Expand All @@ -31,19 +32,19 @@ relative-path = "1.2"
retain_mut = "0.1.2"
swc_atoms = {version = "0.2.4", path = "../atoms"}
swc_common = {version = "0.10.10", path = "../common"}
swc_ecma_ast = {version = "0.39.1", path = "../ecmascript/ast"}
swc_ecma_codegen = {version = "0.46.1", path = "../ecmascript/codegen"}
swc_ecma_parser = {version = "0.48.1", path = "../ecmascript/parser"}
swc_ecma_transforms = {version = "0.37.1", path = "../ecmascript/transforms", features = ["optimization"]}
swc_ecma_utils = {version = "0.29.1", path = "../ecmascript/utils"}
swc_ecma_visit = {version = "0.25.1", path = "../ecmascript/visit"}
swc_ecma_ast = {version = "0.40.0", path = "../ecmascript/ast"}
swc_ecma_codegen = {version = "0.47.0", path = "../ecmascript/codegen"}
swc_ecma_parser = {version = "0.49.0", path = "../ecmascript/parser"}
swc_ecma_transforms = {version = "0.38.0", path = "../ecmascript/transforms", features = ["optimization"]}
swc_ecma_utils = {version = "0.30.0", path = "../ecmascript/utils"}
swc_ecma_visit = {version = "0.26.0", path = "../ecmascript/visit"}

[dev-dependencies]
hex = "0.4"
ntest = "0.7.2"
reqwest = {version = "0.10.8", features = ["blocking"]}
sha-1 = "0.9"
swc_ecma_transforms = {version = "0.37.1", path = "../ecmascript/transforms", features = ["react", "typescript"]}
swc_ecma_transforms = {version = "0.38.0", path = "../ecmascript/transforms", features = ["react", "typescript"]}
tempfile = "3.1.0"
testing = {version = "0.10.3", path = "../testing"}
url = "2.1.1"
Expand Down
34 changes: 21 additions & 13 deletions bundler/src/bundler/chunk/circular.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use super::plan::CircularPlan;
use crate::bundler::modules::Modules;
use crate::modules::Modules;
use crate::{bundler::chunk::merge::Ctx, id::Id, Bundler, Load, ModuleId, Resolve};
use anyhow::{Context, Error};
use swc_common::DUMMY_SP;
Expand Down Expand Up @@ -30,8 +30,9 @@ where
log::debug!("[circular] skip: {:?}", entry_id);
return Ok(Modules::empty(self.injected_ctxt));
}
// TODO: Handle wrapped esms

log::debug!("[circular] Stsrting with: {:?}", entry_id);
log::debug!("[circular] Starting with: {:?}", entry_id);

let entry_module = self.scope.get_module(entry_id).unwrap();

Expand All @@ -40,7 +41,7 @@ where
.context("failed to merge dependency of a cyclic module")?;

let mut exports = vec![];
for item in entry.iter_mut() {
for (_, item) in entry.iter_mut() {
match item {
ModuleItem::ModuleDecl(decl) => match decl {
ModuleDecl::ExportDecl(export) => match &export.decl {
Expand Down Expand Up @@ -97,15 +98,16 @@ where
entry = new_module;

if !exports.is_empty() {
entry.inject(ModuleItem::ModuleDecl(ModuleDecl::ExportNamed(
NamedExport {
entry.append(
entry_id,
ModuleItem::ModuleDecl(ModuleDecl::ExportNamed(NamedExport {
span: DUMMY_SP.with_ctxt(self.synthesized_ctxt),
specifiers: exports,
src: None,
type_only: false,
asserts: None,
},
)));
})),
);
}

// print_hygiene("[circular] done", &self.cm, &entry);
Expand Down Expand Up @@ -135,14 +137,20 @@ where

true
});
deps.sort();
// deps.sort();

self.run(|| {
for dep in deps {
let dep_info = self.scope.get_module(dep).unwrap();
let mut dep = self
.merge_modules(ctx, dep, false, false)
.context("failed to merge dependency of a cyclic module")?;
for dep_id in deps {
let dep_info = self.scope.get_module(dep_id).unwrap();
let mut dep = if self.scope.should_be_wrapped_with_a_fn(dep_id) {
let mut dep: Modules = self.get_module_for_merging(ctx, dep_id, false)?;
dep = self.wrap_esm(ctx, dep_id, dep.into())?.into();
self.prepare(&dep_info, &mut dep);
dep
} else {
self.merge_modules(ctx, dep_id, false, false)
.context("failed to merge dependency of a cyclic module")?
};

// print_hygiene("[circular] dep:init 1", &self.cm, &dep.clone().into());

Expand Down
22 changes: 13 additions & 9 deletions bundler/src/bundler/chunk/cjs.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use super::merge::Unexporter;
use crate::bundler::modules::Modules;
use crate::modules::Modules;
use crate::{
bundler::{
chunk::{merge::Ctx, plan::Dependancy},
Expand Down Expand Up @@ -80,13 +80,17 @@ where
dep.visit_mut_with(&mut DefaultHandler {
local_ctxt: dep_info.local_ctxt(),
});
dep.sort(info.id, &ctx.graph, &self.cm);

entry.prepend(ModuleItem::Stmt(wrap_module(
SyntaxContext::empty(),
dep_info.local_ctxt(),
load_var,
dep.into(),
)));
entry.prepend(
info.id,
ModuleItem::Stmt(wrap_module(
SyntaxContext::empty(),
dep_info.local_ctxt(),
load_var,
dep.into(),
)),
);

log::warn!("Injecting load");
}
Expand All @@ -103,7 +107,7 @@ where
false,
entry,
info,
Modules::from((*dep_info.module).clone(), self.injected_ctxt),
Modules::from(dep_info.id, (*dep_info.module).clone(), self.injected_ctxt),
&dep_info,
targets,
)?;
Expand Down Expand Up @@ -341,7 +345,7 @@ impl VisitMut for RequireReplacer {
}

fn drop_module_decls(modules: &mut Modules) {
modules.retain_mut(|i| match i {
modules.retain_mut(|_, i| match i {
ModuleItem::ModuleDecl(..) => false,
ModuleItem::Stmt(_) => true,
})
Expand Down
Loading