@@ -70,7 +70,41 @@ pub fn deno_json_deps(
70
70
let values = imports_values ( config. json . imports . as_ref ( ) )
71
71
. into_iter ( )
72
72
. chain ( scope_values ( config. json . scopes . as_ref ( ) ) ) ;
73
- values_to_set ( values)
73
+ let mut set = values_to_set ( values) ;
74
+
75
+ if let Some ( serde_json:: Value :: Object ( compiler_options) ) =
76
+ & config. json . compiler_options
77
+ {
78
+ // add jsxImportSource
79
+ if let Some ( serde_json:: Value :: String ( value) ) =
80
+ compiler_options. get ( "jsxImportSource" )
81
+ {
82
+ if let Some ( dep_req) = value_to_dep_req ( value) {
83
+ set. insert ( dep_req) ;
84
+ }
85
+ }
86
+ // add jsxImportSourceTypes
87
+ if let Some ( serde_json:: Value :: String ( value) ) =
88
+ compiler_options. get ( "jsxImportSourceTypes" )
89
+ {
90
+ if let Some ( dep_req) = value_to_dep_req ( value) {
91
+ set. insert ( dep_req) ;
92
+ }
93
+ }
94
+ // add the dependencies in the types array
95
+ if let Some ( serde_json:: Value :: Array ( types) ) = compiler_options. get ( "types" )
96
+ {
97
+ for value in types {
98
+ if let serde_json:: Value :: String ( value) = value {
99
+ if let Some ( dep_req) = value_to_dep_req ( value) {
100
+ set. insert ( dep_req) ;
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+
107
+ set
74
108
}
75
109
76
110
fn imports_values ( value : Option < & serde_json:: Value > ) -> Vec < & String > {
@@ -98,15 +132,23 @@ fn values_to_set<'a>(
98
132
) -> HashSet < JsrDepPackageReq > {
99
133
let mut entries = HashSet :: new ( ) ;
100
134
for value in values {
101
- if let Ok ( req_ref) = JsrPackageReqReference :: from_str ( value) {
102
- entries. insert ( JsrDepPackageReq :: jsr ( req_ref. into_inner ( ) . req ) ) ;
103
- } else if let Ok ( req_ref) = NpmPackageReqReference :: from_str ( value) {
104
- entries. insert ( JsrDepPackageReq :: npm ( req_ref. into_inner ( ) . req ) ) ;
135
+ if let Some ( dep_req) = value_to_dep_req ( value) {
136
+ entries. insert ( dep_req) ;
105
137
}
106
138
}
107
139
entries
108
140
}
109
141
142
+ fn value_to_dep_req ( value : & str ) -> Option < JsrDepPackageReq > {
143
+ if let Ok ( req_ref) = JsrPackageReqReference :: from_str ( value) {
144
+ Some ( JsrDepPackageReq :: jsr ( req_ref. into_inner ( ) . req ) )
145
+ } else if let Ok ( req_ref) = NpmPackageReqReference :: from_str ( value) {
146
+ Some ( JsrDepPackageReq :: npm ( req_ref. into_inner ( ) . req ) )
147
+ } else {
148
+ None
149
+ }
150
+ }
151
+
110
152
pub fn check_warn_tsconfig ( ts_config : & TsConfigForEmit ) {
111
153
if let Some ( ignored_options) = & ts_config. maybe_ignored_options {
112
154
log:: warn!( "{}" , ignored_options) ;
0 commit comments