alchemy 2.0.0-beta.59 → 2.0.0-beta.60
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/README.md +1 -1
- package/bin/exec.js +684 -758
- package/bin/exec.js.map +1 -1
- package/lib/AWS/AuthProvider.d.ts.map +1 -1
- package/lib/AWS/AuthProvider.js +22 -9
- package/lib/AWS/AuthProvider.js.map +1 -1
- package/lib/AWS/AutoScaling/LaunchTemplate.d.ts +1 -1
- package/lib/AWS/AutoScaling/LaunchTemplate.js +1 -1
- package/lib/AWS/CloudWatch/Dashboard.d.ts.map +1 -1
- package/lib/AWS/CloudWatch/Dashboard.js +4 -1
- package/lib/AWS/CloudWatch/Dashboard.js.map +1 -1
- package/lib/AWS/Credentials.d.ts +58 -2
- package/lib/AWS/Credentials.d.ts.map +1 -1
- package/lib/AWS/Credentials.js +124 -2
- package/lib/AWS/Credentials.js.map +1 -1
- package/lib/AWS/EC2/Image.d.ts.map +1 -1
- package/lib/AWS/EC2/Image.js +4 -1
- package/lib/AWS/EC2/Image.js.map +1 -1
- package/lib/AWS/EC2/Instance.d.ts +4 -3
- package/lib/AWS/EC2/Instance.d.ts.map +1 -1
- package/lib/AWS/EC2/Instance.js +4 -2
- package/lib/AWS/EC2/Instance.js.map +1 -1
- package/lib/AWS/EC2/KeyPair.d.ts +87 -0
- package/lib/AWS/EC2/KeyPair.d.ts.map +1 -0
- package/lib/AWS/EC2/KeyPair.js +198 -0
- package/lib/AWS/EC2/KeyPair.js.map +1 -0
- package/lib/AWS/EC2/NetworkAcl.d.ts.map +1 -1
- package/lib/AWS/EC2/NetworkAcl.js +4 -1
- package/lib/AWS/EC2/NetworkAcl.js.map +1 -1
- package/lib/AWS/EC2/SecurityGroup.d.ts.map +1 -1
- package/lib/AWS/EC2/SecurityGroup.js +4 -1
- package/lib/AWS/EC2/SecurityGroup.js.map +1 -1
- package/lib/AWS/EC2/SecurityGroupRule.d.ts.map +1 -1
- package/lib/AWS/EC2/SecurityGroupRule.js +14 -7
- package/lib/AWS/EC2/SecurityGroupRule.js.map +1 -1
- package/lib/AWS/EC2/Subnet.d.ts.map +1 -1
- package/lib/AWS/EC2/Subnet.js +29 -5
- package/lib/AWS/EC2/Subnet.js.map +1 -1
- package/lib/AWS/EC2/hosted.d.ts +8 -10
- package/lib/AWS/EC2/hosted.d.ts.map +1 -1
- package/lib/AWS/EC2/hosted.js +81 -67
- package/lib/AWS/EC2/hosted.js.map +1 -1
- package/lib/AWS/EC2/index.d.ts +1 -0
- package/lib/AWS/EC2/index.d.ts.map +1 -1
- package/lib/AWS/EC2/index.js +1 -0
- package/lib/AWS/EC2/index.js.map +1 -1
- package/lib/AWS/ECS/Task.d.ts +8 -8
- package/lib/AWS/ECS/Task.d.ts.map +1 -1
- package/lib/AWS/ECS/Task.js +82 -56
- package/lib/AWS/ECS/Task.js.map +1 -1
- package/lib/AWS/IAM/Role.d.ts +19 -4
- package/lib/AWS/IAM/Role.d.ts.map +1 -1
- package/lib/AWS/IAM/Role.js +81 -16
- package/lib/AWS/IAM/Role.js.map +1 -1
- package/lib/AWS/Lambda/CreateAuthToken.d.ts +28 -0
- package/lib/AWS/Lambda/CreateAuthToken.d.ts.map +1 -0
- package/lib/AWS/Lambda/CreateAuthToken.js +3 -0
- package/lib/AWS/Lambda/CreateAuthToken.js.map +1 -0
- package/lib/AWS/Lambda/CreateAuthTokenHttp.d.ts +3 -0
- package/lib/AWS/Lambda/CreateAuthTokenHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/CreateAuthTokenHttp.js +11 -0
- package/lib/AWS/Lambda/CreateAuthTokenHttp.js.map +1 -0
- package/lib/AWS/Lambda/CreateShellAuthToken.d.ts +27 -0
- package/lib/AWS/Lambda/CreateShellAuthToken.d.ts.map +1 -0
- package/lib/AWS/Lambda/CreateShellAuthToken.js +3 -0
- package/lib/AWS/Lambda/CreateShellAuthToken.js.map +1 -0
- package/lib/AWS/Lambda/CreateShellAuthTokenHttp.d.ts +3 -0
- package/lib/AWS/Lambda/CreateShellAuthTokenHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/CreateShellAuthTokenHttp.js +11 -0
- package/lib/AWS/Lambda/CreateShellAuthTokenHttp.js.map +1 -0
- package/lib/AWS/Lambda/DeleteMicrovmImageVersion.d.ts +18 -0
- package/lib/AWS/Lambda/DeleteMicrovmImageVersion.d.ts.map +1 -0
- package/lib/AWS/Lambda/DeleteMicrovmImageVersion.js +3 -0
- package/lib/AWS/Lambda/DeleteMicrovmImageVersion.js.map +1 -0
- package/lib/AWS/Lambda/DeleteMicrovmImageVersionHttp.d.ts +3 -0
- package/lib/AWS/Lambda/DeleteMicrovmImageVersionHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/DeleteMicrovmImageVersionHttp.js +12 -0
- package/lib/AWS/Lambda/DeleteMicrovmImageVersionHttp.js.map +1 -0
- package/lib/AWS/Lambda/Function.d.ts +4 -2
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +10 -5
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Lambda/GetMicrovm.d.ts +23 -0
- package/lib/AWS/Lambda/GetMicrovm.d.ts.map +1 -0
- package/lib/AWS/Lambda/GetMicrovm.js +3 -0
- package/lib/AWS/Lambda/GetMicrovm.js.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmHttp.d.ts +3 -0
- package/lib/AWS/Lambda/GetMicrovmHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmHttp.js +13 -0
- package/lib/AWS/Lambda/GetMicrovmHttp.js.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImage.d.ts +23 -0
- package/lib/AWS/Lambda/GetMicrovmImage.d.ts.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImage.js +3 -0
- package/lib/AWS/Lambda/GetMicrovmImage.js.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImageBuild.d.ts +18 -0
- package/lib/AWS/Lambda/GetMicrovmImageBuild.d.ts.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImageBuild.js +3 -0
- package/lib/AWS/Lambda/GetMicrovmImageBuild.js.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImageBuildHttp.d.ts +3 -0
- package/lib/AWS/Lambda/GetMicrovmImageBuildHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImageBuildHttp.js +12 -0
- package/lib/AWS/Lambda/GetMicrovmImageBuildHttp.js.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImageHttp.d.ts +3 -0
- package/lib/AWS/Lambda/GetMicrovmImageHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImageHttp.js +12 -0
- package/lib/AWS/Lambda/GetMicrovmImageHttp.js.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImageVersion.d.ts +18 -0
- package/lib/AWS/Lambda/GetMicrovmImageVersion.d.ts.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImageVersion.js +3 -0
- package/lib/AWS/Lambda/GetMicrovmImageVersion.js.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImageVersionHttp.d.ts +3 -0
- package/lib/AWS/Lambda/GetMicrovmImageVersionHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/GetMicrovmImageVersionHttp.js +12 -0
- package/lib/AWS/Lambda/GetMicrovmImageVersionHttp.js.map +1 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImageVersions.d.ts +17 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImageVersions.d.ts.map +1 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImageVersions.js +3 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImageVersions.js.map +1 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImageVersionsHttp.d.ts +3 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImageVersionsHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImageVersionsHttp.js +10 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImageVersionsHttp.js.map +1 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImages.d.ts +17 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImages.d.ts.map +1 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImages.js +3 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImages.js.map +1 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImagesHttp.d.ts +3 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImagesHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImagesHttp.js +10 -0
- package/lib/AWS/Lambda/ListManagedMicrovmImagesHttp.js.map +1 -0
- package/lib/AWS/Lambda/ListMicrovmImageBuilds.d.ts +19 -0
- package/lib/AWS/Lambda/ListMicrovmImageBuilds.d.ts.map +1 -0
- package/lib/AWS/Lambda/ListMicrovmImageBuilds.js +3 -0
- package/lib/AWS/Lambda/ListMicrovmImageBuilds.js.map +1 -0
- package/lib/AWS/Lambda/ListMicrovmImageBuildsHttp.d.ts +3 -0
- package/lib/AWS/Lambda/ListMicrovmImageBuildsHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/ListMicrovmImageBuildsHttp.js +12 -0
- package/lib/AWS/Lambda/ListMicrovmImageBuildsHttp.js.map +1 -0
- package/lib/AWS/Lambda/ListMicrovmImageVersions.d.ts +18 -0
- package/lib/AWS/Lambda/ListMicrovmImageVersions.d.ts.map +1 -0
- package/lib/AWS/Lambda/ListMicrovmImageVersions.js +3 -0
- package/lib/AWS/Lambda/ListMicrovmImageVersions.js.map +1 -0
- package/lib/AWS/Lambda/ListMicrovmImageVersionsHttp.d.ts +3 -0
- package/lib/AWS/Lambda/ListMicrovmImageVersionsHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/ListMicrovmImageVersionsHttp.js +12 -0
- package/lib/AWS/Lambda/ListMicrovmImageVersionsHttp.js.map +1 -0
- package/lib/AWS/Lambda/ListMicrovms.d.ts +23 -0
- package/lib/AWS/Lambda/ListMicrovms.d.ts.map +1 -0
- package/lib/AWS/Lambda/ListMicrovms.js +3 -0
- package/lib/AWS/Lambda/ListMicrovms.js.map +1 -0
- package/lib/AWS/Lambda/ListMicrovmsHttp.d.ts +3 -0
- package/lib/AWS/Lambda/ListMicrovmsHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/ListMicrovmsHttp.js +12 -0
- package/lib/AWS/Lambda/ListMicrovmsHttp.js.map +1 -0
- package/lib/AWS/Lambda/MicrovmBinding.d.ts +61 -0
- package/lib/AWS/Lambda/MicrovmBinding.d.ts.map +1 -0
- package/lib/AWS/Lambda/MicrovmBinding.js +279 -0
- package/lib/AWS/Lambda/MicrovmBinding.js.map +1 -0
- package/lib/AWS/Lambda/MicrovmBundle.d.ts +62 -0
- package/lib/AWS/Lambda/MicrovmBundle.d.ts.map +1 -0
- package/lib/AWS/Lambda/MicrovmBundle.js +197 -0
- package/lib/AWS/Lambda/MicrovmBundle.js.map +1 -0
- package/lib/AWS/Lambda/MicrovmImage.d.ts +488 -0
- package/lib/AWS/Lambda/MicrovmImage.d.ts.map +1 -0
- package/lib/AWS/Lambda/MicrovmImage.js +381 -0
- package/lib/AWS/Lambda/MicrovmImage.js.map +1 -0
- package/lib/AWS/Lambda/MicrovmProvider.d.ts +7 -0
- package/lib/AWS/Lambda/MicrovmProvider.d.ts.map +1 -0
- package/lib/AWS/Lambda/MicrovmProvider.js +384 -0
- package/lib/AWS/Lambda/MicrovmProvider.js.map +1 -0
- package/lib/AWS/Lambda/MicrovmRpc.d.ts +50 -0
- package/lib/AWS/Lambda/MicrovmRpc.d.ts.map +1 -0
- package/lib/AWS/Lambda/MicrovmRpc.js +50 -0
- package/lib/AWS/Lambda/MicrovmRpc.js.map +1 -0
- package/lib/AWS/Lambda/MicrovmRuntimeContext.d.ts +9 -0
- package/lib/AWS/Lambda/MicrovmRuntimeContext.d.ts.map +1 -0
- package/lib/AWS/Lambda/MicrovmRuntimeContext.js +67 -0
- package/lib/AWS/Lambda/MicrovmRuntimeContext.js.map +1 -0
- package/lib/AWS/Lambda/NetworkConnector.d.ts +142 -0
- package/lib/AWS/Lambda/NetworkConnector.d.ts.map +1 -0
- package/lib/AWS/Lambda/NetworkConnector.js +283 -0
- package/lib/AWS/Lambda/NetworkConnector.js.map +1 -0
- package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/QueueEventSource.js +1 -0
- package/lib/AWS/Lambda/QueueEventSource.js.map +1 -1
- package/lib/AWS/Lambda/ResumeMicrovm.d.ts +23 -0
- package/lib/AWS/Lambda/ResumeMicrovm.d.ts.map +1 -0
- package/lib/AWS/Lambda/ResumeMicrovm.js +3 -0
- package/lib/AWS/Lambda/ResumeMicrovm.js.map +1 -0
- package/lib/AWS/Lambda/ResumeMicrovmHttp.d.ts +3 -0
- package/lib/AWS/Lambda/ResumeMicrovmHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/ResumeMicrovmHttp.js +11 -0
- package/lib/AWS/Lambda/ResumeMicrovmHttp.js.map +1 -0
- package/lib/AWS/Lambda/RunMicrovm.d.ts +33 -0
- package/lib/AWS/Lambda/RunMicrovm.d.ts.map +1 -0
- package/lib/AWS/Lambda/RunMicrovm.js +3 -0
- package/lib/AWS/Lambda/RunMicrovm.js.map +1 -0
- package/lib/AWS/Lambda/RunMicrovmHttp.d.ts +3 -0
- package/lib/AWS/Lambda/RunMicrovmHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/RunMicrovmHttp.js +13 -0
- package/lib/AWS/Lambda/RunMicrovmHttp.js.map +1 -0
- package/lib/AWS/Lambda/SuspendMicrovm.d.ts +23 -0
- package/lib/AWS/Lambda/SuspendMicrovm.d.ts.map +1 -0
- package/lib/AWS/Lambda/SuspendMicrovm.js +3 -0
- package/lib/AWS/Lambda/SuspendMicrovm.js.map +1 -0
- package/lib/AWS/Lambda/SuspendMicrovmHttp.d.ts +3 -0
- package/lib/AWS/Lambda/SuspendMicrovmHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/SuspendMicrovmHttp.js +11 -0
- package/lib/AWS/Lambda/SuspendMicrovmHttp.js.map +1 -0
- package/lib/AWS/Lambda/TerminateMicrovm.d.ts +23 -0
- package/lib/AWS/Lambda/TerminateMicrovm.d.ts.map +1 -0
- package/lib/AWS/Lambda/TerminateMicrovm.js +3 -0
- package/lib/AWS/Lambda/TerminateMicrovm.js.map +1 -0
- package/lib/AWS/Lambda/TerminateMicrovmHttp.d.ts +3 -0
- package/lib/AWS/Lambda/TerminateMicrovmHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/TerminateMicrovmHttp.js +11 -0
- package/lib/AWS/Lambda/TerminateMicrovmHttp.js.map +1 -0
- package/lib/AWS/Lambda/UpdateMicrovmImageVersion.d.ts +18 -0
- package/lib/AWS/Lambda/UpdateMicrovmImageVersion.d.ts.map +1 -0
- package/lib/AWS/Lambda/UpdateMicrovmImageVersion.js +3 -0
- package/lib/AWS/Lambda/UpdateMicrovmImageVersion.js.map +1 -0
- package/lib/AWS/Lambda/UpdateMicrovmImageVersionHttp.d.ts +3 -0
- package/lib/AWS/Lambda/UpdateMicrovmImageVersionHttp.d.ts.map +1 -0
- package/lib/AWS/Lambda/UpdateMicrovmImageVersionHttp.js +12 -0
- package/lib/AWS/Lambda/UpdateMicrovmImageVersionHttp.js.map +1 -0
- package/lib/AWS/Lambda/index.d.ts +38 -0
- package/lib/AWS/Lambda/index.d.ts.map +1 -1
- package/lib/AWS/Lambda/index.js +38 -0
- package/lib/AWS/Lambda/index.js.map +1 -1
- package/lib/AWS/Providers.d.ts +1 -1
- package/lib/AWS/Providers.d.ts.map +1 -1
- package/lib/AWS/Providers.js +6 -2
- package/lib/AWS/Providers.js.map +1 -1
- package/lib/AWS/RDS/DBClusterParameterGroup.d.ts.map +1 -1
- package/lib/AWS/RDS/DBClusterParameterGroup.js +4 -1
- package/lib/AWS/RDS/DBClusterParameterGroup.js.map +1 -1
- package/lib/AWS/RDS/DBParameterGroup.d.ts.map +1 -1
- package/lib/AWS/RDS/DBParameterGroup.js +4 -1
- package/lib/AWS/RDS/DBParameterGroup.js.map +1 -1
- package/lib/AWS/Region.d.ts.map +1 -1
- package/lib/AWS/Region.js +6 -1
- package/lib/AWS/Region.js.map +1 -1
- package/lib/AWS/S3/Bucket.d.ts.map +1 -1
- package/lib/AWS/S3/Bucket.js +46 -26
- package/lib/AWS/S3/Bucket.js.map +1 -1
- package/lib/AlchemyContext.d.ts +7 -0
- package/lib/AlchemyContext.d.ts.map +1 -1
- package/lib/AlchemyContext.js.map +1 -1
- package/lib/Apply.js +2 -2
- package/lib/Apply.js.map +1 -1
- package/lib/Axiom/Chart.d.ts +9 -1
- package/lib/Axiom/Chart.d.ts.map +1 -1
- package/lib/Bundle/Bundle.d.ts +1 -0
- package/lib/Bundle/Bundle.d.ts.map +1 -1
- package/lib/Bundle/Bundle.js +1 -1
- package/lib/Bundle/Bundle.js.map +1 -1
- package/lib/Bundle/TempRoot.d.ts +9 -0
- package/lib/Bundle/TempRoot.d.ts.map +1 -1
- package/lib/Bundle/TempRoot.js +22 -0
- package/lib/Bundle/TempRoot.js.map +1 -1
- package/lib/Bundle/Vite.d.ts +20 -0
- package/lib/Bundle/Vite.d.ts.map +1 -0
- package/lib/Bundle/Vite.js +130 -0
- package/lib/Bundle/Vite.js.map +1 -0
- package/lib/Bundle/index.d.ts +0 -1
- package/lib/Bundle/index.d.ts.map +1 -1
- package/lib/Bundle/index.js +0 -1
- package/lib/Bundle/index.js.map +1 -1
- package/lib/Cli/Event.d.ts +1 -1
- package/lib/Cli/Event.d.ts.map +1 -1
- package/lib/Cli/LoggingCli.d.ts.map +1 -1
- package/lib/Cli/LoggingCli.js +3 -0
- package/lib/Cli/LoggingCli.js.map +1 -1
- package/lib/Cli/commands/_shared.d.ts.map +1 -1
- package/lib/Cli/commands/_shared.js +7 -1
- package/lib/Cli/commands/_shared.js.map +1 -1
- package/lib/Cli/commands/cloudflare.d.ts +2 -2
- package/lib/Cli/commands/cloudflare.d.ts.map +1 -1
- package/lib/Cli/commands/cloudflare.js +21 -2
- package/lib/Cli/commands/cloudflare.js.map +1 -1
- package/lib/Cli/commands/deploy.d.ts.map +1 -1
- package/lib/Cli/commands/deploy.js +4 -1
- package/lib/Cli/commands/deploy.js.map +1 -1
- package/lib/Cli/tui/components/PlanProgress.js +5 -3
- package/lib/Cli/tui/components/PlanProgress.js.map +1 -1
- package/lib/Cloudflare/AI/Gateway.d.ts +1 -1
- package/lib/Cloudflare/AI/Gateway.js +1 -1
- package/lib/Cloudflare/AI/Search.d.ts +1 -1
- package/lib/Cloudflare/AI/Search.js +1 -1
- package/lib/Cloudflare/AI/SearchInstance.d.ts +1 -1
- package/lib/Cloudflare/AI/SearchInstance.js +1 -1
- package/lib/Cloudflare/AI/SearchNamespace.d.ts +1 -1
- package/lib/Cloudflare/AI/SearchNamespace.js +1 -1
- package/lib/Cloudflare/AI/SearchToken.d.ts.map +1 -1
- package/lib/Cloudflare/AI/SearchToken.js +6 -1
- package/lib/Cloudflare/AI/SearchToken.js.map +1 -1
- package/lib/Cloudflare/Access/Application.d.ts.map +1 -1
- package/lib/Cloudflare/Access/Application.js +51 -11
- package/lib/Cloudflare/Access/Application.js.map +1 -1
- package/lib/Cloudflare/Alerting/Webhook.d.ts.map +1 -1
- package/lib/Cloudflare/Alerting/Webhook.js +9 -2
- package/lib/Cloudflare/Alerting/Webhook.js.map +1 -1
- package/lib/Cloudflare/AnalyticsEngine/WriteDataset.d.ts +2 -2
- package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.js +5 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.js +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
- package/lib/Cloudflare/Containers/Container.d.ts +46 -4
- package/lib/Cloudflare/Containers/Container.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/Container.js +27 -3
- package/lib/Cloudflare/Containers/Container.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerApplication.d.ts +25 -19
- package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerBundle.d.ts +1 -2
- package/lib/Cloudflare/Containers/ContainerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerBundle.js +2 -4
- package/lib/Cloudflare/Containers/ContainerBundle.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerPlatform.js +2 -2
- package/lib/Cloudflare/Containers/ContainerPlatform.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerProvider.d.ts +2 -1
- package/lib/Cloudflare/Containers/ContainerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerProvider.js +51 -35
- package/lib/Cloudflare/Containers/ContainerProvider.js.map +1 -1
- package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts +3 -1
- package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/LocalContainerProvider.js +11 -4
- package/lib/Cloudflare/Containers/LocalContainerProvider.js.map +1 -1
- package/lib/Cloudflare/Containers/StartContainer.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/StartContainer.js +222 -15
- package/lib/Cloudflare/Containers/StartContainer.js.map +1 -1
- package/lib/Cloudflare/DNS/ReadDns.d.ts +1 -1
- package/lib/Cloudflare/DNS/ReadWriteDns.d.ts +1 -1
- package/lib/Cloudflare/DNS/WriteDns.d.ts +1 -1
- package/lib/Cloudflare/Flagship/App.d.ts +1 -1
- package/lib/Cloudflare/Flagship/App.js +1 -1
- package/lib/Cloudflare/Images/Images.d.ts +1 -1
- package/lib/Cloudflare/Local.js +2 -1
- package/lib/Cloudflare/Local.js.map +1 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +2 -1
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/Queues/Consumer.d.ts +2 -2
- package/lib/Cloudflare/Queues/Consumer.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/Consumer.js +21 -13
- package/lib/Cloudflare/Queues/Consumer.js.map +1 -1
- package/lib/Cloudflare/Queues/Queue.d.ts +1 -1
- package/lib/Cloudflare/Queues/Queue.js +1 -1
- package/lib/Cloudflare/R2/Bucket.d.ts +2 -2
- package/lib/Cloudflare/R2/Bucket.js +2 -2
- package/lib/Cloudflare/StateStore/Api.d.ts +4 -1
- package/lib/Cloudflare/StateStore/Api.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/Api.js +6 -4
- package/lib/Cloudflare/StateStore/Api.js.map +1 -1
- package/lib/Cloudflare/StateStore/State.d.ts +28 -2
- package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/State.js +122 -19
- package/lib/Cloudflare/StateStore/State.js.map +1 -1
- package/lib/Cloudflare/Website/Vite.d.ts +26 -23
- package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
- package/lib/Cloudflare/Website/Vite.js +25 -7
- package/lib/Cloudflare/Website/Vite.js.map +1 -1
- package/lib/Cloudflare/Workers/Binding.d.ts +1 -1
- package/lib/Cloudflare/Workers/Browser.d.ts +1 -1
- package/lib/Cloudflare/Workers/DurableObject.d.ts +54 -3
- package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObject.js +54 -3
- package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
- package/lib/Cloudflare/Workers/InferEnv.d.ts +4 -2
- package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +55 -6
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/RpcDurableObject.d.ts +3 -3
- package/lib/Cloudflare/Workers/RpcDurableObject.js +3 -3
- package/lib/Cloudflare/Workers/RpcWorker.d.ts +4 -4
- package/lib/Cloudflare/Workers/RpcWorker.js +4 -4
- package/lib/Cloudflare/Workers/ScheduledEvents.js +1 -1
- package/lib/Cloudflare/Workers/ScheduledEvents.js.map +1 -1
- package/lib/Cloudflare/Workers/VersionMetadata.d.ts +1 -1
- package/lib/Cloudflare/Workers/Vite.d.ts +1 -4
- package/lib/Cloudflare/Workers/Vite.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Vite.js +19 -38
- package/lib/Cloudflare/Workers/Vite.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +73 -13
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +9 -9
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +2 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +31 -0
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts +7 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerLoader.d.ts +1 -1
- package/lib/Cloudflare/Workers/WorkerLoader.js +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts +10 -0
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.js +240 -60
- package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.js +1 -1
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.js.map +1 -1
- package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.d.ts +44 -2
- package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.d.ts.map +1 -1
- package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.js +44 -2
- package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.js.map +1 -1
- package/lib/Cloudflare/WorkersForPlatforms/Get.d.ts +77 -0
- package/lib/Cloudflare/WorkersForPlatforms/Get.d.ts.map +1 -0
- package/lib/Cloudflare/WorkersForPlatforms/Get.js +9 -0
- package/lib/Cloudflare/WorkersForPlatforms/Get.js.map +1 -0
- package/lib/Cloudflare/WorkersForPlatforms/GetBinding.d.ts +9 -0
- package/lib/Cloudflare/WorkersForPlatforms/GetBinding.d.ts.map +1 -0
- package/lib/Cloudflare/WorkersForPlatforms/GetBinding.js +43 -0
- package/lib/Cloudflare/WorkersForPlatforms/GetBinding.js.map +1 -0
- package/lib/Cloudflare/WorkersForPlatforms/index.d.ts +2 -0
- package/lib/Cloudflare/WorkersForPlatforms/index.d.ts.map +1 -1
- package/lib/Cloudflare/WorkersForPlatforms/index.js +2 -0
- package/lib/Cloudflare/WorkersForPlatforms/index.js.map +1 -1
- package/lib/Cloudflare/Workflows/Workflow.d.ts +107 -1
- package/lib/Cloudflare/Workflows/Workflow.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/Workflow.js +93 -6
- package/lib/Cloudflare/Workflows/Workflow.js.map +1 -1
- package/lib/Command/Build.d.ts.map +1 -1
- package/lib/Command/Build.js +24 -1
- package/lib/Command/Build.js.map +1 -1
- package/lib/Docker/Container.d.ts +156 -0
- package/lib/Docker/Container.d.ts.map +1 -0
- package/lib/Docker/Container.js +221 -0
- package/lib/Docker/Container.js.map +1 -0
- package/lib/Docker/Docker.d.ts +199 -0
- package/lib/Docker/Docker.d.ts.map +1 -0
- package/lib/Docker/Docker.js +224 -0
- package/lib/Docker/Docker.js.map +1 -0
- package/lib/Docker/Image.d.ts +109 -0
- package/lib/Docker/Image.d.ts.map +1 -0
- package/lib/Docker/Image.js +150 -0
- package/lib/Docker/Image.js.map +1 -0
- package/lib/Docker/Network.d.ts +61 -0
- package/lib/Docker/Network.d.ts.map +1 -0
- package/lib/Docker/Network.js +99 -0
- package/lib/Docker/Network.js.map +1 -0
- package/lib/Docker/Providers.d.ts +15 -0
- package/lib/Docker/Providers.d.ts.map +1 -0
- package/lib/Docker/Providers.js +18 -0
- package/lib/Docker/Providers.js.map +1 -0
- package/lib/Docker/Registry.d.ts +30 -0
- package/lib/Docker/Registry.d.ts.map +1 -0
- package/lib/Docker/Registry.js +44 -0
- package/lib/Docker/Registry.js.map +1 -0
- package/lib/Docker/RemoteImage.d.ts +102 -0
- package/lib/Docker/RemoteImage.d.ts.map +1 -0
- package/lib/Docker/RemoteImage.js +123 -0
- package/lib/Docker/RemoteImage.js.map +1 -0
- package/lib/Docker/Volume.d.ts +81 -0
- package/lib/Docker/Volume.d.ts.map +1 -0
- package/lib/Docker/Volume.js +107 -0
- package/lib/Docker/Volume.js.map +1 -0
- package/lib/Docker/index.d.ts +9 -0
- package/lib/Docker/index.d.ts.map +1 -0
- package/lib/Docker/index.js +8 -0
- package/lib/Docker/index.js.map +1 -0
- package/lib/Local/ProviderLayer.d.ts +1 -0
- package/lib/Local/ProviderLayer.d.ts.map +1 -1
- package/lib/Local/ProviderLayer.js +1 -0
- package/lib/Local/ProviderLayer.js.map +1 -1
- package/lib/Neon/Branch.d.ts +5 -0
- package/lib/Neon/Branch.d.ts.map +1 -1
- package/lib/Neon/Branch.js +8 -1
- package/lib/Neon/Branch.js.map +1 -1
- package/lib/Neon/Project.d.ts +5 -0
- package/lib/Neon/Project.d.ts.map +1 -1
- package/lib/Neon/Project.js +6 -0
- package/lib/Neon/Project.js.map +1 -1
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +3 -1
- package/lib/Plan.js.map +1 -1
- package/lib/Planetscale/Branch.d.ts +10 -0
- package/lib/Planetscale/Branch.d.ts.map +1 -1
- package/lib/Planetscale/Branch.js +43 -1
- package/lib/Planetscale/Branch.js.map +1 -1
- package/lib/Planetscale/Postgres/PostgresBranch.d.ts +5 -0
- package/lib/Planetscale/Postgres/PostgresBranch.d.ts.map +1 -1
- package/lib/Planetscale/Postgres/PostgresBranch.js.map +1 -1
- package/lib/Planetscale/Postgres/PostgresRole.d.ts +3 -1
- package/lib/Planetscale/Postgres/PostgresRole.d.ts.map +1 -1
- package/lib/Planetscale/Postgres/PostgresRole.js +8 -0
- package/lib/Planetscale/Postgres/PostgresRole.js.map +1 -1
- package/lib/Planetscale/Util.d.ts +3 -124
- package/lib/Planetscale/Util.d.ts.map +1 -1
- package/lib/Platform.d.ts +2 -1
- package/lib/Platform.d.ts.map +1 -1
- package/lib/Platform.js +37 -10
- package/lib/Platform.js.map +1 -1
- package/lib/Provider.d.ts.map +1 -1
- package/lib/Provider.js.map +1 -1
- package/lib/Resource.d.ts.map +1 -1
- package/lib/Resource.js +3 -1
- package/lib/Resource.js.map +1 -1
- package/lib/Rpc.d.ts +1 -1
- package/lib/Server/Process.d.ts +29 -1
- package/lib/Server/Process.d.ts.map +1 -1
- package/lib/Server/Process.js +48 -1
- package/lib/Server/Process.js.map +1 -1
- package/lib/Stack.d.ts +4 -1
- package/lib/Stack.d.ts.map +1 -1
- package/lib/Stack.js +1 -1
- package/lib/Stack.js.map +1 -1
- package/lib/State/HttpStateApi.d.ts +10 -10
- package/lib/Tags.d.ts +6 -0
- package/lib/Tags.d.ts.map +1 -1
- package/lib/Tags.js +6 -0
- package/lib/Tags.js.map +1 -1
- package/lib/Telemetry/Attributes.d.ts.map +1 -1
- package/lib/Telemetry/Attributes.js +6 -15
- package/lib/Telemetry/Attributes.js.map +1 -1
- package/lib/Test/Bun.d.ts +1 -0
- package/lib/Test/Bun.d.ts.map +1 -1
- package/lib/Test/Bun.js +1 -0
- package/lib/Test/Bun.js.map +1 -1
- package/lib/Test/Core.d.ts +1 -0
- package/lib/Test/Core.d.ts.map +1 -1
- package/lib/Test/Core.js +3 -2
- package/lib/Test/Core.js.map +1 -1
- package/lib/Test/Vitest.d.ts.map +1 -1
- package/lib/Test/Vitest.js +1 -0
- package/lib/Test/Vitest.js.map +1 -1
- package/lib/Util/effect.js.map +1 -1
- package/lib/Util/proxy-chain.d.ts +1 -0
- package/lib/Util/proxy-chain.d.ts.map +1 -1
- package/lib/Util/proxy-chain.js +1 -0
- package/lib/Util/proxy-chain.js.map +1 -1
- package/package.json +26 -10
- package/src/AWS/AuthProvider.ts +32 -17
- package/src/AWS/AutoScaling/LaunchTemplate.ts +1 -1
- package/src/AWS/CloudWatch/Dashboard.ts +4 -1
- package/src/AWS/Credentials.ts +178 -2
- package/src/AWS/EC2/Image.ts +4 -1
- package/src/AWS/EC2/Instance.ts +9 -6
- package/src/AWS/EC2/KeyPair.ts +319 -0
- package/src/AWS/EC2/NetworkAcl.ts +4 -1
- package/src/AWS/EC2/SecurityGroup.ts +4 -1
- package/src/AWS/EC2/SecurityGroupRule.ts +14 -5
- package/src/AWS/EC2/Subnet.ts +49 -4
- package/src/AWS/EC2/hosted.ts +93 -93
- package/src/AWS/EC2/index.ts +1 -0
- package/src/AWS/ECS/Task.ts +96 -78
- package/src/AWS/IAM/Role.ts +132 -22
- package/src/AWS/Lambda/CreateAuthToken.ts +43 -0
- package/src/AWS/Lambda/CreateAuthTokenHttp.ts +11 -0
- package/src/AWS/Lambda/CreateShellAuthToken.ts +42 -0
- package/src/AWS/Lambda/CreateShellAuthTokenHttp.ts +11 -0
- package/src/AWS/Lambda/DeleteMicrovmImageVersion.ts +36 -0
- package/src/AWS/Lambda/DeleteMicrovmImageVersionHttp.ts +12 -0
- package/src/AWS/Lambda/Function.ts +36 -9
- package/src/AWS/Lambda/GetMicrovm.ts +32 -0
- package/src/AWS/Lambda/GetMicrovmHttp.ts +13 -0
- package/src/AWS/Lambda/GetMicrovmImage.ts +40 -0
- package/src/AWS/Lambda/GetMicrovmImageBuild.ts +35 -0
- package/src/AWS/Lambda/GetMicrovmImageBuildHttp.ts +12 -0
- package/src/AWS/Lambda/GetMicrovmImageHttp.ts +12 -0
- package/src/AWS/Lambda/GetMicrovmImageVersion.ts +35 -0
- package/src/AWS/Lambda/GetMicrovmImageVersionHttp.ts +12 -0
- package/src/AWS/Lambda/ListManagedMicrovmImageVersions.ts +31 -0
- package/src/AWS/Lambda/ListManagedMicrovmImageVersionsHttp.ts +10 -0
- package/src/AWS/Lambda/ListManagedMicrovmImages.ts +31 -0
- package/src/AWS/Lambda/ListManagedMicrovmImagesHttp.ts +10 -0
- package/src/AWS/Lambda/ListMicrovmImageBuilds.ts +36 -0
- package/src/AWS/Lambda/ListMicrovmImageBuildsHttp.ts +12 -0
- package/src/AWS/Lambda/ListMicrovmImageVersions.ts +36 -0
- package/src/AWS/Lambda/ListMicrovmImageVersionsHttp.ts +12 -0
- package/src/AWS/Lambda/ListMicrovms.ts +40 -0
- package/src/AWS/Lambda/ListMicrovmsHttp.ts +12 -0
- package/src/AWS/Lambda/MicrovmBinding.ts +442 -0
- package/src/AWS/Lambda/MicrovmBundle.ts +256 -0
- package/src/AWS/Lambda/MicrovmImage.ts +569 -0
- package/src/AWS/Lambda/MicrovmProvider.ts +597 -0
- package/src/AWS/Lambda/MicrovmRpc.ts +75 -0
- package/src/AWS/Lambda/MicrovmRuntimeContext.ts +110 -0
- package/src/AWS/Lambda/NetworkConnector.ts +529 -0
- package/src/AWS/Lambda/QueueEventSource.ts +1 -0
- package/src/AWS/Lambda/ResumeMicrovm.ts +37 -0
- package/src/AWS/Lambda/ResumeMicrovmHttp.ts +11 -0
- package/src/AWS/Lambda/RunMicrovm.ts +45 -0
- package/src/AWS/Lambda/RunMicrovmHttp.ts +13 -0
- package/src/AWS/Lambda/SuspendMicrovm.ts +37 -0
- package/src/AWS/Lambda/SuspendMicrovmHttp.ts +11 -0
- package/src/AWS/Lambda/TerminateMicrovm.ts +38 -0
- package/src/AWS/Lambda/TerminateMicrovmHttp.ts +11 -0
- package/src/AWS/Lambda/UpdateMicrovmImageVersion.ts +36 -0
- package/src/AWS/Lambda/UpdateMicrovmImageVersionHttp.ts +12 -0
- package/src/AWS/Lambda/index.ts +38 -0
- package/src/AWS/Providers.ts +147 -133
- package/src/AWS/RDS/DBClusterParameterGroup.ts +5 -1
- package/src/AWS/RDS/DBParameterGroup.ts +5 -1
- package/src/AWS/Region.ts +9 -2
- package/src/AWS/S3/Bucket.ts +71 -36
- package/src/AlchemyContext.ts +7 -0
- package/src/Apply.ts +4 -2
- package/src/Axiom/Chart.ts +9 -1
- package/src/Bundle/Bundle.ts +1 -1
- package/src/Bundle/TempRoot.ts +22 -0
- package/src/Bundle/Vite.ts +204 -0
- package/src/Bundle/index.ts +0 -1
- package/src/Cli/Event.ts +1 -0
- package/src/Cli/LoggingCli.ts +3 -0
- package/src/Cli/commands/_shared.ts +7 -1
- package/src/Cli/commands/cloudflare.ts +37 -2
- package/src/Cli/commands/deploy.ts +4 -1
- package/src/Cli/tui/components/PlanProgress.tsx +5 -3
- package/src/Cloudflare/AI/Gateway.ts +1 -1
- package/src/Cloudflare/AI/Search.ts +1 -1
- package/src/Cloudflare/AI/SearchInstance.ts +1 -1
- package/src/Cloudflare/AI/SearchNamespace.ts +1 -1
- package/src/Cloudflare/AI/SearchToken.ts +6 -1
- package/src/Cloudflare/Access/Application.ts +61 -10
- package/src/Cloudflare/Alerting/Webhook.ts +18 -7
- package/src/Cloudflare/AnalyticsEngine/WriteDataset.ts +2 -2
- package/src/Cloudflare/ApiToken/AccountApiToken.ts +4 -0
- package/src/Cloudflare/Auth/AuthProvider.ts +1 -1
- package/src/Cloudflare/Containers/Container.ts +43 -4
- package/src/Cloudflare/Containers/ContainerApplication.ts +24 -18
- package/src/Cloudflare/Containers/ContainerBundle.ts +2 -4
- package/src/Cloudflare/Containers/ContainerPlatform.ts +3 -3
- package/src/Cloudflare/Containers/ContainerProvider.ts +50 -42
- package/src/Cloudflare/Containers/LocalContainerProvider.ts +11 -4
- package/src/Cloudflare/Containers/StartContainer.ts +316 -32
- package/src/Cloudflare/DNS/ReadDns.ts +1 -1
- package/src/Cloudflare/DNS/ReadWriteDns.ts +1 -1
- package/src/Cloudflare/DNS/WriteDns.ts +1 -1
- package/src/Cloudflare/Flagship/App.ts +1 -1
- package/src/Cloudflare/Images/Images.ts +1 -1
- package/src/Cloudflare/Local.ts +2 -0
- package/src/Cloudflare/Providers.ts +2 -0
- package/src/Cloudflare/Queues/Consumer.ts +21 -12
- package/src/Cloudflare/Queues/Queue.ts +1 -1
- package/src/Cloudflare/R2/Bucket.ts +2 -2
- package/src/Cloudflare/StateStore/Api.ts +6 -4
- package/src/Cloudflare/StateStore/State.ts +192 -20
- package/src/Cloudflare/Website/Vite.ts +29 -24
- package/src/Cloudflare/Workers/Binding.ts +1 -1
- package/src/Cloudflare/Workers/Browser.ts +1 -1
- package/src/Cloudflare/Workers/DurableObject.ts +54 -3
- package/src/Cloudflare/Workers/InferEnv.ts +47 -36
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +54 -7
- package/src/Cloudflare/Workers/RpcDurableObject.ts +3 -3
- package/src/Cloudflare/Workers/RpcWorker.ts +4 -4
- package/src/Cloudflare/Workers/ScheduledEvents.ts +1 -1
- package/src/Cloudflare/Workers/VersionMetadata.ts +1 -1
- package/src/Cloudflare/Workers/Vite.ts +21 -40
- package/src/Cloudflare/Workers/Worker.ts +74 -13
- package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +30 -0
- package/src/Cloudflare/Workers/WorkerBinding.ts +5 -1
- package/src/Cloudflare/Workers/WorkerLoader.ts +1 -1
- package/src/Cloudflare/Workers/WorkerProvider.ts +470 -200
- package/src/Cloudflare/Workers/WorkerRuntimeContext.ts +1 -1
- package/src/Cloudflare/WorkersForPlatforms/DispatchNamespace.ts +44 -2
- package/src/Cloudflare/WorkersForPlatforms/Get.ts +87 -0
- package/src/Cloudflare/WorkersForPlatforms/GetBinding.ts +63 -0
- package/src/Cloudflare/WorkersForPlatforms/index.ts +2 -0
- package/src/Cloudflare/Workflows/Workflow.ts +207 -78
- package/src/Command/Build.ts +32 -1
- package/src/Docker/Container.ts +413 -0
- package/src/Docker/Docker.ts +564 -0
- package/src/Docker/Image.ts +265 -0
- package/src/Docker/Network.ts +178 -0
- package/src/Docker/Providers.ts +37 -0
- package/src/Docker/Registry.ts +63 -0
- package/src/Docker/RemoteImage.ts +215 -0
- package/src/Docker/Volume.ts +187 -0
- package/src/Docker/index.ts +8 -0
- package/src/Local/ProviderLayer.ts +2 -0
- package/src/Neon/Branch.ts +15 -1
- package/src/Neon/Project.ts +13 -0
- package/src/Plan.ts +3 -1
- package/src/Planetscale/Branch.ts +70 -0
- package/src/Planetscale/Postgres/PostgresBranch.ts +6 -0
- package/src/Planetscale/Postgres/PostgresRole.ts +11 -1
- package/src/Platform.ts +50 -12
- package/src/Provider.ts +1 -1
- package/src/Resource.ts +9 -3
- package/src/Rpc.ts +1 -1
- package/src/Server/Process.ts +82 -1
- package/src/Stack.ts +11 -3
- package/src/Tags.ts +12 -0
- package/src/Telemetry/Attributes.ts +9 -12
- package/src/Test/Bun.ts +2 -0
- package/src/Test/Core.ts +13 -8
- package/src/Test/Vitest.ts +1 -0
- package/src/Util/effect.ts +1 -1
- package/src/Util/proxy-chain.ts +1 -0
- package/lib/Bundle/Docker.d.ts +0 -75
- package/lib/Bundle/Docker.d.ts.map +0 -1
- package/lib/Bundle/Docker.js +0 -148
- package/lib/Bundle/Docker.js.map +0 -1
- package/src/Bundle/Docker.ts +0 -229
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { isResolved } from "../Diff.ts";
|
|
3
|
+
import * as Provider from "../Provider.ts";
|
|
4
|
+
import { Resource } from "../Resource.ts";
|
|
5
|
+
import { Docker } from "./Docker.ts";
|
|
6
|
+
import type { Providers } from "./Providers.ts";
|
|
7
|
+
import {
|
|
8
|
+
type ImageRegistry,
|
|
9
|
+
parseCreatedAt,
|
|
10
|
+
parseRepoDigest,
|
|
11
|
+
repositoryFromImageRef,
|
|
12
|
+
withRegistryHost,
|
|
13
|
+
} from "./Registry.ts";
|
|
14
|
+
|
|
15
|
+
export interface RemoteImageProps {
|
|
16
|
+
/** Docker image name to pull, without tag. */
|
|
17
|
+
name: string;
|
|
18
|
+
/** Docker image tag to pull. @default "latest" */
|
|
19
|
+
tag?: string;
|
|
20
|
+
/** Pull for this platform. */
|
|
21
|
+
platform?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Pull even when an image with the same reference already exists locally.
|
|
24
|
+
*
|
|
25
|
+
* @default true
|
|
26
|
+
*/
|
|
27
|
+
alwaysPull?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Re-tag the pulled image under this repository/name. When omitted the pulled
|
|
30
|
+
* `name` is kept.
|
|
31
|
+
*/
|
|
32
|
+
targetName?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Tag applied to the re-tagged image.
|
|
35
|
+
*
|
|
36
|
+
* @default The pulled `tag`.
|
|
37
|
+
*/
|
|
38
|
+
targetTag?: string;
|
|
39
|
+
/** Registry credentials. When set, the (re-tagged) image is pushed. */
|
|
40
|
+
registry?: ImageRegistry;
|
|
41
|
+
/**
|
|
42
|
+
* Skip registry push even when `registry` is set.
|
|
43
|
+
*
|
|
44
|
+
* @default false
|
|
45
|
+
*/
|
|
46
|
+
skipPush?: boolean;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface RemoteImage extends Resource<
|
|
50
|
+
"Docker.RemoteImage",
|
|
51
|
+
RemoteImageProps,
|
|
52
|
+
{
|
|
53
|
+
/** Final image reference. Includes the registry host when pushed there. */
|
|
54
|
+
imageRef: string;
|
|
55
|
+
/** Local image id after pull. */
|
|
56
|
+
imageId: string;
|
|
57
|
+
/** Pull timestamp in milliseconds since epoch. */
|
|
58
|
+
createdAt: number;
|
|
59
|
+
/** Final image repository/name. */
|
|
60
|
+
name: string;
|
|
61
|
+
/** Final image tag. */
|
|
62
|
+
tag: string;
|
|
63
|
+
/** Registry digest after push when available. */
|
|
64
|
+
repoDigest?: string;
|
|
65
|
+
},
|
|
66
|
+
never,
|
|
67
|
+
Providers
|
|
68
|
+
> {}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Pulls a remote Docker image through the active Docker context, optionally
|
|
72
|
+
* re-tagging it and pushing it to a registry.
|
|
73
|
+
*
|
|
74
|
+
* The image is available to other Docker resources by `imageRef`. Use
|
|
75
|
+
* `alwaysPull: false` when you want to reuse an existing tag in the configured
|
|
76
|
+
* Docker daemon instead of pulling on every deploy. Set `targetName`/`targetTag`
|
|
77
|
+
* to re-tag the pulled image, and `registry` to push it (mirroring it from a
|
|
78
|
+
* source registry into your own, for example).
|
|
79
|
+
*
|
|
80
|
+
* @resource
|
|
81
|
+
*
|
|
82
|
+
* @section Pulling Images
|
|
83
|
+
* @example Pull nginx
|
|
84
|
+
* ```typescript
|
|
85
|
+
* const nginx = yield* Docker.RemoteImage("nginx", {
|
|
86
|
+
* name: "nginx",
|
|
87
|
+
* tag: "alpine",
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @example Reuse an existing daemon tag
|
|
92
|
+
* ```typescript
|
|
93
|
+
* const postgres = yield* Docker.RemoteImage("postgres", {
|
|
94
|
+
* name: "postgres",
|
|
95
|
+
* tag: "18-alpine",
|
|
96
|
+
* alwaysPull: false,
|
|
97
|
+
* });
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* @section Re-tagging and Pushing
|
|
101
|
+
* @example Mirror a public image into your registry
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const mirrored = yield* Docker.RemoteImage("nginx-mirror", {
|
|
104
|
+
* name: "nginx",
|
|
105
|
+
* tag: "alpine",
|
|
106
|
+
* targetName: "acme/nginx",
|
|
107
|
+
* targetTag: "alpine",
|
|
108
|
+
* registry: {
|
|
109
|
+
* server: "ghcr.io",
|
|
110
|
+
* username: "octocat",
|
|
111
|
+
* password: Config.redacted("GITHUB_TOKEN"),
|
|
112
|
+
* },
|
|
113
|
+
* });
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export const RemoteImage = Resource<RemoteImage>("Docker.RemoteImage");
|
|
117
|
+
|
|
118
|
+
export const RemoteImageProvider = () =>
|
|
119
|
+
Provider.effect(
|
|
120
|
+
RemoteImage,
|
|
121
|
+
Effect.gen(function* () {
|
|
122
|
+
const docker = yield* Docker;
|
|
123
|
+
|
|
124
|
+
return RemoteImage.Provider.of({
|
|
125
|
+
list: () => Effect.succeed([]),
|
|
126
|
+
read: Effect.fn(function* ({ olds, output }) {
|
|
127
|
+
const ref = output?.imageRef ?? targetImageRef(olds);
|
|
128
|
+
return yield* docker.image.inspect(ref).pipe(
|
|
129
|
+
Effect.map((image) => ({
|
|
130
|
+
imageRef: ref,
|
|
131
|
+
imageId: image.Id,
|
|
132
|
+
createdAt: output?.createdAt ?? parseCreatedAt(image.Created),
|
|
133
|
+
name: output?.name ?? repositoryFromImageRef(ref),
|
|
134
|
+
tag: output?.tag ?? targetTag(olds),
|
|
135
|
+
repoDigest: output?.repoDigest,
|
|
136
|
+
})),
|
|
137
|
+
Effect.catchReason(
|
|
138
|
+
"PlatformError",
|
|
139
|
+
"NotFound",
|
|
140
|
+
() => Effect.undefined,
|
|
141
|
+
),
|
|
142
|
+
);
|
|
143
|
+
}),
|
|
144
|
+
diff: Effect.fn(function* ({ output, news }) {
|
|
145
|
+
if (!isResolved(news)) return undefined;
|
|
146
|
+
if (
|
|
147
|
+
!output ||
|
|
148
|
+
news.alwaysPull !== false ||
|
|
149
|
+
output.imageRef !== targetImageRef(news)
|
|
150
|
+
) {
|
|
151
|
+
return { action: "update" };
|
|
152
|
+
}
|
|
153
|
+
}),
|
|
154
|
+
reconcile: Effect.fn(function* ({ news, session }) {
|
|
155
|
+
const sourceRef = remoteImageRef(news);
|
|
156
|
+
yield* session.note(`Pulling Docker image: ${sourceRef}`);
|
|
157
|
+
yield* docker.image.pull(sourceRef, news.platform);
|
|
158
|
+
|
|
159
|
+
const finalRef = targetImageRef(news);
|
|
160
|
+
if (finalRef !== sourceRef) {
|
|
161
|
+
yield* session.note(
|
|
162
|
+
`Tagging Docker image: ${sourceRef} -> ${finalRef}`,
|
|
163
|
+
);
|
|
164
|
+
yield* docker.image.tag(sourceRef, finalRef);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
let repoDigest: string | undefined;
|
|
168
|
+
if (news.registry && !news.skipPush) {
|
|
169
|
+
yield* session.note(
|
|
170
|
+
`Pushing image to registry "${news.registry.server}"`,
|
|
171
|
+
);
|
|
172
|
+
repoDigest = yield* docker.image
|
|
173
|
+
.push(finalRef, news.registry)
|
|
174
|
+
.pipe(
|
|
175
|
+
Effect.map((result) =>
|
|
176
|
+
parseRepoDigest(finalRef, result.stdout),
|
|
177
|
+
),
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const inspected = yield* docker.image.inspect(finalRef);
|
|
182
|
+
return {
|
|
183
|
+
imageRef: finalRef,
|
|
184
|
+
imageId: inspected.Id,
|
|
185
|
+
createdAt: parseCreatedAt(inspected.Created),
|
|
186
|
+
name: repositoryFromImageRef(finalRef),
|
|
187
|
+
tag: targetTag(news),
|
|
188
|
+
repoDigest,
|
|
189
|
+
};
|
|
190
|
+
}),
|
|
191
|
+
delete: Effect.fn(function* () {
|
|
192
|
+
// Remote images are not removed on destroy because tags may be shared by
|
|
193
|
+
// unrelated local stacks or developer workflows.
|
|
194
|
+
}),
|
|
195
|
+
});
|
|
196
|
+
}),
|
|
197
|
+
);
|
|
198
|
+
|
|
199
|
+
/** The reference the image is pulled from. */
|
|
200
|
+
const remoteImageRef = (props: RemoteImageProps): string =>
|
|
201
|
+
`${props.name}:${props.tag ?? "latest"}`;
|
|
202
|
+
|
|
203
|
+
const targetTag = (props: RemoteImageProps): string =>
|
|
204
|
+
props.targetTag ?? props.tag ?? "latest";
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* The final reference after re-tagging and registry-host prefixing. Equals the
|
|
208
|
+
* pulled reference when no re-tag/registry is configured.
|
|
209
|
+
*/
|
|
210
|
+
const targetImageRef = (props: RemoteImageProps): string => {
|
|
211
|
+
const local = `${props.targetName ?? props.name}:${targetTag(props)}`;
|
|
212
|
+
return props.registry && !props.skipPush
|
|
213
|
+
? withRegistryHost(local, props.registry)
|
|
214
|
+
: local;
|
|
215
|
+
};
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Equal from "effect/Equal";
|
|
3
|
+
import { Unowned } from "../AdoptPolicy.ts";
|
|
4
|
+
import { isResolved } from "../Diff.ts";
|
|
5
|
+
import * as Provider from "../Provider.ts";
|
|
6
|
+
import { Resource } from "../Resource.ts";
|
|
7
|
+
import {
|
|
8
|
+
createInternalTags,
|
|
9
|
+
hasAlchemyTags,
|
|
10
|
+
stripInternalTags,
|
|
11
|
+
} from "../Tags.ts";
|
|
12
|
+
import { Docker, dockerPhysicalName } from "./Docker.ts";
|
|
13
|
+
import type { Providers } from "./Providers.ts";
|
|
14
|
+
|
|
15
|
+
export interface VolumeLabel {
|
|
16
|
+
/** Label name. */
|
|
17
|
+
name: string;
|
|
18
|
+
/** Label value. */
|
|
19
|
+
value: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface VolumeProps {
|
|
23
|
+
/**
|
|
24
|
+
* Docker volume name.
|
|
25
|
+
*
|
|
26
|
+
* @default Generated from stack, stage, logical id, and instance id.
|
|
27
|
+
*/
|
|
28
|
+
name?: string;
|
|
29
|
+
/** Volume driver. @default "local" */
|
|
30
|
+
driver?: string;
|
|
31
|
+
/** Driver-specific options. */
|
|
32
|
+
driverOpts?: Record<string, string>;
|
|
33
|
+
/** Custom metadata labels. */
|
|
34
|
+
labels?: Record<string, string>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface Volume extends Resource<
|
|
38
|
+
"Docker.Volume",
|
|
39
|
+
VolumeProps,
|
|
40
|
+
{
|
|
41
|
+
/** Docker volume name. */
|
|
42
|
+
id: string;
|
|
43
|
+
/** Docker volume name. */
|
|
44
|
+
name: string;
|
|
45
|
+
/** Volume driver. */
|
|
46
|
+
driver: string;
|
|
47
|
+
/** Driver-specific options reported by Docker. */
|
|
48
|
+
driverOpts: Record<string, string>;
|
|
49
|
+
/** Labels reported by Docker. */
|
|
50
|
+
labels: Record<string, string>;
|
|
51
|
+
/** Host mountpoint path. */
|
|
52
|
+
mountpoint?: string;
|
|
53
|
+
/** Creation timestamp in milliseconds since epoch. */
|
|
54
|
+
createdAt: number;
|
|
55
|
+
},
|
|
56
|
+
never,
|
|
57
|
+
Providers
|
|
58
|
+
> {}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* A Docker volume managed through the active Docker context.
|
|
62
|
+
*
|
|
63
|
+
* Pre-existing same-name volumes are treated as foreign until the engine is
|
|
64
|
+
* allowed to adopt them with `--adopt` or `adopt(true)`.
|
|
65
|
+
*
|
|
66
|
+
* @resource
|
|
67
|
+
*
|
|
68
|
+
* @section Creating Volumes
|
|
69
|
+
* @example Basic volume
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const data = yield* Docker.Volume("data", {
|
|
72
|
+
* name: "app-data",
|
|
73
|
+
* });
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @example PostgreSQL data volume
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const data = yield* Docker.Volume("postgres-data");
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @example Driver options and labels
|
|
82
|
+
* ```typescript
|
|
83
|
+
* const data = yield* Docker.Volume("db-data", {
|
|
84
|
+
* driver: "local",
|
|
85
|
+
* driverOpts: {
|
|
86
|
+
* type: "nfs",
|
|
87
|
+
* o: "addr=10.0.0.1,rw",
|
|
88
|
+
* device: ":/path/to/dir",
|
|
89
|
+
* },
|
|
90
|
+
* labels: {
|
|
91
|
+
* "com.example.usage": "database",
|
|
92
|
+
* },
|
|
93
|
+
* });
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export const Volume = Resource<Volume>("Docker.Volume");
|
|
97
|
+
|
|
98
|
+
export const VolumeProvider = () =>
|
|
99
|
+
Provider.effect(
|
|
100
|
+
Volume,
|
|
101
|
+
Effect.gen(function* () {
|
|
102
|
+
const docker = yield* Docker;
|
|
103
|
+
|
|
104
|
+
return Volume.Provider.of({
|
|
105
|
+
list: () => Effect.succeed([]),
|
|
106
|
+
read: Effect.fn(function* ({ id, instanceId, olds, output }) {
|
|
107
|
+
const name = yield* dockerPhysicalName(id, olds, instanceId);
|
|
108
|
+
const info = yield* docker.volume
|
|
109
|
+
.inspect(name)
|
|
110
|
+
.pipe(
|
|
111
|
+
Effect.catchReason(
|
|
112
|
+
"PlatformError",
|
|
113
|
+
"NotFound",
|
|
114
|
+
() => Effect.undefined,
|
|
115
|
+
),
|
|
116
|
+
);
|
|
117
|
+
if (!info) return undefined;
|
|
118
|
+
const attrs = toVolumeAttributes(info);
|
|
119
|
+
if (output) return attrs;
|
|
120
|
+
// Without prior state, only adopt a volume that carries our branding;
|
|
121
|
+
// anything else is foreign and gated behind `--adopt`.
|
|
122
|
+
const owned = yield* hasAlchemyTags(id, info.Labels ?? undefined);
|
|
123
|
+
return owned ? attrs : Unowned(attrs);
|
|
124
|
+
}),
|
|
125
|
+
diff: Effect.fn(function* ({ id, instanceId, output, news }) {
|
|
126
|
+
if (!isResolved(news)) return undefined;
|
|
127
|
+
const args = yield* makeVolumeArgs(id, news, instanceId);
|
|
128
|
+
if (
|
|
129
|
+
output?.name !== args.name ||
|
|
130
|
+
output?.driver !== args.driver ||
|
|
131
|
+
!Equal.equals(output?.driverOpts ?? {}, args.opt ?? {}) ||
|
|
132
|
+
// Compare only user labels; internal `alchemy::*` branding lives on
|
|
133
|
+
// the observed volume but must not drive replacement.
|
|
134
|
+
!Equal.equals(stripInternalTags(output?.labels), args.label ?? {})
|
|
135
|
+
) {
|
|
136
|
+
return { action: "replace" as const, deleteFirst: true };
|
|
137
|
+
}
|
|
138
|
+
}),
|
|
139
|
+
reconcile: Effect.fn(function* ({ id, instanceId, news }) {
|
|
140
|
+
const args = yield* makeVolumeArgs(id, news, instanceId);
|
|
141
|
+
const internalTags = yield* createInternalTags(id);
|
|
142
|
+
const result = yield* docker.volume.create({
|
|
143
|
+
...args,
|
|
144
|
+
label: { ...internalTags, ...args.label },
|
|
145
|
+
});
|
|
146
|
+
return toVolumeAttributes(
|
|
147
|
+
yield* docker.volume.inspect(result.stdout),
|
|
148
|
+
);
|
|
149
|
+
}),
|
|
150
|
+
delete: Effect.fn(({ output }) =>
|
|
151
|
+
docker.volume
|
|
152
|
+
.remove(output.name)
|
|
153
|
+
.pipe(
|
|
154
|
+
Effect.catchReason(
|
|
155
|
+
"PlatformError",
|
|
156
|
+
"NotFound",
|
|
157
|
+
() => Effect.void,
|
|
158
|
+
),
|
|
159
|
+
),
|
|
160
|
+
),
|
|
161
|
+
});
|
|
162
|
+
}),
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
const makeVolumeArgs = (id: string, props: VolumeProps, instanceId: string) =>
|
|
166
|
+
dockerPhysicalName(id, props, instanceId).pipe(
|
|
167
|
+
Effect.map(
|
|
168
|
+
(name): Parameters<Docker["Service"]["volume"]["create"]>[0] => ({
|
|
169
|
+
name,
|
|
170
|
+
driver: props.driver ?? "local",
|
|
171
|
+
opt: props.driverOpts,
|
|
172
|
+
label: props.labels,
|
|
173
|
+
}),
|
|
174
|
+
),
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
export const toVolumeAttributes = (
|
|
178
|
+
info: Docker.Volume,
|
|
179
|
+
): Volume["Attributes"] => ({
|
|
180
|
+
id: info.Name,
|
|
181
|
+
name: info.Name,
|
|
182
|
+
driver: info.Driver,
|
|
183
|
+
driverOpts: info.Options ?? {},
|
|
184
|
+
labels: info.Labels ?? {},
|
|
185
|
+
mountpoint: info.Mountpoint,
|
|
186
|
+
createdAt: Date.parse(info.CreatedAt) || Date.now(),
|
|
187
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./Container.ts";
|
|
2
|
+
export * from "./Docker.ts";
|
|
3
|
+
export * from "./Image.ts";
|
|
4
|
+
export * from "./Network.ts";
|
|
5
|
+
export * from "./Providers.ts";
|
|
6
|
+
export type { ImageRegistry } from "./Registry.ts";
|
|
7
|
+
export * from "./RemoteImage.ts";
|
|
8
|
+
export * from "./Volume.ts";
|
package/src/Neon/Branch.ts
CHANGED
|
@@ -135,6 +135,11 @@ export type Branch = Resource<
|
|
|
135
135
|
* when fronting Neon with another pooler like Hyperdrive.
|
|
136
136
|
*/
|
|
137
137
|
origin: PostgresOrigin;
|
|
138
|
+
/**
|
|
139
|
+
* Parsed pooled connection components. Useful as a Hyperdrive `dev`
|
|
140
|
+
* origin when local workers bypass Hyperdrive and connect directly.
|
|
141
|
+
*/
|
|
142
|
+
pooledOrigin: PostgresOrigin;
|
|
138
143
|
migrationsDir: string | undefined;
|
|
139
144
|
migrationsTable: string | undefined;
|
|
140
145
|
migrationsHashes: Record<string, string>;
|
|
@@ -270,6 +275,9 @@ export const BranchProvider = () =>
|
|
|
270
275
|
protected: branch.protected,
|
|
271
276
|
default: branch.default,
|
|
272
277
|
expiresAt: branch.expires_at,
|
|
278
|
+
pooledOrigin:
|
|
279
|
+
output.pooledOrigin ??
|
|
280
|
+
parsePostgresOrigin(output.pooledConnectionUri),
|
|
273
281
|
})),
|
|
274
282
|
Effect.catchTag("NotFound", () => Effect.succeed(undefined)),
|
|
275
283
|
);
|
|
@@ -311,6 +319,7 @@ export const BranchProvider = () =>
|
|
|
311
319
|
connectionUri: conn.uri,
|
|
312
320
|
pooledConnectionUri: conn.pooled,
|
|
313
321
|
origin: parsePostgresOrigin(conn.uri),
|
|
322
|
+
pooledOrigin: parsePostgresOrigin(conn.pooled),
|
|
314
323
|
migrationsDir: olds?.migrationsDir,
|
|
315
324
|
migrationsTable: olds?.migrationsTable,
|
|
316
325
|
migrationsHashes: {},
|
|
@@ -349,6 +358,9 @@ export const BranchProvider = () =>
|
|
|
349
358
|
connectionUri: output.connectionUri,
|
|
350
359
|
pooledConnectionUri: output.pooledConnectionUri,
|
|
351
360
|
origin: output.origin,
|
|
361
|
+
pooledOrigin:
|
|
362
|
+
output.pooledOrigin ??
|
|
363
|
+
parsePostgresOrigin(output.pooledConnectionUri),
|
|
352
364
|
})),
|
|
353
365
|
)
|
|
354
366
|
: yield* Effect.gen(function* () {
|
|
@@ -403,6 +415,7 @@ export const BranchProvider = () =>
|
|
|
403
415
|
connectionUri: conn.uri,
|
|
404
416
|
pooledConnectionUri: conn.pooled,
|
|
405
417
|
origin: parsePostgresOrigin(conn.uri),
|
|
418
|
+
pooledOrigin: parsePostgresOrigin(conn.pooled),
|
|
406
419
|
};
|
|
407
420
|
});
|
|
408
421
|
|
|
@@ -542,6 +555,7 @@ const hydrateBranch = (
|
|
|
542
555
|
connectionUri: conn.uri,
|
|
543
556
|
pooledConnectionUri: conn.pooled,
|
|
544
557
|
origin: parsePostgresOrigin(conn.uri),
|
|
558
|
+
pooledOrigin: parsePostgresOrigin(conn.pooled),
|
|
545
559
|
migrationsDir: undefined,
|
|
546
560
|
migrationsTable: undefined,
|
|
547
561
|
migrationsHashes: {},
|
|
@@ -578,7 +592,7 @@ const findBranchByName = (projectId: string, name: string) =>
|
|
|
578
592
|
});
|
|
579
593
|
|
|
580
594
|
const maybeResolveProjectId = (source: BranchSource): string | undefined => {
|
|
581
|
-
if ("projectId" in source && source.projectId) {
|
|
595
|
+
if (source && "projectId" in source && source.projectId) {
|
|
582
596
|
return source.projectId as unknown as string;
|
|
583
597
|
}
|
|
584
598
|
return undefined;
|
package/src/Neon/Project.ts
CHANGED
|
@@ -147,6 +147,11 @@ export type Project = Resource<
|
|
|
147
147
|
* when fronting Neon with another pooler like Hyperdrive.
|
|
148
148
|
*/
|
|
149
149
|
origin: PostgresOrigin;
|
|
150
|
+
/**
|
|
151
|
+
* Parsed pooled connection components. Useful as a Hyperdrive `dev`
|
|
152
|
+
* origin when local workers bypass Hyperdrive and connect directly.
|
|
153
|
+
*/
|
|
154
|
+
pooledOrigin: PostgresOrigin;
|
|
150
155
|
historyRetentionSeconds: number;
|
|
151
156
|
enableLogicalReplication: boolean;
|
|
152
157
|
migrationsDir: string | undefined;
|
|
@@ -283,6 +288,9 @@ export const ProjectProvider = () =>
|
|
|
283
288
|
Effect.map(({ project }) => ({
|
|
284
289
|
...output,
|
|
285
290
|
projectName: project.name,
|
|
291
|
+
pooledOrigin:
|
|
292
|
+
output.pooledOrigin ??
|
|
293
|
+
parsePostgresOrigin(output.pooledConnectionUri),
|
|
286
294
|
historyRetentionSeconds: project.history_retention_seconds,
|
|
287
295
|
enableLogicalReplication:
|
|
288
296
|
project.settings?.enable_logical_replication === true,
|
|
@@ -332,6 +340,9 @@ export const ProjectProvider = () =>
|
|
|
332
340
|
connectionUri: output.connectionUri,
|
|
333
341
|
pooledConnectionUri: output.pooledConnectionUri,
|
|
334
342
|
origin: output.origin,
|
|
343
|
+
pooledOrigin:
|
|
344
|
+
output.pooledOrigin ??
|
|
345
|
+
parsePostgresOrigin(output.pooledConnectionUri),
|
|
335
346
|
historyRetentionSeconds:
|
|
336
347
|
r.project.history_retention_seconds ??
|
|
337
348
|
output.historyRetentionSeconds,
|
|
@@ -381,6 +392,7 @@ export const ProjectProvider = () =>
|
|
|
381
392
|
connectionUri: conn.uri,
|
|
382
393
|
pooledConnectionUri: conn.pooled,
|
|
383
394
|
origin: parsePostgresOrigin(conn.uri),
|
|
395
|
+
pooledOrigin: parsePostgresOrigin(conn.pooled),
|
|
384
396
|
historyRetentionSeconds:
|
|
385
397
|
created.project.history_retention_seconds ?? 86400,
|
|
386
398
|
enableLogicalReplication:
|
|
@@ -664,6 +676,7 @@ const hydrateProjectAttributes = (
|
|
|
664
676
|
connectionUri: conn.uri,
|
|
665
677
|
pooledConnectionUri: conn.pooled,
|
|
666
678
|
origin: parsePostgresOrigin(conn.uri),
|
|
679
|
+
pooledOrigin: parsePostgresOrigin(conn.pooled),
|
|
667
680
|
historyRetentionSeconds: project.history_retention_seconds ?? 86400,
|
|
668
681
|
enableLogicalReplication:
|
|
669
682
|
project.settings?.enable_logical_replication === true,
|
package/src/Plan.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @effect-diagnostics anyUnknownInErrorContext:off */
|
|
2
|
+
/** @effect-diagnostics missingEffectError:off */
|
|
1
3
|
import * as Config from "effect/Config";
|
|
2
4
|
import * as Data from "effect/Data";
|
|
3
5
|
import * as Duration from "effect/Duration";
|
|
@@ -55,8 +57,8 @@ import {
|
|
|
55
57
|
type UpdatedResourceState,
|
|
56
58
|
type UpdatingReourceState,
|
|
57
59
|
} from "./State/index.ts";
|
|
58
|
-
import { hashInput } from "./Util/sha256.ts";
|
|
59
60
|
import { findCycleMembers } from "./Util/scc.ts";
|
|
61
|
+
import { hashInput } from "./Util/sha256.ts";
|
|
60
62
|
|
|
61
63
|
export type PlanError = never;
|
|
62
64
|
|
|
@@ -14,6 +14,7 @@ import { ensureMySQLProductionBranchClusterSize } from "./MySQL/MySQLClusterSize
|
|
|
14
14
|
import {
|
|
15
15
|
ensurePostgresProductionBranchClusterSize,
|
|
16
16
|
toPostgresClusterSku,
|
|
17
|
+
waitForPendingPostgresChanges,
|
|
17
18
|
} from "./Postgres/PostgresClusterSize.ts";
|
|
18
19
|
import {
|
|
19
20
|
DEFAULT_MIGRATIONS_TABLE,
|
|
@@ -105,6 +106,16 @@ export interface BaseBranchAttributes {
|
|
|
105
106
|
migrationsHashes: Record<string, string>;
|
|
106
107
|
/** Content hashes for the last applied import files. */
|
|
107
108
|
importHashes: Record<string, string>;
|
|
109
|
+
/**
|
|
110
|
+
* Desired total replica count requested by the resource input, when known.
|
|
111
|
+
* PlanetScale's branch read API exposes only boolean HA state, so this is
|
|
112
|
+
* persisted from Alchemy state rather than observed from live provider data.
|
|
113
|
+
*/
|
|
114
|
+
desiredReplicas: number | undefined;
|
|
115
|
+
/** Whether the branch currently has HA replicas. */
|
|
116
|
+
hasReplicas: boolean | undefined;
|
|
117
|
+
/** Whether the branch currently has read-only replicas. */
|
|
118
|
+
hasReadOnlyReplicas: boolean | undefined;
|
|
108
119
|
}
|
|
109
120
|
|
|
110
121
|
// Runtime-resolved Database/Branch references. `news.database` can be a
|
|
@@ -230,6 +241,9 @@ export const makeBranchProvider = <R extends ResourceLike>(opts: {
|
|
|
230
241
|
migrationsTable: undefined,
|
|
231
242
|
migrationsHashes: {},
|
|
232
243
|
importHashes: {},
|
|
244
|
+
desiredReplicas: undefined,
|
|
245
|
+
hasReplicas: branch.has_replicas,
|
|
246
|
+
hasReadOnlyReplicas: branch.has_read_only_replicas,
|
|
233
247
|
}) satisfies BaseBranchAttributes,
|
|
234
248
|
),
|
|
235
249
|
),
|
|
@@ -273,6 +287,20 @@ export const makeBranchProvider = <R extends ResourceLike>(opts: {
|
|
|
273
287
|
return { action: "replace" } as const;
|
|
274
288
|
}
|
|
275
289
|
|
|
290
|
+
if (news.replicas !== undefined) {
|
|
291
|
+
if (output?.desiredReplicas !== news.replicas) {
|
|
292
|
+
return { action: "update" } as const;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
const desiredHasReplicas = news.replicas > 0;
|
|
296
|
+
if (
|
|
297
|
+
output?.hasReplicas !== undefined &&
|
|
298
|
+
output.hasReplicas !== desiredHasReplicas
|
|
299
|
+
) {
|
|
300
|
+
return { action: "update" } as const;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
276
304
|
if (news.migrationsDir) {
|
|
277
305
|
const newHashes = yield* hashMigrations(news.migrationsDir);
|
|
278
306
|
if (!recordsEqual(newHashes, output?.migrationsHashes ?? {})) {
|
|
@@ -336,6 +364,12 @@ export const makeBranchProvider = <R extends ResourceLike>(opts: {
|
|
|
336
364
|
migrationsTable: output?.migrationsTable ?? olds?.migrationsTable,
|
|
337
365
|
migrationsHashes: output?.migrationsHashes ?? {},
|
|
338
366
|
importHashes: output?.importHashes ?? {},
|
|
367
|
+
desiredReplicas:
|
|
368
|
+
output?.desiredReplicas ??
|
|
369
|
+
olds?.desiredReplicas ??
|
|
370
|
+
olds?.replicas,
|
|
371
|
+
hasReplicas: data.has_replicas,
|
|
372
|
+
hasReadOnlyReplicas: data.has_read_only_replicas,
|
|
339
373
|
} satisfies BaseBranchAttributes;
|
|
340
374
|
|
|
341
375
|
return output ? attrs : Unowned(attrs);
|
|
@@ -493,6 +527,39 @@ export const makeBranchProvider = <R extends ResourceLike>(opts: {
|
|
|
493
527
|
}
|
|
494
528
|
}
|
|
495
529
|
|
|
530
|
+
if (opts.expectedKind === "postgresql" && news.replicas !== undefined) {
|
|
531
|
+
const desiredReplicas = news.replicas;
|
|
532
|
+
const desiredHasReplicas = desiredReplicas > 0;
|
|
533
|
+
const shouldApplyReplicaChange =
|
|
534
|
+
current.has_replicas !== desiredHasReplicas ||
|
|
535
|
+
(desiredHasReplicas && output?.desiredReplicas !== desiredReplicas);
|
|
536
|
+
|
|
537
|
+
if (shouldApplyReplicaChange) {
|
|
538
|
+
yield* waitForPendingPostgresChanges(
|
|
539
|
+
organization,
|
|
540
|
+
databaseName,
|
|
541
|
+
branchName,
|
|
542
|
+
);
|
|
543
|
+
const change = yield* planetscale.updateBranchChangeRequest({
|
|
544
|
+
organization,
|
|
545
|
+
database: databaseName,
|
|
546
|
+
branch: branchName,
|
|
547
|
+
replicas: desiredReplicas,
|
|
548
|
+
});
|
|
549
|
+
yield* waitForPendingPostgresChanges(
|
|
550
|
+
organization,
|
|
551
|
+
databaseName,
|
|
552
|
+
branchName,
|
|
553
|
+
change.id,
|
|
554
|
+
);
|
|
555
|
+
current = yield* planetscale.getBranch({
|
|
556
|
+
organization,
|
|
557
|
+
database: databaseName,
|
|
558
|
+
branch: branchName,
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
496
563
|
// Sync clusterSize — only meaningful on production branches.
|
|
497
564
|
if (news.clusterSize) {
|
|
498
565
|
if (current.kind === "postgresql") {
|
|
@@ -559,6 +626,9 @@ export const makeBranchProvider = <R extends ResourceLike>(opts: {
|
|
|
559
626
|
migrationsTable: news.migrationsDir ? migrationsTable : undefined,
|
|
560
627
|
migrationsHashes,
|
|
561
628
|
importHashes,
|
|
629
|
+
desiredReplicas: news.replicas ?? output?.desiredReplicas,
|
|
630
|
+
hasReplicas: updated.has_replicas,
|
|
631
|
+
hasReadOnlyReplicas: updated.has_read_only_replicas,
|
|
562
632
|
} satisfies BaseBranchAttributes;
|
|
563
633
|
}),
|
|
564
634
|
|
|
@@ -28,6 +28,12 @@ export interface PostgresBranchProps extends BaseBranchProps {
|
|
|
28
28
|
*/
|
|
29
29
|
clusterSize?: PostgresClusterSize;
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Total number of replicas for the branch. `0` creates or converges the
|
|
33
|
+
* branch to non-HA/single-node; `2+` enables HA.
|
|
34
|
+
*/
|
|
35
|
+
replicas?: number;
|
|
36
|
+
|
|
31
37
|
/**
|
|
32
38
|
* Parent branch — either a string name or another {@link PostgresBranch}.
|
|
33
39
|
* @default "main"
|