kazupon / api-docs-gen

:book: API Documentation generator from `api-extractor` doc model

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fatal error when resolving {@link} expressions.

jsamr opened this issue · comments

Example:

/**
 * A
 *
 * @public
 */
export type A = string;

/**
 * {@link A}
 *
 * @public
 */
export type B = number;

Process will exit with code 1, and throw this exception:

TypeError: resolver is not a function
    at getDocSectionContent (/home/jsamr/tmp/api-docs-gen/lib/processor/utils.js:445:46)
    at Object.buildTypeAliasContent (/home/jsamr/tmp/api-docs-gen/lib/processor/utils.js:325:9)
    at buildContents (/home/jsamr/tmp/api-docs-gen/lib/processor/toc.js:78:29)
    at build (/home/jsamr/tmp/api-docs-gen/lib/processor/toc.js:29:9)
    at Object.process [as processor] (/home/jsamr/tmp/api-docs-gen/lib/processor/toc.js:91:12)
    at Object.generate (/home/jsamr/tmp/api-docs-gen/lib/generator.js:30:29)
    at /home/jsamr/tmp/api-docs-gen/lib/cli.js:89:27
    at Object.<anonymous> (/home/jsamr/tmp/api-docs-gen/lib/cli.js:92:7)
    at Module._compile (internal/modules/cjs/loader.js:1251:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1272:10)

To reproduce, apply this patch on master (16585f9):

diff --git a/examples/packages/utilities/src/index.ts b/examples/packages/utilities/src/index.ts
index 64a02e2..6507747 100644
--- a/examples/packages/utilities/src/index.ts
+++ b/examples/packages/utilities/src/index.ts
@@ -70,3 +70,17 @@ export function isSymbol(val: unknown): val is symbol {
 export function isPromise<T = any>(val: unknown): val is Promise<T> { // eslint-disable-line
   return isObject(val) && isFunction(val.then) && isFunction(val.catch)
 }
+
+/**
+ * A
+ *
+ * @public
+ */
+export type A = string;
+
+/**
+ * {@link A}
+ *
+ * @public
+ */
+export type B = number;

I have investigated a little. Resolver is sometimes undefined, so here is a hotfix:

diff --git a/src/processor/utils.ts b/src/processor/utils.ts
index bbc8667..e12d296 100644
--- a/src/processor/utils.ts
+++ b/src/processor/utils.ts
@@ -764,7 +764,7 @@ export function getDocSectionContent(
               codeDestination,
               contextItem
             )
-            if (result.resolvedApiItem) {
+            if (result.resolvedApiItem && resolver) {
               const filepath = resolver(
                 style,
                 result.resolvedApiItem,