diff --git a/README.md b/README.md
index 194996902..60a51d5ed 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,11 @@
![alibaba cloud provider](https://img.shields.io/badge/provider-AlibabaCloud-orange)
![oracle cloud provider](https://img.shields.io/badge/provider-OracleCloud-orange?logo=oracle&color=f80000)
![programming provider](https://img.shields.io/badge/provider-Programming-orange?color=5f87bf)
+![firebase provider](https://img.shields.io/badge/provider-Firebase-orange?logo=firebase&color=FFCA28)
+![elastic provider](https://img.shields.io/badge/provider-Elastic-orange?logo=elastic&color=005571)
+![saas provider](https://img.shields.io/badge/provider-SaaS-orange?color=5f87bf)
+
+
**Diagram as Code**.
diff --git a/autogen.sh b/autogen.sh
index 766881bcc..1486dd0be 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -4,7 +4,7 @@ set -e
app_root_dir="diagrams"
# NOTE: azure icon set is not latest version
-providers=("onprem" "aws" "azure" "gcp" "k8s" "alibabacloud" "oci" "programming")
+providers=("onprem" "aws" "azure" "gcp" "firebase" "k8s" "alibabacloud" "oci" "programming" "saas" "elastic" "generic")
if ! [ -x "$(command -v round)" ]; then
echo 'round is not installed'
diff --git a/config.py b/config.py
index 85affc3e6..e5bba3a26 100644
--- a/config.py
+++ b/config.py
@@ -11,7 +11,7 @@
DIR_RESOURCE = "resources"
DIR_TEMPLATE = "templates"
-PROVIDERS = ("base", "onprem", "aws", "azure", "gcp", "k8s", "alibabacloud", "oci", "programming")
+PROVIDERS = ("base", "onprem", "aws", "azure", "gcp", "firebase", "k8s", "alibabacloud", "oci", "programming", "saas", "elastic", "generic")
#########################
# Resource Processing #
@@ -29,10 +29,14 @@
"aws": ("Amazon-", "AWS-"),
"azure": ("Azure-",),
"gcp": ("Cloud-",),
+ "firebase": ("Cloud-",),
"k8s": (),
"alibabacloud": (),
"oci": ("OCI-",),
"programming": (),
+ "saas": (),
+ "elastic": (),
+ "generic": (),
}
#########################
@@ -48,14 +52,17 @@
TMPL_MODULE = "module.tmpl"
UPPER_WORDS = {
- "aws": ("aws", "api", "ebs", "ec2", "efs", "emr", "rds", "ml", "mq", "nat", "vpc", "waf"),
+ "aws": ("aws", "api", "ebs", "ec2", "efs", "emr", "rds", "ml", "mq", "nat", "vpc", "waf", "sdk"),
"azure": ("ad", "b2c", "ai", "api", "cdn", "ddos", "dns", "fxt", "hana", "hd", "id", "sap", "sql", "vm"),
"gcp": ("gcp", "ai", "api", "cdn", "dns", "gke", "gpu", "iap", "ml", "nat", "os", "sdk", "sql", "tpu", "vpn"),
+ "firebase": ("ab", "fcm", "ml"),
"k8s": (
"api", "cm", "ccm", "crb", "crd", "ds", "etcd", "hpa", "k8s", "ns", "psp", "pv", "pvc", "rb", "rs",
"sa", "sc", "sts", "svc",
),
"oci": ("oci",),
+ "elastic": ("apm", "siem", "ece", "eck"),
+ "generic": ("vpn",),
}
TITLE_WORDS = {
@@ -75,8 +82,10 @@
"onprem": {
"ci": {
"Circleci": "CircleCI",
+ "Gitlabci": "GitlabCI",
"Travisci": "TravisCI",
"Teamcity": "TC",
+ "Zuulci": "ZuulCI",
},
"container": {
"Rkt": "RKT",
@@ -132,6 +141,8 @@
"database": {
"DatabaseMigrationService": "DMS",
"DocumentdbMongodbCompatibility": "DocumentDB",
+ "DynamodbDax": "DAX",
+ "DynamodbGlobalSecondaryIndex": "DynamodbGSI",
"Database": "DB",
"Dynamodb": "DDB",
"Elasticache": "ElastiCache",
@@ -144,6 +155,9 @@
"engagement": {
"SimpleEmailServiceSes": "SES",
},
+ "general": {
+ "GenericOfficeBuilding": "OfficeBuilding",
+ },
"integration": {
"SimpleNotificationServiceSns": "SNS",
"SimpleQueueServiceSqs": "SQS",
@@ -151,6 +165,7 @@
},
"iot": {
"Freertos": "FreeRTOS",
+ "IotHardwareBoard": "IotBoard",
},
"management": {
"SystemsManager": "SSM",
@@ -176,6 +191,10 @@
"Cloudhsm": "CloudHSM",
"DirectoryService": "DS",
"FirewallManager": "FMS",
+ "IdentityAndAccessManagementIamAccessAnalyzer": "IAMAccessAnalyzer",
+ "IdentityAndAccessManagementIamAWSSts": "IAMAWSSts",
+ "IdentityAndAccessManagementIamPermissions": "IAMPermissions",
+ "IdentityAndAccessManagementIamRole": "IAMRole",
"IdentityAndAccessManagementIam": "IAM",
"KeyManagementService": "KMS",
"ResourceAccessManager": "RAM",
@@ -228,6 +247,11 @@
"Storage": "GCS",
},
},
+ "firebase": {
+ "grow": {
+ "Messaging": "FCM"
+ }
+ },
"k8s": {
"clusterconfig": {
"Limits": "LimitRange",
@@ -341,4 +365,11 @@
"Typescript": "TypeScript"
},
},
+ "saas": {},
+ "elastic": {
+ "elasticsearch": {
+ "Logstash": "LogStash",
+ }
+ },
+ "generic": {},
}
diff --git a/diagrams/aws/database.py b/diagrams/aws/database.py
index 840653631..145fcb5da 100644
--- a/diagrams/aws/database.py
+++ b/diagrams/aws/database.py
@@ -24,6 +24,18 @@ class DocumentdbMongodbCompatibility(_Database):
_icon = "documentdb-mongodb-compatibility.png"
+class DynamodbDax(_Database):
+ _icon = "dynamodb-dax.png"
+
+
+class DynamodbGlobalSecondaryIndex(_Database):
+ _icon = "dynamodb-global-secondary-index.png"
+
+
+class DynamodbTable(_Database):
+ _icon = "dynamodb-table.png"
+
+
class Dynamodb(_Database):
_icon = "dynamodb.png"
@@ -60,6 +72,8 @@ class Timestream(_Database):
DMS = DatabaseMigrationService
DocumentDB = DocumentdbMongodbCompatibility
+DAX = DynamodbDax
+DynamodbGSI = DynamodbGlobalSecondaryIndex
DB = Database
DDB = Dynamodb
ElastiCache = Elasticache
diff --git a/diagrams/aws/game.py b/diagrams/aws/game.py
new file mode 100644
index 000000000..dcd2e0f71
--- /dev/null
+++ b/diagrams/aws/game.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _AWS
+
+
+class _Game(_AWS):
+ _type = "game"
+ _icon_dir = "resources/aws/game"
+
+
+class Gamelift(_Game):
+ _icon = "gamelift.png"
+
+
+# Aliases
diff --git a/diagrams/aws/general.py b/diagrams/aws/general.py
new file mode 100644
index 000000000..80284ba6b
--- /dev/null
+++ b/diagrams/aws/general.py
@@ -0,0 +1,57 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _AWS
+
+
+class _General(_AWS):
+ _type = "general"
+ _icon_dir = "resources/aws/general"
+
+
+class Disk(_General):
+ _icon = "disk.png"
+
+
+class General(_General):
+ _icon = "general.png"
+
+
+class GenericDatabase(_General):
+ _icon = "generic-database.png"
+
+
+class GenericFirewall(_General):
+ _icon = "generic-firewall.png"
+
+
+class GenericOfficeBuilding(_General):
+ _icon = "generic-office-building.png"
+
+
+class GenericSamlToken(_General):
+ _icon = "generic-saml-token.png"
+
+
+class GenericSDK(_General):
+ _icon = "generic-sdk.png"
+
+
+class Marketplace(_General):
+ _icon = "marketplace.png"
+
+
+class TradicionalServer(_General):
+ _icon = "tradicional-server.png"
+
+
+class User(_General):
+ _icon = "user.png"
+
+
+class Users(_General):
+ _icon = "users.png"
+
+
+# Aliases
+
+OfficeBuilding = GenericOfficeBuilding
diff --git a/diagrams/aws/iot.py b/diagrams/aws/iot.py
index d413d3edc..4e30beda1 100644
--- a/diagrams/aws/iot.py
+++ b/diagrams/aws/iot.py
@@ -20,6 +20,14 @@ class Iot1Click(_Iot):
_icon = "iot-1-click.png"
+class IotAlexaEcho(_Iot):
+ _icon = "iot-alexa-echo.png"
+
+
+class IotAlexaSkill(_Iot):
+ _icon = "iot-alexa-skill.png"
+
+
class IotAnalytics(_Iot):
_icon = "iot-analytics.png"
@@ -28,6 +36,14 @@ class IotButton(_Iot):
_icon = "iot-button.png"
+class IotCamera(_Iot):
+ _icon = "iot-camera.png"
+
+
+class IotCertificate(_Iot):
+ _icon = "iot-certificate.png"
+
+
class IotCore(_Iot):
_icon = "iot-core.png"
@@ -48,6 +64,26 @@ class IotGreengrass(_Iot):
_icon = "iot-greengrass.png"
+class IotHardwareBoard(_Iot):
+ _icon = "iot-hardware-board.png"
+
+
+class IotJobs(_Iot):
+ _icon = "iot-jobs.png"
+
+
+class IotMqtt(_Iot):
+ _icon = "iot-mqtt.png"
+
+
+class IotRule(_Iot):
+ _icon = "iot-rule.png"
+
+
+class IotShadow(_Iot):
+ _icon = "iot-shadow.png"
+
+
class IotSitewise(_Iot):
_icon = "iot-sitewise.png"
@@ -56,6 +92,11 @@ class IotThingsGraph(_Iot):
_icon = "iot-things-graph.png"
+class IotTopic(_Iot):
+ _icon = "iot-topic.png"
+
+
# Aliases
FreeRTOS = Freertos
+IotBoard = IotHardwareBoard
diff --git a/diagrams/aws/robotics.py b/diagrams/aws/robotics.py
new file mode 100644
index 000000000..d2111747b
--- /dev/null
+++ b/diagrams/aws/robotics.py
@@ -0,0 +1,23 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _AWS
+
+
+class _Robotics(_AWS):
+ _type = "robotics"
+ _icon_dir = "resources/aws/robotics"
+
+
+class RobomakerSimulator(_Robotics):
+ _icon = "robomaker-simulator.png"
+
+
+class Robomaker(_Robotics):
+ _icon = "robomaker.png"
+
+
+class Robotics(_Robotics):
+ _icon = "robotics.png"
+
+
+# Aliases
diff --git a/diagrams/aws/security.py b/diagrams/aws/security.py
index d03d7175b..61da75a9e 100644
--- a/diagrams/aws/security.py
+++ b/diagrams/aws/security.py
@@ -28,6 +28,10 @@ class Cognito(_Security):
_icon = "cognito.png"
+class Detective(_Security):
+ _icon = "detective.png"
+
+
class DirectoryService(_Security):
_icon = "directory-service.png"
@@ -40,6 +44,22 @@ class Guardduty(_Security):
_icon = "guardduty.png"
+class IdentityAndAccessManagementIamAccessAnalyzer(_Security):
+ _icon = "identity-and-access-management-iam-access-analyzer.png"
+
+
+class IdentityAndAccessManagementIamAWSSts(_Security):
+ _icon = "identity-and-access-management-iam-aws-sts.png"
+
+
+class IdentityAndAccessManagementIamPermissions(_Security):
+ _icon = "identity-and-access-management-iam-permissions.png"
+
+
+class IdentityAndAccessManagementIamRole(_Security):
+ _icon = "identity-and-access-management-iam-role.png"
+
+
class IdentityAndAccessManagementIam(_Security):
_icon = "identity-and-access-management-iam.png"
@@ -90,6 +110,10 @@ class WAF(_Security):
CloudHSM = Cloudhsm
DS = DirectoryService
FMS = FirewallManager
+IAMAccessAnalyzer = IdentityAndAccessManagementIamAccessAnalyzer
+IAMAWSSts = IdentityAndAccessManagementIamAWSSts
+IAMPermissions = IdentityAndAccessManagementIamPermissions
+IAMRole = IdentityAndAccessManagementIamRole
IAM = IdentityAndAccessManagementIam
KMS = KeyManagementService
RAM = ResourceAccessManager
diff --git a/diagrams/azure/general.py b/diagrams/azure/general.py
new file mode 100644
index 000000000..8958e9756
--- /dev/null
+++ b/diagrams/azure/general.py
@@ -0,0 +1,115 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Azure
+
+
+class _General(_Azure):
+ _type = "general"
+ _icon_dir = "resources/azure/general"
+
+
+class Allresources(_General):
+ _icon = "allresources.png"
+
+
+class Azurehome(_General):
+ _icon = "azurehome.png"
+
+
+class Developertools(_General):
+ _icon = "developertools.png"
+
+
+class Helpsupport(_General):
+ _icon = "helpsupport.png"
+
+
+class Information(_General):
+ _icon = "information.png"
+
+
+class Managementgroups(_General):
+ _icon = "managementgroups.png"
+
+
+class Marketplace(_General):
+ _icon = "marketplace.png"
+
+
+class Quickstartcenter(_General):
+ _icon = "quickstartcenter.png"
+
+
+class Recent(_General):
+ _icon = "recent.png"
+
+
+class Reservations(_General):
+ _icon = "reservations.png"
+
+
+class Resource(_General):
+ _icon = "resource.png"
+
+
+class Resourcegroups(_General):
+ _icon = "resourcegroups.png"
+
+
+class Servicehealth(_General):
+ _icon = "servicehealth.png"
+
+
+class Shareddashboard(_General):
+ _icon = "shareddashboard.png"
+
+
+class Subscriptions(_General):
+ _icon = "subscriptions.png"
+
+
+class Support(_General):
+ _icon = "support.png"
+
+
+class Supportrequests(_General):
+ _icon = "supportrequests.png"
+
+
+class Tag(_General):
+ _icon = "tag.png"
+
+
+class Tags(_General):
+ _icon = "tags.png"
+
+
+class Templates(_General):
+ _icon = "templates.png"
+
+
+class Twousericon(_General):
+ _icon = "twousericon.png"
+
+
+class Userhealthicon(_General):
+ _icon = "userhealthicon.png"
+
+
+class Usericon(_General):
+ _icon = "usericon.png"
+
+
+class Userprivacy(_General):
+ _icon = "userprivacy.png"
+
+
+class Userresource(_General):
+ _icon = "userresource.png"
+
+
+class Whatsnew(_General):
+ _icon = "whatsnew.png"
+
+
+# Aliases
diff --git a/diagrams/elastic/__init__.py b/diagrams/elastic/__init__.py
new file mode 100644
index 000000000..786fa60e4
--- /dev/null
+++ b/diagrams/elastic/__init__.py
@@ -0,0 +1,12 @@
+"""
+Elastic provides a set of general elastic services.
+"""
+
+from diagrams import Node
+
+
+class _Elastic(Node):
+ _provider = "elastic"
+ _icon_dir = "resources/elastic"
+
+ fontcolor = "#ffffff"
diff --git a/diagrams/elastic/elasticsearch.py b/diagrams/elastic/elasticsearch.py
new file mode 100644
index 000000000..a903a42b6
--- /dev/null
+++ b/diagrams/elastic/elasticsearch.py
@@ -0,0 +1,49 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Elastic
+
+
+class _Elasticsearch(_Elastic):
+ _type = "elasticsearch"
+ _icon_dir = "resources/elastic/elasticsearch"
+
+
+class Alerting(_Elasticsearch):
+ _icon = "alerting.png"
+
+
+class Elasticsearch(_Elasticsearch):
+ _icon = "elasticsearch.png"
+
+
+class Kibana(_Elasticsearch):
+ _icon = "kibana.png"
+
+
+class Logstash(_Elasticsearch):
+ _icon = "logstash.png"
+
+
+class MachineLearning(_Elasticsearch):
+ _icon = "machine-learning.png"
+
+
+class Maps(_Elasticsearch):
+ _icon = "maps.png"
+
+
+class Monitoring(_Elasticsearch):
+ _icon = "monitoring.png"
+
+
+class SecuritySettings(_Elasticsearch):
+ _icon = "security-settings.png"
+
+
+class Sql(_Elasticsearch):
+ _icon = "sql.png"
+
+
+# Aliases
+
+LogStash = Logstash
diff --git a/diagrams/elastic/enterprisesearch.py b/diagrams/elastic/enterprisesearch.py
new file mode 100644
index 000000000..d5e194591
--- /dev/null
+++ b/diagrams/elastic/enterprisesearch.py
@@ -0,0 +1,27 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Elastic
+
+
+class _Enterprisesearch(_Elastic):
+ _type = "enterprisesearch"
+ _icon_dir = "resources/elastic/enterprisesearch"
+
+
+class AppSearch(_Enterprisesearch):
+ _icon = "app-search.png"
+
+
+class EnterpriseSearch(_Enterprisesearch):
+ _icon = "enterprise-search.png"
+
+
+class SiteSearch(_Enterprisesearch):
+ _icon = "site-search.png"
+
+
+class WorkplaceSearch(_Enterprisesearch):
+ _icon = "workplace-search.png"
+
+
+# Aliases
diff --git a/diagrams/elastic/observability.py b/diagrams/elastic/observability.py
new file mode 100644
index 000000000..3001340d2
--- /dev/null
+++ b/diagrams/elastic/observability.py
@@ -0,0 +1,31 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Elastic
+
+
+class _Observability(_Elastic):
+ _type = "observability"
+ _icon_dir = "resources/elastic/observability"
+
+
+class APM(_Observability):
+ _icon = "apm.png"
+
+
+class Logs(_Observability):
+ _icon = "logs.png"
+
+
+class Metrics(_Observability):
+ _icon = "metrics.png"
+
+
+class Observability(_Observability):
+ _icon = "observability.png"
+
+
+class Uptime(_Observability):
+ _icon = "uptime.png"
+
+
+# Aliases
diff --git a/diagrams/elastic/orchestration.py b/diagrams/elastic/orchestration.py
new file mode 100644
index 000000000..99084cc72
--- /dev/null
+++ b/diagrams/elastic/orchestration.py
@@ -0,0 +1,19 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Elastic
+
+
+class _Orchestration(_Elastic):
+ _type = "orchestration"
+ _icon_dir = "resources/elastic/orchestration"
+
+
+class ECE(_Orchestration):
+ _icon = "ece.png"
+
+
+class ECK(_Orchestration):
+ _icon = "eck.png"
+
+
+# Aliases
diff --git a/diagrams/elastic/security.py b/diagrams/elastic/security.py
new file mode 100644
index 000000000..34afe3e00
--- /dev/null
+++ b/diagrams/elastic/security.py
@@ -0,0 +1,23 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Elastic
+
+
+class _Security(_Elastic):
+ _type = "security"
+ _icon_dir = "resources/elastic/security"
+
+
+class Endpoint(_Security):
+ _icon = "endpoint.png"
+
+
+class Security(_Security):
+ _icon = "security.png"
+
+
+class SIEM(_Security):
+ _icon = "siem.png"
+
+
+# Aliases
diff --git a/diagrams/firebase/__init__.py b/diagrams/firebase/__init__.py
new file mode 100644
index 000000000..5cd693ec6
--- /dev/null
+++ b/diagrams/firebase/__init__.py
@@ -0,0 +1,12 @@
+"""
+Firebase provides a set of services for Firebase provider.
+"""
+
+from diagrams import Node
+
+
+class _Firebase(Node):
+ _provider = "firebase"
+ _icon_dir = "resources/firebase"
+
+ fontcolor = "#ffffff"
diff --git a/diagrams/firebase/base.py b/diagrams/firebase/base.py
new file mode 100644
index 000000000..a7c9531c5
--- /dev/null
+++ b/diagrams/firebase/base.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Firebase
+
+
+class _Base(_Firebase):
+ _type = "base"
+ _icon_dir = "resources/firebase/base"
+
+
+class Firebase(_Base):
+ _icon = "firebase.png"
+
+
+# Aliases
diff --git a/diagrams/firebase/develop.py b/diagrams/firebase/develop.py
new file mode 100644
index 000000000..27426e517
--- /dev/null
+++ b/diagrams/firebase/develop.py
@@ -0,0 +1,39 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Firebase
+
+
+class _Develop(_Firebase):
+ _type = "develop"
+ _icon_dir = "resources/firebase/develop"
+
+
+class Authentication(_Develop):
+ _icon = "authentication.png"
+
+
+class Firestore(_Develop):
+ _icon = "firestore.png"
+
+
+class Functions(_Develop):
+ _icon = "functions.png"
+
+
+class Hosting(_Develop):
+ _icon = "hosting.png"
+
+
+class MLKit(_Develop):
+ _icon = "ml-kit.png"
+
+
+class RealtimeDatabase(_Develop):
+ _icon = "realtime-database.png"
+
+
+class Storage(_Develop):
+ _icon = "storage.png"
+
+
+# Aliases
diff --git a/diagrams/firebase/extentions.py b/diagrams/firebase/extentions.py
new file mode 100644
index 000000000..9d5926c23
--- /dev/null
+++ b/diagrams/firebase/extentions.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Firebase
+
+
+class _Extentions(_Firebase):
+ _type = "extentions"
+ _icon_dir = "resources/firebase/extentions"
+
+
+class Extensions(_Extentions):
+ _icon = "extensions.png"
+
+
+# Aliases
diff --git a/diagrams/firebase/grow.py b/diagrams/firebase/grow.py
new file mode 100644
index 000000000..b015dd3f4
--- /dev/null
+++ b/diagrams/firebase/grow.py
@@ -0,0 +1,45 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Firebase
+
+
+class _Grow(_Firebase):
+ _type = "grow"
+ _icon_dir = "resources/firebase/grow"
+
+
+class ABTesting(_Grow):
+ _icon = "ab-testing.png"
+
+
+class AppIndexing(_Grow):
+ _icon = "app-indexing.png"
+
+
+class DynamicLinks(_Grow):
+ _icon = "dynamic-links.png"
+
+
+class InAppMessaging(_Grow):
+ _icon = "in-app-messaging.png"
+
+
+class Invites(_Grow):
+ _icon = "invites.png"
+
+
+class Messaging(_Grow):
+ _icon = "messaging.png"
+
+
+class Predictions(_Grow):
+ _icon = "predictions.png"
+
+
+class RemoteConfig(_Grow):
+ _icon = "remote-config.png"
+
+
+# Aliases
+
+FCM = Messaging
diff --git a/diagrams/firebase/quality.py b/diagrams/firebase/quality.py
new file mode 100644
index 000000000..227a4c354
--- /dev/null
+++ b/diagrams/firebase/quality.py
@@ -0,0 +1,31 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Firebase
+
+
+class _Quality(_Firebase):
+ _type = "quality"
+ _icon_dir = "resources/firebase/quality"
+
+
+class AppDistribution(_Quality):
+ _icon = "app-distribution.png"
+
+
+class CrashReporting(_Quality):
+ _icon = "crash-reporting.png"
+
+
+class Crashlytics(_Quality):
+ _icon = "crashlytics.png"
+
+
+class PerformanceMonitoring(_Quality):
+ _icon = "performance-monitoring.png"
+
+
+class TestLab(_Quality):
+ _icon = "test-lab.png"
+
+
+# Aliases
diff --git a/diagrams/generic/__init__.py b/diagrams/generic/__init__.py
new file mode 100644
index 000000000..70db6868c
--- /dev/null
+++ b/diagrams/generic/__init__.py
@@ -0,0 +1,12 @@
+"""
+Generic provides the possibility of load an image to be presented as a node.
+"""
+
+from diagrams import Node
+
+
+class _Generic(Node):
+ provider = "generic"
+ _icon_dir = "resources/generic"
+
+ fontcolor = "#ffffff"
diff --git a/diagrams/generic/blank.py b/diagrams/generic/blank.py
new file mode 100644
index 000000000..d50410b1b
--- /dev/null
+++ b/diagrams/generic/blank.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Generic
+
+
+class _Blank(_Generic):
+ _type = "blank"
+ _icon_dir = "resources/generic/blank"
+
+
+class Blank(_Blank):
+ _icon = "blank.png"
+
+
+# Aliases
diff --git a/diagrams/generic/compute.py b/diagrams/generic/compute.py
new file mode 100644
index 000000000..436c641e5
--- /dev/null
+++ b/diagrams/generic/compute.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Generic
+
+
+class _Compute(_Generic):
+ _type = "compute"
+ _icon_dir = "resources/generic/compute"
+
+
+class Rack(_Compute):
+ _icon = "rack.png"
+
+
+# Aliases
diff --git a/diagrams/generic/network.py b/diagrams/generic/network.py
new file mode 100644
index 000000000..7b9a9ee0b
--- /dev/null
+++ b/diagrams/generic/network.py
@@ -0,0 +1,27 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Generic
+
+
+class _Network(_Generic):
+ _type = "network"
+ _icon_dir = "resources/generic/network"
+
+
+class Firewall(_Network):
+ _icon = "firewall.png"
+
+
+class Router(_Network):
+ _icon = "router.png"
+
+
+class Switch(_Network):
+ _icon = "switch.png"
+
+
+class VPN(_Network):
+ _icon = "vpn.png"
+
+
+# Aliases
diff --git a/diagrams/generic/place.py b/diagrams/generic/place.py
new file mode 100644
index 000000000..ec3160695
--- /dev/null
+++ b/diagrams/generic/place.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Generic
+
+
+class _Place(_Generic):
+ _type = "place"
+ _icon_dir = "resources/generic/place"
+
+
+class Datacenter(_Place):
+ _icon = "datacenter.png"
+
+
+# Aliases
diff --git a/diagrams/generic/storage.py b/diagrams/generic/storage.py
new file mode 100644
index 000000000..9e58cefea
--- /dev/null
+++ b/diagrams/generic/storage.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Generic
+
+
+class _Storage(_Generic):
+ _type = "storage"
+ _icon_dir = "resources/generic/storage"
+
+
+class Storage(_Storage):
+ _icon = "storage.png"
+
+
+# Aliases
diff --git a/diagrams/onprem/ci.py b/diagrams/onprem/ci.py
index f6302b05e..896e5de66 100644
--- a/diagrams/onprem/ci.py
+++ b/diagrams/onprem/ci.py
@@ -12,6 +12,10 @@ class Circleci(_Ci):
_icon = "circleci.png"
+class Gitlabci(_Ci):
+ _icon = "gitlabci.png"
+
+
class Jenkins(_Ci):
_icon = "jenkins.png"
@@ -24,8 +28,14 @@ class Travisci(_Ci):
_icon = "travisci.png"
+class Zuulci(_Ci):
+ _icon = "zuulci.png"
+
+
# Aliases
CircleCI = Circleci
+GitlabCI = Gitlabci
TravisCI = Travisci
TC = Teamcity
+ZuulCI = Zuulci
diff --git a/diagrams/onprem/database.py b/diagrams/onprem/database.py
index 0d5d7ee83..9551d9387 100644
--- a/diagrams/onprem/database.py
+++ b/diagrams/onprem/database.py
@@ -20,6 +20,10 @@ class Cockroachdb(_Database):
_icon = "cockroachdb.png"
+class Couchbase(_Database):
+ _icon = "couchbase.png"
+
+
class Couchdb(_Database):
_icon = "couchdb.png"
diff --git a/diagrams/onprem/gitops.py b/diagrams/onprem/gitops.py
index 670bd2c50..c4702c624 100644
--- a/diagrams/onprem/gitops.py
+++ b/diagrams/onprem/gitops.py
@@ -12,6 +12,14 @@ class Argocd(_Gitops):
_icon = "argocd.png"
+class Flagger(_Gitops):
+ _icon = "flagger.png"
+
+
+class Flux(_Gitops):
+ _icon = "flux.png"
+
+
# Aliases
ArgoCD = Argocd
diff --git a/diagrams/onprem/monitoring.py b/diagrams/onprem/monitoring.py
index 3013d05d0..cbabfce76 100644
--- a/diagrams/onprem/monitoring.py
+++ b/diagrams/onprem/monitoring.py
@@ -24,6 +24,10 @@ class Prometheus(_Monitoring):
_icon = "prometheus.png"
+class Sentry(_Monitoring):
+ _icon = "sentry.png"
+
+
class Splunk(_Monitoring):
_icon = "splunk.png"
diff --git a/diagrams/programming/language.py b/diagrams/programming/language.py
index 60de22150..36c3d4c0e 100644
--- a/diagrams/programming/language.py
+++ b/diagrams/programming/language.py
@@ -68,6 +68,10 @@ class Ruby(_Language):
_icon = "ruby.png"
+class Rust(_Language):
+ _icon = "rust.png"
+
+
class Swift(_Language):
_icon = "swift.png"
diff --git a/diagrams/saas/__init__.py b/diagrams/saas/__init__.py
new file mode 100644
index 000000000..ecae1d803
--- /dev/null
+++ b/diagrams/saas/__init__.py
@@ -0,0 +1,12 @@
+"""
+Saas provides a set of general saas services.
+"""
+
+from diagrams import Node
+
+
+class _Saas(Node):
+ _provider = "saas"
+ _icon_dir = "resources/saas"
+
+ fontcolor = "#ffffff"
diff --git a/diagrams/saas/chat.py b/diagrams/saas/chat.py
new file mode 100644
index 000000000..ebdf0532f
--- /dev/null
+++ b/diagrams/saas/chat.py
@@ -0,0 +1,19 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Saas
+
+
+class _Chat(_Saas):
+ _type = "chat"
+ _icon_dir = "resources/saas/chat"
+
+
+class Slack(_Chat):
+ _icon = "slack.png"
+
+
+class Telegram(_Chat):
+ _icon = "telegram.png"
+
+
+# Aliases
diff --git a/diagrams/saas/social.py b/diagrams/saas/social.py
new file mode 100644
index 000000000..6ad326db5
--- /dev/null
+++ b/diagrams/saas/social.py
@@ -0,0 +1,19 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Saas
+
+
+class _Social(_Saas):
+ _type = "social"
+ _icon_dir = "resources/saas/social"
+
+
+class Facebook(_Social):
+ _icon = "facebook.png"
+
+
+class Twitter(_Social):
+ _icon = "twitter.png"
+
+
+# Aliases
diff --git a/docs/nodes/aws.md b/docs/nodes/aws.md
index 65f2e3770..5ab1e4857 100644
--- a/docs/nodes/aws.md
+++ b/docs/nodes/aws.md
@@ -5,7 +5,89 @@ title: AWS
Node classes list of aws provider.
-## aws.ml
+## aws.analytics
+
+- **diagrams.aws.analytics.Analytics**
+- **diagrams.aws.analytics.Athena**
+- **diagrams.aws.analytics.CloudsearchSearchDocuments**
+- **diagrams.aws.analytics.Cloudsearch**
+- **diagrams.aws.analytics.DataPipeline**
+- **diagrams.aws.analytics.ElasticsearchService**, **ES** (alias)
+- **diagrams.aws.analytics.EMRCluster**
+- **diagrams.aws.analytics.EMRHdfsCluster**
+- **diagrams.aws.analytics.EMR**
+- **diagrams.aws.analytics.GlueCrawlers**
+- **diagrams.aws.analytics.GlueDataCatalog**
+- **diagrams.aws.analytics.Glue**
+- **diagrams.aws.analytics.KinesisDataAnalytics**
+- **diagrams.aws.analytics.KinesisDataFirehose**
+- **diagrams.aws.analytics.KinesisDataStreams**
+- **diagrams.aws.analytics.KinesisVideoStreams**
+- **diagrams.aws.analytics.Kinesis**
+- **diagrams.aws.analytics.LakeFormation**
+- **diagrams.aws.analytics.ManagedStreamingForKafka**
+- **diagrams.aws.analytics.Quicksight**
+- **diagrams.aws.analytics.RedshiftDenseComputeNode**
+- **diagrams.aws.analytics.RedshiftDenseStorageNode**
+- **diagrams.aws.analytics.Redshift**
+
+## aws.compute
+
+- **diagrams.aws.compute.ApplicationAutoScaling**, **AutoScaling** (alias)
+- **diagrams.aws.compute.Batch**
+- **diagrams.aws.compute.Compute**
+- **diagrams.aws.compute.EC2ContainerRegistry**, **ECR** (alias)
+- **diagrams.aws.compute.EC2**
+- **diagrams.aws.compute.ElasticBeanstalk**, **EB** (alias)
+- **diagrams.aws.compute.ElasticContainerService**, **ECS** (alias)
+- **diagrams.aws.compute.ElasticKubernetesService**, **EKS** (alias)
+- **diagrams.aws.compute.Fargate**
+- **diagrams.aws.compute.Lambda**
+- **diagrams.aws.compute.Lightsail**
+- **diagrams.aws.compute.Outposts**
+- **diagrams.aws.compute.ServerlessApplicationRepository**, **SAR** (alias)
+- **diagrams.aws.compute.ThinkboxDeadline**
+- **diagrams.aws.compute.ThinkboxDraft**
+- **diagrams.aws.compute.ThinkboxFrost**
+- **diagrams.aws.compute.ThinkboxKrakatoa**
+- **diagrams.aws.compute.ThinkboxSequoia**
+- **diagrams.aws.compute.ThinkboxStoke**
+- **diagrams.aws.compute.ThinkboxXmesh**
+- **diagrams.aws.compute.VmwareCloudOnAWS**
+
+## aws.database
+
+- **diagrams.aws.database.Aurora**
+- **diagrams.aws.database.DatabaseMigrationService**, **DMS** (alias)
+- **diagrams.aws.database.Database**, **DB** (alias)
+- **diagrams.aws.database.DocumentdbMongodbCompatibility**, **DocumentDB** (alias)
+- **diagrams.aws.database.DynamodbDax**, **DAX** (alias)
+- **diagrams.aws.database.DynamodbGlobalSecondaryIndex**, **DynamodbGSI** (alias)
+- **diagrams.aws.database.DynamodbTable**
+- **diagrams.aws.database.Dynamodb**, **DDB** (alias)
+- **diagrams.aws.database.Elasticache**, **ElastiCache** (alias)
+- **diagrams.aws.database.Neptune**
+- **diagrams.aws.database.QuantumLedgerDatabaseQldb**, **QLDB** (alias)
+- **diagrams.aws.database.RDSOnVmware**
+- **diagrams.aws.database.RDS**
+- **diagrams.aws.database.Redshift**
+- **diagrams.aws.database.Timestream**
+
+## aws.devtools
+
+- **diagrams.aws.devtools.CloudDevelopmentKit**
+- **diagrams.aws.devtools.Cloud9**
+- **diagrams.aws.devtools.Codebuild**
+- **diagrams.aws.devtools.Codecommit**
+- **diagrams.aws.devtools.Codedeploy**
+- **diagrams.aws.devtools.Codepipeline**
+- **diagrams.aws.devtools.Codestar**
+- **diagrams.aws.devtools.CommandLineInterface**, **CLI** (alias)
+- **diagrams.aws.devtools.DeveloperTools**, **DevTools** (alias)
+- **diagrams.aws.devtools.ToolsAndSdks**
+- **diagrams.aws.devtools.XRay**
+
+## aws.engagement
- **diagrams.aws.ml.ApacheMxnetOnAWS**
- **diagrams.aws.ml.Comprehend**
@@ -27,6 +109,24 @@ Node classes list of aws provider.
- **diagrams.aws.ml.Transcribe**
- **diagrams.aws.ml.Translate**
+## aws.game
+
+- **diagrams.aws.game.Gamelift**
+
+## aws.general
+
+- **diagrams.aws.general.Disk**
+- **diagrams.aws.general.General**
+- **diagrams.aws.general.GenericDatabase**
+- **diagrams.aws.general.GenericFirewall**
+- **diagrams.aws.general.GenericOfficeBuilding**, **OfficeBuilding** (alias)
+- **diagrams.aws.general.GenericSamlToken**
+- **diagrams.aws.general.GenericSDK**
+- **diagrams.aws.general.Marketplace**
+- **diagrams.aws.general.TradicionalServer**
+- **diagrams.aws.general.User**
+- **diagrams.aws.general.Users**
+
## aws.integration
- **diagrams.aws.integration.ApplicationIntegration**
@@ -40,39 +140,28 @@ Node classes list of aws provider.
## aws.media
-- **diagrams.aws.media.ElasticTranscoder**
-- **diagrams.aws.media.ElementalConductor**
-- **diagrams.aws.media.ElementalDelta**
-- **diagrams.aws.media.ElementalLive**
-- **diagrams.aws.media.ElementalMediaconnect**
-- **diagrams.aws.media.ElementalMediaconvert**
-- **diagrams.aws.media.ElementalMedialive**
-- **diagrams.aws.media.ElementalMediapackage**
-- **diagrams.aws.media.ElementalMediastore**
-- **diagrams.aws.media.ElementalMediatailor**
-- **diagrams.aws.media.ElementalServer**
-
-## aws.security
-
-- **diagrams.aws.security.Artifact**
-- **diagrams.aws.security.CertificateManager**, **ACM** (alias)
-- **diagrams.aws.security.CloudDirectory**
-- **diagrams.aws.security.Cloudhsm**, **CloudHSM** (alias)
-- **diagrams.aws.security.Cognito**
-- **diagrams.aws.security.DirectoryService**, **DS** (alias)
-- **diagrams.aws.security.FirewallManager**, **FMS** (alias)
-- **diagrams.aws.security.Guardduty**
-- **diagrams.aws.security.IdentityAndAccessManagementIam**, **IAM** (alias)
-- **diagrams.aws.security.Inspector**
-- **diagrams.aws.security.KeyManagementService**, **KMS** (alias)
-- **diagrams.aws.security.Macie**
-- **diagrams.aws.security.ResourceAccessManager**, **RAM** (alias)
-- **diagrams.aws.security.SecretsManager**
-- **diagrams.aws.security.SecurityHub**
-- **diagrams.aws.security.SecurityIdentityAndCompliance**
-- **diagrams.aws.security.Shield**
-- **diagrams.aws.security.SingleSignOn**
-- **diagrams.aws.security.WAF**
+- **diagrams.aws.iot.Freertos**, **FreeRTOS** (alias)
+- **diagrams.aws.iot.InternetOfThings**
+- **diagrams.aws.iot.Iot1Click**
+- **diagrams.aws.iot.IotAlexaEcho**
+- **diagrams.aws.iot.IotAlexaSkill**
+- **diagrams.aws.iot.IotAnalytics**
+- **diagrams.aws.iot.IotButton**
+- **diagrams.aws.iot.IotCamera**
+- **diagrams.aws.iot.IotCertificate**
+- **diagrams.aws.iot.IotCore**
+- **diagrams.aws.iot.IotDeviceDefender**
+- **diagrams.aws.iot.IotDeviceManagement**
+- **diagrams.aws.iot.IotEvents**
+- **diagrams.aws.iot.IotGreengrass**
+- **diagrams.aws.iot.IotHardwareBoard**, **IotBoard** (alias)
+- **diagrams.aws.iot.IotJobs**
+- **diagrams.aws.iot.IotMqtt**
+- **diagrams.aws.iot.IotRule**
+- **diagrams.aws.iot.IotShadow**
+- **diagrams.aws.iot.IotSitewise**
+- **diagrams.aws.iot.IotThingsGraph**
+- **diagrams.aws.iot.IotTopic**
## aws.management
@@ -150,6 +239,39 @@ Node classes list of aws provider.
- **diagrams.aws.network.VPCRouter**
- **diagrams.aws.network.VPC**
+## aws.robotics
+
+- **diagrams.aws.robotics.RobomakerSimulator**
+- **diagrams.aws.robotics.Robomaker**
+- **diagrams.aws.robotics.Robotics**
+
+## aws.security
+
+- **diagrams.aws.security.Artifact**
+- **diagrams.aws.security.CertificateManager**, **ACM** (alias)
+- **diagrams.aws.security.CloudDirectory**
+- **diagrams.aws.security.Cloudhsm**, **CloudHSM** (alias)
+- **diagrams.aws.security.Cognito**
+- **diagrams.aws.security.Detective**
+- **diagrams.aws.security.DirectoryService**, **DS** (alias)
+- **diagrams.aws.security.FirewallManager**, **FMS** (alias)
+- **diagrams.aws.security.Guardduty**
+- **diagrams.aws.security.IdentityAndAccessManagementIamAccessAnalyzer**, **IAMAccessAnalyzer** (alias)
+- **diagrams.aws.security.IdentityAndAccessManagementIamAWSSts**, **IAMAWSSts** (alias)
+- **diagrams.aws.security.IdentityAndAccessManagementIamPermissions**, **IAMPermissions** (alias)
+- **diagrams.aws.security.IdentityAndAccessManagementIamRole**, **IAMRole** (alias)
+- **diagrams.aws.security.IdentityAndAccessManagementIam**, **IAM** (alias)
+- **diagrams.aws.security.Inspector**
+- **diagrams.aws.security.KeyManagementService**, **KMS** (alias)
+- **diagrams.aws.security.Macie**
+- **diagrams.aws.security.ResourceAccessManager**, **RAM** (alias)
+- **diagrams.aws.security.SecretsManager**
+- **diagrams.aws.security.SecurityHub**
+- **diagrams.aws.security.SecurityIdentityAndCompliance**
+- **diagrams.aws.security.Shield**
+- **diagrams.aws.security.SingleSignOn**
+- **diagrams.aws.security.WAF**
+
## aws.storage
- **diagrams.aws.storage.Backup**
diff --git a/docs/nodes/azure.md b/docs/nodes/azure.md
index aee167a2c..41216a52d 100644
--- a/docs/nodes/azure.md
+++ b/docs/nodes/azure.md
@@ -42,12 +42,61 @@ Node classes list of azure provider.
- **diagrams.azure.security.SecurityCenter**
- **diagrams.azure.security.Sentinel**
-## azure.mobile
+## azure.general
+
+- **diagrams.azure.general.Allresources**
+- **diagrams.azure.general.Azurehome**
+- **diagrams.azure.general.Developertools**
+- **diagrams.azure.general.Helpsupport**
+- **diagrams.azure.general.Information**
+- **diagrams.azure.general.Managementgroups**
+- **diagrams.azure.general.Marketplace**
+- **diagrams.azure.general.Quickstartcenter**
+- **diagrams.azure.general.Recent**
+- **diagrams.azure.general.Reservations**
+- **diagrams.azure.general.Resource**
+- **diagrams.azure.general.Resourcegroups**
+- **diagrams.azure.general.Servicehealth**
+- **diagrams.azure.general.Shareddashboard**
+- **diagrams.azure.general.Subscriptions**
+- **diagrams.azure.general.Support**
+- **diagrams.azure.general.Supportrequests**
+- **diagrams.azure.general.Tag**
+- **diagrams.azure.general.Tags**
+- **diagrams.azure.general.Templates**
+- **diagrams.azure.general.Twousericon**
+- **diagrams.azure.general.Userhealthicon**
+- **diagrams.azure.general.Usericon**
+- **diagrams.azure.general.Userprivacy**
+- **diagrams.azure.general.Userresource**
+- **diagrams.azure.general.Whatsnew**
+
+## azure.identity
- **diagrams.azure.mobile.AppServiceMobile**
- **diagrams.azure.mobile.MobileEngagement**
- **diagrams.azure.mobile.NotificationHubs**
+## azure.integration
+
+- **diagrams.azure.integration.APIForFhir**
+- **diagrams.azure.integration.APIManagement**
+- **diagrams.azure.integration.AppConfiguration**
+- **diagrams.azure.integration.DataCatalog**
+- **diagrams.azure.integration.EventGridDomains**
+- **diagrams.azure.integration.EventGridSubscriptions**
+- **diagrams.azure.integration.EventGridTopics**
+- **diagrams.azure.integration.IntegrationAccounts**
+- **diagrams.azure.integration.IntegrationServiceEnvironments**
+- **diagrams.azure.integration.LogicAppsCustomConnector**
+- **diagrams.azure.integration.LogicApps**
+- **diagrams.azure.integration.SendgridAccounts**
+- **diagrams.azure.integration.ServiceBusRelays**
+- **diagrams.azure.integration.ServiceBus**
+- **diagrams.azure.integration.ServiceCatalogManagedApplicationDefinitions**
+- **diagrams.azure.integration.SoftwareAsAService**
+- **diagrams.azure.integration.StorsimpleDeviceManagers**
+
## azure.iot
- **diagrams.azure.iot.DeviceProvisioningServices**
@@ -200,14 +249,3 @@ Node classes list of azure provider.
- **diagrams.azure.web.NotificationHubNamespaces**
- **diagrams.azure.web.Search**
- **diagrams.azure.web.Signalr**
-
-## azure.devops
-
-- **diagrams.azure.devops.ApplicationInsights**
-- **diagrams.azure.devops.Artifacts**
-- **diagrams.azure.devops.Boards**
-- **diagrams.azure.devops.Devops**
-- **diagrams.azure.devops.DevtestLabs**
-- **diagrams.azure.devops.Pipelines**
-- **diagrams.azure.devops.Repos**
-- **diagrams.azure.devops.TestPlans**
diff --git a/docs/nodes/elastic.md b/docs/nodes/elastic.md
new file mode 100644
index 000000000..ce5d3c7a8
--- /dev/null
+++ b/docs/nodes/elastic.md
@@ -0,0 +1,44 @@
+---
+id: elastic
+title: Elastic
+---
+
+Node classes list of elastic provider.
+
+## elastic.elasticsearch
+
+- **diagrams.elastic.elasticsearch.Alerting**
+- **diagrams.elastic.elasticsearch.Elasticsearch**
+- **diagrams.elastic.elasticsearch.Kibana**
+- **diagrams.elastic.elasticsearch.Logstash**, **LogStash** (alias)
+- **diagrams.elastic.elasticsearch.MachineLearning**
+- **diagrams.elastic.elasticsearch.Maps**
+- **diagrams.elastic.elasticsearch.Monitoring**
+- **diagrams.elastic.elasticsearch.SecuritySettings**
+- **diagrams.elastic.elasticsearch.Sql**
+
+## elastic.enterprisesearch
+
+- **diagrams.elastic.enterprisesearch.AppSearch**
+- **diagrams.elastic.enterprisesearch.EnterpriseSearch**
+- **diagrams.elastic.enterprisesearch.SiteSearch**
+- **diagrams.elastic.enterprisesearch.WorkplaceSearch**
+
+## elastic.observability
+
+- **diagrams.elastic.observability.APM**
+- **diagrams.elastic.observability.Logs**
+- **diagrams.elastic.observability.Metrics**
+- **diagrams.elastic.observability.Observability**
+- **diagrams.elastic.observability.Uptime**
+
+## elastic.orchestration
+
+- **diagrams.elastic.orchestration.ECE**
+- **diagrams.elastic.orchestration.ECK**
+
+## elastic.security
+
+- **diagrams.elastic.security.Endpoint**
+- **diagrams.elastic.security.Security**
+- **diagrams.elastic.security.SIEM**
diff --git a/docs/nodes/firebase.md b/docs/nodes/firebase.md
new file mode 100644
index 000000000..f49a5c9c3
--- /dev/null
+++ b/docs/nodes/firebase.md
@@ -0,0 +1,43 @@
+---
+id: firebase
+title: Firebase
+---
+
+Node classes list of firebase provider.
+
+## firebase.base
+
+- **diagrams.firebase.base.Firebase**
+
+## firebase.develop
+
+- **diagrams.firebase.develop.Authentication**
+- **diagrams.firebase.develop.Firestore**
+- **diagrams.firebase.develop.Functions**
+- **diagrams.firebase.develop.Hosting**
+- **diagrams.firebase.develop.MLKit**
+- **diagrams.firebase.develop.RealtimeDatabase**
+- **diagrams.firebase.develop.Storage**
+
+## firebase.extentions
+
+- **diagrams.firebase.extentions.Extensions**
+
+## firebase.grow
+
+- **diagrams.firebase.grow.ABTesting**
+- **diagrams.firebase.grow.AppIndexing**
+- **diagrams.firebase.grow.DynamicLinks**
+- **diagrams.firebase.grow.InAppMessaging**
+- **diagrams.firebase.grow.Invites**
+- **diagrams.firebase.grow.Messaging**, **FCM** (alias)
+- **diagrams.firebase.grow.Predictions**
+- **diagrams.firebase.grow.RemoteConfig**
+
+## firebase.quality
+
+- **diagrams.firebase.quality.AppDistribution**
+- **diagrams.firebase.quality.CrashReporting**
+- **diagrams.firebase.quality.Crashlytics**
+- **diagrams.firebase.quality.PerformanceMonitoring**
+- **diagrams.firebase.quality.TestLab**
diff --git a/docs/nodes/generic.md b/docs/nodes/generic.md
new file mode 100644
index 000000000..af11a0db3
--- /dev/null
+++ b/docs/nodes/generic.md
@@ -0,0 +1,29 @@
+---
+id: generic
+title: Generic
+---
+
+Node classes list of generic provider.
+
+## generic.blank
+
+- **diagrams.generic.blank.Blank**
+
+## generic.compute
+
+- **diagrams.generic.compute.Rack**
+
+## generic.network
+
+- **diagrams.generic.network.Firewall**
+- **diagrams.generic.network.Router**
+- **diagrams.generic.network.Switch**
+- **diagrams.generic.network.VPN**
+
+## generic.place
+
+- **diagrams.generic.place.Datacenter**
+
+## generic.storage
+
+- **diagrams.generic.storage.Storage**
diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md
index f59df625a..0c9795799 100644
--- a/docs/nodes/onprem.md
+++ b/docs/nodes/onprem.md
@@ -13,9 +13,11 @@ Node classes list of onprem provider.
## onprem.ci
- **diagrams.onprem.ci.Circleci**, **CircleCI** (alias)
+- **diagrams.onprem.ci.Gitlabci**, **GitlabCI** (alias)
- **diagrams.onprem.ci.Jenkins**
- **diagrams.onprem.ci.Teamcity**, **TC** (alias)
- **diagrams.onprem.ci.Travisci**, **TravisCI** (alias)
+- **diagrams.onprem.ci.Zuulci**, **ZuulCI** (alias)
## onprem.cd
@@ -91,6 +93,7 @@ Node classes list of onprem provider.
- **diagrams.onprem.database.Cassandra**
- **diagrams.onprem.database.Clickhouse**, **ClickHouse** (alias)
- **diagrams.onprem.database.Cockroachdb**, **CockroachDB** (alias)
+- **diagrams.onprem.database.Couchbase**
- **diagrams.onprem.database.Couchdb**, **CouchDB** (alias)
- **diagrams.onprem.database.Dgraph**
- **diagrams.onprem.database.Hbase**, **HBase** (alias)
@@ -131,6 +134,8 @@ Node classes list of onprem provider.
## onprem.gitops
- **diagrams.onprem.gitops.Argocd**, **ArgoCD** (alias)
+- **diagrams.onprem.gitops.Flagger**
+- **diagrams.onprem.gitops.Flux**
## onprem.queue
@@ -153,5 +158,6 @@ Node classes list of onprem provider.
- **diagrams.onprem.monitoring.Grafana**
- **diagrams.onprem.monitoring.Kibana**
- **diagrams.onprem.monitoring.Prometheus**
+- **diagrams.onprem.monitoring.Sentry**
- **diagrams.onprem.monitoring.Splunk**
- **diagrams.onprem.monitoring.Thanos**
diff --git a/docs/nodes/programming.md b/docs/nodes/programming.md
index 715bd46cd..9753161dc 100644
--- a/docs/nodes/programming.md
+++ b/docs/nodes/programming.md
@@ -22,6 +22,7 @@ Node classes list of programming provider.
- **diagrams.programming.language.Python**
- **diagrams.programming.language.R**
- **diagrams.programming.language.Ruby**
+- **diagrams.programming.language.Rust**
- **diagrams.programming.language.Swift**
- **diagrams.programming.language.Typescript**, **TypeScript** (alias)
diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md
new file mode 100644
index 000000000..4e7ae8828
--- /dev/null
+++ b/docs/nodes/saas.md
@@ -0,0 +1,16 @@
+---
+id: saas
+title: Saas
+---
+
+Node classes list of saas provider.
+
+## saas.chat
+
+- **diagrams.saas.chat.Slack**
+- **diagrams.saas.chat.Telegram**
+
+## saas.social
+
+- **diagrams.saas.social.Facebook**
+- **diagrams.saas.social.Twitter**
diff --git a/pyproject.toml b/pyproject.toml
index 3ac7e7d2d..8dae0e653 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "diagrams"
-version = "0.11.0"
+version = "0.13.1"
description = "Diagram as Code"
license = "MIT"
authors = ["mingrammer "]
diff --git a/resources/aws/database/dynamodb-dax.png b/resources/aws/database/dynamodb-dax.png
new file mode 100755
index 000000000..5f923c6f4
Binary files /dev/null and b/resources/aws/database/dynamodb-dax.png differ
diff --git a/resources/aws/database/dynamodb-global-secondary-index.png b/resources/aws/database/dynamodb-global-secondary-index.png
new file mode 100644
index 000000000..ca41aebd9
Binary files /dev/null and b/resources/aws/database/dynamodb-global-secondary-index.png differ
diff --git a/resources/aws/database/dynamodb-table.png b/resources/aws/database/dynamodb-table.png
new file mode 100644
index 000000000..2dc08e682
Binary files /dev/null and b/resources/aws/database/dynamodb-table.png differ
diff --git a/resources/aws/game/gamelift.png b/resources/aws/game/gamelift.png
new file mode 100644
index 000000000..2c161ae62
Binary files /dev/null and b/resources/aws/game/gamelift.png differ
diff --git a/resources/aws/general/disk.png b/resources/aws/general/disk.png
new file mode 100644
index 000000000..533ee568c
Binary files /dev/null and b/resources/aws/general/disk.png differ
diff --git a/resources/aws/general/general.png b/resources/aws/general/general.png
new file mode 100644
index 000000000..779941e75
Binary files /dev/null and b/resources/aws/general/general.png differ
diff --git a/resources/aws/general/generic-database.png b/resources/aws/general/generic-database.png
new file mode 100644
index 000000000..b1e7bf1ec
Binary files /dev/null and b/resources/aws/general/generic-database.png differ
diff --git a/resources/aws/general/generic-firewall.png b/resources/aws/general/generic-firewall.png
new file mode 100644
index 000000000..4f91b1a61
Binary files /dev/null and b/resources/aws/general/generic-firewall.png differ
diff --git a/resources/aws/general/generic-office-building.png b/resources/aws/general/generic-office-building.png
new file mode 100644
index 000000000..bb96caa50
Binary files /dev/null and b/resources/aws/general/generic-office-building.png differ
diff --git a/resources/aws/general/generic-saml-token.png b/resources/aws/general/generic-saml-token.png
new file mode 100644
index 000000000..0d5fa4cef
Binary files /dev/null and b/resources/aws/general/generic-saml-token.png differ
diff --git a/resources/aws/general/generic-sdk.png b/resources/aws/general/generic-sdk.png
new file mode 100644
index 000000000..0ce11f879
Binary files /dev/null and b/resources/aws/general/generic-sdk.png differ
diff --git a/resources/aws/general/marketplace.png b/resources/aws/general/marketplace.png
new file mode 100644
index 000000000..c1c863b15
Binary files /dev/null and b/resources/aws/general/marketplace.png differ
diff --git a/resources/aws/general/tradicional-server.png b/resources/aws/general/tradicional-server.png
new file mode 100644
index 000000000..2373aced5
Binary files /dev/null and b/resources/aws/general/tradicional-server.png differ
diff --git a/resources/aws/general/user.png b/resources/aws/general/user.png
new file mode 100644
index 000000000..cd17f3370
Binary files /dev/null and b/resources/aws/general/user.png differ
diff --git a/resources/aws/general/users.png b/resources/aws/general/users.png
new file mode 100644
index 000000000..d699247ec
Binary files /dev/null and b/resources/aws/general/users.png differ
diff --git a/resources/aws/iot/iot-alexa-echo.png b/resources/aws/iot/iot-alexa-echo.png
new file mode 100644
index 000000000..3c1b99873
Binary files /dev/null and b/resources/aws/iot/iot-alexa-echo.png differ
diff --git a/resources/aws/iot/iot-alexa-skill.png b/resources/aws/iot/iot-alexa-skill.png
new file mode 100644
index 000000000..95c13f0f1
Binary files /dev/null and b/resources/aws/iot/iot-alexa-skill.png differ
diff --git a/resources/aws/iot/iot-camera.png b/resources/aws/iot/iot-camera.png
new file mode 100644
index 000000000..ecdea675c
Binary files /dev/null and b/resources/aws/iot/iot-camera.png differ
diff --git a/resources/aws/iot/iot-certificate.png b/resources/aws/iot/iot-certificate.png
new file mode 100644
index 000000000..be4507416
Binary files /dev/null and b/resources/aws/iot/iot-certificate.png differ
diff --git a/resources/aws/iot/iot-hardware-board.png b/resources/aws/iot/iot-hardware-board.png
new file mode 100644
index 000000000..d7224b2f7
Binary files /dev/null and b/resources/aws/iot/iot-hardware-board.png differ
diff --git a/resources/aws/iot/iot-jobs.png b/resources/aws/iot/iot-jobs.png
new file mode 100644
index 000000000..6690df511
Binary files /dev/null and b/resources/aws/iot/iot-jobs.png differ
diff --git a/resources/aws/iot/iot-mqtt.png b/resources/aws/iot/iot-mqtt.png
new file mode 100644
index 000000000..308866c5e
Binary files /dev/null and b/resources/aws/iot/iot-mqtt.png differ
diff --git a/resources/aws/iot/iot-rule.png b/resources/aws/iot/iot-rule.png
new file mode 100644
index 000000000..06065cbec
Binary files /dev/null and b/resources/aws/iot/iot-rule.png differ
diff --git a/resources/aws/iot/iot-shadow.png b/resources/aws/iot/iot-shadow.png
new file mode 100644
index 000000000..9fc50eb7b
Binary files /dev/null and b/resources/aws/iot/iot-shadow.png differ
diff --git a/resources/aws/iot/iot-topic.png b/resources/aws/iot/iot-topic.png
new file mode 100644
index 000000000..ef5646b84
Binary files /dev/null and b/resources/aws/iot/iot-topic.png differ
diff --git a/resources/aws/robotics/robomaker-simulator.png b/resources/aws/robotics/robomaker-simulator.png
new file mode 100644
index 000000000..3c95e14ee
Binary files /dev/null and b/resources/aws/robotics/robomaker-simulator.png differ
diff --git a/resources/aws/robotics/robomaker.png b/resources/aws/robotics/robomaker.png
new file mode 100644
index 000000000..7cf8ab707
Binary files /dev/null and b/resources/aws/robotics/robomaker.png differ
diff --git a/resources/aws/robotics/robotics.png b/resources/aws/robotics/robotics.png
new file mode 100644
index 000000000..7b878bb41
Binary files /dev/null and b/resources/aws/robotics/robotics.png differ
diff --git a/resources/aws/security/detective.png b/resources/aws/security/detective.png
new file mode 100755
index 000000000..9b138ec5e
Binary files /dev/null and b/resources/aws/security/detective.png differ
diff --git a/resources/aws/security/identity-and-access-management-iam-access-analyzer.png b/resources/aws/security/identity-and-access-management-iam-access-analyzer.png
new file mode 100644
index 000000000..e04ad7c49
Binary files /dev/null and b/resources/aws/security/identity-and-access-management-iam-access-analyzer.png differ
diff --git a/resources/aws/security/identity-and-access-management-iam-aws-sts.png b/resources/aws/security/identity-and-access-management-iam-aws-sts.png
new file mode 100644
index 000000000..d9e35a3ce
Binary files /dev/null and b/resources/aws/security/identity-and-access-management-iam-aws-sts.png differ
diff --git a/resources/aws/security/identity-and-access-management-iam-permissions.png b/resources/aws/security/identity-and-access-management-iam-permissions.png
new file mode 100644
index 000000000..2f26e2772
Binary files /dev/null and b/resources/aws/security/identity-and-access-management-iam-permissions.png differ
diff --git a/resources/aws/security/identity-and-access-management-iam-role.png b/resources/aws/security/identity-and-access-management-iam-role.png
new file mode 100644
index 000000000..978627060
Binary files /dev/null and b/resources/aws/security/identity-and-access-management-iam-role.png differ
diff --git a/resources/azure/general/allresources.png b/resources/azure/general/allresources.png
new file mode 100644
index 000000000..f2d945531
Binary files /dev/null and b/resources/azure/general/allresources.png differ
diff --git a/resources/azure/general/azurehome.png b/resources/azure/general/azurehome.png
new file mode 100644
index 000000000..e86046d6d
Binary files /dev/null and b/resources/azure/general/azurehome.png differ
diff --git a/resources/azure/general/developertools.png b/resources/azure/general/developertools.png
new file mode 100644
index 000000000..882de89ea
Binary files /dev/null and b/resources/azure/general/developertools.png differ
diff --git a/resources/azure/general/helpsupport.png b/resources/azure/general/helpsupport.png
new file mode 100644
index 000000000..d975d146f
Binary files /dev/null and b/resources/azure/general/helpsupport.png differ
diff --git a/resources/azure/general/information.png b/resources/azure/general/information.png
new file mode 100644
index 000000000..3d0e8acad
Binary files /dev/null and b/resources/azure/general/information.png differ
diff --git a/resources/azure/general/managementgroups.png b/resources/azure/general/managementgroups.png
new file mode 100644
index 000000000..1322348d7
Binary files /dev/null and b/resources/azure/general/managementgroups.png differ
diff --git a/resources/azure/general/marketplace.png b/resources/azure/general/marketplace.png
new file mode 100644
index 000000000..1217b9d4e
Binary files /dev/null and b/resources/azure/general/marketplace.png differ
diff --git a/resources/azure/general/quickstartcenter.png b/resources/azure/general/quickstartcenter.png
new file mode 100644
index 000000000..c3aaa53cf
Binary files /dev/null and b/resources/azure/general/quickstartcenter.png differ
diff --git a/resources/azure/general/recent.png b/resources/azure/general/recent.png
new file mode 100644
index 000000000..c4389d188
Binary files /dev/null and b/resources/azure/general/recent.png differ
diff --git a/resources/azure/general/reservations.png b/resources/azure/general/reservations.png
new file mode 100644
index 000000000..2f4ba07e6
Binary files /dev/null and b/resources/azure/general/reservations.png differ
diff --git a/resources/azure/general/resource.png b/resources/azure/general/resource.png
new file mode 100644
index 000000000..8dfdc4328
Binary files /dev/null and b/resources/azure/general/resource.png differ
diff --git a/resources/azure/general/resourcegroups.png b/resources/azure/general/resourcegroups.png
new file mode 100644
index 000000000..eff189d95
Binary files /dev/null and b/resources/azure/general/resourcegroups.png differ
diff --git a/resources/azure/general/servicehealth.png b/resources/azure/general/servicehealth.png
new file mode 100644
index 000000000..308f70620
Binary files /dev/null and b/resources/azure/general/servicehealth.png differ
diff --git a/resources/azure/general/shareddashboard.png b/resources/azure/general/shareddashboard.png
new file mode 100644
index 000000000..97caf7211
Binary files /dev/null and b/resources/azure/general/shareddashboard.png differ
diff --git a/resources/azure/general/subscriptions.png b/resources/azure/general/subscriptions.png
new file mode 100644
index 000000000..72eed905f
Binary files /dev/null and b/resources/azure/general/subscriptions.png differ
diff --git a/resources/azure/general/support.png b/resources/azure/general/support.png
new file mode 100644
index 000000000..6590fc9ae
Binary files /dev/null and b/resources/azure/general/support.png differ
diff --git a/resources/azure/general/supportrequests.png b/resources/azure/general/supportrequests.png
new file mode 100644
index 000000000..582ee94e1
Binary files /dev/null and b/resources/azure/general/supportrequests.png differ
diff --git a/resources/azure/general/tag.png b/resources/azure/general/tag.png
new file mode 100644
index 000000000..92b7d10db
Binary files /dev/null and b/resources/azure/general/tag.png differ
diff --git a/resources/azure/general/tags.png b/resources/azure/general/tags.png
new file mode 100644
index 000000000..58f2b4d52
Binary files /dev/null and b/resources/azure/general/tags.png differ
diff --git a/resources/azure/general/templates.png b/resources/azure/general/templates.png
new file mode 100644
index 000000000..263cebb9d
Binary files /dev/null and b/resources/azure/general/templates.png differ
diff --git a/resources/azure/general/twousericon.png b/resources/azure/general/twousericon.png
new file mode 100644
index 000000000..9d6d8c1ab
Binary files /dev/null and b/resources/azure/general/twousericon.png differ
diff --git a/resources/azure/general/userhealthicon.png b/resources/azure/general/userhealthicon.png
new file mode 100644
index 000000000..b2e7e0cdc
Binary files /dev/null and b/resources/azure/general/userhealthicon.png differ
diff --git a/resources/azure/general/usericon.png b/resources/azure/general/usericon.png
new file mode 100644
index 000000000..773ccd097
Binary files /dev/null and b/resources/azure/general/usericon.png differ
diff --git a/resources/azure/general/userprivacy.png b/resources/azure/general/userprivacy.png
new file mode 100644
index 000000000..09d22ce34
Binary files /dev/null and b/resources/azure/general/userprivacy.png differ
diff --git a/resources/azure/general/userresource.png b/resources/azure/general/userresource.png
new file mode 100644
index 000000000..1418179aa
Binary files /dev/null and b/resources/azure/general/userresource.png differ
diff --git a/resources/azure/general/whatsnew.png b/resources/azure/general/whatsnew.png
new file mode 100644
index 000000000..2142d2b38
Binary files /dev/null and b/resources/azure/general/whatsnew.png differ
diff --git a/resources/elastic/cloud.png b/resources/elastic/cloud.png
new file mode 100644
index 000000000..92ee1c925
Binary files /dev/null and b/resources/elastic/cloud.png differ
diff --git a/resources/elastic/elasticsearch/alerting.png b/resources/elastic/elasticsearch/alerting.png
new file mode 100644
index 000000000..eb8c7c711
Binary files /dev/null and b/resources/elastic/elasticsearch/alerting.png differ
diff --git a/resources/elastic/elasticsearch/elasticsearch.png b/resources/elastic/elasticsearch/elasticsearch.png
new file mode 100644
index 000000000..10188c30e
Binary files /dev/null and b/resources/elastic/elasticsearch/elasticsearch.png differ
diff --git a/resources/elastic/elasticsearch/kibana.png b/resources/elastic/elasticsearch/kibana.png
new file mode 100644
index 000000000..b856e29b8
Binary files /dev/null and b/resources/elastic/elasticsearch/kibana.png differ
diff --git a/resources/elastic/elasticsearch/logstash.png b/resources/elastic/elasticsearch/logstash.png
new file mode 100644
index 000000000..7beca0172
Binary files /dev/null and b/resources/elastic/elasticsearch/logstash.png differ
diff --git a/resources/elastic/elasticsearch/machine-learning.png b/resources/elastic/elasticsearch/machine-learning.png
new file mode 100644
index 000000000..d69926ce9
Binary files /dev/null and b/resources/elastic/elasticsearch/machine-learning.png differ
diff --git a/resources/elastic/elasticsearch/maps.png b/resources/elastic/elasticsearch/maps.png
new file mode 100644
index 000000000..5f597a9c3
Binary files /dev/null and b/resources/elastic/elasticsearch/maps.png differ
diff --git a/resources/elastic/elasticsearch/monitoring.png b/resources/elastic/elasticsearch/monitoring.png
new file mode 100644
index 000000000..00c9665c1
Binary files /dev/null and b/resources/elastic/elasticsearch/monitoring.png differ
diff --git a/resources/elastic/elasticsearch/security-settings.png b/resources/elastic/elasticsearch/security-settings.png
new file mode 100644
index 000000000..74a54816c
Binary files /dev/null and b/resources/elastic/elasticsearch/security-settings.png differ
diff --git a/resources/elastic/elasticsearch/sql.png b/resources/elastic/elasticsearch/sql.png
new file mode 100644
index 000000000..ebb7fc3e9
Binary files /dev/null and b/resources/elastic/elasticsearch/sql.png differ
diff --git a/resources/elastic/enterprisesearch/app-search.png b/resources/elastic/enterprisesearch/app-search.png
new file mode 100644
index 000000000..a7217232d
Binary files /dev/null and b/resources/elastic/enterprisesearch/app-search.png differ
diff --git a/resources/elastic/enterprisesearch/enterprise-search.png b/resources/elastic/enterprisesearch/enterprise-search.png
new file mode 100644
index 000000000..6354b21c4
Binary files /dev/null and b/resources/elastic/enterprisesearch/enterprise-search.png differ
diff --git a/resources/elastic/enterprisesearch/site-search.png b/resources/elastic/enterprisesearch/site-search.png
new file mode 100644
index 000000000..eb41bb9c7
Binary files /dev/null and b/resources/elastic/enterprisesearch/site-search.png differ
diff --git a/resources/elastic/enterprisesearch/workplace-search.png b/resources/elastic/enterprisesearch/workplace-search.png
new file mode 100644
index 000000000..5e38b5e60
Binary files /dev/null and b/resources/elastic/enterprisesearch/workplace-search.png differ
diff --git a/resources/elastic/observability/apm.png b/resources/elastic/observability/apm.png
new file mode 100644
index 000000000..3b1ba2844
Binary files /dev/null and b/resources/elastic/observability/apm.png differ
diff --git a/resources/elastic/observability/logs.png b/resources/elastic/observability/logs.png
new file mode 100644
index 000000000..2976ae210
Binary files /dev/null and b/resources/elastic/observability/logs.png differ
diff --git a/resources/elastic/observability/metrics.png b/resources/elastic/observability/metrics.png
new file mode 100644
index 000000000..bb354a076
Binary files /dev/null and b/resources/elastic/observability/metrics.png differ
diff --git a/resources/elastic/observability/observability.png b/resources/elastic/observability/observability.png
new file mode 100644
index 000000000..5844caa98
Binary files /dev/null and b/resources/elastic/observability/observability.png differ
diff --git a/resources/elastic/observability/uptime.png b/resources/elastic/observability/uptime.png
new file mode 100644
index 000000000..f4e2709d6
Binary files /dev/null and b/resources/elastic/observability/uptime.png differ
diff --git a/resources/elastic/orchestration/ece.png b/resources/elastic/orchestration/ece.png
new file mode 100644
index 000000000..82629553b
Binary files /dev/null and b/resources/elastic/orchestration/ece.png differ
diff --git a/resources/elastic/orchestration/eck.png b/resources/elastic/orchestration/eck.png
new file mode 100644
index 000000000..b5135efa5
Binary files /dev/null and b/resources/elastic/orchestration/eck.png differ
diff --git a/resources/elastic/security/endpoint.png b/resources/elastic/security/endpoint.png
new file mode 100644
index 000000000..91facf99e
Binary files /dev/null and b/resources/elastic/security/endpoint.png differ
diff --git a/resources/elastic/security/security.png b/resources/elastic/security/security.png
new file mode 100644
index 000000000..ebf98d169
Binary files /dev/null and b/resources/elastic/security/security.png differ
diff --git a/resources/elastic/security/siem.png b/resources/elastic/security/siem.png
new file mode 100644
index 000000000..4024b3c06
Binary files /dev/null and b/resources/elastic/security/siem.png differ
diff --git a/resources/baas/firebase/firebase.png b/resources/firebase/base/firebase.png
similarity index 100%
rename from resources/baas/firebase/firebase.png
rename to resources/firebase/base/firebase.png
diff --git a/resources/baas/firebase/authentication.png b/resources/firebase/develop/authentication.png
similarity index 100%
rename from resources/baas/firebase/authentication.png
rename to resources/firebase/develop/authentication.png
diff --git a/resources/baas/firebase/cloud-firestore.png b/resources/firebase/develop/firestore.png
similarity index 100%
rename from resources/baas/firebase/cloud-firestore.png
rename to resources/firebase/develop/firestore.png
diff --git a/resources/baas/firebase/cloud-functions.png b/resources/firebase/develop/functions.png
similarity index 100%
rename from resources/baas/firebase/cloud-functions.png
rename to resources/firebase/develop/functions.png
diff --git a/resources/baas/firebase/hosting.png b/resources/firebase/develop/hosting.png
similarity index 100%
rename from resources/baas/firebase/hosting.png
rename to resources/firebase/develop/hosting.png
diff --git a/resources/baas/firebase/ml-kit.png b/resources/firebase/develop/ml-kit.png
similarity index 100%
rename from resources/baas/firebase/ml-kit.png
rename to resources/firebase/develop/ml-kit.png
diff --git a/resources/baas/firebase/realtime-database.png b/resources/firebase/develop/realtime-database.png
similarity index 100%
rename from resources/baas/firebase/realtime-database.png
rename to resources/firebase/develop/realtime-database.png
diff --git a/resources/baas/firebase/cloud-storage.png b/resources/firebase/develop/storage.png
similarity index 100%
rename from resources/baas/firebase/cloud-storage.png
rename to resources/firebase/develop/storage.png
diff --git a/resources/baas/firebase/extensions.png b/resources/firebase/extentions/extensions.png
similarity index 100%
rename from resources/baas/firebase/extensions.png
rename to resources/firebase/extentions/extensions.png
diff --git a/resources/baas/firebase/ab-testing.png b/resources/firebase/grow/ab-testing.png
similarity index 100%
rename from resources/baas/firebase/ab-testing.png
rename to resources/firebase/grow/ab-testing.png
diff --git a/resources/baas/firebase/app-indexing.png b/resources/firebase/grow/app-indexing.png
similarity index 100%
rename from resources/baas/firebase/app-indexing.png
rename to resources/firebase/grow/app-indexing.png
diff --git a/resources/baas/firebase/dynamic-links.png b/resources/firebase/grow/dynamic-links.png
similarity index 100%
rename from resources/baas/firebase/dynamic-links.png
rename to resources/firebase/grow/dynamic-links.png
diff --git a/resources/baas/firebase/in-app-messaging.png b/resources/firebase/grow/in-app-messaging.png
similarity index 100%
rename from resources/baas/firebase/in-app-messaging.png
rename to resources/firebase/grow/in-app-messaging.png
diff --git a/resources/baas/firebase/invites.png b/resources/firebase/grow/invites.png
similarity index 100%
rename from resources/baas/firebase/invites.png
rename to resources/firebase/grow/invites.png
diff --git a/resources/baas/firebase/cloud-messaging.png b/resources/firebase/grow/messaging.png
similarity index 100%
rename from resources/baas/firebase/cloud-messaging.png
rename to resources/firebase/grow/messaging.png
diff --git a/resources/baas/firebase/predictions.png b/resources/firebase/grow/predictions.png
similarity index 100%
rename from resources/baas/firebase/predictions.png
rename to resources/firebase/grow/predictions.png
diff --git a/resources/baas/firebase/remote-config.png b/resources/firebase/grow/remote-config.png
similarity index 100%
rename from resources/baas/firebase/remote-config.png
rename to resources/firebase/grow/remote-config.png
diff --git a/resources/baas/firebase/app-distribution.png b/resources/firebase/quality/app-distribution.png
similarity index 100%
rename from resources/baas/firebase/app-distribution.png
rename to resources/firebase/quality/app-distribution.png
diff --git a/resources/baas/firebase/crash-reporting.png b/resources/firebase/quality/crash-reporting.png
similarity index 100%
rename from resources/baas/firebase/crash-reporting.png
rename to resources/firebase/quality/crash-reporting.png
diff --git a/resources/baas/firebase/crashlytics.png b/resources/firebase/quality/crashlytics.png
similarity index 100%
rename from resources/baas/firebase/crashlytics.png
rename to resources/firebase/quality/crashlytics.png
diff --git a/resources/baas/firebase/performance-monitoring.png b/resources/firebase/quality/performance-monitoring.png
similarity index 100%
rename from resources/baas/firebase/performance-monitoring.png
rename to resources/firebase/quality/performance-monitoring.png
diff --git a/resources/baas/firebase/test-lab.png b/resources/firebase/quality/test-lab.png
similarity index 100%
rename from resources/baas/firebase/test-lab.png
rename to resources/firebase/quality/test-lab.png
diff --git a/resources/generic/blank/blank.png b/resources/generic/blank/blank.png
new file mode 100644
index 000000000..98801cae7
Binary files /dev/null and b/resources/generic/blank/blank.png differ
diff --git a/resources/generic/compute/rack.png b/resources/generic/compute/rack.png
new file mode 100644
index 000000000..c749fdd2c
Binary files /dev/null and b/resources/generic/compute/rack.png differ
diff --git a/resources/generic/network/firewall.png b/resources/generic/network/firewall.png
new file mode 100644
index 000000000..e6c21830d
Binary files /dev/null and b/resources/generic/network/firewall.png differ
diff --git a/resources/generic/network/router.png b/resources/generic/network/router.png
new file mode 100644
index 000000000..377e2b551
Binary files /dev/null and b/resources/generic/network/router.png differ
diff --git a/resources/generic/network/switch.png b/resources/generic/network/switch.png
new file mode 100644
index 000000000..9699b6910
Binary files /dev/null and b/resources/generic/network/switch.png differ
diff --git a/resources/generic/network/vpn.png b/resources/generic/network/vpn.png
new file mode 100644
index 000000000..009e8437b
Binary files /dev/null and b/resources/generic/network/vpn.png differ
diff --git a/resources/generic/place/datacenter.png b/resources/generic/place/datacenter.png
new file mode 100644
index 000000000..064eaa8f4
Binary files /dev/null and b/resources/generic/place/datacenter.png differ
diff --git a/resources/generic/storage/storage.png b/resources/generic/storage/storage.png
new file mode 100644
index 000000000..3b3027297
Binary files /dev/null and b/resources/generic/storage/storage.png differ
diff --git a/resources/onprem/ci/gitlabci.png b/resources/onprem/ci/gitlabci.png
new file mode 100644
index 000000000..5cc42cda5
Binary files /dev/null and b/resources/onprem/ci/gitlabci.png differ
diff --git a/resources/onprem/ci/zuulci.png b/resources/onprem/ci/zuulci.png
new file mode 100644
index 000000000..40c0f2fa6
Binary files /dev/null and b/resources/onprem/ci/zuulci.png differ
diff --git a/resources/onprem/database/couchbase.png b/resources/onprem/database/couchbase.png
new file mode 100644
index 000000000..6144f54b7
Binary files /dev/null and b/resources/onprem/database/couchbase.png differ
diff --git a/resources/onprem/gitops/flagger.png b/resources/onprem/gitops/flagger.png
new file mode 100644
index 000000000..de8835dfe
Binary files /dev/null and b/resources/onprem/gitops/flagger.png differ
diff --git a/resources/onprem/gitops/flux.png b/resources/onprem/gitops/flux.png
new file mode 100644
index 000000000..057b6361f
Binary files /dev/null and b/resources/onprem/gitops/flux.png differ
diff --git a/resources/onprem/monitoring/sentry.png b/resources/onprem/monitoring/sentry.png
new file mode 100644
index 000000000..b30290da0
Binary files /dev/null and b/resources/onprem/monitoring/sentry.png differ
diff --git a/resources/programming/language/rust.png b/resources/programming/language/rust.png
new file mode 100644
index 000000000..a9f7fa152
Binary files /dev/null and b/resources/programming/language/rust.png differ
diff --git a/resources/saas/chat/slack.png b/resources/saas/chat/slack.png
new file mode 100644
index 000000000..b2cf219e8
Binary files /dev/null and b/resources/saas/chat/slack.png differ
diff --git a/resources/saas/chat/telegram.png b/resources/saas/chat/telegram.png
new file mode 100644
index 000000000..d52b904cb
Binary files /dev/null and b/resources/saas/chat/telegram.png differ
diff --git a/resources/saas/social/facebook.png b/resources/saas/social/facebook.png
new file mode 100755
index 000000000..3ffb63c6c
Binary files /dev/null and b/resources/saas/social/facebook.png differ
diff --git a/resources/saas/social/twitter.png b/resources/saas/social/twitter.png
new file mode 100644
index 000000000..8320d575b
Binary files /dev/null and b/resources/saas/social/twitter.png differ
diff --git a/scripts/generate.py b/scripts/generate.py
index 7ec0a8798..fedee589a 100644
--- a/scripts/generate.py
+++ b/scripts/generate.py
@@ -7,7 +7,7 @@
import config as cfg
from . import app_root_dir, doc_root_dir, resource_dir, template_dir
-_usage = "Usage: generate.py "
+_usage = "Usage: generate.py "
def load_tmpl(tmpl: str) -> Template:
@@ -50,7 +50,7 @@ def _gen_class_name(path: str) -> str:
return name
typ_classes = {}
- for typ, paths in typ_paths.items():
+ for typ, paths in sorted(typ_paths.items()):
typ_classes[typ] = []
for name in map(_gen_class_name, paths):
alias = cfg.ALIASES[pvd].get(typ, {}).get(name)
diff --git a/scripts/resource.py b/scripts/resource.py
index 10575af11..20aee58e7 100644
--- a/scripts/resource.py
+++ b/scripts/resource.py
@@ -24,6 +24,7 @@ def cleaner_onprem(f):
def cleaner_aws(f):
f = f.replace("_", "-")
f = f.replace("@4x", "")
+ f = f.replace("-light-bg4x", "")
f = f.replace("-light-bg", "")
for p in cfg.FILE_PREFIXES["aws"]:
if f.startswith(p):
@@ -53,6 +54,16 @@ def cleaner_gcp(f):
return f.lower()
+def cleaner_firebase(f):
+ f = f.replace("_", "-")
+ f = "-".join(f.split())
+ for p in cfg.FILE_PREFIXES["firebase"]:
+ if f.startswith(p):
+ f = f[len(p) :]
+ break
+ return f.lower()
+
+
def cleaner_k8s(f):
f = f.replace("-256", "")
for p in cfg.FILE_PREFIXES["k8s"]:
@@ -83,16 +94,30 @@ def cleaner_oci(f):
def cleaner_programming(f):
return f.lower()
+def cleaner_generic(f):
+ return f.lower()
+
+def cleaner_saas(f):
+ return f.lower()
+
+
+def cleaner_elastic(f):
+ return f.lower()
+
cleaners = {
"onprem": cleaner_onprem,
"aws": cleaner_aws,
"azure": cleaner_azure,
"gcp": cleaner_gcp,
+ "firebase": cleaner_firebase,
"k8s": cleaner_k8s,
"alibabacloud": cleaner_alibabacloud,
"oci": cleaner_oci,
"programming": cleaner_programming,
+ "saas": cleaner_saas,
+ "elastic": cleaner_elastic,
+ "generic": cleaner_generic,
}
diff --git a/website/core/Footer.js b/website/core/Footer.js
index 705188f30..8f1c17597 100644
--- a/website/core/Footer.js
+++ b/website/core/Footer.js
@@ -51,7 +51,7 @@ class Footer extends React.Component {
More
-
+
{this.props.config.copyright}
);
diff --git a/website/i18n/en.json b/website/i18n/en.json
index ac75a4330..2c1e8562b 100644
--- a/website/i18n/en.json
+++ b/website/i18n/en.json
@@ -32,6 +32,12 @@
"nodes/azure": {
"title": "Azure"
},
+ "nodes/elastic": {
+ "title": "Elastic"
+ },
+ "nodes/firebase": {
+ "title": "Firebase"
+ },
"nodes/gcp": {
"title": "GCP"
},
@@ -46,13 +52,17 @@
},
"nodes/programming": {
"title": "Programming"
+ },
+ "nodes/saas": {
+ "title": "Saas"
}
},
"links": {
"Docs": "Docs",
"Guides": "Guides",
"Nodes": "Nodes",
- "GitHub": "GitHub"
+ "GitHub": "GitHub",
+ "Sponsoring": "Sponsoring"
},
"categories": {
"Getting Started": "Getting Started",
diff --git a/website/pages/en/index.js b/website/pages/en/index.js
index cc0bdcaa4..117ba514a 100644
--- a/website/pages/en/index.js
+++ b/website/pages/en/index.js
@@ -111,6 +111,20 @@ class Index extends React.Component {
);
+ const Sponsorship = () => (
+
+
Sponsorship
+
+ Sponsoring always helps a lot to maintain Diagrams. Thank you :)
+
+
+
+
+
+ );
+
const Example = () => (
{[
@@ -148,6 +162,7 @@ class Index extends React.Component {
+
);
diff --git a/website/sidebars.json b/website/sidebars.json
index 3e80df07a..91d5d7091 100644
--- a/website/sidebars.json
+++ b/website/sidebars.json
@@ -18,7 +18,10 @@
"nodes/k8s",
"nodes/alibabacloud",
"nodes/oci",
- "nodes/programming"
+ "nodes/programming",
+ "nodes/firebase",
+ "nodes/saas",
+ "nodes/elastic"
]
}
}
\ No newline at end of file
diff --git a/website/siteConfig.js b/website/siteConfig.js
index aea9355c7..16cce1ccc 100644
--- a/website/siteConfig.js
+++ b/website/siteConfig.js
@@ -22,6 +22,7 @@ const siteConfig = {
{doc: 'guides/diagram', label: 'Guides'},
{doc: 'nodes/aws', label: 'Nodes'},
{href: 'https://github.com/mingrammer/diagrams', label: 'GitHub'},
+ {href: 'https://www.buymeacoffee.com/mingrammer', label: 'Sponsoring'},
],
headerIcon: 'img/diagrams.ico',
diff --git a/website/static/css/custom.css b/website/static/css/custom.css
index 01aa4ed36..235f62698 100644
--- a/website/static/css/custom.css
+++ b/website/static/css/custom.css
@@ -20,4 +20,8 @@
}
@media only screen and (min-width: 1500px) {
+}
+
+#buymeacoffee {
+ height: 50px;
}
\ No newline at end of file