diff --git a/Cargo.lock b/Cargo.lock index 99c9bf8..9a05e5b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -49,12 +49,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "allocator-api2" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" - [[package]] name = "anyhow" version = "1.0.79" @@ -122,6 +116,15 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64-simd" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "781dd20c3aff0bd194fe7d2a977dd92f21c173891f3a03b677359e5fa457e5d5" +dependencies = [ + "simd-abstraction", +] + [[package]] name = "better_scoped_tls" version = "0.1.1" @@ -143,6 +146,18 @@ version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -157,9 +172,6 @@ name = "bumpalo" version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" -dependencies = [ - "allocator-api2", -] [[package]] name = "bytes" @@ -263,9 +275,9 @@ dependencies = [ [[package]] name = "deno_ast" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b28da6d573c30a63e4a6b66b91fa32773ed2cf4c0f26aa19b91f6c542b1a57" +checksum = "ef9a8a04564cb171e1639644acd7c3e4d17f1e35c60f4e21f9da60036b71df2b" dependencies = [ "anyhow", "base64", @@ -341,9 +353,9 @@ dependencies = [ [[package]] name = "deno_graph" -version = "0.69.3" +version = "0.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2798952afefd96567e93e15db4817f083cac81712210c92b8179bd0bfa0c2222" +checksum = "cbbf627a448fe7225c3d6953cd8d20c61ea4c827249c9074d5b821302096f579" dependencies = [ "anyhow", "async-trait", @@ -418,12 +430,10 @@ dependencies = [ [[package]] name = "dprint-swc-ext" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcd02c378803dba687471a9f1f1b758c33e53f616333faaddbaeb8840d9b6dd" +checksum = "5bad772f9e49af3a613fcddf1671d1e2e877e0a6d94f2b7162bfea4ac8140bee" dependencies = [ - "allocator-api2", - "bumpalo", "num-bigint", "rustc-hash", "swc_atoms", @@ -489,6 +499,12 @@ dependencies = [ "syn", ] +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" version = "0.3.30" @@ -831,6 +847,12 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "outref" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4" + [[package]] name = "parking_lot" version = "0.11.2" @@ -955,17 +977,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pmutil" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a40bc70c2c58040d2d8b167ba9a5ff59fc9dab7ad44771cfde3dcfde7a09c6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "pretty_assertions" version = "1.4.0" @@ -1003,6 +1014,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "radix_fmt" version = "1.0.0" @@ -1217,6 +1234,15 @@ dependencies = [ "libc", ] +[[package]] +name = "simd-abstraction" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987" +dependencies = [ + "outref", +] + [[package]] name = "siphasher" version = "0.3.11" @@ -1261,17 +1287,20 @@ dependencies = [ [[package]] name = "sourcemap" -version = "6.4.1" +version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4cbf65ca7dc576cf50e21f8d0712d96d4fcfd797389744b7b222a85cdf5bd90" +checksum = "208d40b9e8cad9f93613778ea295ed8f3c2b1824217c6cfc7219d3f6f45b96d4" dependencies = [ + "base64-simd", + "bitvec", "data-encoding", "debugid", "if_chain", + "rustc-hash", "rustc_version", "serde", "serde_json", - "unicode-id", + "unicode-id-start", "url", ] @@ -1320,9 +1349,9 @@ dependencies = [ [[package]] name = "swc_bundler" -version = "0.225.6" +version = "0.225.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a10c82d574fd928182f90962e280967b23b692d7e21ec9484dc6cbdaa73bab" +checksum = "f145a1a7293edce9efa80fe4f92a2cbd821c31d5c3123d04182fc1928613d978" dependencies = [ "anyhow", "crc", @@ -1364,9 +1393,9 @@ dependencies = [ [[package]] name = "swc_common" -version = "0.33.17" +version = "0.33.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "095c158fe55b36faeebb4274692643a6d7cdc5b7902e1d5968ddbe52b7de1d1c" +checksum = "89598a0dfe7311750e6fad8464cafcec8ee010c649c2e04531b25e32362fdec7" dependencies = [ "ast_node", "better_scoped_tls", @@ -1390,9 +1419,9 @@ dependencies = [ [[package]] name = "swc_config" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce837c5eae1cb200a310940de989fd9b3d12ed62d7752bc69b39ef8aa775ec04" +checksum = "ada712ac5e28a301683c8af957e8a56deca675cbc376473dd207a527b989efb5" dependencies = [ "anyhow", "indexmap", @@ -1416,9 +1445,9 @@ dependencies = [ [[package]] name = "swc_ecma_ast" -version = "0.112.2" +version = "0.112.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852a48a24a2533de88298c6b25355bc68fdee31ac21cb4fb8939b7001715353c" +checksum = "70656acd47c91918635f1e8589963428cb3170975b71d786c79fb7a25605f687" dependencies = [ "bitflags 2.4.2", "is-macro", @@ -1434,9 +1463,9 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.148.3" +version = "0.148.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d79df3f8c5ed028fce5dc24acb83002c0854f8b9d7e893292aeee394a6b9eaf4" +checksum = "c9ae864cb69934f8753b9cbbad803a0ee1b0759f5b87c219db0a12e8d03fa86a" dependencies = [ "memchr", "num-bigint", @@ -1465,9 +1494,9 @@ dependencies = [ [[package]] name = "swc_ecma_loader" -version = "0.45.19" +version = "0.45.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c16051bce5421992a1b49350735bf4d110f761fd68ae7098af17a64ad639b8d" +checksum = "6d32a45baefc2e53ad553f30df5536fbd2818b5e1adc84c801a0e88e09a0a7e9" dependencies = [ "anyhow", "pathdiff", @@ -1479,9 +1508,9 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.143.3" +version = "0.143.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ff55811ed5de14b05e9a2979bae2bce3c807582f559b4325948463265307d9" +checksum = "192482230498a24c2e7c9c580ba334a80dc43b3899366e54aa548f8d7b0f12cd" dependencies = [ "either", "new_debug_unreachable", @@ -1501,9 +1530,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.137.6" +version = "0.137.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9489f8f5c6c08e8291bd93eb354aa91903d4eba5eeb72e1b90adf43c8fe7a29" +checksum = "69e9a23d6af398b6efd17bbdad2cfa580102f6c560611f85c63b48f76ffe8f0c" dependencies = [ "better_scoped_tls", "bitflags 2.4.2", @@ -1524,9 +1553,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "0.126.6" +version = "0.126.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00fecbd333497362f75f475ca467beb486ae381968c9bd67315dddacc9ee67c" +checksum = "47af84e64f0216f110839f5552a615d07ed74b45757927f29482700966ab4e97" dependencies = [ "swc_atoms", "swc_common", @@ -1550,9 +1579,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_optimization" -version = "0.198.6" +version = "0.198.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db73c718c737c58ed7265fea79aff38578012269398d856264ddc4e764dfb192" +checksum = "86789174146707d78c086cee25868624bdfef924bb535ea3fc42f53fa426d4c0" dependencies = [ "dashmap", "indexmap", @@ -1574,9 +1603,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_proposal" -version = "0.171.6" +version = "0.171.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39920f44aa30ab997dd7cfdc364addd54e4a5fcc3807ae69a6fe283f306bc5a5" +checksum = "278fec72878ab88f63cf797b33091045d29789dfe13c4051ab7ea6731c4b7ffd" dependencies = [ "either", "rustc-hash", @@ -1594,9 +1623,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "0.183.6" +version = "0.183.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d8d36fc8dbfd96dd1ef17f989175e60a291399c6168b20a74951085b0075df" +checksum = "762dad12edcdca424213354518ce60bc3f03a026f8e1990b11459311cef04c91" dependencies = [ "base64", "dashmap", @@ -1618,9 +1647,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.188.6" +version = "0.188.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "432cf63b05d3ec435199bfbf7ba50793c6cb777bfcd8ad9f055f501aa9048d9c" +checksum = "6d6824fcd8d32ab2e90745a408f71548bd081bf4522d32617745ac1ea243de9c" dependencies = [ "ryu-js", "serde", @@ -1635,9 +1664,9 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "0.127.5" +version = "0.127.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2de25ac5cc8c8375476985e854054f05d9e841886f3c290716a0eec32eedce3" +checksum = "68f83263f449935d33f86b8ab17c88a13bc175a87a742752ebcc94be2006ab25" dependencies = [ "indexmap", "num_cpus", @@ -1653,9 +1682,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.98.2" +version = "0.98.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb71511a816c7c84ddc96e6939389be261caf20858486a5e76948551f110e1f" +checksum = "93692bdcdbb63db8f5e10fea5d202b5487cb27eb443aec424f4335c88f9864af" dependencies = [ "num-bigint", "swc_atoms", @@ -1678,9 +1707,9 @@ dependencies = [ [[package]] name = "swc_fast_graph" -version = "0.21.17" +version = "0.21.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffd32eda2dd2c725f8d4448d0013c3b5466118e4ff5c30aff2c04f6750f7238b" +checksum = "aa43c68166a88e233f241976dc3291c30471385fd1019d1fa5660ac503520110" dependencies = [ "indexmap", "petgraph", @@ -1690,9 +1719,9 @@ dependencies = [ [[package]] name = "swc_graph_analyzer" -version = "0.22.19" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ae1172960aa3b0cdbe94a1d5edf3efa9f1199cbd8384f48dedd0c5bdb5d6bd" +checksum = "02b66d0e18899b3a69eca103e5b4af2f0c837427aa07a60be1c4ceb4346ea245" dependencies = [ "auto_impl", "petgraph", @@ -1714,9 +1743,9 @@ dependencies = [ [[package]] name = "swc_visit" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b27078d8571abe23aa52ef608dd1df89096a37d867cf691cbb4f4c392322b7c9" +checksum = "3f5b3e8d1269a7cb95358fed3412645d9c15aa0eb1f4ca003a25a38ef2f30f1b" dependencies = [ "either", "swc_visit_macros", @@ -1724,12 +1753,11 @@ dependencies = [ [[package]] name = "swc_visit_macros" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8bb05975506741555ea4d10c3a3bdb0e2357cd58e1a4a4332b8ebb4b44c34d" +checksum = "33fc817055fe127b4285dc85058596768bfde7537ae37da82c67815557f03e33" dependencies = [ "Inflector", - "pmutil", "proc-macro2", "quote", "swc_macros_common", @@ -1747,6 +1775,12 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "termcolor" version = "1.4.1" @@ -1885,6 +1919,12 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1b6def86329695390197b82c1e244a54a131ceb66c996f2088a3876e2ae083f" +[[package]] +name = "unicode-id-start" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8f73150333cb58412db36f2aca8f2875b013049705cc77b94ded70a1ab1f5da" + [[package]] name = "unicode-ident" version = "1.0.12" @@ -2109,6 +2149,15 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "yansi" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index df64c48..1858838 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ members = [ [workspace.dependencies] anyhow = "1.0.44" base64 = "0.21.5" -deno_graph = { version = "0.69.3", default-features = false } +deno_graph = { version = "0.70.0", default-features = false } url = { version = "2.3.1" } [profile.release] diff --git a/rs-lib/Cargo.toml b/rs-lib/Cargo.toml index ffa4ae0..f4fbbf6 100644 --- a/rs-lib/Cargo.toml +++ b/rs-lib/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" [dependencies] anyhow = { workspace = true } base64 = { workspace = true } -deno_ast = { version = "0.34.0", features = ["bundler", "codegen", "proposal", "react", "sourcemap", "transforms", "typescript", "visit", "transpiling"] } +deno_ast = { version = "0.35.0", features = ["bundler", "codegen", "proposal", "react", "sourcemap", "transforms", "typescript", "visit", "transpiling"] } deno_graph = { workspace = true } escape8259 = "0.5.2" futures = "0.3.17" diff --git a/rs-lib/src/emit.rs b/rs-lib/src/emit.rs index 379c3ae..b6b9e2a 100644 --- a/rs-lib/src/emit.rs +++ b/rs-lib/src/emit.rs @@ -249,11 +249,15 @@ pub fn bundle_graph( let mut buf = Vec::new(); cm.build_source_map_with_config(&srcmap, None, source_map_config) .to_writer(&mut buf)?; - if options.emit_options.inline_source_map { - code.push_str("//# sourceMappingURL=data:application/json;base64,"); - base64::prelude::BASE64_STANDARD.encode_string(buf, &mut code); - } else if options.emit_options.source_map { - maybe_map = Some(String::from_utf8(buf)?); + match options.emit_options.source_map { + deno_ast::SourceMapOption::Inline => { + code.push_str("//# sourceMappingURL=data:application/json;base64,"); + base64::prelude::BASE64_STANDARD.encode_string(buf, &mut code); + } + deno_ast::SourceMapOption::Separate => { + maybe_map = Some(String::from_utf8(buf)?); + } + deno_ast::SourceMapOption::None => {} } } @@ -361,7 +365,7 @@ mod test { vec![root.clone()], &mut memory_loader, BuildOptions { - module_analyzer: Some(&analyzer), + module_analyzer: &analyzer, ..Default::default() }, ) diff --git a/rs-lib/src/lib.rs b/rs-lib/src/lib.rs index 7f5e847..bd5b35f 100644 --- a/rs-lib/src/lib.rs +++ b/rs-lib/src/lib.rs @@ -30,6 +30,7 @@ pub use emit::TranspileOptions; pub use deno_ast::EmitOptions; pub use deno_ast::ImportsNotUsedAsValues; pub use deno_ast::ModuleSpecifier; +pub use deno_ast::SourceMapOption; pub use deno_graph::source::CacheSetting; pub use deno_graph::source::LoadFuture; pub use deno_graph::source::LoadOptions; @@ -76,7 +77,7 @@ pub async fn transpile( vec![root], loader, BuildOptions { - module_analyzer: Some(&analyzer), + module_analyzer: &analyzer, resolver: Some(import_map_resolver.as_resolver()), ..Default::default() }, @@ -92,15 +93,12 @@ pub async fn transpile( let transpiled_source = parsed_source.transpile(&options.emit_options)?; map.insert(module.specifier.to_string(), transpiled_source.text); - // TODO: Understand why parsed_source.transpile returns a source map - // even when options.emit_options.source_map is false. - if options.emit_options.source_map { - if let Some(source_map) = &transpiled_source.source_map { - map.insert( - format!("{}.map", module.specifier.as_str()), - source_map.to_string(), - ); - } + + if let Some(source_map) = &transpiled_source.source_map { + map.insert( + format!("{}.map", module.specifier.as_str()), + source_map.to_string(), + ); } } } diff --git a/wasm/src/lib.rs b/wasm/src/lib.rs index 1da159f..2c92589 100644 --- a/wasm/src/lib.rs +++ b/wasm/src/lib.rs @@ -10,6 +10,7 @@ use deno_emit::LoadFuture; use deno_emit::LoadOptions; use deno_emit::Loader; use deno_emit::ModuleSpecifier; +use deno_emit::SourceMapOption; use deno_emit::TranspileOptions; use serde::Serialize; use url::Url; @@ -71,19 +72,26 @@ impl From for EmitOptions { "precompile" => (false, false, false, true), _ => (false, false, false, false), }; + let source_map = if options.inline_source_map { + SourceMapOption::Inline + } else if options.source_map { + SourceMapOption::Separate + } else { + SourceMapOption::None + }; Self { use_decorators_proposal: !options.experimental_decorators, use_ts_decorators: options.experimental_decorators, emit_metadata: options.emit_decorator_metadata, imports_not_used_as_values, - inline_source_map: options.inline_source_map, inline_sources: options.inline_sources, jsx_factory: options.jsx_factory, jsx_fragment_factory: options.jsx_fragment_factory, + keep_comments: true, transform_jsx, var_decl_imports: false, - source_map: options.source_map, + source_map, jsx_automatic, jsx_development, jsx_import_source: options.jsx_import_source,