All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.chriskn.structurizrextension.plantuml.IconRegistry.kt Maven / Gradle / Ivy

package com.github.chriskn.structurizrextension.plantuml

import java.net.MalformedURLException
import java.net.URL

internal const val AWS_ICON_URL = "https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/v11.1/dist/"
internal const val AWS_ICON_COMMONS = "${AWS_ICON_URL}AWSCommon.puml"

/**
 * Registry containing the available icons.
 *
 * Allows to register icon url by icon name (case-insensitive) and to access icon url by name.
 * Urls have to be well-formed and need to point to .puml files.
 */
object IconRegistry {

    private const val GILBARBARA_ICON_URL =
        "https://raw.githubusercontent.com/plantuml-stdlib/gilbarbara-plantuml-sprites/master/sprites/"
    private const val PUML_FILE_EXTENSION = ".puml"

    private val iconNameToIconUrl = mutableMapOf()

    /**
     * @return The URL of an icon with the given name (case-insensitive) or null if no icon with the given name exists.
     */
    internal fun iconUrlFor(name: String): String? = iconNameToIconUrl[name.lowercase()]?.toString()

    /**
     * @return The file name of an icon with the given name (case-insensitive) or null if no icon with the given name exists.
     */
    internal fun iconFileNameFor(name: String?): String? {
        return if (name == null || !exists(name)) {
            null
        } else {
            iconNameToIconUrl[name.lowercase()]
                .toString()
                .split("/")
                .last()
                .replace(PUML_FILE_EXTENSION, "")
        }
    }

    /**
     * Adds a new icon with the given name (case-insensitive) and URL to the registry.
     *
     * @throws IllegalArgumentException if url does not point to puml file
     * @throws MalformedURLException if url is invalid
     */
    fun addIcon(name: String, url: String) {
        require(url.endsWith(PUML_FILE_EXTENSION)) {
            "Icon URL needs to point to .puml file"
        }
        iconNameToIconUrl[name.lowercase()] = URL(url)
    }

    /**
     * @return True if an icon with the given name (case-insensitive) exists, false otherwise.
     */
    fun exists(name: String): Boolean = iconNameToIconUrl.containsKey(name.lowercase())

    private val commonIcons = mapOf(
        "kotlin" to "${GILBARBARA_ICON_URL}kotlin.puml",
        "android" to "${GILBARBARA_ICON_URL}android-icon.puml",
        "docker" to "${GILBARBARA_ICON_URL}docker-icon.puml",
        "github" to "${GILBARBARA_ICON_URL}github-icon.puml",
        "html5" to "${GILBARBARA_ICON_URL}html-5.puml",
        "intellij" to "${GILBARBARA_ICON_URL}intellij-idea.puml",
        "javascript" to "${GILBARBARA_ICON_URL}javascript.puml",
        "jira" to "${GILBARBARA_ICON_URL}jira.puml",
        "nodejs" to "${GILBARBARA_ICON_URL}nodejs-icon.puml",
        "npm" to "${GILBARBARA_ICON_URL}npm.puml",
        "nginx" to "${GILBARBARA_ICON_URL}nginx.puml",
        "mongodb" to "${GILBARBARA_ICON_URL}mongodb.puml",
        "mysql" to "${GILBARBARA_ICON_URL}mysql.puml",
        "postgresql" to "${GILBARBARA_ICON_URL}postgresql.puml",
        "react" to "${GILBARBARA_ICON_URL}react.puml",
        "redis" to "${GILBARBARA_ICON_URL}redis.puml",
        "kafka" to "${GILBARBARA_ICON_URL}kafka.puml",
        "tomcat" to "${GILBARBARA_ICON_URL}tomcat.puml",
        "apple" to "${GILBARBARA_ICON_URL}apple.puml",
        "ios" to "${GILBARBARA_ICON_URL}ios.puml",
        "kubernetes" to "${GILBARBARA_ICON_URL}kubernetes.puml",
        "kibana" to "${GILBARBARA_ICON_URL}kibana.puml",
        "grafana" to "${GILBARBARA_ICON_URL}grafana.puml",
        "gradle" to "${GILBARBARA_ICON_URL}gradle.puml",
        "sonarqube" to "${GILBARBARA_ICON_URL}sonarqube.puml",
        "prometheus" to "${GILBARBARA_ICON_URL}prometheus.puml",
        "swagger" to "${GILBARBARA_ICON_URL}swagger.puml",
        "springboot" to "${GILBARBARA_ICON_URL}spring.puml",
        "graphql" to "${GILBARBARA_ICON_URL}graphql.puml",
        "apple" to "${GILBARBARA_ICON_URL}apple.puml",
        "rocksdb" to "${GILBARBARA_ICON_URL}rocksdb.puml"
    )

    private val awsIcons = mapOf(
        "awsapigateway" to "${AWS_ICON_URL}ApplicationIntegration/APIGateway.puml",
        "awsapigatewayendpoint" to "${AWS_ICON_URL}ApplicationIntegration/APIGatewayEndpoint.puml",
        "awsappflow" to "${AWS_ICON_URL}ApplicationIntegration/AppFlow.puml",
        "awsappsync" to "${AWS_ICON_URL}ApplicationIntegration/AppSync.puml",
        "awsapplicationintegration" to "${AWS_ICON_URL}ApplicationIntegration/ApplicationIntegration.puml",
        "awsconsolemobileapplication" to "${AWS_ICON_URL}ApplicationIntegration/ConsoleMobileApplication.puml",
        "awseventbridge" to "${AWS_ICON_URL}ApplicationIntegration/EventBridge.puml",
        "awseventbridgecustomeventbus" to "${AWS_ICON_URL}ApplicationIntegration/EventBridgeCustomEventBus.puml",
        "awseventbridgedefaulteventbus" to "${AWS_ICON_URL}ApplicationIntegration/EventBridgeDefaultEventBus.puml",
        "awseventbridgeevent" to "${AWS_ICON_URL}ApplicationIntegration/EventBridgeEvent.puml",
        "awseventbridgerule" to "${AWS_ICON_URL}ApplicationIntegration/EventBridgeRule.puml",
        "awseventbridgesaaspartnerevent" to "${AWS_ICON_URL}ApplicationIntegration/EventBridgeSaasPartnerEvent.puml",
        "awseventbridgeschema" to "${AWS_ICON_URL}ApplicationIntegration/EventBridgeSchema.puml",
        "awseventbridgeschemaregistry" to "${AWS_ICON_URL}ApplicationIntegration/EventBridgeSchemaRegistry.puml",
        "awsexpressworkflows" to "${AWS_ICON_URL}ApplicationIntegration/ExpressWorkflows.puml",
        "awsmq" to "${AWS_ICON_URL}ApplicationIntegration/MQ.puml",
        "awsmqbroker" to "${AWS_ICON_URL}ApplicationIntegration/MQBroker.puml",
        "awsmanagedworkflowsforapacheairflow" to "${AWS_ICON_URL}ApplicationIntegration/ManagedWorkflowsforApacheAirflow.puml",
        "awssimplenotificationservice" to "${AWS_ICON_URL}ApplicationIntegration/SimpleNotificationService.puml",
        "awssimplenotificationserviceemailnotification" to "${AWS_ICON_URL}ApplicationIntegration/SimpleNotificationServiceEmailNotification.puml",
        "awssimplenotificationservicehttpnotification" to "${AWS_ICON_URL}ApplicationIntegration/SimpleNotificationServiceHTTPNotification.puml",
        "awssimplenotificationservicetopic" to "${AWS_ICON_URL}ApplicationIntegration/SimpleNotificationServiceTopic.puml",
        "awssqs" to "${AWS_ICON_URL}ApplicationIntegration/SimpleQueueService.puml",
        "awssqsmessage" to "${AWS_ICON_URL}ApplicationIntegration/SimpleQueueServiceMessage.puml",
        "awssqsqueue" to "${AWS_ICON_URL}ApplicationIntegration/SimpleQueueServiceQueue.puml",
        "awsstepfunctions" to "${AWS_ICON_URL}ApplicationIntegration/StepFunctions.puml",
        "awsapprunner" to "${AWS_ICON_URL}Compute/AppRunner.puml",
        "awsapplicationautoscaling" to "${AWS_ICON_URL}Compute/ApplicationAutoScaling.puml",
        "awsbatch" to "${AWS_ICON_URL}Compute/Batch.puml",
        "awsbottlerocket" to "${AWS_ICON_URL}Compute/Bottlerocket.puml",
        "awscompute" to "${AWS_ICON_URL}Compute/Compute.puml",
        "awscomputeoptimizer" to "${AWS_ICON_URL}Compute/ComputeOptimizer.puml",
        "awsec2" to "${AWS_ICON_URL}Compute/EC2.puml",
        "awsec2a1instance" to "${AWS_ICON_URL}Compute/EC2A1Instance.puml",
        "awsec2ami" to "${AWS_ICON_URL}Compute/EC2AMI.puml",
        "awsec2awsinferentia" to "${AWS_ICON_URL}Compute/EC2AWSInferentia.puml",
        "awsec2autoscaling" to "${AWS_ICON_URL}Compute/EC2AutoScaling.puml",
        "awsec2autoscalingresource" to "${AWS_ICON_URL}Compute/EC2AutoScalingResource.puml",
        "awsec2c4instance" to "${AWS_ICON_URL}Compute/EC2C4Instance.puml",
        "awsec2c5instance" to "${AWS_ICON_URL}Compute/EC2C5Instance.puml",
        "awsec2c5ainstance" to "${AWS_ICON_URL}Compute/EC2C5aInstance.puml",
        "awsec2c5adinstance" to "${AWS_ICON_URL}Compute/EC2C5adInstance.puml",
        "awsec2c5dinstance" to "${AWS_ICON_URL}Compute/EC2C5dInstance.puml",
        "awsec2c5ninstance" to "${AWS_ICON_URL}Compute/EC2C5nInstance.puml",
        "awsec2c6ginstance" to "${AWS_ICON_URL}Compute/EC2C6gInstance.puml",
        "awsec2c6gdinstance" to "${AWS_ICON_URL}Compute/EC2C6gdInstance.puml",
        "awsec2d2instance" to "${AWS_ICON_URL}Compute/EC2D2Instance.puml",
        "awsec2d3instance" to "${AWS_ICON_URL}Compute/EC2D3Instance.puml",
        "awsec2d3eninstance" to "${AWS_ICON_URL}Compute/EC2D3enInstance.puml",
        "awsec2dbinstance" to "${AWS_ICON_URL}Compute/EC2DBInstance.puml",
        "awsec2elasticipaddress" to "${AWS_ICON_URL}Compute/EC2ElasticIPAddress.puml",
        "awsec2f1instance" to "${AWS_ICON_URL}Compute/EC2F1Instance.puml",
        "awsec2g3instance" to "${AWS_ICON_URL}Compute/EC2G3Instance.puml",
        "awsec2g4adinstance" to "${AWS_ICON_URL}Compute/EC2G4adInstance.puml",
        "awsec2g4dninstance" to "${AWS_ICON_URL}Compute/EC2G4dnInstance.puml",
        "awsec2h1instance" to "${AWS_ICON_URL}Compute/EC2H1Instance.puml",
        "awsec2hmiinstance" to "${AWS_ICON_URL}Compute/EC2HMIInstance.puml",
        "awsec2habanagaudiinstance" to "${AWS_ICON_URL}Compute/EC2HabanaGaudiInstance.puml",
        "awsec2i2instance" to "${AWS_ICON_URL}Compute/EC2I2Instance.puml",
        "awsec2i3instance" to "${AWS_ICON_URL}Compute/EC2I3Instance.puml",
        "awsec2i3eninstance" to "${AWS_ICON_URL}Compute/EC2I3enInstance.puml",
        "awsec2imagebuilder" to "${AWS_ICON_URL}Compute/EC2ImageBuilder.puml",
        "awsec2inf1instance" to "${AWS_ICON_URL}Compute/EC2Inf1Instance.puml",
        "awsec2instance" to "${AWS_ICON_URL}Compute/EC2Instance.puml",
        "awsec2instances" to "${AWS_ICON_URL}Compute/EC2Instances.puml",
        "awsec2instancewithcloudwatch" to "${AWS_ICON_URL}Compute/EC2InstancewithCloudWatch.puml",
        "awsec2m4instance" to "${AWS_ICON_URL}Compute/EC2M4Instance.puml",
        "awsec2m5instance" to "${AWS_ICON_URL}Compute/EC2M5Instance.puml",
        "awsec2m5ainstance" to "${AWS_ICON_URL}Compute/EC2M5aInstance.puml",
        "awsec2m5dinstance" to "${AWS_ICON_URL}Compute/EC2M5dInstance.puml",
        "awsec2m5dninstance" to "${AWS_ICON_URL}Compute/EC2M5dnInstance.puml",
        "awsec2m5ninstance" to "${AWS_ICON_URL}Compute/EC2M5nInstance.puml",
        "awsec2m5zninstance" to "${AWS_ICON_URL}Compute/EC2M5znInstance.puml",
        "awsec2m6ginstance" to "${AWS_ICON_URL}Compute/EC2M6gInstance.puml",
        "awsec2m6gdinstance" to "${AWS_ICON_URL}Compute/EC2M6gdInstance.puml",
        "awsec2macinstance" to "${AWS_ICON_URL}Compute/EC2MacInstance.puml",
        "awsec2p2instance" to "${AWS_ICON_URL}Compute/EC2P2Instance.puml",
        "awsec2p3instance" to "${AWS_ICON_URL}Compute/EC2P3Instance.puml",
        "awsec2p3dninstance" to "${AWS_ICON_URL}Compute/EC2P3dnInstance.puml",
        "awsec2p4instance" to "${AWS_ICON_URL}Compute/EC2P4Instance.puml",
        "awsec2p4dinstance" to "${AWS_ICON_URL}Compute/EC2P4dInstance.puml",
        "awsec2r4instance" to "${AWS_ICON_URL}Compute/EC2R4Instance.puml",
        "awsec2r5instance" to "${AWS_ICON_URL}Compute/EC2R5Instance.puml",
        "awsec2r5ainstance" to "${AWS_ICON_URL}Compute/EC2R5aInstance.puml",
        "awsec2r5adinstance" to "${AWS_ICON_URL}Compute/EC2R5adInstance.puml",
        "awsec2r5binstance" to "${AWS_ICON_URL}Compute/EC2R5bInstance.puml",
        "awsec2r5dinstance" to "${AWS_ICON_URL}Compute/EC2R5dInstance.puml",
        "awsec2r5gdinstance" to "${AWS_ICON_URL}Compute/EC2R5gdInstance.puml",
        "awsec2r5ninstance" to "${AWS_ICON_URL}Compute/EC2R5nInstance.puml",
        "awsec2r6ginstance" to "${AWS_ICON_URL}Compute/EC2R6gInstance.puml",
        "awsec2rdninstance" to "${AWS_ICON_URL}Compute/EC2RdnInstance.puml",
        "awsec2rescue" to "${AWS_ICON_URL}Compute/EC2Rescue.puml",
        "awsec2spotinstance" to "${AWS_ICON_URL}Compute/EC2SpotInstance.puml",
        "awsec2t2instance" to "${AWS_ICON_URL}Compute/EC2T2Instance.puml",
        "awsec2t3instance" to "${AWS_ICON_URL}Compute/EC2T3Instance.puml",
        "awsec2t3ainstance" to "${AWS_ICON_URL}Compute/EC2T3aInstance.puml",
        "awsec2t4ginstance" to "${AWS_ICON_URL}Compute/EC2T4gInstance.puml",
        "awsec2trainiuminstance" to "${AWS_ICON_URL}Compute/EC2TrainiumInstance.puml",
        "awsec2x1instance" to "${AWS_ICON_URL}Compute/EC2X1Instance.puml",
        "awsec2x1einstance" to "${AWS_ICON_URL}Compute/EC2X1eInstance.puml",
        "awsec2z1dinstance" to "${AWS_ICON_URL}Compute/EC2z1dInstance.puml",
        "awselasticbeanstalk" to "${AWS_ICON_URL}Compute/ElasticBeanstalk.puml",
        "awselasticbeanstalkapplication" to "${AWS_ICON_URL}Compute/ElasticBeanstalkApplication.puml",
        "awselasticbeanstalkdeployment" to "${AWS_ICON_URL}Compute/ElasticBeanstalkDeployment.puml",
        "awselasticfabricadapter" to "${AWS_ICON_URL}Compute/ElasticFabricAdapter.puml",
        "awsfargate2" to "${AWS_ICON_URL}Compute/Fargate2.puml",
        "awslambda" to "${AWS_ICON_URL}Compute/Lambda.puml",
        "awslambdalambdafunction" to "${AWS_ICON_URL}Compute/LambdaLambdaFunction.puml",
        "awslightsail" to "${AWS_ICON_URL}Compute/Lightsail.puml",
        "awslocalzones" to "${AWS_ICON_URL}Compute/LocalZones.puml",
        "awsnicedcv" to "${AWS_ICON_URL}Compute/NICEDCV.puml",
        "awsnitroenclaves" to "${AWS_ICON_URL}Compute/NitroEnclaves.puml",
        "awsoutposts" to "${AWS_ICON_URL}Compute/Outposts.puml",
        "awsoutposts1uand2uservers" to "${AWS_ICON_URL}Compute/Outposts1Uand2UServers.puml",
        "awsparallelcluster" to "${AWS_ICON_URL}Compute/ParallelCluster.puml",
        "awsserverlessapplicationrepository" to "${AWS_ICON_URL}Compute/ServerlessApplicationRepository.puml",
        "awsthinkboxdeadline" to "${AWS_ICON_URL}Compute/ThinkBoxDeadline.puml",
        "awsthinkboxfrost" to "${AWS_ICON_URL}Compute/ThinkBoxFrost.puml",
        "awsthinkboxkrakatoa" to "${AWS_ICON_URL}Compute/ThinkBoxKrakatoa.puml",
        "awsthinkboxsequoia" to "${AWS_ICON_URL}Compute/ThinkBoxSequoia.puml",
        "awsthinkboxstoke" to "${AWS_ICON_URL}Compute/ThinkBoxStoke.puml",
        "awsthinkboxxmesh" to "${AWS_ICON_URL}Compute/ThinkBoxXMesh.puml",
        "awsvmwarecloudonaws" to "${AWS_ICON_URL}Compute/VMwareCloudonAWS.puml",
        "awswavelength" to "${AWS_ICON_URL}Compute/Wavelength.puml",
        "awscontainers" to "${AWS_ICON_URL}Containers/Containers.puml",
        "awseksanywhere" to "${AWS_ICON_URL}Containers/EKSAnywhere.puml",
        "awsekscloud" to "${AWS_ICON_URL}Containers/EKSCloud.puml",
        "awseksdistro" to "${AWS_ICON_URL}Containers/EKSDistro.puml",
        "awselasticcontainerregistry" to "${AWS_ICON_URL}Containers/ElasticContainerRegistry.puml",
        "awselasticcontainerregistryimage" to "${AWS_ICON_URL}Containers/ElasticContainerRegistryImage.puml",
        "awselasticcontainerregistryregistry" to "${AWS_ICON_URL}Containers/ElasticContainerRegistryRegistry.puml",
        "awselasticcontainerservice" to "${AWS_ICON_URL}Containers/ElasticContainerService.puml",
        "awselasticcontainerservicecontainer1" to "${AWS_ICON_URL}Containers/ElasticContainerServiceContainer1.puml",
        "awselasticcontainerservicecontainer2" to "${AWS_ICON_URL}Containers/ElasticContainerServiceContainer2.puml",
        "awselasticcontainerservicecontainer3" to "${AWS_ICON_URL}Containers/ElasticContainerServiceContainer3.puml",
        "awselasticcontainerservicecopilotcli" to "${AWS_ICON_URL}Containers/ElasticContainerServiceCopilotCLI.puml",
        "awselasticcontainerserviceecsanywhere" to "${AWS_ICON_URL}Containers/ElasticContainerServiceECSAnywhere.puml",
        "awselasticcontainerserviceservice" to "${AWS_ICON_URL}Containers/ElasticContainerServiceService.puml",
        "awselasticcontainerservicetask" to "${AWS_ICON_URL}Containers/ElasticContainerServiceTask.puml",
        "awselastickubernetesservice" to "${AWS_ICON_URL}Containers/ElasticKubernetesService.puml",
        "awsfargate" to "${AWS_ICON_URL}Containers/Fargate.puml",
        "awsredhatopenshift" to "${AWS_ICON_URL}Containers/RedHatOpenShift.puml",
        "awsaurora" to "${AWS_ICON_URL}Database/Aurora.puml",
        "awsauroraamazonaurorainstancealternate" to "${AWS_ICON_URL}Database/AuroraAmazonAuroraInstancealternate.puml",
        "awsauroraamazonrdsinstance" to "${AWS_ICON_URL}Database/AuroraAmazonRDSInstance.puml",
        "awsauroraamazonrdsinstanceaternate" to "${AWS_ICON_URL}Database/AuroraAmazonRDSInstanceAternate.puml",
        "awsaurorainstance" to "${AWS_ICON_URL}Database/AuroraInstance.puml",
        "awsauroramariadbinstance" to "${AWS_ICON_URL}Database/AuroraMariaDBInstance.puml",
        "awsauroramariadbinstancealternate" to "${AWS_ICON_URL}Database/AuroraMariaDBInstanceAlternate.puml",
        "awsauroramysqlinstance" to "${AWS_ICON_URL}Database/AuroraMySQLInstance.puml",
        "awsauroramysqlinstancealternate" to "${AWS_ICON_URL}Database/AuroraMySQLInstanceAlternate.puml",
        "awsauroraoracleinstance" to "${AWS_ICON_URL}Database/AuroraOracleInstance.puml",
        "awsauroraoracleinstancealternate" to "${AWS_ICON_URL}Database/AuroraOracleInstanceAlternate.puml",
        "awsaurorapiopsinstance" to "${AWS_ICON_URL}Database/AuroraPIOPSInstance.puml",
        "awsaurorapostgresqlinstance" to "${AWS_ICON_URL}Database/AuroraPostgreSQLInstance.puml",
        "awsaurorapostgresqlinstancealternate" to "${AWS_ICON_URL}Database/AuroraPostgreSQLInstanceAlternate.puml",
        "awsaurorasqlserverinstance" to "${AWS_ICON_URL}Database/AuroraSQLServerInstance.puml",
        "awsaurorasqlserverinstancealternate" to "${AWS_ICON_URL}Database/AuroraSQLServerInstanceAlternate.puml",
        "awsdatabase" to "${AWS_ICON_URL}Database/Database.puml",
        "awsdatabasemigrationservice" to "${AWS_ICON_URL}Database/DatabaseMigrationService.puml",
        "awsdocumentdb" to "${AWS_ICON_URL}Database/DocumentDB.puml",
        "awsdynamodb" to "${AWS_ICON_URL}Database/DynamoDB.puml",
        "awsdynamodbamazondynamodbaccelerator" to "${AWS_ICON_URL}Database/DynamoDBAmazonDynamoDBAccelerator.puml",
        "awsdynamodbattribute" to "${AWS_ICON_URL}Database/DynamoDBAttribute.puml",
        "awsdynamodbattributes" to "${AWS_ICON_URL}Database/DynamoDBAttributes.puml",
        "awsdynamodbglobalsecondaryindex" to "${AWS_ICON_URL}Database/DynamoDBGlobalsecondaryindex.puml",
        "awsdynamodbitem" to "${AWS_ICON_URL}Database/DynamoDBItem.puml",
        "awsdynamodbitems" to "${AWS_ICON_URL}Database/DynamoDBItems.puml",
        "awsdynamodbstream" to "${AWS_ICON_URL}Database/DynamoDBStream.puml",
        "awsdynamodbtable" to "${AWS_ICON_URL}Database/DynamoDBTable.puml",
        "awselasticache" to "${AWS_ICON_URL}Database/ElastiCache.puml",
        "awselasticachecachenode" to "${AWS_ICON_URL}Database/ElastiCacheCacheNode.puml",
        "awselasticacheelasticacheformemcached" to "${AWS_ICON_URL}Database/ElastiCacheElastiCacheforMemcached.puml",
        "awselasticacheelasticacheforredis" to "${AWS_ICON_URL}Database/ElastiCacheElastiCacheforRedis.puml",
        "awskeyspaces" to "${AWS_ICON_URL}Database/Keyspaces.puml",
        "awsneptune" to "${AWS_ICON_URL}Database/Neptune.puml",
        "awsquantumledgerdatabase2" to "${AWS_ICON_URL}Database/QuantumLedgerDatabase2.puml",
        "awsrds" to "${AWS_ICON_URL}Database/RDS.puml",
        "awsrdsproxyinstance" to "${AWS_ICON_URL}Database/RDSProxyInstance.puml",
        "awsrdsproxyinstancealternate" to "${AWS_ICON_URL}Database/RDSProxyInstanceAlternate.puml",
        "awsrdsonvmware" to "${AWS_ICON_URL}Database/RDSonVMware.puml",
        "awstimestream" to "${AWS_ICON_URL}Database/Timestream.puml",
        "awsamplify" to "${AWS_ICON_URL}FrontEndWebMobile/Amplify.puml",
        "awsdevicefarm" to "${AWS_ICON_URL}FrontEndWebMobile/DeviceFarm.puml",
        "awsfrontendwebmobile" to "${AWS_ICON_URL}FrontEndWebMobile/FrontEndWebMobile.puml",
        "awslocationservice" to "${AWS_ICON_URL}FrontEndWebMobile/LocationService.puml",
        "awslocationservicegeofence" to "${AWS_ICON_URL}FrontEndWebMobile/LocationServiceGeofence.puml",
        "awslocationservicemap" to "${AWS_ICON_URL}FrontEndWebMobile/LocationServiceMap.puml",
        "awslocationserviceplace" to "${AWS_ICON_URL}FrontEndWebMobile/LocationServicePlace.puml",
        "awslocationserviceroutes" to "${AWS_ICON_URL}FrontEndWebMobile/LocationServiceRoutes.puml",
        "awslocationservicetrack" to "${AWS_ICON_URL}FrontEndWebMobile/LocationServiceTrack.puml",
        "awsautoscalinggroup" to "${AWS_ICON_URL}GroupIcons/AutoScalingGroup.puml",
        "awsnew" to "${AWS_ICON_URL}GroupIcons/Cloud.puml",
        "aws" to "${AWS_ICON_URL}GroupIcons/Cloudalt.puml",
        "awscorporatedatacenter" to "${AWS_ICON_URL}GroupIcons/CorporateDataCenter.puml",
        "awsec2instancecontainer" to "${AWS_ICON_URL}GroupIcons/EC2InstanceContainer.puml",
        "awselasticbeanstalkcontainer" to "${AWS_ICON_URL}GroupIcons/ElasticBeanstalkContainer.puml",
        "awsregion" to "${AWS_ICON_URL}GroupIcons/Region.puml",
        "awsservercontents" to "${AWS_ICON_URL}GroupIcons/ServerContents.puml",
        "awsspotfleet" to "${AWS_ICON_URL}GroupIcons/SpotFleet.puml",
        "awsstepfunction" to "${AWS_ICON_URL}GroupIcons/StepFunction.puml",
        "awsvpcsubnetprivate" to "${AWS_ICON_URL}GroupIcons/VPCSubnetPrivate.puml",
        "awsvpcsubnetpublic" to "${AWS_ICON_URL}GroupIcons/VPCSubnetPublic.puml",
        "awsvirtualprivatecloudvpc" to "${AWS_ICON_URL}GroupIcons/VirtualPrivateCloudVPC.puml",
        "awsappmesh" to "${AWS_ICON_URL}NetworkingContentDelivery/AppMesh.puml",
        "awsappmeshmesh" to "${AWS_ICON_URL}NetworkingContentDelivery/AppMeshMesh.puml",
        "awsappmeshvirtualgateway" to "${AWS_ICON_URL}NetworkingContentDelivery/AppMeshVirtualGateway.puml",
        "awsappmeshvirtualnode" to "${AWS_ICON_URL}NetworkingContentDelivery/AppMeshVirtualNode.puml",
        "awsappmeshvirtualrouter" to "${AWS_ICON_URL}NetworkingContentDelivery/AppMeshVirtualRouter.puml",
        "awsappmeshvirtualservice" to "${AWS_ICON_URL}NetworkingContentDelivery/AppMeshVirtualService.puml",
        "awsclientvpn" to "${AWS_ICON_URL}NetworkingContentDelivery/ClientVPN.puml",
        "awsclouddirectory2" to "${AWS_ICON_URL}NetworkingContentDelivery/CloudDirectory2.puml",
        "awscloudfront" to "${AWS_ICON_URL}NetworkingContentDelivery/CloudFront.puml",
        "awscloudfrontdownloaddistribution" to "${AWS_ICON_URL}NetworkingContentDelivery/CloudFrontDownloadDistribution.puml",
        "awscloudfrontedgelocation" to "${AWS_ICON_URL}NetworkingContentDelivery/CloudFrontEdgeLocation.puml",
        "awscloudfrontfunctions" to "${AWS_ICON_URL}NetworkingContentDelivery/CloudFrontFunctions.puml",
        "awscloudfrontstreamingdistribution" to "${AWS_ICON_URL}NetworkingContentDelivery/CloudFrontStreamingDistribution.puml",
        "awscloudmap" to "${AWS_ICON_URL}NetworkingContentDelivery/CloudMap.puml",
        "awscloudmapnamespace" to "${AWS_ICON_URL}NetworkingContentDelivery/CloudMapNamespace.puml",
        "awscloudmapresource" to "${AWS_ICON_URL}NetworkingContentDelivery/CloudMapResource.puml",
        "awscloudmapservice" to "${AWS_ICON_URL}NetworkingContentDelivery/CloudMapService.puml",
        "awsdirectconnect" to "${AWS_ICON_URL}NetworkingContentDelivery/DirectConnect.puml",
        "awsdirectconnectgateway" to "${AWS_ICON_URL}NetworkingContentDelivery/DirectConnectGateway.puml",
        "awselasticloadbalancing" to "${AWS_ICON_URL}NetworkingContentDelivery/ElasticLoadBalancing.puml",
        "awsapplicationloadbalancer" to "${AWS_ICON_URL}NetworkingContentDelivery/ElasticLoadBalancingApplicationLoadBalancer.puml",
        "awsclassicloadbalancer" to "${AWS_ICON_URL}NetworkingContentDelivery/ElasticLoadBalancingClassicLoadBalancer.puml",
        "awsgatewayloadbalancer" to "${AWS_ICON_URL}NetworkingContentDelivery/ElasticLoadBalancingGatewayLoadBalancer.puml",
        "awsnetworkloadbalancer" to "${AWS_ICON_URL}NetworkingContentDelivery/ElasticLoadBalancingNetworkLoadBalancer.puml",
        "awsglobalaccelerator" to "${AWS_ICON_URL}NetworkingContentDelivery/GlobalAccelerator.puml",
        "awsnetworkingcontentdelivery" to "${AWS_ICON_URL}NetworkingContentDelivery/NetworkingContentDelivery.puml",
        "awsprivatelink" to "${AWS_ICON_URL}NetworkingContentDelivery/PrivateLink.puml",
        "awsroute53" to "${AWS_ICON_URL}NetworkingContentDelivery/Route53.puml",
        "awsroute53hostedzone" to "${AWS_ICON_URL}NetworkingContentDelivery/Route53HostedZone.puml",
        "awsroute53resolver" to "${AWS_ICON_URL}NetworkingContentDelivery/Route53Resolver.puml",
        "awsroute53resolverdnsfirewall" to "${AWS_ICON_URL}NetworkingContentDelivery/Route53ResolverDNSFirewall.puml",
        "awsroute53resolverquerylogging" to "${AWS_ICON_URL}NetworkingContentDelivery/Route53ResolverQueryLogging.puml",
        "awsroute53routetable" to "${AWS_ICON_URL}NetworkingContentDelivery/Route53RouteTable.puml",
        "awssitetositevpn" to "${AWS_ICON_URL}NetworkingContentDelivery/SitetoSiteVPN.puml",
        "awstransitgateway" to "${AWS_ICON_URL}NetworkingContentDelivery/TransitGateway.puml",
        "awsvpccarriergateway" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCCarrierGateway.puml",
        "awsvpccustomergateway" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCCustomerGateway.puml",
        "awsvpcelasticnetworkadapter" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCElasticNetworkAdapter.puml",
        "awsvpcelasticnetworkinterface" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCElasticNetworkInterface.puml",
        "awsvpcendpoints" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCEndpoints.puml",
        "awsvpcflowlogs" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCFlowLogs.puml",
        "awsvpcinternetgateway" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCInternetGateway.puml",
        "awsvpcnatgateway" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCNATGateway.puml",
        "awsvpcnetworkaccesscontrollist" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCNetworkAccessControlList.puml",
        "awsvpcpeeringconnection" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCPeeringConnection.puml",
        "awsvpcreachabilityanalyzer" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCReachabilityAnalyzer.puml",
        "awsvpcrouter" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCRouter.puml",
        "awsvpctrafficmirroring" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCTrafficMirroring.puml",
        "awsvpcvpnconnection" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCVPNConnection.puml",
        "awsvpcvpngateway" to "${AWS_ICON_URL}NetworkingContentDelivery/VPCVPNGateway.puml",
        "awsvirtualprivatecloud" to "${AWS_ICON_URL}NetworkingContentDelivery/VirtualPrivateCloud.puml",
        "awsbackup" to "${AWS_ICON_URL}Storage/Backup.puml",
        "awsbackupbackupplan" to "${AWS_ICON_URL}Storage/BackupBackupPlan.puml",
        "awsbackupbackuprestore" to "${AWS_ICON_URL}Storage/BackupBackupRestore.puml",
        "awsbackupbackupvault" to "${AWS_ICON_URL}Storage/BackupBackupVault.puml",
        "awsbackupcompliancereporting" to "${AWS_ICON_URL}Storage/BackupComplianceReporting.puml",
        "awsbackuprecoverypointobjective" to "${AWS_ICON_URL}Storage/BackupRecoveryPointObjective.puml",
        "awsbackuprecoverytimeobjective" to "${AWS_ICON_URL}Storage/BackupRecoveryTimeObjective.puml",
        "awscloudenduredisasterrecovery" to "${AWS_ICON_URL}Storage/CloudEndureDisasterRecovery.puml",
        "awselasticblockstore" to "${AWS_ICON_URL}Storage/ElasticBlockStore.puml",
        "awselasticblockstoreamazondatalifecyclemanager" to "${AWS_ICON_URL}Storage/ElasticBlockStoreAmazonDataLifecycleManager.puml",
        "awselasticblockstoremultiplevolumes" to "${AWS_ICON_URL}Storage/ElasticBlockStoreMultipleVolumes.puml",
        "awselasticblockstoresnapshot" to "${AWS_ICON_URL}Storage/ElasticBlockStoreSnapshot.puml",
        "awselasticblockstorevolume" to "${AWS_ICON_URL}Storage/ElasticBlockStoreVolume.puml",
        "awselasticblockstorevolumegp3" to "${AWS_ICON_URL}Storage/ElasticBlockStoreVolumegp3.puml",
        "awselasticfilesystem" to "${AWS_ICON_URL}Storage/ElasticFileSystem.puml",
        "awselasticfilesystemfilesystem" to "${AWS_ICON_URL}Storage/ElasticFileSystemFileSystem.puml",
        "awselasticfilesystemonezone" to "${AWS_ICON_URL}Storage/ElasticFileSystemOneZone.puml",
        "awselasticfilesystemonezoneinfrequentaccess" to "${AWS_ICON_URL}Storage/ElasticFileSystemOneZoneInfrequentAccess.puml",
        "awselasticfilesystemstandard" to "${AWS_ICON_URL}Storage/ElasticFileSystemStandard.puml",
        "awselasticfilesystemstandardinfrequentaccess" to "${AWS_ICON_URL}Storage/ElasticFileSystemStandardInfrequentAccess.puml",
        "awsfsx" to "${AWS_ICON_URL}Storage/FSx.puml",
        "awsfsxforlustre" to "${AWS_ICON_URL}Storage/FSxforLustre.puml",
        "awsfsxforwindowsfileserver" to "${AWS_ICON_URL}Storage/FSxforWindowsFileServer.puml",
        "awss3onoutpostsstorage" to "${AWS_ICON_URL}Storage/S3OnOutpostsStorage.puml",
        "awss3" to "${AWS_ICON_URL}Storage/SimpleStorageService.puml",
        "awss3bucket" to "${AWS_ICON_URL}Storage/SimpleStorageServiceBucket.puml",
        "awss3bucketwithobjects" to "${AWS_ICON_URL}Storage/SimpleStorageServiceBucketWithObjects.puml",
        "awss3generalaccesspoints" to "${AWS_ICON_URL}Storage/SimpleStorageServiceGeneralAccessPoints.puml",
        "awss3glacier" to "${AWS_ICON_URL}Storage/SimpleStorageServiceGlacier.puml",
        "awss3glacierarchive" to "${AWS_ICON_URL}Storage/SimpleStorageServiceGlacierArchive.puml",
        "awss3glaciervault" to "${AWS_ICON_URL}Storage/SimpleStorageServiceGlacierVault.puml",
        "awss3object" to "${AWS_ICON_URL}Storage/SimpleStorageServiceObject.puml",
        "awss3glacier" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3Glacier.puml",
        "awss3glacierdeeparchive" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3GlacierDeepArchive.puml",
        "awss3intelligenttiering" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3IntelligentTiering.puml",
        "awss3objectlambda" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3ObjectLambda.puml",
        "awss3objectlambdaaccesspoints" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3ObjectLambdaAccessPoints.puml",
        "awss3onoutposts" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3OnOutposts.puml",
        "awss3onezoneia" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3OneZoneIA.puml",
        "awss3replication" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3Replication.puml",
        "awss3replicationtimecontrol" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3ReplicationTimeControl.puml",
        "awss3standard" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3Standard.puml",
        "awss3standardia" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3StandardIA.puml",
        "awss3storagelens" to "${AWS_ICON_URL}Storage/SimpleStorageServiceS3StorageLens.puml",
        "awss3vpcaccesspoints" to "${AWS_ICON_URL}Storage/SimpleStorageServiceVPCAccessPoints.puml",
        "awssnowball" to "${AWS_ICON_URL}Storage/Snowball.puml",
        "awssnowballedge" to "${AWS_ICON_URL}Storage/SnowballEdge.puml",
        "awssnowballsnowballimportexport" to "${AWS_ICON_URL}Storage/SnowballSnowballImportExport.puml",
        "awssnowcone" to "${AWS_ICON_URL}Storage/Snowcone.puml",
        "awssnowmobile" to "${AWS_ICON_URL}Storage/Snowmobile.puml",
        "awsstorage" to "${AWS_ICON_URL}Storage/Storage.puml",
        "awsstoragegateway" to "${AWS_ICON_URL}Storage/StorageGateway.puml",
        "awsstoragegatewayamazonfsxfilegateway" to "${AWS_ICON_URL}Storage/StorageGatewayAmazonFSxFileGateway.puml",
        "awsstoragegatewayamazons3filegateway" to "${AWS_ICON_URL}Storage/StorageGatewayAmazonS3FileGateway.puml",
        "awsstoragegatewaycachedvolume" to "${AWS_ICON_URL}Storage/StorageGatewayCachedVolume.puml",
        "awsstoragegatewayfilegateway" to "${AWS_ICON_URL}Storage/StorageGatewayFileGateway.puml",
        "awsstoragegatewaynoncachedvolume" to "${AWS_ICON_URL}Storage/StorageGatewayNonCachedVolume.puml",
        "awsstoragegatewaytapegateway" to "${AWS_ICON_URL}Storage/StorageGatewayTapeGateway.puml",
        "awsstoragegatewayvirtualtapelibrary" to "${AWS_ICON_URL}Storage/StorageGatewayVirtualTapeLibrary.puml",
        "awsstoragegatewayvolumegateway" to "${AWS_ICON_URL}Storage/StorageGatewayVolumeGateway.puml",
    )

    init {
        iconNameToIconUrl.putAll(commonIcons.mapValues { URL(it.value) })
        iconNameToIconUrl.putAll(awsIcons.mapValues { URL(it.value) })
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy