{
  "version": 3,
  "sources": ["../../src/lib/docs.ts"],
  "sourcesContent": ["import {relative, resolve} from 'node:path/posix';\nimport type {\n  ArrowFunction,\n  CompilerOptions,\n  Declaration,\n  EnumDeclaration,\n  Node,\n  Signature,\n  SourceFile,\n  TypeChecker,\n  Symbol as TypeScriptSymbol,\n  VariableDeclaration\n} from 'typescript';\nimport {\n  ModifierFlags,\n  ModuleKind,\n  NodeFlags,\n  ScriptTarget,\n  SyntaxKind,\n  createProgram,\n  displayPartsToString,\n  forEachChild,\n  getCombinedModifierFlags,\n  isArrowFunction,\n  isClassDeclaration,\n  isEnumDeclaration,\n  isFunctionDeclaration,\n  isIdentifier,\n  isInterfaceDeclaration,\n  isMethodDeclaration,\n  isModuleDeclaration,\n  isPropertyDeclaration,\n  isPropertySignature,\n  isTypeAliasDeclaration,\n  isVariableDeclaration,\n  isVariableStatement\n} from 'typescript';\nimport type {BuildOptions, DocEntry, DocEntryConstructor, DocEntryType} from './types';\n\n/** Serialize a symbol into a json object */\nconst serializeSymbol = ({\n  checker,\n  symbol,\n  doc_type\n}: {\n  checker: TypeChecker;\n  symbol: TypeScriptSymbol;\n  doc_type?: DocEntryType;\n}): DocEntry => ({\n  name: symbol.getName(),\n  documentation: displayPartsToString(symbol.getDocumentationComment(checker)),\n  type: checker.typeToString(checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration!)),\n  jsDocs: symbol.getJsDocTags(),\n  ...(doc_type !== undefined && {doc_type})\n});\n\nconst isInternal = (symbol: TypeScriptSymbol | undefined): boolean =>\n  symbol?.getJsDocTags().some(({name}) => name === 'internal') ?? false;\n\nconst serializeEnum = ({\n  checker,\n  symbol,\n  doc_type,\n  skipInternal\n}: {\n  checker: TypeChecker;\n  symbol: TypeScriptSymbol;\n  doc_type?: DocEntryType;\n  skipInternal?: boolean;\n}): DocEntry => {\n  const {members} = symbol.valueDeclaration as EnumDeclaration;\n\n  const properties: DocEntry[] = members\n    .filter((member) => {\n      if (!skipInternal) {\n        return true;\n      }\n\n      const {symbol} = member as unknown as {symbol: TypeScriptSymbol};\n      return !isInternal(symbol);\n    })\n    .map((member) => {\n      const documentation = displayPartsToString(\n        (member as unknown as {symbol: TypeScriptSymbol}).symbol.getDocumentationComment(checker)\n      );\n\n      const type = member.initializer?.getText();\n\n      return {\n        name: member.name.getText(),\n        ...(type !== undefined && {type}),\n        ...(documentation !== '' && {documentation})\n      };\n    });\n\n  return {\n    name: symbol.getName(),\n    documentation: displayPartsToString(symbol.getDocumentationComment(checker)),\n    properties,\n    jsDocs: symbol.getJsDocTags(),\n    doc_type: doc_type ?? 'enum'\n  };\n};\n\n/** Serialize a class symbol information */\nconst serializeClass = ({\n  checker,\n  symbol,\n  skipInternal\n}: {\n  checker: TypeChecker;\n  symbol: TypeScriptSymbol;\n  skipInternal?: boolean;\n}): DocEntry => {\n  const details = serializeSymbol({checker, symbol, doc_type: 'class'});\n\n  // Get the construct signatures\n  const constructorType = checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration!);\n\n  details.constructors = constructorType\n    .getConstructSignatures()\n    .filter((signature: Signature) => {\n      if (!skipInternal) {\n        return true;\n      }\n\n      return !signature.getJsDocTags().some(({name}) => name === 'internal');\n    })\n    .map((signature: Signature) => serializeSignature({checker, signature}))\n    .filter(({documentation}) => documentation !== undefined && documentation !== '');\n\n  return details;\n};\n\n/** True if this is visible outside this file, false otherwise */\nconst isNodeExportedOrPublic = (node: Node): boolean => {\n  const flags = getCombinedModifierFlags(node as Declaration);\n\n  // Check for '#' methods or properties\n  if (\n    (isMethodDeclaration(node) || isPropertyDeclaration(node)) &&\n    node.name.kind === SyntaxKind.PrivateIdentifier\n  ) {\n    return false;\n  }\n\n  return (\n    (flags & ModifierFlags.Export) !== 0 ||\n    (flags & ModifierFlags.Public) !== 0 ||\n    (isClassDeclaration(node.parent) && [ModifierFlags.None, ModifierFlags.Static].includes(flags))\n  );\n};\n\n/**\n * True if node is a method or property and is declaration is static.\n */\nconst isNodeStatic = (node: Node): boolean | undefined => {\n  if (!isMethodDeclaration(node) && !isPropertyDeclaration(node)) {\n    return undefined;\n  }\n\n  const flags = getCombinedModifierFlags(node as Declaration);\n  return (flags & ModifierFlags.Static) !== 0;\n};\n\n/** Serialize a signature (call or construct) */\nconst serializeSignature = ({\n  checker,\n  signature\n}: {\n  checker: TypeChecker;\n  signature: Signature;\n}): DocEntryConstructor => {\n  const result: Omit<DocEntryConstructor, 'visibility'> = {\n    parameters: signature.parameters.map((symbol: TypeScriptSymbol) =>\n      serializeSymbol({checker, symbol})\n    ),\n    returnType: checker.typeToString(signature.getReturnType()),\n    documentation: displayPartsToString(signature.getDocumentationComment(checker))\n  };\n\n  if (!(signature.declaration == null) && 'modifiers' in signature.declaration) {\n    return {\n      ...result,\n      visibility:\n        signature.declaration.modifiers?.[0].kind === SyntaxKind.PrivateKeyword\n          ? 'private'\n          : 'public'\n    };\n  }\n\n  return {\n    ...result,\n    visibility: 'public'\n  };\n};\n\n// https://stackoverflow.com/a/73338964/5404186\nconst findDescendantArrowFunction = (node: Node): Node | undefined => {\n  if (isArrowFunction(node)) {\n    return node;\n  }\n\n  return forEachChild(node, findDescendantArrowFunction);\n};\n\n// TODO: there is probably a better way\nconst isTypeKind = (kind: SyntaxKind): boolean => {\n  const typeKinds: SyntaxKind[] = [\n    SyntaxKind.TypePredicate,\n    SyntaxKind.TypeReference,\n    SyntaxKind.FunctionType,\n    SyntaxKind.ConstructorType,\n    SyntaxKind.TypeQuery,\n    SyntaxKind.TypeLiteral,\n    SyntaxKind.ArrayType,\n    SyntaxKind.TupleType,\n    SyntaxKind.OptionalType,\n    SyntaxKind.RestType,\n    SyntaxKind.UnionType,\n    SyntaxKind.IntersectionType,\n    SyntaxKind.ConditionalType,\n    SyntaxKind.InferType,\n    SyntaxKind.ParenthesizedType,\n    SyntaxKind.ThisType,\n    SyntaxKind.TypeOperator,\n    SyntaxKind.IndexedAccessType,\n    SyntaxKind.MappedType,\n    SyntaxKind.LiteralType,\n    SyntaxKind.NamedTupleMember,\n    SyntaxKind.TemplateLiteralType,\n    // SyntaxKind.TemplateLiteralTypeSpan, // This is more of a structural part of template literal types\n    SyntaxKind.ImportType\n  ];\n\n  return typeKinds.includes(kind);\n};\n\nconst getRootParentName = (node: Node): string | undefined => {\n  if (!node.parent) {\n    return undefined;\n  }\n\n  if (isVariableDeclaration(node.parent) && isIdentifier(node.parent.name)) {\n    return node.parent.name.text;\n  }\n\n  return getRootParentName(node.parent);\n};\n\nconst isRootOrClassLevelArrowFunction = (node: Node): boolean => {\n  const {parent} = node;\n\n  if (!parent) {\n    return false;\n  }\n\n  if (parent.kind === SyntaxKind.SourceFile) {\n    return true;\n  }\n\n  if (parent.kind === SyntaxKind.ClassDeclaration) {\n    return true;\n  }\n\n  if (\n    parent.kind === SyntaxKind.FunctionDeclaration ||\n    parent.kind === SyntaxKind.FunctionExpression ||\n    parent.kind === SyntaxKind.ArrowFunction\n  ) {\n    return false;\n  }\n\n  if (\n    parent.kind === SyntaxKind.PropertyAssignment ||\n    parent.kind === SyntaxKind.ObjectLiteralExpression\n  ) {\n    return false;\n  }\n\n  return isRootOrClassLevelArrowFunction(parent);\n};\n\nconst withSkipInternal = <T>({\n  skipInternal,\n  symbol,\n  skipValue,\n  fn\n}: Required<Pick<BuildOptions, 'skipInternal'>> & {\n  symbol: TypeScriptSymbol;\n  fn: () => T;\n  skipValue: T;\n}): T => {\n  if (skipInternal && isInternal(symbol)) {\n    return skipValue;\n  }\n\n  return fn();\n};\n\n/** visit nodes finding exported classes */\nconst visit = ({\n  checker,\n  node,\n  types,\n  skipInternal,\n  ...rest\n}: {checker: TypeChecker; node: Node} & Source &\n  Required<Pick<BuildOptions, 'types' | 'skipInternal'>>): DocEntry[] => {\n  // // Only consider exported nodes\n  if (!isNodeExportedOrPublic(node)) {\n    return [];\n  }\n\n  const entries: DocEntry[] = [];\n\n  const pushEntry = ({details, node}: {details: DocEntry; node: Node}): void => {\n    entries.push({\n      ...details,\n      ...buildSource({\n        node,\n        ...rest\n      })\n    });\n  };\n\n  const addDocEntry = ({\n    symbol,\n    doc_type,\n    isStatic,\n    node\n  }: {\n    symbol: TypeScriptSymbol | undefined;\n    doc_type: DocEntryType;\n    node: Node;\n  } & Pick<DocEntry, 'isStatic'>): void => {\n    if (!symbol) {\n      return;\n    }\n\n    const fn = () => {\n      const details = {\n        ...serializeSymbol({checker, symbol, doc_type}),\n        isStatic\n      };\n\n      pushEntry({node, details});\n    };\n\n    withSkipInternal({\n      symbol,\n      skipInternal,\n      skipValue: undefined,\n      fn\n    });\n  };\n\n  if (isClassDeclaration(node) && node.name) {\n    // This is a top level class, get its symbol\n    const symbol = checker.getSymbolAtLocation(node.name);\n\n    if (symbol) {\n      const fn = () => {\n        const classEntry: DocEntry = {\n          ...serializeClass({checker, symbol, skipInternal}),\n          methods: [],\n          properties: [],\n          jsDocs: symbol.getJsDocTags(),\n          ...buildSource({\n            node,\n            ...rest\n          })\n        };\n\n        const visitChild = (node: Node): void => {\n          const docEntries: DocEntry[] = visit({node, checker, types, skipInternal, ...rest});\n\n          // We do not need to repeat the file name for class members\n\n          const omitFilename = ({fileName: _, ...rest}: DocEntry): Omit<DocEntry, 'fileName'> =>\n            rest;\n\n          classEntry.methods?.push(\n            ...docEntries\n              .filter(({doc_type}) => doc_type === 'method' || doc_type === 'function')\n              .map(omitFilename)\n          );\n\n          classEntry.properties?.push(\n            ...docEntries.filter(({doc_type}) => doc_type === 'property').map(omitFilename)\n          );\n        };\n\n        forEachChild(node, visitChild);\n\n        entries.push(classEntry);\n\n        return entries;\n      };\n\n      withSkipInternal({\n        symbol,\n        skipInternal,\n        skipValue: [],\n        fn\n      });\n    }\n  } else if (isModuleDeclaration(node)) {\n    const visitChild = (node: Node): void => {\n      const docEntries: DocEntry[] = visit({node, checker, types, skipInternal, ...rest});\n      entries.push(...docEntries);\n    };\n\n    // This is a namespace, visit its children\n    forEachChild(node, visitChild);\n  } else if (isMethodDeclaration(node)) {\n    const symbol = checker.getSymbolAtLocation(node.name);\n    const isStatic = isNodeStatic(node);\n    addDocEntry({symbol, doc_type: 'method', isStatic, node});\n  } else if (isFunctionDeclaration(node)) {\n    const symbol = checker.getSymbolAtLocation(node.name ?? node);\n    addDocEntry({symbol, doc_type: 'function', node});\n  } else {\n    const arrowFunc: Node | undefined = findDescendantArrowFunction(node);\n\n    const arrowFuncSymbol =\n      arrowFunc !== undefined\n        ? checker.getSymbolAtLocation(\n            ((arrowFunc as ArrowFunction).parent as VariableDeclaration).name\n          )\n        : undefined;\n\n    if (arrowFunc !== undefined && arrowFuncSymbol !== undefined) {\n      if (skipInternal && isInternal(arrowFuncSymbol)) {\n        return [];\n      }\n\n      const parentName = !isRootOrClassLevelArrowFunction(arrowFunc)\n        ? getRootParentName(arrowFunc)\n        : undefined;\n\n      const details = serializeSymbol({checker, symbol: arrowFuncSymbol, doc_type: 'function'});\n      pushEntry({\n        node,\n        details: {\n          ...details,\n          name: parentName !== undefined ? `${parentName}.${details.name}` : details.name\n        }\n      });\n    } else if (isPropertyDeclaration(node)) {\n      // We test for the property after the arrow function because a public property of a class can be an arrow function.\n      const symbol = checker.getSymbolAtLocation(node.name);\n      const isStatic = isNodeStatic(node);\n      addDocEntry({symbol, doc_type: 'property', isStatic, node});\n    } else if (isVariableStatement(node)) {\n      const {\n        declarationList: {declarations, flags}\n      } = node;\n\n      // https://stackoverflow.com/a/69801125/5404186\n      const isConst = (flags & NodeFlags.Const) !== 0;\n\n      if (isConst) {\n        // TODO: not sure what's the proper casting, VariableDeclaration does not contain Symbol but the test entity effectively does\n        const {symbol} = declarations[0] as unknown as {symbol: TypeScriptSymbol};\n        addDocEntry({symbol, doc_type: 'const', node});\n      }\n    } else if (types && isInterfaceDeclaration(node)) {\n      const symbol = checker.getSymbolAtLocation(node.name);\n\n      if (symbol) {\n        const fn = () => {\n          const members = node.members\n            .filter(\n              (member) =>\n                isPropertySignature(member) &&\n                member.name !== undefined &&\n                isIdentifier(member.name)\n            )\n            .map((member) => checker.getSymbolAtLocation(member.name!))\n            .filter((symbol) => symbol !== undefined)\n            .filter((symbol) => !skipInternal || !isInternal(symbol))\n            .map((symbol) => serializeSymbol({checker, symbol: symbol!}));\n\n          const interfaceEntry: DocEntry = {\n            ...serializeSymbol({checker, doc_type: 'interface', symbol}),\n            properties: members,\n            ...buildSource({\n              node,\n              ...rest\n            })\n          };\n\n          entries.push(interfaceEntry);\n\n          return entries;\n        };\n\n        withSkipInternal({\n          symbol,\n          skipInternal,\n          skipValue: [],\n          fn\n        });\n      }\n    } else if (types && isTypeAliasDeclaration(node)) {\n      const symbol = checker.getSymbolAtLocation(node.name);\n\n      if (symbol) {\n        const fn = () => {\n          const child = node.getChildren().find(({kind}) => isTypeKind(kind));\n\n          const typeEntry: DocEntry = {\n            ...serializeSymbol({checker, doc_type: 'type', symbol}),\n            ...buildSource({\n              node,\n              ...rest\n            }),\n            type: child?.getText().replace(/^\"|\"$/g, '')\n          };\n\n          entries.push(typeEntry);\n\n          return entries;\n        };\n\n        withSkipInternal({\n          symbol,\n          skipInternal,\n          skipValue: [],\n          fn\n        });\n      }\n    } else if (isEnumDeclaration(node)) {\n      const symbol = checker.getSymbolAtLocation(node.name)!;\n\n      const fn = () => {\n        if (skipInternal && isInternal(symbol)) {\n          return [];\n        }\n\n        const details = serializeEnum({checker, symbol, skipInternal});\n        pushEntry({node, details});\n\n        return entries;\n      };\n\n      withSkipInternal({\n        symbol,\n        skipInternal,\n        skipValue: [],\n        fn\n      });\n    }\n  }\n\n  return entries;\n};\n\nconst DEFAULT_COMPILER_OPTIONS: CompilerOptions = {\n  target: ScriptTarget.ES2020,\n  module: ModuleKind.CommonJS,\n  strictNullChecks: true\n};\n\ntype Source = Pick<BuildOptions, 'repo'> & {sourceFile: SourceFile};\n\nconst buildSource = ({\n  repo,\n  node,\n  sourceFile\n}: Source & {node: Node}): Pick<DocEntry, 'url' | 'fileName'> => {\n  const {fileName} = sourceFile;\n\n  if (repo === undefined) {\n    return {fileName};\n  }\n\n  const {url: repoUrl, branch} = repo;\n\n  const {line} = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n  const filePath = relative(process.cwd(), sourceFile.fileName);\n\n  const url = `${repoUrl.replace(/\\/+$/, '')}/tree/${branch ?? 'main'}/${filePath.replace(\n    /^\\.\\.\\//,\n    ''\n  )}#L${line + 1}`;\n\n  return {\n    fileName,\n    url\n  };\n};\n\n/**\n * Build the documentation entries for the selected sources.\n *\n * @param {inputFiles: string[]; options?: CompilerOptions;} params\n * @param {string[]} params.inputFiles The list of files to scan and for which the documentation should be build.\n * @param {CompilerOptions} params.options Optional compiler options to generate the docs\n *\n * @returns An array of documentation entries\n */\nexport const buildDocumentation = ({\n  inputFiles,\n  options\n}: {\n  inputFiles: string[];\n  options?: BuildOptions;\n}): DocEntry[] => {\n  const {\n    compilerOptions,\n    explore: userExplore,\n    repo,\n    types: userTypes,\n    skipInternal: userSkipInternal\n  } = options ?? {\n    explore: false,\n    compilerOptions: DEFAULT_COMPILER_OPTIONS,\n    types: false,\n    skipInternal: false\n  };\n\n  const explore = userExplore ?? false;\n  const types = userTypes ?? false;\n  const skipInternal = userSkipInternal ?? false;\n\n  // Build a program using the set of root file names in fileNames\n  const program = createProgram(inputFiles, compilerOptions ?? DEFAULT_COMPILER_OPTIONS);\n\n  const programSourceFiles = program.getSourceFiles();\n\n  const filenamesFullPaths: string[] = inputFiles.map((fileName: string) => resolve(fileName));\n\n  // Visit only the files specified by the developers - no deep visit\n  const sourceFiles = programSourceFiles.filter(\n    ({isDeclarationFile, fileName}) =>\n      !isDeclarationFile && (explore || filenamesFullPaths.includes(resolve(fileName)))\n  );\n\n  // Get the checker, we will use it to find more about classes\n  const checker = program.getTypeChecker();\n\n  const result: DocEntry[] = [];\n\n  // Visit every sourceFile in the program\n  for (const sourceFile of sourceFiles) {\n    // Walk the tree to search for classes\n    forEachChild(sourceFile, (node: Node) => {\n      const entries: DocEntry[] = visit({checker, node, sourceFile, repo, types, skipInternal});\n      result.push(...entries);\n    });\n  }\n\n  return result;\n};\n"],
  "mappings": "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",
  "names": ["relative", "resolve", "ModifierFlags", "ModuleKind", "NodeFlags", "ScriptTarget", "SyntaxKind", "createProgram", "displayPartsToString", "forEachChild", "getCombinedModifierFlags", "isArrowFunction", "isClassDeclaration", "isEnumDeclaration", "isFunctionDeclaration", "isIdentifier", "isInterfaceDeclaration", "isMethodDeclaration", "isModuleDeclaration", "isPropertyDeclaration", "isPropertySignature", "isTypeAliasDeclaration", "isVariableDeclaration", "isVariableStatement", "serializeSymbol", "checker", "symbol", "doc_type", "isInternal", "name", "serializeEnum", "skipInternal", "members", "properties", "member", "_a", "documentation", "type", "serializeClass", "details", "constructorType", "signature", "serializeSignature", "isNodeExportedOrPublic", "node", "flags", "isNodeStatic", "result", "findDescendantArrowFunction", "isTypeKind", "kind", "getRootParentName", "isRootOrClassLevelArrowFunction", "parent", "withSkipInternal", "skipValue", "fn", "visit", "types", "rest", "entries", "pushEntry", "buildSource", "addDocEntry", "isStatic", "classEntry", "_b", "docEntries", "omitFilename", "_", "arrowFunc", "arrowFuncSymbol", "parentName", "declarations", "interfaceEntry", "child", "typeEntry", "DEFAULT_COMPILER_OPTIONS", "repo", "sourceFile", "fileName", "repoUrl", "branch", "line", "filePath", "url", "buildDocumentation", "inputFiles", "options", "compilerOptions", "userExplore", "userTypes", "userSkipInternal", "explore", "program", "programSourceFiles", "filenamesFullPaths", "sourceFiles", "isDeclarationFile"]
}
