@likec4/language-server 1.45.0 → 1.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/LikeC4LanguageServices.d.ts +3 -0
  2. package/dist/LikeC4LanguageServices.js +2 -0
  3. package/dist/Rpc.js +13 -2
  4. package/dist/ast.d.ts +10 -0
  5. package/dist/ast.js +7 -0
  6. package/dist/bundled.mjs +3819 -4062
  7. package/dist/filesystem/ChokidarWatcher.js +2 -2
  8. package/dist/filesystem/LikeC4FileSystem.js +5 -1
  9. package/dist/filesystem/index.d.ts +2 -0
  10. package/dist/generated/ast.d.ts +46 -9
  11. package/dist/generated/ast.js +56 -4
  12. package/dist/generated/grammar.js +1 -1
  13. package/dist/generated-lib/icons.js +1 -1
  14. package/dist/lsp/DocumentSymbolProvider.js +12 -1
  15. package/dist/mcp/server/WithMCPServer.js +0 -2
  16. package/dist/mcp/tools/read-deployment.js +18 -0
  17. package/dist/mcp/tools/read-element.js +24 -0
  18. package/dist/model/builder/buildModel.js +70 -1
  19. package/dist/model/fqn-index.js +8 -2
  20. package/dist/model/model-parser.d.ts +3 -0
  21. package/dist/model/model-parser.js +7 -0
  22. package/dist/model/parser/Base.js +8 -3
  23. package/dist/model/parser/GlobalsParser.d.ts +1 -0
  24. package/dist/model/parser/ModelParser.d.ts +2 -1
  25. package/dist/model/parser/ModelParser.js +45 -1
  26. package/dist/model/parser/ViewsParser.d.ts +1 -0
  27. package/dist/model/parser/ViewsParser.js +13 -0
  28. package/dist/model-change/ModelChanges.js +6 -3
  29. package/dist/validation/index.d.ts +1 -1
  30. package/dist/validation/index.js +11 -1
  31. package/dist/validation/relation.d.ts +1 -0
  32. package/dist/validation/relation.js +87 -1
  33. package/dist/validation/view-checks.d.ts +4 -0
  34. package/dist/validation/view-checks.js +46 -0
  35. package/dist/views/LikeC4ManualLayouts.js +2 -2
  36. package/dist/views/LikeC4Views.js +2 -2
  37. package/dist/workspace/ProjectsManager.d.ts +26 -1
  38. package/dist/workspace/ProjectsManager.js +98 -12
  39. package/dist/workspace/WorkspaceManager.js +38 -0
  40. package/package.json +17 -17
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
  // THIS FILE IS AUTO-GENERATED. DO NOT EDIT THIS FILE DIRECTLY.
3
3
  // Generated from @likec4/icons
4
- const icons = [...Object.entries({ "aws": ["activate", "alexa-for-business", "amplify", "apache-mxnet-on-aws", "api-gateway", "app-config", "app-flow", "app-mesh", "app-runner", "app-stream", "app-sync", "application-auto-scaling", "application-composer", "application-cost-profiler", "application-discovery-service", "application-migration-service", "artifact", "athena", "audit-manager", "augmented-ai-a2i", "aurora", "auto-scaling", "backint-agent", "backup", "batch", "billing-conductor", "bottlerocket", "braket", "budgets", "certificate-manager", "chatbot", "chime", "chime-sdk", "chime-voice-connector", "clean-rooms", "client-vpn", "cloud-control-api", "cloud-development-kit", "cloud-directory", "cloud-formation", "cloud-front", "cloud-hsm", "cloud-map", "cloud-search", "cloud-shell", "cloud-trail", "cloud-wan", "cloud-watch", "cloud9", "code-artifact", "code-build", "code-catalyst", "code-commit", "code-deploy", "code-guru", "code-pipeline", "code-star", "code-whisperer", "cognito", "command-line-interface", "comprehend", "comprehend-medical", "compute-optimizer", "config", "connect", "console-mobile-application", "control-tower", "corretto", "cost-and-usage-report", "cost-explorer", "data-exchange", "data-pipeline", "data-sync", "data-zone", "database-migration-service", "deep-composer", "deep-learning-amis", "deep-learning-containers", "deep-lens", "deep-racer", "detective", "dev-ops-guru", "device-farm", "direct-connect", "directory-service", "distro-for-open-telemetry", "document-db", "dynamo-db", "ec2", "ec2-auto-scaling", "ec2-image-builder", "ecs-anywhere", "efs", "eks-anywhere", "eks-cloud", "eks-distro", "elasti-cache", "elastic-beanstalk", "elastic-block-store", "elastic-container-registry", "elastic-container-service", "elastic-disaster-recovery", "elastic-fabric-adapter", "elastic-inference", "elastic-kubernetes-service", "elastic-load-balancing", "elastic-transcoder", "elemental-appliances-software", "elemental-conductor", "elemental-delta", "elemental-link", "elemental-live", "elemental-media-connect", "elemental-media-convert", "elemental-media-live", "elemental-media-package", "elemental-media-store", "elemental-media-tailor", "elemental-server", "emr", "event-bridge", "express-workflows", "fargate", "fault-injection-simulator", "file-cache", "fin-space", "firewall-manager", "forecast", "fraud-detector", "free-rtos", "fsx", "fsx-for-lustre", "fsx-for-net-app-ontap", "fsx-for-open-zfs", "fsx-for-wfs", "game-kit", "game-lift", "game-sparks", "genomics-cli", "global-accelerator", "glue", "glue-data-brew", "glue-elastic-views", "ground-station", "guard-duty", "health-lake", "honeycode", "iam-identity-center", "identity-and-access-management", "inspector", "interactive-video-service", "io-t-1-click", "io-t-analytics", "io-t-button", "io-t-core", "io-t-device-defender", "io-t-device-management", "io-t-edu-kit", "io-t-events", "io-t-express-link", "io-t-fleet-wise", "io-t-greengrass", "io-t-robo-runner", "io-t-site-wise", "io-t-things-graph", "io-t-twin-maker", "iq", "kendra", "key-management-service", "keyspaces", "kinesis", "kinesis-data-analytics", "kinesis-data-streams", "kinesis-firehose", "kinesis-video-streams", "lake-formation", "lambda", "launch-wizard", "lex", "license-manager", "lightsail", "local-zones", "location-service", "lookout-for-equipment", "lookout-for-metrics", "lookout-for-vision", "lumberyard", "macie", "mainframe-modernization", "managed-blockchain", "managed-grafana", "managed-service-for-prometheus", "managed-services", "managed-streaming-for-apache-kafka", "managed-workflows-for-apache-airflow", "management-console", "marketplace-dark", "marketplace-light", "memory-db-for-redis", "migration-evaluator", "migration-hub", "monitron", "mq", "neptune", "network-firewall", "neuron", "nice-dcv", "nice-engin-frame", "nimble-studio", "nitro-enclaves", "omics", "open-3d-engine", "open-search-service", "ops-works", "organizations", "outposts-family", "outposts-rack", "outposts-servers", "panorama", "parallel-cluster", "personal-health-dashboard", "personalize", "pinpoint", "pinpoint-apis", "polly", "private-5g", "private-certificate-authority", "private-link", "professional-services", "proton", "quantum-ledger-database", "quick-sight", "rds", "rds-on-vmware", "re-post", "red-hat-open-shift-service-on-aws", "redshift", "rekognition", "reserved-instance-reporting", "resilience-hub", "resource-access-manager", "resource-explorer", "robo-maker", "route-53", "s3-on-outposts", "sage-maker", "sage-maker-ground-truth", "sage-maker-studio-lab", "savings-plans", "secrets-manager", "security-hub", "security-lake", "server-migration-service", "serverless-application-repository", "service-catalog", "service-management-connector", "shield", "signer", "sim-space-weaver", "simple-email-service", "simple-notification-service", "simple-queue-service", "simple-storage-service", "simple-storage-service-glacier", "site-to-site-vpn", "snowball", "snowball-edge", "snowcone", "snowmobile", "step-functions", "storage-gateway", "sumerian", "supply-chain", "support", "systems-manager", "tensor-flow-on-aws", "textract", "thinkbox-deadline", "thinkbox-frost", "thinkbox-krakatoa", "thinkbox-sequoia", "thinkbox-stoke", "thinkbox-xmesh", "timestream", "tools-and-sdks", "torch-serve", "training-certification", "transcribe", "transfer-family", "transit-gateway", "translate", "trusted-advisor", "verified-access", "verified-permissions", "virtual-private-cloud", "vmware-cloud-on-aws", "vpc-lattice", "waf", "wavelength", "well-architected-tool", "wickr", "work-docs", "work-docs-sdk", "work-link", "work-mail", "work-spaces-family", "x-ray"], "azure": ["abs-member", "active-directory-connect-health", "activity-log", "administrative-units", "advisor", "ai-at-edge", "ai-studio", "aks-automatic", "aks-istio", "alerts", "all-resources", "analysis-services", "anomaly-detector", "api-center", "api-connections", "api-management-services", "api-proxy", "app-compliance-automation", "app-configuration", "app-registrations", "app-service-certificates", "app-service-domains", "app-service-environments", "app-service-plans", "app-services", "app-space", "app-space-component", "applens", "application-gateway-containers", "application-gateways", "application-group", "application-insights", "application-security-groups", "aquila", "arc-data-services", "arc-kubernetes", "arc-machines", "arc-postgre-sql", "arc-sql-managed-instance", "arc-sql-server", "atm-multistack", "auto-scale", "automanaged-vm", "automation-accounts", "availability-sets", "avs-vm", "azure-a", "azure-ad-b2c", "azure-api-for-fhir", "azure-applied-ai-services", "azure-arc", "azure-attestation", "azure-backup-center", "azure-blockchain-service", "azure-center-for-sap", "azure-chaos-studio", "azure-cloud-shell", "azure-communication-services", "azure-communications-gateway", "azure-compute-galleries", "azure-consumption-commitment", "azure-cosmos-db", "azure-data-catalog", "azure-data-explorer-clusters", "azure-database-maria-db-server", "azure-database-migration-services", "azure-database-my-sql-server", "azure-database-postgre-sql-server", "azure-database-postgre-sql-server-group", "azure-databox-gateway", "azure-databricks", "azure-deployment-environments", "azure-dev-ops", "azure-dev-tunnels", "azure-edge-hardware-center", "azure-experimentation-studio", "azure-fileshares", "azure-firewall-manager", "azure-firewall-policy", "azure-hcp-cache", "azure-hpc-workbenches", "azure-hybrid-center", "azure-information-protection", "azure-io-t-operations", "azure-lighthouse", "azure-load-testing", "azure-managed-grafana", "azure-managed-redis", "azure-maps-accounts", "azure-media-service", "azure-migrate", "azure-monitor-dashboard", "azure-monitor-pipeline", "azure-monitors-for-sap-solutions", "azure-net-app-files", "azure-network-function-manager", "azure-network-function-manager-functions", "azure-object-understanding", "azure-open-ai", "azure-operator-5g-core", "azure-operator-insights", "azure-operator-nexus", "azure-operator-service-manager", "azure-orbital", "azure-programmable-connectivity", "azure-purview-accounts", "azure-quotas", "azure-red-hat-open-shift", "azure-sentinel", "azure-service-bus", "azure-sphere", "azure-spring-apps", "azure-sql", "azure-sql-edge", "azure-sql-server-stretch-databases", "azure-sql-vm", "azure-stack", "azure-stack-edge", "azure-stack-hci-sizer", "azure-storage-mover", "azure-support-center-blue", "azure-sustainability", "azure-synapse-analytics", "azure-token-service", "azure-video-indexer", "azure-virtual-desktop", "azure-vmware-solution", "azure-workbooks", "azurite", "backlog", "backup-vault", "bare-metal-infrastructure", "bastions", "batch-accounts", "batch-ai", "biz-talk", "blob-block", "blob-page", "blockchain-applications", "blueprints", "bonsai", "bot-services", "branch", "breeze", "browser", "bug", "builds", "business-process-tracking", "cache", "cache-redis", "capacity", "capacity-reservation-groups", "cdn-profiles", "central-service-instance-for-sap", "ceres", "change-analysis", "client-apps", "cloud-services-classic", "cloud-services-extended-support", "cloud-test", "code", "code-optimization", "cognitive-search", "cognitive-services", "cognitive-services-decisions", "collaborative-service", "commit", "community-images", "compliance", "compliance-center", "compute-fleet", "computer-vision", "conditional-access", "confidential-ledgers", "connected-cache", "connected-vehicle-platform", "connections", "consortium", "container-apps-environments", "container-instances", "container-registries", "container-services-deprecated", "content-moderators", "content-safety", "controls", "controls-horizontal", "cost-alerts", "cost-analysis", "cost-budgets", "cost-export", "cost-management", "cost-management-and-billing", "counter", "cubes", "custom-ip-prefix", "custom-vision", "customer-lockbox-for-microsoft-azure", "dashboard", "dashboard-hub", "data-box", "data-collection-rules", "data-factories", "data-lake-analytics", "data-lake-storage-gen1", "data-lake-store-gen1", "data-share-invitations", "data-shares", "data-virtualization", "database-instance-for-sap", "ddo-s-protection-plans", "dedicated-hsm", "defender-cm-local-manager", "defender-dcs-controller", "defender-distributer-control-system", "defender-engineering-station", "defender-external-management", "defender-freezer-monitor", "defender-historian", "defender-hmi", "defender-industrial-packaging-system", "defender-industrial-printer", "defender-industrial-robot", "defender-industrial-scale-system", "defender-marquee", "defender-meter", "defender-plc", "defender-pneumatic-device", "defender-programable-board", "defender-relay", "defender-robot-controller", "defender-rtu", "defender-sensor", "defender-slot", "defender-web-guiding-system", "detonation", "dev-console", "dev-ops-starter", "dev-test-labs", "device-compliance", "device-configuration", "device-enrollment", "device-provisioning-services", "device-security-apple", "device-security-google", "device-security-windows", "device-update-io-t-hub", "devices", "diagnostics-settings", "digital-twins", "disk-encryption-sets", "disk-pool", "disks", "disks-classic", "disks-snapshots", "dns-multistack", "dns-private-resolver", "dns-security-policy", "dns-zones", "download", "e-books", "edge-actions", "edge-management", "edge-storage-accelerator", "education", "elastic-job-agents", "elastic-san", "endpoint-analytics", "engage-center-connect", "enterprise-applications", "entra-connect", "entra-connect-health", "entra-connect-sync", "entra-domain-services", "entra-global-secure-access", "entra-id-protection", "entra-identity-custom-roles", "entra-identity-licenses", "entra-identity-risky-signins", "entra-identity-risky-users", "entra-identity-roles-and-administrators", "entra-internet-access", "entra-managed-identities", "entra-private-access", "entra-privleged-identity-management", "entra-verified-id", "error", "event-grid-domains", "event-grid-subscriptions", "event-grid-topics", "event-hub-clusters", "event-hubs", "exchange-access", "exchange-on-premises-access", "express-route-circuits", "express-route-direct", "express-route-traffic-collector", "extended-security-updates", "extensions", "external-id", "external-id-modified", "external-identities", "face-apis", "feature-previews", "fhir-service", "fiji", "file", "files", "firewalls", "folder-blank", "folder-website", "form-recognizers", "frd-qa", "free-services", "front-door-and-cdn-profiles", "ftp", "function-apps", "gear", "genomics", "genomics-accounts", "globe-error", "globe-success", "globe-warning", "groups", "guide", "hd-insight-clusters", "hdi-aks-cluster", "heart", "help-and-support", "host-groups", "host-pools", "hosts", "hybrid-connectivity-hub", "ic-m-troubleshooting", "identity-governance", "identity-multi-factor-authentication", "identity-secure-score", "image", "image-definitions", "image-templates", "image-versions", "images", "immersive-readers", "import-export-jobs", "industrial-io-t", "information", "infrastructure-backup", "input-output", "instance-pools", "integration-accounts", "integration-environments", "integration-service-environments", "internet-analyzer-profiles", "intune", "intune-app-protection", "intune-for-education", "intune-trends", "io-t-central-applications", "io-t-edge", "io-t-hub", "ip-address-manager", "ip-groups", "journey-hub", "key-vaults", "keys", "kubernetes-fleet-manager", "kubernetes-services", "lab-accounts", "lab-services", "landing-zone", "language", "language-understanding", "launch-portal", "learn", "load-balancer-hub", "load-balancers", "load-test", "load-testing", "local-network-gateways", "location", "log-analytics-query-pack", "log-analytics-workspaces", "log-streaming", "logic-apps", "logic-apps-custom-connector", "logic-apps-template", "machine-learning", "machine-learning-studio-classic-web-services", "machine-learning-studio-web-service-plans", "machine-learning-studio-workspaces", "machines-azure-arc", "maintenance-configuration", "managed-applications-center", "managed-database", "managed-desktop", "managed-dev-ops-pools", "managed-file-shares", "managed-identities", "managed-instance-apache-cassandra", "managed-service-fabric", "management-groups", "management-portal", "marketplace", "marketplace-management", "med-tech-service", "media", "media-file", "mesh-applications", "metrics", "metrics-advisor", "microsoft-defender-easm", "microsoft-defender-for-cloud", "microsoft-defender-for-io-t", "microsoft-dev-box", "mindaro", "mission-landing-zone", "mobile", "mobile-engagement", "mobile-networks", "modular-data-center", "module", "monitor", "monitor-health-models", "multi-tenancy", "multifactor-authentication", "my-customers", "nat", "network-foundation-hub", "network-interfaces", "network-managers", "network-security-groups", "network-security-hub", "network-security-perimeters", "network-watcher", "notification-hub-namespaces", "notification-hubs", "offers", "on-premises-data-gateways", "open-supply-chain-platform", "operation-log-classic", "oracle-database", "os-images-classic", "osconfig", "outbound-connection", "partner-namespace", "partner-registration", "partner-topic", "peering-service", "peerings", "personalizers", "planetary-computer-pro", "plans", "policy", "power", "power-bi-embedded", "power-platform", "power-up", "powershell", "preview-features", "private-endpoints", "private-link", "private-link-service", "private-link-services", "process-explorer", "production-ready-database", "promethus", "proximity-placement-groups", "public-ip-addresses", "public-ip-addresses-classic", "public-ip-prefixes", "qn-a-makers", "quickstart-center", "recent", "recovery-services-vaults", "region-management", "relays", "remote-rendering", "reservations", "reserved-capacity", "reserved-ip-addresses-classic", "resource-explorer", "resource-graph-explorer", "resource-group-list", "resource-groups", "resource-guard", "resource-linked", "resource-management-private-link", "resource-mover", "resources-provider", "restore-points", "restore-points-collections", "route-filters", "route-tables", "rtos", "savings-plans", "scheduler", "scheduler-job-collections", "scvmm-management-servers", "search", "search-grid", "security", "security-baselines", "send-grid-accounts", "server-farm", "serverless-search", "service-catalog-mad", "service-endpoint-policies", "service-fabric-clusters", "service-group-relationships", "service-groups", "service-health", "service-providers", "shared-image-galleries", "signal-r", "software-as-a-service", "software-updates", "solutions", "sonic-dash", "spatial-anchor-accounts", "speech-services", "spot-vm", "spot-vmss", "sql-data-warehouses", "sql-database", "sql-database-fleet-manager", "sql-elastic-pools", "sql-managed-instance", "sql-server", "sql-server-registries", "ssd", "ssh-keys", "ssis-lift-and-shift-ir", "stack-hci-premium", "static-apps", "stor-simple-data-managers", "stor-simple-device-managers", "storage-accounts", "storage-accounts-classic", "storage-actions", "storage-azure-files", "storage-container", "storage-explorer", "storage-functions", "storage-hubs", "storage-queue", "storage-sync-services", "stream-analytics-jobs", "subnet", "subscriptions", "system-topic", "table", "tag", "tags", "targets-management", "template-specs", "templates", "tenant-properties", "tenant-status", "test-base", "tfs-vc-repository", "time-series-data-sets", "time-series-insights-access-policies", "time-series-insights-environments", "time-series-insights-event-sources", "toolbox", "toolchain-orchestrator", "traffic-manager-profiles", "translator-text", "troubleshoot", "universal-print", "update-management-center", "updates", "user-privacy", "user-settings", "user-subscriptions", "users", "verifiable-credentials", "verification-as-a-service", "versions", "video-analyzers", "virtual-clusters", "virtual-enclaves", "virtual-instance-for-sap", "virtual-machine", "virtual-machines-classic", "virtual-network-gateways", "virtual-networks", "virtual-networks-classic", "virtual-router", "virtual-visits-builder", "virtual-wan-hub", "virtual-wans", "vm-app-definitions", "vm-app-versions", "vm-image-version", "vm-images-classic", "vm-scale-sets", "vpnclient-windows", "wac", "wac-installer", "web-app-database", "web-application-firewall-policies-waf", "web-jobs", "web-slots", "web-test", "website-power", "website-staging", "windows-notification-services", "windows10-core-services", "workbooks", "worker-container-app", "workflow", "workload-orchestration", "workspace-gateway", "workspaces"], "gcp": ["access-context-manager", "administration", "advanced-agent-modeling", "advanced-solutions-lab", "agent-assist", "ai-hub", "ai-platform", "ai-platform-unified", "analytics-hub", "anthos", "anthos-config-management", "anthos-service-mesh", "api", "api-analytics", "api-monetization", "apigee-api-platform", "apigee-sense", "app-engine", "artifact-registry", "asset-inventory", "assured-workloads", "auto-ml", "auto-ml-natural-language", "auto-ml-tables", "auto-ml-translation", "auto-ml-video-intelligence", "auto-ml-vision", "bare-metal-solutions", "batch", "beyondcorp", "big-query", "bigtable", "billing", "binary-authorization", "catalog", "certificate-authority-service", "certificate-manager", "cloud-api-gateway", "cloud-apis", "cloud-armor", "cloud-asset-inventory", "cloud-audit-logs", "cloud-build", "cloud-cdn", "cloud-code", "cloud-composer", "cloud-data-fusion", "cloud-deploy", "cloud-deployment-manager", "cloud-dns", "cloud-domains", "cloud-ekm", "cloud-endpoints", "cloud-external-ip-addresses", "cloud-firewall-rules", "cloud-for-marketing", "cloud-functions", "cloud-generic", "cloud-gpu", "cloud-healthcare-api", "cloud-healthcare-marketplace", "cloud-hsm", "cloud-ids", "cloud-inference-api", "cloud-interconnect", "cloud-jobs-api", "cloud-load-balancing", "cloud-logging", "cloud-media-edge", "cloud-monitoring", "cloud-nat", "cloud-natural-language-api", "cloud-network", "cloud-ops", "cloud-optimization-ai", "cloud-optimization-ai-fleet-routing-api", "cloud-router", "cloud-routes", "cloud-run", "cloud-run-for-anthos", "cloud-scheduler", "cloud-security-scanner", "cloud-shell", "cloud-spanner", "cloud-sql", "cloud-storage", "cloud-tasks", "cloud-test-lab", "cloud-tpu", "cloud-translation-api", "cloud-vision-api", "cloud-vpn", "compute-engine", "configuration-management", "connectivity-test", "connectors", "contact-center-ai", "container-optimized-os", "container-registry", "data-catalog", "data-labeling", "data-layers", "data-loss-prevention-api", "data-qn-a", "data-studio", "data-transfer", "database-migration-service", "dataflow", "datalab", "dataplex", "datapol", "dataprep", "dataproc", "dataproc-metastore", "datashare", "datastore", "datastream", "debugger", "developer-portal", "dialogflow", "dialogflow-cx", "dialogflow-insights", "document-ai", "early-access-center", "error-reporting", "eventarc", "filestore", "financial-services-marketplace", "firestore", "fleet-engine", "free-trial", "game-servers", "gce-systems-management", "genomics", "gke-on-prem", "google-cloud-marketplace", "google-kubernetes-engine", "google-maps-platform", "healthcare-nlp-api", "home", "identity-and-access-management", "identity-aware-proxy", "identity-platform", "iot-core", "iot-edge", "key-access-justifications", "key-management-service", "kuberun", "launcher", "local-ssd", "looker", "managed-service-for-microsoft-active-directory", "media-translation-api", "memorystore", "migrate-for-anthos", "migrate-for-compute-engine", "my-cloud", "network-connectivity-center", "network-intelligence-center", "network-security", "network-tiers", "network-topology", "onboarding", "os-configuration-management", "os-inventory-management", "os-patch-management", "partner-interconnect", "partner-portal", "performance-dashboard", "permissions", "persistent-disk", "phishing-protection", "policy-analyzer", "premium-network-tier", "private-connectivity", "private-service-connect", "producer-portal", "profiler", "project", "pub-sub", "quantum-engine", "quotas", "real-world-insights", "recommendations-ai", "release-notes", "retail-api", "risk-manager", "runtime-config", "secret-manager", "security", "security-command-center", "security-health-advisor", "security-key-enforcement", "service-discovery", "speech-to-text", "stackdriver", "standard-network-tier", "stream-suite", "support", "tensorflow-enterprise", "text-to-speech", "tools-for-powershell", "trace", "traffic-director", "transfer", "transfer-appliance", "user-preferences", "vertex-ai", "video-intelligence-api", "virtual-private-cloud", "visual-inspection", "vmware-engine", "web-risk", "web-security-scanner", "workflows", "workload-identity-pool"], "tech": ["aarch64", "adobe-illustrator", "adobe-photoshop", "adobe-premiere-pro", "adobe-xd", "adonis-js", "after-effects", "airflow", "akka", "algolia", "alpine-js", "amazon-web-services", "anaconda", "android", "android-studio", "angular", "angular-js", "ansible", "ant-design", "apache", "apl", "appcelerator", "apple", "apple-safari", "appwrite", "arch-linux", "arduino", "argo-cd", "astro", "atom", "autodesk-maya", "autodesk-shot-grid", "awk", "azios", "azure", "azure-devops", "azure-sql-database", "babel", "backbone-js", "ballerina", "bamboo", "bash", "behance", "bitbucket", "blender", "bootstrap", "bower", "browserstack", "bulma", "bun", "c", "cairo-graphics", "cake-php", "canva", "capacitor", "cassandra", "cent-os", "chrome", "circle-ci", "clarity", "clion", "clojure", "clojure-script", "cloudflare", "cloudflare-workers", "cmake", "code-igniter", "code-pen", "codeac", "codecov", "coffee-script", "composer", "confluence", "consul", "contao", "corejs", "cosmosdb", "couchdb", "cplusplus", "crystal", "csharp", "css3", "cucumber", "cypress", "d3js", "dart", "data-grip", "data-spell", "dbeaver", "debian", "deno", "devicon", "digital-ocean", "discord-js", "django", "django-rest", "docker", "doctrine", "dropwizard", "drupal", "eclipse-ceylon", "eclipse-ide", "eclipse-vert-x", "elasticbeats", "elasticsearch", "electron", "eleventy-11ty", "elixir", "elm", "embedded-c", "ember-js", "envoy", "erlang", "eslint", "express", "facebook", "fast-api", "fastify", "fauna", "feathers", "fedora", "figma", "file-zilla", "firebase", "firefox", "flask", "flutter", "fortran", "foundation", "fsharp", "gatling", "gatsby", "gazebo", "gcc", "gentoo", "ghost", "gimp", "git", "gitbook", "github", "github-actions", "github-codespaces", "gitlab", "gitpod", "gitter", "gnu-emacs", "go", "go-land", "godot-engine", "google", "google-cloud", "gradle", "grafana", "grails", "graphql", "groovy", "grunt-js", "gulp-js", "hadoop", "handlebars", "hardhat", "harvester", "hashicorp-vault", "haskell", "haxe", "helm", "heroku", "hibernate", "homebrew", "html5", "hugo", "ibm-spss-statistics", "ie10", "ifttt", "influxdb", "inkscape", "insomnia", "intellij-idea", "ionic", "jaeger", "jamstack", "jasmine", "java", "javascript", "jeet", "jekyll", "jenkins", "jest", "jetbrains", "jira", "jira-align", "jquery", "json", "jule", "julia", "junit", "jupyter", "k3os", "k3s", "kafka", "kaggle", "karate", "karma", "keras", "kibana", "knex-js", "knockout", "kotlin", "krakenjs", "ktor", "kubernetes", "labview", "laravel", "latex", "less-js", "linkedin", "linux", "liquibase", "livewire", "llvm", "logstash", "lua", "lumen", "magento", "markdown", "material-ui", "materialize", "matlab", "matplotlib", "maven", "meteor-js", "microsoft-sql-server", "minitab", "mob-x", "mocha", "modx", "moleculer", "mongodb", "mongoose-js", "moodle", "ms-dos", "mysql", "nano", "nerog", "nestjs", "net", "net-core", "network-x", "new4j", "nextjs", "nginx", "nhibernate", "nim", "nimble", "nix", "nodejs", "nodemon", "nodewebkit", "npm", "nuget", "num-py", "nuxt-js", "objective-c", "ocaml", "oh-my-zsh", "okta", "open-al", "open-api", "open-cl", "open-cv", "open-gl", "open-stack", "open-suse", "open-telemetry", "opera", "oracle", "p5js", "packer", "pandas", "perl", "pf-sense", "phalcon", "phoenix-framework", "photon-engine", "php", "php-storm", "playwrite", "ploty", "podman", "polygon", "portainer", "postcss", "postgresql", "postman", "powershell", "processing", "prometheus", "protractor", "purescript", "putty", "pycharm", "pyscript", "pytest", "python", "python-poetry", "pytorch", "qodana", "qt", "quarkus", "quasar", "qwik", "r", "rabbitmq", "rancher", "raspberrypi", "reach", "react", "react-bootstrap", "realm", "red-cube-s-epic-compiler-thingy-programming-re-ct", "redhat", "redis", "redux", "ren-py", "rider", "robot-operating-system-ros", "rocksdb", "rollup-js", "rspec", "rstudio", "ruby", "ruby-mine", "ruby-on-rails", "rust", "salesforce", "sanity", "sass", "scala", "scalingo", "sdl", "selenium", "sema-software", "sequelize", "shopware", "sketch", "slack", "socket-io", "solid-js", "solidity", "sonarqube", "sourcetree", "spark", "splunk", "spring", "sql-developer", "sqlalchemy", "sqlite", "ssh", "stackoverflow", "stata", "storybook", "streamlit", "stylus", "subversion", "svelte", "swagger", "swift", "symfony", "tailwind-css", "tauri", "tensorflow", "terraform", "tex", "the-algorithms", "three-js", "titanium-sdk", "tomcat", "tortoise-git", "tower", "traefik-mesh", "traefik-proxy", "travis-ci", "trello", "twitter", "typescript", "typo3", "ubuntu", "uml", "unity", "unix", "unreal-engine", "uwsgi", "v8", "vagrant", "vala", "vercel", "veutify", "vim", "visualstudio", "vite", "vitejs", "vscode", "vsphere", "vue", "vue-storefront", "vyper", "webassembly", "webflow", "weblate", "webpack", "webstorm", "windows8", "windows11", "woo-commerce", "wordpress", "xamarin", "xcode", "xml", "yaml", "yarn", "yii-framework", "yuno-host", "zend-framework", "zig"] })]
4
+ const icons = [...Object.entries({ "aws": ["activate", "alexa-for-business", "amplify", "apache-mxnet-on-aws", "api-gateway", "app-config", "app-flow", "app-mesh", "app-runner", "app-stream", "app-sync", "application-auto-scaling", "application-composer", "application-cost-profiler", "application-discovery-service", "application-migration-service", "artifact", "athena", "audit-manager", "augmented-ai-a2i", "aurora", "auto-scaling", "backint-agent", "backup", "batch", "billing-conductor", "bottlerocket", "braket", "budgets", "certificate-manager", "chatbot", "chime", "chime-sdk", "chime-voice-connector", "clean-rooms", "client-vpn", "cloud-control-api", "cloud-development-kit", "cloud-directory", "cloud-formation", "cloud-front", "cloud-hsm", "cloud-map", "cloud-search", "cloud-shell", "cloud-trail", "cloud-wan", "cloud-watch", "cloud9", "code-artifact", "code-build", "code-catalyst", "code-commit", "code-deploy", "code-guru", "code-pipeline", "code-star", "code-whisperer", "cognito", "command-line-interface", "comprehend", "comprehend-medical", "compute-optimizer", "config", "connect", "console-mobile-application", "control-tower", "corretto", "cost-and-usage-report", "cost-explorer", "data-exchange", "data-pipeline", "data-sync", "data-zone", "database-migration-service", "deep-composer", "deep-learning-amis", "deep-learning-containers", "deep-lens", "deep-racer", "detective", "dev-ops-guru", "device-farm", "direct-connect", "directory-service", "distro-for-open-telemetry", "document-db", "dynamo-db", "ec2", "ec2-auto-scaling", "ec2-image-builder", "ecs-anywhere", "efs", "eks-anywhere", "eks-cloud", "eks-distro", "elasti-cache", "elastic-beanstalk", "elastic-block-store", "elastic-container-registry", "elastic-container-service", "elastic-disaster-recovery", "elastic-fabric-adapter", "elastic-inference", "elastic-kubernetes-service", "elastic-load-balancing", "elastic-transcoder", "elemental-appliances-software", "elemental-conductor", "elemental-delta", "elemental-link", "elemental-live", "elemental-media-connect", "elemental-media-convert", "elemental-media-live", "elemental-media-package", "elemental-media-store", "elemental-media-tailor", "elemental-server", "emr", "event-bridge", "express-workflows", "fargate", "fault-injection-simulator", "file-cache", "fin-space", "firewall-manager", "forecast", "fraud-detector", "free-rtos", "fsx", "fsx-for-lustre", "fsx-for-net-app-ontap", "fsx-for-open-zfs", "fsx-for-wfs", "game-kit", "game-lift", "game-sparks", "genomics-cli", "global-accelerator", "glue", "glue-data-brew", "glue-elastic-views", "ground-station", "guard-duty", "health-lake", "honeycode", "iam-identity-center", "identity-and-access-management", "inspector", "interactive-video-service", "io-t-1-click", "io-t-analytics", "io-t-button", "io-t-core", "io-t-device-defender", "io-t-device-management", "io-t-edu-kit", "io-t-events", "io-t-express-link", "io-t-fleet-wise", "io-t-greengrass", "io-t-robo-runner", "io-t-site-wise", "io-t-things-graph", "io-t-twin-maker", "iq", "kendra", "key-management-service", "keyspaces", "kinesis", "kinesis-data-analytics", "kinesis-data-streams", "kinesis-firehose", "kinesis-video-streams", "lake-formation", "lambda", "launch-wizard", "lex", "license-manager", "lightsail", "local-zones", "location-service", "lookout-for-equipment", "lookout-for-metrics", "lookout-for-vision", "lumberyard", "macie", "mainframe-modernization", "managed-blockchain", "managed-grafana", "managed-service-for-prometheus", "managed-services", "managed-streaming-for-apache-kafka", "managed-workflows-for-apache-airflow", "management-console", "marketplace-dark", "marketplace-light", "memory-db-for-redis", "migration-evaluator", "migration-hub", "monitron", "mq", "neptune", "network-firewall", "neuron", "nice-dcv", "nice-engin-frame", "nimble-studio", "nitro-enclaves", "omics", "open-3d-engine", "open-search-service", "ops-works", "organizations", "outposts-family", "outposts-rack", "outposts-servers", "panorama", "parallel-cluster", "personal-health-dashboard", "personalize", "pinpoint", "pinpoint-apis", "polly", "private-5g", "private-certificate-authority", "private-link", "professional-services", "proton", "quantum-ledger-database", "quick-sight", "rds", "rds-on-vmware", "re-post", "red-hat-open-shift-service-on-aws", "redshift", "rekognition", "reserved-instance-reporting", "resilience-hub", "resource-access-manager", "resource-explorer", "robo-maker", "route-53", "s3-on-outposts", "sage-maker", "sage-maker-ground-truth", "sage-maker-studio-lab", "savings-plans", "secrets-manager", "security-hub", "security-lake", "server-migration-service", "serverless-application-repository", "service-catalog", "service-management-connector", "shield", "signer", "sim-space-weaver", "simple-email-service", "simple-notification-service", "simple-queue-service", "simple-storage-service", "simple-storage-service-glacier", "site-to-site-vpn", "snowball", "snowball-edge", "snowcone", "snowmobile", "step-functions", "storage-gateway", "sumerian", "supply-chain", "support", "systems-manager", "tensor-flow-on-aws", "textract", "thinkbox-deadline", "thinkbox-frost", "thinkbox-krakatoa", "thinkbox-sequoia", "thinkbox-stoke", "thinkbox-xmesh", "timestream", "tools-and-sdks", "torch-serve", "training-certification", "transcribe", "transfer-family", "transit-gateway", "translate", "trusted-advisor", "verified-access", "verified-permissions", "virtual-private-cloud", "vmware-cloud-on-aws", "vpc-lattice", "waf", "wavelength", "well-architected-tool", "wickr", "work-docs", "work-docs-sdk", "work-link", "work-mail", "work-spaces-family", "x-ray"], "azure": ["abs-member", "active-directory-connect-health", "activity-log", "administrative-units", "advisor", "ai-at-edge", "ai-studio", "aks-automatic", "aks-istio", "alerts", "all-resources", "analysis-services", "anomaly-detector", "api-center", "api-connections", "api-management-services", "api-proxy", "app-compliance-automation", "app-configuration", "app-registrations", "app-service-certificates", "app-service-domains", "app-service-environments", "app-service-plans", "app-services", "app-space", "app-space-component", "applens", "application-gateway-containers", "application-gateways", "application-group", "application-insights", "application-security-groups", "aquila", "arc-data-services", "arc-kubernetes", "arc-machines", "arc-postgre-sql", "arc-sql-managed-instance", "arc-sql-server", "atm-multistack", "auto-scale", "automanaged-vm", "automation-accounts", "availability-sets", "avs-vm", "azure-a", "azure-ad-b2c", "azure-api-for-fhir", "azure-applied-ai-services", "azure-arc", "azure-attestation", "azure-backup-center", "azure-blockchain-service", "azure-center-for-sap", "azure-chaos-studio", "azure-cloud-shell", "azure-communication-services", "azure-communications-gateway", "azure-compute-galleries", "azure-consumption-commitment", "azure-cosmos-db", "azure-data-catalog", "azure-data-explorer-clusters", "azure-database-maria-db-server", "azure-database-migration-services", "azure-database-my-sql-server", "azure-database-postgre-sql-server", "azure-database-postgre-sql-server-group", "azure-databox-gateway", "azure-databricks", "azure-deployment-environments", "azure-dev-ops", "azure-dev-tunnels", "azure-edge-hardware-center", "azure-experimentation-studio", "azure-fileshares", "azure-firewall-manager", "azure-firewall-policy", "azure-hcp-cache", "azure-hpc-workbenches", "azure-hybrid-center", "azure-information-protection", "azure-io-t-operations", "azure-lighthouse", "azure-load-testing", "azure-managed-grafana", "azure-managed-redis", "azure-maps-accounts", "azure-media-service", "azure-migrate", "azure-monitor-dashboard", "azure-monitor-pipeline", "azure-monitors-for-sap-solutions", "azure-net-app-files", "azure-network-function-manager", "azure-network-function-manager-functions", "azure-object-understanding", "azure-open-ai", "azure-operator-5g-core", "azure-operator-insights", "azure-operator-nexus", "azure-operator-service-manager", "azure-orbital", "azure-programmable-connectivity", "azure-purview-accounts", "azure-quotas", "azure-red-hat-open-shift", "azure-sentinel", "azure-service-bus", "azure-sphere", "azure-spring-apps", "azure-sql", "azure-sql-edge", "azure-sql-server-stretch-databases", "azure-sql-vm", "azure-stack", "azure-stack-edge", "azure-stack-hci-sizer", "azure-storage-mover", "azure-support-center-blue", "azure-sustainability", "azure-synapse-analytics", "azure-token-service", "azure-video-indexer", "azure-virtual-desktop", "azure-vmware-solution", "azure-workbooks", "azurite", "backlog", "backup-vault", "bare-metal-infrastructure", "bastions", "batch-accounts", "batch-ai", "biz-talk", "blob-block", "blob-page", "blockchain-applications", "blueprints", "bonsai", "bot-services", "branch", "breeze", "browser", "bug", "builds", "business-process-tracking", "cache", "cache-redis", "capacity", "capacity-reservation-groups", "cdn-profiles", "central-service-instance-for-sap", "ceres", "change-analysis", "client-apps", "cloud-services-classic", "cloud-services-extended-support", "cloud-test", "code", "code-optimization", "cognitive-search", "cognitive-services", "cognitive-services-decisions", "collaborative-service", "commit", "community-images", "compliance", "compliance-center", "compute-fleet", "computer-vision", "conditional-access", "confidential-ledgers", "connected-cache", "connected-vehicle-platform", "connections", "consortium", "container-apps-environments", "container-instances", "container-registries", "container-services-deprecated", "content-moderators", "content-safety", "controls", "controls-horizontal", "cost-alerts", "cost-analysis", "cost-budgets", "cost-export", "cost-management", "cost-management-and-billing", "counter", "cubes", "custom-ip-prefix", "custom-vision", "customer-lockbox-for-microsoft-azure", "dashboard", "dashboard-hub", "data-box", "data-collection-rules", "data-factories", "data-lake-analytics", "data-lake-storage-gen1", "data-lake-store-gen1", "data-share-invitations", "data-shares", "data-virtualization", "database-instance-for-sap", "ddo-s-protection-plans", "dedicated-hsm", "defender-cm-local-manager", "defender-dcs-controller", "defender-distributer-control-system", "defender-engineering-station", "defender-external-management", "defender-freezer-monitor", "defender-historian", "defender-hmi", "defender-industrial-packaging-system", "defender-industrial-printer", "defender-industrial-robot", "defender-industrial-scale-system", "defender-marquee", "defender-meter", "defender-plc", "defender-pneumatic-device", "defender-programable-board", "defender-relay", "defender-robot-controller", "defender-rtu", "defender-sensor", "defender-slot", "defender-web-guiding-system", "detonation", "dev-console", "dev-ops-starter", "dev-test-labs", "device-compliance", "device-configuration", "device-enrollment", "device-provisioning-services", "device-security-apple", "device-security-google", "device-security-windows", "device-update-io-t-hub", "devices", "diagnostics-settings", "digital-twins", "disk-encryption-sets", "disk-pool", "disks", "disks-classic", "disks-snapshots", "dns-multistack", "dns-private-resolver", "dns-security-policy", "dns-zones", "download", "e-books", "edge-actions", "edge-management", "edge-storage-accelerator", "education", "elastic-job-agents", "elastic-san", "endpoint-analytics", "engage-center-connect", "enterprise-applications", "entra-connect", "entra-connect-health", "entra-connect-sync", "entra-domain-services", "entra-global-secure-access", "entra-id-protection", "entra-identity-custom-roles", "entra-identity-licenses", "entra-identity-risky-signins", "entra-identity-risky-users", "entra-identity-roles-and-administrators", "entra-internet-access", "entra-managed-identities", "entra-private-access", "entra-privleged-identity-management", "entra-verified-id", "error", "event-grid-domains", "event-grid-subscriptions", "event-grid-topics", "event-hub-clusters", "event-hubs", "exchange-access", "exchange-on-premises-access", "express-route-circuits", "express-route-direct", "express-route-traffic-collector", "extended-security-updates", "extensions", "external-id", "external-id-modified", "external-identities", "face-apis", "feature-previews", "fhir-service", "fiji", "file", "files", "firewalls", "folder-blank", "folder-website", "form-recognizers", "frd-qa", "free-services", "front-door-and-cdn-profiles", "ftp", "function-apps", "gear", "genomics", "genomics-accounts", "globe-error", "globe-success", "globe-warning", "groups", "guide", "hd-insight-clusters", "hdi-aks-cluster", "heart", "help-and-support", "host-groups", "host-pools", "hosts", "hybrid-connectivity-hub", "ic-m-troubleshooting", "identity-governance", "identity-multi-factor-authentication", "identity-secure-score", "image", "image-definitions", "image-templates", "image-versions", "images", "immersive-readers", "import-export-jobs", "industrial-io-t", "information", "infrastructure-backup", "input-output", "instance-pools", "integration-accounts", "integration-environments", "integration-service-environments", "internet-analyzer-profiles", "intune", "intune-app-protection", "intune-for-education", "intune-trends", "io-t-central-applications", "io-t-edge", "io-t-hub", "ip-address-manager", "ip-groups", "journey-hub", "key-vaults", "keys", "kubernetes-fleet-manager", "kubernetes-services", "lab-accounts", "lab-services", "landing-zone", "language", "language-understanding", "launch-portal", "learn", "load-balancer-hub", "load-balancers", "load-test", "load-testing", "local-network-gateways", "location", "log-analytics-query-pack", "log-analytics-workspaces", "log-streaming", "logic-apps", "logic-apps-custom-connector", "logic-apps-template", "machine-learning", "machine-learning-studio-classic-web-services", "machine-learning-studio-web-service-plans", "machine-learning-studio-workspaces", "machines-azure-arc", "maintenance-configuration", "managed-applications-center", "managed-database", "managed-desktop", "managed-dev-ops-pools", "managed-file-shares", "managed-identities", "managed-instance-apache-cassandra", "managed-service-fabric", "management-groups", "management-portal", "marketplace", "marketplace-management", "med-tech-service", "media", "media-file", "mesh-applications", "metrics", "metrics-advisor", "microsoft-defender-easm", "microsoft-defender-for-cloud", "microsoft-defender-for-io-t", "microsoft-dev-box", "mindaro", "mission-landing-zone", "mobile", "mobile-engagement", "mobile-networks", "modular-data-center", "module", "monitor", "monitor-health-models", "multi-tenancy", "multifactor-authentication", "my-customers", "nat", "network-foundation-hub", "network-interfaces", "network-managers", "network-security-groups", "network-security-hub", "network-security-perimeters", "network-watcher", "notification-hub-namespaces", "notification-hubs", "offers", "on-premises-data-gateways", "open-supply-chain-platform", "operation-log-classic", "oracle-database", "os-images-classic", "osconfig", "outbound-connection", "partner-namespace", "partner-registration", "partner-topic", "peering-service", "peerings", "personalizers", "planetary-computer-pro", "plans", "policy", "power", "power-bi-embedded", "power-platform", "power-up", "powershell", "preview-features", "private-endpoints", "private-link", "private-link-service", "private-link-services", "process-explorer", "production-ready-database", "promethus", "proximity-placement-groups", "public-ip-addresses", "public-ip-addresses-classic", "public-ip-prefixes", "qn-a-makers", "quickstart-center", "recent", "recovery-services-vaults", "region-management", "relays", "remote-rendering", "reservations", "reserved-capacity", "reserved-ip-addresses-classic", "resource-explorer", "resource-graph-explorer", "resource-group-list", "resource-groups", "resource-guard", "resource-linked", "resource-management-private-link", "resource-mover", "resources-provider", "restore-points", "restore-points-collections", "route-filters", "route-tables", "rtos", "savings-plans", "scheduler", "scheduler-job-collections", "scvmm-management-servers", "search", "search-grid", "security", "security-baselines", "send-grid-accounts", "server-farm", "serverless-search", "service-catalog-mad", "service-endpoint-policies", "service-fabric-clusters", "service-group-relationships", "service-groups", "service-health", "service-providers", "shared-image-galleries", "signal-r", "software-as-a-service", "software-updates", "solutions", "sonic-dash", "spatial-anchor-accounts", "speech-services", "spot-vm", "spot-vmss", "sql-data-warehouses", "sql-database", "sql-database-fleet-manager", "sql-elastic-pools", "sql-managed-instance", "sql-server", "sql-server-registries", "ssd", "ssh-keys", "ssis-lift-and-shift-ir", "stack-hci-premium", "static-apps", "stor-simple-data-managers", "stor-simple-device-managers", "storage-accounts", "storage-accounts-classic", "storage-actions", "storage-azure-files", "storage-container", "storage-explorer", "storage-functions", "storage-hubs", "storage-queue", "storage-sync-services", "stream-analytics-jobs", "subnet", "subscriptions", "system-topic", "table", "tag", "tags", "targets-management", "template-specs", "templates", "tenant-properties", "tenant-status", "test-base", "tfs-vc-repository", "time-series-data-sets", "time-series-insights-access-policies", "time-series-insights-environments", "time-series-insights-event-sources", "toolbox", "toolchain-orchestrator", "traffic-manager-profiles", "translator-text", "troubleshoot", "universal-print", "update-management-center", "updates", "user-privacy", "user-settings", "user-subscriptions", "users", "verifiable-credentials", "verification-as-a-service", "versions", "video-analyzers", "virtual-clusters", "virtual-enclaves", "virtual-instance-for-sap", "virtual-machine", "virtual-machines-classic", "virtual-network-gateways", "virtual-networks", "virtual-networks-classic", "virtual-router", "virtual-visits-builder", "virtual-wan-hub", "virtual-wans", "vm-app-definitions", "vm-app-versions", "vm-image-version", "vm-images-classic", "vm-scale-sets", "vpnclient-windows", "wac", "wac-installer", "web-app-database", "web-application-firewall-policies-waf", "web-jobs", "web-slots", "web-test", "website-power", "website-staging", "windows-notification-services", "windows10-core-services", "workbooks", "worker-container-app", "workflow", "workload-orchestration", "workspace-gateway", "workspaces"], "gcp": ["access-context-manager", "administration", "advanced-agent-modeling", "advanced-solutions-lab", "agent-assist", "ai-hub", "ai-platform", "ai-platform-unified", "analytics-hub", "anthos", "anthos-config-management", "anthos-service-mesh", "api", "api-analytics", "api-monetization", "apigee-api-platform", "apigee-sense", "app-engine", "artifact-registry", "asset-inventory", "assured-workloads", "auto-ml", "auto-ml-natural-language", "auto-ml-tables", "auto-ml-translation", "auto-ml-video-intelligence", "auto-ml-vision", "bare-metal-solutions", "batch", "beyondcorp", "big-query", "bigtable", "billing", "binary-authorization", "catalog", "certificate-authority-service", "certificate-manager", "cloud-api-gateway", "cloud-apis", "cloud-armor", "cloud-asset-inventory", "cloud-audit-logs", "cloud-build", "cloud-cdn", "cloud-code", "cloud-composer", "cloud-data-fusion", "cloud-deploy", "cloud-deployment-manager", "cloud-dns", "cloud-domains", "cloud-ekm", "cloud-endpoints", "cloud-external-ip-addresses", "cloud-firewall-rules", "cloud-for-marketing", "cloud-functions", "cloud-generic", "cloud-gpu", "cloud-healthcare-api", "cloud-healthcare-marketplace", "cloud-hsm", "cloud-ids", "cloud-inference-api", "cloud-interconnect", "cloud-jobs-api", "cloud-load-balancing", "cloud-logging", "cloud-media-edge", "cloud-monitoring", "cloud-nat", "cloud-natural-language-api", "cloud-network", "cloud-ops", "cloud-optimization-ai", "cloud-optimization-ai-fleet-routing-api", "cloud-router", "cloud-routes", "cloud-run", "cloud-run-for-anthos", "cloud-scheduler", "cloud-security-scanner", "cloud-shell", "cloud-spanner", "cloud-sql", "cloud-storage", "cloud-tasks", "cloud-test-lab", "cloud-tpu", "cloud-translation-api", "cloud-vision-api", "cloud-vpn", "compute-engine", "configuration-management", "connectivity-test", "connectors", "contact-center-ai", "container-optimized-os", "container-registry", "data-catalog", "data-labeling", "data-layers", "data-loss-prevention-api", "data-qn-a", "data-studio", "data-transfer", "database-migration-service", "dataflow", "datalab", "dataplex", "datapol", "dataprep", "dataproc", "dataproc-metastore", "datashare", "datastore", "datastream", "debugger", "developer-portal", "dialogflow", "dialogflow-cx", "dialogflow-insights", "document-ai", "early-access-center", "error-reporting", "eventarc", "filestore", "financial-services-marketplace", "firestore", "fleet-engine", "free-trial", "game-servers", "gce-systems-management", "genomics", "gke-on-prem", "google-cloud-marketplace", "google-kubernetes-engine", "google-maps-platform", "healthcare-nlp-api", "home", "identity-and-access-management", "identity-aware-proxy", "identity-platform", "iot-core", "iot-edge", "key-access-justifications", "key-management-service", "kuberun", "launcher", "local-ssd", "looker", "managed-service-for-microsoft-active-directory", "media-translation-api", "memorystore", "migrate-for-anthos", "migrate-for-compute-engine", "my-cloud", "network-connectivity-center", "network-intelligence-center", "network-security", "network-tiers", "network-topology", "onboarding", "os-configuration-management", "os-inventory-management", "os-patch-management", "partner-interconnect", "partner-portal", "performance-dashboard", "permissions", "persistent-disk", "phishing-protection", "policy-analyzer", "premium-network-tier", "private-connectivity", "private-service-connect", "producer-portal", "profiler", "project", "pub-sub", "quantum-engine", "quotas", "real-world-insights", "recommendations-ai", "release-notes", "retail-api", "risk-manager", "runtime-config", "secret-manager", "security", "security-command-center", "security-health-advisor", "security-key-enforcement", "service-discovery", "speech-to-text", "stackdriver", "standard-network-tier", "stream-suite", "support", "tensorflow-enterprise", "text-to-speech", "tools-for-powershell", "trace", "traffic-director", "transfer", "transfer-appliance", "user-preferences", "vertex-ai", "video-intelligence-api", "virtual-private-cloud", "visual-inspection", "vmware-engine", "web-risk", "web-security-scanner", "workflows", "workload-identity-pool"], "tech": ["100tb", "500px", "aarch64", "active-campaign", "active-campaign-icon", "adobe", "adobe-after-effects", "adobe-animate", "adobe-dreamweaver", "adobe-icon", "adobe-illustrator", "adobe-incopy", "adobe-indesign", "adobe-lightroom", "adobe-photoshop", "adobe-premiere", "adobe-premiere-pro", "adobe-xd", "adonis-js", "adonisjs-icon", "adroll", "adyen", "aerogear", "aerospike", "aerospike-icon", "after-effects", "aha", "airbnb", "airbnb-icon", "airbrake", "airflow", "airflow-icon", "airtable", "aix", "akamai", "akka", "alfresco", "algolia", "alpinejs", "alpinejs-icon", "altair", "amazon-chime", "amazon-connect", "amazon-web-services", "amd", "amex", "amex-digital", "amp", "amp-icon", "ampersand", "amplication", "amplication-icon", "amplitude", "amplitude-icon", "anaconda", "analog", "android", "android-icon", "android-studio", "android-vertical", "angellist", "angular", "angular-icon", "angular-js", "ansible", "ant-design", "anthropic", "anthropic-icon", "apache", "apache-camel", "apache-cloudstack", "apache-flink", "apache-flink-icon", "apache-spark", "apache-superset", "apache-superset-icon", "apiary", "apidog", "apidog-icon", "apl", "apollostack", "apostrophe", "appbaseio", "appbaseio-icon", "appcelerator", "appcenter", "appcenter-icon", "appcircle", "appcircle-icon", "appcode", "appdynamics", "appdynamics-icon", "appium", "apple", "apple-app-store", "apple-pay", "apple-safari", "applitools", "applitools-icon", "appsignal", "appsignal-icon", "apptentive", "appveyor", "appwrite", "appwrite-icon", "arangodb", "arangodb-icon", "arc", "architect", "architect-icon", "archlinux", "arduino", "argo", "argo-icon", "argocd", "arm", "armory", "armory-icon", "asana", "asana-icon", "asciidoctor", "assembla", "assembla-icon", "astro", "astro-icon", "astronomer", "async-api", "async-api-icon", "atlassian", "atom", "atom-icon", "atomic", "atomic-icon", "atomicojs", "atomicojs-icon", "aurelia", "aurora", "auth0", "auth0-icon", "authy", "autodesk-maya", "autodesk-shot-grid", "autoit", "autoprefixer", "ava", "awesome", "awk", "aws", "aws-amplify", "aws-api-gateway", "aws-app-mesh", "aws-appflow", "aws-appsync", "aws-athena", "aws-aurora", "aws-backup", "aws-batch", "aws-certificate-manager", "aws-cloudformation", "aws-cloudfront", "aws-cloudsearch", "aws-cloudtrail", "aws-cloudwatch", "aws-codebuild", "aws-codecommit", "aws-codedeploy", "aws-codepipeline", "aws-codestar", "aws-cognito", "aws-config", "aws-documentdb", "aws-dynamodb", "aws-ec2", "aws-ecs", "aws-eks", "aws-elastic-beanstalk", "aws-elasticache", "aws-elb", "aws-eventbridge", "aws-fargate", "aws-glacier", "aws-glue", "aws-iam", "aws-keyspaces", "aws-kinesis", "aws-kms", "aws-lake-formation", "aws-lambda", "aws-lightsail", "aws-mq", "aws-msk", "aws-neptune", "aws-open-search", "aws-opsworks", "aws-quicksight", "aws-rds", "aws-redshift", "aws-route53", "aws-s3", "aws-secrets-manager", "aws-ses", "aws-shield", "aws-sns", "aws-sqs", "aws-step-functions", "aws-systems-manager", "aws-timestream", "aws-vpc", "aws-waf", "aws-xray", "axios", "azios", "azure", "azure-devops", "azure-sql-database", "babel", "backbone", "backbone-icon", "backbone-js", "backerkit", "baker-street", "balena", "ballerina", "bamboo", "basecamp", "basecamp-icon", "basekit", "baseline", "bash", "bash-icon", "batch", "beats", "behance", "bem", "bem-2", "bigpanda", "bing", "biomejs", "biomejs-icon", "bitbar", "bitbucket", "bitcoin", "bitnami", "bitrise", "bitrise-icon", "blender", "blitzjs", "blitzjs-icon", "blocs", "blogger", "blossom", "blueprint", "bluesky", "bluetooth", "booqable", "booqable-icon", "bootstrap", "bosun", "botanalytics", "bourbon", "bower", "box", "brackets", "brainjs", "branch", "branch-icon", "brandfolder", "brandfolder-icon", "brave", "braze", "braze-icon", "broadcom", "broadcom-icon", "broccoli", "brotli", "browserify", "browserify-icon", "browserling", "browserslist", "browserstack", "browsersync", "brunch", "bubble", "bubble-icon", "buck", "buddy", "buffer", "bugherd", "bugherd-icon", "bugsee", "bugsnag", "builder-io", "builder-io-icon", "buildkite", "buildkite-icon", "bulma", "bun", "bunny-net", "bunny-net-icon", "c", "cachet", "cairo-graphics", "cake-php", "cakephp-icon", "calibre", "calibre-icon", "campaignmonitor", "campaignmonitor-icon", "canjs", "canva", "capacitor", "capacitorjs", "capacitorjs-icon", "capistrano", "carbide", "cardano", "cardano-icon", "cassandra", "cent-os", "centos-icon", "certbot", "ceylon", "chai", "chalk", "chargebee", "chargebee-icon", "chartjs", "chef", "chevereto", "chroma", "chromatic", "chromatic-icon", "chrome", "chrome-web-store", "cinder", "circle-ci", "cirrus", "cirrus-ci", "clarity", "claude", "claude-icon", "clio-lang", "clion", "cljs", "clojure", "clojure-script", "close", "cloud9", "cloudacademy", "cloudacademy-icon", "cloudcraft", "cloudflare", "cloudflare-icon", "cloudflare-workers", "cloudflare-workers-icon", "cloudinary", "cloudinary-icon", "cloudlinux", "cmake", "cobalt", "cockpit", "cocoapods", "coda", "coda-icon", "codacy", "code-igniter", "code-pen", "codeac", "codebase", "codebeat", "codecademy", "codeception", "codeclimate", "codeclimate-icon", "codecov", "codecov-icon", "codefactor", "codefactor-icon", "codeigniter-icon", "codepen-icon", "codersrank", "codersrank-icon", "coderwall", "codesandbox", "codesandbox-icon", "codesee", "codesee-icon", "codio", "codium", "codium-icon", "coffee-script", "commitizen", "compass", "componentkit", "compose", "compose-multiplatform", "composer", "conan-io", "concourse", "concretecms", "concretecms-icon", "conda", "confluence", "consul", "contao", "contentful", "convox", "convox-icon", "copyleft", "copyleft-pirate", "corda", "cordova", "cosmosdb", "couchbase", "couchdb", "couchdb-icon", "coursera", "coveralls", "cpanel", "cplusplus", "craftcms", "crashlytics", "crateio", "create-react-app", "createjs", "crossplane", "crossplane-icon", "crucible", "crystal", "csharp", "css3", "css3-official", "cssnext", "cube", "cube-icon", "cucumber", "curl", "customerio", "customerio-icon", "cyclejs", "cypress", "cypress-icon", "d3", "d3js", "dailydev", "dailydev-icon", "daisy-ui", "daisy-ui-icon", "danfo", "dart", "dashlane", "dashlane-icon", "data-grip", "data-spell", "data-station", "database-labs", "datadog", "datadog-icon", "datasette", "datasette-icon", "datocms", "datocms-icon", "dbeaver", "dbt", "dbt-icon", "dcos", "dcos-icon", "debian", "delighted", "delighted-icon", "deno", "dependabot", "deployhq", "deployhq-icon", "derby", "descript", "descript-icon", "designernews", "deviantart", "deviantart-icon", "devicon", "dgraph", "dgraph-icon", "dialogflow", "digital-ocean", "digital-ocean-icon", "dimer", "dinersclub", "discord", "discord-icon", "discord-js", "discourse", "discourse-icon", "discover", "disqus", "django", "django-icon", "django-rest", "dockbit", "docker", "docker-icon", "doctrine", "docusaurus", "dojo", "dojo-icon", "dojo-toolkit", "dolt", "dotnet", "dovetail", "dovetail-icon", "dreamhost", "dribbble", "dribbble-icon", "drift", "drip", "drizzle", "drizzle-icon", "drone", "drone-icon", "drools", "drools-icon", "dropbox", "dropmark", "dropwizard", "dropzone", "drupal", "drupal-icon", "duckduckgo", "dynatrace", "dynatrace-icon", "dyndns", "ebanx", "eclipse", "eclipse-ceylon", "eclipse-icon", "eclipse-ide", "eclipse-vert-x", "ecma", "edgedb", "edgio", "edgio-icon", "editorconfig", "effect", "effect-icon", "effector", "egghead", "elasticbeats", "elasticpath", "elasticpath-icon", "elasticsearch", "electron", "element", "elemental-ui", "elementary", "eleventy", "eleventy-11ty", "elixir", "ello", "elm", "elm-classic", "elo", "emacs", "emacs-classic", "embedded-c", "embedly", "ember", "ember-js", "ember-tomster", "emmet", "enact", "engine-yard", "engine-yard-icon", "envato", "envoy", "envoy-icon", "envoyer", "eraser", "eraser-icon", "erlang", "esbuild", "esdoc", "eslint", "eslint-old", "eta", "eta-icon", "etcd", "ethereum", "ethereum-color", "ethers", "ethnio", "eventbrite", "eventbrite-icon", "eventsentry", "evergreen", "evergreen-icon", "expo", "expo-icon", "express", "fabric", "facebook", "faker", "falcor", "fast-api", "fastapi-icon", "fastify", "fastify-icon", "fastlane", "fastly", "fauna", "fauna-icon", "feathers", "feathersjs", "fedora", "fetch", "ffmpeg", "ffmpeg-icon", "figma", "file-zilla", "firebase", "firebase-icon", "firefox", "flannel", "flarum", "flask", "flat-ui", "flattr", "flattr-icon", "fleep", "flickr", "flickr-icon", "flight", "floodio", "flow", "flowxo", "floydhub", "flutter", "flux", "fluxxor", "fly", "fly-icon", "fogbugz", "fogbugz-icon", "fomo", "fomo-icon", "font-awesome", "forestadmin", "forestadmin-icon", "forever", "formkeep", "fortran", "foundation", "foundationdb", "foundationdb-icon", "framer", "framework7", "framework7-icon", "freebsd", "freedcamp", "freedcamp-icon", "freedomdefined", "fresh", "frontapp", "fsharp", "fuchsia", "galliumos", "game-analytics", "game-analytics-icon", "ganache", "ganache-icon", "gatling", "gatsby", "gazebo", "gcc", "geekbot", "geetest", "geetest-icon", "gentoo", "getyourguide", "ghost", "giantswarm", "gimp", "gin", "git", "git-icon", "gitboard", "gitbook", "github", "github-actions", "github-codespaces", "github-copilot", "github-icon", "github-octocat", "gitkraken", "gitlab", "gitlab-icon", "gitpod", "gitter", "gitup", "glamorous", "glamorous-icon", "gleam", "glimmerjs", "glint", "glitch", "glitch-icon", "gnome", "gnome-icon", "gnu", "gnu-emacs", "gnu-net", "gnupg", "gnupg-icon", "go", "go-land", "gocd", "godot", "godot-engine", "godot-icon", "gohorse", "google", "google-360suite", "google-admob", "google-ads", "google-adsense", "google-analytics", "google-bard", "google-bard-icon", "google-calendar", "google-cloud", "google-cloud-functions", "google-cloud-run", "google-data-studio", "google-developers", "google-domains", "google-domains-icon", "google-drive", "google-fit", "google-gemini", "google-gmail", "google-home", "google-icon", "google-keep", "google-maps", "google-marketing-platform", "google-meet", "google-one", "google-optimize", "google-palm", "google-pay", "google-photos", "google-play", "google-play-console", "google-play-console-icon", "google-play-icon", "google-search-console", "google-tag-manager", "google-workspace", "gopher", "gradio", "gradio-icon", "gradle", "grafana", "grails", "grammarly", "grammarly-icon", "graphene", "graphql", "grav", "gravatar", "gravatar-icon", "graylog", "graylog-icon", "greensock", "greensock-icon", "gridsome", "gridsome-icon", "grommet", "groovehq", "groovy", "grove", "growth-book", "growth-book-icon", "grpc", "grunt", "gruntjs", "gulp", "gulpjs", "gunicorn", "gunjs", "gusto", "gwt", "hack", "hacker-one", "hadoop", "haiku", "haiku-icon", "haml", "hanami", "handlebars", "hapi", "hardhat", "hardhat-icon", "harness", "harness-icon", "harvester", "hashicorp", "hashicorp-icon", "hashicorp-vault", "hashnode", "hashnode-icon", "haskell", "haskell-icon", "hasura", "hasura-icon", "haxe", "haxl", "hbase", "hcaptcha", "hcaptcha-icon", "headlessui", "headlessui-icon", "heap", "heap-icon", "helm", "helpscout", "helpscout-icon", "hermes", "heroku", "heroku-icon", "heroku-redis", "hexo", "hhvm", "hibernate", "highcharts", "hipercard", "homebrew", "hono", "hookstate", "hootsuite", "hootsuite-icon", "hosted-graphite", "hostgator", "hostgator-icon", "hotjar", "hotjar-icon", "houndci", "html5", "html5-boilerplate", "htmx", "htmx-icon", "httpie", "httpie-icon", "hubspot", "hugging-face", "hugging-face-icon", "huggy", "hugo", "humongous", "hyper", "hyperapp", "ibm", "ibm-spss-statistics", "ie10", "ieee", "ietf", "ifttt", "imagemin", "imba", "imba-icon", "immer", "immer-icon", "immutable", "impala", "importio", "importio-icon", "incident", "incident-icon", "infer", "inferno", "influxdb", "influxdb-icon", "ink", "inkscape", "insomnia", "instagram", "instagram-icon", "intel", "intellij-idea", "intercom", "intercom-icon", "internet-computer", "internet-computer-icon", "internetexplorer", "invision", "invision-icon", "ionic", "ionic-icon", "ios", "iron", "iron-icon", "itsalive", "itsalive-icon", "jade", "jaeger", "jamstack", "jamstack-icon", "jasmine", "java", "javascript", "jcb", "jeet", "jekyll", "jenkins", "jest", "jetbrains", "jetbrains-icon", "jetbrains-space", "jetbrains-space-icon", "jfrog", "jhipster", "jhipster-icon", "jira", "jira-align", "joomla", "jotai", "jquery", "jquery-mobile", "jruby", "jsbin", "jsdelivr", "jsdom", "jsfiddle", "json", "json-ld", "json-schema", "json-schema-icon", "jspm", "jss", "juju", "jule", "julia", "junit", "jupyter", "jwt", "jwt-icon", "k3os", "k3s", "kafka", "kafka-icon", "kaggle", "kaios", "kallithea", "karate", "karma", "katalon", "katalon-icon", "kde", "keen", "kemal", "keras", "keycdn", "keycdn-icon", "keydb", "keydb-icon", "keystonejs", "khan-academy", "khan-academy-icon", "kibana", "kickstarter", "kickstarter-icon", "kinto", "kinto-icon", "kirby", "kirby-icon", "knex", "knex-js", "knockout", "koa", "kong", "kong-icon", "kops", "koreio", "kotlin", "kotlin-icon", "kraken", "krakenjs", "ktor", "ktor-icon", "kubernetes", "kustomer", "labview", "languagetool", "laravel", "lastfm", "lateral", "lateral-icon", "latex", "launchdarkly", "launchdarkly-icon", "launchrock", "leaflet", "leankit", "leankit-icon", "lerna", "less", "less-js", "lets-cloud", "letsencrypt", "leveldb", "lexical", "lexical-icon", "liftweb", "lighthouse", "lightstep", "lightstep-icon", "lighttpd", "linear", "linear-icon", "linkedin", "linkedin-icon", "linkerd", "linode", "linux", "linux-mint", "linux-tux", "liquibase", "lit", "lit-icon", "litmus", "livewire", "llvm", "loader", "lodash", "logentries", "logstash", "lookback", "looker", "looker-icon", "loom", "loom-icon", "loopback", "loopback-icon", "losant", "lua", "lucene", "lucene-net", "lumen", "mac-os", "madge", "maestro", "mageia", "magento", "mailchimp", "mailchimp-freddie", "maildeveloper", "mailgun", "mailgun-icon", "mailjet", "mailjet-icon", "malinajs", "manjaro", "mantine", "mantine-icon", "mapbox", "mapbox-icon", "maps-me", "mapzen", "mapzen-icon", "mariadb", "mariadb-icon", "marionette", "markdown", "marko", "marvel", "mastercard", "mastodon", "mastodon-icon", "material-ui", "materialize", "materializecss", "matlab", "matomo", "matomo-icon", "matplotlib", "matplotlib-icon", "matter", "matter-icon", "mattermost", "mattermost-icon", "mautic", "mautic-icon", "maven", "mdn", "mdx", "medium", "medium-icon", "medusa", "medusa-icon", "meilisearch", "memcached", "memgraph", "mention", "mercurial", "mesos", "messenger", "meta", "meta-icon", "metabase", "metamask", "metamask-icon", "meteor", "meteor-icon", "meteor-js", "micro", "micro-icon", "micro-python", "microcosm", "micron", "micron-icon", "microsoft", "microsoft-azure", "microsoft-edge", "microsoft-icon", "microsoft-onedrive", "microsoft-power-bi", "microsoft-sql-server", "microsoft-teams", "microsoft-windows", "microsoft-windows-icon", "mida", "mida-icon", "middleman", "midjourney", "milligram", "million", "million-icon", "milvus", "milvus-icon", "mindsdb", "mindsdb-icon", "minitab", "mint-lang", "mio", "miro", "miro-icon", "mist", "mistral-ai", "mistral-ai-icon", "mithril", "mixmax", "mixpanel", "mlab", "mob-x", "mocha", "mockflow", "mockflow-icon", "modernizr", "modx", "modx-icon", "moleculer", "momentjs", "monday", "monday-icon", "monero", "mongodb", "mongodb-icon", "mongoose-js", "mono", "moodle", "moon", "mootools", "morpheus", "morpheus-icon", "mozilla", "mparticle", "mparticle-icon", "mps", "mps-icon", "ms-dos", "msw", "msw-icon", "multipass", "mysql", "mysql-icon", "naiveui", "namecheap", "nano", "nanonets", "nasm", "nativescript", "nats", "nats-icon", "neat", "neo4j", "neon", "neon-icon", "neovim", "nerog", "nestjs", "net", "net-core", "netbeans", "netflix", "netflix-icon", "netlify", "netlify-icon", "network-x", "neverinstall", "neverinstall-icon", "new-relic", "new-relic-icon", "new4j", "nextjs", "nextjs-icon", "nginx", "ngrok", "nhibernate", "nhost", "nhost-icon", "nightwatch", "nim", "nim-lang", "nimble", "nix", "nocodb", "nodal", "node-sass", "nodebots", "nodejs", "nodejs-icon", "nodejs-icon-alt", "nodemon", "nodeos", "nodewebkit", "nomad", "nomad-icon", "notion", "notion-icon", "noysi", "npm", "npm-icon", "nuclide", "nuget", "num-py", "nuxt", "nuxt-icon", "nuxt-js", "nvidia", "nvm", "nx", "oauth", "objective-c", "observablehq", "obsidian", "obsidian-icon", "ocaml", "octodns", "octopus-deploy", "oh-my-zsh", "okta", "okta-icon", "olark", "onesignal", "open-al", "open-api", "open-cl", "open-cv", "open-gl", "open-graph", "open-stack", "open-suse", "open-telemetry", "open-zeppelin", "open-zeppelin-icon", "openai", "openai-icon", "openapi-icon", "opencart", "opencollective", "openframeworks", "openjs-foundation", "openjs-foundation-icon", "openlayers", "opensearch", "opensearch-icon", "openshift", "opensource", "openstack-icon", "opentelemetry-icon", "opera", "opsgenie", "optimizely", "optimizely-icon", "oracle", "oreilly", "origami", "origin", "oshw", "osquery", "overloop", "overloop-icon", "p5js", "packer", "pagekit", "pagekite", "pagerduty", "pagerduty-icon", "panda", "pandacss", "pandacss-icon", "pandas", "pandas-icon", "parcel", "parcel-icon", "parse", "parsehub", "partytown", "partytown-icon", "passbolt", "passbolt-icon", "passport", "patreon", "payload", "paypal", "peer5", "pepperoni", "percona", "percy", "percy-icon", "perf-rocks", "perl", "perplexity", "perplexity-icon", "pf-sense", "phalcon", "phoenix", "phoenix-framework", "photon-engine", "php", "php-alt", "php-storm", "pinecone", "pinecone-icon", "pinia", "pinterest", "pipedream", "pipedrive", "pipefy", "pivotal-tracker", "pixijs", "pkg", "planetscale", "planless", "planless-icon", "plasmic", "plastic-scm", "platformio", "play", "playwright", "playwrite", "ploty", "pluralsight", "pluralsight-icon", "pm2", "pm2-icon", "pnpm", "pocket-base", "podman", "poeditor", "polygon", "polymer", "portainer", "postcss", "postgraphile", "postgresql", "posthog", "posthog-icon", "postman", "postman-icon", "pouchdb", "powershell", "preact", "precursor", "prerender", "prerender-icon", "prestashop", "prestashop-icon", "presto", "presto-icon", "prettier", "prisma", "prismic", "prismic-icon", "processing", "processwire", "processwire-icon", "productboard", "productboard-icon", "producthunt", "progress", "prometheus", "promises", "proofy", "protoio", "protonet", "protractor", "prott", "pug", "pulumi", "pulumi-icon", "pumpkindb", "puppet", "puppet-icon", "puppeteer", "purescript", "purescript-icon", "pushbullet", "pusher", "pusher-icon", "putty", "pwa", "pycharm", "pypi", "pyscript", "pytest", "python", "python-poetry", "pytorch", "pytorch-icon", "pyup", "q", "qdrant", "qdrant-icon", "qlik", "qodana", "qt", "qualcomm", "quarkus", "quarkus-icon", "quasar", "quay", "quobyte", "quora", "qwik", "qwik-icon", "r", "r-lang", "rabbitmq", "rabbitmq-icon", "rackspace", "rackspace-icon", "rails", "ramda", "raml", "rancher", "rancher-icon", "raphael", "raspberry-pi", "rax", "reach", "react", "react-bootstrap", "react-query", "react-query-icon", "react-router", "react-spring", "react-styleguidist", "reactivex", "realm", "reapp", "reasonml", "reasonml-icon", "recaptcha", "recoil", "recoil-icon", "red-cube-s-epic-compiler-thingy-programming-re-ct", "reddit", "reddit-icon", "redhat", "redhat-icon", "redis", "redsmin", "redux", "redux-observable", "redux-saga", "redwoodjs", "reindex", "relay", "release", "remix", "remix-icon", "ren-py", "renovatebot", "replay", "replay-icon", "replit", "replit-icon", "require", "rescript", "rescript-icon", "rest-li", "rethinkdb", "retool", "retool-icon", "riak", "rider", "riot", "risingwave", "risingwave-icon", "robot-operating-system-ros", "rocket-chat", "rocket-chat-icon", "rocksdb", "rocky-linux", "rocky-linux-icon", "rollbar", "rollbar-icon", "rollupjs", "rome", "rome-icon", "ros", "rsa", "rsmq", "rspec", "rstudio", "rubocop", "ruby", "ruby-mine", "ruby-on-rails", "rubygems", "rum", "runscope", "rush", "rush-icon", "rust", "rxdb", "safari", "sagui", "sails", "salesforce", "sameroom", "samsung", "sanity", "sap", "sass", "sass-doc", "saucelabs", "scala", "scaledrone", "scalingo", "scribd", "scribd-icon", "sdl", "seaborn", "seaborn-icon", "section", "section-icon", "segment", "segment-icon", "selenium", "sema-software", "semantic-release", "semantic-ui", "semaphoreci", "sencha", "sendgrid", "sendgrid-icon", "seneca", "sensu", "sensu-icon", "sentry", "sentry-icon", "sequelize", "serverless", "sherlock", "sherlock-icon", "shields", "shipit", "shogun", "shopify", "shopware", "shortcut", "shortcut-icon", "sidekiq", "sidekiq-icon", "signal", "sigstore", "sigstore-icon", "sinatra", "singlestore", "singlestore-icon", "sitepoint", "sk-hynix", "skaffolder", "sketch", "skylight", "skype", "slack", "slack-icon", "slides", "slidev", "slim", "smartling", "smashingmagazine", "snap-svg", "snaplet", "snaplet-icon", "snowflake", "snowflake-icon", "snowpack", "snyk", "socket-io", "solarwinds", "solid", "solidity", "solidjs", "solidjs-icon", "solr", "sonarcloud", "sonarcloud-icon", "sonarlint", "sonarlint-icon", "sonarqube", "soundcloud", "sourcegraph", "sourcetree", "spark", "sparkpost", "speakerdeck", "speedcurve", "spidermonkey", "spidermonkey-icon", "spinnaker", "splunk", "spotify", "spotify-icon", "spree", "spring", "spring-icon", "sql-developer", "sqlalchemy", "sqlite", "square", "squarespace", "ssh", "sst", "sst-icon", "stability-ai", "stability-ai-icon", "stackbit", "stackbit-icon", "stackblitz", "stackblitz-icon", "stackoverflow", "stackoverflow-icon", "stackshare", "stata", "stately", "stately-icon", "statuspage", "stdlib", "stdlib-icon", "steam", "stenciljs", "stenciljs-icon", "stetho", "stickermule", "stigg", "stigg-icon", "stimulus", "stimulus-icon", "stitch", "stoplight", "storyblocks", "storyblocks-icon", "storyblok", "storyblok-icon", "storybook", "storybook-icon", "strapi", "strapi-icon", "streamlit", "strider", "stripe", "struts", "styleci", "stylefmt", "stylelint", "stylis", "stylus", "stytch", "sublimetext", "sublimetext-icon", "subversion", "sugarss", "supabase", "supabase-icon", "supertokens", "supertokens-icon", "surge", "surrealdb", "surrealdb-icon", "survicate", "survicate-icon", "suse", "susy", "svelte", "svelte-icon", "svelte-kit", "svg", "svgator", "swagger", "swc", "swift", "swiftype", "swimm", "swr", "symfony", "sysdig", "sysdig-icon", "t3", "tableau", "tableau-icon", "taiga", "tailwindcss", "tailwindcss-icon", "tapcart", "tapcart-icon", "taskade", "taskade-icon", "tastejs", "tauri", "tealium", "teamcity", "teamgrid", "teamwork", "teamwork-icon", "telegram", "tensorflow", "terminal", "terraform", "terraform-icon", "terser", "terser-icon", "testcafe", "testing-library", "testlodge", "tex", "the-algorithms", "threejs", "thymeleaf", "thymeleaf-icon", "tidal", "tidal-icon", "tiktok", "tiktok-icon", "titanium-sdk", "tnw", "todoist", "todoist-icon", "todomvc", "tomcat", "toml", "tor", "tor-browser", "tortoise-git", "tower", "traackr", "trac", "traefik-mesh", "traefik-proxy", "travis-ci", "travis-ci-monochrome", "treasuredata", "treasuredata-icon", "treehouse", "treehouse-icon", "trello", "trpc", "truffle", "truffle-icon", "tsmc", "tsnode", "tsuru", "tumblr", "tumblr-icon", "tunein", "tuple", "turbopack", "turbopack-icon", "turborepo", "turborepo-icon", "turret", "twilio", "twilio-icon", "twitch", "twitter", "typeform", "typeform-icon", "typeorm", "typescript", "typescript-icon", "typescript-icon-round", "typesense", "typesense-icon", "typo3", "typo3-icon", "ubuntu", "udacity", "udacity-icon", "udemy", "udemy-icon", "uikit", "uml", "umu", "unbounce", "unbounce-icon", "undertow", "unionpay", "unitjs", "unito", "unito-icon", "unity", "unix", "unjs", "unocss", "unrealengine", "unrealengine-icon", "upcase", "upstash", "upstash-icon", "upwork", "user-testing", "user-testing-icon", "uservoice", "uservoice-icon", "uwsgi", "v8", "v8-ignition", "v8-turbofan", "vaadin", "vaddy", "vagrant", "vagrant-icon", "vala", "vault", "vault-icon", "vector", "vercel", "vercel-icon", "verdaccio", "verdaccio-icon", "vernemq", "veutify", "vim", "vimeo", "vimeo-icon", "visa", "visaelectron", "visual-studio", "visual-studio-code", "vite", "vitejs", "vitess", "vitest", "vivaldi", "vivaldi-icon", "vlang", "vmware", "void", "volar", "vorejs", "vscode", "vsphere", "vue", "vue-storefront", "vuetifyjs", "vueuse", "vulkan", "vultr", "vultr-icon", "vwo", "vyper", "w3c", "waffle", "waffle-icon", "wagtail", "wakatime", "walkme", "watchman", "waypoint", "waypoint-icon", "wayscript", "wayscript-icon", "wearos", "weave", "web-dev", "web-dev-icon", "web3js", "webassembly", "webcomponents", "webdriverio", "webflow", "webgpu", "webhint", "webhint-icon", "webhooks", "webix", "webix-icon", "webkit", "weblate", "webmin", "webpack", "webplatform", "webrtc", "websocket", "webstorm", "webtorrent", "weebly", "whalar", "whalar-icon", "whatsapp", "whatsapp-icon", "whatsapp-monochrome-icon", "whatwg", "wicket", "wicket-icon", "wifi", "wildfly", "windi-css", "windows8", "windows11", "winglang", "winglang-icon", "wire", "wix", "wmr", "woo-commerce", "woocommerce-icon", "woopra", "wordpress", "wordpress-icon", "wordpress-icon-alt", "workboard", "workos", "workos-icon", "workplace", "workplace-icon", "wpengine", "wufoo", "x", "xamarin", "xampp", "xata", "xata-icon", "xcart", "xcode", "xero", "xml", "xray-for-jira", "xstate", "xtend", "xwiki", "xwiki-icon", "yahoo", "yaml", "yammer", "yandex-ru", "yarn", "ycombinator", "yeoman", "yii", "yii-framework", "youtrack", "youtube", "youtube-icon", "yugabyte", "yugabyte-icon", "yuno-host", "zabbix", "zapier", "zend-framework", "zendesk", "zendesk-icon", "zenhub", "zenhub-icon", "zeplin", "zeroheight", "zeroheight-icon", "zig", "zod", "zoho", "zoom", "zoom-icon", "zorin-os", "zsh", "zube", "zulip", "zulip-icon", "zwave"] })]
5
5
  .flatMap(([group, names]) => names.map((name) => group + ':' + name));
6
6
  export const LibIcons = [
7
7
  'likec4lib {',
@@ -1,3 +1,9 @@
1
+ // SPDX-License-Identifier: MIT
2
+ //
3
+ // Copyright (c) 2023-2025 Denis Davydkov
4
+ // Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
5
+ //
6
+ // Portions of this file have been modified by NVIDIA CORPORATION & AFFILIATES.
1
7
  import { nonexhaustive } from '@likec4/core';
2
8
  import { AstUtils, DocumentState, GrammarUtils } from 'langium';
3
9
  import { filter, isEmpty, isTruthy, map, pipe } from 'remeda';
@@ -110,7 +116,12 @@ export class LikeC4DocumentSymbolProvider {
110
116
  name: astModel.name,
111
117
  range: cstModel.range,
112
118
  selectionRange: nameNode.range,
113
- children: astModel.elements.flatMap(e => this.getElementsSymbol(e)),
119
+ children: astModel.elements.flatMap(e => {
120
+ // Skip ExtendRelation nodes as they don't need symbols
121
+ if (ast.isExtendRelation(e))
122
+ return [];
123
+ return this.getElementsSymbol(e);
124
+ }),
114
125
  },
115
126
  ];
116
127
  }
@@ -1,6 +1,4 @@
1
1
  import { loggable } from '@likec4/log';
2
- import { error } from 'console';
3
- import { isError } from 'remeda';
4
2
  import { logger } from '../utils';
5
3
  import { StdioLikeC4MCPServer } from './StdioLikeC4MCPServer';
6
4
  import { StreamableLikeC4MCPServer } from './StreamableLikeC4MCPServer';
@@ -1,3 +1,9 @@
1
+ // SPDX-License-Identifier: MIT
2
+ //
3
+ // Copyright (c) 2023-2025 Denis Davydkov
4
+ // Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
5
+ //
6
+ // Portions of this file have been modified by NVIDIA CORPORATION & AFFILIATES.
1
7
  import { invariant } from '@likec4/core';
2
8
  import * as z from 'zod/v3';
3
9
  import { likec4Tool } from '../utils';
@@ -25,6 +31,7 @@ Output fields:
25
31
  - tags: string[] — Tags assigned to this entity
26
32
  - project: string — Project id
27
33
  - metadata: Record<string, string>
34
+ - links: Array<{ title: string|null, url: string, relative: string|null }> — external links associated with this deployment entity
28
35
  - shape: string — Rendered shape
29
36
  - color: string — Rendered color
30
37
  - children: string[] — Child deployment ids (empty for instances)
@@ -55,6 +62,7 @@ Example response (deployed instance):
55
62
  "tags": ["prod"],
56
63
  "project": "default",
57
64
  "metadata": {},
65
+ "links": [],
58
66
  "shape": "rectangle",
59
67
  "color": "#2F80ED",
60
68
  "children": [],
@@ -88,6 +96,11 @@ Example response (deployed instance):
88
96
  tags: z.array(z.string()),
89
97
  project: z.string(),
90
98
  metadata: z.record(z.union([z.string(), z.array(z.string())])),
99
+ links: z.array(z.object({
100
+ title: z.string().nullable().describe('Optional link title'),
101
+ url: z.string().describe('Link URL'),
102
+ relative: z.string().nullable().describe('Relative path (if URL is relative to workspace root)'),
103
+ })).describe('External links associated with this deployment entity'),
91
104
  shape: z.string(),
92
105
  color: z.string(),
93
106
  children: z.array(z.string()).describe('Children of this deployment node (Array of Deployment ids)'),
@@ -116,6 +129,11 @@ Example response (deployed instance):
116
129
  tags: [...element.tags],
117
130
  project: projectId,
118
131
  metadata: element.getMetadata(),
132
+ links: (element.links ?? []).map(link => ({
133
+ title: link.title ?? null,
134
+ url: link.url,
135
+ relative: link.relative ?? null,
136
+ })),
119
137
  shape: element.shape,
120
138
  color: element.color,
121
139
  children: element.isInstance() ? [] : [...element.children()].map(c => c.id),
@@ -1,3 +1,9 @@
1
+ // SPDX-License-Identifier: MIT
2
+ //
3
+ // Copyright (c) 2023-2025 Denis Davydkov
4
+ // Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
5
+ //
6
+ // Portions of this file have been modified by NVIDIA CORPORATION & AFFILIATES.
1
7
  import { invariant } from '@likec4/core';
2
8
  import * as z from 'zod/v3';
3
9
  import { likec4Tool } from '../utils';
@@ -21,6 +27,7 @@ Response (JSON object):
21
27
  - tags: string[] — assigned tags
22
28
  - project: string — project id this element belongs to
23
29
  - metadata: Record<string, string> — element metadata
30
+ - links: Array<{ title: string|null, url: string, relative: string|null }> — external links associated with this element
24
31
  - shape: string — rendered shape
25
32
  - color: string — rendered color
26
33
  - children: string[] — ids (FQNs) of direct child elements
@@ -52,6 +59,13 @@ Example response:
52
59
  "tags": ["public"],
53
60
  "project": "default",
54
61
  "metadata": { "owner": "web" },
62
+ "links": [
63
+ {
64
+ "title": "Documentation",
65
+ "url": "https://docs.example.com/frontend",
66
+ "relative": null
67
+ }
68
+ ],
55
69
  "shape": "rounded-rectangle",
56
70
  "color": "#2F80ED",
57
71
  "children": ["shop.frontend.auth"],
@@ -103,6 +117,11 @@ Example response:
103
117
  tags: z.array(z.string()),
104
118
  project: z.string(),
105
119
  metadata: z.record(z.union([z.string(), z.array(z.string())])),
120
+ links: z.array(z.object({
121
+ title: z.string().nullable().describe('Optional link title'),
122
+ url: z.string().describe('Link URL'),
123
+ relative: z.string().nullable().describe('Relative path (if URL is relative to workspace root)'),
124
+ })).describe('External links associated with this element'),
106
125
  shape: z.string(),
107
126
  color: z.string(),
108
127
  children: z.array(z.string()).describe('Children of this element (Array of FQNs)'),
@@ -155,6 +174,11 @@ Example response:
155
174
  tags: [...element.tags],
156
175
  project: projectId,
157
176
  metadata: element.getMetadata(),
177
+ links: (element.links ?? []).map(link => ({
178
+ title: link.title ?? null,
179
+ url: link.url,
180
+ relative: link.relative ?? null,
181
+ })),
158
182
  shape: element.shape,
159
183
  color: element.color,
160
184
  children: [...element.children()].map(c => c.id),
@@ -1,11 +1,18 @@
1
+ // SPDX-License-Identifier: MIT
2
+ //
3
+ // Copyright (c) 2023-2025 Denis Davydkov
4
+ // Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
5
+ //
6
+ // Portions of this file have been modified by NVIDIA CORPORATION & AFFILIATES.
1
7
  import { isDeploymentNode, isGlobalFqn, } from '@likec4/core';
2
8
  import { resolveRulesExtendedViews } from '@likec4/core/compute-view';
3
9
  import { computeColorValues } from '@likec4/core/styles';
4
10
  import { _stage, _type, exact, FqnRef, isExtendsElementView } from '@likec4/core/types';
5
11
  import { compareNatural, parentFqn, sortByFqnHierarchically, } from '@likec4/core/utils';
6
12
  import { UriUtils } from 'langium';
7
- import { filter, flatMap, forEach, indexBy, isDefined, isNullish, isTruthy, keys, map, mapValues, omitBy, pipe, prop, reduce, } from 'remeda';
13
+ import { filter, flatMap, forEach, hasAtLeast, indexBy, isDefined, isEmpty, isNullish, isTruthy, keys, map, mapValues, omitBy, pipe, prop, reduce, unique, } from 'remeda';
8
14
  import { logger } from '../../logger';
15
+ import { stringHash } from '../../utils/stringHash';
9
16
  import { MergedExtends } from './MergedExtends';
10
17
  import { MergedSpecification } from './MergedSpecification';
11
18
  /**
@@ -21,6 +28,9 @@ export function buildModelData(project, docs) {
21
28
  const metadataKeys = new Set();
22
29
  const elementExtends = new MergedExtends();
23
30
  const deploymentExtends = new MergedExtends();
31
+ // Collect all relation extends - we'll match them by comparing source/target/kind/title
32
+ const relationExtends = docs.flatMap(doc => doc.c4ExtendRelations);
33
+ const matchedExtendIds = new Set();
24
34
  const scanMetadataKeys = (obj) => {
25
35
  if (obj?.metadata) {
26
36
  keys(obj.metadata).forEach(key => metadataKeys.add(key));
@@ -54,6 +64,59 @@ export function buildModelData(project, docs) {
54
64
  return false;
55
65
  }
56
66
  return true;
67
+ }), map(rel => {
68
+ // Apply relation extends by matching source, target, kind, and title
69
+ // Generate a stable match key for this relation
70
+ const matchKey = stringHash('extend-relation', FqnRef.flatten(rel.source), FqnRef.flatten(rel.target), rel.kind ?? 'default', rel.title ?? '');
71
+ // Find all extends that match this relation
72
+ const relExtends = relationExtends.filter(ext => ext.id === matchKey);
73
+ if (relExtends.length === 0) {
74
+ return rel;
75
+ }
76
+ // Mark these extends as matched
77
+ relExtends.forEach(ext => matchedExtendIds.add(ext.astPath));
78
+ // Merge all extends for this relation
79
+ const tags = rel.tags ? [...rel.tags] : [];
80
+ const links = rel.links ? [...rel.links] : [];
81
+ let metadata = rel.metadata ? { ...rel.metadata } : {};
82
+ for (const ext of relExtends) {
83
+ if (ext.tags) {
84
+ tags.push(...ext.tags);
85
+ }
86
+ if (ext.links) {
87
+ // Ensure links are unique based on both URL and title
88
+ for (const incomingLink of ext.links) {
89
+ const isDuplicate = links.some(existingLink => existingLink.url === incomingLink.url && (existingLink.title || '') === (incomingLink.title || ''));
90
+ if (!isDuplicate) {
91
+ links.push(incomingLink);
92
+ }
93
+ }
94
+ }
95
+ if (ext.metadata) {
96
+ for (const [key, value] of Object.entries(ext.metadata)) {
97
+ const existingValue = metadata[key];
98
+ if (existingValue === undefined) {
99
+ metadata[key] = value;
100
+ }
101
+ else {
102
+ const existingArray = Array.isArray(existingValue) ? existingValue : [existingValue];
103
+ const incomingArray = Array.isArray(value) ? value : [value];
104
+ const merged = unique([...existingArray, ...incomingArray]);
105
+ metadata[key] = merged.length === 1 ? merged[0] : merged;
106
+ }
107
+ }
108
+ }
109
+ }
110
+ // Apply unique after accumulating all values
111
+ const uniqueTags = unique(tags);
112
+ // Links are already de-duplicated by URL and title in the loop above
113
+ const uniqueLinks = links;
114
+ return {
115
+ ...rel,
116
+ ...(hasAtLeast(uniqueTags, 1) && { tags: uniqueTags }),
117
+ ...(hasAtLeast(uniqueLinks, 1) && { links: uniqueLinks }),
118
+ ...(!isEmpty(metadata) && { metadata }),
119
+ };
57
120
  }), forEach(scanMetadataKeys), indexBy(prop('id')));
58
121
  const deploymentElements = pipe(docs, flatMap(d => {
59
122
  deploymentExtends.merge(d.c4ExtendDeployments);
@@ -139,6 +202,12 @@ export function buildModelData(project, docs) {
139
202
  if (parsedViews.some(isExtendsElementView)) {
140
203
  views = resolveRulesExtendedViews(views);
141
204
  }
205
+ // Warn about unmatched relation extends
206
+ for (const ext of relationExtends) {
207
+ if (!matchedExtendIds.has(ext.astPath)) {
208
+ logger.warn(`Relation extend at ${ext.astPath} does not match any relation in the model`);
209
+ }
210
+ }
142
211
  return {
143
212
  data: {
144
213
  [_stage]: 'parsed',
@@ -1,3 +1,9 @@
1
+ // SPDX-License-Identifier: MIT
2
+ //
3
+ // Copyright (c) 2023-2025 Denis Davydkov
4
+ // Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
5
+ //
6
+ // Portions of this file have been modified by NVIDIA CORPORATION & AFFILIATES.
1
7
  import { invariant, nonNullable } from '@likec4/core';
2
8
  import { Fqn } from '@likec4/core/types';
3
9
  import { ancestorsFqn, compareNatural, DefaultWeakMap, MultiMap, sortNaturalByFqn } from '@likec4/core/utils';
@@ -160,7 +166,7 @@ export class FqnIndex extends ADisposable {
160
166
  let _nested = [];
161
167
  if (isDefined(el.body) && !isEmpty(el.body.elements)) {
162
168
  for (const child of el.body.elements) {
163
- if (!ast.isRelation(child)) {
169
+ if (!ast.isRelation(child) && !ast.isExtendRelation(child)) {
164
170
  try {
165
171
  _nested.push(...traverseNode(child, thisFqn));
166
172
  }
@@ -189,7 +195,7 @@ export class FqnIndex extends ADisposable {
189
195
  };
190
196
  for (const node of rootElements) {
191
197
  try {
192
- if (ast.isRelation(node)) {
198
+ if (ast.isRelation(node) || ast.isExtendRelation(node)) {
193
199
  continue;
194
200
  }
195
201
  traverseNode(node, null);
@@ -19,6 +19,7 @@ declare const DocumentParserFromMixins: {
19
19
  parseViewRuleGlobalPredicateRef(astRule: import("../generated/ast").ViewRuleGlobalPredicateRef | import("../generated/ast").DynamicViewGlobalPredicateRef): import("@likec4/core").ViewRuleGlobalPredicateRef;
20
20
  parseViewRuleStyleOrGlobalRef(astRule: import("../generated/ast").ViewRuleStyleOrGlobalRef): import("@likec4/core").ViewRuleGlobalStyle | import("@likec4/core").ElementViewRuleStyle<import("@likec4/core").Any>;
21
21
  parseViewRuleGroup(astNode: import("../generated/ast").ViewRuleGroup): import("@likec4/core").ElementViewRuleGroup;
22
+ parseViewRuleRank(astRule: import("../generated/ast").ViewRuleRank): import("@likec4/core").ElementViewRuleRank;
22
23
  parseViewRuleStyle(astRule: import("../generated/ast").ViewRuleStyle | import("../generated/ast").GlobalStyle): import("@likec4/core").ElementViewRuleStyle;
23
24
  parseViewRuleGlobalStyle(astRule: import("../generated/ast").ViewRuleGlobalStyle): import("@likec4/core").ViewRuleGlobalStyle;
24
25
  parseDynamicElementView(astNode: import("../generated/ast").DynamicView, additionalStyles: (import("@likec4/core").ViewRuleGlobalStyle | import("@likec4/core").ElementViewRuleStyle<import("@likec4/core").Any>)[]): import("../ast").ParsedAstDynamicView;
@@ -118,6 +119,7 @@ declare const DocumentParserFromMixins: {
118
119
  parseViewRuleGlobalPredicateRef(astRule: import("../generated/ast").ViewRuleGlobalPredicateRef | import("../generated/ast").DynamicViewGlobalPredicateRef): import("@likec4/core").ViewRuleGlobalPredicateRef;
119
120
  parseViewRuleStyleOrGlobalRef(astRule: import("../generated/ast").ViewRuleStyleOrGlobalRef): import("@likec4/core").ViewRuleGlobalStyle | import("@likec4/core").ElementViewRuleStyle<import("@likec4/core").Any>;
120
121
  parseViewRuleGroup(astNode: import("../generated/ast").ViewRuleGroup): import("@likec4/core").ElementViewRuleGroup;
122
+ parseViewRuleRank(astRule: import("../generated/ast").ViewRuleRank): import("@likec4/core").ElementViewRuleRank;
121
123
  parseViewRuleStyle(astRule: import("../generated/ast").ViewRuleStyle | import("../generated/ast").GlobalStyle): import("@likec4/core").ElementViewRuleStyle;
122
124
  parseViewRuleGlobalStyle(astRule: import("../generated/ast").ViewRuleGlobalStyle): import("@likec4/core").ViewRuleGlobalStyle;
123
125
  parseDynamicElementView(astNode: import("../generated/ast").DynamicView, additionalStyles: (import("@likec4/core").ViewRuleGlobalStyle | import("@likec4/core").ElementViewRuleStyle<import("@likec4/core").Any>)[]): import("../ast").ParsedAstDynamicView;
@@ -466,6 +468,7 @@ declare const DocumentParserFromMixins: {
466
468
  parseModel(): void;
467
469
  parseElement(astNode: import("../generated/ast").Element): import("../ast").ParsedAstElement;
468
470
  parseExtendElement(astNode: import("../generated/ast").ExtendElement): import("../ast").ParsedAstExtend | null;
471
+ parseExtendRelation(astNode: import("../generated/ast").ExtendRelation): import("../ast").ParsedAstExtendRelation | null;
469
472
  _resolveRelationSource(node: import("../generated/ast").Relation): import("@likec4/core").FqnRef.ModelRef | import("@likec4/core").FqnRef.ImportRef;
470
473
  parseRelation(astNode: import("../generated/ast").Relation): import("../ast").ParsedAstRelation;
471
474
  parseFqnRef(astNode: import("../generated/ast").FqnRef): import("@likec4/core").FqnRef;
@@ -1,3 +1,9 @@
1
+ // SPDX-License-Identifier: MIT
2
+ //
3
+ // Copyright (c) 2023-2025 Denis Davydkov
4
+ // Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
5
+ //
6
+ // Portions of this file have been modified by NVIDIA CORPORATION & AFFILIATES.
1
7
  import { DefaultWeakMap, invariant, MultiMap } from '@likec4/core/utils';
2
8
  import { DocumentState, UriUtils } from 'langium';
3
9
  import { pipe } from 'remeda';
@@ -97,6 +103,7 @@ export class LikeC4ModelParser {
97
103
  c4Elements: [],
98
104
  c4ExtendElements: [],
99
105
  c4ExtendDeployments: [],
106
+ c4ExtendRelations: [],
100
107
  c4Relations: [],
101
108
  c4Deployments: [],
102
109
  c4DeploymentRelations: [],
@@ -264,9 +264,14 @@ export class BaseParser {
264
264
  if (isArray(elementProps)) {
265
265
  const style = this.parseStyleProps(elementProps.find(ast.isElementStyleProperty)?.props);
266
266
  // Property on element has higher priority than from style
267
- const iconProp = this.parseIconProperty(elementProps.find(ast.isIconProperty));
268
- if (iconProp) {
269
- style.icon = iconProp;
267
+ try {
268
+ const iconProp = this.parseIconProperty(elementProps.find(ast.isIconProperty));
269
+ if (iconProp) {
270
+ style.icon = iconProp;
271
+ }
272
+ }
273
+ catch (err) {
274
+ logger.warn('Failed to parse icon property on element', { err });
270
275
  }
271
276
  return style;
272
277
  }