@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,244 @@
1
+ import * as environment from "@distilled.cloud/modal/environment";
2
+ import { Unowned } from "alchemy/AdoptPolicy";
3
+ import * as Provider from "alchemy/Provider";
4
+ import { Resource } from "alchemy/Resource";
5
+ import * as Data from "effect/Data";
6
+ import * as Effect from "effect/Effect";
7
+ import { isGeneratedName, objectName } from "./internal.js";
8
+ import { declarable } from "./internal/Declared.js";
9
+ export class EnvironmentUnexpectedResponse extends Data.TaggedError("Modal.EnvironmentUnexpectedResponse") {
10
+ }
11
+ const ROLE_TO_WIRE = {
12
+ viewer: "ENVIRONMENT_ROLE_VIEWER",
13
+ contributor: "ENVIRONMENT_ROLE_CONTRIBUTOR",
14
+ "no-access": "ENVIRONMENT_ROLE_NO_ACCESS",
15
+ };
16
+ const roleFromWire = (role) => Object.keys(ROLE_TO_WIRE).find((key) => ROLE_TO_WIRE[key] === role);
17
+ /**
18
+ * A Modal Environment: an isolated namespace inside a workspace for Apps,
19
+ * Volumes, Dicts, Queues, Secrets and Sandboxes, with its own concurrency
20
+ * limits, spend budget and member roles. Objects with the same name in two
21
+ * environments are different objects, so one environment per stage keeps
22
+ * stages apart.
23
+ *
24
+ * Modal environments have no tags. Ownership is inferred from Alchemy
25
+ * state: an environment found under an explicit `name` without prior state
26
+ * is reported as unowned.
27
+ *
28
+ * ### Creating an Environment
29
+ * **Example:** One environment per stage
30
+ * ```typescript
31
+ * import * as Modal from "@alchemy.run/modal";
32
+ *
33
+ * export const Agents = Modal.Environment("Agents", {});
34
+ * ```
35
+ *
36
+ * **Example:** Limits and a monthly budget
37
+ * ```typescript
38
+ * import * as Modal from "@alchemy.run/modal";
39
+ *
40
+ * export const Agents = Modal.Environment("Agents", {
41
+ * maxConcurrentTasks: 50,
42
+ * maxConcurrentGpus: 4,
43
+ * budget: 200,
44
+ * });
45
+ * ```
46
+ *
47
+ * ### Access control
48
+ * **Example:** A managed environment with explicit roles
49
+ * ```typescript
50
+ * import * as Modal from "@alchemy.run/modal";
51
+ *
52
+ * export const Production = Modal.Environment("Production", {
53
+ * name: "production",
54
+ * managed: true,
55
+ * defaultMemberRole: "viewer",
56
+ * roles: [{ userId: "us-1234", role: "contributor" }],
57
+ * blockUnauthenticatedResources: true,
58
+ * });
59
+ * ```
60
+ *
61
+ * ### Using the environment
62
+ * **Example:** Put objects in it
63
+ * ```typescript
64
+ * import * as Modal from "@alchemy.run/modal";
65
+ *
66
+ * export const Agents = Modal.Environment("Agents", {});
67
+ * export const Coder = Modal.App("Coder", { environment: Agents });
68
+ * export const Workspace = Modal.Volume("Workspace", { environment: Agents });
69
+ * ```
70
+ *
71
+ * ### Looking up an existing environment
72
+ * `Environment.lookup` references an environment Alchemy doesn't manage (created with
73
+ * the Modal CLI or by another stack). It is read during plan/deploy, never
74
+ * created, updated or deleted.
75
+ *
76
+ * **Example:** Reference an existing environment
77
+ * ```typescript
78
+ * const staging = Modal.Environment.lookup({ name: "staging" });
79
+ * ```
80
+ *
81
+ * @resource
82
+ * @product Environment
83
+ */
84
+ export const Environment = declarable()(Resource("Modal.Environment"));
85
+ const blockToWire = (value) => value === undefined
86
+ ? "ENVIRONMENT_BLOCK_UNAUTHENTICATED_RESOURCES_INHERIT"
87
+ : value
88
+ ? "ENVIRONMENT_BLOCK_UNAUTHENTICATED_RESOURCES_BLOCK"
89
+ : "ENVIRONMENT_BLOCK_UNAUTHENTICATED_RESOURCES_ALLOW";
90
+ const principalKey = (p) => p.userId ? `user:${p.userId}` : `service:${p.serviceUserId ?? ""}`;
91
+ export const EnvironmentProvider = () => Provider.effect(Environment, Effect.gen(function* () {
92
+ const observe = Effect.fn(function* (name) {
93
+ const { items } = yield* environment.listEnvironment({});
94
+ return (items ?? []).find((item) => item.name === name);
95
+ });
96
+ const toAttrs = (item) => ({
97
+ environmentId: item.environmentId ?? "",
98
+ name: item.name ?? "",
99
+ webhookSuffix: item.webhookSuffix || undefined,
100
+ isDefault: item.default ?? false,
101
+ managed: item.isManaged ?? false,
102
+ });
103
+ return {
104
+ stables: ["environmentId"],
105
+ lookup: Effect.fn(function* ({ name }) {
106
+ const item = yield* observe(name);
107
+ return item ? toAttrs(item) : undefined;
108
+ }),
109
+ read: Effect.fn(function* ({ id, olds, output }) {
110
+ const name = output?.name ?? (yield* objectName(id, olds?.name));
111
+ const item = yield* observe(name);
112
+ if (!item)
113
+ return undefined;
114
+ const attrs = toAttrs(item);
115
+ return output !== undefined || olds?.name === undefined ? attrs : Unowned(attrs);
116
+ }),
117
+ reconcile: Effect.fn(function* ({ id, news, output, session }) {
118
+ const desiredName = yield* objectName(id, news.name);
119
+ // Observe: by the previous name (a rename) and the desired name.
120
+ let current = (output !== undefined && output.name !== desiredName
121
+ ? yield* observe(output.name)
122
+ : undefined) ?? (yield* observe(desiredName));
123
+ // Ensure
124
+ if (!current) {
125
+ yield* session.note(`Creating environment ${desiredName}...`);
126
+ yield* environment
127
+ .createEnvironment({
128
+ name: desiredName,
129
+ isManaged: news.managed,
130
+ defaultMemberRole: news.defaultMemberRole
131
+ ? ROLE_TO_WIRE[news.defaultMemberRole]
132
+ : undefined,
133
+ })
134
+ .pipe(Effect.catchTag("EnvironmentAlreadyExists", () => Effect.void));
135
+ current = yield* observe(desiredName);
136
+ if (!current) {
137
+ return yield* new EnvironmentUnexpectedResponse({
138
+ message: `Modal environment ${desiredName} was not listed after create`,
139
+ });
140
+ }
141
+ }
142
+ // Sync name, suffix, limits and the unauthenticated-resources policy.
143
+ const desiredBlock = blockToWire(news.blockUnauthenticatedResources);
144
+ const observedBlock = blockToWire(current.blockUnauthenticatedResources);
145
+ if (current.name !== desiredName ||
146
+ (news.webhookSuffix !== undefined && current.webhookSuffix !== news.webhookSuffix) ||
147
+ (news.maxConcurrentTasks !== undefined &&
148
+ current.maxConcurrentTasks !== news.maxConcurrentTasks) ||
149
+ (news.maxConcurrentGpus !== undefined &&
150
+ current.maxConcurrentGpus !== news.maxConcurrentGpus) ||
151
+ (news.blockUnauthenticatedResources !== undefined && desiredBlock !== observedBlock)) {
152
+ yield* environment.updateEnvironment({
153
+ currentName: current.name,
154
+ name: desiredName,
155
+ webSuffix: news.webhookSuffix,
156
+ maxConcurrentTasks: news.maxConcurrentTasks,
157
+ maxConcurrentGpus: news.maxConcurrentGpus,
158
+ blockUnauthenticatedResources: news.blockUnauthenticatedResources === undefined ? undefined : desiredBlock,
159
+ });
160
+ }
161
+ const environmentId = current.environmentId ?? "";
162
+ // Sync budget against the observed limit. A workspace without
163
+ // budgets has none to clear; asking for one there fails with
164
+ // `EnvironmentBudgetsNotEnabled`.
165
+ const budget = yield* environment
166
+ .environmentGetBudget({ environmentId })
167
+ .pipe(Effect.catchTag("EnvironmentBudgetsNotEnabled", () => Effect.succeed({})));
168
+ if (news.budget !== undefined && budget.cycleBudgetDollars !== news.budget) {
169
+ yield* environment.environmentSetBudget({
170
+ environmentId,
171
+ cycleBudgetDollars: news.budget,
172
+ });
173
+ }
174
+ else if (news.budget === undefined && budget.cycleBudgetDollars !== undefined) {
175
+ yield* environment.environmentSetBudget({ environmentId, clearBudget: true });
176
+ }
177
+ // Sync managed mode and the default member role.
178
+ const managed = news.managed ?? false;
179
+ if ((current.isManaged ?? false) !== managed) {
180
+ yield* environment.environmentSetManaged({
181
+ environmentId,
182
+ managed,
183
+ defaultMemberRole: news.defaultMemberRole
184
+ ? ROLE_TO_WIRE[news.defaultMemberRole]
185
+ : undefined,
186
+ });
187
+ }
188
+ if (news.defaultMemberRole !== undefined &&
189
+ roleFromWire(current.defaultMemberRole) !== news.defaultMemberRole) {
190
+ yield* environment.environmentSetDefaultMemberRole({
191
+ environmentId,
192
+ defaultMemberRole: ROLE_TO_WIRE[news.defaultMemberRole],
193
+ });
194
+ }
195
+ // Sync explicit role assignments against the observed principals:
196
+ // listed principals get their role, and any other principal with
197
+ // an explicit assignment falls back to the default member role.
198
+ if (news.roles !== undefined) {
199
+ const observed = yield* environment.environmentGetRoles({ environmentId });
200
+ const principals = observed.principalRoles ?? [];
201
+ const desired = new Map(news.roles.map((assignment) => [principalKey(assignment), assignment]));
202
+ for (const assignment of desired.values()) {
203
+ const match = principals.find((p) => principalKey(p) === principalKey(assignment));
204
+ if (match === undefined ||
205
+ match.hasRoleAssignment !== true ||
206
+ roleFromWire(match.role) !== assignment.role) {
207
+ yield* environment.setEnvironmentRole({
208
+ environmentId,
209
+ ...("userId" in assignment
210
+ ? { userId: assignment.userId }
211
+ : { serviceUserId: assignment.serviceUserId }),
212
+ role: ROLE_TO_WIRE[assignment.role],
213
+ });
214
+ }
215
+ }
216
+ for (const principal of principals) {
217
+ if (principal.hasRoleAssignment !== true || desired.has(principalKey(principal))) {
218
+ continue;
219
+ }
220
+ yield* environment.setEnvironmentRole({
221
+ environmentId,
222
+ userId: principal.userId || undefined,
223
+ serviceUserId: principal.serviceUserId || undefined,
224
+ role: "ENVIRONMENT_ROLE_UNSPECIFIED",
225
+ });
226
+ }
227
+ }
228
+ const final = yield* observe(desiredName);
229
+ return toAttrs(final ?? current);
230
+ }),
231
+ delete: Effect.fn(function* ({ output }) {
232
+ yield* environment
233
+ .deleteEnvironment({ name: output.name })
234
+ .pipe(Effect.catchTag("EnvironmentNotFound", () => Effect.void));
235
+ }),
236
+ list: Effect.fn(function* () {
237
+ const { items } = yield* environment.listEnvironment({});
238
+ return (items ?? [])
239
+ .filter((item) => !item.default && isGeneratedName(item.name))
240
+ .map(toAttrs);
241
+ }),
242
+ };
243
+ }));
244
+ //# sourceMappingURL=Environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Environment.js","sources":["../src/Environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,MAAM,OAAO,6BAA8B,SAAQ,IAAI,CAAC,WAAW,CACjE,qCAAqC,CAGrC;CAAG;AAKL,MAAM,YAAY,GAAG;IACnB,MAAM,EAAE,yBAAyB;IACjC,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE,4BAA4B;CAC8B,CAAC;AAE1E,MAAM,YAAY,GAAG,CAAC,IAAwB,EAA+B,EAAE,CAC5E,MAAM,CAAC,IAAI,CAAC,YAAY,CAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;AAqE7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,EAAe,CAAC,QAAQ,CAAc,mBAAmB,CAAC,CAAC,CAAC;AAoBjG,MAAM,WAAW,GAAG,CAClB,KAA0B,EAC4B,EAAE,CACxD,KAAK,KAAK,SAAS;IACjB,CAAC,CAAC,qDAAqD;IACvD,CAAC,CAAC,KAAK;QACL,CAAC,CAAC,mDAAmD;QACrD,CAAC,CAAC,mDAAmD,CAAC;AAE5D,MAAM,YAAY,GAAG,CAAC,CAA8C,EAAE,EAAE,CACtE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;AAErE,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE,CACtC,QAAQ,CAAC,MAAM,CACb,WAAW,EACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAY;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,CAAC,IAAqC,EAAyB,EAAE,CAAC,CAAC;QACjF,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,SAAS;QAC9C,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;QAChC,OAAO,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;KACjC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE;YACnC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1C,CAAC,CAAC;QAEF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YAC7C,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACjE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO,MAAM,KAAK,SAAS,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnF,CAAC,CAAC;QACF,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;YAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAErD,iEAAiE;YACjE,IAAI,OAAO,GACT,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;gBAClD,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAElD,SAAS;YACT,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,WAAW,KAAK,CAAC,CAAC;gBAC9D,KAAK,CAAC,CAAC,WAAW;qBACf,iBAAiB,CAAC;oBACjB,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,CAAC,OAAO;oBACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;wBACvC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;wBACtC,CAAC,CAAC,SAAS;iBACd,CAAC;qBACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACxE,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACtC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,KAAK,CAAC,CAAC,IAAI,6BAA6B,CAAC;wBAC9C,OAAO,EAAE,qBAAqB,WAAW,8BAA8B;qBACxE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,sEAAsE;YACtE,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACrE,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;YACzE,IACE,OAAO,CAAC,IAAI,KAAK,WAAW;gBAC5B,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,CAAC;gBAClF,CAAC,IAAI,CAAC,kBAAkB,KAAK,SAAS;oBACpC,OAAO,CAAC,kBAAkB,KAAK,IAAI,CAAC,kBAAkB,CAAC;gBACzD,CAAC,IAAI,CAAC,iBAAiB,KAAK,SAAS;oBACnC,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB,CAAC;gBACvD,CAAC,IAAI,CAAC,6BAA6B,KAAK,SAAS,IAAI,YAAY,KAAK,aAAa,CAAC,EACpF,CAAC;gBACD,KAAK,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC;oBACnC,WAAW,EAAE,OAAO,CAAC,IAAI;oBACzB,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,CAAC,aAAa;oBAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;oBAC3C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;oBACzC,6BAA6B,EAC3B,IAAI,CAAC,6BAA6B,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;iBAC9E,CAAC,CAAC;YACL,CAAC;YACD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;YAElD,8DAA8D;YAC9D,6DAA6D;YAC7D,kCAAkC;YAClC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,WAAW;iBAC9B,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC;iBACvC,IAAI,CACH,MAAM,CAAC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE,CACnD,MAAM,CAAC,OAAO,CAAoD,EAAE,CAAC,CACtE,CACF,CAAC;YACJ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,kBAAkB,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC3E,KAAK,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC;oBACtC,aAAa;oBACb,kBAAkB,EAAE,IAAI,CAAC,MAAM;iBAChC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBAChF,KAAK,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAChF,CAAC;YAED,iDAAiD;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC7C,KAAK,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC;oBACvC,aAAa;oBACb,OAAO;oBACP,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;wBACvC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;wBACtC,CAAC,CAAC,SAAS;iBACd,CAAC,CAAC;YACL,CAAC;YACD,IACE,IAAI,CAAC,iBAAiB,KAAK,SAAS;gBACpC,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,iBAAiB,EAClE,CAAC;gBACD,KAAK,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC;oBACjD,aAAa;oBACb,iBAAiB,EAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;iBACxD,CAAC,CAAC;YACL,CAAC;YAED,kEAAkE;YAClE,iEAAiE;YACjE,gEAAgE;YAChE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC3E,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CACvE,CAAC;gBACF,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;oBACnF,IACE,KAAK,KAAK,SAAS;wBACnB,KAAK,CAAC,iBAAiB,KAAK,IAAI;wBAChC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,IAAI,EAC5C,CAAC;wBACD,KAAK,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC;4BACpC,aAAa;4BACb,GAAG,CAAC,QAAQ,IAAI,UAAU;gCACxB,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;gCAC/B,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC;4BAChD,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;yBACpC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACnC,IAAI,SAAS,CAAC,iBAAiB,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;wBACjF,SAAS;oBACX,CAAC;oBACD,KAAK,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC;wBACpC,aAAa;wBACb,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,SAAS;wBACrC,aAAa,EAAE,SAAS,CAAC,aAAa,IAAI,SAAS;wBACnD,IAAI,EAAE,8BAA8B;qBACrC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1C,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE;YACrC,KAAK,CAAC,CAAC,WAAW;iBACf,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;iBACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;YACvB,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;iBACjB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7D,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,CAAC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
@@ -0,0 +1,105 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ import type { Input } from "alchemy/Input";
3
+ import type { Rpc } from "alchemy/Rpc";
4
+ import type { RuntimeContext } from "alchemy/RuntimeContext";
5
+ import type * as Effect from "effect/Effect";
6
+ import type * as HttpClientError from "effect/http/HttpClientError";
7
+ import type * as HttpClientRequest from "effect/http/HttpClientRequest";
8
+ import type * as HttpClientResponse from "effect/http/HttpClientResponse";
9
+ import type { Endpoint } from "./Endpoint.ts";
10
+ import type { ServerUrlMissing } from "./FetchServerHttp.ts";
11
+ import type { Function } from "./Function.ts";
12
+ import type { Server } from "./Server.ts";
13
+ /** Send requests to a deployed Modal Server, web Function or model Endpoint. */
14
+ export interface ServerClient {
15
+ /** The server's URL. */
16
+ readonly url: Effect.Effect<string, ServerUrlMissing, RuntimeContext>;
17
+ /**
18
+ * Send a request: its path and query are kept, the host is the server's,
19
+ * and Modal's proxy auth headers are added.
20
+ */
21
+ fetch(request: HttpClientRequest.HttpClientRequest): Effect.Effect<HttpClientResponse.HttpClientResponse, ServerUrlMissing | HttpClientError.HttpClientError, RuntimeContext>;
22
+ }
23
+ /**
24
+ * The client {@link FetchServer} returns: `url` and `fetch`, plus the RPC
25
+ * methods of a `Modal.Server` program (everything it returns besides
26
+ * `fetch` and `run`).
27
+ */
28
+ export type FetchClient<Shape> = ServerClient & Omit<Shape, "fetch" | "run" | "url">;
29
+ /**
30
+ * Call a `Modal.Server`, a `Modal.Function` with `web`, or a model
31
+ * `Modal.Endpoint` from any runtime. Servers and endpoints require Modal's
32
+ * proxy auth by default: the binding creates a `Modal.WebhookToken` for the
33
+ * host and sends its `Modal-Key` / `Modal-Secret` headers with every request.
34
+ *
35
+ * A `Modal.Server` program's RPC methods come back on the client too. Each
36
+ * call is a `POST /__rpc__/<method>` to the Server through Modal's proxy,
37
+ * with the arguments and result as JSON; a method that returns a `Stream`
38
+ * streams. The binding gives the host its own key for the Server, which
39
+ * every method call carries: the Server answers methods only for callers
40
+ * bound to it. It serves them only behind proxy auth, so an
41
+ * `unauthenticated` Server answers them with `404`.
42
+ *
43
+ * ### Call a Server
44
+ * **Example:** From a Cloudflare Worker
45
+ * ```typescript
46
+ * import * as Cloudflare from "@alchemy.run/cloudflare";
47
+ * import * as Modal from "@alchemy.run/modal";
48
+ * import * as Effect from "effect/Effect";
49
+ * import * as HttpClientRequest from "effect/http/HttpClientRequest";
50
+ * import * as HttpServerResponse from "effect/http/HttpServerResponse";
51
+ * import Api from "./Api.ts";
52
+ *
53
+ * export default class Gateway extends Cloudflare.Worker<Gateway>()(
54
+ * "Gateway",
55
+ * { main: import.meta.url },
56
+ * Effect.gen(function* () {
57
+ * const api = yield* Modal.FetchServer(Api);
58
+ * return {
59
+ * fetch: Effect.gen(function* () {
60
+ * const response = yield* api.fetch(HttpClientRequest.get("/health"));
61
+ * return HttpServerResponse.text(yield* response.text, { status: response.status });
62
+ * }).pipe(Effect.orDie),
63
+ * };
64
+ * }).pipe(Effect.provide(Modal.FetchServerHttp)),
65
+ * ) {}
66
+ * ```
67
+ *
68
+ * ### Call a Server's methods
69
+ * **Example:** RPC methods next to `fetch`
70
+ * ```typescript
71
+ * // src/Api.ts
72
+ * export default class Api extends Modal.Server<Api>()(
73
+ * "Api",
74
+ * { main: import.meta.url, app: Backend },
75
+ * Effect.gen(function* () {
76
+ * return {
77
+ * greet: Effect.fn(function* (name: string) {
78
+ * return `hello ${name}`;
79
+ * }),
80
+ * fetch: Effect.succeed(HttpServerResponse.text("ok")),
81
+ * };
82
+ * }),
83
+ * ) {}
84
+ * ```
85
+ *
86
+ * **Example:** Call them from a Cloudflare Worker
87
+ * ```typescript
88
+ * const api = yield* Modal.FetchServer(Api);
89
+ * const greeting = yield* api.greet("modal");
90
+ * ```
91
+ *
92
+ * @binding
93
+ * @product Server
94
+ */
95
+ export interface FetchServer extends Binding.Service<FetchServer, "Modal.FetchServer", (server: Server | Function | Endpoint) => Effect.Effect<ServerClient>> {
96
+ }
97
+ /** FetchServer's call signatures, typed from the target's program. */
98
+ export interface FetchServerCall {
99
+ /** A `Modal.Server` of the Stack: `url`, `fetch` and its program's RPC methods. */
100
+ <Shape, Req = never>(server: (Server & Rpc<Shape>) | Effect.Effect<Server & Rpc<Shape>, never, Req>): Effect.Effect<FetchClient<Shape>, never, FetchServer | Req>;
101
+ /** A web Function, a model Endpoint, or an async Server: `url` and `fetch`. */
102
+ <Req = never>(server: Input<Server | Function | Endpoint> | Effect.Effect<Server | Function | Endpoint, never, Req>): Effect.Effect<ServerClient, never, FetchServer | Req>;
103
+ }
104
+ export declare const FetchServer: FetchServerCall & FetchServer;
105
+ //# sourceMappingURL=FetchServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FetchServer.d.ts","sources":["../src/FetchServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,KAAK,eAAe,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,KAAK,kBAAkB,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACtE;;;OAGG;IACH,KAAK,CACH,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,GAC3C,MAAM,CAAC,MAAM,CACd,kBAAkB,CAAC,kBAAkB,EACrC,gBAAgB,GAAG,eAAe,CAAC,eAAe,EAClD,cAAc,CACf,CAAC;CACH;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO,CAAC,OAAO,CAClD,WAAW,EACX,mBAAmB,EACnB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CACtE;CAAG;AAEJ,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,EACjB,MAAM,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAC7E,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,CAAC;IAC/D,+EAA+E;IAC/E,CAAC,GAAG,GAAG,KAAK,EACV,MAAM,EACF,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC,GACnC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,GAC1D,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,CAAC;CAC1D;AAED,eAAO,MAAM,WAAW,EAER,eAAe,GAAG,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const FetchServer = Binding.Service("Modal.FetchServer");
3
+ //# sourceMappingURL=FetchServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FetchServer.js","sources":["../src/FetchServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA2H3C,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CACxC,mBAAmB,CACwB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { FetchServer } from "./FetchServer.ts";
3
+ declare const ServerUrlMissing_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 & {
4
+ readonly _tag: "Modal.ServerUrlMissing";
5
+ } & Readonly<A>;
6
+ /** The server has no URL (a Function without `web`, or a deploy still in progress). */
7
+ export declare class ServerUrlMissing extends ServerUrlMissing_base<{
8
+ readonly message: string;
9
+ }> {
10
+ }
11
+ /**
12
+ * {@link FetchServer} over HTTP. Creates one `Modal.WebhookToken` per host
13
+ * (`<host>ProxyAuth`) and binds its header pair into the host's env.
14
+ *
15
+ * @layer
16
+ * @product Server
17
+ * @provides Modal.FetchServer
18
+ */
19
+ export declare const FetchServerHttp: Layer.Layer<FetchServer, never, never>;
20
+ export {};
21
+ //# sourceMappingURL=FetchServerHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FetchServerHttp.d.ts","sources":["../src/FetchServerHttp.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAqB,MAAM,kBAAkB,CAAC;;;;AAOlE,uFAAuF;AACvF,qBAAa,gBAAiB,SAAQ,sBAA2C;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;AAKL;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,wCA4E3B,CAAC"}
@@ -0,0 +1,84 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ import { makeFetchRpcStub } from "alchemy/Rpc";
3
+ import { CurrentRuntimeContext } from "alchemy/RuntimeContext";
4
+ import * as Data from "effect/Data";
5
+ import * as Effect from "effect/Effect";
6
+ import * as HttpClient from "effect/http/HttpClient";
7
+ import * as HttpClientRequest from "effect/http/HttpClientRequest";
8
+ import * as Layer from "effect/Layer";
9
+ import * as Redacted from "effect/Redacted";
10
+ import { FetchServer } from "./FetchServer.js";
11
+ import { RPC_KEY_HEADER, RpcCaller } from "./internal/RpcAuth.js";
12
+ import * as ModalBindings from "./ModalBindings.js";
13
+ import { WebhookToken } from "./WebhookToken.js";
14
+ /** The server has no URL (a Function without `web`, or a deploy still in progress). */
15
+ export class ServerUrlMissing extends Data.TaggedError("Modal.ServerUrlMissing") {
16
+ }
17
+ /** Env the host's proxy auth token is bound under. */
18
+ const PROXY_ENV = { key: "MODAL_PROXY_KEY", secret: "MODAL_PROXY_SECRET" };
19
+ /**
20
+ * {@link FetchServer} over HTTP. Creates one `Modal.WebhookToken` per host
21
+ * (`<host>ProxyAuth`) and binds its header pair into the host's env.
22
+ *
23
+ * @layer
24
+ * @product Server
25
+ * @provides Modal.FetchServer
26
+ */
27
+ export const FetchServerHttp = Layer.effect(FetchServer, Effect.gen(function* () {
28
+ // No Modal API calls: the client only needs the host's HTTP client.
29
+ const http = yield* ModalBindings.withCredentials(HttpClient.HttpClient);
30
+ const bind = yield* ModalBindings.Bind;
31
+ const runtime = yield* CurrentRuntimeContext;
32
+ // Deploy only: a host bundle never creates the token.
33
+ const Token = globalThis.__ALCHEMY_RUNTIME__ ? undefined : yield* WebhookToken;
34
+ const caller = yield* RpcCaller;
35
+ return Effect.fn("Modal.FetchServer")(function* (server) {
36
+ if (!globalThis.__ALCHEMY_RUNTIME__) {
37
+ const host = yield* Binding.Host;
38
+ if (host !== undefined && Token !== undefined) {
39
+ const token = yield* Token(`${host.LogicalId}ProxyAuth`, {});
40
+ yield* bind `Modal.FetchServer(${server})`({
41
+ env: { [PROXY_ENV.key]: token.tokenId, [PROXY_ENV.secret]: token.tokenSecret },
42
+ });
43
+ }
44
+ }
45
+ // This host's key for the Server's RPC methods (minted at deploy).
46
+ const key = yield* caller(server);
47
+ const url = yield* server.url;
48
+ const resolvedUrl = Effect.flatMap(url, (value) => value
49
+ ? Effect.succeed(value)
50
+ : Effect.fail(new ServerUrlMissing({
51
+ message: "The server has no URL: deploy it as a Modal.Server, a Modal.Function with web, or a Modal.Endpoint",
52
+ })));
53
+ const headers = Effect.gen(function* () {
54
+ if (runtime === undefined)
55
+ return {};
56
+ const key = yield* runtime.get(PROXY_ENV.key);
57
+ const secret = yield* runtime.get(PROXY_ENV.secret);
58
+ if (key === undefined || secret === undefined)
59
+ return {};
60
+ return {
61
+ "Modal-Key": key,
62
+ "Modal-Secret": Redacted.isRedacted(secret) ? Redacted.value(secret) : secret,
63
+ };
64
+ });
65
+ const client = {
66
+ url: resolvedUrl,
67
+ fetch: (request) => Effect.gen(function* () {
68
+ const base = yield* resolvedUrl;
69
+ const target = new URL(request.url, "http://server");
70
+ // The Stack's own deployed server (allowed raw HTTP).
71
+ return yield* http.execute(request.pipe(HttpClientRequest.setUrl(`${base.replace(/\/$/, "")}${target.pathname}${target.search}`), HttpClientRequest.setHeaders(yield* headers)));
72
+ }),
73
+ };
74
+ // Every other member is an RPC method of the Server's program.
75
+ return makeFetchRpcStub({
76
+ // RPC calls carry the key; the Server serves only callers it issued keys to.
77
+ fetch: (request) => Effect.flatMap(key, (value) => client.fetch(value === undefined
78
+ ? request
79
+ : request.pipe(HttpClientRequest.setHeader(RPC_KEY_HEADER, value)))),
80
+ base: client,
81
+ });
82
+ });
83
+ }));
84
+ //# sourceMappingURL=FetchServerHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FetchServerHttp.js","sources":["../src/FetchServerHttp.ts"],"names":[],"mappings":"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"}