Skip to content

⬅️ Back to Table of Contents

📄 typeDeclaredInPackageDeclarationFile.ts

📊 Analysis Summary

Metric Count
🔧 Functions 4
📊 Variables & Constants 1

📚 Table of Contents

🛠️ File Location:

📂 packages/type-utils/src/typeOrValueSpecifiers/typeDeclaredInPackageDeclarationFile.ts

Variables & Constants

Name Type Kind Value Exported
matcher RegExp const new RegExp(${packageName} ${typesPackageName})

Functions

findParentModuleDeclaration(node: ts.Node): ts.ModuleDeclaration | undefined

Code
function findParentModuleDeclaration(
  node: ts.Node,
): ts.ModuleDeclaration | undefined {
  switch (node.kind) {
    case ts.SyntaxKind.ModuleDeclaration:
      return ts.isStringLiteral((node as ts.ModuleDeclaration).name)
        ? (node as ts.ModuleDeclaration)
        : undefined;
    case ts.SyntaxKind.SourceFile:
      return undefined;
    default:
      return findParentModuleDeclaration(node.parent);
  }
}
  • Parameters:
  • node: ts.Node
  • Return Type: ts.ModuleDeclaration | undefined
  • Calls:
  • ts.isStringLiteral
  • findParentModuleDeclaration

typeDeclaredInDeclareModule(packageName: string, declarations: ts.Node[]): boolean

Code
function typeDeclaredInDeclareModule(
  packageName: string,
  declarations: ts.Node[],
): boolean {
  return declarations.some(
    declaration =>
      findParentModuleDeclaration(declaration)?.name.text === packageName,
  );
}
  • Parameters:
  • packageName: string
  • declarations: ts.Node[]
  • Return Type: boolean
  • Calls:
  • declarations.some
  • findParentModuleDeclaration

typeDeclaredInDeclarationFile(packageName: string, declarationFiles: ts.SourceFile[], program: ts.Program): boolean

Code
function typeDeclaredInDeclarationFile(
  packageName: string,
  declarationFiles: ts.SourceFile[],
  program: ts.Program,
): boolean {
  // Handle scoped packages: if the name starts with @, remove it and replace / with __
  const typesPackageName = packageName.replace(/^@([^/]+)\//, '$1__');

  const matcher = new RegExp(`${packageName}|${typesPackageName}`);
  return declarationFiles.some(declaration => {
    const packageIdName = program.sourceFileToPackageName.get(declaration.path);
    return (
      packageIdName != null &&
      matcher.test(packageIdName) &&
      program.isSourceFileFromExternalLibrary(declaration)
    );
  });
}
  • Parameters:
  • packageName: string
  • declarationFiles: ts.SourceFile[]
  • program: ts.Program
  • Return Type: boolean
  • Calls:
  • packageName.replace
  • declarationFiles.some
  • program.sourceFileToPackageName.get
  • matcher.test
  • program.isSourceFileFromExternalLibrary
  • Internal Comments:
    // Handle scoped packages: if the name starts with @, remove it and replace / with __ (x2)
    

typeDeclaredInPackageDeclarationFile(packageName: string, declarations: ts.Node[], declarationFiles: ts.SourceFile[], program: ts.Program): boolean

Code
export function typeDeclaredInPackageDeclarationFile(
  packageName: string,
  declarations: ts.Node[],
  declarationFiles: ts.SourceFile[],
  program: ts.Program,
): boolean {
  return (
    typeDeclaredInDeclareModule(packageName, declarations) ||
    typeDeclaredInDeclarationFile(packageName, declarationFiles, program)
  );
}
  • Parameters:
  • packageName: string
  • declarations: ts.Node[]
  • declarationFiles: ts.SourceFile[]
  • program: ts.Program
  • Return Type: boolean
  • Calls:
  • typeDeclaredInDeclareModule
  • typeDeclaredInDeclarationFile