mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
feat(api-extractor): replace type parameters with their actual values on inherited members (#9939)
* refactor: use tokenRange for typeParams in heritage * fix: correct type param replacement
This commit is contained in:
@@ -538,9 +538,6 @@ export class ApiModelGenerator {
|
||||
|
||||
if (apiClass === undefined) {
|
||||
const classDeclaration: ts.ClassDeclaration = astDeclaration.declaration as ts.ClassDeclaration;
|
||||
if (name === 'ActionRow') {
|
||||
console.dir(classDeclaration.heritageClauses?.[0]?.types[0]?.typeArguments, { depth: 3 });
|
||||
}
|
||||
|
||||
const nodesToCapture: IExcerptBuilderNodeToCapture[] = [];
|
||||
|
||||
@@ -557,9 +554,12 @@ export class ApiModelGenerator {
|
||||
extendsTokenRange = ExcerptBuilder.createEmptyTokenRangeWithTypeParameters();
|
||||
if (heritageClause.types.length > 0) {
|
||||
extendsTokenRange.typeParameters.push(
|
||||
...(heritageClause.types[0]?.typeArguments?.map((typeArgument) =>
|
||||
ts.isTypeReferenceNode(typeArgument) ? typeArgument.typeName.getText() : '',
|
||||
) ?? []),
|
||||
...(heritageClause.types[0]?.typeArguments?.map((typeArgument) => {
|
||||
const typeArgumentTokenRange = ExcerptBuilder.createEmptyTokenRange();
|
||||
nodesToCapture.push({ node: typeArgument, tokenRange: typeArgumentTokenRange });
|
||||
|
||||
return typeArgumentTokenRange;
|
||||
}) ?? []),
|
||||
);
|
||||
nodesToCapture.push({ node: heritageClause.types[0], tokenRange: extendsTokenRange });
|
||||
}
|
||||
@@ -568,9 +568,14 @@ export class ApiModelGenerator {
|
||||
const implementsTokenRange: IExcerptTokenRangeWithTypeParameters =
|
||||
ExcerptBuilder.createEmptyTokenRangeWithTypeParameters();
|
||||
implementsTokenRange.typeParameters.push(
|
||||
...(heritageClause.types[0]?.typeArguments?.map((typeArgument) =>
|
||||
ts.isTypeReferenceNode(typeArgument) ? typeArgument.typeName.getText() : '',
|
||||
) ?? []),
|
||||
...(heritageType.typeArguments?.map((typeArgument) => {
|
||||
const typeArgumentTokenRange = ExcerptBuilder.createEmptyTokenRange();
|
||||
if (ts.isTypeReferenceNode(typeArgument)) {
|
||||
nodesToCapture.push({ node: typeArgument, tokenRange: typeArgumentTokenRange });
|
||||
}
|
||||
|
||||
return typeArgumentTokenRange;
|
||||
}) ?? []),
|
||||
);
|
||||
implementsTokenRanges.push(implementsTokenRange);
|
||||
nodesToCapture.push({ node: heritageType, tokenRange: implementsTokenRange });
|
||||
@@ -893,9 +898,14 @@ export class ApiModelGenerator {
|
||||
const extendsTokenRange: IExcerptTokenRangeWithTypeParameters =
|
||||
ExcerptBuilder.createEmptyTokenRangeWithTypeParameters();
|
||||
extendsTokenRange.typeParameters.push(
|
||||
...(heritageClause.types[0]?.typeArguments?.map((typeArgument) =>
|
||||
ts.isTypeReferenceNode(typeArgument) ? typeArgument.typeName.getText() : '',
|
||||
) ?? []),
|
||||
...(heritageType.typeArguments?.map((typeArgument) => {
|
||||
const typeArgumentTokenRange = ExcerptBuilder.createEmptyTokenRange();
|
||||
if (ts.isTypeReferenceNode(typeArgument)) {
|
||||
nodesToCapture.push({ node: typeArgument, tokenRange: typeArgumentTokenRange });
|
||||
}
|
||||
|
||||
return typeArgumentTokenRange;
|
||||
}) ?? []),
|
||||
);
|
||||
extendsTokenRanges.push(extendsTokenRange);
|
||||
nodesToCapture.push({ node: heritageType, tokenRange: extendsTokenRange });
|
||||
|
||||
@@ -176,14 +176,17 @@ export class ExcerptBuilder {
|
||||
|
||||
if (span.kind === ts.SyntaxKind.Identifier) {
|
||||
const name: ts.Identifier = span.node as ts.Identifier;
|
||||
if (!ExcerptBuilder._isDeclarationName(name)) {
|
||||
canonicalReference = state.referenceGenerator.getDeclarationReferenceForIdentifier(name);
|
||||
}
|
||||
canonicalReference = state.referenceGenerator.getDeclarationReferenceForIdentifier(name);
|
||||
}
|
||||
|
||||
if (canonicalReference) {
|
||||
ExcerptBuilder._appendToken(excerptTokens, ExcerptTokenKind.Reference, span.prefix, canonicalReference);
|
||||
} else if (ExcerptBuilder.isPrimitiveKeyword(span.node)) {
|
||||
} else if (
|
||||
ExcerptBuilder.isPrimitiveKeyword(span.node) ||
|
||||
(span.node.kind === ts.SyntaxKind.Identifier &&
|
||||
((ts.isTypeReferenceNode(span.node.parent) && span.node.parent.typeName === span.node) ||
|
||||
(ts.isTypeParameterDeclaration(span.node.parent) && span.node.parent.name === span.node)))
|
||||
) {
|
||||
ExcerptBuilder._appendToken(excerptTokens, ExcerptTokenKind.Reference, span.prefix);
|
||||
} else {
|
||||
ExcerptBuilder._appendToken(excerptTokens, ExcerptTokenKind.Content, span.prefix);
|
||||
@@ -209,7 +212,11 @@ export class ExcerptBuilder {
|
||||
}
|
||||
|
||||
if (span.separator) {
|
||||
ExcerptBuilder._appendToken(excerptTokens, ExcerptTokenKind.Content, span.separator);
|
||||
ExcerptBuilder._appendToken(
|
||||
excerptTokens,
|
||||
ExcerptTokenKind.Content,
|
||||
span.separator.replaceAll('\n', '').replaceAll(/\s{2}/g, ' '),
|
||||
);
|
||||
state.lastAppendedTokenIsSeparator = true;
|
||||
}
|
||||
|
||||
@@ -335,7 +342,7 @@ export class ExcerptBuilder {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} /*
|
||||
|
||||
private static _isDeclarationName(name: ts.Identifier): boolean {
|
||||
return ExcerptBuilder._isDeclaration(name.parent) && name.parent.name === name;
|
||||
@@ -366,5 +373,5 @@ export class ExcerptBuilder {
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} // */
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user