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
package/src/AWS/ECS/Task.ts
CHANGED
|
@@ -3,31 +3,28 @@ import * as ecr from "@distilled.cloud/aws/ecr";
|
|
|
3
3
|
import * as ecs from "@distilled.cloud/aws/ecs";
|
|
4
4
|
import * as iam from "@distilled.cloud/aws/iam";
|
|
5
5
|
import { Region } from "@distilled.cloud/aws/Region";
|
|
6
|
-
import * as Config from "effect/Config";
|
|
7
6
|
import * as Context from "effect/Context";
|
|
8
7
|
import * as Effect from "effect/Effect";
|
|
9
|
-
import * as FileSystem from "effect/FileSystem";
|
|
10
8
|
import * as Stream from "effect/Stream";
|
|
11
9
|
import type * as rolldown from "rolldown";
|
|
12
10
|
import { AlchemyContext } from "../../AlchemyContext.ts";
|
|
13
11
|
import * as Bundle from "../../Bundle/Bundle.ts";
|
|
14
|
-
import {
|
|
15
|
-
dockerBuild,
|
|
16
|
-
materializeDockerfile,
|
|
17
|
-
pushImage,
|
|
18
|
-
writeContextFiles,
|
|
19
|
-
} from "../../Bundle/Docker.ts";
|
|
20
12
|
import {
|
|
21
13
|
findCwdForBundle,
|
|
22
14
|
getStableContextDir,
|
|
15
|
+
resolveMainPath,
|
|
23
16
|
} from "../../Bundle/TempRoot.ts";
|
|
24
17
|
import { isResolved } from "../../Diff.ts";
|
|
25
|
-
import
|
|
18
|
+
import { Docker } from "../../Docker/Docker.ts";
|
|
26
19
|
import { createPhysicalName } from "../../PhysicalName.ts";
|
|
27
20
|
import { Platform, type Main, type PlatformProps } from "../../Platform.ts";
|
|
28
21
|
import * as Provider from "../../Provider.ts";
|
|
29
22
|
import { Resource, type ResourceBinding } from "../../Resource.ts";
|
|
30
|
-
import
|
|
23
|
+
import {
|
|
24
|
+
createHostRuntimeContext,
|
|
25
|
+
type HostRuntimeContext,
|
|
26
|
+
type ServerHost,
|
|
27
|
+
} from "../../Server/Process.ts";
|
|
31
28
|
import { Stack } from "../../Stack.ts";
|
|
32
29
|
import {
|
|
33
30
|
createInternalTags,
|
|
@@ -57,7 +54,7 @@ export class TaskEnvironment extends Context.Service<
|
|
|
57
54
|
export interface TaskProps extends PlatformProps {
|
|
58
55
|
/**
|
|
59
56
|
* Module entrypoint for the bundled task program. This should typically be
|
|
60
|
-
* `import.meta.
|
|
57
|
+
* `import.meta.url` from an inline Effect program.
|
|
61
58
|
*/
|
|
62
59
|
main: string;
|
|
63
60
|
/**
|
|
@@ -235,7 +232,7 @@ export type TaskServices = Credentials | Region | ServerHost | AWSEnvironment;
|
|
|
235
232
|
|
|
236
233
|
export type TaskShape = Main<TaskServices>;
|
|
237
234
|
|
|
238
|
-
export interface TaskRuntimeContext extends
|
|
235
|
+
export interface TaskRuntimeContext extends HostRuntimeContext {
|
|
239
236
|
readonly Type: "AWS.ECS.Task";
|
|
240
237
|
}
|
|
241
238
|
|
|
@@ -255,7 +252,7 @@ export interface TaskRuntimeContext extends ProcessContext {
|
|
|
255
252
|
* @example Basic Task
|
|
256
253
|
* ```typescript
|
|
257
254
|
* const task = yield* Task("ApiTask", {
|
|
258
|
-
* main: import.meta.
|
|
255
|
+
* main: import.meta.url,
|
|
259
256
|
* cpu: 256,
|
|
260
257
|
* memory: 512,
|
|
261
258
|
* port: 3000,
|
|
@@ -266,7 +263,7 @@ export interface TaskRuntimeContext extends ProcessContext {
|
|
|
266
263
|
* @example Task with a Sidecar
|
|
267
264
|
* ```typescript
|
|
268
265
|
* const task = yield* Task("ApiTask", {
|
|
269
|
-
* main: import.meta.
|
|
266
|
+
* main: import.meta.url,
|
|
270
267
|
* port: 3000,
|
|
271
268
|
* sidecars: [
|
|
272
269
|
* {
|
|
@@ -283,7 +280,7 @@ export interface TaskRuntimeContext extends ProcessContext {
|
|
|
283
280
|
* @example ARM64 with EFS Volume and Ephemeral Storage
|
|
284
281
|
* ```typescript
|
|
285
282
|
* const task = yield* Task("WorkerTask", {
|
|
286
|
-
* main: import.meta.
|
|
283
|
+
* main: import.meta.url,
|
|
287
284
|
* runtimePlatform: { cpuArchitecture: "ARM64", operatingSystemFamily: "LINUX" },
|
|
288
285
|
* ephemeralStorage: { sizeInGiB: 40 },
|
|
289
286
|
* volumes: [
|
|
@@ -300,44 +297,9 @@ export interface TaskRuntimeContext extends ProcessContext {
|
|
|
300
297
|
*/
|
|
301
298
|
export const Task: Platform<Task, TaskServices, TaskShape, TaskRuntimeContext> =
|
|
302
299
|
Platform("AWS.ECS.Task", {
|
|
303
|
-
createRuntimeContext: (
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
return {
|
|
308
|
-
Type: "AWS.ECS.Task",
|
|
309
|
-
id,
|
|
310
|
-
env,
|
|
311
|
-
set: (bindingId: string, output: Output.Output) =>
|
|
312
|
-
Effect.sync(() => {
|
|
313
|
-
const key = bindingId.replaceAll(/[^a-zA-Z0-9]/g, "_");
|
|
314
|
-
env[key] = output.pipe(
|
|
315
|
-
Output.map((value) => JSON.stringify(value)),
|
|
316
|
-
);
|
|
317
|
-
return key;
|
|
318
|
-
}),
|
|
319
|
-
get: <T>(key: string) =>
|
|
320
|
-
Config.string(key).pipe(
|
|
321
|
-
Effect.flatMap((value) =>
|
|
322
|
-
Effect.try({
|
|
323
|
-
try: () => JSON.parse(value) as T,
|
|
324
|
-
catch: (error) => error as Error,
|
|
325
|
-
}),
|
|
326
|
-
),
|
|
327
|
-
Effect.catch((cause) =>
|
|
328
|
-
Effect.die(
|
|
329
|
-
new Error(`Failed to get environment variable: ${key}`, {
|
|
330
|
-
cause,
|
|
331
|
-
}),
|
|
332
|
-
),
|
|
333
|
-
),
|
|
334
|
-
),
|
|
335
|
-
run: (effect: Effect.Effect<void, never, any>) =>
|
|
336
|
-
Effect.sync(() => {
|
|
337
|
-
runners.push(effect);
|
|
338
|
-
}),
|
|
339
|
-
};
|
|
340
|
-
},
|
|
300
|
+
createRuntimeContext: createHostRuntimeContext("AWS.ECS.Task") as (
|
|
301
|
+
id: string,
|
|
302
|
+
) => TaskRuntimeContext,
|
|
341
303
|
});
|
|
342
304
|
|
|
343
305
|
export const TaskProvider = () =>
|
|
@@ -345,9 +307,9 @@ export const TaskProvider = () =>
|
|
|
345
307
|
Task,
|
|
346
308
|
Effect.gen(function* () {
|
|
347
309
|
const stack = yield* Stack;
|
|
310
|
+
const docker = yield* Docker;
|
|
348
311
|
|
|
349
312
|
const { dotAlchemy } = yield* AlchemyContext;
|
|
350
|
-
const fs = yield* FileSystem.FileSystem;
|
|
351
313
|
const virtualEntryPlugin = yield* Bundle.virtualEntryPlugin;
|
|
352
314
|
|
|
353
315
|
const alchemyEnv = {
|
|
@@ -576,7 +538,7 @@ export const TaskProvider = () =>
|
|
|
576
538
|
|
|
577
539
|
const bundleProgram = Effect.fn(function* (id: string, props: TaskProps) {
|
|
578
540
|
const handler = props.handler ?? "default";
|
|
579
|
-
const realMain = yield*
|
|
541
|
+
const realMain = yield* resolveMainPath(props.main);
|
|
580
542
|
const cwd = yield* findCwdForBundle(realMain);
|
|
581
543
|
|
|
582
544
|
const buildBundle = Effect.fn(function* (
|
|
@@ -589,14 +551,27 @@ export const TaskProvider = () =>
|
|
|
589
551
|
input: entry,
|
|
590
552
|
cwd,
|
|
591
553
|
platform: "node",
|
|
554
|
+
// The container runs on `bun`; keep `bun`/`bun:*` external (the
|
|
555
|
+
// runtime provides them) and resolve the `bun` export condition
|
|
556
|
+
// so `@effect/platform-bun` picks its Bun implementations.
|
|
557
|
+
external: [
|
|
558
|
+
"bun",
|
|
559
|
+
"bun:*",
|
|
560
|
+
...((props.build?.input?.external as string[] | undefined) ??
|
|
561
|
+
[]),
|
|
562
|
+
],
|
|
563
|
+
resolve: {
|
|
564
|
+
conditionNames: ["bun", "import", "module", "default"],
|
|
565
|
+
...props.build?.input?.resolve,
|
|
566
|
+
},
|
|
592
567
|
plugins: [props.build?.input?.plugins, plugins],
|
|
593
568
|
},
|
|
594
569
|
{
|
|
595
570
|
...props.build?.output,
|
|
596
571
|
format: "esm",
|
|
597
572
|
sourcemap: props.build?.output?.sourcemap ?? false,
|
|
598
|
-
minify: props.build?.output?.minify ??
|
|
599
|
-
entryFileNames: "index.
|
|
573
|
+
minify: props.build?.output?.minify ?? false,
|
|
574
|
+
entryFileNames: "index.mjs",
|
|
600
575
|
},
|
|
601
576
|
);
|
|
602
577
|
});
|
|
@@ -607,7 +582,8 @@ export const TaskProvider = () =>
|
|
|
607
582
|
realMain,
|
|
608
583
|
virtualEntryPlugin(
|
|
609
584
|
(importPath) => `
|
|
610
|
-
import {
|
|
585
|
+
import { BunServices } from "@effect/platform-bun";
|
|
586
|
+
import { BunHttpServer } from "alchemy/Http";
|
|
611
587
|
import { Stack } from "alchemy/Stack";
|
|
612
588
|
import * as Config from "effect/Config";
|
|
613
589
|
import * as ConfigProvider from "effect/ConfigProvider";
|
|
@@ -621,13 +597,17 @@ import * as Region from "@distilled.cloud/aws/Region";
|
|
|
621
597
|
import { ${handler} as handler } from ${JSON.stringify(importPath)};
|
|
622
598
|
|
|
623
599
|
const platform = Layer.mergeAll(
|
|
624
|
-
|
|
600
|
+
BunServices.layer,
|
|
625
601
|
FetchHttpClient.layer,
|
|
626
602
|
Logger.layer([Logger.consolePretty()]),
|
|
627
603
|
);
|
|
628
604
|
|
|
605
|
+
// Resolve the bundled program (the runners registered via host.run / serve)
|
|
606
|
+
// and run it with a Bun HTTP server bound to PORT, so a returned { fetch }
|
|
607
|
+
// handler is actually served and host.run loops stay alive.
|
|
629
608
|
const program = handler.pipe(
|
|
630
|
-
Effect.flatMap((task) => task.RuntimeContext.exports
|
|
609
|
+
Effect.flatMap((task) => task.RuntimeContext.exports),
|
|
610
|
+
Effect.flatMap((exports) => exports.program),
|
|
631
611
|
Effect.provide(
|
|
632
612
|
Layer.effect(
|
|
633
613
|
Stack,
|
|
@@ -645,6 +625,7 @@ const program = handler.pipe(
|
|
|
645
625
|
).pipe(
|
|
646
626
|
Layer.provideMerge(Credentials.fromEnv()),
|
|
647
627
|
Layer.provideMerge(Region.fromEnv()),
|
|
628
|
+
Layer.provideMerge(BunHttpServer()),
|
|
648
629
|
Layer.provideMerge(platform),
|
|
649
630
|
Layer.provideMerge(
|
|
650
631
|
Layer.succeed(
|
|
@@ -657,34 +638,43 @@ const program = handler.pipe(
|
|
|
657
638
|
Effect.scoped
|
|
658
639
|
);
|
|
659
640
|
|
|
660
|
-
|
|
641
|
+
console.log("Task bootstrap starting...");
|
|
642
|
+
await Effect.runPromise(program).catch((err) => {
|
|
643
|
+
console.error("Task bootstrap failed:", err);
|
|
644
|
+
process.exit(1);
|
|
645
|
+
});
|
|
661
646
|
`,
|
|
662
647
|
),
|
|
663
648
|
);
|
|
664
649
|
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
650
|
+
// Return every emitted file (entry + shared chunks). Dynamic imports in
|
|
651
|
+
// the Bun HTTP server / AWS SDK split into chunks; dropping any of them
|
|
652
|
+
// crashes the container with `Cannot find module './chunk-XXX.js'`.
|
|
653
|
+
const files = bundleOutput.files.map((file) => ({
|
|
654
|
+
path: file.path,
|
|
655
|
+
content:
|
|
656
|
+
typeof file.content === "string"
|
|
657
|
+
? new TextEncoder().encode(file.content)
|
|
658
|
+
: file.content,
|
|
659
|
+
}));
|
|
670
660
|
|
|
671
|
-
return {
|
|
661
|
+
return { files, hash: bundleOutput.hash };
|
|
672
662
|
});
|
|
673
663
|
|
|
674
664
|
const buildAndPushImage = Effect.fn(function* ({
|
|
675
665
|
id,
|
|
676
666
|
repositoryUri,
|
|
677
667
|
hash,
|
|
678
|
-
|
|
668
|
+
files,
|
|
679
669
|
props,
|
|
680
670
|
}: {
|
|
681
671
|
id: string;
|
|
682
672
|
repositoryUri: string;
|
|
683
673
|
hash: string;
|
|
684
|
-
|
|
674
|
+
files: { path: string; content: Uint8Array<ArrayBufferLike> }[];
|
|
685
675
|
props: TaskProps;
|
|
686
676
|
}) {
|
|
687
|
-
const realMain = yield*
|
|
677
|
+
const realMain = yield* resolveMainPath(props.main);
|
|
688
678
|
const contextDir = yield* getStableContextDir(
|
|
689
679
|
realMain,
|
|
690
680
|
dotAlchemy,
|
|
@@ -699,6 +689,10 @@ await Effect.runPromise(program);
|
|
|
699
689
|
`FROM ${base}`,
|
|
700
690
|
`WORKDIR /app`,
|
|
701
691
|
`COPY index.mjs /app/index.mjs`,
|
|
692
|
+
// Copy any additional rolldown chunks (`chunk-XXX.js`,
|
|
693
|
+
// `BunServices-YYY.js`, …). Non-trivial bundles always emit at
|
|
694
|
+
// least one; minimal bundles emit none and the COPY no-ops.
|
|
695
|
+
`COPY *.js /app/`,
|
|
702
696
|
];
|
|
703
697
|
if (props.port !== undefined) {
|
|
704
698
|
lines.push(
|
|
@@ -724,15 +718,31 @@ await Effect.runPromise(program);
|
|
|
724
718
|
);
|
|
725
719
|
const registry = credentials.proxyEndpoint.replace(/^https?:\/\//, "");
|
|
726
720
|
|
|
727
|
-
yield*
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
721
|
+
yield* docker.materialize({
|
|
722
|
+
context: contextDir,
|
|
723
|
+
dockerfile: dockerfile,
|
|
724
|
+
// Entry chunk becomes `index.mjs`; all other chunks keep their
|
|
725
|
+
// emitted `*.js` names so the entry's relative imports resolve.
|
|
726
|
+
files: files.map((file, index) => ({
|
|
727
|
+
path: index === 0 ? "index.mjs" : file.path,
|
|
728
|
+
content: file.content,
|
|
729
|
+
})),
|
|
730
|
+
});
|
|
731
|
+
// Build for the architecture the task definition declares (Fargate
|
|
732
|
+
// defaults to X86_64 when `runtimePlatform` is unset). Without this, an
|
|
733
|
+
// image built on an ARM64 host (e.g. Apple Silicon) is rejected at task
|
|
734
|
+
// start with `image Manifest does not contain descriptor matching
|
|
735
|
+
// platform 'linux/amd64'`.
|
|
736
|
+
const buildPlatform =
|
|
737
|
+
props.runtimePlatform?.cpuArchitecture === "ARM64"
|
|
738
|
+
? "linux/arm64"
|
|
739
|
+
: "linux/amd64";
|
|
740
|
+
yield* docker.image.build({
|
|
732
741
|
tag: imageUri,
|
|
733
742
|
context: contextDir,
|
|
743
|
+
platform: buildPlatform,
|
|
734
744
|
});
|
|
735
|
-
yield*
|
|
745
|
+
yield* docker.image.push(imageUri, {
|
|
736
746
|
username: "AWS",
|
|
737
747
|
password,
|
|
738
748
|
server: registry,
|
|
@@ -999,12 +1009,12 @@ await Effect.runPromise(program);
|
|
|
999
1009
|
// definitions are versioned in AWS, so registering a new revision
|
|
1000
1010
|
// is the unit of "update" — the prior revision is deregistered
|
|
1001
1011
|
// only on `delete` of the resource.
|
|
1002
|
-
const {
|
|
1012
|
+
const { files, hash } = yield* bundleProgram(id, news);
|
|
1003
1013
|
const imageUri = yield* buildAndPushImage({
|
|
1004
1014
|
id,
|
|
1005
1015
|
repositoryUri,
|
|
1006
1016
|
hash,
|
|
1007
|
-
|
|
1017
|
+
files,
|
|
1008
1018
|
props: {
|
|
1009
1019
|
...news,
|
|
1010
1020
|
env: {
|
|
@@ -1158,6 +1168,11 @@ await Effect.runPromise(program);
|
|
|
1158
1168
|
RoleName: output.taskRoleName,
|
|
1159
1169
|
})
|
|
1160
1170
|
.pipe(
|
|
1171
|
+
// The role may already be gone (delete re-run / race) — treat a
|
|
1172
|
+
// missing role as "no policies to delete" so delete is idempotent.
|
|
1173
|
+
Effect.catchTag("NoSuchEntityException", () =>
|
|
1174
|
+
Effect.succeed({ PolicyNames: [] as string[] }),
|
|
1175
|
+
),
|
|
1161
1176
|
Effect.flatMap((policies) =>
|
|
1162
1177
|
Effect.all(
|
|
1163
1178
|
(policies.PolicyNames ?? []).map((policyName) =>
|
|
@@ -1186,6 +1201,9 @@ await Effect.runPromise(program);
|
|
|
1186
1201
|
RoleName: roleName,
|
|
1187
1202
|
})
|
|
1188
1203
|
.pipe(
|
|
1204
|
+
Effect.catchTag("NoSuchEntityException", () =>
|
|
1205
|
+
Effect.succeed({ AttachedPolicies: [] }),
|
|
1206
|
+
),
|
|
1189
1207
|
Effect.flatMap((policies) =>
|
|
1190
1208
|
Effect.all(
|
|
1191
1209
|
(policies.AttachedPolicies ?? []).map((policy) =>
|
package/src/AWS/IAM/Role.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as iam from "@distilled.cloud/aws/iam";
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Schedule from "effect/Schedule";
|
|
3
4
|
import * as Stream from "effect/Stream";
|
|
4
5
|
import { Unowned } from "../../AdoptPolicy.ts";
|
|
5
6
|
import { isResolved } from "../../Diff.ts";
|
|
6
7
|
import { createPhysicalName } from "../../PhysicalName.ts";
|
|
7
8
|
import * as Provider from "../../Provider.ts";
|
|
8
|
-
import { Resource } from "../../Resource.ts";
|
|
9
|
+
import { Resource, type ResourceBinding } from "../../Resource.ts";
|
|
9
10
|
import {
|
|
10
11
|
createInternalTags,
|
|
11
12
|
createTagsList,
|
|
@@ -15,7 +16,7 @@ import {
|
|
|
15
16
|
import type { AccountID } from "../Environment.ts";
|
|
16
17
|
import { AWSEnvironment } from "../Environment.ts";
|
|
17
18
|
import type { Providers } from "../Providers.ts";
|
|
18
|
-
import type { PolicyDocument } from "./Policy.ts";
|
|
19
|
+
import type { PolicyDocument, PolicyStatement } from "./Policy.ts";
|
|
19
20
|
import {
|
|
20
21
|
parsePolicyDocument,
|
|
21
22
|
stringifyPolicyDocument,
|
|
@@ -25,6 +26,22 @@ import {
|
|
|
25
26
|
export type RoleName = string;
|
|
26
27
|
export type RoleArn = `arn:aws:iam::${AccountID}:role/${RoleName}`;
|
|
27
28
|
|
|
29
|
+
/**
|
|
30
|
+
* IAM misuses `MalformedPolicyDocument` for an eventual-consistency case: a
|
|
31
|
+
* trust policy whose `Principal` names a *freshly created* user/role is
|
|
32
|
+
* rejected with "Invalid principal in policy" until that principal finishes
|
|
33
|
+
* propagating through IAM (typically a few seconds). That specific message is
|
|
34
|
+
* retryable; a genuinely malformed document (bad syntax/fields) is not and
|
|
35
|
+
* fails fast because its message never matches.
|
|
36
|
+
*/
|
|
37
|
+
const invalidPrincipalRetry = {
|
|
38
|
+
while: (e: { _tag: string; message?: string }) =>
|
|
39
|
+
e._tag === "MalformedPolicyDocumentException" &&
|
|
40
|
+
(e.message?.includes("Invalid principal") ?? false),
|
|
41
|
+
schedule: Schedule.exponential("2 seconds"),
|
|
42
|
+
times: 5,
|
|
43
|
+
} as const;
|
|
44
|
+
|
|
28
45
|
export interface RoleProps {
|
|
29
46
|
/**
|
|
30
47
|
* Name of the role. If omitted, a unique name will be generated.
|
|
@@ -36,9 +53,11 @@ export interface RoleProps {
|
|
|
36
53
|
*/
|
|
37
54
|
path?: string;
|
|
38
55
|
/**
|
|
39
|
-
* IAM trust policy for the role.
|
|
56
|
+
* IAM trust policy for the role. Optional when a binding contributes the
|
|
57
|
+
* trust statements (see the `assumeRolePolicyStatements` binding field) — at
|
|
58
|
+
* least one of the two must supply a statement.
|
|
40
59
|
*/
|
|
41
|
-
assumeRolePolicyDocument
|
|
60
|
+
assumeRolePolicyDocument?: PolicyDocument;
|
|
42
61
|
/**
|
|
43
62
|
* Managed policy ARNs to attach to the role.
|
|
44
63
|
*/
|
|
@@ -81,10 +100,69 @@ export interface Role extends Resource<
|
|
|
81
100
|
permissionsBoundary: string | undefined;
|
|
82
101
|
tags: Record<string, string>;
|
|
83
102
|
},
|
|
84
|
-
|
|
103
|
+
{
|
|
104
|
+
/**
|
|
105
|
+
* IAM policy statements contributed by bindings (e.g. a consumer granting
|
|
106
|
+
* this role access to a resource). They are folded into a managed inline
|
|
107
|
+
* policy named `alchemy-bindings` on the role.
|
|
108
|
+
*/
|
|
109
|
+
policyStatements?: PolicyStatement[];
|
|
110
|
+
/**
|
|
111
|
+
* Trust-policy (assume-role) statements contributed by bindings — e.g. a
|
|
112
|
+
* consumer declaring which service principal may assume this role. They are
|
|
113
|
+
* merged into the role's `assumeRolePolicyDocument`.
|
|
114
|
+
*/
|
|
115
|
+
assumeRolePolicyStatements?: PolicyStatement[];
|
|
116
|
+
},
|
|
85
117
|
Providers
|
|
86
118
|
> {}
|
|
87
119
|
|
|
120
|
+
/**
|
|
121
|
+
* Name of the inline policy the role provider synthesizes from binding-supplied
|
|
122
|
+
* {@link PolicyStatement}s.
|
|
123
|
+
*/
|
|
124
|
+
const BINDINGS_POLICY_NAME = "alchemy-bindings";
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Merge the user's inline policies with a synthetic `alchemy-bindings` policy
|
|
128
|
+
* built from binding-supplied statements (deduped by JSON identity, sorted for
|
|
129
|
+
* a stable document).
|
|
130
|
+
*/
|
|
131
|
+
const mergeBoundInlinePolicies = (
|
|
132
|
+
inlinePolicies: Record<string, PolicyDocument> | undefined,
|
|
133
|
+
bindings: ResourceBinding<Role["Binding"]>[],
|
|
134
|
+
): Record<string, PolicyDocument> => {
|
|
135
|
+
const statements = bindings
|
|
136
|
+
.filter((binding) => (binding as { action?: string }).action !== "delete")
|
|
137
|
+
.flatMap((binding) => binding.data?.policyStatements ?? []);
|
|
138
|
+
if (statements.length === 0) return inlinePolicies ?? {};
|
|
139
|
+
const deduped = Array.from(
|
|
140
|
+
new Map(statements.map((s) => [JSON.stringify(s), s])).values(),
|
|
141
|
+
).sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));
|
|
142
|
+
return {
|
|
143
|
+
...inlinePolicies,
|
|
144
|
+
[BINDINGS_POLICY_NAME]: { Version: "2012-10-17", Statement: deduped },
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Merge the user's trust policy with binding-supplied assume-role statements
|
|
150
|
+
* (deduped by JSON identity, sorted for a stable document).
|
|
151
|
+
*/
|
|
152
|
+
const mergeBoundAssumeRolePolicy = (
|
|
153
|
+
doc: PolicyDocument | undefined,
|
|
154
|
+
bindings: ResourceBinding<Role["Binding"]>[],
|
|
155
|
+
): PolicyDocument => {
|
|
156
|
+
const bound = bindings
|
|
157
|
+
.filter((binding) => (binding as { action?: string }).action !== "delete")
|
|
158
|
+
.flatMap((binding) => binding.data?.assumeRolePolicyStatements ?? []);
|
|
159
|
+
const statements = [...(doc?.Statement ?? []), ...bound];
|
|
160
|
+
const deduped = Array.from(
|
|
161
|
+
new Map(statements.map((s) => [JSON.stringify(s), s])).values(),
|
|
162
|
+
).sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));
|
|
163
|
+
return { Version: "2012-10-17", Statement: deduped };
|
|
164
|
+
};
|
|
165
|
+
|
|
88
166
|
/**
|
|
89
167
|
* An IAM role for AWS services and runtimes.
|
|
90
168
|
* @resource
|
|
@@ -109,8 +187,6 @@ export const RoleProvider = () =>
|
|
|
109
187
|
Provider.effect(
|
|
110
188
|
Role,
|
|
111
189
|
Effect.gen(function* () {
|
|
112
|
-
yield* AWSEnvironment;
|
|
113
|
-
|
|
114
190
|
const toRoleName = (id: string, props: { roleName?: string } = {}) =>
|
|
115
191
|
props.roleName
|
|
116
192
|
? Effect.succeed(props.roleName)
|
|
@@ -249,7 +325,13 @@ export const RoleProvider = () =>
|
|
|
249
325
|
const roles = yield* iam.listRoles.pages({}).pipe(
|
|
250
326
|
Stream.runCollect,
|
|
251
327
|
Effect.map((chunk) =>
|
|
252
|
-
Array.from(chunk)
|
|
328
|
+
Array.from(chunk)
|
|
329
|
+
.flatMap((page) => page.Roles ?? [])
|
|
330
|
+
// Service-linked roles are owned by AWS and cannot be
|
|
331
|
+
// modified or deleted by us (UnmodifiableEntityException).
|
|
332
|
+
.filter(
|
|
333
|
+
(role) => !role.Path?.startsWith("/aws-service-role/"),
|
|
334
|
+
),
|
|
253
335
|
),
|
|
254
336
|
);
|
|
255
337
|
|
|
@@ -297,7 +379,7 @@ export const RoleProvider = () =>
|
|
|
297
379
|
attrs !== undefined,
|
|
298
380
|
);
|
|
299
381
|
}),
|
|
300
|
-
diff: Effect.fn(function* ({ id, olds, news }) {
|
|
382
|
+
diff: Effect.fn(function* ({ id, olds, news = {} }) {
|
|
301
383
|
if (!isResolved(news)) return;
|
|
302
384
|
if (
|
|
303
385
|
(yield* toRoleName(id, olds ?? {})) !==
|
|
@@ -305,7 +387,7 @@ export const RoleProvider = () =>
|
|
|
305
387
|
) {
|
|
306
388
|
return { action: "replace" } as const;
|
|
307
389
|
}
|
|
308
|
-
if ((olds?.path ?? "/") !== (news
|
|
390
|
+
if ((olds?.path ?? "/") !== (news?.path ?? "/")) {
|
|
309
391
|
return { action: "replace" } as const;
|
|
310
392
|
}
|
|
311
393
|
}),
|
|
@@ -354,8 +436,29 @@ export const RoleProvider = () =>
|
|
|
354
436
|
};
|
|
355
437
|
return (yield* hasAlchemyTags(id, tags)) ? attrs : Unowned(attrs);
|
|
356
438
|
}),
|
|
357
|
-
reconcile: Effect.fn(function* ({
|
|
439
|
+
reconcile: Effect.fn(function* ({
|
|
440
|
+
id,
|
|
441
|
+
news = {},
|
|
442
|
+
output,
|
|
443
|
+
session,
|
|
444
|
+
bindings,
|
|
445
|
+
}) {
|
|
358
446
|
const roleName = output?.roleName ?? (yield* toRoleName(id, news));
|
|
447
|
+
// Fold binding-supplied policy statements into the inline policies.
|
|
448
|
+
const inlinePolicies = mergeBoundInlinePolicies(
|
|
449
|
+
news.inlinePolicies,
|
|
450
|
+
bindings,
|
|
451
|
+
);
|
|
452
|
+
// Merge binding-supplied trust statements into the trust policy.
|
|
453
|
+
const assumeRolePolicyDocument = mergeBoundAssumeRolePolicy(
|
|
454
|
+
news.assumeRolePolicyDocument,
|
|
455
|
+
bindings,
|
|
456
|
+
);
|
|
457
|
+
if (assumeRolePolicyDocument.Statement.length === 0) {
|
|
458
|
+
return yield* Effect.die(
|
|
459
|
+
"Role requires a trust policy: set `assumeRolePolicyDocument` or bind `assumeRolePolicyStatements`.",
|
|
460
|
+
);
|
|
461
|
+
}
|
|
359
462
|
const desiredTags = {
|
|
360
463
|
...(yield* createInternalTags(id)),
|
|
361
464
|
...news.tags,
|
|
@@ -381,7 +484,7 @@ export const RoleProvider = () =>
|
|
|
381
484
|
Path: news.path,
|
|
382
485
|
RoleName: roleName,
|
|
383
486
|
AssumeRolePolicyDocument: stringifyPolicyDocument(
|
|
384
|
-
|
|
487
|
+
assumeRolePolicyDocument,
|
|
385
488
|
),
|
|
386
489
|
Description: news.description,
|
|
387
490
|
MaxSessionDuration: news.maxSessionDuration,
|
|
@@ -389,6 +492,7 @@ export const RoleProvider = () =>
|
|
|
389
492
|
Tags: createTagsList(desiredTags),
|
|
390
493
|
})
|
|
391
494
|
.pipe(
|
|
495
|
+
Effect.retry(invalidPrincipalRetry),
|
|
392
496
|
Effect.catchTag("EntityAlreadyExistsException", () =>
|
|
393
497
|
iam.getRole({ RoleName: roleName }),
|
|
394
498
|
),
|
|
@@ -408,14 +512,16 @@ export const RoleProvider = () =>
|
|
|
408
512
|
// when the document actually differs.
|
|
409
513
|
if (
|
|
410
514
|
JSON.stringify(observedAssumePolicy ?? null) !==
|
|
411
|
-
JSON.stringify(
|
|
515
|
+
JSON.stringify(assumeRolePolicyDocument)
|
|
412
516
|
) {
|
|
413
|
-
yield* iam
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
517
|
+
yield* iam
|
|
518
|
+
.updateAssumeRolePolicy({
|
|
519
|
+
RoleName: roleName,
|
|
520
|
+
PolicyDocument: stringifyPolicyDocument(
|
|
521
|
+
assumeRolePolicyDocument,
|
|
522
|
+
),
|
|
523
|
+
})
|
|
524
|
+
.pipe(Effect.retry(invalidPrincipalRetry));
|
|
419
525
|
}
|
|
420
526
|
|
|
421
527
|
// Sync description / maxSessionDuration via updateRole.
|
|
@@ -465,7 +571,7 @@ export const RoleProvider = () =>
|
|
|
465
571
|
yield* syncInlinePolicies({
|
|
466
572
|
roleName,
|
|
467
573
|
olds: observedInlinePolicies,
|
|
468
|
-
news:
|
|
574
|
+
news: inlinePolicies,
|
|
469
575
|
});
|
|
470
576
|
|
|
471
577
|
// Sync tags against the cloud's actual tags so adoption /
|
|
@@ -501,9 +607,9 @@ export const RoleProvider = () =>
|
|
|
501
607
|
observedRole.Role?.Path ??
|
|
502
608
|
news.path ??
|
|
503
609
|
"/",
|
|
504
|
-
assumeRolePolicyDocument
|
|
610
|
+
assumeRolePolicyDocument,
|
|
505
611
|
managedPolicyArns: news.managedPolicyArns ?? [],
|
|
506
|
-
inlinePolicies
|
|
612
|
+
inlinePolicies,
|
|
507
613
|
description: liveRole.Role?.Description ?? news.description,
|
|
508
614
|
maxSessionDuration:
|
|
509
615
|
liveRole.Role?.MaxSessionDuration ?? news.maxSessionDuration,
|
|
@@ -538,6 +644,8 @@ export const RoleProvider = () =>
|
|
|
538
644
|
),
|
|
539
645
|
),
|
|
540
646
|
),
|
|
647
|
+
// The role itself may already be gone.
|
|
648
|
+
Effect.catchTag("NoSuchEntityException", () => Effect.void),
|
|
541
649
|
);
|
|
542
650
|
|
|
543
651
|
yield* iam
|
|
@@ -560,6 +668,8 @@ export const RoleProvider = () =>
|
|
|
560
668
|
),
|
|
561
669
|
),
|
|
562
670
|
),
|
|
671
|
+
// The role itself may already be gone.
|
|
672
|
+
Effect.catchTag("NoSuchEntityException", () => Effect.void),
|
|
563
673
|
);
|
|
564
674
|
|
|
565
675
|
yield* iam
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type * as microvms from "@distilled.cloud/aws/lambda-microvms";
|
|
2
|
+
import type * as Effect from "effect/Effect";
|
|
3
|
+
import * as Binding from "../../Binding.ts";
|
|
4
|
+
import type { MicrovmImage } from "./MicrovmImage.ts";
|
|
5
|
+
|
|
6
|
+
export interface CreateAuthTokenRequest
|
|
7
|
+
extends microvms.CreateMicrovmAuthTokenRequest {}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Runtime binding for `CreateMicrovmAuthToken`.
|
|
11
|
+
*
|
|
12
|
+
* Bind it to a {@link MicrovmImage} to get a callable that mints a short-lived
|
|
13
|
+
* token for a running MicroVM. Send it on the MicroVM `endpoint` in the
|
|
14
|
+
* `X-aws-proxy-auth` header.
|
|
15
|
+
* @binding
|
|
16
|
+
* @section Auth Tokens
|
|
17
|
+
* @example Mint an auth token
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const createAuthToken = yield* AWS.Lambda.CreateAuthToken(Sandbox);
|
|
20
|
+
* const { authToken } = yield* createAuthToken({
|
|
21
|
+
* microvmIdentifier: vm.microvmId,
|
|
22
|
+
* expirationInMinutes: 5,
|
|
23
|
+
* allowedPorts: [{ port: 5000 }],
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export interface CreateAuthToken extends Binding.Service<
|
|
28
|
+
CreateAuthToken,
|
|
29
|
+
"AWS.Lambda.CreateAuthToken",
|
|
30
|
+
(
|
|
31
|
+
image: MicrovmImage,
|
|
32
|
+
) => Effect.Effect<
|
|
33
|
+
(
|
|
34
|
+
request: CreateAuthTokenRequest,
|
|
35
|
+
) => Effect.Effect<
|
|
36
|
+
microvms.CreateMicrovmAuthTokenResponse,
|
|
37
|
+
microvms.CreateMicrovmAuthTokenError
|
|
38
|
+
>
|
|
39
|
+
>
|
|
40
|
+
> {}
|
|
41
|
+
export const CreateAuthToken = Binding.Service<CreateAuthToken>(
|
|
42
|
+
"AWS.Lambda.CreateAuthToken",
|
|
43
|
+
);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as microvms from "@distilled.cloud/aws/lambda-microvms";
|
|
2
|
+
import { CreateAuthToken } from "./CreateAuthToken.ts";
|
|
3
|
+
import { makeImageBinding } from "./MicrovmBinding.ts";
|
|
4
|
+
|
|
5
|
+
export const CreateAuthTokenHttp = makeImageBinding({
|
|
6
|
+
binding: CreateAuthToken,
|
|
7
|
+
name: "CreateAuthToken",
|
|
8
|
+
actions: ["lambda:CreateMicrovmAuthToken"],
|
|
9
|
+
operation: microvms.createMicrovmAuthToken,
|
|
10
|
+
scope: "microvm",
|
|
11
|
+
});
|