@alchemy.run/modal 0.0.0 → 2.0.0-beta.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +96 -4
- package/lib/App.d.ts +143 -0
- package/lib/App.d.ts.map +1 -0
- package/lib/App.js +198 -0
- package/lib/App.js.map +1 -0
- package/lib/AuthProvider.d.ts +53 -0
- package/lib/AuthProvider.d.ts.map +1 -0
- package/lib/AuthProvider.js +209 -0
- package/lib/AuthProvider.js.map +1 -0
- package/lib/BindingHttp.d.ts +56 -0
- package/lib/BindingHttp.d.ts.map +1 -0
- package/lib/BindingHttp.js +50 -0
- package/lib/BindingHttp.js.map +1 -0
- package/lib/Blob.d.ts +34 -0
- package/lib/Blob.d.ts.map +1 -0
- package/lib/Blob.js +59 -0
- package/lib/Blob.js.map +1 -0
- package/lib/Bootstrap.d.ts +8 -0
- package/lib/Bootstrap.d.ts.map +1 -0
- package/lib/Bootstrap.js +26 -0
- package/lib/Bootstrap.js.map +1 -0
- package/lib/Cbor.d.ts +10 -0
- package/lib/Cbor.d.ts.map +1 -0
- package/lib/Cbor.js +177 -0
- package/lib/Cbor.js.map +1 -0
- package/lib/ConnectSandbox.d.ts +64 -0
- package/lib/ConnectSandbox.d.ts.map +1 -0
- package/lib/ConnectSandbox.js +33 -0
- package/lib/ConnectSandbox.js.map +1 -0
- package/lib/Container.d.ts +124 -0
- package/lib/Container.d.ts.map +1 -0
- package/lib/Container.js +1 -0
- package/lib/Container.js.map +1 -0
- package/lib/Contributions.d.ts +7 -0
- package/lib/Contributions.d.ts.map +1 -0
- package/lib/Contributions.js +6 -0
- package/lib/Contributions.js.map +1 -0
- package/lib/CreateDict.d.ts +83 -0
- package/lib/CreateDict.d.ts.map +1 -0
- package/lib/CreateDict.js +3 -0
- package/lib/CreateDict.js.map +1 -0
- package/lib/CreateDictHttp.d.ts +33 -0
- package/lib/CreateDictHttp.d.ts.map +1 -0
- package/lib/CreateDictHttp.js +67 -0
- package/lib/CreateDictHttp.js.map +1 -0
- package/lib/CreateImage.d.ts +98 -0
- package/lib/CreateImage.d.ts.map +1 -0
- package/lib/CreateImage.js +3 -0
- package/lib/CreateImage.js.map +1 -0
- package/lib/CreateImageHttp.d.ts +51 -0
- package/lib/CreateImageHttp.d.ts.map +1 -0
- package/lib/CreateImageHttp.js +87 -0
- package/lib/CreateImageHttp.js.map +1 -0
- package/lib/CreateQueue.d.ts +83 -0
- package/lib/CreateQueue.d.ts.map +1 -0
- package/lib/CreateQueue.js +3 -0
- package/lib/CreateQueue.js.map +1 -0
- package/lib/CreateQueueHttp.d.ts +31 -0
- package/lib/CreateQueueHttp.d.ts.map +1 -0
- package/lib/CreateQueueHttp.js +67 -0
- package/lib/CreateQueueHttp.js.map +1 -0
- package/lib/CreateSandbox.d.ts +186 -0
- package/lib/CreateSandbox.d.ts.map +1 -0
- package/lib/CreateSandbox.js +3 -0
- package/lib/CreateSandbox.js.map +1 -0
- package/lib/CreateSandboxHttp.d.ts +17 -0
- package/lib/CreateSandboxHttp.d.ts.map +1 -0
- package/lib/CreateSandboxHttp.js +117 -0
- package/lib/CreateSandboxHttp.js.map +1 -0
- package/lib/CreateSecret.d.ts +95 -0
- package/lib/CreateSecret.d.ts.map +1 -0
- package/lib/CreateSecret.js +3 -0
- package/lib/CreateSecret.js.map +1 -0
- package/lib/CreateSecretHttp.d.ts +24 -0
- package/lib/CreateSecretHttp.d.ts.map +1 -0
- package/lib/CreateSecretHttp.js +60 -0
- package/lib/CreateSecretHttp.js.map +1 -0
- package/lib/CreateVolume.d.ts +84 -0
- package/lib/CreateVolume.d.ts.map +1 -0
- package/lib/CreateVolume.js +3 -0
- package/lib/CreateVolume.js.map +1 -0
- package/lib/CreateVolumeHttp.d.ts +32 -0
- package/lib/CreateVolumeHttp.d.ts.map +1 -0
- package/lib/CreateVolumeHttp.js +69 -0
- package/lib/CreateVolumeHttp.js.map +1 -0
- package/lib/Credentials.d.ts +32 -0
- package/lib/Credentials.d.ts.map +1 -0
- package/lib/Credentials.js +44 -0
- package/lib/Credentials.js.map +1 -0
- package/lib/Dict.d.ts +147 -0
- package/lib/Dict.d.ts.map +1 -0
- package/lib/Dict.js +175 -0
- package/lib/Dict.js.map +1 -0
- package/lib/DictClient.d.ts +55 -0
- package/lib/DictClient.d.ts.map +1 -0
- package/lib/DictClient.js +89 -0
- package/lib/DictClient.js.map +1 -0
- package/lib/Domain.d.ts +86 -0
- package/lib/Domain.d.ts.map +1 -0
- package/lib/Domain.js +113 -0
- package/lib/Domain.js.map +1 -0
- package/lib/Endpoint.d.ts +181 -0
- package/lib/Endpoint.d.ts.map +1 -0
- package/lib/Endpoint.js +283 -0
- package/lib/Endpoint.js.map +1 -0
- package/lib/Environment.d.ts +174 -0
- package/lib/Environment.d.ts.map +1 -0
- package/lib/Environment.js +244 -0
- package/lib/Environment.js.map +1 -0
- package/lib/FetchServer.d.ts +105 -0
- package/lib/FetchServer.d.ts.map +1 -0
- package/lib/FetchServer.js +3 -0
- package/lib/FetchServer.js.map +1 -0
- package/lib/FetchServerHttp.d.ts +21 -0
- package/lib/FetchServerHttp.d.ts.map +1 -0
- package/lib/FetchServerHttp.js +84 -0
- package/lib/FetchServerHttp.js.map +1 -0
- package/lib/Function.d.ts +236 -0
- package/lib/Function.d.ts.map +1 -0
- package/lib/Function.js +273 -0
- package/lib/Function.js.map +1 -0
- package/lib/FunctionAutoscaler.d.ts +99 -0
- package/lib/FunctionAutoscaler.d.ts.map +1 -0
- package/lib/FunctionAutoscaler.js +136 -0
- package/lib/FunctionAutoscaler.js.map +1 -0
- package/lib/FunctionTarget.d.ts +61 -0
- package/lib/FunctionTarget.d.ts.map +1 -0
- package/lib/FunctionTarget.js +136 -0
- package/lib/FunctionTarget.js.map +1 -0
- package/lib/Image.d.ts +159 -0
- package/lib/Image.d.ts.map +1 -0
- package/lib/Image.js +203 -0
- package/lib/Image.js.map +1 -0
- package/lib/ImageBuild.d.ts +108 -0
- package/lib/ImageBuild.d.ts.map +1 -0
- package/lib/ImageBuild.js +157 -0
- package/lib/ImageBuild.js.map +1 -0
- package/lib/ImagePlan.d.ts +31 -0
- package/lib/ImagePlan.d.ts.map +1 -0
- package/lib/ImagePlan.js +70 -0
- package/lib/ImagePlan.js.map +1 -0
- package/lib/InferEnv.d.ts +26 -0
- package/lib/InferEnv.d.ts.map +1 -0
- package/lib/InferEnv.js +1 -0
- package/lib/InferEnv.js.map +1 -0
- package/lib/InvokeFunction.d.ts +186 -0
- package/lib/InvokeFunction.d.ts.map +1 -0
- package/lib/InvokeFunction.js +10 -0
- package/lib/InvokeFunction.js.map +1 -0
- package/lib/InvokeFunctionHttp.d.ts +39 -0
- package/lib/InvokeFunctionHttp.d.ts.map +1 -0
- package/lib/InvokeFunctionHttp.js +210 -0
- package/lib/InvokeFunctionHttp.js.map +1 -0
- package/lib/ModalBindings.d.ts +138 -0
- package/lib/ModalBindings.d.ts.map +1 -0
- package/lib/ModalBindings.js +223 -0
- package/lib/ModalBindings.js.map +1 -0
- package/lib/MountBucket.d.ts +80 -0
- package/lib/MountBucket.d.ts.map +1 -0
- package/lib/MountBucket.js +44 -0
- package/lib/MountBucket.js.map +1 -0
- package/lib/MountVolume.d.ts +77 -0
- package/lib/MountVolume.d.ts.map +1 -0
- package/lib/MountVolume.js +41 -0
- package/lib/MountVolume.js.map +1 -0
- package/lib/Mounts.d.ts +134 -0
- package/lib/Mounts.d.ts.map +1 -0
- package/lib/Mounts.js +87 -0
- package/lib/Mounts.js.map +1 -0
- package/lib/PersistentSandbox.d.ts +75 -0
- package/lib/PersistentSandbox.d.ts.map +1 -0
- package/lib/PersistentSandbox.js +93 -0
- package/lib/PersistentSandbox.js.map +1 -0
- package/lib/Providers.d.ts +23 -0
- package/lib/Providers.d.ts.map +1 -0
- package/lib/Providers.js +64 -0
- package/lib/Providers.js.map +1 -0
- package/lib/Proxy.d.ts +94 -0
- package/lib/Proxy.d.ts.map +1 -0
- package/lib/Proxy.js +132 -0
- package/lib/Proxy.js.map +1 -0
- package/lib/Queue.d.ts +147 -0
- package/lib/Queue.d.ts.map +1 -0
- package/lib/Queue.js +177 -0
- package/lib/Queue.js.map +1 -0
- package/lib/QueueClient.d.ts +64 -0
- package/lib/QueueClient.d.ts.map +1 -0
- package/lib/QueueClient.js +73 -0
- package/lib/QueueClient.js.map +1 -0
- package/lib/ReadApp.d.ts +85 -0
- package/lib/ReadApp.d.ts.map +1 -0
- package/lib/ReadApp.js +3 -0
- package/lib/ReadApp.js.map +1 -0
- package/lib/ReadAppHttp.d.ts +26 -0
- package/lib/ReadAppHttp.d.ts.map +1 -0
- package/lib/ReadAppHttp.js +106 -0
- package/lib/ReadAppHttp.js.map +1 -0
- package/lib/ReadDict.d.ts +39 -0
- package/lib/ReadDict.d.ts.map +1 -0
- package/lib/ReadDict.js +3 -0
- package/lib/ReadDict.js.map +1 -0
- package/lib/ReadDictHttp.d.ts +12 -0
- package/lib/ReadDictHttp.d.ts.map +1 -0
- package/lib/ReadDictHttp.js +23 -0
- package/lib/ReadDictHttp.js.map +1 -0
- package/lib/ReadFunction.d.ts +73 -0
- package/lib/ReadFunction.d.ts.map +1 -0
- package/lib/ReadFunction.js +3 -0
- package/lib/ReadFunction.js.map +1 -0
- package/lib/ReadFunctionHttp.d.ts +25 -0
- package/lib/ReadFunctionHttp.d.ts.map +1 -0
- package/lib/ReadFunctionHttp.js +63 -0
- package/lib/ReadFunctionHttp.js.map +1 -0
- package/lib/ReadQueue.d.ts +39 -0
- package/lib/ReadQueue.d.ts.map +1 -0
- package/lib/ReadQueue.js +3 -0
- package/lib/ReadQueue.js.map +1 -0
- package/lib/ReadQueueHttp.d.ts +12 -0
- package/lib/ReadQueueHttp.d.ts.map +1 -0
- package/lib/ReadQueueHttp.js +23 -0
- package/lib/ReadQueueHttp.js.map +1 -0
- package/lib/ReadServer.d.ts +72 -0
- package/lib/ReadServer.d.ts.map +1 -0
- package/lib/ReadServer.js +3 -0
- package/lib/ReadServer.js.map +1 -0
- package/lib/ReadServerHttp.d.ts +25 -0
- package/lib/ReadServerHttp.d.ts.map +1 -0
- package/lib/ReadServerHttp.js +70 -0
- package/lib/ReadServerHttp.js.map +1 -0
- package/lib/ReadVolume.d.ts +40 -0
- package/lib/ReadVolume.d.ts.map +1 -0
- package/lib/ReadVolume.js +3 -0
- package/lib/ReadVolume.js.map +1 -0
- package/lib/ReadVolumeHttp.d.ts +12 -0
- package/lib/ReadVolumeHttp.d.ts.map +1 -0
- package/lib/ReadVolumeHttp.js +24 -0
- package/lib/ReadVolumeHttp.js.map +1 -0
- package/lib/ReadWriteDict.d.ts +39 -0
- package/lib/ReadWriteDict.d.ts.map +1 -0
- package/lib/ReadWriteDict.js +3 -0
- package/lib/ReadWriteDict.js.map +1 -0
- package/lib/ReadWriteDictHttp.d.ts +12 -0
- package/lib/ReadWriteDictHttp.d.ts.map +1 -0
- package/lib/ReadWriteDictHttp.js +23 -0
- package/lib/ReadWriteDictHttp.js.map +1 -0
- package/lib/ReadWriteQueue.d.ts +40 -0
- package/lib/ReadWriteQueue.d.ts.map +1 -0
- package/lib/ReadWriteQueue.js +3 -0
- package/lib/ReadWriteQueue.js.map +1 -0
- package/lib/ReadWriteQueueHttp.d.ts +12 -0
- package/lib/ReadWriteQueueHttp.d.ts.map +1 -0
- package/lib/ReadWriteQueueHttp.js +23 -0
- package/lib/ReadWriteQueueHttp.js.map +1 -0
- package/lib/ReadWriteVolume.d.ts +40 -0
- package/lib/ReadWriteVolume.d.ts.map +1 -0
- package/lib/ReadWriteVolume.js +3 -0
- package/lib/ReadWriteVolume.js.map +1 -0
- package/lib/ReadWriteVolumeHttp.d.ts +12 -0
- package/lib/ReadWriteVolumeHttp.d.ts.map +1 -0
- package/lib/ReadWriteVolumeHttp.js +24 -0
- package/lib/ReadWriteVolumeHttp.js.map +1 -0
- package/lib/RuntimeOwner.d.ts +39 -0
- package/lib/RuntimeOwner.d.ts.map +1 -0
- package/lib/RuntimeOwner.js +85 -0
- package/lib/RuntimeOwner.js.map +1 -0
- package/lib/Sandbox.d.ts +215 -0
- package/lib/Sandbox.d.ts.map +1 -0
- package/lib/Sandbox.js +278 -0
- package/lib/Sandbox.js.map +1 -0
- package/lib/SandboxClient.d.ts +748 -0
- package/lib/SandboxClient.d.ts.map +1 -0
- package/lib/SandboxClient.js +710 -0
- package/lib/SandboxClient.js.map +1 -0
- package/lib/ScaleFunction.d.ts +54 -0
- package/lib/ScaleFunction.d.ts.map +1 -0
- package/lib/ScaleFunction.js +3 -0
- package/lib/ScaleFunction.js.map +1 -0
- package/lib/ScaleFunctionHttp.d.ts +21 -0
- package/lib/ScaleFunctionHttp.d.ts.map +1 -0
- package/lib/ScaleFunctionHttp.js +39 -0
- package/lib/ScaleFunctionHttp.js.map +1 -0
- package/lib/Secret.d.ts +170 -0
- package/lib/Secret.d.ts.map +1 -0
- package/lib/Secret.js +196 -0
- package/lib/Secret.js.map +1 -0
- package/lib/Server.d.ts +155 -0
- package/lib/Server.d.ts.map +1 -0
- package/lib/Server.js +184 -0
- package/lib/Server.js.map +1 -0
- package/lib/ServiceUser.d.ts +139 -0
- package/lib/ServiceUser.d.ts.map +1 -0
- package/lib/ServiceUser.js +210 -0
- package/lib/ServiceUser.js.map +1 -0
- package/lib/Volume.d.ts +170 -0
- package/lib/Volume.d.ts.map +1 -0
- package/lib/Volume.js +220 -0
- package/lib/Volume.js.map +1 -0
- package/lib/VolumeClient.d.ts +53 -0
- package/lib/VolumeClient.d.ts.map +1 -0
- package/lib/VolumeClient.js +22 -0
- package/lib/VolumeClient.js.map +1 -0
- package/lib/VolumeFiles.d.ts +94 -0
- package/lib/VolumeFiles.d.ts.map +1 -0
- package/lib/VolumeFiles.js +139 -0
- package/lib/VolumeFiles.js.map +1 -0
- package/lib/WebhookToken.d.ts +102 -0
- package/lib/WebhookToken.d.ts.map +1 -0
- package/lib/WebhookToken.js +176 -0
- package/lib/WebhookToken.js.map +1 -0
- package/lib/WorkspaceSettings.d.ts +70 -0
- package/lib/WorkspaceSettings.d.ts.map +1 -0
- package/lib/WorkspaceSettings.js +105 -0
- package/lib/WorkspaceSettings.js.map +1 -0
- package/lib/WriteApp.d.ts +38 -0
- package/lib/WriteApp.d.ts.map +1 -0
- package/lib/WriteApp.js +3 -0
- package/lib/WriteApp.js.map +1 -0
- package/lib/WriteAppHttp.d.ts +23 -0
- package/lib/WriteAppHttp.d.ts.map +1 -0
- package/lib/WriteAppHttp.js +36 -0
- package/lib/WriteAppHttp.js.map +1 -0
- package/lib/WriteDict.d.ts +39 -0
- package/lib/WriteDict.d.ts.map +1 -0
- package/lib/WriteDict.js +3 -0
- package/lib/WriteDict.js.map +1 -0
- package/lib/WriteDictHttp.d.ts +12 -0
- package/lib/WriteDictHttp.d.ts.map +1 -0
- package/lib/WriteDictHttp.js +23 -0
- package/lib/WriteDictHttp.js.map +1 -0
- package/lib/WriteQueue.d.ts +39 -0
- package/lib/WriteQueue.d.ts.map +1 -0
- package/lib/WriteQueue.js +3 -0
- package/lib/WriteQueue.js.map +1 -0
- package/lib/WriteQueueHttp.d.ts +12 -0
- package/lib/WriteQueueHttp.d.ts.map +1 -0
- package/lib/WriteQueueHttp.js +23 -0
- package/lib/WriteQueueHttp.js.map +1 -0
- package/lib/WriteSecret.d.ts +53 -0
- package/lib/WriteSecret.d.ts.map +1 -0
- package/lib/WriteSecret.js +3 -0
- package/lib/WriteSecret.js.map +1 -0
- package/lib/WriteSecretHttp.d.ts +23 -0
- package/lib/WriteSecretHttp.d.ts.map +1 -0
- package/lib/WriteSecretHttp.js +44 -0
- package/lib/WriteSecretHttp.js.map +1 -0
- package/lib/WriteVolume.d.ts +39 -0
- package/lib/WriteVolume.d.ts.map +1 -0
- package/lib/WriteVolume.js +3 -0
- package/lib/WriteVolume.js.map +1 -0
- package/lib/WriteVolumeHttp.d.ts +12 -0
- package/lib/WriteVolumeHttp.d.ts.map +1 -0
- package/lib/WriteVolumeHttp.js +24 -0
- package/lib/WriteVolumeHttp.js.map +1 -0
- package/lib/index.d.ts +80 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +78 -0
- package/lib/index.js.map +1 -0
- package/lib/internal/Declared.d.ts +29 -0
- package/lib/internal/Declared.d.ts.map +1 -0
- package/lib/internal/Declared.js +31 -0
- package/lib/internal/Declared.js.map +1 -0
- package/lib/internal/Deploy.d.ts +110 -0
- package/lib/internal/Deploy.d.ts.map +1 -0
- package/lib/internal/Deploy.js +230 -0
- package/lib/internal/Deploy.js.map +1 -0
- package/lib/internal/Entrypoint.d.ts +52 -0
- package/lib/internal/Entrypoint.d.ts.map +1 -0
- package/lib/internal/Entrypoint.js +193 -0
- package/lib/internal/Entrypoint.js.map +1 -0
- package/lib/internal/Rpc.d.ts +17 -0
- package/lib/internal/Rpc.d.ts.map +1 -0
- package/lib/internal/Rpc.js +49 -0
- package/lib/internal/Rpc.js.map +1 -0
- package/lib/internal/RpcAuth.d.ts +41 -0
- package/lib/internal/RpcAuth.d.ts.map +1 -0
- package/lib/internal/RpcAuth.js +100 -0
- package/lib/internal/RpcAuth.js.map +1 -0
- package/lib/internal/Runtime.d.ts +127 -0
- package/lib/internal/Runtime.d.ts.map +1 -0
- package/lib/internal/Runtime.js +246 -0
- package/lib/internal/Runtime.js.map +1 -0
- package/lib/internal/Tags.d.ts +19 -0
- package/lib/internal/Tags.d.ts.map +1 -0
- package/lib/internal/Tags.js +33 -0
- package/lib/internal/Tags.js.map +1 -0
- package/lib/internal/TcpConnect.d.ts +12 -0
- package/lib/internal/TcpConnect.d.ts.map +1 -0
- package/lib/internal/TcpConnect.js +46 -0
- package/lib/internal/TcpConnect.js.map +1 -0
- package/lib/internal/Transport.d.ts +13 -0
- package/lib/internal/Transport.d.ts.map +1 -0
- package/lib/internal/Transport.js +16 -0
- package/lib/internal/Transport.js.map +1 -0
- package/lib/internal.d.ts +71 -0
- package/lib/internal.d.ts.map +1 -0
- package/lib/internal.js +102 -0
- package/lib/internal.js.map +1 -0
- package/package.json +59 -3
- package/src/App.ts +262 -0
- package/src/AuthProvider.ts +295 -0
- package/src/BindingHttp.ts +112 -0
- package/src/Blob.ts +71 -0
- package/src/Bootstrap.ts +52 -0
- package/src/Cbor.ts +158 -0
- package/src/ConnectSandbox.ts +99 -0
- package/src/Container.ts +121 -0
- package/src/Contributions.ts +9 -0
- package/src/CreateDict.ts +95 -0
- package/src/CreateDictHttp.ts +91 -0
- package/src/CreateImage.ts +105 -0
- package/src/CreateImageHttp.ts +117 -0
- package/src/CreateQueue.ts +95 -0
- package/src/CreateQueueHttp.ts +91 -0
- package/src/CreateSandbox.ts +228 -0
- package/src/CreateSandboxHttp.ts +160 -0
- package/src/CreateSecret.ts +109 -0
- package/src/CreateSecretHttp.ts +83 -0
- package/src/CreateVolume.ts +96 -0
- package/src/CreateVolumeHttp.ts +93 -0
- package/src/Credentials.ts +74 -0
- package/src/Dict.ts +245 -0
- package/src/DictClient.ts +166 -0
- package/src/Domain.ts +147 -0
- package/src/Endpoint.ts +406 -0
- package/src/Environment.ts +373 -0
- package/src/FetchServer.ts +126 -0
- package/src/FetchServerHttp.ts +110 -0
- package/src/Function.ts +397 -0
- package/src/FunctionAutoscaler.ts +210 -0
- package/src/FunctionTarget.ts +181 -0
- package/src/Image.ts +281 -0
- package/src/ImageBuild.ts +228 -0
- package/src/ImagePlan.ts +78 -0
- package/src/InferEnv.ts +27 -0
- package/src/InvokeFunction.ts +211 -0
- package/src/InvokeFunctionHttp.ts +316 -0
- package/src/ModalBindings.ts +310 -0
- package/src/MountBucket.ts +137 -0
- package/src/MountVolume.ts +113 -0
- package/src/Mounts.ts +230 -0
- package/src/PersistentSandbox.ts +142 -0
- package/src/Providers.ts +100 -0
- package/src/Proxy.ts +191 -0
- package/src/Queue.ts +258 -0
- package/src/QueueClient.ts +149 -0
- package/src/ReadApp.ts +101 -0
- package/src/ReadAppHttp.ts +142 -0
- package/src/ReadDict.ts +44 -0
- package/src/ReadDictHttp.ts +27 -0
- package/src/ReadFunction.ts +107 -0
- package/src/ReadFunctionHttp.ts +91 -0
- package/src/ReadQueue.ts +44 -0
- package/src/ReadQueueHttp.ts +27 -0
- package/src/ReadServer.ts +98 -0
- package/src/ReadServerHttp.ts +101 -0
- package/src/ReadVolume.ts +45 -0
- package/src/ReadVolumeHttp.ts +28 -0
- package/src/ReadWriteDict.ts +44 -0
- package/src/ReadWriteDictHttp.ts +27 -0
- package/src/ReadWriteQueue.ts +45 -0
- package/src/ReadWriteQueueHttp.ts +27 -0
- package/src/ReadWriteVolume.ts +45 -0
- package/src/ReadWriteVolumeHttp.ts +28 -0
- package/src/RuntimeOwner.ts +111 -0
- package/src/Sandbox.ts +402 -0
- package/src/SandboxClient.ts +1404 -0
- package/src/ScaleFunction.ts +70 -0
- package/src/ScaleFunctionHttp.ts +54 -0
- package/src/Secret.ts +296 -0
- package/src/Server.ts +285 -0
- package/src/ServiceUser.ts +295 -0
- package/src/Volume.ts +320 -0
- package/src/VolumeClient.ts +108 -0
- package/src/VolumeFiles.ts +194 -0
- package/src/WebhookToken.ts +230 -0
- package/src/WorkspaceSettings.ts +160 -0
- package/src/WriteApp.ts +43 -0
- package/src/WriteAppHttp.ts +51 -0
- package/src/WriteDict.ts +44 -0
- package/src/WriteDictHttp.ts +27 -0
- package/src/WriteQueue.ts +44 -0
- package/src/WriteQueueHttp.ts +27 -0
- package/src/WriteSecret.ts +60 -0
- package/src/WriteSecretHttp.ts +56 -0
- package/src/WriteVolume.ts +44 -0
- package/src/WriteVolumeHttp.ts +28 -0
- package/src/globals.d.ts +2 -0
- package/src/index.ts +85 -0
- package/src/internal/Declared.ts +80 -0
- package/src/internal/Deploy.ts +309 -0
- package/src/internal/Entrypoint.ts +198 -0
- package/src/internal/Rpc.ts +59 -0
- package/src/internal/RpcAuth.ts +132 -0
- package/src/internal/Runtime.ts +386 -0
- package/src/internal/Tags.ts +44 -0
- package/src/internal/TcpConnect.ts +78 -0
- package/src/internal/Transport.ts +25 -0
- package/src/internal.ts +147 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as flash from "@distilled.cloud/modal/flash";
|
|
2
|
+
import * as server from "@distilled.cloud/modal/server";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
5
|
+
import { makeFunctionBinding } from "./FunctionTarget.js";
|
|
6
|
+
import { operations, timestampOf } from "./internal.js";
|
|
7
|
+
import { ReadServer } from "./ReadServer.js";
|
|
8
|
+
/** The operations the client calls, resolved by `ModalBindings.withCredentials`. */
|
|
9
|
+
const ReadServerOps = operations({
|
|
10
|
+
stats: server.serverGetTimeRangeStats,
|
|
11
|
+
requests: server.fetchServerRequest,
|
|
12
|
+
requestCount: server.serverCountRequests,
|
|
13
|
+
metrics: server.serverGetMetrics,
|
|
14
|
+
containers: flash.listFlashContainer,
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* {@link ReadServer} over Modal's API. Grants the host's identity (a scoped
|
|
18
|
+
* `Modal.ServiceUser`) the `viewer` role on the server's environment.
|
|
19
|
+
*
|
|
20
|
+
* @layer
|
|
21
|
+
* @product Server
|
|
22
|
+
* @provides Modal.ReadServer
|
|
23
|
+
*/
|
|
24
|
+
export const ReadServerHttp = Layer.effect(ReadServer, makeFunctionBinding({
|
|
25
|
+
tag: "Modal.ReadServer",
|
|
26
|
+
operations: ReadServerOps,
|
|
27
|
+
role: "viewer",
|
|
28
|
+
make: ({ functionId }, ops, _server) => Effect.succeed({
|
|
29
|
+
stats: (range) => Effect.flatMap(functionId, (id) => ops.stats({
|
|
30
|
+
functionId: id,
|
|
31
|
+
since: timestampOf(range.since),
|
|
32
|
+
until: timestampOf(range.until ?? Date.now()),
|
|
33
|
+
containerId: range.containerId,
|
|
34
|
+
})),
|
|
35
|
+
requests: (query) => Effect.flatMap(functionId, (id) => ops.requests("limit" in query
|
|
36
|
+
? { functionId: id, tail: { count: query.limit } }
|
|
37
|
+
: {
|
|
38
|
+
functionId: id,
|
|
39
|
+
range: {
|
|
40
|
+
since: timestampOf(query.since),
|
|
41
|
+
until: timestampOf(query.until ?? Date.now()),
|
|
42
|
+
},
|
|
43
|
+
})).pipe(Effect.map((response) => (response.requests ?? []).map((request) => ({
|
|
44
|
+
route: request.route,
|
|
45
|
+
timestamp: request.timestamp,
|
|
46
|
+
containerId: request.containerId,
|
|
47
|
+
durationSeconds: request.durationSeconds,
|
|
48
|
+
status: request.status,
|
|
49
|
+
})))),
|
|
50
|
+
requestCount: (range) => Effect.flatMap(functionId, (id) => ops.requestCount({
|
|
51
|
+
functionId: id,
|
|
52
|
+
since: timestampOf(range.since),
|
|
53
|
+
until: timestampOf(range.until ?? Date.now()),
|
|
54
|
+
bucketSecs: range.bucketSecs,
|
|
55
|
+
})),
|
|
56
|
+
metrics: (range) => Effect.flatMap(functionId, (id) => ops.metrics({
|
|
57
|
+
functionId: id,
|
|
58
|
+
since: timestampOf(range.since),
|
|
59
|
+
until: timestampOf(range.until ?? Date.now()),
|
|
60
|
+
bucketSecs: range.bucketSecs,
|
|
61
|
+
groups: range.groups ? [...range.groups] : undefined,
|
|
62
|
+
})),
|
|
63
|
+
containers: () => Effect.flatMap(functionId, (id) => ops.containers({ functionId: id })).pipe(Effect.map((response) => (response.containers ?? []).map((container) => ({
|
|
64
|
+
containerId: container.taskId ?? "",
|
|
65
|
+
host: container.host,
|
|
66
|
+
port: container.port,
|
|
67
|
+
})))),
|
|
68
|
+
}),
|
|
69
|
+
}));
|
|
70
|
+
//# sourceMappingURL=ReadServerHttp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadServerHttp.js","sources":["../src/ReadServerHttp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as Binding from "alchemy/Binding";
|
|
2
|
+
import type * as Effect from "effect/Effect";
|
|
3
|
+
import type { Volume } from "./Volume.ts";
|
|
4
|
+
import type { ReadVolumeClient } from "./VolumeClient.ts";
|
|
5
|
+
export type { ReadVolumeClient } from "./VolumeClient.ts";
|
|
6
|
+
/**
|
|
7
|
+
* Read a Modal Volume's files from any runtime (a Worker, a Lambda, a Modal sandbox) without mounting it: list directories and read files over Modal's volume API.
|
|
8
|
+
*
|
|
9
|
+
* ### Bind a volume
|
|
10
|
+
* **Example:** Read from a Cloudflare Worker
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import * as Cloudflare from "@alchemy.run/cloudflare";
|
|
13
|
+
* import * as Modal from "@alchemy.run/modal";
|
|
14
|
+
* import * as Effect from "effect/Effect";
|
|
15
|
+
* import * as HttpServerResponse from "effect/http/HttpServerResponse";
|
|
16
|
+
* import { Workspace } from "./Storage.ts";
|
|
17
|
+
*
|
|
18
|
+
* export default class Api extends Cloudflare.Worker<Api>()(
|
|
19
|
+
* "Api",
|
|
20
|
+
* { main: import.meta.url },
|
|
21
|
+
* Effect.gen(function* () {
|
|
22
|
+
* const volume = yield* Modal.ReadVolume(Workspace);
|
|
23
|
+
* return {
|
|
24
|
+
* fetch: Effect.gen(function* () {
|
|
25
|
+
* const files = yield* volume.listFiles("/");
|
|
26
|
+
* const readme = yield* volume.readFileString("/README.md");
|
|
27
|
+
* return yield* HttpServerResponse.json({ files, readme });
|
|
28
|
+
* }).pipe(Effect.orDie),
|
|
29
|
+
* };
|
|
30
|
+
* }).pipe(Effect.provide(Modal.ReadVolumeHttp)),
|
|
31
|
+
* ) {}
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @binding
|
|
35
|
+
* @product Volume
|
|
36
|
+
*/
|
|
37
|
+
export interface ReadVolume extends Binding.Service<ReadVolume, "Modal.ReadVolume", (volume: Volume) => Effect.Effect<ReadVolumeClient>> {
|
|
38
|
+
}
|
|
39
|
+
export declare const ReadVolume: ReadVolume;
|
|
40
|
+
//# sourceMappingURL=ReadVolume.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadVolume.d.ts","sources":["../src/ReadVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,UAAW,SAAQ,OAAO,CAAC,OAAO,CACjD,UAAU,EACV,kBAAkB,EAClB,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CACpD;CAAG;AAEJ,eAAO,MAAM,UAAU,YAAkD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadVolume.js","sources":["../src/ReadVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA4C3C,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAa,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as Layer from "effect/Layer";
|
|
2
|
+
import { ReadVolume } from "./ReadVolume.ts";
|
|
3
|
+
/**
|
|
4
|
+
* {@link ReadVolume} over Modal's volume API. Grants the host's identity (a scoped
|
|
5
|
+
* `Modal.ServiceUser`) the `viewer` role on the volume's environment.
|
|
6
|
+
*
|
|
7
|
+
* @layer
|
|
8
|
+
* @product Volume
|
|
9
|
+
* @provides Modal.ReadVolume
|
|
10
|
+
*/
|
|
11
|
+
export declare const ReadVolumeHttp: Layer.Layer<ReadVolume, never, never>;
|
|
12
|
+
//# sourceMappingURL=ReadVolumeHttp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadVolumeHttp.d.ts","sources":["../src/ReadVolumeHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,uCAW1B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import { makeModalBinding } from "./BindingHttp.js";
|
|
4
|
+
import { ReadVolume } from "./ReadVolume.js";
|
|
5
|
+
import { makeReadVolumeClient } from "./VolumeClient.js";
|
|
6
|
+
import { VolumeFileOps } from "./VolumeFiles.js";
|
|
7
|
+
/**
|
|
8
|
+
* {@link ReadVolume} over Modal's volume API. Grants the host's identity (a scoped
|
|
9
|
+
* `Modal.ServiceUser`) the `viewer` role on the volume's environment.
|
|
10
|
+
*
|
|
11
|
+
* @layer
|
|
12
|
+
* @product Volume
|
|
13
|
+
* @provides Modal.ReadVolume
|
|
14
|
+
*/
|
|
15
|
+
export const ReadVolumeHttp = Layer.effect(ReadVolume, makeModalBinding({
|
|
16
|
+
tag: "Modal.ReadVolume",
|
|
17
|
+
operations: VolumeFileOps,
|
|
18
|
+
role: "viewer",
|
|
19
|
+
make: Effect.fn(function* (volume, ops) {
|
|
20
|
+
const volumeId = yield* volume.volumeId;
|
|
21
|
+
return makeReadVolumeClient(volumeId, ops);
|
|
22
|
+
}),
|
|
23
|
+
}));
|
|
24
|
+
//# sourceMappingURL=ReadVolumeHttp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadVolumeHttp.js","sources":["../src/ReadVolumeHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CACxC,UAAU,EACV,gBAAgB,CAAC;IACf,GAAG,EAAE,kBAAkB;IACvB,UAAU,EAAE,aAAa;IACzB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAc,EAAE,GAAG;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,OAAO,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC;CACH,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as Binding from "alchemy/Binding";
|
|
2
|
+
import type * as Effect from "effect/Effect";
|
|
3
|
+
import type { Dict } from "./Dict.ts";
|
|
4
|
+
import type { ReadWriteDictClient } from "./DictClient.ts";
|
|
5
|
+
export type { ReadWriteDictClient } from "./DictClient.ts";
|
|
6
|
+
/**
|
|
7
|
+
* Read and write a Modal Dict from any runtime. Keys and values are JSON.
|
|
8
|
+
*
|
|
9
|
+
* ### Bind a dict
|
|
10
|
+
* **Example:** From a Cloudflare Worker
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import * as Cloudflare from "@alchemy.run/cloudflare";
|
|
13
|
+
* import * as Modal from "@alchemy.run/modal";
|
|
14
|
+
* import * as Effect from "effect/Effect";
|
|
15
|
+
* import * as HttpServerResponse from "effect/http/HttpServerResponse";
|
|
16
|
+
* import { Results } from "./Storage.ts";
|
|
17
|
+
*
|
|
18
|
+
* export default class Api extends Cloudflare.Worker<Api>()(
|
|
19
|
+
* "Api",
|
|
20
|
+
* { main: import.meta.url },
|
|
21
|
+
* Effect.gen(function* () {
|
|
22
|
+
* const dict = yield* Modal.ReadWriteDict(Results);
|
|
23
|
+
* return {
|
|
24
|
+
* fetch: Effect.gen(function* () {
|
|
25
|
+
* yield* dict.put("hits", ((yield* dict.get<number>("hits")) ?? 0) + 1);
|
|
26
|
+
* return yield* HttpServerResponse.json({ hits: yield* dict.get("hits") });
|
|
27
|
+
* }).pipe(Effect.orDie),
|
|
28
|
+
* };
|
|
29
|
+
* }).pipe(Effect.provide(Modal.ReadWriteDictHttp)),
|
|
30
|
+
* ) {}
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @binding
|
|
34
|
+
* @product Dict
|
|
35
|
+
*/
|
|
36
|
+
export interface ReadWriteDict extends Binding.Service<ReadWriteDict, "Modal.ReadWriteDict", (dict: Dict) => Effect.Effect<ReadWriteDictClient>> {
|
|
37
|
+
}
|
|
38
|
+
export declare const ReadWriteDict: ReadWriteDict;
|
|
39
|
+
//# sourceMappingURL=ReadWriteDict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteDict.d.ts","sources":["../src/ReadWriteDict.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,aAAc,SAAQ,OAAO,CAAC,OAAO,CACpD,aAAa,EACb,qBAAqB,EACrB,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CACnD;CAAG;AAEJ,eAAO,MAAM,aAAa,eAAwD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteDict.js","sources":["../src/ReadWriteDict.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA2C3C,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAgB,qBAAqB,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as Layer from "effect/Layer";
|
|
2
|
+
import { ReadWriteDict } from "./ReadWriteDict.ts";
|
|
3
|
+
/**
|
|
4
|
+
* {@link ReadWriteDict} over Modal's API. Grants the host's identity (a scoped
|
|
5
|
+
* `Modal.ServiceUser`) the `contributor` role on the dict's environment.
|
|
6
|
+
*
|
|
7
|
+
* @layer
|
|
8
|
+
* @product Dict
|
|
9
|
+
* @provides Modal.ReadWriteDict
|
|
10
|
+
*/
|
|
11
|
+
export declare const ReadWriteDictHttp: Layer.Layer<ReadWriteDict, never, never>;
|
|
12
|
+
//# sourceMappingURL=ReadWriteDictHttp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteDictHttp.d.ts","sources":["../src/ReadWriteDictHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,0CAW7B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import { makeModalBinding } from "./BindingHttp.js";
|
|
4
|
+
import { DictOps, makeReadWriteDictClient } from "./DictClient.js";
|
|
5
|
+
import { ReadWriteDict } from "./ReadWriteDict.js";
|
|
6
|
+
/**
|
|
7
|
+
* {@link ReadWriteDict} over Modal's API. Grants the host's identity (a scoped
|
|
8
|
+
* `Modal.ServiceUser`) the `contributor` role on the dict's environment.
|
|
9
|
+
*
|
|
10
|
+
* @layer
|
|
11
|
+
* @product Dict
|
|
12
|
+
* @provides Modal.ReadWriteDict
|
|
13
|
+
*/
|
|
14
|
+
export const ReadWriteDictHttp = Layer.effect(ReadWriteDict, makeModalBinding({
|
|
15
|
+
tag: "Modal.ReadWriteDict",
|
|
16
|
+
operations: DictOps,
|
|
17
|
+
role: "contributor",
|
|
18
|
+
make: Effect.fn(function* (dict, ops) {
|
|
19
|
+
const dictId = yield* dict.dictId;
|
|
20
|
+
return makeReadWriteDictClient(dictId, ops);
|
|
21
|
+
}),
|
|
22
|
+
}));
|
|
23
|
+
//# sourceMappingURL=ReadWriteDictHttp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteDictHttp.js","sources":["../src/ReadWriteDictHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAC3C,aAAa,EACb,gBAAgB,CAAC;IACf,GAAG,EAAE,qBAAqB;IAC1B,UAAU,EAAE,OAAO;IACnB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAU,EAAE,GAAG;QACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAClC,OAAO,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC;CACH,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as Binding from "alchemy/Binding";
|
|
2
|
+
import type * as Effect from "effect/Effect";
|
|
3
|
+
import type { Queue } from "./Queue.ts";
|
|
4
|
+
import type { ReadWriteQueueClient } from "./QueueClient.ts";
|
|
5
|
+
export type { ReadWriteQueueClient } from "./QueueClient.ts";
|
|
6
|
+
/**
|
|
7
|
+
* Put and take items on a Modal Queue from any runtime. Items are JSON.
|
|
8
|
+
*
|
|
9
|
+
* ### Bind a queue
|
|
10
|
+
* **Example:** From a Cloudflare Worker
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import * as Cloudflare from "@alchemy.run/cloudflare";
|
|
13
|
+
* import * as Modal from "@alchemy.run/modal";
|
|
14
|
+
* import * as Effect from "effect/Effect";
|
|
15
|
+
* import * as HttpServerResponse from "effect/http/HttpServerResponse";
|
|
16
|
+
* import { Jobs } from "./Storage.ts";
|
|
17
|
+
*
|
|
18
|
+
* export default class Api extends Cloudflare.Worker<Api>()(
|
|
19
|
+
* "Api",
|
|
20
|
+
* { main: import.meta.url },
|
|
21
|
+
* Effect.gen(function* () {
|
|
22
|
+
* const queue = yield* Modal.ReadWriteQueue(Jobs);
|
|
23
|
+
* return {
|
|
24
|
+
* fetch: Effect.gen(function* () {
|
|
25
|
+
* yield* queue.put({ n: 1 });
|
|
26
|
+
* const items = yield* queue.take({ count: 10 });
|
|
27
|
+
* return yield* HttpServerResponse.json(items);
|
|
28
|
+
* }).pipe(Effect.orDie),
|
|
29
|
+
* };
|
|
30
|
+
* }).pipe(Effect.provide(Modal.ReadWriteQueueHttp)),
|
|
31
|
+
* ) {}
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @binding
|
|
35
|
+
* @product Queue
|
|
36
|
+
*/
|
|
37
|
+
export interface ReadWriteQueue extends Binding.Service<ReadWriteQueue, "Modal.ReadWriteQueue", (queue: Queue) => Effect.Effect<ReadWriteQueueClient>> {
|
|
38
|
+
}
|
|
39
|
+
export declare const ReadWriteQueue: ReadWriteQueue;
|
|
40
|
+
//# sourceMappingURL=ReadWriteQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteQueue.d.ts","sources":["../src/ReadWriteQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,cAAe,SAAQ,OAAO,CAAC,OAAO,CACrD,cAAc,EACd,sBAAsB,EACtB,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CACtD;CAAG;AAEJ,eAAO,MAAM,cAAc,gBAA0D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteQueue.js","sources":["../src/ReadWriteQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA4C3C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAiB,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as Layer from "effect/Layer";
|
|
2
|
+
import { ReadWriteQueue } from "./ReadWriteQueue.ts";
|
|
3
|
+
/**
|
|
4
|
+
* {@link ReadWriteQueue} over Modal's API. Grants the host's identity (a scoped
|
|
5
|
+
* `Modal.ServiceUser`) the `contributor` role on the queue's environment.
|
|
6
|
+
*
|
|
7
|
+
* @layer
|
|
8
|
+
* @product Queue
|
|
9
|
+
* @provides Modal.ReadWriteQueue
|
|
10
|
+
*/
|
|
11
|
+
export declare const ReadWriteQueueHttp: Layer.Layer<ReadWriteQueue, never, never>;
|
|
12
|
+
//# sourceMappingURL=ReadWriteQueueHttp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteQueueHttp.d.ts","sources":["../src/ReadWriteQueueHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,2CAW9B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import { makeModalBinding } from "./BindingHttp.js";
|
|
4
|
+
import { QueueOps, makeReadWriteQueueClient } from "./QueueClient.js";
|
|
5
|
+
import { ReadWriteQueue } from "./ReadWriteQueue.js";
|
|
6
|
+
/**
|
|
7
|
+
* {@link ReadWriteQueue} over Modal's API. Grants the host's identity (a scoped
|
|
8
|
+
* `Modal.ServiceUser`) the `contributor` role on the queue's environment.
|
|
9
|
+
*
|
|
10
|
+
* @layer
|
|
11
|
+
* @product Queue
|
|
12
|
+
* @provides Modal.ReadWriteQueue
|
|
13
|
+
*/
|
|
14
|
+
export const ReadWriteQueueHttp = Layer.effect(ReadWriteQueue, makeModalBinding({
|
|
15
|
+
tag: "Modal.ReadWriteQueue",
|
|
16
|
+
operations: QueueOps,
|
|
17
|
+
role: "contributor",
|
|
18
|
+
make: Effect.fn(function* (queue, ops) {
|
|
19
|
+
const queueId = yield* queue.queueId;
|
|
20
|
+
return makeReadWriteQueueClient(queueId, ops);
|
|
21
|
+
}),
|
|
22
|
+
}));
|
|
23
|
+
//# sourceMappingURL=ReadWriteQueueHttp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteQueueHttp.js","sources":["../src/ReadWriteQueueHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAC5C,cAAc,EACd,gBAAgB,CAAC;IACf,GAAG,EAAE,sBAAsB;IAC3B,UAAU,EAAE,QAAQ;IACpB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAY,EAAE,GAAG;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QACrC,OAAO,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC;CACH,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as Binding from "alchemy/Binding";
|
|
2
|
+
import type * as Effect from "effect/Effect";
|
|
3
|
+
import type { Volume } from "./Volume.ts";
|
|
4
|
+
import type { ReadWriteVolumeClient } from "./VolumeClient.ts";
|
|
5
|
+
export type { ReadWriteVolumeClient } from "./VolumeClient.ts";
|
|
6
|
+
/**
|
|
7
|
+
* Read and write a Modal Volume's files from any runtime without mounting it.
|
|
8
|
+
*
|
|
9
|
+
* ### Bind a volume
|
|
10
|
+
* **Example:** ReadWrite from a Cloudflare Worker
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import * as Cloudflare from "@alchemy.run/cloudflare";
|
|
13
|
+
* import * as Modal from "@alchemy.run/modal";
|
|
14
|
+
* import * as Effect from "effect/Effect";
|
|
15
|
+
* import * as HttpServerResponse from "effect/http/HttpServerResponse";
|
|
16
|
+
* import { Workspace } from "./Storage.ts";
|
|
17
|
+
*
|
|
18
|
+
* export default class Api extends Cloudflare.Worker<Api>()(
|
|
19
|
+
* "Api",
|
|
20
|
+
* { main: import.meta.url },
|
|
21
|
+
* Effect.gen(function* () {
|
|
22
|
+
* const volume = yield* Modal.ReadWriteVolume(Workspace);
|
|
23
|
+
* return {
|
|
24
|
+
* fetch: Effect.gen(function* () {
|
|
25
|
+
* yield* volume.writeFile("/hello.txt", "hello");
|
|
26
|
+
* const text = yield* volume.readFileString("/hello.txt");
|
|
27
|
+
* return HttpServerResponse.text(text);
|
|
28
|
+
* }).pipe(Effect.orDie),
|
|
29
|
+
* };
|
|
30
|
+
* }).pipe(Effect.provide(Modal.ReadWriteVolumeHttp)),
|
|
31
|
+
* ) {}
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @binding
|
|
35
|
+
* @product Volume
|
|
36
|
+
*/
|
|
37
|
+
export interface ReadWriteVolume extends Binding.Service<ReadWriteVolume, "Modal.ReadWriteVolume", (volume: Volume) => Effect.Effect<ReadWriteVolumeClient>> {
|
|
38
|
+
}
|
|
39
|
+
export declare const ReadWriteVolume: ReadWriteVolume;
|
|
40
|
+
//# sourceMappingURL=ReadWriteVolume.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteVolume.d.ts","sources":["../src/ReadWriteVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,eAAgB,SAAQ,OAAO,CAAC,OAAO,CACtD,eAAe,EACf,uBAAuB,EACvB,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CACzD;CAAG;AAEJ,eAAO,MAAM,eAAe,iBAA4D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteVolume.js","sources":["../src/ReadWriteVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA4C3C,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAkB,uBAAuB,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as Layer from "effect/Layer";
|
|
2
|
+
import { ReadWriteVolume } from "./ReadWriteVolume.ts";
|
|
3
|
+
/**
|
|
4
|
+
* {@link ReadWriteVolume} over Modal's volume API. Grants the host's identity (a scoped
|
|
5
|
+
* `Modal.ServiceUser`) the `contributor` role on the volume's environment.
|
|
6
|
+
*
|
|
7
|
+
* @layer
|
|
8
|
+
* @product Volume
|
|
9
|
+
* @provides Modal.ReadWriteVolume
|
|
10
|
+
*/
|
|
11
|
+
export declare const ReadWriteVolumeHttp: Layer.Layer<ReadWriteVolume, never, never>;
|
|
12
|
+
//# sourceMappingURL=ReadWriteVolumeHttp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteVolumeHttp.d.ts","sources":["../src/ReadWriteVolumeHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAKvD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,4CAW/B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import { makeModalBinding } from "./BindingHttp.js";
|
|
4
|
+
import { ReadWriteVolume } from "./ReadWriteVolume.js";
|
|
5
|
+
import { makeReadWriteVolumeClient } from "./VolumeClient.js";
|
|
6
|
+
import { VolumeFileOps } from "./VolumeFiles.js";
|
|
7
|
+
/**
|
|
8
|
+
* {@link ReadWriteVolume} over Modal's volume API. Grants the host's identity (a scoped
|
|
9
|
+
* `Modal.ServiceUser`) the `contributor` role on the volume's environment.
|
|
10
|
+
*
|
|
11
|
+
* @layer
|
|
12
|
+
* @product Volume
|
|
13
|
+
* @provides Modal.ReadWriteVolume
|
|
14
|
+
*/
|
|
15
|
+
export const ReadWriteVolumeHttp = Layer.effect(ReadWriteVolume, makeModalBinding({
|
|
16
|
+
tag: "Modal.ReadWriteVolume",
|
|
17
|
+
operations: VolumeFileOps,
|
|
18
|
+
role: "contributor",
|
|
19
|
+
make: Effect.fn(function* (volume, ops) {
|
|
20
|
+
const volumeId = yield* volume.volumeId;
|
|
21
|
+
return makeReadWriteVolumeClient(volumeId, ops);
|
|
22
|
+
}),
|
|
23
|
+
}));
|
|
24
|
+
//# sourceMappingURL=ReadWriteVolumeHttp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadWriteVolumeHttp.js","sources":["../src/ReadWriteVolumeHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAC7C,eAAe,EACf,gBAAgB,CAAC;IACf,GAAG,EAAE,uBAAuB;IAC5B,UAAU,EAAE,aAAa;IACzB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAc,EAAE,GAAG;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,OAAO,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC;CACH,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
/**
|
|
3
|
+
* Who created an object at run time: the stack, stage and binding host
|
|
4
|
+
* (`alchemy::stack`, `alchemy::stage`, `alchemy::id`).
|
|
5
|
+
*
|
|
6
|
+
* The `Create*` bindings mark every object they create with it, so the
|
|
7
|
+
* objects can be found and cleaned up. Destroying the stack does not delete
|
|
8
|
+
* them. Modal tags sandboxes, so a sandbox carries the three keys as tags;
|
|
9
|
+
* volumes, dicts, queues and secrets have only a name, so theirs starts with
|
|
10
|
+
* {@link runtimePrefix}, and `alchemy nuke` deletes them by it.
|
|
11
|
+
*/
|
|
12
|
+
export interface RuntimeOwner {
|
|
13
|
+
readonly stack: string;
|
|
14
|
+
readonly stage: string;
|
|
15
|
+
readonly id: string;
|
|
16
|
+
}
|
|
17
|
+
/** The owner as Modal sandbox tags. */
|
|
18
|
+
export declare const runtimeTags: (owner: RuntimeOwner) => Record<string, string>;
|
|
19
|
+
/**
|
|
20
|
+
* The name prefix of objects that carry only a name:
|
|
21
|
+
* `alc-<stack-stage-id>-<digest>`, the identity readable and cut to 16
|
|
22
|
+
* characters, then a digest of all three. An object `name` becomes
|
|
23
|
+
* `<prefix>-<name>`. The `alc-` marker is how `alchemy nuke` recognizes them.
|
|
24
|
+
*/
|
|
25
|
+
export declare const runtimePrefix: (owner: RuntimeOwner) => string;
|
|
26
|
+
/** Whether `name` carries some owner's {@link runtimePrefix}. */
|
|
27
|
+
export declare const isRuntimeName: (name: string | undefined) => boolean;
|
|
28
|
+
/** The name an object gets: `<prefix>-<name>` with an owner, `name` without one. */
|
|
29
|
+
export declare const ownedName: (owner: RuntimeOwner | undefined, name: string) => string;
|
|
30
|
+
/** An owned object's name without the prefix, or `undefined` when another owner's. */
|
|
31
|
+
export declare const unownedName: (owner: RuntimeOwner | undefined, name: string) => string | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* The owner a `Create*` binding marks its objects with. Yield it while the
|
|
34
|
+
* binding's layer is built and call the result inside the binding: at deploy
|
|
35
|
+
* it binds the host's identity into the host's env; at run time its Effect
|
|
36
|
+
* reads it back. Without a host (a script or an Action) there is no owner.
|
|
37
|
+
*/
|
|
38
|
+
export declare const RuntimeOwnerOf: () => Effect.Effect<Effect.Effect<RuntimeOwner | undefined, never, never>, never, never>;
|
|
39
|
+
//# sourceMappingURL=RuntimeOwner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeOwner.d.ts","sources":["../src/RuntimeOwner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,uCAAuC;AACvC,eAAO,MAAM,WAAW,UAAW,YAAY,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAIrE,CAAC;AAmBH;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAW,YAAY,KAAG,MAInD,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,aAAa,SAAU,MAAM,GAAG,SAAS,KAAG,OAC8B,CAAC;AAExF,oFAAoF;AACpF,eAAO,MAAM,SAAS,UAAW,YAAY,GAAG,SAAS,QAAQ,MAAM,WACP,CAAC;AAEjE,sFAAsF;AACtF,eAAO,MAAM,WAAW,UAAW,YAAY,GAAG,SAAS,QAAQ,MAAM,uBAIxE,CAAC;AAQF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,0FAuBzB,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as Binding from "alchemy/Binding";
|
|
2
|
+
import * as Output from "alchemy/Output";
|
|
3
|
+
import { CurrentRuntimeContext } from "alchemy/RuntimeContext";
|
|
4
|
+
import { Stack } from "alchemy/Stack";
|
|
5
|
+
import { Stage } from "alchemy/Stage";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as Option from "effect/Option";
|
|
8
|
+
/** The owner as Modal sandbox tags. */
|
|
9
|
+
export const runtimeTags = (owner) => ({
|
|
10
|
+
"alchemy::stack": owner.stack,
|
|
11
|
+
"alchemy::stage": owner.stage,
|
|
12
|
+
"alchemy::id": owner.id,
|
|
13
|
+
});
|
|
14
|
+
const toLabel = (value) => value
|
|
15
|
+
.toLowerCase()
|
|
16
|
+
.replace(/[^a-z0-9-]+/g, "-")
|
|
17
|
+
.replace(/-+/g, "-")
|
|
18
|
+
.replace(/^-|-$/g, "");
|
|
19
|
+
/** FNV-1a, 32 bits: a short, stable digest of the full identity. */
|
|
20
|
+
const digest = (value) => {
|
|
21
|
+
let hash = 0x811c9dc5;
|
|
22
|
+
for (let i = 0; i < value.length; i++) {
|
|
23
|
+
hash ^= value.charCodeAt(i);
|
|
24
|
+
hash = Math.imul(hash, 0x01000193);
|
|
25
|
+
}
|
|
26
|
+
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The name prefix of objects that carry only a name:
|
|
30
|
+
* `alc-<stack-stage-id>-<digest>`, the identity readable and cut to 16
|
|
31
|
+
* characters, then a digest of all three. An object `name` becomes
|
|
32
|
+
* `<prefix>-<name>`. The `alc-` marker is how `alchemy nuke` recognizes them.
|
|
33
|
+
*/
|
|
34
|
+
export const runtimePrefix = (owner) => {
|
|
35
|
+
const readable = toLabel(`${owner.stack}-${owner.stage}-${owner.id}`).slice(0, 16).replace(/-+$/, "") || "x";
|
|
36
|
+
return `alc-${readable}-${digest(`${owner.stack}/${owner.stage}/${owner.id}`)}`;
|
|
37
|
+
};
|
|
38
|
+
/** Whether `name` carries some owner's {@link runtimePrefix}. */
|
|
39
|
+
export const isRuntimeName = (name) => name !== undefined && /^alc-[a-z0-9](?:[a-z0-9-]*[a-z0-9])?-[0-9a-f]{8}-./.test(name);
|
|
40
|
+
/** The name an object gets: `<prefix>-<name>` with an owner, `name` without one. */
|
|
41
|
+
export const ownedName = (owner, name) => owner === undefined ? name : `${runtimePrefix(owner)}-${name}`;
|
|
42
|
+
/** An owned object's name without the prefix, or `undefined` when another owner's. */
|
|
43
|
+
export const unownedName = (owner, name) => {
|
|
44
|
+
if (owner === undefined)
|
|
45
|
+
return name;
|
|
46
|
+
const prefix = `${runtimePrefix(owner)}-`;
|
|
47
|
+
return name.startsWith(prefix) ? name.slice(prefix.length) : undefined;
|
|
48
|
+
};
|
|
49
|
+
const ENV = {
|
|
50
|
+
stack: "ALCHEMY_MODAL_OWNER_STACK",
|
|
51
|
+
stage: "ALCHEMY_MODAL_OWNER_STAGE",
|
|
52
|
+
id: "ALCHEMY_MODAL_OWNER_ID",
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* The owner a `Create*` binding marks its objects with. Yield it while the
|
|
56
|
+
* binding's layer is built and call the result inside the binding: at deploy
|
|
57
|
+
* it binds the host's identity into the host's env; at run time its Effect
|
|
58
|
+
* reads it back. Without a host (a script or an Action) there is no owner.
|
|
59
|
+
*/
|
|
60
|
+
export const RuntimeOwnerOf = Effect.fn(function* () {
|
|
61
|
+
const runtime = yield* CurrentRuntimeContext;
|
|
62
|
+
if (runtime === undefined)
|
|
63
|
+
return Effect.succeed(undefined);
|
|
64
|
+
if (!globalThis.__ALCHEMY_RUNTIME__) {
|
|
65
|
+
const host = yield* Binding.Host;
|
|
66
|
+
// The deploying stack and stage, read without requiring them, so the
|
|
67
|
+
// binding's `make` needs nothing a script or an Action lacks.
|
|
68
|
+
const stack = Option.getOrUndefined(yield* Effect.serviceOption(Stack));
|
|
69
|
+
const stage = Option.getOrUndefined(yield* Effect.serviceOption(Stage));
|
|
70
|
+
if (host !== undefined && stack !== undefined && stage !== undefined) {
|
|
71
|
+
yield* runtime.set(ENV.stack, Output.literal(stack.name));
|
|
72
|
+
yield* runtime.set(ENV.stage, Output.literal(stage));
|
|
73
|
+
yield* runtime.set(ENV.id, Output.literal(host.LogicalId));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return Effect.gen(function* () {
|
|
77
|
+
const stack = yield* runtime.get(ENV.stack);
|
|
78
|
+
const stage = yield* runtime.get(ENV.stage);
|
|
79
|
+
const id = yield* runtime.get(ENV.id);
|
|
80
|
+
return stack === undefined || stage === undefined || id === undefined
|
|
81
|
+
? undefined
|
|
82
|
+
: { stack, stage, id };
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=RuntimeOwner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeOwner.js","sources":["../src/RuntimeOwner.ts"],"names":[],"mappings":"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"}
|