export function inferImportCfnType()

in packages/cdk-graph/src/core/utils.ts [359:391]


export function inferImportCfnType(
  construct: Construct,
  constructInfo?: ConstructInfo
): string | undefined {
  if (!isImportConstruct(construct) || !constructInfo) {
    return undefined;
  }

  const [source, pkg, resourceBase] = constructInfo.fqn.split(".");

  if (
    source !== "aws-cdk-lib" ||
    !pkg.startsWith("aws_") ||
    !resourceBase ||
    !resourceBase.endsWith("Base")
  ) {
    return undefined;
  }

  try {
    // eslint-disable-next-line @typescript-eslint/no-require-imports
    const pkgModule = require(`aws-cdk-lib/${pkg.replace("_", "-")}`);
    const cfnResource = "Cfn" + resourceBase.replace(/Base$/, "");

    if (cfnResource in pkgModule) {
      return pkgModule[cfnResource].CFN_RESOURCE_TYPE_NAME;
    }
  } catch (error) {
    // ignore
  }

  return undefined;
}