Skip to content

Commit ff37748

Browse files
bumped dep versions, fixed stacktraces for transpiled scripts
1 parent 18425ea commit ff37748

3 files changed

Lines changed: 67 additions & 61 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# 0.14.7
2+
3+
* bumped some deps (especially swc)
4+
* fixed stack traces for transpiled scripts (line numbers now seem to match)
5+
16
# 0.14.6
27

38
* quickjs-ng 0.9.0

Cargo.toml

Lines changed: 47 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "quickjs_runtime"
3-
version = "0.14.6"
4-
authors = ["Andries Hiemstra <info@hirofa.com>"]
3+
version = "0.14.7"
4+
authors = ["Andries Hiemstra <andries@hiemstra-software.nl>"]
55
edition = "2021"
66
description = "Wrapper API and utils for the QuickJS JavaScript engine with support for Promise, Modules, Async/await"
77
homepage = "https://github.com/HiRoFa/quickjs_es_runtime"
@@ -18,7 +18,7 @@ console = []
1818
settimeout = []
1919
setinterval = []
2020
setimmediate = []
21-
typescript = ["swc", "swc_atoms", "swc_cached", "swc_common", "swc_macros_common", "swc_eq_ignore_macros", "swc_visit", "swc_visit_macros", "swc_config", "swc_config_macro", "swc_ecma_codegen", "swc_ecma_ast", "swc_ecma_codegen_macros", "swc_ecma_ext_transforms", "swc_ecma_utils", "swc_ecma_visit", "swc_ecma_lints", "swc_ecma_loader", "swc_ecma_minifier", "swc_ecma_parser", "swc_error_reporters", "swc_fast_graph", "swc_ecma_usage_analyzer", "swc_timer", "swc_ecma_preset_env", "swc_ecma_transforms", "swc_ecma_transforms_base", "swc_ecma_transforms_compat", "swc_ecma_transforms_classes", "swc_ecma_transforms_module", "swc_ecma_transforms_optimization", "swc_ecma_transforms_proposal", "swc_ecma_transforms_macros", "swc_ecma_transforms_react", "swc_ecma_transforms_typescript", "swc_node_comments", "swc_trace_macro"]
21+
typescript = ["swc", "swc_common", "swc_atoms", "swc_cached", "swc_macros_common", "swc_eq_ignore_macros", "swc_visit", "swc_visit_macros", "swc_config", "swc_config_macro", "swc_ecma_codegen", "swc_ecma_ast", "swc_ecma_codegen_macros", "swc_ecma_ext_transforms", "swc_ecma_utils", "swc_ecma_visit", "swc_ecma_lints", "swc_ecma_loader", "swc_ecma_minifier", "swc_ecma_parser", "swc_error_reporters", "swc_fast_graph", "swc_ecma_usage_analyzer", "swc_timer", "swc_ecma_preset_env", "swc_ecma_transforms", "swc_ecma_transforms_base", "swc_ecma_transforms_compat", "swc_ecma_transforms_classes", "swc_ecma_transforms_module", "swc_ecma_transforms_optimization", "swc_ecma_transforms_proposal", "swc_ecma_transforms_macros", "swc_ecma_transforms_react", "swc_ecma_transforms_typescript"]#, "swc_node_comments"]#, "swc_trace_macro"]
2222
bellard = ["libquickjs-sys/bellard"]
2323
quickjs-ng = ["libquickjs-sys/quickjs-ng"]
2424

@@ -27,73 +27,66 @@ hirofa_utils = "0.7"
2727
#hirofa_utils = {path="../utils"}
2828
#hirofa_utils = {git="https://github.com/SreeniIO/utils.git"}
2929
#hirofa_utils = {git="https://github.com/HiRoFa/utils"}
30-
backtrace = "0.3.67"
30+
backtrace = "0.3"
3131

3232
#libquickjs-sys = {package="hirofa-quickjs-sys", git='https://github.com/HiRoFa/quickjs-sys'}
3333
#libquickjs-sys = {package="hirofa-quickjs-sys", path='../quickjs-sys', default-features=false}
3434
libquickjs-sys = {package="hirofa-quickjs-sys", version="0.9.0", default-features=false}
35-
lazy_static = "1.4.0"
35+
lazy_static = "1.5.0"
3636
log = "0.4"
3737
num_cpus = "1"
3838
rand = "0.8"
39-
thread-id = "4"
39+
thread-id = "5"
4040
futures = "0.3"
4141
tokio = {version = "1", features=["rt", "rt-multi-thread"]}
4242
serde_json = "1.0"
4343
serde = {version="1.0", features=["derive"]}
4444
string_cache = "0.8"
45-
flume = {version="0.10", features=["async"]}
45+
flume = {version="0.11", features=["async"]}
4646

4747
#swc
48-
# like the good people at denoland said
49-
# swc's version bumping is very buggy and there will often be patch versions
48+
# like the good people at denoland said:
49+
# "swc's version bumping is very buggy and there will often be patch versions
5050
# published that break our build, so we pin all swc versions to prevent
51-
# pulling in new versions of swc crates
52-
53-
# before we can use a newer swc with stable rust we wait for swc_ecma_lint to no longer use box patterns
54-
# see https://github.com/swc-project/swc/blob/main/crates/swc_ecma_lints/src/lib.rs
55-
# could be a while a srust has no plans to stabilize box_patterns
56-
# i gues thats one of the reaons deno does not use the swc dep as it allways loads swc_ecma_linter
57-
# deno does not...
51+
# pulling in new versions of swc crates"
5852
# see https://github.com/denoland/deno_ast/blob/main/Cargo.toml
59-
# nb, just using the swc dep now gives us a lot of errors in macro's since swc upgraded to using syn v2 on june-21-2023
60-
swc = {version="=0.236.21", optional=true}
61-
swc_atoms = {version="=0.4.43", optional=true}
62-
swc_cached = {version="=0.3.15", optional=true}
63-
swc_common = {version="=0.29.40", optional=true, features = ["tty-emitter"]}
64-
swc_macros_common = {version="=0.3.7", optional=true}
65-
swc_eq_ignore_macros = {version="=0.1.1", optional=true}
66-
swc_visit = {version="=0.5.6", optional=true}
67-
swc_visit_macros = {version="=0.5.7", optional=true}
68-
swc_config = {version="=0.1.5", optional=true}
69-
swc_config_macro = {version="=0.1.1", optional=true}
70-
swc_ecma_codegen = {version="=0.128.18", optional=true}
71-
swc_ecma_ast = {version="=0.95.11", optional=true}
72-
swc_ecma_codegen_macros = {version="=0.7.2", optional=true}
73-
swc_ecma_ext_transforms = {version="=0.92.19", optional=true}
74-
swc_ecma_utils = {version="=0.106.18", optional=true}
75-
swc_ecma_visit = {version="=0.81.11", optional=true}
76-
swc_ecma_lints = {version="=0.67.24", optional=true}
77-
swc_ecma_loader = {version="=0.41.42", optional=true}
78-
swc_ecma_minifier = {version="=0.160.38", optional=true}
79-
swc_ecma_parser = {version="=0.123.16", optional=true}
80-
swc_error_reporters = {version="=0.13.41", optional=true}
81-
swc_fast_graph = {version="=0.17.42", optional=true}
82-
swc_ecma_usage_analyzer = {version="=0.1.13", optional=true}
83-
swc_timer = {version="=0.17.43", optional=true}
84-
swc_ecma_preset_env = {version="=0.175.23", optional=true}
85-
swc_ecma_transforms = {version="=0.199.27", optional=true}
86-
swc_ecma_transforms_base = {version="=0.112.24", optional=true}
87-
swc_ecma_transforms_compat = {version="=0.137.25", optional=true}
88-
swc_ecma_transforms_classes = {version="=0.101.24", optional=true}
89-
swc_ecma_transforms_module = {version="=0.154.25", optional=true}
90-
swc_ecma_transforms_optimization = {version="=0.168.27", optional=true}
91-
swc_ecma_transforms_proposal = {version="=0.145.25", optional=true}
92-
swc_ecma_transforms_macros = {version="=0.5.1", optional=true}
93-
swc_ecma_transforms_react = {version="=0.156.26", optional=true}
94-
swc_ecma_transforms_typescript = {version="=0.160.27", optional=true}
95-
swc_node_comments = {version="=0.16.40", optional=true}
96-
swc_trace_macro = {version="=0.1.2", optional=true}
53+
swc = {version="=16.1.1", optional=true}
54+
swc_atoms = {version="=5.0.0", optional=true}
55+
swc_cached = {version="=2.0.0", optional=true}
56+
swc_common = {version="=8.0.1", optional=true, features = ["tty-emitter"]}
57+
swc_macros_common = {version="=1.0.0", optional=true}
58+
swc_eq_ignore_macros = {version="=1.0.0", optional=true}
59+
swc_visit = {version="=2.0.0", optional=true}
60+
swc_visit_macros = {version="=0.5.13", optional=true}
61+
swc_config = {version="=2.0.0", optional=true}
62+
swc_config_macro = {version="=1.0.0", optional=true}
63+
swc_ecma_codegen = {version="=8.0.2", optional=true}
64+
swc_ecma_ast = {version="=8.1.0", optional=true}
65+
swc_ecma_codegen_macros = {version="=1.0.1", optional=true}
66+
swc_ecma_ext_transforms = {version="=11.0.0", optional=true}
67+
swc_ecma_utils = {version="=11.0.0", optional=true}
68+
swc_ecma_visit = {version="=8.0.0", optional=true}
69+
swc_ecma_lints = {version="=11.0.1", optional=true}
70+
swc_ecma_loader = {version="=8.0.0", optional=true}
71+
swc_ecma_minifier = {version="=12.4.0", optional=true}
72+
swc_ecma_parser = {version="=10.0.2", optional=true}
73+
swc_error_reporters = {version="=9.1.1", optional=true}
74+
swc_fast_graph = {version="=9.0.0", optional=true}
75+
swc_ecma_usage_analyzer = {version="=12.0.2", optional=true}
76+
swc_timer = {version="=1.0.0", optional=true}
77+
swc_ecma_preset_env = {version="=14.0.0", optional=true}
78+
swc_ecma_transforms = {version="=14.0.0", optional=true}
79+
swc_ecma_transforms_base = {version="=11.2.0", optional=true}
80+
swc_ecma_transforms_compat = {version="=12.0.0", optional=true}
81+
swc_ecma_transforms_classes = {version="=11.0.0", optional=true}
82+
swc_ecma_transforms_module = {version="=12.1.0", optional=true}
83+
swc_ecma_transforms_optimization = {version="=11.1.0", optional=true}
84+
swc_ecma_transforms_proposal = {version="=11.0.2", optional=true}
85+
swc_ecma_transforms_macros = {version="=1.0.0", optional=true}
86+
swc_ecma_transforms_react = {version="=12.0.1", optional=true}
87+
swc_ecma_transforms_typescript = {version="=12.0.1", optional=true}
88+
swc_node_comments = {version="=8.0.0", optional=true}
89+
#swc_trace_macro = {version="=2.0.0", optional=true}
9790

9891

9992
#swc_ecma_parser = {version = "0.136.4", optional = true}

src/typescript/mod.rs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ impl TypeScriptTranspiler {
7676

7777
let fm = self
7878
.source_map
79-
.new_source_file(FileName::Custom(file_name.into()), code.into());
79+
.new_source_file(Arc::new(FileName::Custom(file_name.into())), code.into());
8080

8181
let mangle_config = if self.mangle {
8282
r#"
@@ -208,6 +208,12 @@ impl TypeScriptTranspiler {
208208
script.get_runnable_code()
209209
);
210210

211+
println!(
212+
"TypeScriptPreProcessor:process file={} result = {}",
213+
script.get_path(),
214+
script.get_runnable_code()
215+
);
216+
211217
Ok(())
212218
}
213219
}
@@ -330,6 +336,7 @@ pub(crate) fn unmap_stack_trace(stack_trace: &str) -> String {
330336

331337
pub fn fix_stack_trace(stack_trace: &str, maps: &HashMap<String, String>) -> String {
332338
log::trace!("fix_stack_trace:\n{stack_trace}");
339+
println!("fix_stack_trace:\n{stack_trace}");
333340
match parse_stack_trace(stack_trace) {
334341
Ok(mut parsed_stack) => {
335342
for stack_trace_entry in parsed_stack.iter_mut() {
@@ -343,14 +350,14 @@ pub fn fix_stack_trace(stack_trace: &str, maps: &HashMap<String, String>) -> Str
343350
match swc::sourcemap::SourceMap::from_reader(io::Cursor::new(map_str)) {
344351
Ok(source_map) => {
345352
if let Some(original_location) = source_map.lookup_token(
346-
line_number,
347-
stack_trace_entry.column_number.unwrap_or(1),
353+
line_number-1,
354+
stack_trace_entry.column_number.unwrap_or(1)-1,
348355
) {
349356
let original_line = original_location.get_src_line();
350357
let original_column = original_location.get_src_col();
351358
log::trace!("lookup original_line:{original_line}");
352-
stack_trace_entry.line_number = Some(original_line);
353-
stack_trace_entry.column_number = Some(original_column);
359+
stack_trace_entry.line_number = Some(original_line+1);
360+
stack_trace_entry.column_number = Some(original_column+1);
354361
}
355362
}
356363
Err(_) => {
@@ -423,12 +430,13 @@ pub mod tests {
423430
t_ts("hello", 1337);
424431
"#,
425432
);
426-
let _res = rt
433+
let res = rt
427434
.eval_sync(None, script)
428435
.expect_err("script passed.. which it shouldnt");
429436
// far from perfect test, also line numbers don't yet realy match..
430437
// check again after https://github.com/HiRoFa/quickjs_es_runtime/issues/77
431-
//assert!(res.get_stack().contains("t_ts (file:///test.ts):8"));
438+
println!("stack:{}",res.get_stack());
439+
assert!(res.get_stack().contains("t_ts (test.ts:7"));
432440
}
433441
#[test]
434442
fn test_stack_parse() {

0 commit comments

Comments
 (0)