1 | import * as fs from 'fs';
|
2 | import { dirname, resolve } from 'path';
|
3 |
|
4 | function isFile ( file ) {
|
5 | try {
|
6 | const stats = fs.statSync( file );
|
7 | return stats.isFile();
|
8 | } catch ( err ) {
|
9 | return false;
|
10 | }
|
11 | }
|
12 |
|
13 | function addJsExtensionIfNecessary ( file ) {
|
14 | if ( isFile( file ) ) return file;
|
15 |
|
16 | file += '.js';
|
17 | if ( isFile( file ) ) return file;
|
18 |
|
19 | return null;
|
20 | }
|
21 |
|
22 | const absolutePath = /^(?:\/|(?:[A-Za-z]:)?[\\|/])/;
|
23 |
|
24 | function isAbsolute ( path ) {
|
25 | return absolutePath.test( path );
|
26 | }
|
27 |
|
28 | export default function defaultResolver ( importee, importer ) {
|
29 |
|
30 | if ( isAbsolute( importee ) ) return addJsExtensionIfNecessary( resolve( importee ) );
|
31 |
|
32 |
|
33 | if ( importer === undefined ) return addJsExtensionIfNecessary( resolve( process.cwd(), importee ) );
|
34 |
|
35 |
|
36 | if ( importee[0] !== '.' ) return null;
|
37 |
|
38 | return addJsExtensionIfNecessary( resolve( dirname( importer ), importee ) );
|
39 | }
|