@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.
Files changed (499) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +96 -4
  3. package/lib/App.d.ts +143 -0
  4. package/lib/App.d.ts.map +1 -0
  5. package/lib/App.js +198 -0
  6. package/lib/App.js.map +1 -0
  7. package/lib/AuthProvider.d.ts +53 -0
  8. package/lib/AuthProvider.d.ts.map +1 -0
  9. package/lib/AuthProvider.js +209 -0
  10. package/lib/AuthProvider.js.map +1 -0
  11. package/lib/BindingHttp.d.ts +56 -0
  12. package/lib/BindingHttp.d.ts.map +1 -0
  13. package/lib/BindingHttp.js +50 -0
  14. package/lib/BindingHttp.js.map +1 -0
  15. package/lib/Blob.d.ts +34 -0
  16. package/lib/Blob.d.ts.map +1 -0
  17. package/lib/Blob.js +59 -0
  18. package/lib/Blob.js.map +1 -0
  19. package/lib/Bootstrap.d.ts +8 -0
  20. package/lib/Bootstrap.d.ts.map +1 -0
  21. package/lib/Bootstrap.js +26 -0
  22. package/lib/Bootstrap.js.map +1 -0
  23. package/lib/Cbor.d.ts +10 -0
  24. package/lib/Cbor.d.ts.map +1 -0
  25. package/lib/Cbor.js +177 -0
  26. package/lib/Cbor.js.map +1 -0
  27. package/lib/ConnectSandbox.d.ts +64 -0
  28. package/lib/ConnectSandbox.d.ts.map +1 -0
  29. package/lib/ConnectSandbox.js +33 -0
  30. package/lib/ConnectSandbox.js.map +1 -0
  31. package/lib/Container.d.ts +124 -0
  32. package/lib/Container.d.ts.map +1 -0
  33. package/lib/Container.js +1 -0
  34. package/lib/Container.js.map +1 -0
  35. package/lib/Contributions.d.ts +7 -0
  36. package/lib/Contributions.d.ts.map +1 -0
  37. package/lib/Contributions.js +6 -0
  38. package/lib/Contributions.js.map +1 -0
  39. package/lib/CreateDict.d.ts +83 -0
  40. package/lib/CreateDict.d.ts.map +1 -0
  41. package/lib/CreateDict.js +3 -0
  42. package/lib/CreateDict.js.map +1 -0
  43. package/lib/CreateDictHttp.d.ts +33 -0
  44. package/lib/CreateDictHttp.d.ts.map +1 -0
  45. package/lib/CreateDictHttp.js +67 -0
  46. package/lib/CreateDictHttp.js.map +1 -0
  47. package/lib/CreateImage.d.ts +98 -0
  48. package/lib/CreateImage.d.ts.map +1 -0
  49. package/lib/CreateImage.js +3 -0
  50. package/lib/CreateImage.js.map +1 -0
  51. package/lib/CreateImageHttp.d.ts +51 -0
  52. package/lib/CreateImageHttp.d.ts.map +1 -0
  53. package/lib/CreateImageHttp.js +87 -0
  54. package/lib/CreateImageHttp.js.map +1 -0
  55. package/lib/CreateQueue.d.ts +83 -0
  56. package/lib/CreateQueue.d.ts.map +1 -0
  57. package/lib/CreateQueue.js +3 -0
  58. package/lib/CreateQueue.js.map +1 -0
  59. package/lib/CreateQueueHttp.d.ts +31 -0
  60. package/lib/CreateQueueHttp.d.ts.map +1 -0
  61. package/lib/CreateQueueHttp.js +67 -0
  62. package/lib/CreateQueueHttp.js.map +1 -0
  63. package/lib/CreateSandbox.d.ts +186 -0
  64. package/lib/CreateSandbox.d.ts.map +1 -0
  65. package/lib/CreateSandbox.js +3 -0
  66. package/lib/CreateSandbox.js.map +1 -0
  67. package/lib/CreateSandboxHttp.d.ts +17 -0
  68. package/lib/CreateSandboxHttp.d.ts.map +1 -0
  69. package/lib/CreateSandboxHttp.js +117 -0
  70. package/lib/CreateSandboxHttp.js.map +1 -0
  71. package/lib/CreateSecret.d.ts +95 -0
  72. package/lib/CreateSecret.d.ts.map +1 -0
  73. package/lib/CreateSecret.js +3 -0
  74. package/lib/CreateSecret.js.map +1 -0
  75. package/lib/CreateSecretHttp.d.ts +24 -0
  76. package/lib/CreateSecretHttp.d.ts.map +1 -0
  77. package/lib/CreateSecretHttp.js +60 -0
  78. package/lib/CreateSecretHttp.js.map +1 -0
  79. package/lib/CreateVolume.d.ts +84 -0
  80. package/lib/CreateVolume.d.ts.map +1 -0
  81. package/lib/CreateVolume.js +3 -0
  82. package/lib/CreateVolume.js.map +1 -0
  83. package/lib/CreateVolumeHttp.d.ts +32 -0
  84. package/lib/CreateVolumeHttp.d.ts.map +1 -0
  85. package/lib/CreateVolumeHttp.js +69 -0
  86. package/lib/CreateVolumeHttp.js.map +1 -0
  87. package/lib/Credentials.d.ts +32 -0
  88. package/lib/Credentials.d.ts.map +1 -0
  89. package/lib/Credentials.js +44 -0
  90. package/lib/Credentials.js.map +1 -0
  91. package/lib/Dict.d.ts +147 -0
  92. package/lib/Dict.d.ts.map +1 -0
  93. package/lib/Dict.js +175 -0
  94. package/lib/Dict.js.map +1 -0
  95. package/lib/DictClient.d.ts +55 -0
  96. package/lib/DictClient.d.ts.map +1 -0
  97. package/lib/DictClient.js +89 -0
  98. package/lib/DictClient.js.map +1 -0
  99. package/lib/Domain.d.ts +86 -0
  100. package/lib/Domain.d.ts.map +1 -0
  101. package/lib/Domain.js +113 -0
  102. package/lib/Domain.js.map +1 -0
  103. package/lib/Endpoint.d.ts +181 -0
  104. package/lib/Endpoint.d.ts.map +1 -0
  105. package/lib/Endpoint.js +283 -0
  106. package/lib/Endpoint.js.map +1 -0
  107. package/lib/Environment.d.ts +174 -0
  108. package/lib/Environment.d.ts.map +1 -0
  109. package/lib/Environment.js +244 -0
  110. package/lib/Environment.js.map +1 -0
  111. package/lib/FetchServer.d.ts +105 -0
  112. package/lib/FetchServer.d.ts.map +1 -0
  113. package/lib/FetchServer.js +3 -0
  114. package/lib/FetchServer.js.map +1 -0
  115. package/lib/FetchServerHttp.d.ts +21 -0
  116. package/lib/FetchServerHttp.d.ts.map +1 -0
  117. package/lib/FetchServerHttp.js +84 -0
  118. package/lib/FetchServerHttp.js.map +1 -0
  119. package/lib/Function.d.ts +236 -0
  120. package/lib/Function.d.ts.map +1 -0
  121. package/lib/Function.js +273 -0
  122. package/lib/Function.js.map +1 -0
  123. package/lib/FunctionAutoscaler.d.ts +99 -0
  124. package/lib/FunctionAutoscaler.d.ts.map +1 -0
  125. package/lib/FunctionAutoscaler.js +136 -0
  126. package/lib/FunctionAutoscaler.js.map +1 -0
  127. package/lib/FunctionTarget.d.ts +61 -0
  128. package/lib/FunctionTarget.d.ts.map +1 -0
  129. package/lib/FunctionTarget.js +136 -0
  130. package/lib/FunctionTarget.js.map +1 -0
  131. package/lib/Image.d.ts +159 -0
  132. package/lib/Image.d.ts.map +1 -0
  133. package/lib/Image.js +203 -0
  134. package/lib/Image.js.map +1 -0
  135. package/lib/ImageBuild.d.ts +108 -0
  136. package/lib/ImageBuild.d.ts.map +1 -0
  137. package/lib/ImageBuild.js +157 -0
  138. package/lib/ImageBuild.js.map +1 -0
  139. package/lib/ImagePlan.d.ts +31 -0
  140. package/lib/ImagePlan.d.ts.map +1 -0
  141. package/lib/ImagePlan.js +70 -0
  142. package/lib/ImagePlan.js.map +1 -0
  143. package/lib/InferEnv.d.ts +26 -0
  144. package/lib/InferEnv.d.ts.map +1 -0
  145. package/lib/InferEnv.js +1 -0
  146. package/lib/InferEnv.js.map +1 -0
  147. package/lib/InvokeFunction.d.ts +186 -0
  148. package/lib/InvokeFunction.d.ts.map +1 -0
  149. package/lib/InvokeFunction.js +10 -0
  150. package/lib/InvokeFunction.js.map +1 -0
  151. package/lib/InvokeFunctionHttp.d.ts +39 -0
  152. package/lib/InvokeFunctionHttp.d.ts.map +1 -0
  153. package/lib/InvokeFunctionHttp.js +210 -0
  154. package/lib/InvokeFunctionHttp.js.map +1 -0
  155. package/lib/ModalBindings.d.ts +138 -0
  156. package/lib/ModalBindings.d.ts.map +1 -0
  157. package/lib/ModalBindings.js +223 -0
  158. package/lib/ModalBindings.js.map +1 -0
  159. package/lib/MountBucket.d.ts +80 -0
  160. package/lib/MountBucket.d.ts.map +1 -0
  161. package/lib/MountBucket.js +44 -0
  162. package/lib/MountBucket.js.map +1 -0
  163. package/lib/MountVolume.d.ts +77 -0
  164. package/lib/MountVolume.d.ts.map +1 -0
  165. package/lib/MountVolume.js +41 -0
  166. package/lib/MountVolume.js.map +1 -0
  167. package/lib/Mounts.d.ts +134 -0
  168. package/lib/Mounts.d.ts.map +1 -0
  169. package/lib/Mounts.js +87 -0
  170. package/lib/Mounts.js.map +1 -0
  171. package/lib/PersistentSandbox.d.ts +75 -0
  172. package/lib/PersistentSandbox.d.ts.map +1 -0
  173. package/lib/PersistentSandbox.js +93 -0
  174. package/lib/PersistentSandbox.js.map +1 -0
  175. package/lib/Providers.d.ts +23 -0
  176. package/lib/Providers.d.ts.map +1 -0
  177. package/lib/Providers.js +64 -0
  178. package/lib/Providers.js.map +1 -0
  179. package/lib/Proxy.d.ts +94 -0
  180. package/lib/Proxy.d.ts.map +1 -0
  181. package/lib/Proxy.js +132 -0
  182. package/lib/Proxy.js.map +1 -0
  183. package/lib/Queue.d.ts +147 -0
  184. package/lib/Queue.d.ts.map +1 -0
  185. package/lib/Queue.js +177 -0
  186. package/lib/Queue.js.map +1 -0
  187. package/lib/QueueClient.d.ts +64 -0
  188. package/lib/QueueClient.d.ts.map +1 -0
  189. package/lib/QueueClient.js +73 -0
  190. package/lib/QueueClient.js.map +1 -0
  191. package/lib/ReadApp.d.ts +85 -0
  192. package/lib/ReadApp.d.ts.map +1 -0
  193. package/lib/ReadApp.js +3 -0
  194. package/lib/ReadApp.js.map +1 -0
  195. package/lib/ReadAppHttp.d.ts +26 -0
  196. package/lib/ReadAppHttp.d.ts.map +1 -0
  197. package/lib/ReadAppHttp.js +106 -0
  198. package/lib/ReadAppHttp.js.map +1 -0
  199. package/lib/ReadDict.d.ts +39 -0
  200. package/lib/ReadDict.d.ts.map +1 -0
  201. package/lib/ReadDict.js +3 -0
  202. package/lib/ReadDict.js.map +1 -0
  203. package/lib/ReadDictHttp.d.ts +12 -0
  204. package/lib/ReadDictHttp.d.ts.map +1 -0
  205. package/lib/ReadDictHttp.js +23 -0
  206. package/lib/ReadDictHttp.js.map +1 -0
  207. package/lib/ReadFunction.d.ts +73 -0
  208. package/lib/ReadFunction.d.ts.map +1 -0
  209. package/lib/ReadFunction.js +3 -0
  210. package/lib/ReadFunction.js.map +1 -0
  211. package/lib/ReadFunctionHttp.d.ts +25 -0
  212. package/lib/ReadFunctionHttp.d.ts.map +1 -0
  213. package/lib/ReadFunctionHttp.js +63 -0
  214. package/lib/ReadFunctionHttp.js.map +1 -0
  215. package/lib/ReadQueue.d.ts +39 -0
  216. package/lib/ReadQueue.d.ts.map +1 -0
  217. package/lib/ReadQueue.js +3 -0
  218. package/lib/ReadQueue.js.map +1 -0
  219. package/lib/ReadQueueHttp.d.ts +12 -0
  220. package/lib/ReadQueueHttp.d.ts.map +1 -0
  221. package/lib/ReadQueueHttp.js +23 -0
  222. package/lib/ReadQueueHttp.js.map +1 -0
  223. package/lib/ReadServer.d.ts +72 -0
  224. package/lib/ReadServer.d.ts.map +1 -0
  225. package/lib/ReadServer.js +3 -0
  226. package/lib/ReadServer.js.map +1 -0
  227. package/lib/ReadServerHttp.d.ts +25 -0
  228. package/lib/ReadServerHttp.d.ts.map +1 -0
  229. package/lib/ReadServerHttp.js +70 -0
  230. package/lib/ReadServerHttp.js.map +1 -0
  231. package/lib/ReadVolume.d.ts +40 -0
  232. package/lib/ReadVolume.d.ts.map +1 -0
  233. package/lib/ReadVolume.js +3 -0
  234. package/lib/ReadVolume.js.map +1 -0
  235. package/lib/ReadVolumeHttp.d.ts +12 -0
  236. package/lib/ReadVolumeHttp.d.ts.map +1 -0
  237. package/lib/ReadVolumeHttp.js +24 -0
  238. package/lib/ReadVolumeHttp.js.map +1 -0
  239. package/lib/ReadWriteDict.d.ts +39 -0
  240. package/lib/ReadWriteDict.d.ts.map +1 -0
  241. package/lib/ReadWriteDict.js +3 -0
  242. package/lib/ReadWriteDict.js.map +1 -0
  243. package/lib/ReadWriteDictHttp.d.ts +12 -0
  244. package/lib/ReadWriteDictHttp.d.ts.map +1 -0
  245. package/lib/ReadWriteDictHttp.js +23 -0
  246. package/lib/ReadWriteDictHttp.js.map +1 -0
  247. package/lib/ReadWriteQueue.d.ts +40 -0
  248. package/lib/ReadWriteQueue.d.ts.map +1 -0
  249. package/lib/ReadWriteQueue.js +3 -0
  250. package/lib/ReadWriteQueue.js.map +1 -0
  251. package/lib/ReadWriteQueueHttp.d.ts +12 -0
  252. package/lib/ReadWriteQueueHttp.d.ts.map +1 -0
  253. package/lib/ReadWriteQueueHttp.js +23 -0
  254. package/lib/ReadWriteQueueHttp.js.map +1 -0
  255. package/lib/ReadWriteVolume.d.ts +40 -0
  256. package/lib/ReadWriteVolume.d.ts.map +1 -0
  257. package/lib/ReadWriteVolume.js +3 -0
  258. package/lib/ReadWriteVolume.js.map +1 -0
  259. package/lib/ReadWriteVolumeHttp.d.ts +12 -0
  260. package/lib/ReadWriteVolumeHttp.d.ts.map +1 -0
  261. package/lib/ReadWriteVolumeHttp.js +24 -0
  262. package/lib/ReadWriteVolumeHttp.js.map +1 -0
  263. package/lib/RuntimeOwner.d.ts +39 -0
  264. package/lib/RuntimeOwner.d.ts.map +1 -0
  265. package/lib/RuntimeOwner.js +85 -0
  266. package/lib/RuntimeOwner.js.map +1 -0
  267. package/lib/Sandbox.d.ts +215 -0
  268. package/lib/Sandbox.d.ts.map +1 -0
  269. package/lib/Sandbox.js +278 -0
  270. package/lib/Sandbox.js.map +1 -0
  271. package/lib/SandboxClient.d.ts +748 -0
  272. package/lib/SandboxClient.d.ts.map +1 -0
  273. package/lib/SandboxClient.js +710 -0
  274. package/lib/SandboxClient.js.map +1 -0
  275. package/lib/ScaleFunction.d.ts +54 -0
  276. package/lib/ScaleFunction.d.ts.map +1 -0
  277. package/lib/ScaleFunction.js +3 -0
  278. package/lib/ScaleFunction.js.map +1 -0
  279. package/lib/ScaleFunctionHttp.d.ts +21 -0
  280. package/lib/ScaleFunctionHttp.d.ts.map +1 -0
  281. package/lib/ScaleFunctionHttp.js +39 -0
  282. package/lib/ScaleFunctionHttp.js.map +1 -0
  283. package/lib/Secret.d.ts +170 -0
  284. package/lib/Secret.d.ts.map +1 -0
  285. package/lib/Secret.js +196 -0
  286. package/lib/Secret.js.map +1 -0
  287. package/lib/Server.d.ts +155 -0
  288. package/lib/Server.d.ts.map +1 -0
  289. package/lib/Server.js +184 -0
  290. package/lib/Server.js.map +1 -0
  291. package/lib/ServiceUser.d.ts +139 -0
  292. package/lib/ServiceUser.d.ts.map +1 -0
  293. package/lib/ServiceUser.js +210 -0
  294. package/lib/ServiceUser.js.map +1 -0
  295. package/lib/Volume.d.ts +170 -0
  296. package/lib/Volume.d.ts.map +1 -0
  297. package/lib/Volume.js +220 -0
  298. package/lib/Volume.js.map +1 -0
  299. package/lib/VolumeClient.d.ts +53 -0
  300. package/lib/VolumeClient.d.ts.map +1 -0
  301. package/lib/VolumeClient.js +22 -0
  302. package/lib/VolumeClient.js.map +1 -0
  303. package/lib/VolumeFiles.d.ts +94 -0
  304. package/lib/VolumeFiles.d.ts.map +1 -0
  305. package/lib/VolumeFiles.js +139 -0
  306. package/lib/VolumeFiles.js.map +1 -0
  307. package/lib/WebhookToken.d.ts +102 -0
  308. package/lib/WebhookToken.d.ts.map +1 -0
  309. package/lib/WebhookToken.js +176 -0
  310. package/lib/WebhookToken.js.map +1 -0
  311. package/lib/WorkspaceSettings.d.ts +70 -0
  312. package/lib/WorkspaceSettings.d.ts.map +1 -0
  313. package/lib/WorkspaceSettings.js +105 -0
  314. package/lib/WorkspaceSettings.js.map +1 -0
  315. package/lib/WriteApp.d.ts +38 -0
  316. package/lib/WriteApp.d.ts.map +1 -0
  317. package/lib/WriteApp.js +3 -0
  318. package/lib/WriteApp.js.map +1 -0
  319. package/lib/WriteAppHttp.d.ts +23 -0
  320. package/lib/WriteAppHttp.d.ts.map +1 -0
  321. package/lib/WriteAppHttp.js +36 -0
  322. package/lib/WriteAppHttp.js.map +1 -0
  323. package/lib/WriteDict.d.ts +39 -0
  324. package/lib/WriteDict.d.ts.map +1 -0
  325. package/lib/WriteDict.js +3 -0
  326. package/lib/WriteDict.js.map +1 -0
  327. package/lib/WriteDictHttp.d.ts +12 -0
  328. package/lib/WriteDictHttp.d.ts.map +1 -0
  329. package/lib/WriteDictHttp.js +23 -0
  330. package/lib/WriteDictHttp.js.map +1 -0
  331. package/lib/WriteQueue.d.ts +39 -0
  332. package/lib/WriteQueue.d.ts.map +1 -0
  333. package/lib/WriteQueue.js +3 -0
  334. package/lib/WriteQueue.js.map +1 -0
  335. package/lib/WriteQueueHttp.d.ts +12 -0
  336. package/lib/WriteQueueHttp.d.ts.map +1 -0
  337. package/lib/WriteQueueHttp.js +23 -0
  338. package/lib/WriteQueueHttp.js.map +1 -0
  339. package/lib/WriteSecret.d.ts +53 -0
  340. package/lib/WriteSecret.d.ts.map +1 -0
  341. package/lib/WriteSecret.js +3 -0
  342. package/lib/WriteSecret.js.map +1 -0
  343. package/lib/WriteSecretHttp.d.ts +23 -0
  344. package/lib/WriteSecretHttp.d.ts.map +1 -0
  345. package/lib/WriteSecretHttp.js +44 -0
  346. package/lib/WriteSecretHttp.js.map +1 -0
  347. package/lib/WriteVolume.d.ts +39 -0
  348. package/lib/WriteVolume.d.ts.map +1 -0
  349. package/lib/WriteVolume.js +3 -0
  350. package/lib/WriteVolume.js.map +1 -0
  351. package/lib/WriteVolumeHttp.d.ts +12 -0
  352. package/lib/WriteVolumeHttp.d.ts.map +1 -0
  353. package/lib/WriteVolumeHttp.js +24 -0
  354. package/lib/WriteVolumeHttp.js.map +1 -0
  355. package/lib/index.d.ts +80 -0
  356. package/lib/index.d.ts.map +1 -0
  357. package/lib/index.js +78 -0
  358. package/lib/index.js.map +1 -0
  359. package/lib/internal/Declared.d.ts +29 -0
  360. package/lib/internal/Declared.d.ts.map +1 -0
  361. package/lib/internal/Declared.js +31 -0
  362. package/lib/internal/Declared.js.map +1 -0
  363. package/lib/internal/Deploy.d.ts +110 -0
  364. package/lib/internal/Deploy.d.ts.map +1 -0
  365. package/lib/internal/Deploy.js +230 -0
  366. package/lib/internal/Deploy.js.map +1 -0
  367. package/lib/internal/Entrypoint.d.ts +52 -0
  368. package/lib/internal/Entrypoint.d.ts.map +1 -0
  369. package/lib/internal/Entrypoint.js +193 -0
  370. package/lib/internal/Entrypoint.js.map +1 -0
  371. package/lib/internal/Rpc.d.ts +17 -0
  372. package/lib/internal/Rpc.d.ts.map +1 -0
  373. package/lib/internal/Rpc.js +49 -0
  374. package/lib/internal/Rpc.js.map +1 -0
  375. package/lib/internal/RpcAuth.d.ts +41 -0
  376. package/lib/internal/RpcAuth.d.ts.map +1 -0
  377. package/lib/internal/RpcAuth.js +100 -0
  378. package/lib/internal/RpcAuth.js.map +1 -0
  379. package/lib/internal/Runtime.d.ts +127 -0
  380. package/lib/internal/Runtime.d.ts.map +1 -0
  381. package/lib/internal/Runtime.js +246 -0
  382. package/lib/internal/Runtime.js.map +1 -0
  383. package/lib/internal/Tags.d.ts +19 -0
  384. package/lib/internal/Tags.d.ts.map +1 -0
  385. package/lib/internal/Tags.js +33 -0
  386. package/lib/internal/Tags.js.map +1 -0
  387. package/lib/internal/TcpConnect.d.ts +12 -0
  388. package/lib/internal/TcpConnect.d.ts.map +1 -0
  389. package/lib/internal/TcpConnect.js +46 -0
  390. package/lib/internal/TcpConnect.js.map +1 -0
  391. package/lib/internal/Transport.d.ts +13 -0
  392. package/lib/internal/Transport.d.ts.map +1 -0
  393. package/lib/internal/Transport.js +16 -0
  394. package/lib/internal/Transport.js.map +1 -0
  395. package/lib/internal.d.ts +71 -0
  396. package/lib/internal.d.ts.map +1 -0
  397. package/lib/internal.js +102 -0
  398. package/lib/internal.js.map +1 -0
  399. package/package.json +59 -3
  400. package/src/App.ts +262 -0
  401. package/src/AuthProvider.ts +295 -0
  402. package/src/BindingHttp.ts +112 -0
  403. package/src/Blob.ts +71 -0
  404. package/src/Bootstrap.ts +52 -0
  405. package/src/Cbor.ts +158 -0
  406. package/src/ConnectSandbox.ts +99 -0
  407. package/src/Container.ts +121 -0
  408. package/src/Contributions.ts +9 -0
  409. package/src/CreateDict.ts +95 -0
  410. package/src/CreateDictHttp.ts +91 -0
  411. package/src/CreateImage.ts +105 -0
  412. package/src/CreateImageHttp.ts +117 -0
  413. package/src/CreateQueue.ts +95 -0
  414. package/src/CreateQueueHttp.ts +91 -0
  415. package/src/CreateSandbox.ts +228 -0
  416. package/src/CreateSandboxHttp.ts +160 -0
  417. package/src/CreateSecret.ts +109 -0
  418. package/src/CreateSecretHttp.ts +83 -0
  419. package/src/CreateVolume.ts +96 -0
  420. package/src/CreateVolumeHttp.ts +93 -0
  421. package/src/Credentials.ts +74 -0
  422. package/src/Dict.ts +245 -0
  423. package/src/DictClient.ts +166 -0
  424. package/src/Domain.ts +147 -0
  425. package/src/Endpoint.ts +406 -0
  426. package/src/Environment.ts +373 -0
  427. package/src/FetchServer.ts +126 -0
  428. package/src/FetchServerHttp.ts +110 -0
  429. package/src/Function.ts +397 -0
  430. package/src/FunctionAutoscaler.ts +210 -0
  431. package/src/FunctionTarget.ts +181 -0
  432. package/src/Image.ts +281 -0
  433. package/src/ImageBuild.ts +228 -0
  434. package/src/ImagePlan.ts +78 -0
  435. package/src/InferEnv.ts +27 -0
  436. package/src/InvokeFunction.ts +211 -0
  437. package/src/InvokeFunctionHttp.ts +316 -0
  438. package/src/ModalBindings.ts +310 -0
  439. package/src/MountBucket.ts +137 -0
  440. package/src/MountVolume.ts +113 -0
  441. package/src/Mounts.ts +230 -0
  442. package/src/PersistentSandbox.ts +142 -0
  443. package/src/Providers.ts +100 -0
  444. package/src/Proxy.ts +191 -0
  445. package/src/Queue.ts +258 -0
  446. package/src/QueueClient.ts +149 -0
  447. package/src/ReadApp.ts +101 -0
  448. package/src/ReadAppHttp.ts +142 -0
  449. package/src/ReadDict.ts +44 -0
  450. package/src/ReadDictHttp.ts +27 -0
  451. package/src/ReadFunction.ts +107 -0
  452. package/src/ReadFunctionHttp.ts +91 -0
  453. package/src/ReadQueue.ts +44 -0
  454. package/src/ReadQueueHttp.ts +27 -0
  455. package/src/ReadServer.ts +98 -0
  456. package/src/ReadServerHttp.ts +101 -0
  457. package/src/ReadVolume.ts +45 -0
  458. package/src/ReadVolumeHttp.ts +28 -0
  459. package/src/ReadWriteDict.ts +44 -0
  460. package/src/ReadWriteDictHttp.ts +27 -0
  461. package/src/ReadWriteQueue.ts +45 -0
  462. package/src/ReadWriteQueueHttp.ts +27 -0
  463. package/src/ReadWriteVolume.ts +45 -0
  464. package/src/ReadWriteVolumeHttp.ts +28 -0
  465. package/src/RuntimeOwner.ts +111 -0
  466. package/src/Sandbox.ts +402 -0
  467. package/src/SandboxClient.ts +1404 -0
  468. package/src/ScaleFunction.ts +70 -0
  469. package/src/ScaleFunctionHttp.ts +54 -0
  470. package/src/Secret.ts +296 -0
  471. package/src/Server.ts +285 -0
  472. package/src/ServiceUser.ts +295 -0
  473. package/src/Volume.ts +320 -0
  474. package/src/VolumeClient.ts +108 -0
  475. package/src/VolumeFiles.ts +194 -0
  476. package/src/WebhookToken.ts +230 -0
  477. package/src/WorkspaceSettings.ts +160 -0
  478. package/src/WriteApp.ts +43 -0
  479. package/src/WriteAppHttp.ts +51 -0
  480. package/src/WriteDict.ts +44 -0
  481. package/src/WriteDictHttp.ts +27 -0
  482. package/src/WriteQueue.ts +44 -0
  483. package/src/WriteQueueHttp.ts +27 -0
  484. package/src/WriteSecret.ts +60 -0
  485. package/src/WriteSecretHttp.ts +56 -0
  486. package/src/WriteVolume.ts +44 -0
  487. package/src/WriteVolumeHttp.ts +28 -0
  488. package/src/globals.d.ts +2 -0
  489. package/src/index.ts +85 -0
  490. package/src/internal/Declared.ts +80 -0
  491. package/src/internal/Deploy.ts +309 -0
  492. package/src/internal/Entrypoint.ts +198 -0
  493. package/src/internal/Rpc.ts +59 -0
  494. package/src/internal/RpcAuth.ts +132 -0
  495. package/src/internal/Runtime.ts +386 -0
  496. package/src/internal/Tags.ts +44 -0
  497. package/src/internal/TcpConnect.ts +78 -0
  498. package/src/internal/Transport.ts +25 -0
  499. package/src/internal.ts +147 -0
@@ -0,0 +1,283 @@
1
+ import * as endpoint from "@distilled.cloud/modal/endpoint";
2
+ import { Unowned } from "alchemy/AdoptPolicy";
3
+ import { deepEqual, 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 * as Redacted from "effect/Redacted";
9
+ import * as Schedule from "effect/Schedule";
10
+ import { environmentNames, envNameOf, environmentOf, isGeneratedName, listAll, objectName, } from "./internal.js";
11
+ import { declarable } from "./internal/Declared.js";
12
+ /** Provisioning failed, was cancelled, or didn't finish in time. */
13
+ export class EndpointProvisioningFailed extends Data.TaggedError("Modal.EndpointProvisioningFailed") {
14
+ }
15
+ /**
16
+ * A Modal Endpoint: a managed model server that speaks the OpenAI Chat
17
+ * Completions, OpenAI Responses or Anthropic Messages API, from a catalog
18
+ * model, a Hugging Face repo, or weights on a Modal Volume.
19
+ *
20
+ * Reconcile waits until the endpoint is live, which takes minutes while the
21
+ * model loads. Modal can't change an endpoint in place, so any change
22
+ * replaces it.
23
+ *
24
+ * :::caution
25
+ * A dedicated endpoint reserves GPUs and is billed while it runs. Destroy it
26
+ * (or use `servingMode: "shared"`) when you're done.
27
+ * :::
28
+ *
29
+ * ### Serving a model
30
+ * **Example:** A catalog model behind the OpenAI API
31
+ * ```typescript
32
+ * import * as Modal from "@alchemy.run/modal";
33
+ *
34
+ * export const Qwen = Modal.Endpoint("Qwen", {
35
+ * model: { repoId: "Qwen/Qwen3-8B" },
36
+ * apis: ["openai-chat-completions", "anthropic-messages"],
37
+ * });
38
+ * ```
39
+ *
40
+ * **Example:** Fine-tuned weights from a Volume
41
+ * ```typescript
42
+ * import * as Modal from "@alchemy.run/modal";
43
+ *
44
+ * export const Weights = Modal.Volume("Weights", {});
45
+ * export const Tuned = Modal.Endpoint("Tuned", {
46
+ * model: { volume: Weights, path: "/checkpoints/final", baseModel: "Qwen/Qwen3-8B" },
47
+ * });
48
+ * ```
49
+ *
50
+ * ### Calling it
51
+ * **Example:** From a Cloudflare Worker with `Modal.FetchServer`
52
+ * ```typescript
53
+ * import * as Cloudflare from "@alchemy.run/cloudflare";
54
+ * import * as Modal from "@alchemy.run/modal";
55
+ * import * as Effect from "effect/Effect";
56
+ * import * as HttpClientRequest from "effect/http/HttpClientRequest";
57
+ * import * as HttpServerResponse from "effect/http/HttpServerResponse";
58
+ * import { Qwen } from "./Qwen.ts";
59
+ *
60
+ * export default class Chat extends Cloudflare.Worker<Chat>()(
61
+ * "Chat",
62
+ * { main: import.meta.url },
63
+ * Effect.gen(function* () {
64
+ * // Creates a webhook token for the Worker and sends it as Modal's proxy auth.
65
+ * const qwen = yield* Modal.FetchServer(Qwen);
66
+ * return {
67
+ * fetch: Effect.gen(function* () {
68
+ * const response = yield* qwen.fetch(
69
+ * HttpClientRequest.post("/v1/chat/completions").pipe(
70
+ * HttpClientRequest.bodyJsonUnsafe({
71
+ * model: "Qwen/Qwen3-8B",
72
+ * messages: [{ role: "user", content: "hi" }],
73
+ * }),
74
+ * ),
75
+ * );
76
+ * return HttpServerResponse.json(yield* response.json);
77
+ * }).pipe(Effect.orDie),
78
+ * };
79
+ * }).pipe(Effect.provide(Modal.FetchServerHttp)),
80
+ * ) {}
81
+ * ```
82
+ *
83
+ * @resource
84
+ * @product Endpoint
85
+ */
86
+ export const Endpoint = declarable()(Resource("Modal.Endpoint"));
87
+ const API = {
88
+ "openai-chat-completions": "ENDPOINT_API_SURFACE_OPENAI_CHAT_COMPLETIONS",
89
+ "openai-responses": "ENDPOINT_API_SURFACE_OPENAI_RESPONSES",
90
+ "anthropic-messages": "ENDPOINT_API_SURFACE_ANTHROPIC_MESSAGES",
91
+ };
92
+ const INPUT = {
93
+ text: "ENDPOINT_INPUT_MODALITY_TEXT",
94
+ image: "ENDPOINT_INPUT_MODALITY_IMAGE",
95
+ audio: "ENDPOINT_INPUT_MODALITY_AUDIO",
96
+ };
97
+ const modelSource = (model) => {
98
+ if ("repoId" in model)
99
+ return { baseModelRepoId: model.repoId };
100
+ if ("huggingface" in model) {
101
+ return {
102
+ custom: {
103
+ baseModelRepoId: model.baseModel,
104
+ huggingface: {
105
+ repoId: model.huggingface,
106
+ revision: model.revision,
107
+ huggingfaceToken: model.token,
108
+ },
109
+ },
110
+ };
111
+ }
112
+ const volume = model.volume;
113
+ return {
114
+ custom: {
115
+ baseModelRepoId: model.baseModel,
116
+ modalVolume: { volumeId: volume.volumeId ?? "", modelPath: model.path },
117
+ },
118
+ };
119
+ };
120
+ /** Modal's default routing region (`modal endpoint create`'s). */
121
+ const DEFAULT_ROUTING_REGION = "us-west";
122
+ /** Props compared for replacement (credentials and references by value). */
123
+ const identity = (news) => ({
124
+ environment: envNameOf(news.environment),
125
+ model: modelSource(news.model),
126
+ apis: news.apis ?? ["openai-chat-completions"],
127
+ inputs: news.inputs ?? ["text"],
128
+ servingMode: news.servingMode ?? "dedicated",
129
+ regions: news.regions,
130
+ routingRegion: news.routingRegion ?? DEFAULT_ROUTING_REGION,
131
+ unauthenticated: news.unauthenticated ?? false,
132
+ description: news.description,
133
+ });
134
+ export const EndpointProvider = () => Provider.effect(Endpoint, Effect.gen(function* () {
135
+ const info = Effect.fn(function* (endpointId) {
136
+ return yield* endpoint
137
+ .endpointGetInfo({ endpointId })
138
+ .pipe(Effect.catchTag("EndpointNotFound", () => Effect.undefined));
139
+ });
140
+ const lookup = Effect.fn(function* (name, env) {
141
+ const found = yield* endpoint
142
+ .endpointGetByName({ name, environmentName: environmentOf(env) })
143
+ .pipe(Effect.catchTag("EndpointNotFound", () => Effect.undefined));
144
+ if (!found?.endpointId)
145
+ return undefined;
146
+ const details = yield* info(found.endpointId);
147
+ if (!details?.info ||
148
+ details.info.lifecycle?.status === "ENDPOINT_LIFECYCLE_STATUS_STOPPED") {
149
+ return undefined;
150
+ }
151
+ return {
152
+ endpointId: found.endpointId,
153
+ name,
154
+ environment: env,
155
+ url: details.info.serviceUrl ?? "",
156
+ requiresAuth: details.info.requiresProxyAuth ?? true,
157
+ };
158
+ });
159
+ /** Wait until live: model loads take minutes. */
160
+ const waitLive = Effect.fn(function* (endpointId) {
161
+ for (let attempt = 0; attempt < 120; attempt++) {
162
+ const details = yield* info(endpointId);
163
+ const status = details?.info?.status;
164
+ if (status === "ENDPOINT_STATUS_LIVE")
165
+ return details;
166
+ if (status === "ENDPOINT_STATUS_FAILED" ||
167
+ status === "ENDPOINT_STATUS_CANCELLED" ||
168
+ status === "ENDPOINT_STATUS_STOPPED") {
169
+ return yield* new EndpointProvisioningFailed({
170
+ endpointId,
171
+ status,
172
+ message: `Modal endpoint ${endpointId} ended provisioning as ${status}`,
173
+ });
174
+ }
175
+ yield* Effect.sleep("15 seconds");
176
+ }
177
+ return yield* new EndpointProvisioningFailed({
178
+ endpointId,
179
+ status: "ENDPOINT_STATUS_PROVISIONING",
180
+ message: `Modal endpoint ${endpointId} wasn't live after 30 minutes`,
181
+ });
182
+ });
183
+ return {
184
+ stables: ["endpointId", "name", "environment"],
185
+ diff: Effect.fn(function* ({ id, news, olds, output }) {
186
+ if (!isResolved(news))
187
+ return undefined;
188
+ const name = yield* objectName(id, news.name);
189
+ if (output !== undefined && name !== output.name)
190
+ return { action: "replace" };
191
+ // Modal has no endpoint update: every change is a new endpoint.
192
+ if (olds !== undefined && !deepEqual(identity(news), identity(olds))) {
193
+ return { action: "replace" };
194
+ }
195
+ return undefined;
196
+ }),
197
+ read: Effect.fn(function* ({ id, olds, output }) {
198
+ const name = output?.name ?? (yield* objectName(id, olds?.name));
199
+ const found = yield* lookup(name, output?.environment ?? envNameOf(olds?.environment));
200
+ if (!found)
201
+ return undefined;
202
+ return output !== undefined || olds?.name === undefined ? found : Unowned(found);
203
+ }),
204
+ reconcile: Effect.fn(function* ({ id, news, output, session }) {
205
+ const name = output?.name ?? (yield* objectName(id, news.name));
206
+ const env = envNameOf(news.environment);
207
+ // Observe
208
+ const existing = yield* lookup(name, env);
209
+ let endpointId = existing?.endpointId;
210
+ // Ensure
211
+ if (endpointId === undefined) {
212
+ yield* session.note(`Creating endpoint ${name}...`);
213
+ const created = yield* endpoint
214
+ .createEndpoint({
215
+ name,
216
+ description: news.description,
217
+ environmentName: environmentOf(env),
218
+ model: modelSource(news.model),
219
+ apiSurfaces: (news.apis ?? ["openai-chat-completions"]).map((api) => API[api]),
220
+ inputModalities: (news.inputs ?? ["text"]).map((input) => INPUT[input]),
221
+ servingMode: (news.servingMode ?? "dedicated") === "shared"
222
+ ? "ENDPOINT_SERVING_MODE_SHARED"
223
+ : "ENDPOINT_SERVING_MODE_DEDICATED",
224
+ computeRegion: news.regions
225
+ ? { explicit: { regions: news.regions } }
226
+ : { auto: {} },
227
+ // Modal routes an endpoint through exactly one region.
228
+ proxyRegions: [news.routingRegion ?? DEFAULT_ROUTING_REGION],
229
+ unauthenticated: news.unauthenticated ?? false,
230
+ sharedEndpointNoticeAcknowledged: news.servingMode === "shared" ? true : undefined,
231
+ })
232
+ .pipe(
233
+ // An endpoint creates an App, and Modal rate-limits App
234
+ // creation per workspace; wait it out, as `Modal.App` does.
235
+ Effect.retry({
236
+ while: (e) => e._tag === "TooManyRequests",
237
+ schedule: Schedule.spaced("5 seconds"),
238
+ times: 12,
239
+ }), Effect.catchTag("EndpointAlreadyExists", () => lookup(name, env).pipe(Effect.map((found) => ({ endpointId: found?.endpointId })))));
240
+ endpointId = created.endpointId;
241
+ }
242
+ if (!endpointId) {
243
+ return yield* new EndpointProvisioningFailed({
244
+ endpointId: "",
245
+ status: "ENDPOINT_STATUS_UNSPECIFIED",
246
+ message: `Modal returned no endpoint for ${name}`,
247
+ });
248
+ }
249
+ yield* session.note(`Waiting for endpoint ${name} to go live...`);
250
+ const live = yield* waitLive(endpointId);
251
+ return {
252
+ endpointId,
253
+ name,
254
+ environment: env,
255
+ url: live.info?.serviceUrl ?? "",
256
+ requiresAuth: live.info?.requiresProxyAuth ?? true,
257
+ };
258
+ }),
259
+ list: Effect.fn(function* () {
260
+ const envs = yield* environmentNames;
261
+ const all = [];
262
+ for (const env of envs) {
263
+ const items = yield* listAll((pagination) => endpoint
264
+ .listEndpoint({ environmentName: env, pagination })
265
+ .pipe(Effect.map((response) => response.items ?? [])), (item) => item.updatedAt);
266
+ for (const item of items) {
267
+ if (!item.endpointId || !isGeneratedName(item.name))
268
+ continue;
269
+ const found = yield* lookup(item.name ?? "", env);
270
+ if (found)
271
+ all.push(found);
272
+ }
273
+ }
274
+ return all;
275
+ }),
276
+ delete: Effect.fn(function* ({ output }) {
277
+ yield* endpoint
278
+ .stopEndpoint({ endpointId: output.endpointId, source: "ENDPOINT_STOP_SOURCE_CLI" })
279
+ .pipe(Effect.catchTag("EndpointNotFound", () => Effect.void));
280
+ }),
281
+ };
282
+ }));
283
+ //# sourceMappingURL=Endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Endpoint.js","sources":["../src/Endpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ import * as environment from "@distilled.cloud/modal/environment";
2
+ import * as Provider from "alchemy/Provider";
3
+ import { Resource } from "alchemy/Resource";
4
+ import * as Effect from "effect/Effect";
5
+ import type { Providers } from "./Providers.ts";
6
+ declare const EnvironmentUnexpectedResponse_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 & {
7
+ readonly _tag: "Modal.EnvironmentUnexpectedResponse";
8
+ } & Readonly<A>;
9
+ export declare class EnvironmentUnexpectedResponse extends EnvironmentUnexpectedResponse_base<{
10
+ readonly message: string;
11
+ }> {
12
+ }
13
+ /** A member's access to an environment. */
14
+ export type EnvironmentRole = "viewer" | "contributor" | "no-access";
15
+ /** One role assignment: a workspace member or service user, and its role. */
16
+ export type EnvironmentRoleAssignment = {
17
+ readonly userId: string;
18
+ readonly role: EnvironmentRole;
19
+ } | {
20
+ readonly serviceUserId: string;
21
+ readonly role: EnvironmentRole;
22
+ };
23
+ export interface EnvironmentProps {
24
+ /**
25
+ * Environment name, unique in the workspace. If omitted, a unique name is
26
+ * generated from the stack, stage and logical ID. Changing it renames the
27
+ * environment in place.
28
+ */
29
+ name?: string;
30
+ /**
31
+ * Suffix of web endpoint URLs in this environment
32
+ * (`<workspace>-<suffix>--<app>.modal.run`).
33
+ * @default the environment name
34
+ */
35
+ webhookSuffix?: string;
36
+ /** Most tasks (containers) running at once in this environment. */
37
+ maxConcurrentTasks?: number;
38
+ /** Most GPUs in use at once in this environment. */
39
+ maxConcurrentGpus?: number;
40
+ /**
41
+ * Monthly spend limit in US dollars for this environment. Removing it
42
+ * clears the limit. Budgets need a Modal plan that includes them;
43
+ * elsewhere the deploy fails with `EnvironmentBudgetsNotEnabled`.
44
+ */
45
+ budget?: number;
46
+ /**
47
+ * Require authentication for web endpoints and tunnels in this
48
+ * environment: `true` blocks unauthenticated traffic, `false` allows it,
49
+ * and `undefined` inherits the workspace default.
50
+ */
51
+ blockUnauthenticatedResources?: boolean;
52
+ /**
53
+ * Restrict the environment to explicit members (a managed environment).
54
+ * Members without an assignment in {@link roles} get
55
+ * {@link defaultMemberRole}.
56
+ * @default false
57
+ */
58
+ managed?: boolean;
59
+ /**
60
+ * Role every workspace member gets in a managed environment unless
61
+ * {@link roles} assigns one.
62
+ */
63
+ defaultMemberRole?: EnvironmentRole;
64
+ /**
65
+ * Explicit role assignments. Each listed principal gets its role; a
66
+ * principal that was assigned before and is no longer listed falls back
67
+ * to {@link defaultMemberRole}.
68
+ */
69
+ roles?: EnvironmentRoleAssignment[];
70
+ }
71
+ export interface EnvironmentAttributes {
72
+ /** Environment ID (`en-…`). */
73
+ environmentId: string;
74
+ /** Environment name. */
75
+ name: string;
76
+ /** Suffix of web endpoint URLs in this environment. */
77
+ webhookSuffix: string | undefined;
78
+ /** Whether this is the workspace's default environment. */
79
+ isDefault: boolean;
80
+ /** Whether membership is restricted (a managed environment). */
81
+ managed: boolean;
82
+ }
83
+ /**
84
+ * A Modal Environment: an isolated namespace inside a workspace for Apps,
85
+ * Volumes, Dicts, Queues, Secrets and Sandboxes, with its own concurrency
86
+ * limits, spend budget and member roles. Objects with the same name in two
87
+ * environments are different objects, so one environment per stage keeps
88
+ * stages apart.
89
+ *
90
+ * Modal environments have no tags. Ownership is inferred from Alchemy
91
+ * state: an environment found under an explicit `name` without prior state
92
+ * is reported as unowned.
93
+ *
94
+ * ### Creating an Environment
95
+ * **Example:** One environment per stage
96
+ * ```typescript
97
+ * import * as Modal from "@alchemy.run/modal";
98
+ *
99
+ * export const Agents = Modal.Environment("Agents", {});
100
+ * ```
101
+ *
102
+ * **Example:** Limits and a monthly budget
103
+ * ```typescript
104
+ * import * as Modal from "@alchemy.run/modal";
105
+ *
106
+ * export const Agents = Modal.Environment("Agents", {
107
+ * maxConcurrentTasks: 50,
108
+ * maxConcurrentGpus: 4,
109
+ * budget: 200,
110
+ * });
111
+ * ```
112
+ *
113
+ * ### Access control
114
+ * **Example:** A managed environment with explicit roles
115
+ * ```typescript
116
+ * import * as Modal from "@alchemy.run/modal";
117
+ *
118
+ * export const Production = Modal.Environment("Production", {
119
+ * name: "production",
120
+ * managed: true,
121
+ * defaultMemberRole: "viewer",
122
+ * roles: [{ userId: "us-1234", role: "contributor" }],
123
+ * blockUnauthenticatedResources: true,
124
+ * });
125
+ * ```
126
+ *
127
+ * ### Using the environment
128
+ * **Example:** Put objects in it
129
+ * ```typescript
130
+ * import * as Modal from "@alchemy.run/modal";
131
+ *
132
+ * export const Agents = Modal.Environment("Agents", {});
133
+ * export const Coder = Modal.App("Coder", { environment: Agents });
134
+ * export const Workspace = Modal.Volume("Workspace", { environment: Agents });
135
+ * ```
136
+ *
137
+ * ### Looking up an existing environment
138
+ * `Environment.lookup` references an environment Alchemy doesn't manage (created with
139
+ * the Modal CLI or by another stack). It is read during plan/deploy, never
140
+ * created, updated or deleted.
141
+ *
142
+ * **Example:** Reference an existing environment
143
+ * ```typescript
144
+ * const staging = Modal.Environment.lookup({ name: "staging" });
145
+ * ```
146
+ *
147
+ * @resource
148
+ * @product Environment
149
+ */
150
+ export declare const Environment: import("alchemy/Resource").ResourceConstructor<Environment, Providers> & Effect.Effect<import("alchemy/Resource").ResourceConstructor<Environment, never>, never, never> & {
151
+ Self: import("alchemy/Self").Self<Environment>;
152
+ Provider: Provider.Provider<Environment>;
153
+ Aliases: readonly string[] | undefined;
154
+ ref(id: string, options?: {
155
+ stage?: string;
156
+ stack?: string;
157
+ }): Effect.Effect<Environment, never, never>;
158
+ } & {
159
+ lookup(props: {
160
+ name: import("alchemy/Input").Input<string>;
161
+ }): Environment;
162
+ } & ((id: string, props: import("./internal/Declared.ts").DeclaredProps<EnvironmentProps>) => Effect.Effect<Environment, never, Providers>);
163
+ export type Environment = Resource<"Modal.Environment", EnvironmentProps, EnvironmentAttributes, never, Providers, EnvironmentLookup>;
164
+ /**
165
+ * Props for {@link Environment.lookup}: find an environment this
166
+ * stack doesn't manage by its name.
167
+ */
168
+ export interface EnvironmentLookup {
169
+ /** Environment name. */
170
+ name: string;
171
+ }
172
+ export declare const EnvironmentProvider: () => import("effect/Layer").Layer<Provider.Provider<Environment>, never, import("alchemy/Stack").Stack | import("alchemy/Stage").Stage | environment.ModalOpContext>;
173
+ export {};
174
+ //# sourceMappingURL=Environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Environment.d.ts","sources":["../src/Environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,oCAAoC,CAAC;AAElE,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;;;;AAEhD,qBAAa,6BAA8B,SAAQ,mCAEjD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;AAEL,2CAA2C;AAC3C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;AAWrE,6EAA6E;AAC7E,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC;;;;OAIG;IACH,KAAK,CAAC,EAAE,yBAAyB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,2DAA2D;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;2IAAwE,CAAC;AAEjG,MAAM,MAAM,WAAW,GAAG,QAAQ,CAChC,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,EACL,SAAS,EACT,iBAAiB,CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAcD,eAAO,MAAM,mBAAmB,uKAkL7B,CAAC"}