@alchemy.run/fly 0.0.0 → 2.0.0-beta.85

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 +57 -4
  3. package/lib/App.d.ts +230 -0
  4. package/lib/App.d.ts.map +1 -0
  5. package/lib/App.js +338 -0
  6. package/lib/App.js.map +1 -0
  7. package/lib/AuthProvider.d.ts +22 -0
  8. package/lib/AuthProvider.d.ts.map +1 -0
  9. package/lib/AuthProvider.js +48 -0
  10. package/lib/AuthProvider.js.map +1 -0
  11. package/lib/BindService.d.ts +159 -0
  12. package/lib/BindService.d.ts.map +1 -0
  13. package/lib/BindService.js +222 -0
  14. package/lib/BindService.js.map +1 -0
  15. package/lib/Bootstrap.d.ts +8 -0
  16. package/lib/Bootstrap.d.ts.map +1 -0
  17. package/lib/Bootstrap.js +41 -0
  18. package/lib/Bootstrap.js.map +1 -0
  19. package/lib/Bucket.d.ts +278 -0
  20. package/lib/Bucket.d.ts.map +1 -0
  21. package/lib/Bucket.js +658 -0
  22. package/lib/Bucket.js.map +1 -0
  23. package/lib/BucketBinding.d.ts +33 -0
  24. package/lib/BucketBinding.d.ts.map +1 -0
  25. package/lib/BucketBinding.js +70 -0
  26. package/lib/BucketBinding.js.map +1 -0
  27. package/lib/Catalog.d.ts +28 -0
  28. package/lib/Catalog.d.ts.map +1 -0
  29. package/lib/Catalog.js +31 -0
  30. package/lib/Catalog.js.map +1 -0
  31. package/lib/Certificate.d.ts +189 -0
  32. package/lib/Certificate.d.ts.map +1 -0
  33. package/lib/Certificate.js +380 -0
  34. package/lib/Certificate.js.map +1 -0
  35. package/lib/Checkpoint.d.ts +55 -0
  36. package/lib/Checkpoint.d.ts.map +1 -0
  37. package/lib/Checkpoint.js +3 -0
  38. package/lib/Checkpoint.js.map +1 -0
  39. package/lib/CheckpointHttp.d.ts +22 -0
  40. package/lib/CheckpointHttp.d.ts.map +1 -0
  41. package/lib/CheckpointHttp.js +53 -0
  42. package/lib/CheckpointHttp.js.map +1 -0
  43. package/lib/ConnectPostgres.d.ts +58 -0
  44. package/lib/ConnectPostgres.d.ts.map +1 -0
  45. package/lib/ConnectPostgres.js +13 -0
  46. package/lib/ConnectPostgres.js.map +1 -0
  47. package/lib/ConnectPostgresHttp.d.ts +26 -0
  48. package/lib/ConnectPostgresHttp.d.ts.map +1 -0
  49. package/lib/ConnectPostgresHttp.js +57 -0
  50. package/lib/ConnectPostgresHttp.js.map +1 -0
  51. package/lib/Contributions.d.ts +7 -0
  52. package/lib/Contributions.d.ts.map +1 -0
  53. package/lib/Contributions.js +6 -0
  54. package/lib/Contributions.js.map +1 -0
  55. package/lib/Credentials.d.ts +33 -0
  56. package/lib/Credentials.d.ts.map +1 -0
  57. package/lib/Credentials.js +55 -0
  58. package/lib/Credentials.js.map +1 -0
  59. package/lib/Decrypt.d.ts +52 -0
  60. package/lib/Decrypt.d.ts.map +1 -0
  61. package/lib/Decrypt.js +3 -0
  62. package/lib/Decrypt.js.map +1 -0
  63. package/lib/DecryptHttp.d.ts +22 -0
  64. package/lib/DecryptHttp.d.ts.map +1 -0
  65. package/lib/DecryptHttp.js +43 -0
  66. package/lib/DecryptHttp.js.map +1 -0
  67. package/lib/DeleteObject.d.ts +29 -0
  68. package/lib/DeleteObject.d.ts.map +1 -0
  69. package/lib/DeleteObject.js +3 -0
  70. package/lib/DeleteObject.js.map +1 -0
  71. package/lib/DeleteObjectHttp.d.ts +12 -0
  72. package/lib/DeleteObjectHttp.d.ts.map +1 -0
  73. package/lib/DeleteObjectHttp.js +17 -0
  74. package/lib/DeleteObjectHttp.js.map +1 -0
  75. package/lib/Deployment.d.ts +51 -0
  76. package/lib/Deployment.d.ts.map +1 -0
  77. package/lib/Deployment.js +62 -0
  78. package/lib/Deployment.js.map +1 -0
  79. package/lib/DeploymentImages.d.ts +18 -0
  80. package/lib/DeploymentImages.d.ts.map +1 -0
  81. package/lib/DeploymentImages.js +61 -0
  82. package/lib/DeploymentImages.js.map +1 -0
  83. package/lib/DeploymentState.d.ts +17 -0
  84. package/lib/DeploymentState.d.ts.map +1 -0
  85. package/lib/DeploymentState.js +87 -0
  86. package/lib/DeploymentState.js.map +1 -0
  87. package/lib/Encrypt.d.ts +50 -0
  88. package/lib/Encrypt.d.ts.map +1 -0
  89. package/lib/Encrypt.js +3 -0
  90. package/lib/Encrypt.js.map +1 -0
  91. package/lib/EncryptHttp.d.ts +22 -0
  92. package/lib/EncryptHttp.d.ts.map +1 -0
  93. package/lib/EncryptHttp.js +39 -0
  94. package/lib/EncryptHttp.js.map +1 -0
  95. package/lib/Environment.d.ts +45 -0
  96. package/lib/Environment.d.ts.map +1 -0
  97. package/lib/Environment.js +43 -0
  98. package/lib/Environment.js.map +1 -0
  99. package/lib/Errors.d.ts +18 -0
  100. package/lib/Errors.d.ts.map +1 -0
  101. package/lib/Errors.js +13 -0
  102. package/lib/Errors.js.map +1 -0
  103. package/lib/Exec.d.ts +41 -0
  104. package/lib/Exec.d.ts.map +1 -0
  105. package/lib/Exec.js +3 -0
  106. package/lib/Exec.js.map +1 -0
  107. package/lib/ExecHttp.d.ts +22 -0
  108. package/lib/ExecHttp.d.ts.map +1 -0
  109. package/lib/ExecHttp.js +39 -0
  110. package/lib/ExecHttp.js.map +1 -0
  111. package/lib/GetObject.d.ts +34 -0
  112. package/lib/GetObject.d.ts.map +1 -0
  113. package/lib/GetObject.js +3 -0
  114. package/lib/GetObject.js.map +1 -0
  115. package/lib/GetObjectHttp.d.ts +12 -0
  116. package/lib/GetObjectHttp.d.ts.map +1 -0
  117. package/lib/GetObjectHttp.js +17 -0
  118. package/lib/GetObjectHttp.js.map +1 -0
  119. package/lib/GetSecret.d.ts +44 -0
  120. package/lib/GetSecret.d.ts.map +1 -0
  121. package/lib/GetSecret.js +3 -0
  122. package/lib/GetSecret.js.map +1 -0
  123. package/lib/GetSecretHttp.d.ts +22 -0
  124. package/lib/GetSecretHttp.d.ts.map +1 -0
  125. package/lib/GetSecretHttp.js +50 -0
  126. package/lib/GetSecretHttp.js.map +1 -0
  127. package/lib/HeadObject.d.ts +29 -0
  128. package/lib/HeadObject.d.ts.map +1 -0
  129. package/lib/HeadObject.js +3 -0
  130. package/lib/HeadObject.js.map +1 -0
  131. package/lib/HeadObjectHttp.d.ts +12 -0
  132. package/lib/HeadObjectHttp.d.ts.map +1 -0
  133. package/lib/HeadObjectHttp.js +17 -0
  134. package/lib/HeadObjectHttp.js.map +1 -0
  135. package/lib/IpAssignment.d.ts +258 -0
  136. package/lib/IpAssignment.d.ts.map +1 -0
  137. package/lib/IpAssignment.js +376 -0
  138. package/lib/IpAssignment.js.map +1 -0
  139. package/lib/ListObjectsV2.d.ts +29 -0
  140. package/lib/ListObjectsV2.d.ts.map +1 -0
  141. package/lib/ListObjectsV2.js +3 -0
  142. package/lib/ListObjectsV2.js.map +1 -0
  143. package/lib/ListObjectsV2Http.d.ts +12 -0
  144. package/lib/ListObjectsV2Http.d.ts.map +1 -0
  145. package/lib/ListObjectsV2Http.js +17 -0
  146. package/lib/ListObjectsV2Http.js.map +1 -0
  147. package/lib/ListSecrets.d.ts +53 -0
  148. package/lib/ListSecrets.d.ts.map +1 -0
  149. package/lib/ListSecrets.js +3 -0
  150. package/lib/ListSecrets.js.map +1 -0
  151. package/lib/ListSecretsHttp.d.ts +22 -0
  152. package/lib/ListSecretsHttp.d.ts.map +1 -0
  153. package/lib/ListSecretsHttp.js +35 -0
  154. package/lib/ListSecretsHttp.js.map +1 -0
  155. package/lib/Machine.d.ts +802 -0
  156. package/lib/Machine.d.ts.map +1 -0
  157. package/lib/Machine.js +773 -0
  158. package/lib/Machine.js.map +1 -0
  159. package/lib/MachineContainers.d.ts +44 -0
  160. package/lib/MachineContainers.d.ts.map +1 -0
  161. package/lib/MachineContainers.js +115 -0
  162. package/lib/MachineContainers.js.map +1 -0
  163. package/lib/Metadata.d.ts +109 -0
  164. package/lib/Metadata.d.ts.map +1 -0
  165. package/lib/Metadata.js +159 -0
  166. package/lib/Metadata.js.map +1 -0
  167. package/lib/MountVolume.d.ts +295 -0
  168. package/lib/MountVolume.d.ts.map +1 -0
  169. package/lib/MountVolume.js +20 -0
  170. package/lib/MountVolume.js.map +1 -0
  171. package/lib/Postgres.d.ts +298 -0
  172. package/lib/Postgres.d.ts.map +1 -0
  173. package/lib/Postgres.js +508 -0
  174. package/lib/Postgres.js.map +1 -0
  175. package/lib/PostgresMigrations.d.ts +20 -0
  176. package/lib/PostgresMigrations.d.ts.map +1 -0
  177. package/lib/PostgresMigrations.js +58 -0
  178. package/lib/PostgresMigrations.js.map +1 -0
  179. package/lib/Providers.d.ts +38 -0
  180. package/lib/Providers.d.ts.map +1 -0
  181. package/lib/Providers.js +95 -0
  182. package/lib/Providers.js.map +1 -0
  183. package/lib/PutObject.d.ts +35 -0
  184. package/lib/PutObject.d.ts.map +1 -0
  185. package/lib/PutObject.js +3 -0
  186. package/lib/PutObject.js.map +1 -0
  187. package/lib/PutObjectHttp.d.ts +12 -0
  188. package/lib/PutObjectHttp.d.ts.map +1 -0
  189. package/lib/PutObjectHttp.js +17 -0
  190. package/lib/PutObjectHttp.js.map +1 -0
  191. package/lib/ReadRedis.d.ts +26 -0
  192. package/lib/ReadRedis.d.ts.map +1 -0
  193. package/lib/ReadRedis.js +3 -0
  194. package/lib/ReadRedis.js.map +1 -0
  195. package/lib/ReadRedisHttp.d.ts +11 -0
  196. package/lib/ReadRedisHttp.d.ts.map +1 -0
  197. package/lib/ReadRedisHttp.js +15 -0
  198. package/lib/ReadRedisHttp.js.map +1 -0
  199. package/lib/ReadWriteRedis.d.ts +29 -0
  200. package/lib/ReadWriteRedis.d.ts.map +1 -0
  201. package/lib/ReadWriteRedis.js +3 -0
  202. package/lib/ReadWriteRedis.js.map +1 -0
  203. package/lib/ReadWriteRedisHttp.d.ts +11 -0
  204. package/lib/ReadWriteRedisHttp.d.ts.map +1 -0
  205. package/lib/ReadWriteRedisHttp.js +15 -0
  206. package/lib/ReadWriteRedisHttp.js.map +1 -0
  207. package/lib/Redis.d.ts +252 -0
  208. package/lib/Redis.d.ts.map +1 -0
  209. package/lib/Redis.js +611 -0
  210. package/lib/Redis.js.map +1 -0
  211. package/lib/RedisBinding.d.ts +7 -0
  212. package/lib/RedisBinding.d.ts.map +1 -0
  213. package/lib/RedisBinding.js +53 -0
  214. package/lib/RedisBinding.js.map +1 -0
  215. package/lib/RedisHttp.d.ts +8 -0
  216. package/lib/RedisHttp.d.ts.map +1 -0
  217. package/lib/RedisHttp.js +11 -0
  218. package/lib/RedisHttp.js.map +1 -0
  219. package/lib/Region.d.ts +16 -0
  220. package/lib/Region.d.ts.map +1 -0
  221. package/lib/Region.js +13 -0
  222. package/lib/Region.js.map +1 -0
  223. package/lib/Secret.d.ts +190 -0
  224. package/lib/Secret.d.ts.map +1 -0
  225. package/lib/Secret.js +310 -0
  226. package/lib/Secret.js.map +1 -0
  227. package/lib/SecretHttp.d.ts +54 -0
  228. package/lib/SecretHttp.d.ts.map +1 -0
  229. package/lib/SecretHttp.js +66 -0
  230. package/lib/SecretHttp.js.map +1 -0
  231. package/lib/SecretKey.d.ts +164 -0
  232. package/lib/SecretKey.d.ts.map +1 -0
  233. package/lib/SecretKey.js +277 -0
  234. package/lib/SecretKey.js.map +1 -0
  235. package/lib/SecretKeyHttp.d.ts +14 -0
  236. package/lib/SecretKeyHttp.d.ts.map +1 -0
  237. package/lib/SecretKeyHttp.js +5 -0
  238. package/lib/SecretKeyHttp.js.map +1 -0
  239. package/lib/Service.d.ts +1017 -0
  240. package/lib/Service.d.ts.map +1 -0
  241. package/lib/Service.js +1430 -0
  242. package/lib/Service.js.map +1 -0
  243. package/lib/Sign.d.ts +36 -0
  244. package/lib/Sign.d.ts.map +1 -0
  245. package/lib/Sign.js +3 -0
  246. package/lib/Sign.js.map +1 -0
  247. package/lib/SignHttp.d.ts +22 -0
  248. package/lib/SignHttp.d.ts.map +1 -0
  249. package/lib/SignHttp.js +36 -0
  250. package/lib/SignHttp.js.map +1 -0
  251. package/lib/Sprite.d.ts +283 -0
  252. package/lib/Sprite.d.ts.map +1 -0
  253. package/lib/Sprite.js +471 -0
  254. package/lib/Sprite.js.map +1 -0
  255. package/lib/SpriteHttp.d.ts +25 -0
  256. package/lib/SpriteHttp.d.ts.map +1 -0
  257. package/lib/SpriteHttp.js +33 -0
  258. package/lib/SpriteHttp.js.map +1 -0
  259. package/lib/Verify.d.ts +37 -0
  260. package/lib/Verify.d.ts.map +1 -0
  261. package/lib/Verify.js +3 -0
  262. package/lib/Verify.js.map +1 -0
  263. package/lib/VerifyHttp.d.ts +22 -0
  264. package/lib/VerifyHttp.d.ts.map +1 -0
  265. package/lib/VerifyHttp.js +38 -0
  266. package/lib/VerifyHttp.js.map +1 -0
  267. package/lib/Volume.d.ts +53 -0
  268. package/lib/Volume.d.ts.map +1 -0
  269. package/lib/Volume.js +188 -0
  270. package/lib/Volume.js.map +1 -0
  271. package/lib/VolumeSnapshot.d.ts +135 -0
  272. package/lib/VolumeSnapshot.d.ts.map +1 -0
  273. package/lib/VolumeSnapshot.js +213 -0
  274. package/lib/VolumeSnapshot.js.map +1 -0
  275. package/lib/Website/AssetDeployment.d.ts +43 -0
  276. package/lib/Website/AssetDeployment.d.ts.map +1 -0
  277. package/lib/Website/AssetDeployment.js +162 -0
  278. package/lib/Website/AssetDeployment.js.map +1 -0
  279. package/lib/Website/Astro.d.ts +89 -0
  280. package/lib/Website/Astro.d.ts.map +1 -0
  281. package/lib/Website/Astro.js +54 -0
  282. package/lib/Website/Astro.js.map +1 -0
  283. package/lib/Website/Foldkit.d.ts +52 -0
  284. package/lib/Website/Foldkit.d.ts.map +1 -0
  285. package/lib/Website/Foldkit.js +45 -0
  286. package/lib/Website/Foldkit.js.map +1 -0
  287. package/lib/Website/FrameworkSite.d.ts +212 -0
  288. package/lib/Website/FrameworkSite.d.ts.map +1 -0
  289. package/lib/Website/FrameworkSite.js +205 -0
  290. package/lib/Website/FrameworkSite.js.map +1 -0
  291. package/lib/Website/Nextjs.d.ts +54 -0
  292. package/lib/Website/Nextjs.d.ts.map +1 -0
  293. package/lib/Website/Nextjs.js +46 -0
  294. package/lib/Website/Nextjs.js.map +1 -0
  295. package/lib/Website/Nuxt.d.ts +51 -0
  296. package/lib/Website/Nuxt.d.ts.map +1 -0
  297. package/lib/Website/Nuxt.js +36 -0
  298. package/lib/Website/Nuxt.js.map +1 -0
  299. package/lib/Website/Octane.d.ts +49 -0
  300. package/lib/Website/Octane.d.ts.map +1 -0
  301. package/lib/Website/Octane.js +39 -0
  302. package/lib/Website/Octane.js.map +1 -0
  303. package/lib/Website/ReactRouter.d.ts +80 -0
  304. package/lib/Website/ReactRouter.d.ts.map +1 -0
  305. package/lib/Website/ReactRouter.js +70 -0
  306. package/lib/Website/ReactRouter.js.map +1 -0
  307. package/lib/Website/SolidStart.d.ts +93 -0
  308. package/lib/Website/SolidStart.d.ts.map +1 -0
  309. package/lib/Website/SolidStart.js +71 -0
  310. package/lib/Website/SolidStart.js.map +1 -0
  311. package/lib/Website/StaticSite.d.ts +162 -0
  312. package/lib/Website/StaticSite.d.ts.map +1 -0
  313. package/lib/Website/StaticSite.js +180 -0
  314. package/lib/Website/StaticSite.js.map +1 -0
  315. package/lib/Website/SvelteKit.d.ts +52 -0
  316. package/lib/Website/SvelteKit.d.ts.map +1 -0
  317. package/lib/Website/SvelteKit.js +37 -0
  318. package/lib/Website/SvelteKit.js.map +1 -0
  319. package/lib/Website/TanStackStart.d.ts +76 -0
  320. package/lib/Website/TanStackStart.d.ts.map +1 -0
  321. package/lib/Website/TanStackStart.js +66 -0
  322. package/lib/Website/TanStackStart.js.map +1 -0
  323. package/lib/Website/Vinext.d.ts +73 -0
  324. package/lib/Website/Vinext.d.ts.map +1 -0
  325. package/lib/Website/Vinext.js +67 -0
  326. package/lib/Website/Vinext.js.map +1 -0
  327. package/lib/Website/Vite.d.ts +112 -0
  328. package/lib/Website/Vite.d.ts.map +1 -0
  329. package/lib/Website/Vite.js +100 -0
  330. package/lib/Website/Vite.js.map +1 -0
  331. package/lib/Website/Vocs.d.ts +52 -0
  332. package/lib/Website/Vocs.d.ts.map +1 -0
  333. package/lib/Website/Vocs.js +38 -0
  334. package/lib/Website/Vocs.js.map +1 -0
  335. package/lib/Website/Waku.d.ts +64 -0
  336. package/lib/Website/Waku.d.ts.map +1 -0
  337. package/lib/Website/Waku.js +39 -0
  338. package/lib/Website/Waku.js.map +1 -0
  339. package/lib/Website/index.d.ts +17 -0
  340. package/lib/Website/index.d.ts.map +1 -0
  341. package/lib/Website/index.js +17 -0
  342. package/lib/Website/index.js.map +1 -0
  343. package/lib/WriteCertificates.d.ts +63 -0
  344. package/lib/WriteCertificates.d.ts.map +1 -0
  345. package/lib/WriteCertificates.js +3 -0
  346. package/lib/WriteCertificates.js.map +1 -0
  347. package/lib/WriteCertificatesHttp.d.ts +25 -0
  348. package/lib/WriteCertificatesHttp.d.ts.map +1 -0
  349. package/lib/WriteCertificatesHttp.js +67 -0
  350. package/lib/WriteCertificatesHttp.js.map +1 -0
  351. package/lib/WriteRedis.d.ts +26 -0
  352. package/lib/WriteRedis.d.ts.map +1 -0
  353. package/lib/WriteRedis.js +3 -0
  354. package/lib/WriteRedis.js.map +1 -0
  355. package/lib/WriteRedisHttp.d.ts +11 -0
  356. package/lib/WriteRedisHttp.d.ts.map +1 -0
  357. package/lib/WriteRedisHttp.js +15 -0
  358. package/lib/WriteRedisHttp.js.map +1 -0
  359. package/lib/WriteSecret.d.ts +68 -0
  360. package/lib/WriteSecret.d.ts.map +1 -0
  361. package/lib/WriteSecret.js +4 -0
  362. package/lib/WriteSecret.js.map +1 -0
  363. package/lib/WriteSecretHttp.d.ts +26 -0
  364. package/lib/WriteSecretHttp.d.ts.map +1 -0
  365. package/lib/WriteSecretHttp.js +54 -0
  366. package/lib/WriteSecretHttp.js.map +1 -0
  367. package/lib/bluegreen.d.ts +36 -0
  368. package/lib/bluegreen.d.ts.map +1 -0
  369. package/lib/bluegreen.js +460 -0
  370. package/lib/bluegreen.js.map +1 -0
  371. package/lib/hosted.d.ts +171 -0
  372. package/lib/hosted.d.ts.map +1 -0
  373. package/lib/hosted.js +458 -0
  374. package/lib/hosted.js.map +1 -0
  375. package/lib/index.d.ts +65 -0
  376. package/lib/index.d.ts.map +1 -0
  377. package/lib/index.js +63 -0
  378. package/lib/index.js.map +1 -0
  379. package/lib/internal/RemoteBuilder.d.ts +28 -0
  380. package/lib/internal/RemoteBuilder.d.ts.map +1 -0
  381. package/lib/internal/RemoteBuilder.js +158 -0
  382. package/lib/internal/RemoteBuilder.js.map +1 -0
  383. package/lib/leases.d.ts +53 -0
  384. package/lib/leases.d.ts.map +1 -0
  385. package/lib/leases.js +279 -0
  386. package/lib/leases.js.map +1 -0
  387. package/lib/ports.d.ts +51 -0
  388. package/lib/ports.d.ts.map +1 -0
  389. package/lib/ports.js +123 -0
  390. package/lib/ports.js.map +1 -0
  391. package/lib/replicas.d.ts +270 -0
  392. package/lib/replicas.d.ts.map +1 -0
  393. package/lib/replicas.js +969 -0
  394. package/lib/replicas.js.map +1 -0
  395. package/lib/rpc.d.ts +35 -0
  396. package/lib/rpc.d.ts.map +1 -0
  397. package/lib/rpc.js +113 -0
  398. package/lib/rpc.js.map +1 -0
  399. package/package.json +83 -3
  400. package/src/App.ts +514 -0
  401. package/src/AuthProvider.ts +68 -0
  402. package/src/BindService.ts +303 -0
  403. package/src/Bootstrap.ts +66 -0
  404. package/src/Bucket.ts +918 -0
  405. package/src/BucketBinding.ts +128 -0
  406. package/src/Catalog.ts +43 -0
  407. package/src/Certificate.ts +548 -0
  408. package/src/Checkpoint.ts +69 -0
  409. package/src/CheckpointHttp.ts +66 -0
  410. package/src/ConnectPostgres.ts +68 -0
  411. package/src/ConnectPostgresHttp.ts +77 -0
  412. package/src/Contributions.ts +9 -0
  413. package/src/Credentials.ts +75 -0
  414. package/src/Decrypt.ts +62 -0
  415. package/src/DecryptHttp.ts +52 -0
  416. package/src/DeleteObject.ts +43 -0
  417. package/src/DeleteObjectHttp.ts +20 -0
  418. package/src/Deployment.ts +121 -0
  419. package/src/DeploymentImages.ts +84 -0
  420. package/src/DeploymentState.ts +104 -0
  421. package/src/Encrypt.ts +60 -0
  422. package/src/EncryptHttp.ts +48 -0
  423. package/src/Environment.ts +81 -0
  424. package/src/Errors.ts +14 -0
  425. package/src/Exec.ts +50 -0
  426. package/src/ExecHttp.ts +47 -0
  427. package/src/GetObject.ts +48 -0
  428. package/src/GetObjectHttp.ts +20 -0
  429. package/src/GetSecret.ts +48 -0
  430. package/src/GetSecretHttp.ts +60 -0
  431. package/src/HeadObject.ts +43 -0
  432. package/src/HeadObjectHttp.ts +20 -0
  433. package/src/IpAssignment.ts +522 -0
  434. package/src/ListObjectsV2.ts +43 -0
  435. package/src/ListObjectsV2Http.ts +20 -0
  436. package/src/ListSecrets.ts +57 -0
  437. package/src/ListSecretsHttp.ts +43 -0
  438. package/src/Machine.ts +1270 -0
  439. package/src/MachineContainers.ts +152 -0
  440. package/src/Metadata.ts +195 -0
  441. package/src/MountVolume.ts +315 -0
  442. package/src/Postgres.ts +777 -0
  443. package/src/PostgresMigrations.ts +93 -0
  444. package/src/Providers.ts +155 -0
  445. package/src/PutObject.ts +49 -0
  446. package/src/PutObjectHttp.ts +20 -0
  447. package/src/ReadRedis.ts +31 -0
  448. package/src/ReadRedisHttp.ts +18 -0
  449. package/src/ReadWriteRedis.ts +33 -0
  450. package/src/ReadWriteRedisHttp.ts +18 -0
  451. package/src/Redis.ts +823 -0
  452. package/src/RedisBinding.ts +64 -0
  453. package/src/RedisHttp.ts +14 -0
  454. package/src/Region.ts +44 -0
  455. package/src/Secret.ts +405 -0
  456. package/src/SecretHttp.ts +149 -0
  457. package/src/SecretKey.ts +389 -0
  458. package/src/SecretKeyHttp.ts +23 -0
  459. package/src/Service.ts +1968 -0
  460. package/src/Sign.ts +46 -0
  461. package/src/SignHttp.ts +44 -0
  462. package/src/Sprite.ts +673 -0
  463. package/src/SpriteHttp.ts +50 -0
  464. package/src/Verify.ts +47 -0
  465. package/src/VerifyHttp.ts +46 -0
  466. package/src/Volume.ts +264 -0
  467. package/src/VolumeSnapshot.ts +321 -0
  468. package/src/Website/AssetDeployment.ts +292 -0
  469. package/src/Website/Astro.ts +92 -0
  470. package/src/Website/Foldkit.ts +54 -0
  471. package/src/Website/FrameworkSite.ts +449 -0
  472. package/src/Website/Nextjs.ts +50 -0
  473. package/src/Website/Nuxt.ts +48 -0
  474. package/src/Website/Octane.ts +44 -0
  475. package/src/Website/ReactRouter.ts +76 -0
  476. package/src/Website/SolidStart.ts +90 -0
  477. package/src/Website/StaticSite.ts +295 -0
  478. package/src/Website/SvelteKit.ts +49 -0
  479. package/src/Website/TanStackStart.ts +72 -0
  480. package/src/Website/Vinext.ts +79 -0
  481. package/src/Website/Vite.ts +121 -0
  482. package/src/Website/Vocs.ts +50 -0
  483. package/src/Website/Waku.ts +65 -0
  484. package/src/Website/index.ts +16 -0
  485. package/src/WriteCertificates.ts +90 -0
  486. package/src/WriteCertificatesHttp.ts +93 -0
  487. package/src/WriteRedis.ts +31 -0
  488. package/src/WriteRedisHttp.ts +18 -0
  489. package/src/WriteSecret.ts +86 -0
  490. package/src/WriteSecretHttp.ts +71 -0
  491. package/src/bluegreen.ts +711 -0
  492. package/src/globals.d.ts +2 -0
  493. package/src/hosted.ts +667 -0
  494. package/src/index.ts +64 -0
  495. package/src/internal/RemoteBuilder.ts +242 -0
  496. package/src/leases.ts +437 -0
  497. package/src/ports.ts +177 -0
  498. package/src/replicas.ts +1480 -0
  499. package/src/rpc.ts +136 -0
@@ -0,0 +1,303 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ import type { Resource } from "alchemy/Resource";
3
+ import { makeFetchRpcStub, RPC_PATH_PREFIX, type Rpc } from "alchemy/Rpc";
4
+ import { CurrentRuntimeContext, type RuntimeContext, sanitizeKey } from "alchemy/RuntimeContext";
5
+ import { isYieldableEffectLike } from "alchemy/Util/effect";
6
+ import * as Data from "effect/Data";
7
+ import * as Effect from "effect/Effect";
8
+ import * as HttpClient from "effect/http/HttpClient";
9
+ import type * as HttpClientError from "effect/http/HttpClientError";
10
+ import * as HttpClientRequest from "effect/http/HttpClientRequest";
11
+ import type * as HttpClientResponse from "effect/http/HttpClientResponse";
12
+ import * as Redacted from "effect/Redacted";
13
+ import type { BoundTarget, ServiceBinding } from "./MountVolume.ts";
14
+ import { RPC_TOKEN_HEADER } from "./rpc.ts";
15
+ import type { Service } from "./Service.ts";
16
+
17
+ /** The deployed caller has no address for the bound Service. */
18
+ export class BoundServiceUnavailable extends Data.TaggedError("Fly.BoundServiceUnavailable")<{
19
+ service: string;
20
+ }> {
21
+ get message() {
22
+ return `No private address for Fly Service ${this.service}. It publishes no ports, or the caller was deployed before the binding existed.`;
23
+ }
24
+ }
25
+
26
+ /**
27
+ * Client for a Service bound with {@link bindService}: its RPC methods,
28
+ * plus `fetch` for its HTTP routes.
29
+ */
30
+ export type ServiceClient<Shape> = Omit<Shape, "fetch" | "run"> & {
31
+ /**
32
+ * Send a request to the Service's `fetch` handler over Fly's private
33
+ * network. A relative URL such as `/users/u1` resolves against the
34
+ * Service's private address.
35
+ */
36
+ fetch(
37
+ request: HttpClientRequest.HttpClientRequest,
38
+ ): Effect.Effect<
39
+ HttpClientResponse.HttpClientResponse,
40
+ HttpClientError.HttpClientError | BoundServiceUnavailable,
41
+ RuntimeContext
42
+ >;
43
+ };
44
+
45
+ /** A published port of a Service bound with {@link bindEndpoint}. */
46
+ export interface EndpointClient {
47
+ /** `{appName}.flycast`, the bound Service's private hostname. */
48
+ host: Effect.Effect<string, BoundServiceUnavailable, RuntimeContext>;
49
+ /** The published port. */
50
+ port: number;
51
+ /** `http://{appName}.flycast:{port}`, for a port that serves plain HTTP. */
52
+ url: Effect.Effect<string, BoundServiceUnavailable, RuntimeContext>;
53
+ /** An `HttpClient` whose relative requests go to {@link url}. */
54
+ client: HttpClient.HttpClient.With<HttpClientError.HttpClientError | BoundServiceUnavailable>;
55
+ }
56
+
57
+ type Target<Shape> = Service & Rpc<Shape>;
58
+
59
+ const isFlyHost = (value: unknown): value is Resource<string, any, any, ServiceBinding> =>
60
+ typeof value === "object" &&
61
+ value !== null &&
62
+ ((value as { Type?: string }).Type === "Fly.Service" ||
63
+ (value as { Type?: string }).Type === "Fly.Machine");
64
+
65
+ /** Logical id without yielding the Service (the runtime has no engine). */
66
+ const logicalIdOf = (target: unknown): string => {
67
+ const id =
68
+ target !== null && (typeof target === "object" || typeof target === "function")
69
+ ? (target as { LogicalId?: unknown }).LogicalId
70
+ : undefined;
71
+ return typeof id === "string" ? id : "";
72
+ };
73
+
74
+ /** Machine env vars the caller's reconcile writes for a bound Service. */
75
+ export const boundTargetEnvKeys = (id: string) => ({
76
+ appName: sanitizeKey(`FLY_BIND_${id}_APP`),
77
+ url: sanitizeKey(`FLY_BIND_${id}_URL`),
78
+ token: sanitizeKey(`FLY_BIND_${id}_TOKEN`),
79
+ });
80
+
81
+ /**
82
+ * Record the binding on the caller and transport the target's private
83
+ * address and caller token as Outputs. Returns runtime accessors for them.
84
+ */
85
+ const bindTarget = Effect.fn(function* <Shape, Req>(
86
+ target: Target<Shape> | Effect.Effect<Target<Shape>, never, Req>,
87
+ port: number | undefined,
88
+ ) {
89
+ const id = logicalIdOf(target);
90
+ const keys = boundTargetEnvKeys(id);
91
+ const ctx = yield* CurrentRuntimeContext;
92
+ if (!globalThis.__ALCHEMY_RUNTIME__) {
93
+ // Yielding registers the target and makes the caller depend on it.
94
+ const service = isYieldableEffectLike(target)
95
+ ? yield* target as Effect.Effect<Target<Shape>, never, Req>
96
+ : target;
97
+ // The binding carries the target's Outputs. Unlike props, binding
98
+ // data may stay unresolved between cycle peers, so two Services can
99
+ // bind each other; the caller's reconcile writes them onto its Machines.
100
+ const host = yield* Binding.Host;
101
+ if (isFlyHost(host)) {
102
+ yield* host.bind`${service}`({
103
+ target: {
104
+ service: id,
105
+ appName: service.appName,
106
+ network: service.network,
107
+ privateUrl: service.privateUrl,
108
+ rpcToken: service.rpcToken,
109
+ port,
110
+ endpoints: service.endpoints,
111
+ } as unknown as BoundTarget,
112
+ });
113
+ }
114
+ }
115
+ // Captured at bind time: the host's runtime context reads the values
116
+ // transported onto the Machine.
117
+ const read = (key: string) => (ctx === undefined ? Effect.undefined : ctx.get<unknown>(key));
118
+ const required = (key: string) =>
119
+ read(key).pipe(
120
+ Effect.flatMap((value) =>
121
+ typeof value === "string" && value.length > 0
122
+ ? Effect.succeed(value)
123
+ : Effect.fail(new BoundServiceUnavailable({ service: id })),
124
+ ),
125
+ );
126
+ return {
127
+ appName: required(keys.appName),
128
+ url: required(keys.url),
129
+ token: read(keys.token).pipe(
130
+ Effect.map((value) =>
131
+ Redacted.isRedacted(value)
132
+ ? String(Redacted.value(value))
133
+ : typeof value === "string"
134
+ ? value
135
+ : "",
136
+ ),
137
+ ),
138
+ };
139
+ });
140
+
141
+ /** Resolve `path` (relative or placeholder-based) against `base`. */
142
+ const withBase = (base: string, url: string) => {
143
+ const path = url.replace(/^https?:\/\/[^/]+/, "");
144
+ return `${base.replace(/\/$/, "")}${path.startsWith("/") ? path : `/${path}`}`;
145
+ };
146
+
147
+ /**
148
+ * Bind another {@link Service} and get a typed client for it. The client
149
+ * calls the Service's methods (everything its program returns besides
150
+ * `fetch` and `run`) and forwards `fetch` requests, over Fly's private
151
+ * network.
152
+ *
153
+ * Binding makes the caller deploy after the Service and hands it the
154
+ * Service's private address and caller token. Only callers that bind a
155
+ * Service receive its token, so other Services on the same network cannot
156
+ * call its methods. Every call must also carry Fly's signed `Fly-Src`
157
+ * header from the same organization, so the public internet cannot call
158
+ * them. Calls are plain HTTP inside Fly's WireGuard-encrypted network.
159
+ *
160
+ * ### Call a private Service
161
+ * **Example:** Methods on the target
162
+ * ```typescript
163
+ * export default class Users extends Fly.Service<Users>()(
164
+ * "Users",
165
+ * { main: import.meta.url, public: false },
166
+ * Effect.gen(function* () {
167
+ * return {
168
+ * list: () => Effect.succeed(USERS),
169
+ * get: (id: string) =>
170
+ * Effect.succeed(USERS.find((user) => user.id === id)),
171
+ * };
172
+ * }),
173
+ * ) {}
174
+ * ```
175
+ *
176
+ * **Example:** Bind it and call a method
177
+ * ```typescript
178
+ * export default class Orders extends Fly.Service<Orders>()(
179
+ * "Orders",
180
+ * { main: import.meta.url, public: false },
181
+ * Effect.gen(function* () {
182
+ * const users = yield* Fly.bindService(Users);
183
+ * return {
184
+ * list: () =>
185
+ * Effect.forEach(ORDERS, (order) =>
186
+ * users
187
+ * .get(order.userId)
188
+ * .pipe(Effect.map((user) => ({ ...order, user }))),
189
+ * ),
190
+ * };
191
+ * }),
192
+ * ) {}
193
+ * ```
194
+ *
195
+ * ### Stream and forward HTTP
196
+ * **Example:** A method that returns a Stream
197
+ * ```typescript
198
+ * const all = yield* users.streamAll().pipe(Stream.runCollect);
199
+ * ```
200
+ *
201
+ * **Example:** Send a request to the Service's `fetch`
202
+ * ```typescript
203
+ * const response = yield* users.fetch(HttpClientRequest.get("/users/u1"));
204
+ * ```
205
+ *
206
+ * ### Bind one port
207
+ * {@link bindEndpoint} targets one published port, such as an admin API
208
+ * or a raw TCP protocol. Deploy fails with `Fly.EndpointNotPublished`
209
+ * when the Service does not publish it.
210
+ *
211
+ * **Example:** An admin API on port 9000
212
+ * ```typescript
213
+ * const admin = yield* Fly.bindEndpoint(Users, { port: 9000 });
214
+ * const stats = yield* admin.client.get("/stats");
215
+ * const host = yield* admin.host; // "{appName}.flycast"
216
+ * ```
217
+ *
218
+ * ### Two Services that bind each other
219
+ * Declare each as a tag class with its method shape, and implement each
220
+ * in its own file as the default export of `.make`.
221
+ *
222
+ * **Example:** Ping and Pong
223
+ * ```typescript
224
+ * // src/services.ts
225
+ * export class Ping extends Fly.Service<Ping, Named>()("Ping") {}
226
+ * export class Pong extends Fly.Service<Pong, Named>()("Pong") {}
227
+ *
228
+ * // src/ping.ts
229
+ * export default Ping.make(
230
+ * { main: import.meta.url },
231
+ * Effect.gen(function* () {
232
+ * const pong = yield* Fly.bindService(Pong);
233
+ * return { name: () => Effect.succeed("ping") };
234
+ * }),
235
+ * );
236
+ * ```
237
+ *
238
+ * ### Errors
239
+ * Each fails the caller's deploy before the caller is created:
240
+ * `Fly.ServiceUnreachable` when the caller and the Service are on
241
+ * different networks, `Fly.ServiceNotBindable` when the Service publishes
242
+ * no ports, and `Fly.EndpointNotPublished` for a port it does not publish.
243
+ *
244
+ * @binding
245
+ * @product Service
246
+ */
247
+ export const bindService = <Shape, Req = never>(
248
+ target: Target<Shape> | Effect.Effect<Target<Shape>, never, Req>,
249
+ ): Effect.Effect<ServiceClient<Shape>, never, Req | HttpClient.HttpClient> =>
250
+ Effect.gen(function* () {
251
+ const http = yield* HttpClient.HttpClient;
252
+ const bound = yield* bindTarget(target, undefined);
253
+ const send = (request: HttpClientRequest.HttpClientRequest, isRpc: boolean) =>
254
+ Effect.gen(function* () {
255
+ const base = yield* bound.url;
256
+ let next = HttpClientRequest.setUrl(request, withBase(base, request.url));
257
+ if (isRpc) {
258
+ next = HttpClientRequest.setHeader(next, RPC_TOKEN_HEADER, yield* bound.token);
259
+ }
260
+ return yield* http.execute(next);
261
+ });
262
+ return makeFetchRpcStub<ServiceClient<Shape>>({
263
+ fetch: (request) =>
264
+ send(request, request.url.includes(RPC_PATH_PREFIX)) as Effect.Effect<
265
+ HttpClientResponse.HttpClientResponse,
266
+ unknown
267
+ >,
268
+ base: {
269
+ fetch: (request: HttpClientRequest.HttpClientRequest) => send(request, false),
270
+ },
271
+ });
272
+ });
273
+
274
+ /**
275
+ * Bind one published port of another {@link Service}: an admin API on
276
+ * its own port, or a raw TCP protocol. Returns the port's private host,
277
+ * its URL when it serves plain HTTP, and an `HttpClient` whose relative
278
+ * requests go there. See {@link bindService}.
279
+ */
280
+ export const bindEndpoint = <Shape, Req = never>(
281
+ target: Target<Shape> | Effect.Effect<Target<Shape>, never, Req>,
282
+ options: { port: number },
283
+ ): Effect.Effect<EndpointClient, never, Req | HttpClient.HttpClient> =>
284
+ Effect.gen(function* () {
285
+ const http = yield* HttpClient.HttpClient;
286
+ const bound = yield* bindTarget(target, options.port);
287
+ const host = bound.appName.pipe(Effect.map((app) => `${app}.flycast`));
288
+ const url = host.pipe(
289
+ Effect.map((name) =>
290
+ options.port === 80 ? `http://${name}` : `http://${name}:${options.port}`,
291
+ ),
292
+ );
293
+ return {
294
+ host,
295
+ port: options.port,
296
+ url,
297
+ client: HttpClient.mapRequestEffect(http, (request) =>
298
+ url.pipe(
299
+ Effect.map((base) => HttpClientRequest.setUrl(request, withBase(base, request.url))),
300
+ ),
301
+ ),
302
+ } satisfies EndpointClient;
303
+ });
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Process bootstrap for `Fly.Service` and `Fly.Sprite` (a Node process
3
+ * serving the bundled program). The generated entry imports this module
4
+ * and the user's `main`, nothing else — see `alchemy/Runtime/Bootstrap` for why.
5
+ */
6
+ import { NodeServices } from "@effect/platform-node";
7
+ import { NodeHttpServer } from "alchemy/Http";
8
+ import { reifyBoundConfigProvider } from "alchemy/Runtime";
9
+ import {
10
+ entrypointLayer,
11
+ resolveProgram,
12
+ runProcess,
13
+ stackFromEnv,
14
+ } from "alchemy/Runtime/Bootstrap";
15
+ import { ManagedHttpShutdown } from "alchemy/Runtime/ManagedHttpShutdown";
16
+ import * as ConfigProvider from "effect/ConfigProvider";
17
+ import * as Effect from "effect/Effect";
18
+ import * as FetchHttpClient from "effect/http/FetchHttpClient";
19
+ import * as Layer from "effect/Layer";
20
+ import * as Logger from "effect/Logger";
21
+ import * as Option from "effect/Option";
22
+ import * as Scope from "effect/Scope";
23
+
24
+ /**
25
+ * Resolve the bundled program (the runners registered via `host.run` /
26
+ * serve) and run it with a Node HTTP server bound to `PORT`, so the
27
+ * returned `{ fetch }` handler is actually served and `host.run` loops
28
+ * stay alive.
29
+ */
30
+ export const bootstrap = (entrypoint: unknown): Promise<void> => {
31
+ const platform = Layer.mergeAll(
32
+ NodeServices.layer,
33
+ FetchHttpClient.layer,
34
+ Logger.layer([Logger.consolePretty()]),
35
+ );
36
+
37
+ const services = entrypointLayer(entrypoint).pipe(
38
+ Layer.provideMerge(stackFromEnv),
39
+ Layer.provideMerge(NodeHttpServer({ hostname: "0.0.0.0" })),
40
+ Layer.provideMerge(platform),
41
+ Layer.provideMerge(
42
+ Layer.succeed(
43
+ ConfigProvider.ConfigProvider,
44
+ reifyBoundConfigProvider(ConfigProvider.fromEnv(), process.env),
45
+ ),
46
+ ),
47
+ );
48
+ const program = Effect.gen(function* () {
49
+ const managed = yield* Effect.serviceOption(ManagedHttpShutdown);
50
+ if (Option.isNone(managed)) {
51
+ return yield* resolveProgram("program").pipe(Effect.provide(services), Effect.scoped);
52
+ }
53
+ // Initializer dependencies outlive both run finalizers and HTTP responses.
54
+ const context = yield* Layer.buildWithScope(services, managed.value.dependencies);
55
+ return yield* resolveProgram("program").pipe(
56
+ Effect.provideContext(context),
57
+ Scope.provide(managed.value.dependencies),
58
+ );
59
+ });
60
+
61
+ const timeout = process.env.ALCHEMY_FLY_SHUTDOWN_TIMEOUT_MS;
62
+ return runProcess("Fly service", program, {
63
+ managedHttpShutdownTimeoutMs:
64
+ timeout === undefined ? undefined : /^\d+$/.test(timeout) ? Number(timeout) : NaN,
65
+ });
66
+ };