MCPcopy Create free account
hub / github.com/effect-app/libs / parseNamespaceTs

Function parseNamespaceTs

repos/effect/packages/tools/jsdocs/src/Jsdocs.ts:3032–3101  ·  view source on GitHub ↗
(
  node: ts.ModuleDeclaration,
  diagnostics: Array<JSDocModelDiagnostic>,
  linkContext: { readonly checker: ts.TypeChecker; readonly entry: ProgramCacheEntry; readonly cwd: string },
  isInsideDeclare = false
)

Source from the content-addressed store, hash-verified

3030 return symbol === undefined ? null : symbolSignature(name, bucket, symbol, specifier.name, checker, cwd)
3031}
3032
3033function parseMembersFromTsType(
3034 type: ts.TypeNode | undefined,
3035 diagnostics: Array<JSDocModelDiagnostic>,
3036 linkContext: { readonly checker: ts.TypeChecker; readonly entry: ProgramCacheEntry; readonly cwd: string }
3037): Array<ParsedMember> {
3038 if (!type) return []
3039 if (ts.isTypeLiteralNode(type)) return parseTsMembers(type.members, diagnostics, linkContext)
3040 if (ts.isUnionTypeNode(type) || ts.isIntersectionTypeNode(type)) {
3041 return type.types.flatMap((item) => parseMembersFromTsType(item, diagnostics, linkContext))
3042 }
3043 if (ts.isParenthesizedTypeNode(type) || ts.isTypeOperatorNode(type)) {
3044 return parseMembersFromTsType(type.type, diagnostics, linkContext)
3045 }
3046 if (ts.isArrayTypeNode(type)) return parseMembersFromTsType(type.elementType, diagnostics, linkContext)
3047 if (ts.isConditionalTypeNode(type)) {
3048 return [
3049 ...parseMembersFromTsType(type.checkType, diagnostics, linkContext),
3050 ...parseMembersFromTsType(type.extendsType, diagnostics, linkContext),
3051 ...parseMembersFromTsType(type.trueType, diagnostics, linkContext),
3052 ...parseMembersFromTsType(type.falseType, diagnostics, linkContext)
3053 ]
3054 }
3055 if (ts.isTypeReferenceNode(type)) {
3056 return type.typeArguments?.flatMap((item) => parseMembersFromTsType(item, diagnostics, linkContext)) ?? []
3057 }
3058 if (ts.isMappedTypeNode(type)) return parseMembersFromTsType(type.type, diagnostics, linkContext)
3059 if (ts.isIndexedAccessTypeNode(type)) {
3060 return [
3061 ...parseMembersFromTsType(type.objectType, diagnostics, linkContext),
3062 ...parseMembersFromTsType(type.indexType, diagnostics, linkContext)
3063 ]
3064 }
3065 if (ts.isFunctionTypeNode(type) || ts.isConstructorTypeNode(type)) {
3066 return parseMembersFromTsType(type.type, diagnostics, linkContext)
3067 }
3068 return []
3069}
3070
3071function memberName(member: ts.TypeElement | ts.ClassElement): string {
3072 if (
3073 ts.isPropertySignature(member) || ts.isMethodSignature(member) || ts.isPropertyDeclaration(member) ||
3074 ts.isMethodDeclaration(member) || ts.isGetAccessorDeclaration(member) || ts.isSetAccessorDeclaration(member)
3075 ) {
3076 const name = member.name
3077 if (ts.isComputedPropertyName(name)) return name.expression.getText(member.getSourceFile())
3078 return name.getText(member.getSourceFile()).replace(/^[']|[']$/g, "")
3079 }
3080 return ""
3081}
3082
3083function memberType(member: ts.TypeElement | ts.ClassElement): ts.TypeNode | undefined {
3084 if (
3085 ts.isPropertySignature(member) || ts.isMethodSignature(member) || ts.isPropertyDeclaration(member) ||
3086 ts.isMethodDeclaration(member) || ts.isGetAccessorDeclaration(member) || ts.isSetAccessorDeclaration(member)
3087 ) return member.type
3088 return undefined
3089}

Callers 1

parseSourceFileDocsFunction · 0.85

Calls 10

hasDeclareModifierFunction · 0.85
diagnosticFunction · 0.85
nodeRangeFunction · 0.85
parseDocumentedTsFunction · 0.85
bucketOfTsFunction · 0.85
declarationNameFunction · 0.85
publicDeclarationRangeFunction · 0.85
pushMethod · 0.80
hasExportModifierFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…