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;
}