@alchemy.run/modal 0.0.0 → 2.0.0-beta.87
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 @@
|
|
|
1
|
+
{"version":3,"file":"CreateVolume.d.ts","sources":["../src/CreateVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,qFAAqF;AACrF,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;CACvC;AAED,uEAAuE;AACvE,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,iFAAiF;IACjF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,+CAA+C;IAC/C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS,EAAE,OAAO,CAAC,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5F,2DAA2D;IAC3D,MAAM,CACJ,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,CACd,IAAI,EACF,OAAO,CAAC,OAAO,YAAY,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC,EAC7E,CAAC,CACF,CAAC;IACF,gDAAgD;IAChD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9E;AAED,iEAAiE;AACjE,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,OAAO,CACnD,YAAY,EACZ,oBAAoB,EACpB,CAAC,WAAW,CAAC,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAC5D;CAAG;AAEJ,eAAO,MAAM,YAAY,cAAsD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateVolume.js","sources":["../src/CreateVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA+F3C,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAe,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as volume from "@distilled.cloud/modal/volume";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import { CreateVolume, type VolumesClientOf } from "./CreateVolume.ts";
|
|
5
|
+
import { type RuntimeOwner } from "./RuntimeOwner.ts";
|
|
6
|
+
/** The operations the client calls, resolved by `ModalBindings.withCredentials`. */
|
|
7
|
+
export declare const VolumesOps: Effect.Effect<{
|
|
8
|
+
readonly getOrCreate: (input: volume.VolumeGetOrCreateRequest) => Effect.Effect<volume.VolumeGetOrCreateResponse, volume.VolumeGetOrCreateError, never>;
|
|
9
|
+
readonly delete: (input: volume.DeleteVolumeRequest) => Effect.Effect<volume.DeleteVolumeResponse, volume.DeleteVolumeError, never>;
|
|
10
|
+
readonly list: import("@distilled.cloud/core/api").PaginatedCall<volume.ListVolumeRequest, volume.ListVolumeResponse, volume.ListVolumeError, never, volume.VolumeListItem>;
|
|
11
|
+
readonly client: {
|
|
12
|
+
readonly getFile: (input: volume.VolumeGetFile2Request) => Effect.Effect<volume.VolumeGetFile2Response, volume.VolumeGetFile2Error, never>;
|
|
13
|
+
readonly listFiles: import("@distilled.cloud/core/api").StreamingCall<volume.VolumeListFiles2Request, volume.VolumeListFiles2Stream, volume.VolumeListFiles2Error, never, volume.VolumeListFilesResponse>;
|
|
14
|
+
readonly putFiles: (input: volume.VolumePutFiles2Request) => Effect.Effect<volume.VolumePutFiles2Response, volume.VolumePutFiles2Error, never>;
|
|
15
|
+
readonly removeFile: (input: volume.VolumeRemoveFile2Request) => Effect.Effect<volume.VolumeRemoveFile2Response, volume.VolumeRemoveFile2Error, never>;
|
|
16
|
+
readonly copyFiles: (input: volume.VolumeCopyFiles2Request) => Effect.Effect<volume.VolumeCopyFiles2Response, volume.VolumeCopyFiles2Error, never>;
|
|
17
|
+
readonly http: import("effect/http/HttpClient").HttpClient;
|
|
18
|
+
};
|
|
19
|
+
}, never, import("./internal.ts").OperationServices>;
|
|
20
|
+
export type VolumesOps = Effect.Success<typeof VolumesOps>;
|
|
21
|
+
/** A volumes client over an environment name resolved per call. */
|
|
22
|
+
export declare const makeVolumesClient: (environment: Effect.Effect<string | undefined>, ops: VolumesOps, owner?: Effect.Effect<RuntimeOwner | undefined>) => VolumesClientOf<never>;
|
|
23
|
+
/**
|
|
24
|
+
* {@link CreateVolume} over Modal's API. Grants the host's identity (a scoped
|
|
25
|
+
* `Modal.ServiceUser`) the `contributor` role on the environment.
|
|
26
|
+
*
|
|
27
|
+
* @layer
|
|
28
|
+
* @product Volume
|
|
29
|
+
* @provides Modal.CreateVolume
|
|
30
|
+
*/
|
|
31
|
+
export declare const CreateVolumeHttp: Layer.Layer<CreateVolume, never, never>;
|
|
32
|
+
//# sourceMappingURL=CreateVolumeHttp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateVolumeHttp.d.ts","sources":["../src/CreateVolumeHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAqB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG1F,OAAO,EAAa,KAAK,YAAY,EAA+B,MAAM,mBAAmB,CAAC;AAK9F,oFAAoF;AACpF,eAAO,MAAM,UAAU;;;;;;;;;;;;oDAKrB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,UAAU,CAAC,CAAC;AAS3D,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,gBACf,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,OACzC,UAAU,UACR,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC,KAC7C,eAAe,CAAC,KAAK,CAmCtB,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,yCAa5B,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as volume from "@distilled.cloud/modal/volume";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import { makeOpenModalBinding } from "./BindingHttp.js";
|
|
5
|
+
import { CreateVolume } from "./CreateVolume.js";
|
|
6
|
+
import { environmentOf, listAll, operations } from "./internal.js";
|
|
7
|
+
import { ownedName, RuntimeOwnerOf, unownedName } from "./RuntimeOwner.js";
|
|
8
|
+
import { ensureVolume, lookupVolume } from "./Volume.js";
|
|
9
|
+
import { makeReadWriteVolumeClient } from "./VolumeClient.js";
|
|
10
|
+
import { VolumeFileOps } from "./VolumeFiles.js";
|
|
11
|
+
/** The operations the client calls, resolved by `ModalBindings.withCredentials`. */
|
|
12
|
+
export const VolumesOps = operations({
|
|
13
|
+
getOrCreate: volume.volumeGetOrCreate,
|
|
14
|
+
delete: volume.deleteVolume,
|
|
15
|
+
list: volume.listVolume,
|
|
16
|
+
client: VolumeFileOps,
|
|
17
|
+
});
|
|
18
|
+
const handleOf = (attributes, ops, name) => ({
|
|
19
|
+
...makeReadWriteVolumeClient(Effect.succeed(attributes.volumeId), ops.client),
|
|
20
|
+
volumeId: Effect.succeed(attributes.volumeId),
|
|
21
|
+
name,
|
|
22
|
+
attributes,
|
|
23
|
+
});
|
|
24
|
+
/** A volumes client over an environment name resolved per call. */
|
|
25
|
+
export const makeVolumesClient = (environment, ops, owner = Effect.undefined) => ({
|
|
26
|
+
getOrCreate: (name) => Effect.flatMap(Effect.all([environment, owner]), ([env, stamp]) => ensureVolume(ops.getOrCreate, ownedName(stamp, name), env)).pipe(Effect.map((attributes) => handleOf(attributes, ops, name))),
|
|
27
|
+
get: (name) => Effect.flatMap(Effect.all([environment, owner]), ([env, stamp]) => lookupVolume(ops.getOrCreate, ownedName(stamp, name), env)).pipe(Effect.map((attributes) => (attributes ? handleOf(attributes, ops, name) : undefined))),
|
|
28
|
+
delete: (name) => Effect.gen(function* () {
|
|
29
|
+
const env = yield* environment;
|
|
30
|
+
const found = yield* lookupVolume(ops.getOrCreate, ownedName(yield* owner, name), env);
|
|
31
|
+
if (!found)
|
|
32
|
+
return;
|
|
33
|
+
yield* ops
|
|
34
|
+
.delete({ volumeId: found.volumeId, environmentName: environmentOf(env) })
|
|
35
|
+
.pipe(Effect.catchTag("VolumeNotFound", () => Effect.void));
|
|
36
|
+
}),
|
|
37
|
+
list: () => Effect.gen(function* () {
|
|
38
|
+
const env = yield* environment;
|
|
39
|
+
const stamp = yield* owner;
|
|
40
|
+
const items = yield* listAll((pagination) => ops
|
|
41
|
+
.list({ environmentName: environmentOf(env), pagination })
|
|
42
|
+
.pipe(Effect.map((response) => response.items ?? [])), (item) => item.createdAt);
|
|
43
|
+
return items.flatMap((item) => {
|
|
44
|
+
const name = item.label ?? item.metadata?.name;
|
|
45
|
+
const own = name ? unownedName(stamp, name) : undefined;
|
|
46
|
+
return own ? [own] : [];
|
|
47
|
+
});
|
|
48
|
+
}),
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* {@link CreateVolume} over Modal's API. Grants the host's identity (a scoped
|
|
52
|
+
* `Modal.ServiceUser`) the `contributor` role on the environment.
|
|
53
|
+
*
|
|
54
|
+
* @layer
|
|
55
|
+
* @product Volume
|
|
56
|
+
* @provides Modal.CreateVolume
|
|
57
|
+
*/
|
|
58
|
+
export const CreateVolumeHttp = Layer.effect(CreateVolume, makeOpenModalBinding({
|
|
59
|
+
tag: "Modal.CreateVolume",
|
|
60
|
+
operations: VolumesOps,
|
|
61
|
+
role: "contributor",
|
|
62
|
+
environmentOf: (environment) => environment?.name,
|
|
63
|
+
make: Effect.fn(function* (ops, environment) {
|
|
64
|
+
const name = environment ? yield* environment.name : Effect.undefined;
|
|
65
|
+
const owner = yield* RuntimeOwnerOf();
|
|
66
|
+
return makeVolumesClient(name, ops, owner);
|
|
67
|
+
}),
|
|
68
|
+
}));
|
|
69
|
+
//# sourceMappingURL=CreateVolumeHttp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateVolumeHttp.js","sources":["../src/CreateVolumeHttp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Credentials } from "@distilled.cloud/modal/Credentials";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import * as Redacted from "effect/Redacted";
|
|
4
|
+
export { withAuthToken } from "@distilled.cloud/modal/AuthToken";
|
|
5
|
+
export { Credentials, CredentialsFromEnv, DEFAULT_API_BASE_URL, } from "@distilled.cloud/modal/Credentials";
|
|
6
|
+
/**
|
|
7
|
+
* Build Modal `Credentials` that resolve through the Alchemy AuthProvider:
|
|
8
|
+
* `MODAL_TOKEN_ID` / `MODAL_TOKEN_SECRET` when set, otherwise the selected
|
|
9
|
+
* profile. Resolution is deferred until the first API call, so building the
|
|
10
|
+
* provider layers never needs a profile.
|
|
11
|
+
*/
|
|
12
|
+
export declare const fromAuthProvider: () => Layer.Layer<Credentials, never, import("alchemy/Auth/Registry").AuthProviders | import("alchemy/Auth/Profile").ProfileStore>;
|
|
13
|
+
/**
|
|
14
|
+
* Add Modal's short-lived auth token (the `x-modal-auth-token` JWT its V2
|
|
15
|
+
* sandbox RPCs and input plane need) to a token pair's `Credentials`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const withAuthTokens: <E, R>(credentials: Layer.Layer<Credentials, E, R>) => Layer.Layer<Credentials, E, R>;
|
|
18
|
+
/**
|
|
19
|
+
* Build Modal `Credentials` from an explicit token pair, e.g. in a test or a
|
|
20
|
+
* script that already holds one.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* Effect.provide(Modal.fromToken({ tokenId: "ak-…", tokenSecret: "as-…" }))
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare const fromToken: (input: {
|
|
28
|
+
tokenId: string | Redacted.Redacted<string>;
|
|
29
|
+
tokenSecret: string | Redacted.Redacted<string>;
|
|
30
|
+
apiBaseUrl?: string;
|
|
31
|
+
}) => Layer.Layer<Credentials>;
|
|
32
|
+
//# sourceMappingURL=Credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Credentials.d.ts","sources":["../src/Credentials.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAwB,MAAM,oCAAoC,CAAC;AAGvF,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,oIAa1B,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,eACpB,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,KAC1C,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CACgD,CAAC;AAEjF;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,UAAW;IAC/B,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAaxB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ConfigError } from "@distilled.cloud/core/errors";
|
|
2
|
+
import { withAuthToken } from "@distilled.cloud/modal/AuthToken";
|
|
3
|
+
import { Credentials, DEFAULT_API_BASE_URL } from "@distilled.cloud/modal/Credentials";
|
|
4
|
+
import { lazyCredentials } from "alchemy/Auth/Resolve";
|
|
5
|
+
import * as Effect from "effect/Effect";
|
|
6
|
+
import * as Layer from "effect/Layer";
|
|
7
|
+
import * as Redacted from "effect/Redacted";
|
|
8
|
+
import { MODAL_AUTH_PROVIDER_NAME } from "./AuthProvider.js";
|
|
9
|
+
import { ModalTransport } from "./internal/Transport.js";
|
|
10
|
+
export { withAuthToken } from "@distilled.cloud/modal/AuthToken";
|
|
11
|
+
export { Credentials, CredentialsFromEnv, DEFAULT_API_BASE_URL, } from "@distilled.cloud/modal/Credentials";
|
|
12
|
+
/**
|
|
13
|
+
* Build Modal `Credentials` that resolve through the Alchemy AuthProvider:
|
|
14
|
+
* `MODAL_TOKEN_ID` / `MODAL_TOKEN_SECRET` when set, otherwise the selected
|
|
15
|
+
* profile. Resolution is deferred until the first API call, so building the
|
|
16
|
+
* provider layers never needs a profile.
|
|
17
|
+
*/
|
|
18
|
+
export const fromAuthProvider = () => withAuthTokens(Layer.effect(Credentials, lazyCredentials()(MODAL_AUTH_PROVIDER_NAME, (creds) => ({
|
|
19
|
+
tokenId: creds.tokenId,
|
|
20
|
+
tokenSecret: creds.tokenSecret,
|
|
21
|
+
apiBaseUrl: creds.apiBaseUrl,
|
|
22
|
+
}))));
|
|
23
|
+
/**
|
|
24
|
+
* Add Modal's short-lived auth token (the `x-modal-auth-token` JWT its V2
|
|
25
|
+
* sandbox RPCs and input plane need) to a token pair's `Credentials`.
|
|
26
|
+
*/
|
|
27
|
+
export const withAuthTokens = (credentials) => withAuthToken.pipe(Layer.provide(Layer.mergeAll(credentials, ModalTransport)));
|
|
28
|
+
/**
|
|
29
|
+
* Build Modal `Credentials` from an explicit token pair, e.g. in a test or a
|
|
30
|
+
* script that already holds one.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* Effect.provide(Modal.fromToken({ tokenId: "ak-…", tokenSecret: "as-…" }))
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export const fromToken = (input) => withAuthTokens(Layer.succeed(Credentials, Effect.succeed({
|
|
38
|
+
tokenId: typeof input.tokenId === "string" ? Redacted.make(input.tokenId) : input.tokenId,
|
|
39
|
+
tokenSecret: typeof input.tokenSecret === "string"
|
|
40
|
+
? Redacted.make(input.tokenSecret)
|
|
41
|
+
: input.tokenSecret,
|
|
42
|
+
apiBaseUrl: input.apiBaseUrl ?? DEFAULT_API_BASE_URL,
|
|
43
|
+
})));
|
|
44
|
+
//# sourceMappingURL=Credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Credentials.js","sources":["../src/Credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAiC,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CACnC,cAAc,CACZ,KAAK,CAAC,MAAM,CACV,WAAW,EACX,eAAe,EAAyC,CACtD,wBAAwB,EACxB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACV,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;CAC7B,CAAC,CACH,CACF,CACF,CAAC;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,WAA2C,EACX,EAAE,CAClC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAIzB,EAA4B,EAAE,CAC7B,cAAc,CACZ,KAAK,CAAC,OAAO,CACX,WAAW,EACX,MAAM,CAAC,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;IACzF,WAAW,EACT,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACnC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAClC,CAAC,CAAC,KAAK,CAAC,WAAW;IACvB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,oBAAoB;CACrD,CAAC,CACH,CACF,CAAC"}
|
package/lib/Dict.d.ts
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import * as dict from "@distilled.cloud/modal/dict";
|
|
2
|
+
import * as Provider from "alchemy/Provider";
|
|
3
|
+
import { Resource } from "alchemy/Resource";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import { type EnvironmentInput } from "./internal.ts";
|
|
6
|
+
import type { Providers } from "./Providers.ts";
|
|
7
|
+
declare const DictUnexpectedResponse_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
8
|
+
readonly _tag: "Modal.DictUnexpectedResponse";
|
|
9
|
+
} & Readonly<A>;
|
|
10
|
+
export declare class DictUnexpectedResponse extends DictUnexpectedResponse_base<{
|
|
11
|
+
readonly message: string;
|
|
12
|
+
}> {
|
|
13
|
+
}
|
|
14
|
+
export interface DictProps {
|
|
15
|
+
/**
|
|
16
|
+
* Dict name, unique per environment. If omitted, a unique name is
|
|
17
|
+
* generated from the stack, stage and logical ID. Changing it replaces the
|
|
18
|
+
* dict (Modal can't rename dicts).
|
|
19
|
+
*/
|
|
20
|
+
name?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Environment the dict lives in. Changing it replaces the dict.
|
|
23
|
+
* @default the workspace's default environment
|
|
24
|
+
*/
|
|
25
|
+
environment?: EnvironmentInput;
|
|
26
|
+
}
|
|
27
|
+
export interface DictAttributes {
|
|
28
|
+
/** Dict ID (`di-…`). */
|
|
29
|
+
dictId: string;
|
|
30
|
+
/** Dict name. */
|
|
31
|
+
name: string;
|
|
32
|
+
/** Environment name, or `undefined` for the workspace default. */
|
|
33
|
+
environment: string | undefined;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A Modal Dict: a distributed key-value store shared by every container,
|
|
37
|
+
* Sandbox and client in the workspace. Entries expire 7 days after their
|
|
38
|
+
* last write.
|
|
39
|
+
*
|
|
40
|
+
* Bind it with {@link ReadDict}, {@link WriteDict} or {@link ReadWriteDict}
|
|
41
|
+
* to use it from a Worker, Lambda or any other runtime. Values travel as
|
|
42
|
+
* bytes: the bindings encode them as JSON by default.
|
|
43
|
+
*
|
|
44
|
+
* Modal dicts have no tags. Ownership is inferred from Alchemy state: a
|
|
45
|
+
* dict found under an explicit `name` without prior state is reported as
|
|
46
|
+
* unowned.
|
|
47
|
+
*
|
|
48
|
+
* ### Creating a Dict
|
|
49
|
+
* **Example:** A dict with a generated name
|
|
50
|
+
* ```typescript
|
|
51
|
+
* import * as Modal from "@alchemy.run/modal";
|
|
52
|
+
*
|
|
53
|
+
* export const Results = Modal.Dict("Results", {});
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* **Example:** A named dict in an environment
|
|
57
|
+
* ```typescript
|
|
58
|
+
* import * as Modal from "@alchemy.run/modal";
|
|
59
|
+
*
|
|
60
|
+
* export const Agents = Modal.Environment("Agents", {});
|
|
61
|
+
* export const Sessions = Modal.Dict("Sessions", { name: "sessions", environment: Agents });
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* ### Reading and writing from a Worker
|
|
65
|
+
* **Example:** Bind read and write access
|
|
66
|
+
* ```typescript
|
|
67
|
+
* import * as Cloudflare from "@alchemy.run/cloudflare";
|
|
68
|
+
* import * as Modal from "@alchemy.run/modal";
|
|
69
|
+
* import * as Effect from "effect/Effect";
|
|
70
|
+
* import * as HttpServerResponse from "effect/http/HttpServerResponse";
|
|
71
|
+
* import { Results } from "./Storage.ts";
|
|
72
|
+
*
|
|
73
|
+
* export default class Api extends Cloudflare.Worker<Api>()(
|
|
74
|
+
* "Api",
|
|
75
|
+
* { main: import.meta.url },
|
|
76
|
+
* Effect.gen(function* () {
|
|
77
|
+
* const results = yield* Modal.ReadWriteDict(Results);
|
|
78
|
+
* return {
|
|
79
|
+
* fetch: Effect.gen(function* () {
|
|
80
|
+
* yield* results.put("last-run", { ok: true });
|
|
81
|
+
* const last = yield* results.get("last-run");
|
|
82
|
+
* return yield* HttpServerResponse.json(last ?? null);
|
|
83
|
+
* }).pipe(Effect.orDie),
|
|
84
|
+
* };
|
|
85
|
+
* }).pipe(Effect.provide(Modal.ReadWriteDictHttp)),
|
|
86
|
+
* ) {}
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* ### Looking up an existing dict
|
|
90
|
+
* `Dict.lookup` references a dict Alchemy doesn't manage (created with
|
|
91
|
+
* the Modal CLI or by another stack). It is read during plan/deploy, never
|
|
92
|
+
* created, updated or deleted.
|
|
93
|
+
*
|
|
94
|
+
* **Example:** Reference an existing dict
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const cache = Modal.Dict.lookup({ name: "cache" });
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @resource
|
|
100
|
+
* @product Dict
|
|
101
|
+
*/
|
|
102
|
+
export declare const Dict: import("alchemy/Resource").ResourceConstructor<Dict, Providers> & Effect.Effect<import("alchemy/Resource").ResourceConstructor<Dict, never>, never, never> & {
|
|
103
|
+
Self: import("alchemy/Self").Self<Dict>;
|
|
104
|
+
Provider: Provider.Provider<Dict>;
|
|
105
|
+
Aliases: readonly string[] | undefined;
|
|
106
|
+
ref(id: string, options?: {
|
|
107
|
+
stage?: string;
|
|
108
|
+
stack?: string;
|
|
109
|
+
}): Effect.Effect<Dict, never, never>;
|
|
110
|
+
} & {
|
|
111
|
+
lookup(props: {
|
|
112
|
+
name: import("alchemy/Input").Input<string>;
|
|
113
|
+
environment?: import("alchemy/Input").Input<string | undefined>;
|
|
114
|
+
}): Dict;
|
|
115
|
+
} & ((id: string, props: import("./internal/Declared.ts").DeclaredProps<DictProps>) => Effect.Effect<Dict, never, Providers>);
|
|
116
|
+
export type Dict = Resource<"Modal.Dict", DictProps, DictAttributes, never, Providers, DictLookup>;
|
|
117
|
+
/**
|
|
118
|
+
* Props for {@link Dict.lookup}: find a dict this stack
|
|
119
|
+
* doesn't manage by its name.
|
|
120
|
+
*/
|
|
121
|
+
export interface DictLookup {
|
|
122
|
+
/** Dict name. */
|
|
123
|
+
name: string;
|
|
124
|
+
/**
|
|
125
|
+
* Modal environment the object lives in.
|
|
126
|
+
* @default the workspace's default environment
|
|
127
|
+
*/
|
|
128
|
+
environment?: string;
|
|
129
|
+
}
|
|
130
|
+
/** A dict by name, or `undefined` when missing. */
|
|
131
|
+
export declare const lookupDict: (getOrCreate: (input: dict.DictGetOrCreateRequest) => Effect.Effect<dict.DictGetOrCreateResponse, dict.DictGetOrCreateError, never>, name: string, env: string | undefined) => Effect.Effect<{
|
|
132
|
+
dictId: string;
|
|
133
|
+
name: string;
|
|
134
|
+
environment: string | undefined;
|
|
135
|
+
} | undefined, dict.DictAlreadyExists | dict.EnvironmentNotFound | dict.ModalOpError, never>;
|
|
136
|
+
/**
|
|
137
|
+
* Get a dict by name, creating it when missing: the one implementation behind
|
|
138
|
+
* {@link Dict}'s reconcile and the runtime {@link CreateDict} client.
|
|
139
|
+
*/
|
|
140
|
+
export declare const ensureDict: (getOrCreate: (input: dict.DictGetOrCreateRequest) => Effect.Effect<dict.DictGetOrCreateResponse, dict.DictGetOrCreateError, never>, name: string, env: string | undefined) => Effect.Effect<{
|
|
141
|
+
dictId: string;
|
|
142
|
+
name: string;
|
|
143
|
+
environment: string | undefined;
|
|
144
|
+
}, DictUnexpectedResponse | dict.DictGetOrCreateError, never>;
|
|
145
|
+
export declare const DictProvider: () => import("effect/Layer").Layer<Provider.Provider<Dict>, never, import("alchemy/Stack").Stack | import("alchemy/Stage").Stage | dict.ModalOpContext>;
|
|
146
|
+
export {};
|
|
147
|
+
//# sourceMappingURL=Dict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dict.d.ts","sources":["../src/Dict.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,6BAA6B,CAAC;AAGpD,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,KAAK,gBAAgB,EAOtB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;;;;AAGhD,qBAAa,sBAAuB,SAAQ,4BAAiD;IAC3F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;AAEL,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;6HAAmD,CAAC;AAErE,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAEnG;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,mDAAmD;AACnD,eAAO,MAAM,UAAU;;;;4FAYrB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;6DAcrB,CAAC;AAEH,eAAO,MAAM,YAAY,yJA6EtB,CAAC"}
|
package/lib/Dict.js
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import * as dict from "@distilled.cloud/modal/dict";
|
|
2
|
+
import { Unowned } from "alchemy/AdoptPolicy";
|
|
3
|
+
import { isResolved } from "alchemy/Diff";
|
|
4
|
+
import * as Provider from "alchemy/Provider";
|
|
5
|
+
import { Resource } from "alchemy/Resource";
|
|
6
|
+
import * as Data from "effect/Data";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import { envNameOf, environmentNames, environmentOf, isGeneratedName, listAll, objectName, } from "./internal.js";
|
|
9
|
+
import { declarable } from "./internal/Declared.js";
|
|
10
|
+
import { isRuntimeName } from "./RuntimeOwner.js";
|
|
11
|
+
export class DictUnexpectedResponse extends Data.TaggedError("Modal.DictUnexpectedResponse") {
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A Modal Dict: a distributed key-value store shared by every container,
|
|
15
|
+
* Sandbox and client in the workspace. Entries expire 7 days after their
|
|
16
|
+
* last write.
|
|
17
|
+
*
|
|
18
|
+
* Bind it with {@link ReadDict}, {@link WriteDict} or {@link ReadWriteDict}
|
|
19
|
+
* to use it from a Worker, Lambda or any other runtime. Values travel as
|
|
20
|
+
* bytes: the bindings encode them as JSON by default.
|
|
21
|
+
*
|
|
22
|
+
* Modal dicts have no tags. Ownership is inferred from Alchemy state: a
|
|
23
|
+
* dict found under an explicit `name` without prior state is reported as
|
|
24
|
+
* unowned.
|
|
25
|
+
*
|
|
26
|
+
* ### Creating a Dict
|
|
27
|
+
* **Example:** A dict with a generated name
|
|
28
|
+
* ```typescript
|
|
29
|
+
* import * as Modal from "@alchemy.run/modal";
|
|
30
|
+
*
|
|
31
|
+
* export const Results = Modal.Dict("Results", {});
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* **Example:** A named dict in an environment
|
|
35
|
+
* ```typescript
|
|
36
|
+
* import * as Modal from "@alchemy.run/modal";
|
|
37
|
+
*
|
|
38
|
+
* export const Agents = Modal.Environment("Agents", {});
|
|
39
|
+
* export const Sessions = Modal.Dict("Sessions", { name: "sessions", environment: Agents });
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* ### Reading and writing from a Worker
|
|
43
|
+
* **Example:** Bind read and write access
|
|
44
|
+
* ```typescript
|
|
45
|
+
* import * as Cloudflare from "@alchemy.run/cloudflare";
|
|
46
|
+
* import * as Modal from "@alchemy.run/modal";
|
|
47
|
+
* import * as Effect from "effect/Effect";
|
|
48
|
+
* import * as HttpServerResponse from "effect/http/HttpServerResponse";
|
|
49
|
+
* import { Results } from "./Storage.ts";
|
|
50
|
+
*
|
|
51
|
+
* export default class Api extends Cloudflare.Worker<Api>()(
|
|
52
|
+
* "Api",
|
|
53
|
+
* { main: import.meta.url },
|
|
54
|
+
* Effect.gen(function* () {
|
|
55
|
+
* const results = yield* Modal.ReadWriteDict(Results);
|
|
56
|
+
* return {
|
|
57
|
+
* fetch: Effect.gen(function* () {
|
|
58
|
+
* yield* results.put("last-run", { ok: true });
|
|
59
|
+
* const last = yield* results.get("last-run");
|
|
60
|
+
* return yield* HttpServerResponse.json(last ?? null);
|
|
61
|
+
* }).pipe(Effect.orDie),
|
|
62
|
+
* };
|
|
63
|
+
* }).pipe(Effect.provide(Modal.ReadWriteDictHttp)),
|
|
64
|
+
* ) {}
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* ### Looking up an existing dict
|
|
68
|
+
* `Dict.lookup` references a dict Alchemy doesn't manage (created with
|
|
69
|
+
* the Modal CLI or by another stack). It is read during plan/deploy, never
|
|
70
|
+
* created, updated or deleted.
|
|
71
|
+
*
|
|
72
|
+
* **Example:** Reference an existing dict
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const cache = Modal.Dict.lookup({ name: "cache" });
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @resource
|
|
78
|
+
* @product Dict
|
|
79
|
+
*/
|
|
80
|
+
export const Dict = declarable()(Resource("Modal.Dict"));
|
|
81
|
+
/** A dict by name, or `undefined` when missing. */
|
|
82
|
+
export const lookupDict = Effect.fn(function* (getOrCreate, name, env) {
|
|
83
|
+
const found = yield* getOrCreate({
|
|
84
|
+
deploymentName: name,
|
|
85
|
+
environmentName: environmentOf(env),
|
|
86
|
+
objectCreationType: "OBJECT_CREATION_TYPE_UNSPECIFIED",
|
|
87
|
+
}).pipe(Effect.catchTag("DictNotFound", () => Effect.undefined));
|
|
88
|
+
if (!found?.dictId)
|
|
89
|
+
return undefined;
|
|
90
|
+
return { dictId: found.dictId, name, environment: env };
|
|
91
|
+
});
|
|
92
|
+
/**
|
|
93
|
+
* Get a dict by name, creating it when missing: the one implementation behind
|
|
94
|
+
* {@link Dict}'s reconcile and the runtime {@link CreateDict} client.
|
|
95
|
+
*/
|
|
96
|
+
export const ensureDict = Effect.fn(function* (getOrCreate, name, env) {
|
|
97
|
+
const created = yield* getOrCreate({
|
|
98
|
+
deploymentName: name,
|
|
99
|
+
environmentName: environmentOf(env),
|
|
100
|
+
objectCreationType: "OBJECT_CREATION_TYPE_CREATE_IF_MISSING",
|
|
101
|
+
});
|
|
102
|
+
if (!created.dictId) {
|
|
103
|
+
return yield* new DictUnexpectedResponse({ message: `Modal returned no id for dict ${name}` });
|
|
104
|
+
}
|
|
105
|
+
return { dictId: created.dictId, name, environment: env };
|
|
106
|
+
});
|
|
107
|
+
export const DictProvider = () => Provider.effect(Dict, Effect.gen(function* () {
|
|
108
|
+
const observe = Effect.fn(function* (dictId, name, env) {
|
|
109
|
+
if (dictId !== undefined) {
|
|
110
|
+
const byId = yield* dict
|
|
111
|
+
.dictGetById({ dictId })
|
|
112
|
+
.pipe(Effect.catchTag("DictNotFound", () => Effect.undefined));
|
|
113
|
+
if (byId?.dictId) {
|
|
114
|
+
return {
|
|
115
|
+
dictId: byId.dictId,
|
|
116
|
+
name: byId.metadata?.name ?? name,
|
|
117
|
+
environment: env,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return yield* lookupDict(yield* dict.dictGetOrCreate, name, env);
|
|
122
|
+
});
|
|
123
|
+
return {
|
|
124
|
+
stables: ["dictId", "name", "environment"],
|
|
125
|
+
diff: Effect.fn(function* ({ id, news, olds, output }) {
|
|
126
|
+
if (!isResolved(news))
|
|
127
|
+
return undefined;
|
|
128
|
+
if (envNameOf(news.environment) !== envNameOf(olds?.environment))
|
|
129
|
+
return { action: "replace" };
|
|
130
|
+
const name = yield* objectName(id, news.name);
|
|
131
|
+
if (output !== undefined && name !== output.name)
|
|
132
|
+
return { action: "replace" };
|
|
133
|
+
return undefined;
|
|
134
|
+
}),
|
|
135
|
+
lookup: Effect.fn(function* ({ name, environment }) {
|
|
136
|
+
return yield* observe(undefined, name, environment);
|
|
137
|
+
}),
|
|
138
|
+
read: Effect.fn(function* ({ id, olds, output }) {
|
|
139
|
+
const name = output?.name ?? (yield* objectName(id, olds?.name));
|
|
140
|
+
const observed = yield* observe(output?.dictId, name, envNameOf(olds?.environment));
|
|
141
|
+
if (!observed)
|
|
142
|
+
return undefined;
|
|
143
|
+
return output !== undefined || olds?.name === undefined ? observed : Unowned(observed);
|
|
144
|
+
}),
|
|
145
|
+
reconcile: Effect.fn(function* ({ id, news, output, session }) {
|
|
146
|
+
const name = output?.name ?? (yield* objectName(id, news.name));
|
|
147
|
+
const current = yield* observe(output?.dictId, name, envNameOf(news.environment));
|
|
148
|
+
if (current)
|
|
149
|
+
return current;
|
|
150
|
+
yield* session.note(`Creating dict ${name}...`);
|
|
151
|
+
return yield* ensureDict(yield* dict.dictGetOrCreate, name, envNameOf(news.environment));
|
|
152
|
+
}),
|
|
153
|
+
delete: Effect.fn(function* ({ output }) {
|
|
154
|
+
yield* dict
|
|
155
|
+
.deleteDict({ dictId: output.dictId })
|
|
156
|
+
.pipe(Effect.catchTag("DictNotFound", () => Effect.void));
|
|
157
|
+
}),
|
|
158
|
+
list: Effect.fn(function* () {
|
|
159
|
+
const envs = yield* environmentNames;
|
|
160
|
+
const all = [];
|
|
161
|
+
for (const env of envs) {
|
|
162
|
+
const items = yield* listAll((pagination) => dict
|
|
163
|
+
.listDict({ environmentName: env, pagination })
|
|
164
|
+
.pipe(Effect.map((response) => response.dicts ?? [])), (item) => item.createdAt);
|
|
165
|
+
for (const item of items) {
|
|
166
|
+
if (!item.dictId || !(isGeneratedName(item.name) || isRuntimeName(item.name)))
|
|
167
|
+
continue;
|
|
168
|
+
all.push({ dictId: item.dictId, name: item.name ?? "", environment: env });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return all;
|
|
172
|
+
}),
|
|
173
|
+
};
|
|
174
|
+
}));
|
|
175
|
+
//# sourceMappingURL=Dict.js.map
|
package/lib/Dict.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dict.js","sources":["../src/Dict.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as dict from "@distilled.cloud/modal/dict";
|
|
2
|
+
import type { RuntimeContext } from "alchemy/RuntimeContext";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import { type ModalValueNotJson } from "./BindingHttp.ts";
|
|
5
|
+
import { type OpError } from "./internal.ts";
|
|
6
|
+
/** The dict operations the clients call, resolved by `ModalBindings.withCredentials`. */
|
|
7
|
+
export declare const DictOps: Effect.Effect<{
|
|
8
|
+
readonly clearDict: (input: dict.ClearDictRequest) => Effect.Effect<dict.ClearDictResponse, dict.ClearDictError, never>;
|
|
9
|
+
readonly dictContains: (input: dict.DictContainsRequest) => Effect.Effect<dict.DictContainsResponse, dict.DictContainsError, never>;
|
|
10
|
+
readonly dictContents: import("@distilled.cloud/core/api").StreamingCall<dict.DictContentsRequest, dict.DictContentsStream, dict.DictContentsError, never, dict.DictEntry>;
|
|
11
|
+
readonly dictLen: (input: dict.DictLenRequest) => Effect.Effect<dict.DictLenResponse, dict.DictLenError, never>;
|
|
12
|
+
readonly dictPop: (input: dict.DictPopRequest) => Effect.Effect<dict.DictPopResponse, dict.DictPopError, never>;
|
|
13
|
+
readonly getDict: (input: dict.GetDictRequest) => Effect.Effect<dict.GetDictResponse, dict.GetDictError, never>;
|
|
14
|
+
readonly updateDict: (input: dict.UpdateDictRequest) => Effect.Effect<dict.UpdateDictResponse, dict.UpdateDictError, never>;
|
|
15
|
+
}, never, import("./internal.ts").OperationServices>;
|
|
16
|
+
export type DictOps = Effect.Success<typeof DictOps>;
|
|
17
|
+
/** A dict call's error: the operation's typed errors, and values that aren't JSON. */
|
|
18
|
+
export type DictError<K extends keyof DictOps> = OpError<DictOps, K> | ModalValueNotJson;
|
|
19
|
+
/**
|
|
20
|
+
* Read access to one dict. Keys and values are JSON: `put("a", { n: 1 })`
|
|
21
|
+
* stores the bytes of `JSON.stringify`, so Python code reads them with
|
|
22
|
+
* `json.loads` (Modal's Python client pickles by default).
|
|
23
|
+
*/
|
|
24
|
+
export interface ReadDictClient {
|
|
25
|
+
readonly dictId: Effect.Effect<string>;
|
|
26
|
+
/** The value under `key`, or `undefined`. */
|
|
27
|
+
get<A = unknown>(key: unknown): Effect.Effect<A | undefined, DictError<"getDict">, RuntimeContext>;
|
|
28
|
+
/** Whether `key` is present. */
|
|
29
|
+
contains(key: unknown): Effect.Effect<boolean, OpError<DictOps, "dictContains">, RuntimeContext>;
|
|
30
|
+
/** Number of entries. */
|
|
31
|
+
len(): Effect.Effect<number, OpError<DictOps, "dictLen">, RuntimeContext>;
|
|
32
|
+
/** Every entry. */
|
|
33
|
+
entries<A = unknown>(): Effect.Effect<ReadonlyArray<readonly [unknown, A]>, DictError<"dictContents">, RuntimeContext>;
|
|
34
|
+
}
|
|
35
|
+
/** Write access to one dict. */
|
|
36
|
+
export interface WriteDictClient {
|
|
37
|
+
readonly dictId: Effect.Effect<string>;
|
|
38
|
+
/** Set `key` to `value`; with `ifNotExists`, only when absent (returns whether it wrote). */
|
|
39
|
+
put(key: unknown, value: unknown, options?: {
|
|
40
|
+
readonly ifNotExists?: boolean;
|
|
41
|
+
}): Effect.Effect<boolean, OpError<DictOps, "updateDict">, RuntimeContext>;
|
|
42
|
+
/** Set many entries at once. */
|
|
43
|
+
update(entries: Iterable<readonly [unknown, unknown]>): Effect.Effect<void, OpError<DictOps, "updateDict">, RuntimeContext>;
|
|
44
|
+
/** Remove `key` and return its value, or `undefined`. */
|
|
45
|
+
pop<A = unknown>(key: unknown): Effect.Effect<A | undefined, DictError<"dictPop">, RuntimeContext>;
|
|
46
|
+
/** Remove every entry. */
|
|
47
|
+
clear(): Effect.Effect<void, OpError<DictOps, "clearDict">, RuntimeContext>;
|
|
48
|
+
}
|
|
49
|
+
/** Read and write access to one dict. */
|
|
50
|
+
export interface ReadWriteDictClient extends ReadDictClient, WriteDictClient {
|
|
51
|
+
}
|
|
52
|
+
export declare const makeReadDictClient: (dictId: Effect.Effect<string>, ops: DictOps) => ReadDictClient;
|
|
53
|
+
export declare const makeWriteDictClient: (dictId: Effect.Effect<string>, ops: DictOps) => WriteDictClient;
|
|
54
|
+
export declare const makeReadWriteDictClient: (dictId: Effect.Effect<string>, ops: DictOps) => ReadWriteDictClient;
|
|
55
|
+
//# sourceMappingURL=DictClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DictClient.d.ts","sources":["../src/DictClient.ts"],"names":[],"mappings":"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"}
|