{
  "version": 3,
  "sources": ["../../src/lib/docs.ts"],
  "sourcesContent": ["import {relative, resolve} from '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 serializeEnum = ({\n  checker,\n  symbol,\n  doc_type\n}: {\n  checker: TypeChecker;\n  symbol: TypeScriptSymbol;\n  doc_type?: DocEntryType;\n}): DocEntry => {\n  const {members} = symbol.valueDeclaration as EnumDeclaration;\n\n  const properties: DocEntry[] = members.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}: {\n  checker: TypeChecker;\n  symbol: TypeScriptSymbol;\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    .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\n/** visit nodes finding exported classes */\nconst visit = ({\n  checker,\n  node,\n  types,\n  ...rest\n}: {checker: TypeChecker; node: Node} & Source &\n  Required<Pick<BuildOptions, 'types'>>): 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 details = {\n      ...serializeSymbol({checker, symbol, doc_type}),\n      isStatic\n    };\n\n    pushEntry({node, details});\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 classEntry: DocEntry = {\n        ...serializeClass({checker, symbol}),\n        methods: [],\n        properties: [],\n        ...buildSource({\n          node,\n          ...rest\n        })\n      };\n\n      const visitChild = (node: Node): void => {\n        const docEntries: DocEntry[] = visit({node, checker, types, ...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'> => 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  } else if (isModuleDeclaration(node)) {\n    const visitChild = (node: Node): void => {\n      const docEntries: DocEntry[] = visit({node, checker, types, ...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      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 members = node.members\n          .filter(\n            (member) =>\n              isPropertySignature(member) && member.name !== undefined && isIdentifier(member.name)\n          )\n          .map((member) => checker.getSymbolAtLocation(member.name!))\n          .filter((symbol) => symbol !== undefined)\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    } else if (types && isTypeAliasDeclaration(node)) {\n      const symbol = checker.getSymbolAtLocation(node.name);\n\n      if (symbol) {\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    } else if (isEnumDeclaration(node)) {\n      const symbol = checker.getSymbolAtLocation(node.name)!;\n      const details = serializeEnum({checker, symbol});\n      pushEntry({node, details});\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  } = options ?? {\n    explore: false,\n    compilerOptions: DEFAULT_COMPILER_OPTIONS,\n    types: false\n  };\n\n  const explore = userExplore ?? false;\n  const types = userTypes ?? 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});\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", "serializeEnum", "members", "properties", "member", "_a", "documentation", "type", "serializeClass", "details", "constructorType", "signature", "serializeSignature", "isNodeExportedOrPublic", "node", "flags", "isNodeStatic", "result", "findDescendantArrowFunction", "isTypeKind", "kind", "getRootParentName", "isRootOrClassLevelArrowFunction", "parent", "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", "explore", "program", "programSourceFiles", "filenamesFullPaths", "sourceFiles", "isDeclarationFile"]
}
