@@ -60,6 +60,7 @@ fn synthetic_config(
6060 {
6161 obj. insert ( "jsx" . to_string ( ) , json ! ( "react-jsx" ) ) ;
6262 }
63+ obj. insert ( "allowArbitraryExtensions" . to_string ( ) , json ! ( true ) ) ;
6364 let config = serde_json:: to_string ( & json ! ( {
6465 "compilerOptions" : config,
6566 "files" : root_names,
@@ -334,6 +335,22 @@ fn get_package_json_scope_if_applicable(
334335 Ok ( jsons ! ( None :: <String >) ?)
335336}
336337
338+ fn append_raw_import_fragment ( specifier : & mut String , raw_kind : & str ) {
339+ let fragment_index = specifier. find ( '#' ) ;
340+ match fragment_index {
341+ Some ( index) => {
342+ if specifier[ index..] . contains ( & format ! ( "denoRawImport={}.ts" , raw_kind) )
343+ {
344+ return ;
345+ }
346+ specifier. push_str ( & format ! ( "&denoRawImport={}.ts" , raw_kind) ) ;
347+ }
348+ None => {
349+ specifier. push_str ( & format ! ( "#denoRawImport={}.ts" , raw_kind) ) ;
350+ }
351+ }
352+ }
353+
337354struct HandlerState {
338355 config_path : String ,
339356 synthetic_config : String ,
@@ -407,7 +424,17 @@ impl deno_typescript_go_client_rust::CallbackHandler for Handler {
407424 }
408425 "resolveModuleName" => {
409426 let payload = deser :: < ResolveModuleNamePayload > ( payload) ?;
410- let ( out_name, extension) = resolve_name ( & mut state, payload) ?;
427+ let import_attribute_type = payload. import_attribute_type . clone ( ) ;
428+ let ( mut out_name, mut extension) = resolve_name ( & mut state, payload) ?;
429+ if let Some ( import_attribute_type) = & import_attribute_type
430+ && matches ! ( import_attribute_type. as_str( ) , "text" | "bytes" )
431+ {
432+ append_raw_import_fragment (
433+ & mut out_name,
434+ import_attribute_type. as_str ( ) ,
435+ ) ;
436+ extension = Some ( "ts" ) ;
437+ }
411438
412439 Ok ( jsons ! ( {
413440 "resolvedFileName" : out_name,
@@ -432,6 +459,7 @@ impl deno_typescript_go_client_rust::CallbackHandler for Handler {
432459 module_name : payload. type_reference_directive_name ,
433460 containing_file : payload. containing_file ,
434461 resolution_mode : payload. resolution_mode ,
462+ import_attribute_type : None ,
435463 } ;
436464 let ( out_name, extension) = resolve_name ( & mut state, payload) ?;
437465 log:: debug!(
@@ -507,6 +535,7 @@ fn resolve_name(
507535 payload : ResolveModuleNamePayload ,
508536) -> Result < ( String , Option < & ' static str > ) , deno_typescript_go_client_rust:: Error >
509537{
538+ log:: debug!( "resolve_name({payload:?})" ) ;
510539 let graph = & handler. graph ;
511540 let maybe_npm = handler. maybe_npm . as_ref ( ) ;
512541 let referrer = if let Some ( remapped_specifier) =
@@ -627,6 +656,7 @@ fn load_inner(
627656 state,
628657 ) ?;
629658 let Some ( result) = result else {
659+ log:: debug!( "load_inner {load_specifier} -> None" ) ;
630660 return Ok ( None ) ;
631661 } ;
632662 let is_cjs = result. is_cjs ;
@@ -635,6 +665,7 @@ fn load_inner(
635665 let module_kind = get_resolution_mode ( is_cjs, media_type) ;
636666 let script_kind = super :: as_ts_script_kind ( media_type) ;
637667 log:: debug!( "load_inner {load_specifier} -> {:?}" , module_kind) ;
668+ log:: trace!( "loaded contents ({load_specifier}) -> {:?}" , result. data) ;
638669 state
639670 . module_kind_map
640671 . insert ( load_specifier. to_string ( ) , module_kind) ;
0 commit comments