@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,420 @@
|
|
|
1
|
+
import { access, mkdir, readFile, readdir, rename, unlink } from 'node:fs/promises';
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { IMAGE_REF, composeIncludes, errMessage, isDrawings, isLayoutOverlay, validate } from '@diagc/core';
|
|
5
|
+
import { writeFileAtomic } from '../atomic-write.js';
|
|
6
|
+
import { EjectError, ejectDiagram } from '../eject.js';
|
|
7
|
+
import { resolveInclude } from '../includes.js';
|
|
8
|
+
import { snapshotSession } from '../snapshots.js';
|
|
9
|
+
export function isSafeName(name) {
|
|
10
|
+
return /^[a-z0-9][a-z0-9/-]*$/.test(name) && !name.includes('..') && !name.includes('//');
|
|
11
|
+
}
|
|
12
|
+
// path.dirname(diagramsDir) is the .diagrams root when diagramsDir is
|
|
13
|
+
// .diagrams/src — the same rootDir a locked session uses elsewhere (eject.ts).
|
|
14
|
+
// 'locked' because the boot/refresh path must never fetch or vendor a remote
|
|
15
|
+
// include on a viewer's behalf — that only happens at `diagc compile`.
|
|
16
|
+
const lockedResolver = (diagramsDir) => snapshotSession(resolveInclude, path.dirname(diagramsDir), 'locked').resolver;
|
|
17
|
+
const hasIncludes = (m) => m !== null && Array.isArray(m.nodes) && m.nodes.some((n) => n.include !== undefined);
|
|
18
|
+
/** Recursively collect every file under `dir` whose name ends in `suffix`,
|
|
19
|
+
* posix-joined relative to `dir` with the suffix stripped. Missing dir → [].
|
|
20
|
+
* Shared by the diagram-source and layout-overlay walks. */
|
|
21
|
+
export async function walkFiles(dir, suffix) {
|
|
22
|
+
const names = [];
|
|
23
|
+
const walk = async (d, prefix) => {
|
|
24
|
+
let entries;
|
|
25
|
+
try {
|
|
26
|
+
entries = await readdir(d, { withFileTypes: true });
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
for (const e of entries) {
|
|
32
|
+
if (e.isDirectory())
|
|
33
|
+
await walk(path.join(d, e.name), `${prefix}${e.name}/`);
|
|
34
|
+
else if (e.name.endsWith(suffix))
|
|
35
|
+
names.push(`${prefix}${e.name.slice(0, -suffix.length)}`);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
await walk(dir, '');
|
|
39
|
+
return names;
|
|
40
|
+
}
|
|
41
|
+
/** Recursively collect `<name>` for every `*.diagram.json` under `dir`
|
|
42
|
+
* (posix-joined, suffix stripped). Missing dir → []. */
|
|
43
|
+
export async function walkDiagramJson(dir) {
|
|
44
|
+
return walkFiles(dir, '.diagram.json');
|
|
45
|
+
}
|
|
46
|
+
/** Render-ready models for the studio boot: JSON sources (editable) served from
|
|
47
|
+
* `diagramsDir`, compiled TS artifacts from `artifactsDir`. A source shadows its
|
|
48
|
+
* artifact so unsaved-compile staleness never shows. */
|
|
49
|
+
export async function listDiagramModels(diagramsDir, artifactsDir) {
|
|
50
|
+
const sourceNames = new Set(await walkDiagramJson(diagramsDir));
|
|
51
|
+
const artifactNames = await walkDiagramJson(artifactsDir);
|
|
52
|
+
const all = [...new Set([...sourceNames, ...artifactNames])].sort();
|
|
53
|
+
const diagrams = [];
|
|
54
|
+
for (const name of all) {
|
|
55
|
+
const editable = sourceNames.has(name);
|
|
56
|
+
const file = editable
|
|
57
|
+
? path.join(diagramsDir, `${name}.diagram.json`)
|
|
58
|
+
: path.join(artifactsDir, `${name}.diagram.json`);
|
|
59
|
+
let model = null;
|
|
60
|
+
const issues = [];
|
|
61
|
+
try {
|
|
62
|
+
model = JSON.parse(await readFile(file, 'utf8'));
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
issues.push({ message: `Could not read model for '${name}'` });
|
|
66
|
+
}
|
|
67
|
+
if (editable && hasIncludes(model)) {
|
|
68
|
+
try {
|
|
69
|
+
const { model: composed, warnings } = await composeIncludes(model, path.resolve(file), lockedResolver(diagramsDir));
|
|
70
|
+
// compileFile refuses an invalid composed result outright (CLAUDE.md:
|
|
71
|
+
// "the renderer may assume the model is sound") — an id collision
|
|
72
|
+
// between an umbrella-declared node and a namespaced include can pass
|
|
73
|
+
// composeIncludes (which only grafts) while still being invalid, so
|
|
74
|
+
// this must be checked here too, not just on compile.
|
|
75
|
+
const validationIssues = validate(composed);
|
|
76
|
+
if (validationIssues.length > 0) {
|
|
77
|
+
// fall back to the raw model (include nodes as placeholders); it
|
|
78
|
+
// still renders, unlike the unsound composed result
|
|
79
|
+
issues.push(...validationIssues);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
model = composed;
|
|
83
|
+
for (const w of warnings)
|
|
84
|
+
issues.push({ message: w });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
// the raw model still renders (include nodes as placeholders); say why
|
|
89
|
+
issues.push({ message: `Includes not expanded: ${errMessage(e)}` });
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
diagrams.push({ name, model, issues, editable });
|
|
93
|
+
}
|
|
94
|
+
return { status: 200, body: { diagrams } };
|
|
95
|
+
}
|
|
96
|
+
/** All layout overlays under `diagramsDir`, keyed by diagram name. Corrupt
|
|
97
|
+
* overlays are skipped, never fatal. */
|
|
98
|
+
export async function listLayouts(diagramsDir) {
|
|
99
|
+
const layouts = {};
|
|
100
|
+
for (const name of await walkFiles(diagramsDir, '.layout.json')) {
|
|
101
|
+
try {
|
|
102
|
+
layouts[name] = JSON.parse(await readFile(path.join(diagramsDir, `${name}.layout.json`), 'utf8'));
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
/* skip corrupt overlay */
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { status: 200, body: { layouts } };
|
|
109
|
+
}
|
|
110
|
+
/** All drawings sidecars under `diagramsDir`, keyed by diagram name. Corrupt
|
|
111
|
+
* files are skipped, never fatal — same contract as listLayouts. */
|
|
112
|
+
export async function listDrawings(diagramsDir) {
|
|
113
|
+
const drawings = {};
|
|
114
|
+
for (const name of await walkFiles(diagramsDir, '.drawings.json')) {
|
|
115
|
+
try {
|
|
116
|
+
drawings[name] = JSON.parse(await readFile(path.join(diagramsDir, `${name}.drawings.json`), 'utf8'));
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
/* skip corrupt sidecar */
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return { status: 200, body: { drawings } };
|
|
123
|
+
}
|
|
124
|
+
/** the JSON source (+ sibling layout and drawings) of a designer-owned diagram — the studio
|
|
125
|
+
* reads these directly so it never depends on a compile watcher for its own files */
|
|
126
|
+
export async function readDiagram(diagramsDir, name) {
|
|
127
|
+
if (!isSafeName(name))
|
|
128
|
+
return { status: 400, body: { issues: [{ message: `Unsafe name '${name}'` }] } };
|
|
129
|
+
let model;
|
|
130
|
+
try {
|
|
131
|
+
model = JSON.parse(await readFile(path.join(diagramsDir, `${name}.diagram.json`), 'utf8'));
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return { status: 404, body: { issues: [{ message: `No diagram source '${name}'` }] } };
|
|
135
|
+
}
|
|
136
|
+
let layout;
|
|
137
|
+
try {
|
|
138
|
+
layout = JSON.parse(await readFile(path.join(diagramsDir, `${name}.layout.json`), 'utf8'));
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
layout = undefined;
|
|
142
|
+
}
|
|
143
|
+
let drawings;
|
|
144
|
+
try {
|
|
145
|
+
drawings = JSON.parse(await readFile(path.join(diagramsDir, `${name}.drawings.json`), 'utf8'));
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
drawings = undefined;
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
status: 200,
|
|
152
|
+
body: {
|
|
153
|
+
model,
|
|
154
|
+
...(layout !== undefined ? { layout } : {}),
|
|
155
|
+
...(drawings !== undefined ? { drawings } : {}),
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/** Composed read of an editable source — the studio's view-refresh after a
|
|
160
|
+
* save. Sources without includes pass through untouched. */
|
|
161
|
+
export async function readComposedDiagram(diagramsDir, name) {
|
|
162
|
+
if (!isSafeName(name))
|
|
163
|
+
return { status: 400, body: { issues: [{ message: `Unsafe name '${name}'` }] } };
|
|
164
|
+
const file = path.join(diagramsDir, `${name}.diagram.json`);
|
|
165
|
+
let model;
|
|
166
|
+
try {
|
|
167
|
+
model = JSON.parse(await readFile(file, 'utf8'));
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return { status: 404, body: { issues: [{ message: `No diagram source '${name}'` }] } };
|
|
171
|
+
}
|
|
172
|
+
if (!hasIncludes(model))
|
|
173
|
+
return { status: 200, body: { model } };
|
|
174
|
+
try {
|
|
175
|
+
const { model: composed, warnings } = await composeIncludes(model, path.resolve(file), lockedResolver(diagramsDir));
|
|
176
|
+
// Same soundness check as listDiagramModels: a composed model that fails
|
|
177
|
+
// validation must never reach the renderer, so refuse it like a failed
|
|
178
|
+
// compose instead of returning 200 with an unsound model.
|
|
179
|
+
const issues = validate(composed);
|
|
180
|
+
if (issues.length > 0)
|
|
181
|
+
return { status: 409, body: { issues } };
|
|
182
|
+
return { status: 200, body: { model: composed, ...(warnings.length > 0 ? { warnings } : {}) } };
|
|
183
|
+
}
|
|
184
|
+
catch (e) {
|
|
185
|
+
return { status: 409, body: { issues: [{ message: errMessage(e) }] } };
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
export async function saveDiagram(diagramsDir, name, payload) {
|
|
189
|
+
if (!isSafeName(name))
|
|
190
|
+
return { status: 400, body: { issues: [{ message: `Unsafe name '${name}'` }] } };
|
|
191
|
+
const p = payload;
|
|
192
|
+
const arraysOk = p !== null &&
|
|
193
|
+
p.version === 1 &&
|
|
194
|
+
Array.isArray(p.nodes) &&
|
|
195
|
+
Array.isArray(p.containment) &&
|
|
196
|
+
Array.isArray(p.relations) &&
|
|
197
|
+
Array.isArray(p.layers) &&
|
|
198
|
+
Array.isArray(p.planes);
|
|
199
|
+
if (!arraysOk) {
|
|
200
|
+
return { status: 400, body: { issues: [{ message: 'Not a version-1 diagram model' }] } };
|
|
201
|
+
}
|
|
202
|
+
const issues = validate(payload);
|
|
203
|
+
if (issues.length > 0)
|
|
204
|
+
return { status: 400, body: { issues } };
|
|
205
|
+
const target = path.join(diagramsDir, `${name}.diagram.json`);
|
|
206
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
207
|
+
await writeFileAtomic(target, `${JSON.stringify(payload, null, 2)}\n`);
|
|
208
|
+
return { status: 200, body: { ok: true } };
|
|
209
|
+
}
|
|
210
|
+
/** Move a designer-owned diagram (and its sibling layout, if any) to a new name,
|
|
211
|
+
* rewriting the model's internal id/name to match so the file stays self-consistent. */
|
|
212
|
+
export async function renameDiagram(diagramsDir, from, to) {
|
|
213
|
+
if (!isSafeName(from) || !isSafeName(to)) {
|
|
214
|
+
return { status: 400, body: { issues: [{ message: `Unsafe name '${isSafeName(from) ? to : from}'` }] } };
|
|
215
|
+
}
|
|
216
|
+
if (from === to)
|
|
217
|
+
return { status: 400, body: { issues: [{ message: 'New name is the same as the old' }] } };
|
|
218
|
+
const fromDiagram = path.join(diagramsDir, `${from}.diagram.json`);
|
|
219
|
+
const toDiagram = path.join(diagramsDir, `${to}.diagram.json`);
|
|
220
|
+
let raw;
|
|
221
|
+
try {
|
|
222
|
+
raw = await readFile(fromDiagram, 'utf8');
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return { status: 404, body: { issues: [{ message: `No diagram source '${from}'` }] } };
|
|
226
|
+
}
|
|
227
|
+
try {
|
|
228
|
+
await access(toDiagram);
|
|
229
|
+
return { status: 409, body: { issues: [{ message: `A diagram named '${to}' already exists` }] } };
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
/* target free — proceed */
|
|
233
|
+
}
|
|
234
|
+
let model;
|
|
235
|
+
try {
|
|
236
|
+
model = JSON.parse(raw);
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
return { status: 400, body: { issues: [{ message: `Corrupt diagram source '${from}'` }] } };
|
|
240
|
+
}
|
|
241
|
+
model['id'] = to;
|
|
242
|
+
model['name'] = to;
|
|
243
|
+
await mkdir(path.dirname(toDiagram), { recursive: true });
|
|
244
|
+
await writeFileAtomic(toDiagram, `${JSON.stringify(model, null, 2)}\n`);
|
|
245
|
+
await unlink(fromDiagram);
|
|
246
|
+
// Carry the layout over when it exists; its absence is not an error.
|
|
247
|
+
try {
|
|
248
|
+
await rename(path.join(diagramsDir, `${from}.layout.json`), path.join(diagramsDir, `${to}.layout.json`));
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
/* no layout to move */
|
|
252
|
+
}
|
|
253
|
+
try {
|
|
254
|
+
await rename(path.join(diagramsDir, `${from}.drawings.json`), path.join(diagramsDir, `${to}.drawings.json`));
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
/* no drawings to move */
|
|
258
|
+
}
|
|
259
|
+
return { status: 200, body: { ok: true } };
|
|
260
|
+
}
|
|
261
|
+
/** Promote a JSON-owned diagram to a generated `.diagram.ts`. See `ejectDiagram`
|
|
262
|
+
* for the round-trip guarantee; this just maps its failure codes to statuses. */
|
|
263
|
+
export async function ejectDiagramSource(diagramsDir, artifactsDir, name) {
|
|
264
|
+
if (!isSafeName(name))
|
|
265
|
+
return { status: 400, body: { issues: [{ message: `Unsafe name '${name}'` }] } };
|
|
266
|
+
try {
|
|
267
|
+
await ejectDiagram(diagramsDir, artifactsDir, name);
|
|
268
|
+
return { status: 200, body: { ok: true } };
|
|
269
|
+
}
|
|
270
|
+
catch (e) {
|
|
271
|
+
if (e instanceof EjectError) {
|
|
272
|
+
const status = e.code === 'not-found' ? 404 : e.code === 'invalid' ? 400 : 409;
|
|
273
|
+
return { status, body: { issues: [{ message: e.message }] } };
|
|
274
|
+
}
|
|
275
|
+
throw e;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
export async function saveLayout(diagramsDir, name, payload) {
|
|
279
|
+
if (!isSafeName(name))
|
|
280
|
+
return { status: 400, body: { issues: [{ message: `Unsafe name '${name}'` }] } };
|
|
281
|
+
// Core's structural guard mirrors the old inline checks (version 1, nested
|
|
282
|
+
// numeric x/y planes, optional positive-finite sizes) — one source of truth
|
|
283
|
+
// shared with the client-side artifact loader.
|
|
284
|
+
if (!isLayoutOverlay(payload))
|
|
285
|
+
return { status: 400, body: { issues: [{ message: 'Not a version-1 layout overlay' }] } };
|
|
286
|
+
const target = path.join(diagramsDir, `${name}.layout.json`);
|
|
287
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
288
|
+
await writeFileAtomic(target, `${JSON.stringify(payload, null, 2)}\n`);
|
|
289
|
+
return { status: 200, body: { ok: true } };
|
|
290
|
+
}
|
|
291
|
+
/** Persist the drawings sidecar. An overlay in which no bucket holds a stroke
|
|
292
|
+
* DELETES the file instead of writing it: a diagram that never had drawings
|
|
293
|
+
* must never grow an empty `<name>.drawings.json`, and erasing the last stroke
|
|
294
|
+
* should leave the tree as it was. */
|
|
295
|
+
export async function saveDrawings(diagramsDir, name, payload) {
|
|
296
|
+
if (!isSafeName(name))
|
|
297
|
+
return { status: 400, body: { issues: [{ message: `Unsafe name '${name}'` }] } };
|
|
298
|
+
if (!isDrawings(payload))
|
|
299
|
+
return { status: 400, body: { issues: [{ message: 'Not a version-1 drawings overlay' }] } };
|
|
300
|
+
const target = path.join(diagramsDir, `${name}.drawings.json`);
|
|
301
|
+
const hasStrokes = Object.values(payload.planes).some((bucket) => bucket.length > 0);
|
|
302
|
+
if (!hasStrokes) {
|
|
303
|
+
try {
|
|
304
|
+
await unlink(target);
|
|
305
|
+
}
|
|
306
|
+
catch (e) {
|
|
307
|
+
// ENOENT only: there was nothing to delete, which is the ordinary case for
|
|
308
|
+
// a diagram that never had ink. Anything else (EACCES, EPERM, EISDIR) means
|
|
309
|
+
// the strokes are still on disk — rethrow so dispatch turns it into a 500
|
|
310
|
+
// and useEditor.save surfaces it, instead of answering `{ ok: true }` and
|
|
311
|
+
// letting the erased strokes resurrect on the next boot.
|
|
312
|
+
if (e.code !== 'ENOENT')
|
|
313
|
+
throw e;
|
|
314
|
+
}
|
|
315
|
+
return { status: 200, body: { ok: true } };
|
|
316
|
+
}
|
|
317
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
318
|
+
await writeFileAtomic(target, `${JSON.stringify(payload, null, 2)}\n`);
|
|
319
|
+
return { status: 200, body: { ok: true } };
|
|
320
|
+
}
|
|
321
|
+
export async function readLibrary(diagramsDir) {
|
|
322
|
+
try {
|
|
323
|
+
const raw = await readFile(path.join(diagramsDir, 'library.json'), 'utf8');
|
|
324
|
+
return { status: 200, body: JSON.parse(raw) };
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
return { status: 200, body: { categories: [], entries: [] } };
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
// Must cover every NodeTemplate presentation channel — 'shape' included, or a
|
|
331
|
+
// user library holding an imported silhouette is rejected on save.
|
|
332
|
+
const TEMPLATE_STRING_KEYS = new Set(['type', 'color', 'image', 'shape']);
|
|
333
|
+
const TEMPLATE_NUMBER_KEYS = new Set(['width', 'height']);
|
|
334
|
+
/** Persist the whole user library. Validates internal consistency only — bundled
|
|
335
|
+
* packs are merged client-side and never written here. */
|
|
336
|
+
export async function saveLibrary(diagramsDir, payload) {
|
|
337
|
+
const p = payload;
|
|
338
|
+
if (p === null || !Array.isArray(p.categories) || !Array.isArray(p.entries)) {
|
|
339
|
+
return { status: 400, body: { issues: [{ message: 'Not a library { categories, entries }' }] } };
|
|
340
|
+
}
|
|
341
|
+
const catIds = new Set();
|
|
342
|
+
for (const c of p.categories) {
|
|
343
|
+
const cat = c;
|
|
344
|
+
if (typeof cat.id !== 'string' || typeof cat.name !== 'string') {
|
|
345
|
+
return { status: 400, body: { issues: [{ message: 'Category needs string id and name' }] } };
|
|
346
|
+
}
|
|
347
|
+
if (catIds.has(cat.id))
|
|
348
|
+
return { status: 400, body: { issues: [{ message: `Duplicate category '${cat.id}'` }] } };
|
|
349
|
+
catIds.add(cat.id);
|
|
350
|
+
}
|
|
351
|
+
const entryIds = new Set();
|
|
352
|
+
for (const e of p.entries) {
|
|
353
|
+
const entry = e;
|
|
354
|
+
if (typeof entry.id !== 'string' || typeof entry.name !== 'string' || typeof entry.category !== 'string') {
|
|
355
|
+
return { status: 400, body: { issues: [{ message: 'Entry needs string id, name, category' }] } };
|
|
356
|
+
}
|
|
357
|
+
if (!catIds.has(entry.category)) {
|
|
358
|
+
return { status: 400, body: { issues: [{ message: `Entry '${entry.id}' references unknown category '${entry.category}'` }] } };
|
|
359
|
+
}
|
|
360
|
+
if (entryIds.has(entry.id))
|
|
361
|
+
return { status: 400, body: { issues: [{ message: `Duplicate entry '${entry.id}'` }] } };
|
|
362
|
+
entryIds.add(entry.id);
|
|
363
|
+
const t = entry.template;
|
|
364
|
+
if (t === null || typeof t !== 'object' || Array.isArray(t)) {
|
|
365
|
+
return { status: 400, body: { issues: [{ message: `Entry '${entry.id}' missing template` }] } };
|
|
366
|
+
}
|
|
367
|
+
for (const [k, v] of Object.entries(t)) {
|
|
368
|
+
const ok = TEMPLATE_STRING_KEYS.has(k) ? typeof v === 'string' : TEMPLATE_NUMBER_KEYS.has(k) ? typeof v === 'number' : false;
|
|
369
|
+
if (!ok)
|
|
370
|
+
return { status: 400, body: { issues: [{ message: `Entry '${entry.id}' has invalid template field '${k}'` }] } };
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
const target = path.join(diagramsDir, 'library.json');
|
|
374
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
375
|
+
await writeFileAtomic(target, `${JSON.stringify(payload, null, 2)}\n`);
|
|
376
|
+
return { status: 200, body: { ok: true } };
|
|
377
|
+
}
|
|
378
|
+
// Keys here must stay in sync with IMAGE_REF's extension group (@diagc/core) —
|
|
379
|
+
// an extension accepted by the regex but missing here would 404 on read.
|
|
380
|
+
const ASSET_EXT = {
|
|
381
|
+
'image/png': 'png',
|
|
382
|
+
'image/jpeg': 'jpg',
|
|
383
|
+
'image/svg+xml': 'svg',
|
|
384
|
+
'image/webp': 'webp',
|
|
385
|
+
'image/gif': 'gif',
|
|
386
|
+
};
|
|
387
|
+
const ASSET_TYPE = Object.fromEntries(Object.entries(ASSET_EXT).map(([t, e]) => [e, t]));
|
|
388
|
+
export const MAX_ASSET_BYTES = 5 * 1024 * 1024;
|
|
389
|
+
/** store image bytes under their content hash; identical drops dedupe to one file */
|
|
390
|
+
export async function saveAsset(diagramsDir, contentType, bytes) {
|
|
391
|
+
const ext = ASSET_EXT[contentType.split(';')[0]?.trim() ?? ''];
|
|
392
|
+
if (ext === undefined) {
|
|
393
|
+
return { status: 400, body: { issues: [{ message: `Unsupported image type '${contentType}'` }] } };
|
|
394
|
+
}
|
|
395
|
+
if (bytes.length === 0 || bytes.length > MAX_ASSET_BYTES) {
|
|
396
|
+
return { status: 400, body: { issues: [{ message: `Image must be 1 byte to ${MAX_ASSET_BYTES / 1024 / 1024} MB` }] } };
|
|
397
|
+
}
|
|
398
|
+
const name = `${createHash('sha256').update(bytes).digest('hex').slice(0, 12)}.${ext}`;
|
|
399
|
+
const target = path.join(diagramsDir, 'assets', name);
|
|
400
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
401
|
+
try {
|
|
402
|
+
await access(target); // already stored — content hash guarantees same bytes
|
|
403
|
+
}
|
|
404
|
+
catch {
|
|
405
|
+
await writeFileAtomic(target, bytes);
|
|
406
|
+
}
|
|
407
|
+
return { status: 200, body: { name } };
|
|
408
|
+
}
|
|
409
|
+
export async function readAsset(diagramsDir, name) {
|
|
410
|
+
if (!IMAGE_REF.test(name))
|
|
411
|
+
return { status: 400, body: { issues: [{ message: `Unsafe asset name '${name}'` }] } };
|
|
412
|
+
try {
|
|
413
|
+
const bytes = await readFile(path.join(diagramsDir, 'assets', name));
|
|
414
|
+
const ext = name.split('.').at(-1) ?? '';
|
|
415
|
+
return { status: 200, body: null, bytes, contentType: ASSET_TYPE[ext === 'jpeg' ? 'jpg' : ext] ?? 'application/octet-stream' };
|
|
416
|
+
}
|
|
417
|
+
catch {
|
|
418
|
+
return { status: 404, body: { issues: [{ message: `No asset '${name}'` }] } };
|
|
419
|
+
}
|
|
420
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// The studio's read/write API, shared by two hosts: the Vite dev middleware in
|
|
2
|
+
// `apps/studio` (which loads this module lazily, through Vite's own pipeline)
|
|
3
|
+
// and the packaged `diagc studio` server, which has no Vite at all. One route
|
|
4
|
+
// table, so an added route cannot exist in only one of them.
|
|
5
|
+
export * as handlers from './handlers.js';
|
|
6
|
+
export { handleApiRequest, runRoute, } from './dispatch.js';
|
|
7
|
+
export { matchRoute, ROUTES } from './routes.js';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
type Handlers = typeof import('./handlers.js');
|
|
2
|
+
/** One route handler's result: handlers' JSON envelope plus readAsset's
|
|
3
|
+
* optional `bytes`/`contentType`, which the wrapper streams raw. */
|
|
4
|
+
export type RouteResult = Awaited<ReturnType<Handlers['readAsset']>>;
|
|
5
|
+
/** Capture groups, already-read body, content-type, and dirs for a request. */
|
|
6
|
+
export interface RouteCtx {
|
|
7
|
+
match: RegExpMatchArray;
|
|
8
|
+
body: unknown;
|
|
9
|
+
/** content-type of the raw body (only the asset-upload route reads it) */
|
|
10
|
+
contentType?: string;
|
|
11
|
+
diagramsDir: string;
|
|
12
|
+
artifactsDir: string;
|
|
13
|
+
}
|
|
14
|
+
export type BodyMode = 'none' | 'json' | 'raw';
|
|
15
|
+
export interface Route {
|
|
16
|
+
method: string;
|
|
17
|
+
/** non-global regex against `req.url`; captures are passed to the handler */
|
|
18
|
+
pattern: RegExp;
|
|
19
|
+
/** 'json' parses the body (malformed JSON → 400), 'raw' passes bytes
|
|
20
|
+
* through, 'none' (default) leaves the body unread. */
|
|
21
|
+
bodyMode?: BodyMode;
|
|
22
|
+
handler: (h: Handlers, ctx: RouteCtx) => Promise<RouteResult>;
|
|
23
|
+
}
|
|
24
|
+
export declare const ROUTES: Route[];
|
|
25
|
+
/** The route matching `method` + `url`, or undefined. First match wins. */
|
|
26
|
+
export declare function matchRoute(method: string | undefined, url: string): Route | undefined;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Route table: the first pattern a request matches wins, so entry order here
|
|
2
|
+
// IS the dispatch order (the rename entry must precede the generic save entry).
|
|
3
|
+
export const ROUTES = [
|
|
4
|
+
// --- assets: raw body in, raw bytes out ---
|
|
5
|
+
{ method: 'POST', pattern: /^\/api\/assets$/, bodyMode: 'raw', handler: (h, c) => h.saveAsset(c.diagramsDir, c.contentType ?? '', c.body) },
|
|
6
|
+
{ method: 'GET', pattern: /^\/api\/assets\/([^/]+)$/, handler: (h, c) => h.readAsset(c.diagramsDir, decodeURIComponent(c.match[1] ?? '')) },
|
|
7
|
+
// --- library ---
|
|
8
|
+
{ method: 'GET', pattern: /^\/api\/library$/, handler: (h, c) => h.readLibrary(c.diagramsDir) },
|
|
9
|
+
{ method: 'PUT', pattern: /^\/api\/library$/, bodyMode: 'json', handler: (h, c) => h.saveLibrary(c.diagramsDir, c.body) },
|
|
10
|
+
// --- diagrams & layouts ---
|
|
11
|
+
{ method: 'GET', pattern: /^\/api\/diagrams$/, handler: (h, c) => h.listDiagramModels(c.diagramsDir, c.artifactsDir) },
|
|
12
|
+
{ method: 'GET', pattern: /^\/api\/layouts$/, handler: (h, c) => h.listLayouts(c.diagramsDir) },
|
|
13
|
+
{ method: 'GET', pattern: /^\/api\/drawings$/, handler: (h, c) => h.listDrawings(c.diagramsDir) },
|
|
14
|
+
// Composed read must precede the generic read, whose `(.+)` would swallow
|
|
15
|
+
// `<name>/composed` as a filename.
|
|
16
|
+
{ method: 'GET', pattern: /^\/api\/diagrams\/(.+)\/composed$/, handler: (h, c) => h.readComposedDiagram(c.diagramsDir, decodeURIComponent(c.match[1] ?? '')) },
|
|
17
|
+
{ method: 'GET', pattern: /^\/api\/diagrams\/(.+)$/, handler: (h, c) => h.readDiagram(c.diagramsDir, decodeURIComponent(c.match[1] ?? '')) },
|
|
18
|
+
// Rename must be checked before the generic save route, whose `(.+)`
|
|
19
|
+
// would otherwise swallow `<from>/rename` as a filename.
|
|
20
|
+
{ method: 'POST', pattern: /^\/api\/diagrams\/(.+)\/rename$/, bodyMode: 'json', handler: async (h, c) => {
|
|
21
|
+
const to = c.body?.to;
|
|
22
|
+
if (typeof to !== 'string')
|
|
23
|
+
return { status: 400, body: { issues: [{ message: "Missing 'to' name" }] } };
|
|
24
|
+
return h.renameDiagram(c.diagramsDir, decodeURIComponent(c.match[1] ?? ''), to);
|
|
25
|
+
} },
|
|
26
|
+
// Eject must also precede the generic save route, whose `(.+)` would
|
|
27
|
+
// swallow `<name>/eject` as a filename.
|
|
28
|
+
{ method: 'POST', pattern: /^\/api\/diagrams\/(.+)\/eject$/, handler: (h, c) => h.ejectDiagramSource(c.diagramsDir, c.artifactsDir, decodeURIComponent(c.match[1] ?? '')) },
|
|
29
|
+
{ method: 'POST', pattern: /^\/api\/(diagrams|layouts|drawings)\/(.+)$/, bodyMode: 'json', handler: (h, c) => {
|
|
30
|
+
// decodeURIComponent throws on malformed percent-encoding — kept
|
|
31
|
+
// inside the boundary so a bad name yields 500, never a crash.
|
|
32
|
+
const name = decodeURIComponent(c.match[2] ?? '');
|
|
33
|
+
return c.match[1] === 'diagrams'
|
|
34
|
+
? h.saveDiagram(c.diagramsDir, name, c.body)
|
|
35
|
+
: c.match[1] === 'layouts'
|
|
36
|
+
? h.saveLayout(c.diagramsDir, name, c.body)
|
|
37
|
+
: h.saveDrawings(c.diagramsDir, name, c.body);
|
|
38
|
+
} },
|
|
39
|
+
];
|
|
40
|
+
/** The route matching `method` + `url`, or undefined. First match wins. */
|
|
41
|
+
export function matchRoute(method, url) {
|
|
42
|
+
return ROUTES.find((r) => r.method === method && r.pattern.test(url));
|
|
43
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write `data` to `target` atomically: stage it in a hidden temp file in the
|
|
3
|
+
* same directory (same filesystem, so `rename` is atomic), then rename over
|
|
4
|
+
* the target. A crash or full disk mid-write leaves the previous content
|
|
5
|
+
* intact instead of a truncated file — these are committed sources, not
|
|
6
|
+
* regenerable build output.
|
|
7
|
+
*/
|
|
8
|
+
export declare function writeFileAtomic(target: string, data: string | Buffer): Promise<void>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { rename, unlink, writeFile } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
/**
|
|
5
|
+
* Write `data` to `target` atomically: stage it in a hidden temp file in the
|
|
6
|
+
* same directory (same filesystem, so `rename` is atomic), then rename over
|
|
7
|
+
* the target. A crash or full disk mid-write leaves the previous content
|
|
8
|
+
* intact instead of a truncated file — these are committed sources, not
|
|
9
|
+
* regenerable build output.
|
|
10
|
+
*/
|
|
11
|
+
export async function writeFileAtomic(target, data) {
|
|
12
|
+
const tmp = path.join(path.dirname(target), `.${path.basename(target)}.${randomBytes(6).toString('hex')}.tmp`);
|
|
13
|
+
try {
|
|
14
|
+
await writeFile(tmp, data);
|
|
15
|
+
await rename(tmp, target);
|
|
16
|
+
}
|
|
17
|
+
catch (e) {
|
|
18
|
+
await unlink(tmp).catch(() => { });
|
|
19
|
+
throw e;
|
|
20
|
+
}
|
|
21
|
+
}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
interface Args {
|
|
2
|
+
command: string;
|
|
3
|
+
files: string[];
|
|
4
|
+
out: string;
|
|
5
|
+
images: boolean;
|
|
6
|
+
updateIncludes: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Parse argv into command + flags. Unknown flags (anything `--…` that is not
|
|
9
|
+
* recognized) are an error rather than being silently treated as a file path,
|
|
10
|
+
* so a typo surfaces loudly instead of quietly skewing the file set. */
|
|
11
|
+
export declare function parseArgs(argv: string[]): Args;
|
|
12
|
+
/** Thrown by {@link parseArgs} for `--help`/`-h`; `main` prints usage and exits 0. */
|
|
13
|
+
export declare class HelpRequested extends Error {
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
16
|
+
/** Thrown by {@link parseArgs} for an unrecognized flag; `main` prints the
|
|
17
|
+
* offending flag plus usage and exits 1. */
|
|
18
|
+
export declare class UnknownFlagError extends Error {
|
|
19
|
+
constructor(flag: string);
|
|
20
|
+
}
|
|
21
|
+
export {};
|