in packages/cdk-graph/src/core/utils.ts [235:298]
export function inferFlags(
construct: IConstruct,
constructInfo?: ConstructInfo,
tags?: Tags
): FlagEnum[] {
const flags: Set<FlagEnum> = new Set();
const fqn = constructInfo?.fqn;
if (isImportConstruct(construct)) {
flags.add(FlagEnum.IMPORT);
} else {
if (fqn && ExtraneousFqns.includes(fqn as any)) {
flags.add(FlagEnum.EXTRANEOUS);
}
if (fqn && AssetFqns.includes(fqn as any)) {
flags.add(FlagEnum.ASSET);
}
}
if (fqn && _isCfnFqn(fqn)) {
flags.add(FlagEnum.CFN_FQN);
}
if (construct.node.id === "Exports" && Stack.isStack(construct.node.scope)) {
flags.add(FlagEnum.EXTRANEOUS);
}
if (construct.node.id.startsWith("SsmParameterValue:")) {
flags.add(FlagEnum.EXTRANEOUS);
}
if (
fqn === ConstructInfoFqnEnum.LAMBDA &&
Resource.isOwnedResource(construct)
) {
if (construct.node.id === `AWS${AWS_PROVIDER_FUNCTION_UUID}`) {
flags.add(FlagEnum.AWS_API_CALL_LAMBDA);
flags.add(FlagEnum.EXTRANEOUS);
}
}
if (fqn && CustomResourceFqns.includes(fqn as any)) {
flags.add(FlagEnum.CUSTOM_RESOURCE);
if (fqn === ConstructInfoFqnEnum.AWS_CUSTOM_RESOURCE) {
flags.add(FlagEnum.AWS_CUSTOM_RESOURCE);
}
}
// https://github.com/aws/aws-cdk/blob/37f031f1f1c41bbfb6f8e8a56f73b5966e365ff6/packages/%40aws-cdk/aws-s3/lib/bucket.ts#L21
if (tags && tags["aws-cdk:auto-delete-objects"] === "true") {
flags.add(FlagEnum.EXTRANEOUS);
}
if (
/^Custom::(CDK(BucketDeployment)|S3AutoDeleteObjects)/i.test(
construct.node.id
)
) {
flags.add(FlagEnum.EXTRANEOUS);
}
return Array.from(flags.values());
}