1
1
import { cosmiconfig , cosmiconfigSync , Loader , defaultLoaders } from 'cosmiconfig' ;
2
2
import { env } from 'string-env-interpolation' ;
3
- import jiti from 'jiti' ;
3
+ import { createJiti } from 'jiti' ;
4
4
5
5
export interface ConfigSearchResult {
6
6
config : any ;
@@ -29,21 +29,23 @@ function createCustomLoader(loader: Loader): Loader {
29
29
}
30
30
31
31
export function createCosmiConfig ( moduleName : string , legacy : boolean ) {
32
- const options = prepareCosmiconfig ( moduleName , legacy ) ;
33
-
32
+ const options = prepareCosmiconfig ( moduleName , legacy , 'async' ) ;
34
33
return cosmiconfig ( moduleName , options ) ;
35
34
}
36
35
37
36
export function createCosmiConfigSync ( moduleName : string , legacy : boolean ) {
38
- const options = prepareCosmiconfig ( moduleName , legacy ) ;
37
+ const options = prepareCosmiconfig ( moduleName , legacy , 'sync' ) ;
39
38
return cosmiconfigSync ( moduleName , options ) ;
40
39
}
41
40
42
41
const loadTypeScript : Loader = ( filepath ) => {
43
- const jitiLoader = jiti ( __filename , {
44
- interopDefault : true ,
45
- } ) ;
46
- return jitiLoader ( filepath ) ;
42
+ const jiti = createJiti ( __filename , { interopDefault : true } ) ;
43
+ return jiti . import ( filepath ) ;
44
+ } ;
45
+
46
+ const loadTypeScriptSync : Loader = ( filepath ) => {
47
+ const jiti = createJiti ( __filename , { interopDefault : true } ) ;
48
+ return jiti ( filepath ) ;
47
49
} ;
48
50
49
51
const loadToml : Loader = ( ...args ) => {
@@ -57,6 +59,7 @@ const loadYaml = createCustomLoader(defaultLoaders['.yaml']);
57
59
function prepareCosmiconfig (
58
60
moduleName : string ,
59
61
legacy : boolean ,
62
+ mode : 'sync' | 'async' ,
60
63
) : {
61
64
searchPlaces : string [ ] ;
62
65
loaders : Record < string , Loader > ;
@@ -95,11 +98,11 @@ function prepareCosmiconfig(
95
98
return {
96
99
searchPlaces : searchPlaces . map ( ( place ) => place . replace ( '#' , moduleName ) ) ,
97
100
loaders : {
98
- '.ts' : loadTypeScript ,
99
- '.cts' : loadTypeScript ,
100
- '.mts' : loadTypeScript ,
101
- '.js' : loadTypeScript ,
102
- '.mjs' : loadTypeScript ,
101
+ '.ts' : mode === 'async' ? loadTypeScript : loadTypeScriptSync ,
102
+ '.cts' : mode === 'async' ? loadTypeScript : loadTypeScriptSync ,
103
+ '.mts' : mode === 'async' ? loadTypeScript : loadTypeScriptSync ,
104
+ '.js' : mode === 'async' ? loadTypeScript : loadTypeScriptSync ,
105
+ '.mjs' : mode === 'async' ? loadTypeScript : loadTypeScriptSync ,
103
106
'.json' : defaultLoaders [ '.json' ] ,
104
107
'.yaml' : loadYaml ,
105
108
'.yml' : loadYaml ,
0 commit comments