@diagc/cli 0.1.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.
- package/LICENSE +709 -0
- package/README.md +58 -0
- package/THIRD-PARTY-NOTICES.md +172 -0
- package/assets/studio/assets/caveat-cyrillic-500-normal-DLSfp5IU.woff +0 -0
- package/assets/studio/assets/caveat-cyrillic-500-normal-DpMZbbjM.woff2 +0 -0
- package/assets/studio/assets/caveat-cyrillic-700-normal-BIyejhEL.woff2 +0 -0
- package/assets/studio/assets/caveat-cyrillic-700-normal-Bhcx9qBB.woff +0 -0
- package/assets/studio/assets/caveat-cyrillic-ext-500-normal-DcrB4vVx.woff2 +0 -0
- package/assets/studio/assets/caveat-cyrillic-ext-500-normal-DqTXtm5N.woff +0 -0
- package/assets/studio/assets/caveat-cyrillic-ext-700-normal-CrK2-ngJ.woff2 +0 -0
- package/assets/studio/assets/caveat-cyrillic-ext-700-normal-DjFGiEhD.woff +0 -0
- package/assets/studio/assets/caveat-latin-500-normal-B9SDL8cy.woff2 +0 -0
- package/assets/studio/assets/caveat-latin-500-normal-Do9veZfZ.woff +0 -0
- package/assets/studio/assets/caveat-latin-700-normal-D8_1Nw6V.woff2 +0 -0
- package/assets/studio/assets/caveat-latin-700-normal-cPyBTTZN.woff +0 -0
- package/assets/studio/assets/caveat-latin-ext-500-normal-jKqJW7bC.woff2 +0 -0
- package/assets/studio/assets/caveat-latin-ext-500-normal-wUUXxlbS.woff +0 -0
- package/assets/studio/assets/caveat-latin-ext-700-normal-DFbRgDry.woff2 +0 -0
- package/assets/studio/assets/caveat-latin-ext-700-normal-DjJQd59I.woff +0 -0
- package/assets/studio/assets/index-BWKWtpKP.css +1 -0
- package/assets/studio/assets/index-Cz232yAT.js +108 -0
- package/assets/studio/assets/kalam-devanagari-400-normal-Dy6c0U2e.woff2 +0 -0
- package/assets/studio/assets/kalam-devanagari-400-normal-Dyzod-UE.woff +0 -0
- package/assets/studio/assets/kalam-devanagari-700-normal-B52CSkpd.woff +0 -0
- package/assets/studio/assets/kalam-devanagari-700-normal-BeU_-hjz.woff2 +0 -0
- package/assets/studio/assets/kalam-latin-400-normal-Bl-H2BUA.woff +0 -0
- package/assets/studio/assets/kalam-latin-400-normal-BthBl_aR.woff2 +0 -0
- package/assets/studio/assets/kalam-latin-700-normal-7TSuSrjP.woff +0 -0
- package/assets/studio/assets/kalam-latin-700-normal-D2H-9ISU.woff2 +0 -0
- package/assets/studio/assets/kalam-latin-ext-400-normal-AcQmRO9z.woff +0 -0
- package/assets/studio/assets/kalam-latin-ext-400-normal-DtcdGa4L.woff2 +0 -0
- package/assets/studio/assets/kalam-latin-ext-700-normal-BA-KJHgr.woff +0 -0
- package/assets/studio/assets/kalam-latin-ext-700-normal-CwgfRD_T.woff2 +0 -0
- package/assets/studio/index.html +13 -0
- package/assets/studio/library/aws/amazon-api-gateway.svg +1 -0
- package/assets/studio/library/aws/amazon-appflow.svg +1 -0
- package/assets/studio/library/aws/amazon-application-recovery-controller.svg +1 -0
- package/assets/studio/library/aws/amazon-athena.svg +1 -0
- package/assets/studio/library/aws/amazon-augmented-ai-a2i.svg +1 -0
- package/assets/studio/library/aws/amazon-aurora.svg +1 -0
- package/assets/studio/library/aws/amazon-bedrock-agentcore.svg +1 -0
- package/assets/studio/library/aws/amazon-bedrock.svg +1 -0
- package/assets/studio/library/aws/amazon-braket.svg +1 -0
- package/assets/studio/library/aws/amazon-chime-sdk.svg +1 -0
- package/assets/studio/library/aws/amazon-chime.svg +1 -0
- package/assets/studio/library/aws/amazon-cloud-directory.svg +1 -0
- package/assets/studio/library/aws/amazon-cloudfront.svg +1 -0
- package/assets/studio/library/aws/amazon-cloudsearch.svg +1 -0
- package/assets/studio/library/aws/amazon-cloudwatch.svg +1 -0
- package/assets/studio/library/aws/amazon-codecatalyst.svg +1 -0
- package/assets/studio/library/aws/amazon-codeguru.svg +1 -0
- package/assets/studio/library/aws/amazon-codewhisperer.svg +1 -0
- package/assets/studio/library/aws/amazon-cognito.svg +1 -0
- package/assets/studio/library/aws/amazon-comprehend-medical.svg +1 -0
- package/assets/studio/library/aws/amazon-comprehend.svg +1 -0
- package/assets/studio/library/aws/amazon-connect.svg +1 -0
- package/assets/studio/library/aws/amazon-corretto.svg +1 -0
- package/assets/studio/library/aws/amazon-data-firehose.svg +1 -0
- package/assets/studio/library/aws/amazon-datazone.svg +1 -0
- package/assets/studio/library/aws/amazon-dcv.svg +1 -0
- package/assets/studio/library/aws/amazon-detective.svg +1 -0
- package/assets/studio/library/aws/amazon-devops-guru.svg +1 -0
- package/assets/studio/library/aws/amazon-documentdb.svg +1 -0
- package/assets/studio/library/aws/amazon-dynamodb.svg +1 -0
- package/assets/studio/library/aws/amazon-ec2-auto-scaling.svg +1 -0
- package/assets/studio/library/aws/amazon-ec2-image-builder.svg +1 -0
- package/assets/studio/library/aws/amazon-ec2.svg +1 -0
- package/assets/studio/library/aws/amazon-ecs-anywhere.svg +1 -0
- package/assets/studio/library/aws/amazon-efs.svg +1 -0
- package/assets/studio/library/aws/amazon-eks-anywhere.svg +1 -0
- package/assets/studio/library/aws/amazon-eks-distro.svg +1 -0
- package/assets/studio/library/aws/amazon-elastic-block-store.svg +1 -0
- package/assets/studio/library/aws/amazon-elastic-container-registry.svg +1 -0
- package/assets/studio/library/aws/amazon-elastic-container-service.svg +1 -0
- package/assets/studio/library/aws/amazon-elastic-inference.svg +1 -0
- package/assets/studio/library/aws/amazon-elastic-kubernetes-service.svg +1 -0
- package/assets/studio/library/aws/amazon-elastic-vmware-service.svg +1 -0
- package/assets/studio/library/aws/amazon-elasticache.svg +1 -0
- package/assets/studio/library/aws/amazon-emr.svg +1 -0
- package/assets/studio/library/aws/amazon-eventbridge.svg +1 -0
- package/assets/studio/library/aws/amazon-file-cache.svg +1 -0
- package/assets/studio/library/aws/amazon-finspace.svg +1 -0
- package/assets/studio/library/aws/amazon-forecast.svg +1 -0
- package/assets/studio/library/aws/amazon-fraud-detector.svg +1 -0
- package/assets/studio/library/aws/amazon-fsx-for-lustre.svg +1 -0
- package/assets/studio/library/aws/amazon-fsx-for-netapp-ontap.svg +1 -0
- package/assets/studio/library/aws/amazon-fsx-for-openzfs.svg +1 -0
- package/assets/studio/library/aws/amazon-fsx-for-wfs.svg +1 -0
- package/assets/studio/library/aws/amazon-fsx.svg +1 -0
- package/assets/studio/library/aws/amazon-gamelift-servers.svg +1 -0
- package/assets/studio/library/aws/amazon-gamelift-streams.svg +1 -0
- package/assets/studio/library/aws/amazon-guardduty.svg +1 -0
- package/assets/studio/library/aws/amazon-inspector.svg +1 -0
- package/assets/studio/library/aws/amazon-interactive-video-service.svg +1 -0
- package/assets/studio/library/aws/amazon-kendra.svg +1 -0
- package/assets/studio/library/aws/amazon-keyspaces.svg +1 -0
- package/assets/studio/library/aws/amazon-kinesis-data-streams.svg +1 -0
- package/assets/studio/library/aws/amazon-kinesis-video-streams.svg +1 -0
- package/assets/studio/library/aws/amazon-kinesis.svg +1 -0
- package/assets/studio/library/aws/amazon-lex.svg +1 -0
- package/assets/studio/library/aws/amazon-lightsail-for-research.svg +1 -0
- package/assets/studio/library/aws/amazon-lightsail.svg +1 -0
- package/assets/studio/library/aws/amazon-location-service.svg +1 -0
- package/assets/studio/library/aws/amazon-lookout-for-equipment.svg +1 -0
- package/assets/studio/library/aws/amazon-lookout-for-vision.svg +1 -0
- package/assets/studio/library/aws/amazon-macie.svg +1 -0
- package/assets/studio/library/aws/amazon-managed-blockchain.svg +1 -0
- package/assets/studio/library/aws/amazon-managed-grafana.svg +1 -0
- package/assets/studio/library/aws/amazon-managed-service-for-apache-flink.svg +1 -0
- package/assets/studio/library/aws/amazon-managed-service-for-prometheus.svg +1 -0
- package/assets/studio/library/aws/amazon-managed-streaming-for-apache-kafka.svg +1 -0
- package/assets/studio/library/aws/amazon-managed-workflows-for-apache-airflow.svg +1 -0
- package/assets/studio/library/aws/amazon-memorydb.svg +1 -0
- package/assets/studio/library/aws/amazon-monitron.svg +1 -0
- package/assets/studio/library/aws/amazon-mq.svg +1 -0
- package/assets/studio/library/aws/amazon-neptune.svg +1 -0
- package/assets/studio/library/aws/amazon-nova.svg +1 -0
- package/assets/studio/library/aws/amazon-opensearch-service.svg +1 -0
- package/assets/studio/library/aws/amazon-personalize.svg +1 -0
- package/assets/studio/library/aws/amazon-pinpoint-apis.svg +1 -0
- package/assets/studio/library/aws/amazon-pinpoint.svg +1 -0
- package/assets/studio/library/aws/amazon-polly.svg +1 -0
- package/assets/studio/library/aws/amazon-q.svg +1 -0
- package/assets/studio/library/aws/amazon-quick.svg +1 -0
- package/assets/studio/library/aws/amazon-rds.svg +1 -0
- package/assets/studio/library/aws/amazon-redshift.svg +1 -0
- package/assets/studio/library/aws/amazon-rekognition.svg +1 -0
- package/assets/studio/library/aws/amazon-route-53.svg +1 -0
- package/assets/studio/library/aws/amazon-s3-on-outposts.svg +1 -0
- package/assets/studio/library/aws/amazon-sagemaker-ai.svg +1 -0
- package/assets/studio/library/aws/amazon-sagemaker-ground-truth.svg +1 -0
- package/assets/studio/library/aws/amazon-sagemaker-studio-lab.svg +1 -0
- package/assets/studio/library/aws/amazon-sagemaker.svg +1 -0
- package/assets/studio/library/aws/amazon-security-lake.svg +1 -0
- package/assets/studio/library/aws/amazon-simple-email-service.svg +1 -0
- package/assets/studio/library/aws/amazon-simple-notification-service.svg +1 -0
- package/assets/studio/library/aws/amazon-simple-queue-service.svg +1 -0
- package/assets/studio/library/aws/amazon-simple-storage-service-glacier.svg +1 -0
- package/assets/studio/library/aws/amazon-simple-storage-service.svg +1 -0
- package/assets/studio/library/aws/amazon-textract.svg +1 -0
- package/assets/studio/library/aws/amazon-timestream.svg +1 -0
- package/assets/studio/library/aws/amazon-transcribe.svg +1 -0
- package/assets/studio/library/aws/amazon-translate.svg +1 -0
- package/assets/studio/library/aws/amazon-verified-permissions.svg +1 -0
- package/assets/studio/library/aws/amazon-virtual-private-cloud.svg +1 -0
- package/assets/studio/library/aws/amazon-vpc-lattice.svg +1 -0
- package/assets/studio/library/aws/amazon-workdocs-sdk.svg +1 -0
- package/assets/studio/library/aws/amazon-workdocs.svg +1 -0
- package/assets/studio/library/aws/amazon-workmail.svg +1 -0
- package/assets/studio/library/aws/amazon-workspaces.svg +1 -0
- package/assets/studio/library/aws/apache-mxnet-on-aws.svg +1 -0
- package/assets/studio/library/aws/api-gateway.svg +1 -0
- package/assets/studio/library/aws/aws-activate.svg +1 -0
- package/assets/studio/library/aws/aws-amplify.svg +1 -0
- package/assets/studio/library/aws/aws-app-mesh.svg +1 -0
- package/assets/studio/library/aws/aws-app-runner.svg +1 -0
- package/assets/studio/library/aws/aws-app-studio.svg +1 -0
- package/assets/studio/library/aws/aws-appconfig.svg +1 -0
- package/assets/studio/library/aws/aws-appfabric.svg +1 -0
- package/assets/studio/library/aws/aws-application-auto-scaling.svg +1 -0
- package/assets/studio/library/aws/aws-application-discovery-service.svg +1 -0
- package/assets/studio/library/aws/aws-application-migration-service.svg +1 -0
- package/assets/studio/library/aws/aws-appsync.svg +1 -0
- package/assets/studio/library/aws/aws-artifact.svg +1 -0
- package/assets/studio/library/aws/aws-audit-manager.svg +1 -0
- package/assets/studio/library/aws/aws-auto-scaling.svg +1 -0
- package/assets/studio/library/aws/aws-b2b-data-interchange.svg +1 -0
- package/assets/studio/library/aws/aws-backint-agent.svg +1 -0
- package/assets/studio/library/aws/aws-backup.svg +1 -0
- package/assets/studio/library/aws/aws-batch.svg +1 -0
- package/assets/studio/library/aws/aws-billing-conductor.svg +1 -0
- package/assets/studio/library/aws/aws-budgets.svg +1 -0
- package/assets/studio/library/aws/aws-certificate-manager.svg +1 -0
- package/assets/studio/library/aws/aws-chatbot.svg +1 -0
- package/assets/studio/library/aws/aws-clean-rooms.svg +1 -0
- package/assets/studio/library/aws/aws-client-vpn.svg +1 -0
- package/assets/studio/library/aws/aws-cloud-control-api.svg +1 -0
- package/assets/studio/library/aws/aws-cloud-development-kit.svg +1 -0
- package/assets/studio/library/aws/aws-cloud-map.svg +1 -0
- package/assets/studio/library/aws/aws-cloud-wan.svg +1 -0
- package/assets/studio/library/aws/aws-cloud9.svg +1 -0
- package/assets/studio/library/aws/aws-cloudformation.svg +1 -0
- package/assets/studio/library/aws/aws-cloudhsm.svg +1 -0
- package/assets/studio/library/aws/aws-cloudshell.svg +1 -0
- package/assets/studio/library/aws/aws-cloudtrail.svg +1 -0
- package/assets/studio/library/aws/aws-codeartifact.svg +1 -0
- package/assets/studio/library/aws/aws-codebuild.svg +1 -0
- package/assets/studio/library/aws/aws-codecommit.svg +1 -0
- package/assets/studio/library/aws/aws-codedeploy.svg +1 -0
- package/assets/studio/library/aws/aws-codepipeline.svg +1 -0
- package/assets/studio/library/aws/aws-command-line-interface.svg +1 -0
- package/assets/studio/library/aws/aws-compute-optimizer.svg +1 -0
- package/assets/studio/library/aws/aws-config.svg +1 -0
- package/assets/studio/library/aws/aws-console-mobile-application.svg +1 -0
- package/assets/studio/library/aws/aws-control-tower.svg +1 -0
- package/assets/studio/library/aws/aws-cost-and-usage-report.svg +1 -0
- package/assets/studio/library/aws/aws-cost-explorer.svg +1 -0
- package/assets/studio/library/aws/aws-data-exchange.svg +1 -0
- package/assets/studio/library/aws/aws-data-transfer-terminal.svg +1 -0
- package/assets/studio/library/aws/aws-database-migration-service.svg +1 -0
- package/assets/studio/library/aws/aws-datasync.svg +1 -0
- package/assets/studio/library/aws/aws-deadline-cloud.svg +1 -0
- package/assets/studio/library/aws/aws-deep-learning-amis.svg +1 -0
- package/assets/studio/library/aws/aws-deep-learning-containers.svg +1 -0
- package/assets/studio/library/aws/aws-deepracer.svg +1 -0
- package/assets/studio/library/aws/aws-device-farm.svg +1 -0
- package/assets/studio/library/aws/aws-devops-agent.svg +1 -0
- package/assets/studio/library/aws/aws-direct-connect.svg +1 -0
- package/assets/studio/library/aws/aws-directory-service.svg +1 -0
- package/assets/studio/library/aws/aws-distro-for-opentelemetry.svg +1 -0
- package/assets/studio/library/aws/aws-elastic-beanstalk.svg +1 -0
- package/assets/studio/library/aws/aws-elastic-disaster-recovery.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-appliances-and-software.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-conductor.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-delta.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-inference.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-link.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-live.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-mediaconnect.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-mediaconvert.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-medialive.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-mediapackage.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-mediastore.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-mediatailor.svg +1 -0
- package/assets/studio/library/aws/aws-elemental-server.svg +1 -0
- package/assets/studio/library/aws/aws-end-user-messaging.svg +1 -0
- package/assets/studio/library/aws/aws-entity-resolution.svg +1 -0
- package/assets/studio/library/aws/aws-express-workflows.svg +1 -0
- package/assets/studio/library/aws/aws-fargate.svg +1 -0
- package/assets/studio/library/aws/aws-fault-injection-service.svg +1 -0
- package/assets/studio/library/aws/aws-finops-agent.svg +1 -0
- package/assets/studio/library/aws/aws-firewall-manager.svg +1 -0
- package/assets/studio/library/aws/aws-global-accelerator.svg +1 -0
- package/assets/studio/library/aws/aws-glue-databrew.svg +1 -0
- package/assets/studio/library/aws/aws-glue.svg +1 -0
- package/assets/studio/library/aws/aws-ground-station.svg +1 -0
- package/assets/studio/library/aws/aws-health-dashboard.svg +1 -0
- package/assets/studio/library/aws/aws-healthimaging.svg +1 -0
- package/assets/studio/library/aws/aws-healthlake.svg +1 -0
- package/assets/studio/library/aws/aws-healthomics.svg +1 -0
- package/assets/studio/library/aws/aws-healthscribe.svg +1 -0
- package/assets/studio/library/aws/aws-iam-identity-center.svg +1 -0
- package/assets/studio/library/aws/aws-identity-and-access-management.svg +1 -0
- package/assets/studio/library/aws/aws-infrastructure-composer.svg +1 -0
- package/assets/studio/library/aws/aws-interconnect.svg +1 -0
- package/assets/studio/library/aws/aws-iot-core.svg +1 -0
- package/assets/studio/library/aws/aws-iot-device-defender.svg +1 -0
- package/assets/studio/library/aws/aws-iot-device-management.svg +1 -0
- package/assets/studio/library/aws/aws-iot-events.svg +1 -0
- package/assets/studio/library/aws/aws-iot-expresslink.svg +1 -0
- package/assets/studio/library/aws/aws-iot-fleetwise.svg +1 -0
- package/assets/studio/library/aws/aws-iot-greengrass.svg +1 -0
- package/assets/studio/library/aws/aws-iot-sitewise.svg +1 -0
- package/assets/studio/library/aws/aws-iot-twinmaker.svg +1 -0
- package/assets/studio/library/aws/aws-iq.svg +1 -0
- package/assets/studio/library/aws/aws-key-management-service.svg +1 -0
- package/assets/studio/library/aws/aws-lake-formation.svg +1 -0
- package/assets/studio/library/aws/aws-lambda.svg +1 -0
- package/assets/studio/library/aws/aws-launch-wizard.svg +1 -0
- package/assets/studio/library/aws/aws-license-manager.svg +1 -0
- package/assets/studio/library/aws/aws-local-zones.svg +1 -0
- package/assets/studio/library/aws/aws-mainframe-modernization.svg +1 -0
- package/assets/studio/library/aws/aws-managed-services.svg +1 -0
- package/assets/studio/library/aws/aws-management-console.svg +1 -0
- package/assets/studio/library/aws/aws-marketplace-dark.svg +1 -0
- package/assets/studio/library/aws/aws-marketplace-light.svg +1 -0
- package/assets/studio/library/aws/aws-migration-evaluator.svg +1 -0
- package/assets/studio/library/aws/aws-network-firewall.svg +1 -0
- package/assets/studio/library/aws/aws-neuron.svg +1 -0
- package/assets/studio/library/aws/aws-nitro-enclaves.svg +1 -0
- package/assets/studio/library/aws/aws-organizations.svg +1 -0
- package/assets/studio/library/aws/aws-outposts-family.svg +1 -0
- package/assets/studio/library/aws/aws-outposts-rack.svg +1 -0
- package/assets/studio/library/aws/aws-outposts-servers.svg +1 -0
- package/assets/studio/library/aws/aws-panorama.svg +1 -0
- package/assets/studio/library/aws/aws-parallel-cluster.svg +1 -0
- package/assets/studio/library/aws/aws-parallel-computing-service.svg +1 -0
- package/assets/studio/library/aws/aws-partner-central.svg +1 -0
- package/assets/studio/library/aws/aws-payment-cryptography.svg +1 -0
- package/assets/studio/library/aws/aws-private-certificate-authority.svg +1 -0
- package/assets/studio/library/aws/aws-privatelink.svg +1 -0
- package/assets/studio/library/aws/aws-professional-services.svg +1 -0
- package/assets/studio/library/aws/aws-proton.svg +1 -0
- package/assets/studio/library/aws/aws-repost-private.svg +1 -0
- package/assets/studio/library/aws/aws-repost.svg +1 -0
- package/assets/studio/library/aws/aws-resilience-hub.svg +1 -0
- package/assets/studio/library/aws/aws-resource-access-manager.svg +1 -0
- package/assets/studio/library/aws/aws-resource-explorer.svg +1 -0
- package/assets/studio/library/aws/aws-rtb-fabric.svg +1 -0
- package/assets/studio/library/aws/aws-secrets-manager.svg +1 -0
- package/assets/studio/library/aws/aws-security-agent.svg +1 -0
- package/assets/studio/library/aws/aws-security-hub.svg +1 -0
- package/assets/studio/library/aws/aws-security-incident-response.svg +1 -0
- package/assets/studio/library/aws/aws-serverless-application-repository.svg +1 -0
- package/assets/studio/library/aws/aws-service-catalog.svg +1 -0
- package/assets/studio/library/aws/aws-service-management-connector.svg +1 -0
- package/assets/studio/library/aws/aws-shield.svg +1 -0
- package/assets/studio/library/aws/aws-signer.svg +1 -0
- package/assets/studio/library/aws/aws-simspace-weaver.svg +1 -0
- package/assets/studio/library/aws/aws-site-to-site-vpn.svg +1 -0
- package/assets/studio/library/aws/aws-snowball-edge.svg +1 -0
- package/assets/studio/library/aws/aws-snowball.svg +1 -0
- package/assets/studio/library/aws/aws-step-functions.svg +1 -0
- package/assets/studio/library/aws/aws-storage-gateway.svg +1 -0
- package/assets/studio/library/aws/aws-supply-chain.svg +1 -0
- package/assets/studio/library/aws/aws-support.svg +1 -0
- package/assets/studio/library/aws/aws-sustainability.svg +1 -0
- package/assets/studio/library/aws/aws-systems-manager.svg +1 -0
- package/assets/studio/library/aws/aws-telco-network-builder.svg +1 -0
- package/assets/studio/library/aws/aws-thinkbox-deadline.svg +1 -0
- package/assets/studio/library/aws/aws-thinkbox-frost.svg +1 -0
- package/assets/studio/library/aws/aws-thinkbox-krakatoa.svg +1 -0
- package/assets/studio/library/aws/aws-thinkbox-stoke.svg +1 -0
- package/assets/studio/library/aws/aws-thinkbox-xmesh.svg +1 -0
- package/assets/studio/library/aws/aws-tools-and-sdks.svg +1 -0
- package/assets/studio/library/aws/aws-training-certification.svg +1 -0
- package/assets/studio/library/aws/aws-transfer-family.svg +1 -0
- package/assets/studio/library/aws/aws-transform.svg +1 -0
- package/assets/studio/library/aws/aws-transit-gateway.svg +1 -0
- package/assets/studio/library/aws/aws-trusted-advisor.svg +1 -0
- package/assets/studio/library/aws/aws-user-notifications.svg +1 -0
- package/assets/studio/library/aws/aws-verified-access.svg +1 -0
- package/assets/studio/library/aws/aws-waf.svg +1 -0
- package/assets/studio/library/aws/aws-wavelength.svg +1 -0
- package/assets/studio/library/aws/aws-well-architected-tool.svg +1 -0
- package/assets/studio/library/aws/aws-wickr.svg +1 -0
- package/assets/studio/library/aws/aws-x-ray.svg +1 -0
- package/assets/studio/library/aws/bottlerocket.svg +1 -0
- package/assets/studio/library/aws/cloudwatch.svg +1 -0
- package/assets/studio/library/aws/dynamodb.svg +1 -0
- package/assets/studio/library/aws/elastic-fabric-adapter.svg +1 -0
- package/assets/studio/library/aws/elastic-load-balancing.svg +1 -0
- package/assets/studio/library/aws/freertos.svg +1 -0
- package/assets/studio/library/aws/lambda.svg +1 -0
- package/assets/studio/library/aws/open-3d-engine.svg +1 -0
- package/assets/studio/library/aws/oracle-database-at-aws.svg +1 -0
- package/assets/studio/library/aws/pytorch-on-aws.svg +1 -0
- package/assets/studio/library/aws/red-hat-openshift-service-on-aws.svg +1 -0
- package/assets/studio/library/aws/reserved-instance-reporting.svg +1 -0
- package/assets/studio/library/aws/s3.svg +1 -0
- package/assets/studio/library/aws/savings-plans.svg +1 -0
- package/assets/studio/library/aws/sns.svg +1 -0
- package/assets/studio/library/aws/tensorflow-on-aws.svg +1 -0
- package/assets/studio/library/aws-categories/analytics.svg +1 -0
- package/assets/studio/library/aws-categories/application-integration.svg +1 -0
- package/assets/studio/library/aws-categories/artificial-intelligence.svg +1 -0
- package/assets/studio/library/aws-categories/blockchain.svg +1 -0
- package/assets/studio/library/aws-categories/business-applications.svg +1 -0
- package/assets/studio/library/aws-categories/cloud-financial-management.svg +1 -0
- package/assets/studio/library/aws-categories/compute.svg +1 -0
- package/assets/studio/library/aws-categories/containers.svg +1 -0
- package/assets/studio/library/aws-categories/customer-enablement.svg +1 -0
- package/assets/studio/library/aws-categories/customer-experience.svg +1 -0
- package/assets/studio/library/aws-categories/databases.svg +1 -0
- package/assets/studio/library/aws-categories/developer-tools.svg +1 -0
- package/assets/studio/library/aws-categories/end-user-computing.svg +1 -0
- package/assets/studio/library/aws-categories/front-end-web-mobile.svg +1 -0
- package/assets/studio/library/aws-categories/games.svg +1 -0
- package/assets/studio/library/aws-categories/internet-of-things.svg +1 -0
- package/assets/studio/library/aws-categories/management-tools.svg +1 -0
- package/assets/studio/library/aws-categories/media-services.svg +1 -0
- package/assets/studio/library/aws-categories/migration-modernization.svg +1 -0
- package/assets/studio/library/aws-categories/multicloud-and-hybrid.svg +1 -0
- package/assets/studio/library/aws-categories/networking-content-delivery.svg +1 -0
- package/assets/studio/library/aws-categories/quantum-technologies.svg +1 -0
- package/assets/studio/library/aws-categories/satellite.svg +1 -0
- package/assets/studio/library/aws-categories/security-identity.svg +1 -0
- package/assets/studio/library/aws-categories/serverless.svg +1 -0
- package/assets/studio/library/aws-categories/storage.svg +1 -0
- package/assets/studio/library/aws-groups/auto-scaling-group.svg +1 -0
- package/assets/studio/library/aws-groups/aws-account.svg +1 -0
- package/assets/studio/library/aws-groups/aws-cloud-dark.svg +1 -0
- package/assets/studio/library/aws-groups/aws-cloud-logo-dark.svg +1 -0
- package/assets/studio/library/aws-groups/aws-cloud-logo.svg +1 -0
- package/assets/studio/library/aws-groups/aws-cloud.svg +1 -0
- package/assets/studio/library/aws-groups/aws-iot-greengrass-deployment.svg +1 -0
- package/assets/studio/library/aws-groups/corporate-data-center.svg +1 -0
- package/assets/studio/library/aws-groups/ec2-instance-contents.svg +1 -0
- package/assets/studio/library/aws-groups/private-subnet.svg +1 -0
- package/assets/studio/library/aws-groups/public-subnet.svg +1 -0
- package/assets/studio/library/aws-groups/region.svg +1 -0
- package/assets/studio/library/aws-groups/server-contents.svg +1 -0
- package/assets/studio/library/aws-groups/spot-fleet.svg +1 -0
- package/assets/studio/library/aws-groups/virtual-private-cloud-vpc.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-api-gateway-endpoint.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-athena-data-source-connectors.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-amazon-aurora-instance-alternate.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-amazon-rds-instance-aternate.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-amazon-rds-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-mariadb-instance-alternate.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-mariadb-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-mysql-instance-alternate.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-mysql-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-oracle-instance-alternate.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-oracle-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-piops-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-postgresql-instance-alternate.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-postgresql-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-sql-server-instance-alternate.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-sql-server-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-aurora-trusted-language-extensions-for-postgresql.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-chandelier.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-chip.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-embedded-simulator.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-managed-simulator.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-noise-simulator.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-qpu.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-simulator-1.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-simulator-2.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-simulator-3.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-simulator-4.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-simulator.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-state-vector.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-braket-tensor-network.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudfront-download-distribution.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudfront-edge-location.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudfront-functions.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudfront-streaming-distribution.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudsearch-search-documents.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-alarm.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-cross-account-observability.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-data-protection.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-event-event-based.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-event-time-based.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-evidently.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-logs.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-metrics-insights.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-rule.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-rum.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-cloudwatch-synthetics.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-datazone-business-data-catalog.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-datazone-data-portal.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-datazone-data-projects.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-devops-guru-insights.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-documentdb-elastic-clusters.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-dynamodb-amazon-dynamodb-accelerator.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-dynamodb-attribute.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-dynamodb-attributes.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-dynamodb-global-secondary-index.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-dynamodb-item.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-dynamodb-items.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-dynamodb-standard-access-table-class.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-dynamodb-standard-infrequent-access-table-class.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-dynamodb-stream.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-dynamodb-table.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-ec2-ami.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-ec2-auto-scaling.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-ec2-aws-microservice-extractor-for-net.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-ec2-db-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-ec2-elastic-ip-address.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-ec2-instance-with-cloudwatch.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-ec2-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-ec2-instances.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-ec2-rescue.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-ec2-spot-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-block-store-amazon-data-lifecycle-manager.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-block-store-multiple-volumes.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-block-store-snapshot.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-block-store-volume-gp3.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-block-store-volume.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-container-registry-image.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-container-registry-registry.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-container-service-container-1.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-container-service-container-2.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-container-service-container-3.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-container-service-copiiot-cli.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-container-service-ecs-service-connect.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-container-service-service.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-container-service-task.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-file-system-efs-intelligent-tiering.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-file-system-efs-one-zone-infrequent-access.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-file-system-efs-one-zone.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-file-system-efs-standard-infrequent-access.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-file-system-efs-standard.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-file-system-elastic-throughput.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-file-system-file-system.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elastic-kubernetes-service-eks-on-outposts.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elasticache-cache-node.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elasticache-elasticache-for-memcached.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elasticache-elasticache-for-redis.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-elasticache-elasticache-for-valkey.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-emr-cluster.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-emr-emr-engine.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-emr-hdfs-cluster.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-eventbridge-custom-event-bus.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-eventbridge-default-event-bus.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-eventbridge-event.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-eventbridge-pipes.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-eventbridge-rule.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-eventbridge-saas-partner-event.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-eventbridge-scheduler.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-eventbridge-schema-registry.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-eventbridge-schema.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-file-cache-hybrid-nfs-linked-datasets.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-file-cache-on-premises-nfs-linked-datasets.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-file-cache-s3-linked-datasets.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-inspector-agent.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-location-service-geofence.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-location-service-map.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-location-service-place.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-location-service-routes.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-location-service-track.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-managed-blockchain-blockchain.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-mq-broker.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-msk-amazon-msk-connect.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-opensearch-service-cluster-administrator-node.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-opensearch-service-data-node.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-opensearch-service-index.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-opensearch-service-observability.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-opensearch-service-opensearch-dashboards.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-opensearch-service-opensearch-ingestion.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-opensearch-service-traces.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-opensearch-service-ultrawarm-node.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-pinpoint-journey.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-rds-blue-green-deployments.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-rds-multi-az-db-cluster.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-rds-multi-az.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-rds-optimized-writes.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-rds-proxy-instance-alternate.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-rds-proxy-instance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-rds-trusted-language-extensions-for-postgresql.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-redshift-auto-copy.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-redshift-data-sharing-governance.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-redshift-dense-compute-node.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-redshift-dense-storage-node.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-redshift-ml.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-redshift-query-editor-v2-0.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-redshift-ra3.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-redshift-streaming-ingestion.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-rekognition-image.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-rekognition-video.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-route-53-hosted-zone.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-route-53-readiness-checks.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-route-53-resolver-dns-firewall.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-route-53-resolver-query-logging.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-route-53-resolver.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-route-53-route-table.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-route-53-routing-controls.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-sagemaker-ai-canvas.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-sagemaker-ai-geospatial-ml.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-sagemaker-ai-model.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-sagemaker-ai-notebook.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-sagemaker-ai-shadow-testing.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-sagemaker-ai-train.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-email-service-email.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-notification-service-email-notification.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-notification-service-http-notification.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-notification-service-topic.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-queue-service-message.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-queue-service-queue.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-bucket-with-objects.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-bucket.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-directory-bucket.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-general-access-points.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-glacier-archive.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-glacier-vault.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-object.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-batch-operations.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-express-one-zone.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-files.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-glacier-deep-archive.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-glacier-flexible-retrieval.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-glacier-instant-retrieval.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-intelligent-tiering.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-multi-region-access-points.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-object-lambda-access-points.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-object-lambda.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-object-lock.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-on-outposts.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-one-zone-ia.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-replication-time-control.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-replication.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-select.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-standard-ia.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-standard.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-storage-lens.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-tables.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-s3-vectors.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-simple-storage-service-vpc-access-points.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-textract-analyze-lending.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-carrier-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-customer-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-elastic-network-adapter.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-elastic-network-interface.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-endpoints.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-flow-logs.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-internet-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-nat-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-network-access-analyzer.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-network-access-control-list.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-peering-connection.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-reachability-analyzer.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-router.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-traffic-mirroring.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-virtual-private-cloud-vpc.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-vpn-connection.svg +1 -0
- package/assets/studio/library/aws-resources/amazon-vpc-vpn-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-amplify-aws-amplify-studio.svg +1 -0
- package/assets/studio/library/aws-resources/aws-app-mesh-mesh.svg +1 -0
- package/assets/studio/library/aws-resources/aws-app-mesh-virtual-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-app-mesh-virtual-node.svg +1 -0
- package/assets/studio/library/aws-resources/aws-app-mesh-virtual-router.svg +1 -0
- package/assets/studio/library/aws-resources/aws-app-mesh-virtual-service.svg +1 -0
- package/assets/studio/library/aws-resources/aws-application-discovery-service-aws-agentless-collector.svg +1 -0
- package/assets/studio/library/aws-resources/aws-application-discovery-service-aws-discovery-agent.svg +1 -0
- package/assets/studio/library/aws-resources/aws-application-discovery-service-migration-evaluator-collector.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-audit-manager.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-aws-backup-for-aws-cloudformation.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-aws-backup-support-for-amazon-fsx-for-netapp-ontap.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-aws-backup-support-for-amazon-s3.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-aws-backup-support-for-vmware-workloads.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-backup-plan.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-backup-restore.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-backup-vault.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-compliance-reporting.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-compute.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-database.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-legal-hold.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-recovery-point-objective.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-recovery-time-objective.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-storage.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-vault-lock.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-virtual-machine-monitor.svg +1 -0
- package/assets/studio/library/aws-resources/aws-backup-virtual-machine.svg +1 -0
- package/assets/studio/library/aws-resources/aws-certificate-manager-certificate-authority.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloud-digital-interface.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloud-map-namespace.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloud-map-resource.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloud-map-service.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloud-wan-core-network-edge.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloud-wan-segment-network.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloud-wan-transit-gateway-route-table-attachment.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloud9-cloud9.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloudformation-change-set.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloudformation-stack.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloudformation-template.svg +1 -0
- package/assets/studio/library/aws-resources/aws-cloudtrail-cloudtrail-lake.svg +1 -0
- package/assets/studio/library/aws-resources/aws-data-exchange-for-apis.svg +1 -0
- package/assets/studio/library/aws-resources/aws-database-migration-service-database-migration-workflow-or-job.svg +1 -0
- package/assets/studio/library/aws-resources/aws-datasync-agent.svg +1 -0
- package/assets/studio/library/aws-resources/aws-datasync-discovery.svg +1 -0
- package/assets/studio/library/aws-resources/aws-direct-connect-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-directory-service-ad-connector.svg +1 -0
- package/assets/studio/library/aws-resources/aws-directory-service-aws-managed-microsoft-ad.svg +1 -0
- package/assets/studio/library/aws-resources/aws-directory-service-simple-ad.svg +1 -0
- package/assets/studio/library/aws-resources/aws-elastic-beanstalk-application.svg +1 -0
- package/assets/studio/library/aws-resources/aws-elastic-beanstalk-deployment.svg +1 -0
- package/assets/studio/library/aws-resources/aws-elemental-mediaconnect-mediaconnect-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-glue-aws-glue-for-ray.svg +1 -0
- package/assets/studio/library/aws-resources/aws-glue-crawler.svg +1 -0
- package/assets/studio/library/aws-resources/aws-glue-data-catalog.svg +1 -0
- package/assets/studio/library/aws-resources/aws-glue-data-quality.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-add-on.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-aws-sts-alternate.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-aws-sts.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-data-encryption-key.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-encrypted-data.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-iam-access-analyzer.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-iam-roles-anywhere.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-long-term-security-credential.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-mfa-token.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-permissions.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-role.svg +1 -0
- package/assets/studio/library/aws-resources/aws-identity-access-management-temporary-security-credential.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-action.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-actuator.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-alexa-enabled-device.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-alexa-skill.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-alexa-voice-service.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-certificate.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-core-device-advisor.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-core-device-location.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-desired-state.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-device-defender-iot-device-jobs.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-device-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-device-management-fleet-hub.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-device-tester.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-echo.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-fire-tv-stick.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-fire-tv.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-artifact.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-component-machine-learning.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-component-nucleus.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-component-private.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-component-public.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-component.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-connector.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-interprocess-communication.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-protocol.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-recipe.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-greengrass-stream-manager.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-hardware-board.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-http-protocol.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-http2-protocol.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-lambda-function.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-lorawan-protocol.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-mqtt-protocol.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-over-air-update.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-policy.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-reported-state.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-rule.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-sailboat.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-sensor.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-servo.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-shadow.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-simulator.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-sitewise-asset-hierarchy.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-sitewise-asset-model.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-sitewise-asset-properties.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-sitewise-asset.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-sitewise-data-streams.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-bank.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-bicycle.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-camera.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-car.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-cart.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-coffee-pot.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-door-lock.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-factory.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-freertos-device.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-generic.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-house.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-humidity-sensor.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-industrial-pc.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-lightbulb.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-medical-emergency.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-plc.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-police-emergency.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-relay.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-stacklight.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-temperature-humidity-sensor.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-temperature-sensor.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-temperature-vibration-sensor.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-thermostat.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-travel.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-utility.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-vibration-sensor.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-thing-windfarm.svg +1 -0
- package/assets/studio/library/aws-resources/aws-iot-topic.svg +1 -0
- package/assets/studio/library/aws-resources/aws-key-management-service-external-key-store.svg +1 -0
- package/assets/studio/library/aws-resources/aws-lake-formation-data-lake.svg +1 -0
- package/assets/studio/library/aws-resources/aws-lambda-lambda-function.svg +1 -0
- package/assets/studio/library/aws-resources/aws-license-manager-application-discovery.svg +1 -0
- package/assets/studio/library/aws-resources/aws-license-manager-license-blending.svg +1 -0
- package/assets/studio/library/aws-resources/aws-mainframe-modernization-analyzer.svg +1 -0
- package/assets/studio/library/aws-resources/aws-mainframe-modernization-compiler.svg +1 -0
- package/assets/studio/library/aws-resources/aws-mainframe-modernization-converter.svg +1 -0
- package/assets/studio/library/aws-resources/aws-mainframe-modernization-developer.svg +1 -0
- package/assets/studio/library/aws-resources/aws-mainframe-modernization-runtime.svg +1 -0
- package/assets/studio/library/aws-resources/aws-network-firewall-endpoints.svg +1 -0
- package/assets/studio/library/aws-resources/aws-organizations-account.svg +1 -0
- package/assets/studio/library/aws-resources/aws-organizations-management-account.svg +1 -0
- package/assets/studio/library/aws-resources/aws-organizations-organizational-unit.svg +1 -0
- package/assets/studio/library/aws-resources/aws-security-hub-finding.svg +1 -0
- package/assets/studio/library/aws-resources/aws-shield-aws-shield-advanced.svg +1 -0
- package/assets/studio/library/aws-resources/aws-snowball-snowball-import-export.svg +1 -0
- package/assets/studio/library/aws-resources/aws-storage-gateway-amazon-fsx-file-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-storage-gateway-amazon-s3-file-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-storage-gateway-cached-volume.svg +1 -0
- package/assets/studio/library/aws-resources/aws-storage-gateway-file-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-storage-gateway-noncached-volume.svg +1 -0
- package/assets/studio/library/aws-resources/aws-storage-gateway-tape-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-storage-gateway-virtual-tape-library.svg +1 -0
- package/assets/studio/library/aws-resources/aws-storage-gateway-volume-gateway.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-application-manager.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-automation.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-change-calendar.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-change-manager.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-compliance.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-distributor.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-documents.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-incident-manager.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-inventory.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-maintenance-windows.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-opscenter.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-parameter-store.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-patch-manager.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-run-command.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-session-manager.svg +1 -0
- package/assets/studio/library/aws-resources/aws-systems-manager-state-manager.svg +1 -0
- package/assets/studio/library/aws-resources/aws-transfer-family-aws-as2.svg +1 -0
- package/assets/studio/library/aws-resources/aws-transfer-family-aws-ftp.svg +1 -0
- package/assets/studio/library/aws-resources/aws-transfer-family-aws-ftps.svg +1 -0
- package/assets/studio/library/aws-resources/aws-transfer-family-aws-sftp.svg +1 -0
- package/assets/studio/library/aws-resources/aws-transit-gateway-attachment.svg +1 -0
- package/assets/studio/library/aws-resources/aws-trusted-advisor-checklist-cost.svg +1 -0
- package/assets/studio/library/aws-resources/aws-trusted-advisor-checklist-fault-tolerant.svg +1 -0
- package/assets/studio/library/aws-resources/aws-trusted-advisor-checklist-performance.svg +1 -0
- package/assets/studio/library/aws-resources/aws-trusted-advisor-checklist-security.svg +1 -0
- package/assets/studio/library/aws-resources/aws-trusted-advisor-checklist.svg +1 -0
- package/assets/studio/library/aws-resources/aws-waf-bad-bot.svg +1 -0
- package/assets/studio/library/aws-resources/aws-waf-bot-control.svg +1 -0
- package/assets/studio/library/aws-resources/aws-waf-bot.svg +1 -0
- package/assets/studio/library/aws-resources/aws-waf-filtering-rule.svg +1 -0
- package/assets/studio/library/aws-resources/aws-waf-labels.svg +1 -0
- package/assets/studio/library/aws-resources/aws-waf-managed-rule.svg +1 -0
- package/assets/studio/library/aws-resources/aws-waf-rule.svg +1 -0
- package/assets/studio/library/aws-resources/elastic-load-balancing-application-load-balancer.svg +1 -0
- package/assets/studio/library/aws-resources/elastic-load-balancing-classic-load-balancer.svg +1 -0
- package/assets/studio/library/aws-resources/elastic-load-balancing-gateway-load-balancer.svg +1 -0
- package/assets/studio/library/aws-resources/elastic-load-balancing-network-load-balancer.svg +1 -0
- package/assets/studio/library/k8s/deploy.svg +54 -0
- package/assets/studio/library/k8s/ing.svg +46 -0
- package/assets/studio/library/k8s/node.svg +46 -0
- package/assets/studio/library/k8s/pod.svg +65 -0
- package/assets/studio/library/k8s/secret.svg +90 -0
- package/assets/studio/library/k8s/svc.svg +79 -0
- package/assets/studio/library/shapes/internet.svg +1 -0
- package/assets/studio/library/shapes/person.svg +1 -0
- package/assets/studio/library/shapes/users.svg +1 -0
- package/assets/studio/library/tech/auth0.svg +1 -0
- package/assets/studio/library/tech/clickhouse.svg +1 -0
- package/assets/studio/library/tech/cloudflare.svg +1 -0
- package/assets/studio/library/tech/github-actions.svg +1 -0
- package/assets/studio/library/tech/github.svg +1 -0
- package/assets/studio/library/tech/helm.svg +1 -0
- package/assets/studio/library/tech/jupyter.svg +1 -0
- package/assets/studio/library/tech/kubernetes.svg +1 -0
- package/assets/studio/library/tech/microsoft-entra-id.svg +15 -0
- package/assets/studio/library/tech/nats.svg +1 -0
- package/assets/studio/library/tech/new-relic.svg +1 -0
- package/assets/studio/library/tech/postgresql.svg +1 -0
- package/assets/studio/library/tech/rabbitmq.svg +1 -0
- package/assets/studio/library/tech/redis.svg +1 -0
- package/assets/studio/library/tech/sendgrid.svg +1 -0
- package/assets/studio/library/tech/starrocks.svg +1 -0
- package/assets/studio/library/tech/temporal.svg +1 -0
- package/assets/viewer/index.html +59 -0
- package/bin/diagc.mjs +18 -0
- package/dist/api/dispatch.d.ts +57 -0
- package/dist/api/dispatch.js +154 -0
- package/dist/api/handlers.d.ts +61 -0
- package/dist/api/handlers.js +420 -0
- package/dist/api/index.d.ts +3 -0
- package/dist/api/index.js +7 -0
- package/dist/api/routes.d.ts +27 -0
- package/dist/api/routes.js +43 -0
- package/dist/atomic-write.d.ts +8 -0
- package/dist/atomic-write.js +21 -0
- package/dist/cli.d.ts +21 -0
- package/dist/cli.js +271 -0
- package/dist/compile.d.ts +11 -0
- package/dist/compile.js +106 -0
- package/dist/eject.d.ts +24 -0
- package/dist/eject.js +121 -0
- package/dist/home.d.ts +36 -0
- package/dist/home.js +75 -0
- package/dist/includes.d.ts +5 -0
- package/dist/includes.js +17 -0
- package/dist/publish/assets.d.ts +20 -0
- package/dist/publish/assets.js +46 -0
- package/dist/publish/discover.d.ts +10 -0
- package/dist/publish/discover.js +31 -0
- package/dist/publish/gallery.d.ts +4 -0
- package/dist/publish/gallery.js +27 -0
- package/dist/publish/html.d.ts +23 -0
- package/dist/publish/html.js +45 -0
- package/dist/publish/pageSize.d.ts +21 -0
- package/dist/publish/pageSize.js +26 -0
- package/dist/publish/publish.d.ts +18 -0
- package/dist/publish/publish.js +100 -0
- package/dist/publish/snapshot.d.ts +3 -0
- package/dist/publish/snapshot.js +53 -0
- package/dist/serve.d.ts +32 -0
- package/dist/serve.js +154 -0
- package/dist/snapshots.d.ts +13 -0
- package/dist/snapshots.js +113 -0
- package/dist/studio.d.ts +28 -0
- package/dist/studio.js +115 -0
- package/dist/watch.d.ts +37 -0
- package/dist/watch.js +79 -0
- package/package.json +53 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { DiagramModel } from '@diagc/core';
|
|
2
|
+
export declare function dataUri(bytes: Buffer, ext: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* Classify an asset ref so publish-time code knows whether/where to read it from disk.
|
|
5
|
+
* - `library`: bundled shape, lives under the library dir (`/library/<rest>`).
|
|
6
|
+
* - `api-assets`: uploaded asset served via the studio API (`/api/assets/<rest>`).
|
|
7
|
+
* - `bare`: uploaded asset stored as a bare content-hash filename (no leading slash,
|
|
8
|
+
* not a URL, not already a data: URI) — the studio's on-disk model shape.
|
|
9
|
+
* - `skip`: anything else (external http(s) URL, data: URI, or an unrecognized
|
|
10
|
+
* absolute path) — left untouched.
|
|
11
|
+
*/
|
|
12
|
+
export type AssetRefKind = 'library' | 'api-assets' | 'bare' | 'skip';
|
|
13
|
+
export declare function classifyAssetRef(ref: string): AssetRefKind;
|
|
14
|
+
/**
|
|
15
|
+
* Resolve `rel` under `base`, or `undefined` if it would escape `base` via `..`
|
|
16
|
+
* (path traversal). Guards the publish step so a crafted asset ref such as
|
|
17
|
+
* `/library/../../etc/passwd` can never read a file outside the intended root.
|
|
18
|
+
*/
|
|
19
|
+
export declare function safeAssetPath(base: string, rel: string): string | undefined;
|
|
20
|
+
export declare function rewriteAssetRefs(model: DiagramModel, resolve: (ref: string) => Buffer | undefined): DiagramModel;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
const MIME = {
|
|
3
|
+
svg: 'image/svg+xml', png: 'image/png', jpg: 'image/jpeg', jpeg: 'image/jpeg', webp: 'image/webp', gif: 'image/gif',
|
|
4
|
+
};
|
|
5
|
+
export function dataUri(bytes, ext) {
|
|
6
|
+
const mime = MIME[ext.toLowerCase()] ?? 'application/octet-stream';
|
|
7
|
+
return `data:${mime};base64,${bytes.toString('base64')}`;
|
|
8
|
+
}
|
|
9
|
+
export function classifyAssetRef(ref) {
|
|
10
|
+
if (ref.startsWith('/library/'))
|
|
11
|
+
return 'library';
|
|
12
|
+
if (ref.startsWith('/api/assets/'))
|
|
13
|
+
return 'api-assets';
|
|
14
|
+
if (!ref.startsWith('/') && !/^https?:/.test(ref) && !ref.startsWith('data:'))
|
|
15
|
+
return 'bare';
|
|
16
|
+
return 'skip';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve `rel` under `base`, or `undefined` if it would escape `base` via `..`
|
|
20
|
+
* (path traversal). Guards the publish step so a crafted asset ref such as
|
|
21
|
+
* `/library/../../etc/passwd` can never read a file outside the intended root.
|
|
22
|
+
*/
|
|
23
|
+
export function safeAssetPath(base, rel) {
|
|
24
|
+
const root = path.resolve(base);
|
|
25
|
+
const resolved = path.resolve(root, rel);
|
|
26
|
+
return resolved.startsWith(root + path.sep) ? resolved : undefined;
|
|
27
|
+
}
|
|
28
|
+
function inlineRef(ref, resolve) {
|
|
29
|
+
if (ref === undefined || classifyAssetRef(ref) === 'skip')
|
|
30
|
+
return ref;
|
|
31
|
+
const bytes = resolve(ref);
|
|
32
|
+
if (bytes === undefined)
|
|
33
|
+
return ref;
|
|
34
|
+
const ext = ref.split('.').pop()?.split(/[?#]/)[0] ?? '';
|
|
35
|
+
return dataUri(bytes, ext);
|
|
36
|
+
}
|
|
37
|
+
export function rewriteAssetRefs(model, resolve) {
|
|
38
|
+
const nodes = model.nodes.map((n) => {
|
|
39
|
+
const image = inlineRef(n.image, resolve);
|
|
40
|
+
const shape = inlineRef(n.shape, resolve);
|
|
41
|
+
if (image === n.image && shape === n.shape)
|
|
42
|
+
return n;
|
|
43
|
+
return { ...n, ...(image !== undefined ? { image } : {}), ...(shape !== undefined ? { shape } : {}) };
|
|
44
|
+
});
|
|
45
|
+
return { ...model, nodes };
|
|
46
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface DiscoveredDiagram {
|
|
2
|
+
name: string;
|
|
3
|
+
modelPath: string;
|
|
4
|
+
layoutPath?: string;
|
|
5
|
+
drawingsPath?: string;
|
|
6
|
+
}
|
|
7
|
+
/** Discover render-ready diagrams from the compiled artifacts dir; pair each
|
|
8
|
+
* with its layout and drawings sidecars from the source tree (artifacts carry
|
|
9
|
+
* neither — compile never touches a sidecar). */
|
|
10
|
+
export declare function discoverDiagrams(artifactsDir: string, srcDir: string): Promise<DiscoveredDiagram[]>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { access } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fg from 'fast-glob';
|
|
4
|
+
/** Discover render-ready diagrams from the compiled artifacts dir; pair each
|
|
5
|
+
* with its layout and drawings sidecars from the source tree (artifacts carry
|
|
6
|
+
* neither — compile never touches a sidecar). */
|
|
7
|
+
export async function discoverDiagrams(artifactsDir, srcDir) {
|
|
8
|
+
const files = await fg('**/*.diagram.json', { cwd: artifactsDir, absolute: true });
|
|
9
|
+
const out = [];
|
|
10
|
+
const exists = async (p) => {
|
|
11
|
+
try {
|
|
12
|
+
await access(p);
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
for (const modelPath of files) {
|
|
20
|
+
const name = path.relative(artifactsDir, modelPath).replace(/\.diagram\.json$/, '').split(path.sep).join('/');
|
|
21
|
+
const layoutPath = path.join(srcDir, `${name}.layout.json`);
|
|
22
|
+
const drawingsPath = path.join(srcDir, `${name}.drawings.json`);
|
|
23
|
+
out.push({
|
|
24
|
+
name,
|
|
25
|
+
modelPath,
|
|
26
|
+
...((await exists(layoutPath)) ? { layoutPath } : {}),
|
|
27
|
+
...((await exists(drawingsPath)) ? { drawingsPath } : {}),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
function esc(s) {
|
|
2
|
+
return s.replace(/&/g, '&').replace(/</g, '<').replace(/"/g, '"');
|
|
3
|
+
}
|
|
4
|
+
export function buildGallery(entries) {
|
|
5
|
+
const cards = entries
|
|
6
|
+
.map((e) => {
|
|
7
|
+
const thumb = e.hasImage
|
|
8
|
+
? `<img src="../static/${esc(e.name)}.png" alt="${esc(e.name)}" loading="lazy" />`
|
|
9
|
+
: '';
|
|
10
|
+
return `<a class="card" href="${esc(e.name)}.html">${thumb}<span>${esc(e.name)}</span></a>`;
|
|
11
|
+
})
|
|
12
|
+
.join('\n');
|
|
13
|
+
return `<!doctype html>
|
|
14
|
+
<html lang="en"><head><meta charset="UTF-8" />
|
|
15
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
16
|
+
<title>Diagrams</title>
|
|
17
|
+
<style>
|
|
18
|
+
body{font-family:system-ui,sans-serif;margin:24px;background:#fafafa}
|
|
19
|
+
h1{font-size:18px}
|
|
20
|
+
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
|
|
21
|
+
.card{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid #ddd;border-radius:8px;text-decoration:none;color:#222;background:#fff}
|
|
22
|
+
.card img{width:100%;height:140px;object-fit:contain;background:#f4f4f4;border-radius:4px}
|
|
23
|
+
</style></head>
|
|
24
|
+
<body><h1>Diagrams</h1><div class="grid">
|
|
25
|
+
${cards}
|
|
26
|
+
</div></body></html>`;
|
|
27
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SOURCE_URL } from '@diagc/core';
|
|
2
|
+
export declare const DG_DATA_SENTINEL = "\"__DG_DIAGRAM_DATA__\"";
|
|
3
|
+
export { SOURCE_URL };
|
|
4
|
+
/**
|
|
5
|
+
* AGPL section 13 offer, carried by every published page.
|
|
6
|
+
*
|
|
7
|
+
* A published page inlines the whole viewer bundle, so publishing one distributes
|
|
8
|
+
* AGPL-licensed code and owes its recipients an offer of the corresponding source. The
|
|
9
|
+
* bundle `publish` stamps is unmodified, so pointing upstream discharges that — the
|
|
10
|
+
* author of the diagram has nothing to do, which is the point: compliance should not be
|
|
11
|
+
* something they can forget.
|
|
12
|
+
*
|
|
13
|
+
* A comment rather than visible chrome, deliberately. The page belongs to whoever drew
|
|
14
|
+
* the diagram; a banner on their work would be a tax, and nothing in the licence asks
|
|
15
|
+
* for one.
|
|
16
|
+
*
|
|
17
|
+
* Must contain no `--` (ends an HTML comment early) and no `</script>` (the data
|
|
18
|
+
* sentinel's own test asserts the page holds exactly one).
|
|
19
|
+
*/
|
|
20
|
+
export declare const SOURCE_NOTICE = "<!--\n Rendered by diagc \u2014 https://github.com/Ferroman/diagc\n\n This page embeds the diagc viewer, free software under the GNU Affero General\n Public License, version 3 (AGPL-3.0-only). The complete corresponding source of\n the viewer is available at the address above.\n\n The diagram on this page is not covered by that licence. See the additional\n permissions under section 7 in the project's LICENSE file.\n-->";
|
|
21
|
+
/** Insert the source offer without disturbing the doctype. */
|
|
22
|
+
export declare function withSourceNotice(shell: string): string;
|
|
23
|
+
export declare function stampHtml(shell: string, data: unknown): string;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { SOURCE_URL } from '@diagc/core';
|
|
2
|
+
export const DG_DATA_SENTINEL = '"__DG_DIAGRAM_DATA__"';
|
|
3
|
+
export { SOURCE_URL };
|
|
4
|
+
/**
|
|
5
|
+
* AGPL section 13 offer, carried by every published page.
|
|
6
|
+
*
|
|
7
|
+
* A published page inlines the whole viewer bundle, so publishing one distributes
|
|
8
|
+
* AGPL-licensed code and owes its recipients an offer of the corresponding source. The
|
|
9
|
+
* bundle `publish` stamps is unmodified, so pointing upstream discharges that — the
|
|
10
|
+
* author of the diagram has nothing to do, which is the point: compliance should not be
|
|
11
|
+
* something they can forget.
|
|
12
|
+
*
|
|
13
|
+
* A comment rather than visible chrome, deliberately. The page belongs to whoever drew
|
|
14
|
+
* the diagram; a banner on their work would be a tax, and nothing in the licence asks
|
|
15
|
+
* for one.
|
|
16
|
+
*
|
|
17
|
+
* Must contain no `--` (ends an HTML comment early) and no `</script>` (the data
|
|
18
|
+
* sentinel's own test asserts the page holds exactly one).
|
|
19
|
+
*/
|
|
20
|
+
export const SOURCE_NOTICE = `<!--
|
|
21
|
+
Rendered by diagc — ${SOURCE_URL}
|
|
22
|
+
|
|
23
|
+
This page embeds the diagc viewer, free software under the GNU Affero General
|
|
24
|
+
Public License, version 3 (AGPL-3.0-only). The complete corresponding source of
|
|
25
|
+
the viewer is available at the address above.
|
|
26
|
+
|
|
27
|
+
The diagram on this page is not covered by that licence. See the additional
|
|
28
|
+
permissions under section 7 in the project's LICENSE file.
|
|
29
|
+
-->`;
|
|
30
|
+
/**
|
|
31
|
+
* Anchored at the start: only a leading doctype counts. The notice has to land *after*
|
|
32
|
+
* it — an HTML comment ahead of the doctype puts the document into quirks mode in every
|
|
33
|
+
* browser, which would silently change how the viewer lays out.
|
|
34
|
+
*/
|
|
35
|
+
const LEADING_DOCTYPE = /^\s*<!doctype html>/i;
|
|
36
|
+
/** Insert the source offer without disturbing the doctype. */
|
|
37
|
+
export function withSourceNotice(shell) {
|
|
38
|
+
return LEADING_DOCTYPE.test(shell)
|
|
39
|
+
? shell.replace(LEADING_DOCTYPE, (m) => `${m}\n${SOURCE_NOTICE}`)
|
|
40
|
+
: `${SOURCE_NOTICE}\n${shell}`;
|
|
41
|
+
}
|
|
42
|
+
export function stampHtml(shell, data) {
|
|
43
|
+
const json = JSON.stringify(data).replace(/</g, '\\u003c');
|
|
44
|
+
return withSourceNotice(shell).replace(DG_DATA_SENTINEL, () => json);
|
|
45
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface Size {
|
|
2
|
+
width: number;
|
|
3
|
+
height: number;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* The capture frame for a diagram: the content at the largest scale that fits
|
|
7
|
+
* the caps, plus padding, plus an unscaled `reserve` for the legend.
|
|
8
|
+
*
|
|
9
|
+
* `reserve` is in SCREEN px and is deliberately NOT part of `bounds`. The
|
|
10
|
+
* content is scaled to fit the frame; the legend is a fixed-size overlay and is
|
|
11
|
+
* not. Adding the legend's height to `bounds.height` shrinks it by the same
|
|
12
|
+
* factor as the graph, so the frame comes out short by `reserve * (1 - scale)`
|
|
13
|
+
* — and the fit, which still pays the legend in full, draws the graph at a
|
|
14
|
+
* fraction of the intended size with the rest of the frame left blank.
|
|
15
|
+
*/
|
|
16
|
+
export declare function pageSize(bounds: Size, opts: {
|
|
17
|
+
maxWidth: number;
|
|
18
|
+
padding: number;
|
|
19
|
+
maxHeight?: number;
|
|
20
|
+
reserve?: number;
|
|
21
|
+
}): Size;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The capture frame for a diagram: the content at the largest scale that fits
|
|
3
|
+
* the caps, plus padding, plus an unscaled `reserve` for the legend.
|
|
4
|
+
*
|
|
5
|
+
* `reserve` is in SCREEN px and is deliberately NOT part of `bounds`. The
|
|
6
|
+
* content is scaled to fit the frame; the legend is a fixed-size overlay and is
|
|
7
|
+
* not. Adding the legend's height to `bounds.height` shrinks it by the same
|
|
8
|
+
* factor as the graph, so the frame comes out short by `reserve * (1 - scale)`
|
|
9
|
+
* — and the fit, which still pays the legend in full, draws the graph at a
|
|
10
|
+
* fraction of the intended size with the rest of the frame left blank.
|
|
11
|
+
*/
|
|
12
|
+
export function pageSize(bounds, opts) {
|
|
13
|
+
const pad = opts.padding * 2;
|
|
14
|
+
// Cap the reserve at half the frame, mirroring the viewer's legendPadding: a
|
|
15
|
+
// legend taller than the frame must not leave the graph nothing to sit in.
|
|
16
|
+
const reserve = opts.maxHeight === undefined
|
|
17
|
+
? Math.max(0, opts.reserve ?? 0)
|
|
18
|
+
: Math.min(Math.max(0, opts.reserve ?? 0), Math.floor(opts.maxHeight / 2));
|
|
19
|
+
const fit = (avail, extent) => (extent <= 0 ? 1 : avail / extent);
|
|
20
|
+
const scale = Math.min(1, // never upscale: a small diagram is captured at 1:1, as it always was
|
|
21
|
+
fit(opts.maxWidth - pad, bounds.width), opts.maxHeight === undefined ? 1 : fit(opts.maxHeight - pad - reserve, bounds.height));
|
|
22
|
+
return {
|
|
23
|
+
width: Math.max(1, Math.round(bounds.width * scale) + pad),
|
|
24
|
+
height: Math.max(1, Math.round(bounds.height * scale) + pad + reserve),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface PublishOptions {
|
|
2
|
+
srcDir: string;
|
|
3
|
+
artifactsDir: string;
|
|
4
|
+
htmlDir: string;
|
|
5
|
+
staticDir: string;
|
|
6
|
+
shellPath: string;
|
|
7
|
+
libraryDir: string;
|
|
8
|
+
assetsDir: string;
|
|
9
|
+
images: boolean;
|
|
10
|
+
names?: string[];
|
|
11
|
+
renderPng?: (htmlPath: string, pngPath: string) => Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export interface PublishResult {
|
|
14
|
+
pages: string[];
|
|
15
|
+
images: string[];
|
|
16
|
+
gallery: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function publishDiagrams(opts: PublishOptions): Promise<PublishResult>;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { errMessage, isDrawings } from '@diagc/core';
|
|
4
|
+
import { classifyAssetRef, rewriteAssetRefs, safeAssetPath } from './assets.js';
|
|
5
|
+
import { buildGallery } from './gallery.js';
|
|
6
|
+
import { discoverDiagrams } from './discover.js';
|
|
7
|
+
import { stampHtml } from './html.js';
|
|
8
|
+
async function readMaybe(p) {
|
|
9
|
+
try {
|
|
10
|
+
return await readFile(p);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export async function publishDiagrams(opts) {
|
|
17
|
+
const shell = await readFile(opts.shellPath, 'utf8');
|
|
18
|
+
await mkdir(opts.htmlDir, { recursive: true });
|
|
19
|
+
if (opts.images)
|
|
20
|
+
await mkdir(opts.staticDir, { recursive: true });
|
|
21
|
+
const cache = new Map();
|
|
22
|
+
const resolveAsset = (ref) => cache.get(ref);
|
|
23
|
+
let all = await discoverDiagrams(opts.artifactsDir, opts.srcDir);
|
|
24
|
+
if (opts.names !== undefined && opts.names.length > 0) {
|
|
25
|
+
const want = new Set(opts.names);
|
|
26
|
+
all = all.filter((d) => want.has(d.name));
|
|
27
|
+
}
|
|
28
|
+
const pages = [];
|
|
29
|
+
const images = [];
|
|
30
|
+
for (const d of all) {
|
|
31
|
+
try {
|
|
32
|
+
const modelRaw = JSON.parse(await readFile(d.modelPath, 'utf8'));
|
|
33
|
+
const layout = d.layoutPath !== undefined
|
|
34
|
+
? JSON.parse(await readFile(d.layoutPath, 'utf8'))
|
|
35
|
+
: undefined;
|
|
36
|
+
// A hand-edited sidecar can be valid JSON and still not be a drawings
|
|
37
|
+
// overlay. Publishing it would stamp shapeless data into a page that has
|
|
38
|
+
// no validator of its own, so it is warned about and dropped — the page
|
|
39
|
+
// still ships, just without ink. (Unparseable JSON keeps its old
|
|
40
|
+
// behaviour: it throws, and the diagram is skipped below.)
|
|
41
|
+
let drawings;
|
|
42
|
+
if (d.drawingsPath !== undefined) {
|
|
43
|
+
const parsed = JSON.parse(await readFile(d.drawingsPath, 'utf8'));
|
|
44
|
+
if (isDrawings(parsed))
|
|
45
|
+
drawings = parsed;
|
|
46
|
+
else
|
|
47
|
+
console.warn(`publish: ignoring malformed drawings sidecar for diagram "${d.name}" (${d.drawingsPath}); the page ships without ink.`);
|
|
48
|
+
}
|
|
49
|
+
// Pre-read every inlinable ref so the rewrite can stay a pure sync function.
|
|
50
|
+
for (const n of modelRaw.nodes) {
|
|
51
|
+
for (const ref of [n.image, n.shape]) {
|
|
52
|
+
if (ref === undefined || cache.has(ref))
|
|
53
|
+
continue;
|
|
54
|
+
const kind = classifyAssetRef(ref);
|
|
55
|
+
if (kind === 'skip')
|
|
56
|
+
continue;
|
|
57
|
+
const base = kind === 'library' ? opts.libraryDir : opts.assetsDir;
|
|
58
|
+
const rel = kind === 'library' ? ref.slice('/library/'.length)
|
|
59
|
+
: kind === 'api-assets' ? ref.slice('/api/assets/'.length)
|
|
60
|
+
: ref;
|
|
61
|
+
const filePath = safeAssetPath(base, rel);
|
|
62
|
+
if (filePath === undefined) {
|
|
63
|
+
console.warn(`publish: refusing out-of-root asset "${ref}" for diagram "${d.name}"; leaving ref as-is.`);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const bytes = await readMaybe(filePath);
|
|
67
|
+
if (bytes !== undefined)
|
|
68
|
+
cache.set(ref, bytes);
|
|
69
|
+
else
|
|
70
|
+
console.warn(`publish: could not read asset "${ref}" for diagram "${d.name}" (looked in ${filePath}); leaving ref as-is.`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const inlined = rewriteAssetRefs(modelRaw, resolveAsset);
|
|
74
|
+
const pagePath = path.join(opts.htmlDir, `${d.name}.html`);
|
|
75
|
+
await mkdir(path.dirname(pagePath), { recursive: true });
|
|
76
|
+
await writeFile(pagePath, stampHtml(shell, { model: inlined, layout, drawings }));
|
|
77
|
+
pages.push(pagePath);
|
|
78
|
+
if (opts.images && opts.renderPng !== undefined) {
|
|
79
|
+
const pngPath = path.join(opts.staticDir, `${d.name}.png`);
|
|
80
|
+
await mkdir(path.dirname(pngPath), { recursive: true });
|
|
81
|
+
await opts.renderPng(pagePath, pngPath);
|
|
82
|
+
images.push(pngPath);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
console.warn(`publish: skipping diagram "${d.name}": ${errMessage(e)}`);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Only diagrams whose page was actually written belong in the gallery — a
|
|
91
|
+
// source that failed before its HTML wrote would otherwise get a dead link.
|
|
92
|
+
const written = new Set(pages);
|
|
93
|
+
const galleryPath = path.join(opts.htmlDir, 'index.html');
|
|
94
|
+
await writeFile(galleryPath, buildGallery(all
|
|
95
|
+
.filter((d) => written.has(path.join(opts.htmlDir, `${d.name}.html`)))
|
|
96
|
+
.map((d) => ({
|
|
97
|
+
name: d.name, hasImage: images.includes(path.join(opts.staticDir, `${d.name}.png`)),
|
|
98
|
+
}))));
|
|
99
|
+
return { pages, images, gallery: galleryPath };
|
|
100
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { chromium } from 'playwright-core';
|
|
5
|
+
import { pageSize } from './pageSize.js';
|
|
6
|
+
/** Locate an installed Chrome/Chromium; undefined means "no browser available". */
|
|
7
|
+
export function findChrome() {
|
|
8
|
+
const env = process.env['CHROME_PATH'];
|
|
9
|
+
if (env !== undefined && existsSync(env))
|
|
10
|
+
return env;
|
|
11
|
+
const candidates = [
|
|
12
|
+
'/usr/bin/google-chrome', '/usr/bin/google-chrome-stable', '/usr/bin/chromium',
|
|
13
|
+
'/usr/bin/chromium-browser', '/snap/bin/chromium',
|
|
14
|
+
'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
|
|
15
|
+
];
|
|
16
|
+
return candidates.find((p) => existsSync(p));
|
|
17
|
+
}
|
|
18
|
+
/** Frame padding around the graph, in screen px. */
|
|
19
|
+
const FRAME_PADDING = 32;
|
|
20
|
+
export async function renderPng(htmlPath, pngPath) {
|
|
21
|
+
const executablePath = findChrome();
|
|
22
|
+
if (executablePath === undefined) {
|
|
23
|
+
throw new Error('No Chrome found for image export. Install Google Chrome/Chromium, set CHROME_PATH, or run with --no-images.');
|
|
24
|
+
}
|
|
25
|
+
const browser = await chromium.launch({ executablePath, headless: true });
|
|
26
|
+
try {
|
|
27
|
+
const page = await browser.newPage({ viewport: { width: 1600, height: 1000 }, deviceScaleFactor: 2 });
|
|
28
|
+
// `?export=1` tells the viewer to unfold every group for a full overview.
|
|
29
|
+
await page.goto(`${pathToFileURL(path.resolve(htmlPath)).href}?export=1`);
|
|
30
|
+
await page.waitForFunction(() => window.__DG_READY__ === true, null, { timeout: 15_000 });
|
|
31
|
+
// __DG_BOUNDS__ is the TRUE node bounding box in flow coordinates, so the
|
|
32
|
+
// frame gets the real content aspect; then re-fit into it (React Flow's
|
|
33
|
+
// `fitView` prop only fits on init, not after this resize) so nothing clips.
|
|
34
|
+
// __DG_RESERVE__ is the legend's extent in SCREEN px and is added to the
|
|
35
|
+
// frame unscaled — see pageSize for why the two must not be mixed.
|
|
36
|
+
const bounds = await page.evaluate(() => window.__DG_BOUNDS__ ?? { width: 1200, height: 800 });
|
|
37
|
+
const reserve = await page.evaluate(() => window.__DG_RESERVE__ ?? null);
|
|
38
|
+
const size = pageSize(bounds, {
|
|
39
|
+
maxWidth: 2000, maxHeight: 1400, padding: FRAME_PADDING,
|
|
40
|
+
// Only a top/bottom legend costs height, which is all `legendReserve`
|
|
41
|
+
// ever reports today; a side legend would need pageSize to widen instead.
|
|
42
|
+
reserve: reserve === null || reserve.side === 'left' || reserve.side === 'right' ? 0 : reserve.px,
|
|
43
|
+
});
|
|
44
|
+
await page.setViewportSize(size);
|
|
45
|
+
await page.evaluate((pad) => window.__DG_FIT__?.(pad), FRAME_PADDING);
|
|
46
|
+
await page.waitForTimeout(350); // let the re-fit settle into the resized frame
|
|
47
|
+
const el = await page.$('.react-flow');
|
|
48
|
+
await (el ?? page).screenshot({ path: pngPath });
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
await browser.close();
|
|
52
|
+
}
|
|
53
|
+
}
|
package/dist/serve.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare const contentTypeFor: (file: string) => string;
|
|
2
|
+
export interface ServeOptions {
|
|
3
|
+
/** prebuilt studio bundle (index.html + assets + library) */
|
|
4
|
+
studioDir: string;
|
|
5
|
+
diagramsDir: string;
|
|
6
|
+
artifactsDir: string;
|
|
7
|
+
/** first port to try; the server walks upward when one is taken */
|
|
8
|
+
port?: number;
|
|
9
|
+
host?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface StudioServer {
|
|
12
|
+
url: string;
|
|
13
|
+
port: number;
|
|
14
|
+
close: () => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/** Resolve a request path to a file inside `root`, or undefined if it escapes.
|
|
17
|
+
*
|
|
18
|
+
* Traversal is *clamped*, not rejected: `posix.normalize` collapses `..` against
|
|
19
|
+
* the leading `/`, so `/a/../../etc/passwd` becomes `/etc/passwd` and then
|
|
20
|
+
* resolves under `root`. A request can therefore only ever name something inside
|
|
21
|
+
* the bundle. The explicit boundary check below is not redundant — on Windows a
|
|
22
|
+
* backslash segment survives posix normalization and would escape at
|
|
23
|
+
* `path.resolve` — and it is the assertion that keeps this function honest if
|
|
24
|
+
* the normalization above is ever changed. */
|
|
25
|
+
export declare function resolveStatic(root: string, urlPath: string): string | undefined;
|
|
26
|
+
/** Serve the prebuilt studio and its read/write API over plain http.
|
|
27
|
+
*
|
|
28
|
+
* This is the installed-from-npm counterpart to the Vite dev server: same API
|
|
29
|
+
* routes (they come from the same table), no bundler, no workspace. The studio
|
|
30
|
+
* itself is an ordinary SPA that only ever talks to `/api/*`, which is what
|
|
31
|
+
* makes a static bundle behave identically here. */
|
|
32
|
+
export declare function startStudioServer(opts: ServeOptions): Promise<StudioServer>;
|
package/dist/serve.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { createReadStream } from 'node:fs';
|
|
2
|
+
import { stat } from 'node:fs/promises';
|
|
3
|
+
import { createServer } from 'node:http';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { errMessage } from '@diagc/core';
|
|
6
|
+
import { handleApiRequest } from './api/dispatch.js';
|
|
7
|
+
import * as handlers from './api/handlers.js';
|
|
8
|
+
/** Content types for what a Vite build actually emits, plus the image formats a
|
|
9
|
+
* diagram can reference. Anything else is streamed as octet-stream. */
|
|
10
|
+
const CONTENT_TYPES = {
|
|
11
|
+
'.html': 'text/html; charset=utf-8',
|
|
12
|
+
'.js': 'text/javascript; charset=utf-8',
|
|
13
|
+
'.mjs': 'text/javascript; charset=utf-8',
|
|
14
|
+
'.css': 'text/css; charset=utf-8',
|
|
15
|
+
'.json': 'application/json; charset=utf-8',
|
|
16
|
+
'.svg': 'image/svg+xml',
|
|
17
|
+
'.png': 'image/png',
|
|
18
|
+
'.jpg': 'image/jpeg',
|
|
19
|
+
'.jpeg': 'image/jpeg',
|
|
20
|
+
'.gif': 'image/gif',
|
|
21
|
+
'.webp': 'image/webp',
|
|
22
|
+
'.ico': 'image/x-icon',
|
|
23
|
+
'.woff': 'font/woff',
|
|
24
|
+
'.woff2': 'font/woff2',
|
|
25
|
+
'.ttf': 'font/ttf',
|
|
26
|
+
'.map': 'application/json; charset=utf-8',
|
|
27
|
+
'.txt': 'text/plain; charset=utf-8',
|
|
28
|
+
'.wasm': 'application/wasm',
|
|
29
|
+
};
|
|
30
|
+
export const contentTypeFor = (file) => CONTENT_TYPES[path.extname(file).toLowerCase()] ?? 'application/octet-stream';
|
|
31
|
+
/** Resolve a request path to a file inside `root`, or undefined if it escapes.
|
|
32
|
+
*
|
|
33
|
+
* Traversal is *clamped*, not rejected: `posix.normalize` collapses `..` against
|
|
34
|
+
* the leading `/`, so `/a/../../etc/passwd` becomes `/etc/passwd` and then
|
|
35
|
+
* resolves under `root`. A request can therefore only ever name something inside
|
|
36
|
+
* the bundle. The explicit boundary check below is not redundant — on Windows a
|
|
37
|
+
* backslash segment survives posix normalization and would escape at
|
|
38
|
+
* `path.resolve` — and it is the assertion that keeps this function honest if
|
|
39
|
+
* the normalization above is ever changed. */
|
|
40
|
+
export function resolveStatic(root, urlPath) {
|
|
41
|
+
let decoded;
|
|
42
|
+
try {
|
|
43
|
+
decoded = decodeURIComponent(urlPath.split('?')[0] ?? '');
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return undefined; // malformed percent-encoding
|
|
47
|
+
}
|
|
48
|
+
// Normalizing against '/' first collapses '..' segments before they are ever
|
|
49
|
+
// joined to a real directory, so the resolve below cannot climb out.
|
|
50
|
+
const rel = path.posix.normalize(decoded).replace(/^(\.\.(\/|$))+/, '').replace(/^\/+/, '');
|
|
51
|
+
const full = path.resolve(root, rel);
|
|
52
|
+
const rootResolved = path.resolve(root);
|
|
53
|
+
if (full !== rootResolved && !full.startsWith(rootResolved + path.sep))
|
|
54
|
+
return undefined;
|
|
55
|
+
return full;
|
|
56
|
+
}
|
|
57
|
+
async function sendFile(res, file) {
|
|
58
|
+
try {
|
|
59
|
+
const info = await stat(file);
|
|
60
|
+
if (!info.isFile())
|
|
61
|
+
return false;
|
|
62
|
+
res.statusCode = 200;
|
|
63
|
+
res.setHeader('content-type', contentTypeFor(file));
|
|
64
|
+
res.setHeader('content-length', String(info.size));
|
|
65
|
+
// The studio is a localhost tool reading files the user is actively
|
|
66
|
+
// editing; caching a bundle across a reinstall would serve a stale studio.
|
|
67
|
+
res.setHeader('cache-control', 'no-store');
|
|
68
|
+
await new Promise((resolve, reject) => {
|
|
69
|
+
createReadStream(file).on('error', reject).on('end', resolve).pipe(res);
|
|
70
|
+
});
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Listen on the first free port at or above `port`. */
|
|
78
|
+
function listen(server, port, host, attempts = 20) {
|
|
79
|
+
return new Promise((resolve, reject) => {
|
|
80
|
+
const tryPort = (p, left) => {
|
|
81
|
+
const onError = (e) => {
|
|
82
|
+
server.removeListener('listening', onListening);
|
|
83
|
+
if (e.code === 'EADDRINUSE' && left > 0) {
|
|
84
|
+
tryPort(p + 1, left - 1);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
reject(e);
|
|
88
|
+
};
|
|
89
|
+
const onListening = () => {
|
|
90
|
+
server.removeListener('error', onError);
|
|
91
|
+
// Read the bound port back rather than echoing the requested one: port
|
|
92
|
+
// 0 means "any free port", and the caller needs the real one to print.
|
|
93
|
+
const addr = server.address();
|
|
94
|
+
resolve(typeof addr === 'object' && addr !== null ? addr.port : p);
|
|
95
|
+
};
|
|
96
|
+
server.once('error', onError);
|
|
97
|
+
server.once('listening', onListening);
|
|
98
|
+
server.listen(p, host);
|
|
99
|
+
};
|
|
100
|
+
tryPort(port, attempts);
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/** Serve the prebuilt studio and its read/write API over plain http.
|
|
104
|
+
*
|
|
105
|
+
* This is the installed-from-npm counterpart to the Vite dev server: same API
|
|
106
|
+
* routes (they come from the same table), no bundler, no workspace. The studio
|
|
107
|
+
* itself is an ordinary SPA that only ever talks to `/api/*`, which is what
|
|
108
|
+
* makes a static bundle behave identically here. */
|
|
109
|
+
export async function startStudioServer(opts) {
|
|
110
|
+
const { studioDir, diagramsDir, artifactsDir } = opts;
|
|
111
|
+
const host = opts.host ?? '127.0.0.1';
|
|
112
|
+
const index = path.join(studioDir, 'index.html');
|
|
113
|
+
const server = createServer((req, res) => {
|
|
114
|
+
void (async () => {
|
|
115
|
+
try {
|
|
116
|
+
if (await handleApiRequest(req, res, { diagramsDir, artifactsDir }, handlers))
|
|
117
|
+
return;
|
|
118
|
+
const file = resolveStatic(studioDir, req.url ?? '/');
|
|
119
|
+
if (file === undefined) {
|
|
120
|
+
res.statusCode = 400;
|
|
121
|
+
res.end('Bad request');
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (await sendFile(res, file))
|
|
125
|
+
return;
|
|
126
|
+
// Unmatched API paths must 404 as API, not fall back to the SPA shell —
|
|
127
|
+
// a JSON caller should never have to parse HTML to learn it missed.
|
|
128
|
+
if ((req.url ?? '').startsWith('/api/')) {
|
|
129
|
+
res.statusCode = 404;
|
|
130
|
+
res.setHeader('content-type', 'application/json');
|
|
131
|
+
res.end(JSON.stringify({ issues: [{ message: `No such API route: ${req.url ?? ''}` }] }));
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (await sendFile(res, index))
|
|
135
|
+
return;
|
|
136
|
+
res.statusCode = 404;
|
|
137
|
+
res.end('Not found');
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
res.statusCode = 500;
|
|
141
|
+
res.end(errMessage(e));
|
|
142
|
+
}
|
|
143
|
+
})();
|
|
144
|
+
});
|
|
145
|
+
const port = await listen(server, opts.port ?? 5173, host);
|
|
146
|
+
return {
|
|
147
|
+
url: `http://${host}:${port}`,
|
|
148
|
+
port,
|
|
149
|
+
close: () => new Promise((resolve) => {
|
|
150
|
+
server.close(() => resolve());
|
|
151
|
+
server.closeAllConnections();
|
|
152
|
+
}),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type IncludeResolver } from '@diagc/core';
|
|
2
|
+
export type SnapshotMode = 'locked' | 'update';
|
|
3
|
+
export interface SnapshotSession {
|
|
4
|
+
resolver: IncludeResolver;
|
|
5
|
+
prune(): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Wrap an include resolver with lockfile-pinned vendoring for remote specs.
|
|
9
|
+
* Local specs pass straight through — they are already in-repo and reviewable.
|
|
10
|
+
* The wrapper always returns the ORIGINAL absolute URL as the ref, so cycle
|
|
11
|
+
* detection and nested relative resolution behave exactly as unlocked fetches.
|
|
12
|
+
*/
|
|
13
|
+
export declare function snapshotSession(base: IncludeResolver, rootDir: string, mode: SnapshotMode): SnapshotSession;
|