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
|
@@ -3,6 +3,7 @@ import * as Effect from "effect/Effect";
|
|
|
3
3
|
import * as Schedule from "effect/Schedule";
|
|
4
4
|
import * as Stream from "effect/Stream";
|
|
5
5
|
|
|
6
|
+
import { Unowned } from "../../AdoptPolicy.ts";
|
|
6
7
|
import { createPhysicalName } from "../../PhysicalName.ts";
|
|
7
8
|
import * as Provider from "../../Provider.ts";
|
|
8
9
|
import { Resource } from "../../Resource.ts";
|
|
@@ -312,25 +313,47 @@ export const ApplicationProvider = () =>
|
|
|
312
313
|
}
|
|
313
314
|
}),
|
|
314
315
|
|
|
315
|
-
read: Effect.fn(function* ({ output }) {
|
|
316
|
+
read: Effect.fn(function* ({ output, olds }) {
|
|
316
317
|
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
317
318
|
|
|
318
|
-
|
|
319
|
-
|
|
319
|
+
// Prefer the persisted physical id. After state loss there is no
|
|
320
|
+
// applicationId to probe, so fall back to matching an existing app
|
|
321
|
+
// by domain — without this the engine plans a blind `create`, and
|
|
322
|
+
// Cloudflare happily creates a second application on the same
|
|
323
|
+
// domain with a fresh `aud`, silently breaking existing JWT
|
|
324
|
+
// validation. Warp apps are excluded from the fallback: they are a
|
|
325
|
+
// per-account singleton that `reconcile` already recovers.
|
|
326
|
+
let observed: ObservedApp | undefined;
|
|
327
|
+
if (output?.applicationId) {
|
|
328
|
+
observed = yield* observeById(accountId, output.applicationId);
|
|
329
|
+
} else if (olds?.type !== "warp" && typeof olds?.domain === "string") {
|
|
330
|
+
observed = yield* findByDomain(accountId, olds.domain);
|
|
331
|
+
} else {
|
|
332
|
+
return undefined;
|
|
333
|
+
}
|
|
320
334
|
if (!observed?.id || !observed.aud || !observed.type) {
|
|
321
335
|
return undefined;
|
|
322
336
|
}
|
|
323
|
-
|
|
337
|
+
const domain = observed.domain ?? output?.domain ?? olds?.domain;
|
|
338
|
+
const name = observed.name ?? output?.name;
|
|
339
|
+
if (domain === undefined || name === undefined) {
|
|
340
|
+
return undefined;
|
|
341
|
+
}
|
|
342
|
+
const attrs = {
|
|
324
343
|
applicationId: observed.id,
|
|
325
344
|
aud: observed.aud,
|
|
326
|
-
domain
|
|
327
|
-
destinations: observed.destinations ?? output
|
|
345
|
+
domain,
|
|
346
|
+
destinations: observed.destinations ?? output?.destinations,
|
|
328
347
|
type: observed.type,
|
|
329
|
-
name
|
|
330
|
-
accountId: output
|
|
331
|
-
createdAt: observed.createdAt ?? output
|
|
332
|
-
updatedAt: observed.updatedAt ?? output
|
|
348
|
+
name,
|
|
349
|
+
accountId: output?.accountId ?? accountId,
|
|
350
|
+
createdAt: observed.createdAt ?? output?.createdAt,
|
|
351
|
+
updatedAt: observed.updatedAt ?? output?.updatedAt,
|
|
333
352
|
} satisfies ApplicationAttributes;
|
|
353
|
+
// Recovered by id → positively ours. Recovered by domain scan →
|
|
354
|
+
// existence is certain but ownership is not (Access applications
|
|
355
|
+
// carry no alchemy marker), so gate takeover behind `--adopt`.
|
|
356
|
+
return output?.applicationId ? attrs : Unowned(attrs);
|
|
334
357
|
}),
|
|
335
358
|
|
|
336
359
|
reconcile: Effect.fn(function* ({ id, news, output }) {
|
|
@@ -532,6 +555,10 @@ const resolveAllowedIdps = (
|
|
|
532
555
|
const findWarpApp = (accountId: string) =>
|
|
533
556
|
zeroTrust.listAccessApplicationsForAccount.items({ accountId }).pipe(
|
|
534
557
|
Stream.runCollect,
|
|
558
|
+
// A sibling app mid-teardown can transiently reject the whole
|
|
559
|
+
// enumeration (AccessReferenceNotFound), and Cloudflare 403s when
|
|
560
|
+
// throttling — same transient windows `list` rides out.
|
|
561
|
+
retryTransientAccessError,
|
|
535
562
|
Effect.map((chunk) =>
|
|
536
563
|
Array.from(chunk).find(
|
|
537
564
|
(a) => (a as { type?: string | null }).type === "warp",
|
|
@@ -544,6 +571,30 @@ const findWarpApp = (accountId: string) =>
|
|
|
544
571
|
),
|
|
545
572
|
);
|
|
546
573
|
|
|
574
|
+
// Cold-recovery scan for `read` when no applicationId was persisted:
|
|
575
|
+
// match an existing application by its domain (unique per account for
|
|
576
|
+
// non-warp app types).
|
|
577
|
+
const findByDomain = (accountId: string, domain: string) =>
|
|
578
|
+
zeroTrust.listAccessApplicationsForAccount.items({ accountId }).pipe(
|
|
579
|
+
Stream.runCollect,
|
|
580
|
+
// A sibling app mid-teardown can transiently reject the whole
|
|
581
|
+
// enumeration (AccessReferenceNotFound), and Cloudflare 403s when
|
|
582
|
+
// throttling. A missed scan here is worse than a slow one: the engine
|
|
583
|
+
// would plan a blind `create` and either duplicate the app or trip
|
|
584
|
+
// Cloudflare's `application_already_exists` Conflict.
|
|
585
|
+
retryTransientAccessError,
|
|
586
|
+
Effect.map((chunk) =>
|
|
587
|
+
Array.from(chunk).find(
|
|
588
|
+
(a) => (a as { domain?: string | null }).domain === domain,
|
|
589
|
+
),
|
|
590
|
+
),
|
|
591
|
+
Effect.map((found) =>
|
|
592
|
+
found === undefined
|
|
593
|
+
? undefined
|
|
594
|
+
: narrowApp(found as Parameters<typeof narrowApp>[0]),
|
|
595
|
+
),
|
|
596
|
+
);
|
|
597
|
+
|
|
547
598
|
const observeById = (accountId: string, appId: string) =>
|
|
548
599
|
Effect.gen(function* () {
|
|
549
600
|
const r = yield* zeroTrust
|
|
@@ -234,13 +234,24 @@ export const NotificationWebhookProvider = () =>
|
|
|
234
234
|
olds?.secret === undefined ? undefined : Redacted.value(olds.secret);
|
|
235
235
|
const secretChanged = secret !== oldSecret;
|
|
236
236
|
if (observed.name !== name || observed.url !== url || secretChanged) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
237
|
+
// The update PUT fires the same test POST as create — ride out edge
|
|
238
|
+
// propagation of a just-deployed destination URL the same way.
|
|
239
|
+
yield* alerting
|
|
240
|
+
.updateDestinationWebhook({
|
|
241
|
+
accountId,
|
|
242
|
+
webhookId: observed.id,
|
|
243
|
+
name,
|
|
244
|
+
url,
|
|
245
|
+
secret,
|
|
246
|
+
})
|
|
247
|
+
.pipe(
|
|
248
|
+
Effect.retry({
|
|
249
|
+
while: (e) => e._tag === "WebhookTestFailed",
|
|
250
|
+
schedule: Schedule.exponential("1 second").pipe(
|
|
251
|
+
Schedule.both(Schedule.recurs(5)),
|
|
252
|
+
),
|
|
253
|
+
}),
|
|
254
|
+
);
|
|
244
255
|
const fresh = yield* observeWebhook(accountId, observed.id);
|
|
245
256
|
return toWebhookAttributes(fresh ?? observed, accountId);
|
|
246
257
|
}
|
|
@@ -10,7 +10,7 @@ import type { Dataset as AnalyticsEngineDatasetLike } from "./Dataset.ts";
|
|
|
10
10
|
*
|
|
11
11
|
* `WriteDataset` is a single identifier that is simultaneously the binding's
|
|
12
12
|
* Context tag, its type, and the callable —
|
|
13
|
-
* `yield* Cloudflare.
|
|
13
|
+
* `yield* Cloudflare.AnalyticsEngine.WriteDataset(dataset)`.
|
|
14
14
|
*
|
|
15
15
|
* @binding
|
|
16
16
|
* @product Analytics Engine
|
|
@@ -18,7 +18,7 @@ import type { Dataset as AnalyticsEngineDatasetLike } from "./Dataset.ts";
|
|
|
18
18
|
*
|
|
19
19
|
* @example Write a data point inside a Worker
|
|
20
20
|
* ```typescript
|
|
21
|
-
* const analytics = yield* Cloudflare.
|
|
21
|
+
* const analytics = yield* Cloudflare.AnalyticsEngine.WriteDataset(Dataset);
|
|
22
22
|
* yield* analytics.writeDataPoint({ blobs: ["signup"] });
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
@@ -255,6 +255,10 @@ export const AccountApiTokenProvider = () =>
|
|
|
255
255
|
// `TokenNotFound`. Either is fine; we just want the resource gone.
|
|
256
256
|
Effect.catchTag("InvalidRoute", () => Effect.void),
|
|
257
257
|
Effect.catchTag("TokenNotFound", () => Effect.void),
|
|
258
|
+
// Cloudflare-managed tokens (e.g. "Cloudflare Resource Tagging
|
|
259
|
+
// System") can never be deleted (code 1001). We don't own them, so
|
|
260
|
+
// treat the refusal as a no-op rather than a failure.
|
|
261
|
+
Effect.catchTag("TokenManagedByCloudflare", () => Effect.void),
|
|
258
262
|
);
|
|
259
263
|
}),
|
|
260
264
|
list: Effect.fn(function* () {
|
|
@@ -105,7 +105,7 @@ const selectAccount = (accessToken: string) =>
|
|
|
105
105
|
const response = yield* list({});
|
|
106
106
|
const accounts = response.result;
|
|
107
107
|
if (accounts.length === 0) {
|
|
108
|
-
yield* new AuthError({
|
|
108
|
+
return yield* new AuthError({
|
|
109
109
|
message: "Cloudflare: no accounts found for this credential.",
|
|
110
110
|
});
|
|
111
111
|
}
|
|
@@ -43,6 +43,45 @@ export class ContainerError extends Data.TaggedError("ContainerError")<{
|
|
|
43
43
|
readonly cause?: unknown;
|
|
44
44
|
}> {}
|
|
45
45
|
|
|
46
|
+
/**
|
|
47
|
+
* No container instance could be allocated within the start budget — the
|
|
48
|
+
* account is at its concurrent-instance cap (`maxInstances`) or the platform
|
|
49
|
+
* is still provisioning. Mirrors `@cloudflare/containers`'
|
|
50
|
+
* `NO_CONTAINER_INSTANCE_ERROR` (surfaced as HTTP 503 by native).
|
|
51
|
+
*/
|
|
52
|
+
export class NoContainerInstanceError extends Data.TaggedError(
|
|
53
|
+
"NoContainerInstanceError",
|
|
54
|
+
)<{
|
|
55
|
+
readonly message: string;
|
|
56
|
+
readonly cause?: unknown;
|
|
57
|
+
}> {}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Cloudflare is rate limiting container starts ("too many containers per
|
|
61
|
+
* second"). Mirrors `@cloudflare/containers`' `RATE_LIMITED_ERROR` (HTTP 429).
|
|
62
|
+
* Hammering `start()` while rate limited only prolongs it, so callers should
|
|
63
|
+
* back off rather than retry tightly.
|
|
64
|
+
*/
|
|
65
|
+
export class ContainerRateLimitedError extends Data.TaggedError(
|
|
66
|
+
"ContainerRateLimitedError",
|
|
67
|
+
)<{
|
|
68
|
+
readonly message: string;
|
|
69
|
+
readonly cause?: unknown;
|
|
70
|
+
}> {}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* The container instance exited/crashed while we were waiting for its port —
|
|
74
|
+
* the entrypoint failed to bind or died. Mirrors native's "container exited"
|
|
75
|
+
* detection (`!this.container.running` mid-wait); not curable by continuing to
|
|
76
|
+
* poll the same instance.
|
|
77
|
+
*/
|
|
78
|
+
export class ContainerCrashedError extends Data.TaggedError(
|
|
79
|
+
"ContainerCrashedError",
|
|
80
|
+
)<{
|
|
81
|
+
readonly message: string;
|
|
82
|
+
readonly cause?: unknown;
|
|
83
|
+
}> {}
|
|
84
|
+
|
|
46
85
|
export interface ContainerStartupOptions extends cf.ContainerStartupOptions {}
|
|
47
86
|
|
|
48
87
|
/**
|
|
@@ -50,7 +89,7 @@ export interface ContainerStartupOptions extends cf.ContainerStartupOptions {}
|
|
|
50
89
|
* {@link main} and bakes it in as the container's entrypoint.
|
|
51
90
|
*/
|
|
52
91
|
export interface EffectfulContainerProps extends ContainerApplicationProps {
|
|
53
|
-
/** Entrypoint file for the Effect program, typically `import.meta.
|
|
92
|
+
/** Entrypoint file for the Effect program, typically `import.meta.url`. */
|
|
54
93
|
main: string;
|
|
55
94
|
}
|
|
56
95
|
/**
|
|
@@ -154,7 +193,7 @@ export type Container<Id extends string = string> = Named<Id> & {
|
|
|
154
193
|
* ```typescript
|
|
155
194
|
* // src/Sandbox.runtime.ts — props are the first argument to `.make()`
|
|
156
195
|
* export default Sandbox.make(
|
|
157
|
-
* { main: import.meta.
|
|
196
|
+
* { main: import.meta.url },
|
|
158
197
|
* Effect.gen(function* () {
|
|
159
198
|
* const cp = yield* ChildProcessSpawner;
|
|
160
199
|
*
|
|
@@ -202,7 +241,7 @@ export type Container<Id extends string = string> = Named<Id> & {
|
|
|
202
241
|
* >()("Sandbox") {}
|
|
203
242
|
*
|
|
204
243
|
* export default Sandbox.make(
|
|
205
|
-
* { main: import.meta.
|
|
244
|
+
* { main: import.meta.url },
|
|
206
245
|
* Effect.gen(function* () {
|
|
207
246
|
* return Sandbox.of({
|
|
208
247
|
* ping: () => Effect.succeed("pong"),
|
|
@@ -265,7 +304,7 @@ export type Container<Id extends string = string> = Named<Id> & {
|
|
|
265
304
|
* ```typescript
|
|
266
305
|
* export const SandboxLive = Sandbox.make(
|
|
267
306
|
* Stack.useSync((stack) => ({
|
|
268
|
-
* main: import.meta.
|
|
307
|
+
* main: import.meta.url,
|
|
269
308
|
* instanceType: stack.stage === "prod" ? "standard-1" : "dev",
|
|
270
309
|
* observability: { logs: { enabled: true } },
|
|
271
310
|
* })),
|
|
@@ -149,13 +149,17 @@ export interface ContainerApplicationProps extends PlatformProps {
|
|
|
149
149
|
*/
|
|
150
150
|
dockerfile?: string;
|
|
151
151
|
/**
|
|
152
|
-
* Initial number of instances to maintain.
|
|
153
|
-
* @
|
|
152
|
+
* Initial number of instances to maintain. Matches wrangler, which forces
|
|
153
|
+
* this to 0 whenever {@link maxInstances} is set (pure scale-from-zero).
|
|
154
|
+
* @default 0
|
|
154
155
|
*/
|
|
155
156
|
instances?: number;
|
|
156
157
|
/**
|
|
157
|
-
* Maximum number of instances the application may scale to.
|
|
158
|
-
*
|
|
158
|
+
* Maximum number of instances the application may scale to. Matches
|
|
159
|
+
* wrangler's default of 20. A value of 1 serializes every Durable Object
|
|
160
|
+
* instance through a single container slot, so the default lets containers
|
|
161
|
+
* scale concurrently out of the box.
|
|
162
|
+
* @default 20
|
|
159
163
|
*/
|
|
160
164
|
maxInstances?: number;
|
|
161
165
|
/**
|
|
@@ -164,8 +168,10 @@ export interface ContainerApplicationProps extends PlatformProps {
|
|
|
164
168
|
*/
|
|
165
169
|
schedulingPolicy?: ContainerApplication.SchedulingPolicy;
|
|
166
170
|
/**
|
|
167
|
-
* Instance type for each deployment.
|
|
168
|
-
* @
|
|
171
|
+
* Instance type for each deployment. Defaults to wrangler's `"lite"` tier
|
|
172
|
+
* (1/16 vCPU, 256 MiB, 2 GB disk) when no explicit {@link vcpu}/{@link memory}/
|
|
173
|
+
* {@link disk} is set. (`"dev"` is wrangler's deprecated alias for `"lite"`.)
|
|
174
|
+
* @default "lite"
|
|
169
175
|
*/
|
|
170
176
|
instanceType?: ContainerApplication.InstanceType;
|
|
171
177
|
/**
|
|
@@ -285,7 +291,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
285
291
|
* import * as Cloudflare from "alchemy/Cloudflare";
|
|
286
292
|
*
|
|
287
293
|
* export class Sandbox extends Cloudflare.Container<Sandbox>()("Sandbox", {
|
|
288
|
-
* main: import.meta.
|
|
294
|
+
* main: import.meta.url,
|
|
289
295
|
* }) {}
|
|
290
296
|
* ```
|
|
291
297
|
*
|
|
@@ -297,7 +303,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
297
303
|
* @example Named container with a non-default handler export
|
|
298
304
|
* ```typescript
|
|
299
305
|
* export class Worker extends Cloudflare.Container<Worker>()("Worker", {
|
|
300
|
-
* main: import.meta.
|
|
306
|
+
* main: import.meta.url,
|
|
301
307
|
* handler: "runWorker",
|
|
302
308
|
* name: "background-worker",
|
|
303
309
|
* }) {}
|
|
@@ -346,7 +352,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
346
352
|
* @example Node runtime with external native deps
|
|
347
353
|
* ```typescript
|
|
348
354
|
* export class ImageApi extends Cloudflare.Container<ImageApi>()("ImageApi", {
|
|
349
|
-
* main: import.meta.
|
|
355
|
+
* main: import.meta.url,
|
|
350
356
|
* runtime: "node",
|
|
351
357
|
* external: ["sharp"],
|
|
352
358
|
* autoInstallExternals: true,
|
|
@@ -360,7 +366,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
360
366
|
* @example Custom Dockerfile base and registry
|
|
361
367
|
* ```typescript
|
|
362
368
|
* export class Custom extends Cloudflare.Container<Custom>()("Custom", {
|
|
363
|
-
* main: import.meta.
|
|
369
|
+
* main: import.meta.url,
|
|
364
370
|
* dockerfile: "FROM oven/bun:1\nRUN apt-get update && apt-get install -y ffmpeg",
|
|
365
371
|
* autoInstallExternals: false,
|
|
366
372
|
* registryId: "registry.cloudflare.com",
|
|
@@ -380,7 +386,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
380
386
|
* @example Autoscaling with a larger instance type
|
|
381
387
|
* ```typescript
|
|
382
388
|
* export class Sandbox extends Cloudflare.Container<Sandbox>()("Sandbox", {
|
|
383
|
-
* main: import.meta.
|
|
389
|
+
* main: import.meta.url,
|
|
384
390
|
* instanceType: "standard-1",
|
|
385
391
|
* instances: 1,
|
|
386
392
|
* maxInstances: 5,
|
|
@@ -394,7 +400,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
394
400
|
* @example Explicit CPU, memory, and disk overrides
|
|
395
401
|
* ```typescript
|
|
396
402
|
* export class Heavy extends Cloudflare.Container<Heavy>()("Heavy", {
|
|
397
|
-
* main: import.meta.
|
|
403
|
+
* main: import.meta.url,
|
|
398
404
|
* vcpu: 2,
|
|
399
405
|
* memory: "4GB",
|
|
400
406
|
* disk: { size: "10GB" },
|
|
@@ -413,7 +419,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
413
419
|
* @example Environment variables, secrets, and a command override
|
|
414
420
|
* ```typescript
|
|
415
421
|
* export class Api extends Cloudflare.Container<Api>()("Api", {
|
|
416
|
-
* main: import.meta.
|
|
422
|
+
* main: import.meta.url,
|
|
417
423
|
* environmentVariables: [{ name: "LOG_LEVEL", value: "info" }],
|
|
418
424
|
* secrets: [{ name: "API_KEY", type: "env", secret: "my-stored-secret" }],
|
|
419
425
|
* command: ["bun", "run", "start"],
|
|
@@ -429,7 +435,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
429
435
|
* @example Passing env and selecting runtime exports
|
|
430
436
|
* ```typescript
|
|
431
437
|
* export class Job extends Cloudflare.Container<Job>()("Job", {
|
|
432
|
-
* main: import.meta.
|
|
438
|
+
* main: import.meta.url,
|
|
433
439
|
* env: { REGION: "wnam", FEATURE_FLAG: "on" },
|
|
434
440
|
* exports: ["default"],
|
|
435
441
|
* }) {}
|
|
@@ -446,7 +452,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
446
452
|
* @example Ports, network mode, DNS, and a health check
|
|
447
453
|
* ```typescript
|
|
448
454
|
* export class Web extends Cloudflare.Container<Web>()("Web", {
|
|
449
|
-
* main: import.meta.
|
|
455
|
+
* main: import.meta.url,
|
|
450
456
|
* ports: [{ name: "http", port: 8080 }],
|
|
451
457
|
* network: { assignIpv4: "predefined", mode: "public" },
|
|
452
458
|
* dns: { servers: ["1.1.1.1"], searches: ["internal"] },
|
|
@@ -466,7 +472,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
466
472
|
* @example Enable logs and grant SSH access
|
|
467
473
|
* ```typescript
|
|
468
474
|
* export class Api extends Cloudflare.Container<Api>()("Api", {
|
|
469
|
-
* main: import.meta.
|
|
475
|
+
* main: import.meta.url,
|
|
470
476
|
* observability: { logs: { enabled: true } },
|
|
471
477
|
* sshPublicKeyIds: ["ssh-key-id-123"],
|
|
472
478
|
* }) {}
|
|
@@ -484,7 +490,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
484
490
|
* @example Pin scheduling policy and placement
|
|
485
491
|
* ```typescript
|
|
486
492
|
* export class Edge extends Cloudflare.Container<Edge>()("Edge", {
|
|
487
|
-
* main: import.meta.
|
|
493
|
+
* main: import.meta.url,
|
|
488
494
|
* schedulingPolicy: "regional",
|
|
489
495
|
* constraints: { tier: 1 },
|
|
490
496
|
* affinities: { colocation: "datacenter" },
|
|
@@ -503,7 +509,7 @@ export type ContainerShape = Main<ContainerServices>;
|
|
|
503
509
|
* @example Progressive rollout on update
|
|
504
510
|
* ```typescript
|
|
505
511
|
* export class Api extends Cloudflare.Container<Api>()("Api", {
|
|
506
|
-
* main: import.meta.
|
|
512
|
+
* main: import.meta.url,
|
|
507
513
|
* instances: 4,
|
|
508
514
|
* maxInstances: 4,
|
|
509
515
|
* rollout: { strategy: "rolling", stepPercentage: 25 },
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
-
import * as FileSystem from "effect/FileSystem";
|
|
3
2
|
import * as Redacted from "effect/Redacted";
|
|
4
3
|
import type * as rolldown from "rolldown";
|
|
5
4
|
import * as Bundle from "../../Bundle/Bundle.ts";
|
|
6
|
-
import { findCwdForBundle } from "../../Bundle/TempRoot.ts";
|
|
5
|
+
import { findCwdForBundle, resolveMainPath } from "../../Bundle/TempRoot.ts";
|
|
7
6
|
import * as Output from "../../Output.ts";
|
|
8
7
|
import { createPhysicalName } from "../../PhysicalName.ts";
|
|
9
8
|
import { Self } from "../../Self.ts";
|
|
@@ -146,11 +145,10 @@ export const bundleContainerProgram = Effect.fn(function* ({
|
|
|
146
145
|
external?: string[];
|
|
147
146
|
outdir?: string;
|
|
148
147
|
}) {
|
|
149
|
-
const fs = yield* FileSystem.FileSystem;
|
|
150
148
|
const stack = yield* Stack;
|
|
151
149
|
const virtualEntryPlugin = yield* Bundle.virtualEntryPlugin;
|
|
152
150
|
|
|
153
|
-
const realMain = yield*
|
|
151
|
+
const realMain = yield* resolveMainPath(main);
|
|
154
152
|
const cwd = yield* findCwdForBundle(realMain);
|
|
155
153
|
|
|
156
154
|
const buildBundle = Effect.fn(function* (
|
|
@@ -5,7 +5,7 @@ import * as Redacted from "effect/Redacted";
|
|
|
5
5
|
import { HttpServer, type HttpEffect } from "../../Http.ts";
|
|
6
6
|
import * as Output from "../../Output.ts";
|
|
7
7
|
import { Platform } from "../../Platform.ts";
|
|
8
|
-
import { type Rpc
|
|
8
|
+
import { serveRpc, type Rpc } from "../../Rpc.ts";
|
|
9
9
|
import * as Server from "../../Server/index.ts";
|
|
10
10
|
import type { Fetcher } from "../Fetcher.ts";
|
|
11
11
|
import { fromCloudflareFetcher, toCloudflareFetcher } from "../Fetcher.ts";
|
|
@@ -53,7 +53,7 @@ export const ContainerPlatform: Platform<
|
|
|
53
53
|
);
|
|
54
54
|
if (httpServer) {
|
|
55
55
|
yield* httpServer.serve(finalHandler);
|
|
56
|
-
yield* Effect.never;
|
|
56
|
+
return yield* Effect.never;
|
|
57
57
|
} else {
|
|
58
58
|
// this should only happen at plantime, validate?
|
|
59
59
|
}
|
|
@@ -192,7 +192,7 @@ export const ContainerPlatform: Platform<
|
|
|
192
192
|
fromCloudflareFetcher(state.container!.getTcpPort(port)),
|
|
193
193
|
),
|
|
194
194
|
setInactivityTimeout: (durationMs: number | bigint) =>
|
|
195
|
-
Effect.
|
|
195
|
+
Effect.promise(() =>
|
|
196
196
|
state.container!.setInactivityTimeout(durationMs),
|
|
197
197
|
),
|
|
198
198
|
interceptOutboundHttp: (addr: string, binding: Fetcher) =>
|
|
@@ -5,17 +5,10 @@ import * as Path from "effect/Path";
|
|
|
5
5
|
import * as Schedule from "effect/Schedule";
|
|
6
6
|
import { Unowned } from "../../AdoptPolicy.ts";
|
|
7
7
|
import { AlchemyContext } from "../../AlchemyContext.ts";
|
|
8
|
-
import { hashDirectory } from "../../Command/Memo.ts";
|
|
9
|
-
import {
|
|
10
|
-
dockerBuild,
|
|
11
|
-
dockerTag,
|
|
12
|
-
materializeDockerfile,
|
|
13
|
-
pushImage,
|
|
14
|
-
runDockerCommand,
|
|
15
|
-
writeContextFiles,
|
|
16
|
-
} from "../../Bundle/Docker.ts";
|
|
17
8
|
import { getStableContextDir } from "../../Bundle/TempRoot.ts";
|
|
9
|
+
import { hashDirectory } from "../../Command/Memo.ts";
|
|
18
10
|
import { deepEqual, isResolved } from "../../Diff.ts";
|
|
11
|
+
import { Docker } from "../../Docker/Docker.ts";
|
|
19
12
|
import * as Provider from "../../Provider.ts";
|
|
20
13
|
import { type ResourceBinding } from "../../Resource.ts";
|
|
21
14
|
import { sha256Object } from "../../Util/sha256.ts";
|
|
@@ -65,6 +58,7 @@ export const LiveContainerProvider = () =>
|
|
|
65
58
|
const { dotAlchemy } = yield* AlchemyContext;
|
|
66
59
|
const fs = yield* FileSystem.FileSystem;
|
|
67
60
|
const path = yield* Path.Path;
|
|
61
|
+
const docker = yield* Docker;
|
|
68
62
|
|
|
69
63
|
const telemetry = yield* CloudflareLogs;
|
|
70
64
|
|
|
@@ -116,7 +110,17 @@ export const LiveContainerProvider = () =>
|
|
|
116
110
|
) =>
|
|
117
111
|
normalizeNulls({
|
|
118
112
|
image: imageRef,
|
|
119
|
-
|
|
113
|
+
// Default to wrangler's instance type ("lite") so containers schedule
|
|
114
|
+
// the same way out of the box. `instance_type` is mutually exclusive
|
|
115
|
+
// with explicit vcpu/memory/disk, so only default it when none are
|
|
116
|
+
// set. ("dev" is wrangler's deprecated alias for "lite".)
|
|
117
|
+
instanceType:
|
|
118
|
+
props.instanceType ??
|
|
119
|
+
(props.vcpu === undefined &&
|
|
120
|
+
props.memory === undefined &&
|
|
121
|
+
props.disk === undefined
|
|
122
|
+
? "lite"
|
|
123
|
+
: undefined),
|
|
120
124
|
observability: props.observability,
|
|
121
125
|
sshPublicKeyIds: props.sshPublicKeyIds,
|
|
122
126
|
secrets: props.secrets,
|
|
@@ -136,6 +140,28 @@ export const LiveContainerProvider = () =>
|
|
|
136
140
|
checks: props.checks,
|
|
137
141
|
}) as ContainerApplication.Configuration;
|
|
138
142
|
|
|
143
|
+
// Scaling/placement defaults mirror wrangler's container defaults
|
|
144
|
+
// (`wrangler-dist/cli.js`) so an Alchemy container behaves like a
|
|
145
|
+
// `wrangler deploy`d one without extra config:
|
|
146
|
+
// - max_instances: 20 (`container.max_instances ?? 20`)
|
|
147
|
+
// - instances: 0 (wrangler forces 0 whenever
|
|
148
|
+
// max_instances is set, which we always
|
|
149
|
+
// do — pure scale-from-zero)
|
|
150
|
+
// - scheduling_policy: "default"
|
|
151
|
+
// (wrangler also defaults `constraints.tiers` to `[1, 2]`, but the
|
|
152
|
+
// distilled SDK models constraints as singular `tier`, not the `tiers`
|
|
153
|
+
// array, so we leave constraints untouched — it's a minor placement hint
|
|
154
|
+
// next to the scaling defaults.)
|
|
155
|
+
// A maxInstances default of 1 (the previous value) silently serialised
|
|
156
|
+
// every Durable Object instance through a single container slot, which is
|
|
157
|
+
// the dominant cause of "containers are slow under load".
|
|
158
|
+
const scalingDefaults = (props: ContainerApplicationProps) => ({
|
|
159
|
+
instances: props.instances ?? 0,
|
|
160
|
+
maxInstances: props.maxInstances ?? 20,
|
|
161
|
+
schedulingPolicy: props.schedulingPolicy ?? "default",
|
|
162
|
+
constraints: props.constraints ?? {},
|
|
163
|
+
});
|
|
164
|
+
|
|
139
165
|
const computeImage = Effect.fn(function* (
|
|
140
166
|
id: string,
|
|
141
167
|
props: ContainerApplicationProps,
|
|
@@ -226,13 +252,8 @@ export const LiveContainerProvider = () =>
|
|
|
226
252
|
if (session) {
|
|
227
253
|
yield* session.note(`Pulling container image ${build.image}...`);
|
|
228
254
|
}
|
|
229
|
-
yield*
|
|
230
|
-
|
|
231
|
-
"--platform",
|
|
232
|
-
platform,
|
|
233
|
-
build.image,
|
|
234
|
-
]);
|
|
235
|
-
yield* dockerTag(build.image, imageRef);
|
|
255
|
+
yield* docker.image.pull(build.image, platform);
|
|
256
|
+
yield* docker.image.tag(build.image, imageRef);
|
|
236
257
|
} else if (build.kind === "external") {
|
|
237
258
|
// Build the user's Dockerfile directly against their context dir so
|
|
238
259
|
// relative `COPY`/`ADD` paths resolve as the author intended.
|
|
@@ -242,11 +263,11 @@ export const LiveContainerProvider = () =>
|
|
|
242
263
|
if (session) {
|
|
243
264
|
yield* session.note(`Building container image ${imageRef}...`);
|
|
244
265
|
}
|
|
245
|
-
yield*
|
|
266
|
+
yield* docker.image.build({
|
|
246
267
|
tag: imageRef,
|
|
247
268
|
context: build.context,
|
|
248
269
|
platform,
|
|
249
|
-
|
|
270
|
+
file: build.dockerfile,
|
|
250
271
|
});
|
|
251
272
|
} else {
|
|
252
273
|
// Effect-native program: materialize the generated Dockerfile and
|
|
@@ -269,19 +290,15 @@ export const LiveContainerProvider = () =>
|
|
|
269
290
|
props.external,
|
|
270
291
|
props.autoInstallExternals,
|
|
271
292
|
);
|
|
272
|
-
yield*
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
build.files.map((f, i) => ({
|
|
276
|
-
// Keep the entry rename to `index.mjs` so the Dockerfile
|
|
277
|
-
// ENTRYPOINT (`ENTRYPOINT ["bun", "/app/index.mjs"]`) stays
|
|
278
|
-
// valid; preserve rolldown-assigned fileNames for every other
|
|
279
|
-
// chunk so intra-bundle relative imports resolve at runtime.
|
|
293
|
+
yield* docker.materialize({
|
|
294
|
+
context: contextDir,
|
|
295
|
+
dockerfile: finalDockerfile,
|
|
296
|
+
files: build.files.map((f, i) => ({
|
|
280
297
|
path: i === 0 ? "index.mjs" : f.path,
|
|
281
298
|
content: f.content,
|
|
282
299
|
})),
|
|
283
|
-
);
|
|
284
|
-
yield*
|
|
300
|
+
});
|
|
301
|
+
yield* docker.image.build({
|
|
285
302
|
tag: imageRef,
|
|
286
303
|
context: contextDir,
|
|
287
304
|
platform,
|
|
@@ -312,7 +329,7 @@ export const LiveContainerProvider = () =>
|
|
|
312
329
|
);
|
|
313
330
|
}
|
|
314
331
|
|
|
315
|
-
yield*
|
|
332
|
+
yield* docker.image.push(imageRef, {
|
|
316
333
|
username,
|
|
317
334
|
password: credentials.password,
|
|
318
335
|
server: registryId,
|
|
@@ -435,10 +452,7 @@ export const LiveContainerProvider = () =>
|
|
|
435
452
|
const application = yield* Containers.createContainerApplication({
|
|
436
453
|
accountId,
|
|
437
454
|
name,
|
|
438
|
-
|
|
439
|
-
maxInstances: news.maxInstances ?? 1,
|
|
440
|
-
schedulingPolicy: news.schedulingPolicy ?? "default",
|
|
441
|
-
constraints: news.constraints ?? {},
|
|
455
|
+
...scalingDefaults(news),
|
|
442
456
|
affinities: news.affinities,
|
|
443
457
|
configuration,
|
|
444
458
|
durableObjects,
|
|
@@ -533,10 +547,7 @@ export const LiveContainerProvider = () =>
|
|
|
533
547
|
Containers.updateContainerApplication({
|
|
534
548
|
accountId,
|
|
535
549
|
applicationId: existing.applicationId,
|
|
536
|
-
|
|
537
|
-
maxInstances: news.maxInstances ?? 1,
|
|
538
|
-
schedulingPolicy: news.schedulingPolicy ?? "default",
|
|
539
|
-
constraints: news.constraints ?? {},
|
|
550
|
+
...scalingDefaults(news),
|
|
540
551
|
affinities: news.affinities,
|
|
541
552
|
configuration,
|
|
542
553
|
}),
|
|
@@ -559,10 +570,7 @@ export const LiveContainerProvider = () =>
|
|
|
559
570
|
return yield* Containers.createContainerApplication({
|
|
560
571
|
accountId,
|
|
561
572
|
name: existing.applicationName,
|
|
562
|
-
|
|
563
|
-
maxInstances: news.maxInstances ?? 1,
|
|
564
|
-
schedulingPolicy: news.schedulingPolicy ?? "default",
|
|
565
|
-
constraints: news.constraints ?? {},
|
|
573
|
+
...scalingDefaults(news),
|
|
566
574
|
affinities: news.affinities,
|
|
567
575
|
configuration,
|
|
568
576
|
durableObjects,
|