@@ -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,16 @@ 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
+ const opts = await parser . parserOpts ;
33
+ parser . parserOpts = isObjectLike ( opts ) ? opts . parserOpts : undefined ;
33
34
return parser ;
34
35
}
35
36
@@ -40,10 +41,10 @@ export async function loadParserOpts(
40
41
parser . name . startsWith ( 'conventional-changelog-' )
41
42
) {
42
43
return new Promise ( ( resolve ) => {
43
- const result = parser . parserOpts ( ( _ : never , opts ) => {
44
+ const result = parser . parserOpts ( ( _ : never , opts : any ) => {
44
45
resolve ( {
45
46
...parser ,
46
- parserOpts : opts . parserOpts ,
47
+ parserOpts : opts ? .parserOpts ,
47
48
} ) ;
48
49
} ) ;
49
50
@@ -53,20 +54,13 @@ export async function loadParserOpts(
53
54
Promise . resolve ( result ) . then ( ( opts ) => {
54
55
resolve ( {
55
56
...parser ,
56
- parserOpts : opts . parserOpts ,
57
+ parserOpts : opts ? .parserOpts ,
57
58
} ) ;
58
59
} ) ;
59
60
}
60
61
return ;
61
62
} ) ;
62
63
}
63
64
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
65
return parser ;
72
66
}
0 commit comments