@@ -4,16 +4,10 @@ function isObjectLike(obj: unknown): obj is Record<string, unknown> {
4
4
return Boolean ( obj ) && typeof obj === 'object' ; // typeof null === 'object'
5
5
}
6
6
7
- function isPromiseLike ( obj : unknown ) : obj is Promise < unknown > {
8
- return isObjectLike ( obj ) && typeof ( obj as any ) . then === 'function' ;
9
- }
10
-
11
7
function isParserOptsFunction < T extends ParserPreset > (
12
8
obj : T
13
9
) : obj is T & {
14
- parserOpts : (
15
- cb : ( _ : never , parserOpts : Record < string , unknown > ) => unknown
16
- ) => Record < string , unknown > | undefined ;
10
+ parserOpts : ( ...args : any [ ] ) => any ;
17
11
} {
18
12
return typeof obj . parserOpts === 'function' ;
19
13
}
@@ -27,9 +21,21 @@ export async function loadParserOpts(
27
21
// Await for the module, loaded with require
28
22
const parser = await pendingParser ;
29
23
30
- // Await parser opts if applicable
31
- if ( isPromiseLike ( parser . parserOpts ) ) {
32
- parser . parserOpts = ( ( await parser . parserOpts ) as any ) . parserOpts ;
24
+ // exit early, no opts to resolve
25
+ if ( ! parser . parserOpts ) {
26
+ return parser ;
27
+ }
28
+
29
+ // Pull nested parserOpts, might happen if overwritten with a module in main config
30
+ if ( typeof parser . parserOpts === 'object' ) {
31
+ // Await parser opts if applicable
32
+ parser . parserOpts = await parser . parserOpts ;
33
+ if (
34
+ isObjectLike ( parser . parserOpts ) &&
35
+ isObjectLike ( parser . parserOpts . parserOpts )
36
+ ) {
37
+ parser . parserOpts = parser . parserOpts . parserOpts ;
38
+ }
33
39
return parser ;
34
40
}
35
41
@@ -40,10 +46,10 @@ export async function loadParserOpts(
40
46
parser . name . startsWith ( 'conventional-changelog-' )
41
47
) {
42
48
return new Promise ( ( resolve ) => {
43
- const result = parser . parserOpts ( ( _ : never , opts ) => {
49
+ const result = parser . parserOpts ( ( _ : never , opts : any ) => {
44
50
resolve ( {
45
51
...parser ,
46
- parserOpts : opts . parserOpts ,
52
+ parserOpts : opts ? .parserOpts ,
47
53
} ) ;
48
54
} ) ;
49
55
@@ -53,20 +59,13 @@ export async function loadParserOpts(
53
59
Promise . resolve ( result ) . then ( ( opts ) => {
54
60
resolve ( {
55
61
...parser ,
56
- parserOpts : opts . parserOpts ,
62
+ parserOpts : opts ? .parserOpts ,
57
63
} ) ;
58
64
} ) ;
59
65
}
60
66
return ;
61
67
} ) ;
62
68
}
63
69
64
- // Pull nested parserOpts, might happen if overwritten with a module in main config
65
- if (
66
- isObjectLike ( parser . parserOpts ) &&
67
- typeof parser . parserOpts . parserOpts === 'object'
68
- ) {
69
- parser . parserOpts = parser . parserOpts . parserOpts ;
70
- }
71
70
return parser ;
72
71
}
0 commit comments