Skip to content

Commit

Permalink
fix: simplify parserOpts resolution
Browse files Browse the repository at this point in the history
  • Loading branch information
armano2 committed Jan 29, 2021
1 parent 4ac0c5e commit 5ee7d22
Showing 1 changed file with 13 additions and 14 deletions.
27 changes: 13 additions & 14 deletions @commitlint/load/src/utils/load-parser-opts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@ function isObjectLike(obj: unknown): obj is Record<string, unknown> {
return Boolean(obj) && typeof obj === 'object'; // typeof null === 'object'
}

function isPromiseLike(obj: unknown): obj is Promise<unknown> {
return isObjectLike(obj) && typeof (obj as any).then === 'function';
}

function isParserOptsFunction<T extends ParserPreset>(
obj: T
): obj is T & {
Expand All @@ -27,9 +23,19 @@ export async function loadParserOpts(
// Await for the module, loaded with require
const parser = await pendingParser;

// Await parser opts if applicable
if (isPromiseLike(parser.parserOpts)) {
parser.parserOpts = ((await parser.parserOpts) as any).parserOpts;
// exit early if there is no opts
if (!parser.parserOpts) {
return parser;
}

// Pull nested parserOpts, might happen if overwritten with a module in main config
if (typeof parser.parserOpts === 'object') {
// Await parser opts if applicable
const opts = await parser.parserOpts;
parser.parserOpts =
isObjectLike(opts) && isObjectLike(opts.parserOpts)
? opts.parserOpts
: undefined;
return parser;
}

Expand Down Expand Up @@ -61,12 +67,5 @@ export async function loadParserOpts(
});
}

// Pull nested parserOpts, might happen if overwritten with a module in main config
if (
isObjectLike(parser.parserOpts) &&
typeof parser.parserOpts.parserOpts === 'object'
) {
parser.parserOpts = parser.parserOpts.parserOpts;
}
return parser;
}

0 comments on commit 5ee7d22

Please sign in to comment.