@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.
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,70 @@
1
+ import * as flash from "@distilled.cloud/modal/flash";
2
+ import * as server from "@distilled.cloud/modal/server";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import { makeFunctionBinding } from "./FunctionTarget.js";
6
+ import { operations, timestampOf } from "./internal.js";
7
+ import { ReadServer } from "./ReadServer.js";
8
+ /** The operations the client calls, resolved by `ModalBindings.withCredentials`. */
9
+ const ReadServerOps = operations({
10
+ stats: server.serverGetTimeRangeStats,
11
+ requests: server.fetchServerRequest,
12
+ requestCount: server.serverCountRequests,
13
+ metrics: server.serverGetMetrics,
14
+ containers: flash.listFlashContainer,
15
+ });
16
+ /**
17
+ * {@link ReadServer} over Modal's API. Grants the host's identity (a scoped
18
+ * `Modal.ServiceUser`) the `viewer` role on the server's environment.
19
+ *
20
+ * @layer
21
+ * @product Server
22
+ * @provides Modal.ReadServer
23
+ */
24
+ export const ReadServerHttp = Layer.effect(ReadServer, makeFunctionBinding({
25
+ tag: "Modal.ReadServer",
26
+ operations: ReadServerOps,
27
+ role: "viewer",
28
+ make: ({ functionId }, ops, _server) => Effect.succeed({
29
+ stats: (range) => Effect.flatMap(functionId, (id) => ops.stats({
30
+ functionId: id,
31
+ since: timestampOf(range.since),
32
+ until: timestampOf(range.until ?? Date.now()),
33
+ containerId: range.containerId,
34
+ })),
35
+ requests: (query) => Effect.flatMap(functionId, (id) => ops.requests("limit" in query
36
+ ? { functionId: id, tail: { count: query.limit } }
37
+ : {
38
+ functionId: id,
39
+ range: {
40
+ since: timestampOf(query.since),
41
+ until: timestampOf(query.until ?? Date.now()),
42
+ },
43
+ })).pipe(Effect.map((response) => (response.requests ?? []).map((request) => ({
44
+ route: request.route,
45
+ timestamp: request.timestamp,
46
+ containerId: request.containerId,
47
+ durationSeconds: request.durationSeconds,
48
+ status: request.status,
49
+ })))),
50
+ requestCount: (range) => Effect.flatMap(functionId, (id) => ops.requestCount({
51
+ functionId: id,
52
+ since: timestampOf(range.since),
53
+ until: timestampOf(range.until ?? Date.now()),
54
+ bucketSecs: range.bucketSecs,
55
+ })),
56
+ metrics: (range) => Effect.flatMap(functionId, (id) => ops.metrics({
57
+ functionId: id,
58
+ since: timestampOf(range.since),
59
+ until: timestampOf(range.until ?? Date.now()),
60
+ bucketSecs: range.bucketSecs,
61
+ groups: range.groups ? [...range.groups] : undefined,
62
+ })),
63
+ containers: () => Effect.flatMap(functionId, (id) => ops.containers({ functionId: id })).pipe(Effect.map((response) => (response.containers ?? []).map((container) => ({
64
+ containerId: container.taskId ?? "",
65
+ host: container.host,
66
+ port: container.port,
67
+ })))),
68
+ }),
69
+ }));
70
+ //# sourceMappingURL=ReadServerHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadServerHttp.js","sources":["../src/ReadServerHttp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ import type * as Effect from "effect/Effect";
3
+ import type { Volume } from "./Volume.ts";
4
+ import type { ReadVolumeClient } from "./VolumeClient.ts";
5
+ export type { ReadVolumeClient } from "./VolumeClient.ts";
6
+ /**
7
+ * Read a Modal Volume's files from any runtime (a Worker, a Lambda, a Modal sandbox) without mounting it: list directories and read files over Modal's volume API.
8
+ *
9
+ * ### Bind a volume
10
+ * **Example:** Read from a Cloudflare Worker
11
+ * ```typescript
12
+ * import * as Cloudflare from "@alchemy.run/cloudflare";
13
+ * import * as Modal from "@alchemy.run/modal";
14
+ * import * as Effect from "effect/Effect";
15
+ * import * as HttpServerResponse from "effect/http/HttpServerResponse";
16
+ * import { Workspace } from "./Storage.ts";
17
+ *
18
+ * export default class Api extends Cloudflare.Worker<Api>()(
19
+ * "Api",
20
+ * { main: import.meta.url },
21
+ * Effect.gen(function* () {
22
+ * const volume = yield* Modal.ReadVolume(Workspace);
23
+ * return {
24
+ * fetch: Effect.gen(function* () {
25
+ * const files = yield* volume.listFiles("/");
26
+ * const readme = yield* volume.readFileString("/README.md");
27
+ * return yield* HttpServerResponse.json({ files, readme });
28
+ * }).pipe(Effect.orDie),
29
+ * };
30
+ * }).pipe(Effect.provide(Modal.ReadVolumeHttp)),
31
+ * ) {}
32
+ * ```
33
+ *
34
+ * @binding
35
+ * @product Volume
36
+ */
37
+ export interface ReadVolume extends Binding.Service<ReadVolume, "Modal.ReadVolume", (volume: Volume) => Effect.Effect<ReadVolumeClient>> {
38
+ }
39
+ export declare const ReadVolume: ReadVolume;
40
+ //# sourceMappingURL=ReadVolume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadVolume.d.ts","sources":["../src/ReadVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,UAAW,SAAQ,OAAO,CAAC,OAAO,CACjD,UAAU,EACV,kBAAkB,EAClB,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CACpD;CAAG;AAEJ,eAAO,MAAM,UAAU,YAAkD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const ReadVolume = Binding.Service("Modal.ReadVolume");
3
+ //# sourceMappingURL=ReadVolume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadVolume.js","sources":["../src/ReadVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA4C3C,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAa,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { ReadVolume } from "./ReadVolume.ts";
3
+ /**
4
+ * {@link ReadVolume} over Modal's volume API. Grants the host's identity (a scoped
5
+ * `Modal.ServiceUser`) the `viewer` role on the volume's environment.
6
+ *
7
+ * @layer
8
+ * @product Volume
9
+ * @provides Modal.ReadVolume
10
+ */
11
+ export declare const ReadVolumeHttp: Layer.Layer<ReadVolume, never, never>;
12
+ //# sourceMappingURL=ReadVolumeHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadVolumeHttp.d.ts","sources":["../src/ReadVolumeHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,uCAW1B,CAAC"}
@@ -0,0 +1,24 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import { makeModalBinding } from "./BindingHttp.js";
4
+ import { ReadVolume } from "./ReadVolume.js";
5
+ import { makeReadVolumeClient } from "./VolumeClient.js";
6
+ import { VolumeFileOps } from "./VolumeFiles.js";
7
+ /**
8
+ * {@link ReadVolume} over Modal's volume API. Grants the host's identity (a scoped
9
+ * `Modal.ServiceUser`) the `viewer` role on the volume's environment.
10
+ *
11
+ * @layer
12
+ * @product Volume
13
+ * @provides Modal.ReadVolume
14
+ */
15
+ export const ReadVolumeHttp = Layer.effect(ReadVolume, makeModalBinding({
16
+ tag: "Modal.ReadVolume",
17
+ operations: VolumeFileOps,
18
+ role: "viewer",
19
+ make: Effect.fn(function* (volume, ops) {
20
+ const volumeId = yield* volume.volumeId;
21
+ return makeReadVolumeClient(volumeId, ops);
22
+ }),
23
+ }));
24
+ //# sourceMappingURL=ReadVolumeHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadVolumeHttp.js","sources":["../src/ReadVolumeHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CACxC,UAAU,EACV,gBAAgB,CAAC;IACf,GAAG,EAAE,kBAAkB;IACvB,UAAU,EAAE,aAAa;IACzB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAc,EAAE,GAAG;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,OAAO,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC;CACH,CAAC,CACH,CAAC"}
@@ -0,0 +1,39 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ import type * as Effect from "effect/Effect";
3
+ import type { Dict } from "./Dict.ts";
4
+ import type { ReadWriteDictClient } from "./DictClient.ts";
5
+ export type { ReadWriteDictClient } from "./DictClient.ts";
6
+ /**
7
+ * Read and write a Modal Dict from any runtime. Keys and values are JSON.
8
+ *
9
+ * ### Bind a dict
10
+ * **Example:** From a Cloudflare Worker
11
+ * ```typescript
12
+ * import * as Cloudflare from "@alchemy.run/cloudflare";
13
+ * import * as Modal from "@alchemy.run/modal";
14
+ * import * as Effect from "effect/Effect";
15
+ * import * as HttpServerResponse from "effect/http/HttpServerResponse";
16
+ * import { Results } from "./Storage.ts";
17
+ *
18
+ * export default class Api extends Cloudflare.Worker<Api>()(
19
+ * "Api",
20
+ * { main: import.meta.url },
21
+ * Effect.gen(function* () {
22
+ * const dict = yield* Modal.ReadWriteDict(Results);
23
+ * return {
24
+ * fetch: Effect.gen(function* () {
25
+ * yield* dict.put("hits", ((yield* dict.get<number>("hits")) ?? 0) + 1);
26
+ * return yield* HttpServerResponse.json({ hits: yield* dict.get("hits") });
27
+ * }).pipe(Effect.orDie),
28
+ * };
29
+ * }).pipe(Effect.provide(Modal.ReadWriteDictHttp)),
30
+ * ) {}
31
+ * ```
32
+ *
33
+ * @binding
34
+ * @product Dict
35
+ */
36
+ export interface ReadWriteDict extends Binding.Service<ReadWriteDict, "Modal.ReadWriteDict", (dict: Dict) => Effect.Effect<ReadWriteDictClient>> {
37
+ }
38
+ export declare const ReadWriteDict: ReadWriteDict;
39
+ //# sourceMappingURL=ReadWriteDict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteDict.d.ts","sources":["../src/ReadWriteDict.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,aAAc,SAAQ,OAAO,CAAC,OAAO,CACpD,aAAa,EACb,qBAAqB,EACrB,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CACnD;CAAG;AAEJ,eAAO,MAAM,aAAa,eAAwD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const ReadWriteDict = Binding.Service("Modal.ReadWriteDict");
3
+ //# sourceMappingURL=ReadWriteDict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteDict.js","sources":["../src/ReadWriteDict.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA2C3C,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAgB,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { ReadWriteDict } from "./ReadWriteDict.ts";
3
+ /**
4
+ * {@link ReadWriteDict} over Modal's API. Grants the host's identity (a scoped
5
+ * `Modal.ServiceUser`) the `contributor` role on the dict's environment.
6
+ *
7
+ * @layer
8
+ * @product Dict
9
+ * @provides Modal.ReadWriteDict
10
+ */
11
+ export declare const ReadWriteDictHttp: Layer.Layer<ReadWriteDict, never, never>;
12
+ //# sourceMappingURL=ReadWriteDictHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteDictHttp.d.ts","sources":["../src/ReadWriteDictHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,0CAW7B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import { makeModalBinding } from "./BindingHttp.js";
4
+ import { DictOps, makeReadWriteDictClient } from "./DictClient.js";
5
+ import { ReadWriteDict } from "./ReadWriteDict.js";
6
+ /**
7
+ * {@link ReadWriteDict} over Modal's API. Grants the host's identity (a scoped
8
+ * `Modal.ServiceUser`) the `contributor` role on the dict's environment.
9
+ *
10
+ * @layer
11
+ * @product Dict
12
+ * @provides Modal.ReadWriteDict
13
+ */
14
+ export const ReadWriteDictHttp = Layer.effect(ReadWriteDict, makeModalBinding({
15
+ tag: "Modal.ReadWriteDict",
16
+ operations: DictOps,
17
+ role: "contributor",
18
+ make: Effect.fn(function* (dict, ops) {
19
+ const dictId = yield* dict.dictId;
20
+ return makeReadWriteDictClient(dictId, ops);
21
+ }),
22
+ }));
23
+ //# sourceMappingURL=ReadWriteDictHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteDictHttp.js","sources":["../src/ReadWriteDictHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAC3C,aAAa,EACb,gBAAgB,CAAC;IACf,GAAG,EAAE,qBAAqB;IAC1B,UAAU,EAAE,OAAO;IACnB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAU,EAAE,GAAG;QACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAClC,OAAO,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC;CACH,CAAC,CACH,CAAC"}
@@ -0,0 +1,40 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ import type * as Effect from "effect/Effect";
3
+ import type { Queue } from "./Queue.ts";
4
+ import type { ReadWriteQueueClient } from "./QueueClient.ts";
5
+ export type { ReadWriteQueueClient } from "./QueueClient.ts";
6
+ /**
7
+ * Put and take items on a Modal Queue from any runtime. Items are JSON.
8
+ *
9
+ * ### Bind a queue
10
+ * **Example:** From a Cloudflare Worker
11
+ * ```typescript
12
+ * import * as Cloudflare from "@alchemy.run/cloudflare";
13
+ * import * as Modal from "@alchemy.run/modal";
14
+ * import * as Effect from "effect/Effect";
15
+ * import * as HttpServerResponse from "effect/http/HttpServerResponse";
16
+ * import { Jobs } from "./Storage.ts";
17
+ *
18
+ * export default class Api extends Cloudflare.Worker<Api>()(
19
+ * "Api",
20
+ * { main: import.meta.url },
21
+ * Effect.gen(function* () {
22
+ * const queue = yield* Modal.ReadWriteQueue(Jobs);
23
+ * return {
24
+ * fetch: Effect.gen(function* () {
25
+ * yield* queue.put({ n: 1 });
26
+ * const items = yield* queue.take({ count: 10 });
27
+ * return yield* HttpServerResponse.json(items);
28
+ * }).pipe(Effect.orDie),
29
+ * };
30
+ * }).pipe(Effect.provide(Modal.ReadWriteQueueHttp)),
31
+ * ) {}
32
+ * ```
33
+ *
34
+ * @binding
35
+ * @product Queue
36
+ */
37
+ export interface ReadWriteQueue extends Binding.Service<ReadWriteQueue, "Modal.ReadWriteQueue", (queue: Queue) => Effect.Effect<ReadWriteQueueClient>> {
38
+ }
39
+ export declare const ReadWriteQueue: ReadWriteQueue;
40
+ //# sourceMappingURL=ReadWriteQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteQueue.d.ts","sources":["../src/ReadWriteQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,cAAe,SAAQ,OAAO,CAAC,OAAO,CACrD,cAAc,EACd,sBAAsB,EACtB,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CACtD;CAAG;AAEJ,eAAO,MAAM,cAAc,gBAA0D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const ReadWriteQueue = Binding.Service("Modal.ReadWriteQueue");
3
+ //# sourceMappingURL=ReadWriteQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteQueue.js","sources":["../src/ReadWriteQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA4C3C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAiB,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { ReadWriteQueue } from "./ReadWriteQueue.ts";
3
+ /**
4
+ * {@link ReadWriteQueue} over Modal's API. Grants the host's identity (a scoped
5
+ * `Modal.ServiceUser`) the `contributor` role on the queue's environment.
6
+ *
7
+ * @layer
8
+ * @product Queue
9
+ * @provides Modal.ReadWriteQueue
10
+ */
11
+ export declare const ReadWriteQueueHttp: Layer.Layer<ReadWriteQueue, never, never>;
12
+ //# sourceMappingURL=ReadWriteQueueHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteQueueHttp.d.ts","sources":["../src/ReadWriteQueueHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,2CAW9B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import { makeModalBinding } from "./BindingHttp.js";
4
+ import { QueueOps, makeReadWriteQueueClient } from "./QueueClient.js";
5
+ import { ReadWriteQueue } from "./ReadWriteQueue.js";
6
+ /**
7
+ * {@link ReadWriteQueue} over Modal's API. Grants the host's identity (a scoped
8
+ * `Modal.ServiceUser`) the `contributor` role on the queue's environment.
9
+ *
10
+ * @layer
11
+ * @product Queue
12
+ * @provides Modal.ReadWriteQueue
13
+ */
14
+ export const ReadWriteQueueHttp = Layer.effect(ReadWriteQueue, makeModalBinding({
15
+ tag: "Modal.ReadWriteQueue",
16
+ operations: QueueOps,
17
+ role: "contributor",
18
+ make: Effect.fn(function* (queue, ops) {
19
+ const queueId = yield* queue.queueId;
20
+ return makeReadWriteQueueClient(queueId, ops);
21
+ }),
22
+ }));
23
+ //# sourceMappingURL=ReadWriteQueueHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteQueueHttp.js","sources":["../src/ReadWriteQueueHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAC5C,cAAc,EACd,gBAAgB,CAAC;IACf,GAAG,EAAE,sBAAsB;IAC3B,UAAU,EAAE,QAAQ;IACpB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAY,EAAE,GAAG;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QACrC,OAAO,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC;CACH,CAAC,CACH,CAAC"}
@@ -0,0 +1,40 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ import type * as Effect from "effect/Effect";
3
+ import type { Volume } from "./Volume.ts";
4
+ import type { ReadWriteVolumeClient } from "./VolumeClient.ts";
5
+ export type { ReadWriteVolumeClient } from "./VolumeClient.ts";
6
+ /**
7
+ * Read and write a Modal Volume's files from any runtime without mounting it.
8
+ *
9
+ * ### Bind a volume
10
+ * **Example:** ReadWrite from a Cloudflare Worker
11
+ * ```typescript
12
+ * import * as Cloudflare from "@alchemy.run/cloudflare";
13
+ * import * as Modal from "@alchemy.run/modal";
14
+ * import * as Effect from "effect/Effect";
15
+ * import * as HttpServerResponse from "effect/http/HttpServerResponse";
16
+ * import { Workspace } from "./Storage.ts";
17
+ *
18
+ * export default class Api extends Cloudflare.Worker<Api>()(
19
+ * "Api",
20
+ * { main: import.meta.url },
21
+ * Effect.gen(function* () {
22
+ * const volume = yield* Modal.ReadWriteVolume(Workspace);
23
+ * return {
24
+ * fetch: Effect.gen(function* () {
25
+ * yield* volume.writeFile("/hello.txt", "hello");
26
+ * const text = yield* volume.readFileString("/hello.txt");
27
+ * return HttpServerResponse.text(text);
28
+ * }).pipe(Effect.orDie),
29
+ * };
30
+ * }).pipe(Effect.provide(Modal.ReadWriteVolumeHttp)),
31
+ * ) {}
32
+ * ```
33
+ *
34
+ * @binding
35
+ * @product Volume
36
+ */
37
+ export interface ReadWriteVolume extends Binding.Service<ReadWriteVolume, "Modal.ReadWriteVolume", (volume: Volume) => Effect.Effect<ReadWriteVolumeClient>> {
38
+ }
39
+ export declare const ReadWriteVolume: ReadWriteVolume;
40
+ //# sourceMappingURL=ReadWriteVolume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteVolume.d.ts","sources":["../src/ReadWriteVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,eAAgB,SAAQ,OAAO,CAAC,OAAO,CACtD,eAAe,EACf,uBAAuB,EACvB,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CACzD;CAAG;AAEJ,eAAO,MAAM,eAAe,iBAA4D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const ReadWriteVolume = Binding.Service("Modal.ReadWriteVolume");
3
+ //# sourceMappingURL=ReadWriteVolume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteVolume.js","sources":["../src/ReadWriteVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA4C3C,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAkB,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { ReadWriteVolume } from "./ReadWriteVolume.ts";
3
+ /**
4
+ * {@link ReadWriteVolume} over Modal's volume API. Grants the host's identity (a scoped
5
+ * `Modal.ServiceUser`) the `contributor` role on the volume's environment.
6
+ *
7
+ * @layer
8
+ * @product Volume
9
+ * @provides Modal.ReadWriteVolume
10
+ */
11
+ export declare const ReadWriteVolumeHttp: Layer.Layer<ReadWriteVolume, never, never>;
12
+ //# sourceMappingURL=ReadWriteVolumeHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteVolumeHttp.d.ts","sources":["../src/ReadWriteVolumeHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAKvD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,4CAW/B,CAAC"}
@@ -0,0 +1,24 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import { makeModalBinding } from "./BindingHttp.js";
4
+ import { ReadWriteVolume } from "./ReadWriteVolume.js";
5
+ import { makeReadWriteVolumeClient } from "./VolumeClient.js";
6
+ import { VolumeFileOps } from "./VolumeFiles.js";
7
+ /**
8
+ * {@link ReadWriteVolume} over Modal's volume API. Grants the host's identity (a scoped
9
+ * `Modal.ServiceUser`) the `contributor` role on the volume's environment.
10
+ *
11
+ * @layer
12
+ * @product Volume
13
+ * @provides Modal.ReadWriteVolume
14
+ */
15
+ export const ReadWriteVolumeHttp = Layer.effect(ReadWriteVolume, makeModalBinding({
16
+ tag: "Modal.ReadWriteVolume",
17
+ operations: VolumeFileOps,
18
+ role: "contributor",
19
+ make: Effect.fn(function* (volume, ops) {
20
+ const volumeId = yield* volume.volumeId;
21
+ return makeReadWriteVolumeClient(volumeId, ops);
22
+ }),
23
+ }));
24
+ //# sourceMappingURL=ReadWriteVolumeHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadWriteVolumeHttp.js","sources":["../src/ReadWriteVolumeHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAC7C,eAAe,EACf,gBAAgB,CAAC;IACf,GAAG,EAAE,uBAAuB;IAC5B,UAAU,EAAE,aAAa;IACzB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAc,EAAE,GAAG;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,OAAO,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC;CACH,CAAC,CACH,CAAC"}
@@ -0,0 +1,39 @@
1
+ import * as Effect from "effect/Effect";
2
+ /**
3
+ * Who created an object at run time: the stack, stage and binding host
4
+ * (`alchemy::stack`, `alchemy::stage`, `alchemy::id`).
5
+ *
6
+ * The `Create*` bindings mark every object they create with it, so the
7
+ * objects can be found and cleaned up. Destroying the stack does not delete
8
+ * them. Modal tags sandboxes, so a sandbox carries the three keys as tags;
9
+ * volumes, dicts, queues and secrets have only a name, so theirs starts with
10
+ * {@link runtimePrefix}, and `alchemy nuke` deletes them by it.
11
+ */
12
+ export interface RuntimeOwner {
13
+ readonly stack: string;
14
+ readonly stage: string;
15
+ readonly id: string;
16
+ }
17
+ /** The owner as Modal sandbox tags. */
18
+ export declare const runtimeTags: (owner: RuntimeOwner) => Record<string, string>;
19
+ /**
20
+ * The name prefix of objects that carry only a name:
21
+ * `alc-<stack-stage-id>-<digest>`, the identity readable and cut to 16
22
+ * characters, then a digest of all three. An object `name` becomes
23
+ * `<prefix>-<name>`. The `alc-` marker is how `alchemy nuke` recognizes them.
24
+ */
25
+ export declare const runtimePrefix: (owner: RuntimeOwner) => string;
26
+ /** Whether `name` carries some owner's {@link runtimePrefix}. */
27
+ export declare const isRuntimeName: (name: string | undefined) => boolean;
28
+ /** The name an object gets: `<prefix>-<name>` with an owner, `name` without one. */
29
+ export declare const ownedName: (owner: RuntimeOwner | undefined, name: string) => string;
30
+ /** An owned object's name without the prefix, or `undefined` when another owner's. */
31
+ export declare const unownedName: (owner: RuntimeOwner | undefined, name: string) => string | undefined;
32
+ /**
33
+ * The owner a `Create*` binding marks its objects with. Yield it while the
34
+ * binding's layer is built and call the result inside the binding: at deploy
35
+ * it binds the host's identity into the host's env; at run time its Effect
36
+ * reads it back. Without a host (a script or an Action) there is no owner.
37
+ */
38
+ export declare const RuntimeOwnerOf: () => Effect.Effect<Effect.Effect<RuntimeOwner | undefined, never, never>, never, never>;
39
+ //# sourceMappingURL=RuntimeOwner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeOwner.d.ts","sources":["../src/RuntimeOwner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,uCAAuC;AACvC,eAAO,MAAM,WAAW,UAAW,YAAY,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAIrE,CAAC;AAmBH;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAW,YAAY,KAAG,MAInD,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,aAAa,SAAU,MAAM,GAAG,SAAS,KAAG,OAC8B,CAAC;AAExF,oFAAoF;AACpF,eAAO,MAAM,SAAS,UAAW,YAAY,GAAG,SAAS,QAAQ,MAAM,WACP,CAAC;AAEjE,sFAAsF;AACtF,eAAO,MAAM,WAAW,UAAW,YAAY,GAAG,SAAS,QAAQ,MAAM,uBAIxE,CAAC;AAQF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,0FAuBzB,CAAC"}
@@ -0,0 +1,85 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ import * as Output from "alchemy/Output";
3
+ import { CurrentRuntimeContext } from "alchemy/RuntimeContext";
4
+ import { Stack } from "alchemy/Stack";
5
+ import { Stage } from "alchemy/Stage";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Option from "effect/Option";
8
+ /** The owner as Modal sandbox tags. */
9
+ export const runtimeTags = (owner) => ({
10
+ "alchemy::stack": owner.stack,
11
+ "alchemy::stage": owner.stage,
12
+ "alchemy::id": owner.id,
13
+ });
14
+ const toLabel = (value) => value
15
+ .toLowerCase()
16
+ .replace(/[^a-z0-9-]+/g, "-")
17
+ .replace(/-+/g, "-")
18
+ .replace(/^-|-$/g, "");
19
+ /** FNV-1a, 32 bits: a short, stable digest of the full identity. */
20
+ const digest = (value) => {
21
+ let hash = 0x811c9dc5;
22
+ for (let i = 0; i < value.length; i++) {
23
+ hash ^= value.charCodeAt(i);
24
+ hash = Math.imul(hash, 0x01000193);
25
+ }
26
+ return (hash >>> 0).toString(16).padStart(8, "0");
27
+ };
28
+ /**
29
+ * The name prefix of objects that carry only a name:
30
+ * `alc-<stack-stage-id>-<digest>`, the identity readable and cut to 16
31
+ * characters, then a digest of all three. An object `name` becomes
32
+ * `<prefix>-<name>`. The `alc-` marker is how `alchemy nuke` recognizes them.
33
+ */
34
+ export const runtimePrefix = (owner) => {
35
+ const readable = toLabel(`${owner.stack}-${owner.stage}-${owner.id}`).slice(0, 16).replace(/-+$/, "") || "x";
36
+ return `alc-${readable}-${digest(`${owner.stack}/${owner.stage}/${owner.id}`)}`;
37
+ };
38
+ /** Whether `name` carries some owner's {@link runtimePrefix}. */
39
+ export const isRuntimeName = (name) => name !== undefined && /^alc-[a-z0-9](?:[a-z0-9-]*[a-z0-9])?-[0-9a-f]{8}-./.test(name);
40
+ /** The name an object gets: `<prefix>-<name>` with an owner, `name` without one. */
41
+ export const ownedName = (owner, name) => owner === undefined ? name : `${runtimePrefix(owner)}-${name}`;
42
+ /** An owned object's name without the prefix, or `undefined` when another owner's. */
43
+ export const unownedName = (owner, name) => {
44
+ if (owner === undefined)
45
+ return name;
46
+ const prefix = `${runtimePrefix(owner)}-`;
47
+ return name.startsWith(prefix) ? name.slice(prefix.length) : undefined;
48
+ };
49
+ const ENV = {
50
+ stack: "ALCHEMY_MODAL_OWNER_STACK",
51
+ stage: "ALCHEMY_MODAL_OWNER_STAGE",
52
+ id: "ALCHEMY_MODAL_OWNER_ID",
53
+ };
54
+ /**
55
+ * The owner a `Create*` binding marks its objects with. Yield it while the
56
+ * binding's layer is built and call the result inside the binding: at deploy
57
+ * it binds the host's identity into the host's env; at run time its Effect
58
+ * reads it back. Without a host (a script or an Action) there is no owner.
59
+ */
60
+ export const RuntimeOwnerOf = Effect.fn(function* () {
61
+ const runtime = yield* CurrentRuntimeContext;
62
+ if (runtime === undefined)
63
+ return Effect.succeed(undefined);
64
+ if (!globalThis.__ALCHEMY_RUNTIME__) {
65
+ const host = yield* Binding.Host;
66
+ // The deploying stack and stage, read without requiring them, so the
67
+ // binding's `make` needs nothing a script or an Action lacks.
68
+ const stack = Option.getOrUndefined(yield* Effect.serviceOption(Stack));
69
+ const stage = Option.getOrUndefined(yield* Effect.serviceOption(Stage));
70
+ if (host !== undefined && stack !== undefined && stage !== undefined) {
71
+ yield* runtime.set(ENV.stack, Output.literal(stack.name));
72
+ yield* runtime.set(ENV.stage, Output.literal(stage));
73
+ yield* runtime.set(ENV.id, Output.literal(host.LogicalId));
74
+ }
75
+ }
76
+ return Effect.gen(function* () {
77
+ const stack = yield* runtime.get(ENV.stack);
78
+ const stage = yield* runtime.get(ENV.stage);
79
+ const id = yield* runtime.get(ENV.id);
80
+ return stack === undefined || stage === undefined || id === undefined
81
+ ? undefined
82
+ : { stack, stage, id };
83
+ });
84
+ });
85
+ //# sourceMappingURL=RuntimeOwner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeOwner.js","sources":["../src/RuntimeOwner.ts"],"names":[],"mappings":"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"}