function _resolveResourceLikeImage()

in packages/cdk-graph-plugin-diagram/src/internal/utils/resource-images.ts [54:123]


function _resolveResourceLikeImage(
  node: Graph.ResourceNode | Graph.CfnResourceNode,
  min: GraphThemeRenderingIconTarget,
  max: GraphThemeRenderingIconTarget,
  theme?: aws_arch.Themes
): string | undefined {
  const cfnResourceType = node.cfnType;

  try {
    if (
      min <= GraphThemeRenderingIconTarget.DATA &&
      max >= GraphThemeRenderingIconTarget.DATA
    ) {
      const dataImage = _resolveResourceLikeDataImage(node, theme);
      if (dataImage) {
        return dataImage;
      }
    } else if (max <= GraphThemeRenderingIconTarget.DATA) {
      return;
    }

    const resource = AwsArchitecture.getResource(cfnResourceType as any);

    if (
      min <= GraphThemeRenderingIconTarget.RESOURCE &&
      max >= GraphThemeRenderingIconTarget.RESOURCE
    ) {
      try {
        const icon = resource.getResourceIcon("svg", theme);
        if (icon) {
          return icon;
        }
        if (
          min <= GraphThemeRenderingIconTarget.GENERAL &&
          max >= GraphThemeRenderingIconTarget.GENERAL
        ) {
          const generalIcon = resource.getGeneralIcon("svg", theme);
          if (generalIcon) {
            return generalIcon;
          }
        }
      } catch {}
    }

    if (
      min <= GraphThemeRenderingIconTarget.SERVICE &&
      max >= GraphThemeRenderingIconTarget.SERVICE
    ) {
      try {
        const icon = resource.getServiceIcon("svg", theme);
        if (icon) {
          return icon;
        }
      } catch {}
    }

    if (
      min <= GraphThemeRenderingIconTarget.CATEGORY &&
      max >= GraphThemeRenderingIconTarget.CATEGORY
    ) {
      try {
        return resource.getCategoryIcon("svg", theme);
      } catch {}
    }

    return;
  } catch {
    return;
  }
}