@doccov/sdk 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +83 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2910,6 +2910,86 @@ function serializeFunctionExport(declaration, symbol, context) {
|
|
|
2910
2910
|
}
|
|
2911
2911
|
|
|
2912
2912
|
// src/analysis/serializers/interfaces.ts
|
|
2913
|
+
function serializeInterfaceMembers(declaration, checker, typeRefs, referencedTypes) {
|
|
2914
|
+
const members = [];
|
|
2915
|
+
for (const member of declaration.members) {
|
|
2916
|
+
if (ts2.isPropertySignature(member)) {
|
|
2917
|
+
const memberName = member.name?.getText();
|
|
2918
|
+
if (!memberName)
|
|
2919
|
+
continue;
|
|
2920
|
+
const memberSymbol = member.name ? checker.getSymbolAtLocation(member.name) : undefined;
|
|
2921
|
+
const memberDoc = memberSymbol ? parseJSDocComment(memberSymbol, checker) : null;
|
|
2922
|
+
const memberType = member.type ? checker.getTypeAtLocation(member.type) : checker.getAnyType();
|
|
2923
|
+
collectReferencedTypes(memberType, checker, referencedTypes);
|
|
2924
|
+
const schema = formatTypeReference(memberType, checker, typeRefs, referencedTypes);
|
|
2925
|
+
const flags = {};
|
|
2926
|
+
if (member.questionToken) {
|
|
2927
|
+
flags.optional = true;
|
|
2928
|
+
}
|
|
2929
|
+
if (member.modifiers?.some((mod) => mod.kind === ts2.SyntaxKind.ReadonlyKeyword)) {
|
|
2930
|
+
flags.readonly = true;
|
|
2931
|
+
}
|
|
2932
|
+
members.push({
|
|
2933
|
+
id: memberName,
|
|
2934
|
+
name: memberName,
|
|
2935
|
+
kind: "property",
|
|
2936
|
+
schema,
|
|
2937
|
+
description: memberDoc?.description ?? (memberSymbol ? getJSDocComment(memberSymbol, checker) : undefined),
|
|
2938
|
+
flags: Object.keys(flags).length > 0 ? flags : undefined,
|
|
2939
|
+
tags: memberDoc?.tags
|
|
2940
|
+
});
|
|
2941
|
+
} else if (ts2.isMethodSignature(member)) {
|
|
2942
|
+
const methodName = member.name?.getText();
|
|
2943
|
+
if (!methodName)
|
|
2944
|
+
continue;
|
|
2945
|
+
const memberSymbol = member.name ? checker.getSymbolAtLocation(member.name) : undefined;
|
|
2946
|
+
const methodDoc = memberSymbol ? parseJSDocComment(memberSymbol, checker) : null;
|
|
2947
|
+
const signature = checker.getSignatureFromDeclaration(member);
|
|
2948
|
+
if (signature) {
|
|
2949
|
+
const parameters = signature.getParameters().map((param) => {
|
|
2950
|
+
const paramDecl = param.declarations?.find(ts2.isParameter);
|
|
2951
|
+
const paramType = paramDecl ? checker.getTypeAtLocation(paramDecl) : checker.getTypeOfSymbolAtLocation(param, member);
|
|
2952
|
+
collectReferencedTypes(paramType, checker, referencedTypes);
|
|
2953
|
+
if (paramDecl) {
|
|
2954
|
+
const paramDoc = getParameterDocumentation(param, paramDecl, checker);
|
|
2955
|
+
return structureParameter(param, paramDecl, paramType, checker, typeRefs, null, paramDoc, referencedTypes);
|
|
2956
|
+
}
|
|
2957
|
+
return {
|
|
2958
|
+
name: param.getName(),
|
|
2959
|
+
required: !(param.flags & ts2.SymbolFlags.Optional),
|
|
2960
|
+
schema: formatTypeReference(paramType, checker, typeRefs, referencedTypes)
|
|
2961
|
+
};
|
|
2962
|
+
});
|
|
2963
|
+
const returnType = signature.getReturnType();
|
|
2964
|
+
if (returnType) {
|
|
2965
|
+
collectReferencedTypes(returnType, checker, referencedTypes);
|
|
2966
|
+
}
|
|
2967
|
+
const flags = {};
|
|
2968
|
+
if (member.questionToken) {
|
|
2969
|
+
flags.optional = true;
|
|
2970
|
+
}
|
|
2971
|
+
members.push({
|
|
2972
|
+
id: methodName,
|
|
2973
|
+
name: methodName,
|
|
2974
|
+
kind: "method",
|
|
2975
|
+
signatures: [
|
|
2976
|
+
{
|
|
2977
|
+
parameters,
|
|
2978
|
+
returns: {
|
|
2979
|
+
schema: returnType ? formatTypeReference(returnType, checker, typeRefs, referencedTypes) : { type: "void" }
|
|
2980
|
+
},
|
|
2981
|
+
description: methodDoc?.description
|
|
2982
|
+
}
|
|
2983
|
+
],
|
|
2984
|
+
description: methodDoc?.description ?? (memberSymbol ? getJSDocComment(memberSymbol, checker) : undefined),
|
|
2985
|
+
flags: Object.keys(flags).length > 0 ? flags : undefined,
|
|
2986
|
+
tags: methodDoc?.tags
|
|
2987
|
+
});
|
|
2988
|
+
}
|
|
2989
|
+
}
|
|
2990
|
+
}
|
|
2991
|
+
return members;
|
|
2992
|
+
}
|
|
2913
2993
|
function serializeInterface(declaration, symbol, context) {
|
|
2914
2994
|
const { checker, typeRegistry } = context;
|
|
2915
2995
|
const parsedDoc = parseJSDocComment(symbol, checker);
|
|
@@ -2918,6 +2998,7 @@ function serializeInterface(declaration, symbol, context) {
|
|
|
2918
2998
|
const referencedTypes = typeRegistry.getReferencedTypes();
|
|
2919
2999
|
const typeRefs = typeRegistry.getTypeRefs();
|
|
2920
3000
|
const typeParameters = serializeTypeParameterDeclarations(declaration.typeParameters, checker, referencedTypes);
|
|
3001
|
+
const members = serializeInterfaceMembers(declaration, checker, typeRefs, referencedTypes);
|
|
2921
3002
|
const exportEntry = {
|
|
2922
3003
|
id: symbol.getName(),
|
|
2923
3004
|
name: symbol.getName(),
|
|
@@ -2926,6 +3007,7 @@ function serializeInterface(declaration, symbol, context) {
|
|
|
2926
3007
|
deprecated: isSymbolDeprecated(symbol),
|
|
2927
3008
|
description,
|
|
2928
3009
|
source: getSourceLocation(declaration),
|
|
3010
|
+
members,
|
|
2929
3011
|
typeParameters,
|
|
2930
3012
|
tags: parsedDoc?.tags,
|
|
2931
3013
|
examples: parsedDoc?.examples
|
|
@@ -2937,6 +3019,7 @@ function serializeInterface(declaration, symbol, context) {
|
|
|
2937
3019
|
...metadata,
|
|
2938
3020
|
kind: "interface",
|
|
2939
3021
|
schema,
|
|
3022
|
+
members,
|
|
2940
3023
|
description,
|
|
2941
3024
|
source: getSourceLocation(declaration),
|
|
2942
3025
|
tags: parsedDoc?.tags
|