@@ -163,4 +163,107 @@ describe("TsconfigPathsPlugin", () => {
163
163
} ,
164
164
) ;
165
165
} ) ;
166
+
167
+ it ( "main-field-package resolves to src/mapped/star/main-field-package/index.ts in referenceExample project" , ( done ) => {
168
+ const resolver = ResolverFactory . createResolver ( {
169
+ fileSystem,
170
+ extensions : [ ".ts" , ".tsx" ] ,
171
+ mainFields : [ "browser" , "main" ] ,
172
+ mainFiles : [ "index" ] ,
173
+ tsconfig : path . join ( referenceDir , "tsconfig.json" ) ,
174
+ useSyncFileSystemCalls : true ,
175
+ } ) ;
176
+
177
+ resolver . resolve (
178
+ { } ,
179
+ referenceDir ,
180
+ "main-field-package" ,
181
+ { } ,
182
+ ( err2 , resultStar ) => {
183
+ if ( err2 ) return done ( err2 ) ;
184
+ if ( ! resultStar ) {
185
+ return done ( new Error ( "No result for main-field-package" ) ) ;
186
+ }
187
+ expect ( resultStar ) . toEqual (
188
+ path . join (
189
+ referenceDir ,
190
+ "src" ,
191
+ "mapped" ,
192
+ "star" ,
193
+ "main-field-package" ,
194
+ "node.ts" ,
195
+ ) ,
196
+ ) ;
197
+ done ( ) ;
198
+ } ,
199
+ ) ;
200
+ } ) ;
201
+
202
+ it ( "browser-field-package resolves to src/mapped/star/browser-field-package/browser.ts in referenceExample project" , ( done ) => {
203
+ const resolver = ResolverFactory . createResolver ( {
204
+ fileSystem,
205
+ extensions : [ ".ts" , ".tsx" ] ,
206
+ mainFields : [ "browser" , "main" ] ,
207
+ mainFiles : [ "index" ] ,
208
+ tsconfig : path . join ( referenceDir , "tsconfig.json" ) ,
209
+ useSyncFileSystemCalls : true ,
210
+ } ) ;
211
+ resolver . resolve (
212
+ { } ,
213
+ referenceDir ,
214
+ "browser-field-package" ,
215
+ { } ,
216
+ ( err2 , resultStar ) => {
217
+ if ( err2 ) return done ( err2 ) ;
218
+ if ( ! resultStar ) {
219
+ return done ( new Error ( "No result for browser-field-package" ) ) ;
220
+ }
221
+ expect ( resultStar ) . toEqual (
222
+ path . join (
223
+ referenceDir ,
224
+ "src" ,
225
+ "mapped" ,
226
+ "star" ,
227
+ "browser-field-package" ,
228
+ "browser.ts" ,
229
+ ) ,
230
+ ) ;
231
+ done ( ) ;
232
+ } ,
233
+ ) ;
234
+ } ) ;
235
+
236
+ it ( "no-main-field-package resolves to src/mapped/star/no-main-field-package/index.ts in referenceExample project" , ( done ) => {
237
+ const resolver = ResolverFactory . createResolver ( {
238
+ fileSystem,
239
+ extensions : [ ".ts" , ".tsx" ] ,
240
+ mainFields : [ "browser" , "main" ] ,
241
+ mainFiles : [ "index" ] ,
242
+ tsconfig : path . join ( referenceDir , "tsconfig.json" ) ,
243
+ useSyncFileSystemCalls : true ,
244
+ } ) ;
245
+ resolver . resolve (
246
+ { } ,
247
+ referenceDir ,
248
+ "no-main-field-package" ,
249
+ { } ,
250
+ ( err2 , resultStar ) => {
251
+ if ( err2 ) return done ( err2 ) ;
252
+ if ( ! resultStar ) {
253
+ return done ( new Error ( "No result for no-main-field-package" ) ) ;
254
+ }
255
+ expect ( resultStar ) . toEqual (
256
+ path . join (
257
+ referenceDir ,
258
+ "src" ,
259
+ "mapped" ,
260
+ "star" ,
261
+ "no-main-field-package" ,
262
+ "index.ts" ,
263
+ ) ,
264
+ ) ;
265
+ done ( ) ;
266
+ } ,
267
+ ) ;
268
+ } ) ;
166
269
} ) ;
0 commit comments