@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,802 @@
1
+ import * as Provider from "alchemy/Provider";
2
+ import { Resource } from "alchemy/Resource";
3
+ import * as Effect from "effect/Effect";
4
+ import { App } from "./App.ts";
5
+ import { type MachineDeploy, type MachineShutdown, type MachineCheck } from "./Deployment.ts";
6
+ import type { DiskSpec, MountedDisk, ServiceBinding } from "./MountVolume.ts";
7
+ import type { Providers } from "./Providers.ts";
8
+ import { type Replica } from "./replicas.ts";
9
+ export type { Replica };
10
+ /**
11
+ * A resource-valued prop: the resource itself, or an Effect that produces
12
+ * it (so `yield* App(...)` and `App(...)` both type-check).
13
+ */
14
+ type Ref<T> = T | Effect.Effect<T, never, Providers>;
15
+ export interface MachineGuest {
16
+ /**
17
+ * CPU kind (`shared`, `performance`, `shared-cpu-1x`, …).
18
+ *
19
+ * @default "shared"
20
+ */
21
+ cpuKind?: string;
22
+ /**
23
+ * Number of CPUs.
24
+ *
25
+ * @default 1
26
+ */
27
+ cpus?: number;
28
+ /**
29
+ * Memory in MB.
30
+ *
31
+ * @default 256
32
+ */
33
+ memoryMb?: number;
34
+ /** GPU kind, if this Machine should have a GPU. */
35
+ gpuKind?: string;
36
+ /** Number of GPUs. */
37
+ gpus?: number;
38
+ }
39
+ export interface MachineInit {
40
+ /** Process command. */
41
+ cmd?: string[];
42
+ /** Container entrypoint. */
43
+ entrypoint?: string[];
44
+ /** Exec form override. */
45
+ exec?: string[];
46
+ /** Swap size in MB. */
47
+ swapSizeMb?: number;
48
+ /** Allocate a TTY. */
49
+ tty?: boolean;
50
+ }
51
+ export interface MachineRestart {
52
+ /**
53
+ * Restart policy (`no`, `always`, `on-failure`, `spot-price`).
54
+ */
55
+ policy?: "no" | "always" | "on-failure" | "spot-price";
56
+ /** Max restarts when `policy` is `on-failure`. */
57
+ maxRetries?: number;
58
+ }
59
+ export interface MachinePort {
60
+ /** Published proxy port. */
61
+ port?: number;
62
+ /** Fly handlers (`http`, `tls`, `pg_tls`, …). */
63
+ handlers?: string[];
64
+ /** Redirect HTTP to HTTPS on this port. */
65
+ forceHttps?: boolean;
66
+ /** Inclusive start of a published port range. */
67
+ startPort?: number;
68
+ /** Inclusive end of a published port range. */
69
+ endPort?: number;
70
+ }
71
+ /** A health check attached to a Fly service. */
72
+ export interface MachineServiceCheck {
73
+ /** Check type. HTTP checks send a request; TCP checks open a connection. */
74
+ type: "http" | "tcp";
75
+ /** Port to check. Usually the service's {@link MachineService.internalPort}. */
76
+ port?: number;
77
+ /**
78
+ * Time between checks, such as `"15s"`.
79
+ * Fly caps service checks at `"60s"`; this cap does not apply to named Machine checks.
80
+ */
81
+ interval?: string;
82
+ /** Maximum time for a check, such as `"2s"`. */
83
+ timeout?: string;
84
+ /** Delay after the Machine starts before checks begin, such as `"30s"`. */
85
+ gracePeriod?: string;
86
+ /** HTTP method for an `http` check. */
87
+ method?: string;
88
+ /** Request path for an `http` check. */
89
+ path?: string;
90
+ /** Request protocol for an `http` check. */
91
+ protocol?: "http" | "https";
92
+ /** Headers sent by an `http` check. */
93
+ headers?: Array<{
94
+ /** Header name. */
95
+ name: string;
96
+ /** Header values. */
97
+ values: string[];
98
+ }>;
99
+ /** Hostname used to validate the certificate for an HTTPS check. */
100
+ tlsServerName?: string;
101
+ /** Skip certificate verification for an HTTPS check. */
102
+ tlsSkipVerify?: boolean;
103
+ }
104
+ export interface MachineService {
105
+ /**
106
+ * Proxy protocol (`tcp` or `udp`).
107
+ */
108
+ protocol?: string;
109
+ /** Port the process listens on inside the Machine. */
110
+ internalPort?: number;
111
+ /** Published Fly proxy ports. */
112
+ ports?: MachinePort[];
113
+ /** Start this Machine when a request arrives. */
114
+ autostart?: boolean;
115
+ /**
116
+ * Stop or suspend this Machine when idle.
117
+ */
118
+ autostop?: "off" | "stop" | "suspend" | boolean;
119
+ /** Minimum Machines to keep running for this service. */
120
+ minMachinesRunning?: number;
121
+ /** Health checks for this service. */
122
+ checks?: MachineServiceCheck[];
123
+ }
124
+ export type MachineMount = DiskSpec;
125
+ /** Startup dependency on another named container in the same Machine. */
126
+ export interface MachineContainerDependency {
127
+ /** Name of another container in this Machine. */
128
+ name: string;
129
+ /** Startup condition Fly waits for. */
130
+ condition?: "started" | "healthy" | "exited_successfully";
131
+ }
132
+ /** A native Pilot health check; timing fields are numeric seconds. */
133
+ export interface MachineContainerHealthCheck {
134
+ /** Optional check name, unique within this container. */
135
+ name?: string;
136
+ /** Whether the check gates readiness or liveness. */
137
+ kind?: "readiness" | "liveness";
138
+ /** Seconds between checks. */
139
+ interval?: number;
140
+ /** Seconds before a check times out. */
141
+ timeout?: number;
142
+ /** Seconds after startup before checks begin. */
143
+ gracePeriod?: number;
144
+ /** Consecutive successes required to become healthy. */
145
+ successThreshold?: number;
146
+ /** Consecutive failures required to become unhealthy. */
147
+ failureThreshold?: number;
148
+ /** HTTP probe. Configure exactly one of HTTP, TCP, or exec. */
149
+ http?: {
150
+ /** Container-local port. */
151
+ port: number;
152
+ /** Request path. */
153
+ path?: string;
154
+ /** Request method. */
155
+ method?: string;
156
+ /** Request scheme. */
157
+ scheme?: "http" | "https";
158
+ /** Additional request headers. */
159
+ headers?: Array<{
160
+ name: string;
161
+ values: string[];
162
+ }>;
163
+ /** Hostname for TLS certificate verification. */
164
+ tlsServerName?: string;
165
+ /** Skip TLS certificate verification. */
166
+ tlsSkipVerify?: boolean;
167
+ };
168
+ /** TCP connection probe. */
169
+ tcp?: {
170
+ port: number;
171
+ };
172
+ /** Process execution probe. */
173
+ exec?: {
174
+ command: string[];
175
+ };
176
+ }
177
+ /** One named container in a Machine replica. */
178
+ export interface MachineContainer {
179
+ /** Stable name identifying this container within the group. */
180
+ name: string;
181
+ /** Docker image reference. Rolling deployments accept tags or digests. */
182
+ image: string;
183
+ /** Command override. */
184
+ cmd?: string[];
185
+ /** Entrypoint override. */
186
+ entrypoint?: string[];
187
+ /** Per-container environment variables; Fly applies these over Machine env. */
188
+ env?: Record<string, string>;
189
+ /** Other named containers that must reach a startup condition first. */
190
+ dependsOn?: MachineContainerDependency[];
191
+ /** Native Pilot checks for this container. Deployment readiness is configured separately. */
192
+ healthChecks?: MachineContainerHealthCheck[];
193
+ }
194
+ export interface MachinePropsBase {
195
+ /** Deployment strategy and readiness deadline. Defaults to in-place rolling updates. */
196
+ deploy?: MachineDeploy;
197
+ /** Graceful process shutdown. Defaults to SIGTERM / 30 seconds when blue/green is enabled. */
198
+ shutdown?: MachineShutdown;
199
+ /** Named readiness checks for workers without public services. */
200
+ checks?: Record<string, MachineCheck>;
201
+ /**
202
+ * Parent Fly App. Changing it replaces the Machine.
203
+ */
204
+ app: Ref<App>;
205
+ /**
206
+ * Machine name. Unique per App. If omitted, a unique name is generated
207
+ * from the stack, stage and logical ID. Changing it replaces the Machine.
208
+ * In blue/green mode this is a base for generation-qualified physical names.
209
+ */
210
+ name?: string;
211
+ /**
212
+ * Region to start the Machine in (`iad`, `ewr`, `ord`, …). Changing it
213
+ * replaces the Machine.
214
+ *
215
+ * @default "iad"
216
+ */
217
+ region?: string;
218
+ /**
219
+ * Number of Machines to provision, including stopped/suspended idle capacity.
220
+ * Fly's proxy load-balances published `services` across available replicas.
221
+ * Blue/green checks a representative and the required running floor while
222
+ * preserving idle nonrepresentatives. Each replica gets its own Volume
223
+ * from every {@link mounts} group; attached volumes require rolling updates.
224
+ *
225
+ * @default 1
226
+ */
227
+ count?: number;
228
+ /**
229
+ * Guest size. Defaults to shared-cpu-1x 256 MB.
230
+ */
231
+ guest?: MachineGuest;
232
+ /**
233
+ * Environment variables. Merged with binding `env`.
234
+ */
235
+ env?: Record<string, string>;
236
+ /**
237
+ * Fly proxy services (HTTP/TCP ports).
238
+ */
239
+ services?: MachineService[];
240
+ /**
241
+ * Disks to attach. Each entry is a Fly volume group: `count`
242
+ * independent Volumes, one mounted on each replica. Also collected
243
+ * from `MountVolume` bindings.
244
+ */
245
+ mounts?: MachineMount[];
246
+ /**
247
+ * User metadata. Alchemy ownership keys (`alchemy.stack` /
248
+ * `alchemy.stage` / `alchemy.id` / `alchemy.type` /
249
+ * `alchemy.replica`) are always merged.
250
+ */
251
+ metadata?: Record<string, string>;
252
+ /**
253
+ * Destroy the Machine when its main process exits.
254
+ *
255
+ * @default false
256
+ */
257
+ autoDestroy?: boolean;
258
+ /**
259
+ * Restart policy after the main process exits.
260
+ */
261
+ restart?: MachineRestart;
262
+ /**
263
+ * Create or update without launching the Machine.
264
+ *
265
+ * @default false
266
+ */
267
+ skipLaunch?: boolean;
268
+ /**
269
+ * Minimum App-secrets version required by this Machine, not an immutable
270
+ * snapshot. Other writers can advance the shared vault. Secret changes are
271
+ * not automatically watched; change an explicit deployment input or floor
272
+ * when an out-of-band rotation requires reconciliation.
273
+ */
274
+ minSecretsVersion?: number;
275
+ }
276
+ export type MachineProps = (MachinePropsBase & {
277
+ /** Docker image reference. Rolling updates change the existing Machines. */
278
+ image: string;
279
+ containers?: never;
280
+ /** Process init overrides for a single-image Machine. */
281
+ init?: MachineInit;
282
+ }) | (MachinePropsBase & {
283
+ /** Named containers run together in every Machine replica. */
284
+ containers: MachineContainer[];
285
+ image?: never;
286
+ init?: never;
287
+ });
288
+ export type MachineImageRef = {
289
+ registry?: string;
290
+ repository?: string;
291
+ tag?: string;
292
+ digest?: string;
293
+ };
294
+ export type Machine = Resource<"Fly.Machine", MachineProps, {
295
+ /** Whether recovery must finish an interrupted deployment. */
296
+ rolloutPending?: boolean;
297
+ /** Parent Fly App name. */
298
+ appName: string;
299
+ /** Fly Machine id of replica 0. */
300
+ machineId: string;
301
+ /** Fly Machine ids of every replica. */
302
+ machineIds: string[];
303
+ /** Logical base for generation-qualified Machine names. */
304
+ baseName?: string;
305
+ /** Machine name of replica 0 (unique per App). Changes during blue/green deployment. */
306
+ name: string;
307
+ /** Region the Machines are running in. */
308
+ region: string;
309
+ /** Observed state of replica 0 (`created`, `started`, `stopped`, …). */
310
+ state: string;
311
+ /** Fly instance / version id of replica 0, if the API returned one. */
312
+ instanceId: string | undefined;
313
+ /** Internal 6PN address of replica 0. */
314
+ privateIp: string | undefined;
315
+ /** Parsed image reference from Fly. */
316
+ imageRef: MachineImageRef | undefined;
317
+ /** Observed guest size. */
318
+ guest: MachineGuest | undefined;
319
+ /** Number of Machines in the replica set. */
320
+ count: number;
321
+ /** Disks mounted on replica 0. */
322
+ mounts: MountedDisk[];
323
+ /** Every replica in the set. */
324
+ replicas: Replica[];
325
+ }, ServiceBinding, Providers>;
326
+ /**
327
+ * A Fly.Machine is a Firecracker VM running one image or a named container group.
328
+ *
329
+ * Prefer a {@link Service} when the program is Effect. A Service is effectful, supports bindings,
330
+ * and scales with `count`. Alchemy builds and pushes the image. Use `Fly.Machine` when you already
331
+ * have an image.
332
+ *
333
+ * @see https://fly.io/docs/machines/api/machines-resource/
334
+ *
335
+ * ### Prefer a Service
336
+ * Declare a {@link Service} when you own the program. Alchemy bundles
337
+ * `main`, builds `linux/amd64`, and pushes to `registry.fly.io`.
338
+ *
339
+ * **Example:** Effect HTTP service
340
+ * ```typescript
341
+ * export default class Api extends Fly.Service<Api>()(
342
+ * "Api",
343
+ * { app: Site, main: import.meta.url, region: "iad", count: 3, port: 3000 },
344
+ * Effect.gen(function* () {
345
+ * return {
346
+ * fetch: Effect.succeed(HttpServerResponse.text("hello")),
347
+ * };
348
+ * }),
349
+ * ) {}
350
+ * ```
351
+ *
352
+ * ### Launch a Machine
353
+ * The parent is an {@link App}. Pin a region and an image. Guest
354
+ * defaults to shared-cpu 1× / 256 MB. Rolling updates `image` in place;
355
+ * blue/green prepares replacement Machines.
356
+ *
357
+ * **Example:** Nginx
358
+ * ```typescript
359
+ * const web = yield* Fly.Machine("Web", {
360
+ * app: Site,
361
+ * region: "iad",
362
+ * image: "nginx:alpine",
363
+ * });
364
+ * ```
365
+ *
366
+ * :::caution[Changing `app` replaces the Machine]
367
+ * The new App gets a new Machine. The old one is deleted.
368
+ * :::
369
+ *
370
+ * ### Run named containers
371
+ * Each replica contains the entire group. Container checks and dependencies
372
+ * control Pilot startup; configure Machine or service checks for deployment
373
+ * readiness. Rolling updates can restart the entire group when one image
374
+ * changes. Blue/green requires every named image to use an immutable
375
+ * `repository@sha256:` digest and cannot attach volumes. Alchemy replaces
376
+ * the entire group and applies readiness policy before retiring predecessors.
377
+ *
378
+ * **Example:** API and worker
379
+ * ```typescript
380
+ * const preview = yield* Fly.Machine("Preview", {
381
+ * app: Site,
382
+ * containers: [
383
+ * { name: "api", image: apiImage, healthChecks: [{ http: { port: 3000, path: "/health" } }] },
384
+ * { name: "worker", image: workerImage, dependsOn: [{ name: "api", condition: "healthy" }] },
385
+ * ],
386
+ * });
387
+ * ```
388
+ *
389
+ * ### A stable name
390
+ * Machine names are unique per App. Omit `name` and Alchemy generates
391
+ * one from the stack, stage, and logical ID.
392
+ *
393
+ * **Example:** Explicit name
394
+ * ```typescript
395
+ * const web = yield* Fly.Machine("Web", {
396
+ * app: Site,
397
+ * name: "web",
398
+ * region: "iad",
399
+ * image: "nginx:alpine",
400
+ * });
401
+ * ```
402
+ *
403
+ * :::caution[Changing `name` replaces the Machine]
404
+ * Fly cannot rename a Machine. Alchemy creates the new name, then
405
+ * deletes the old one.
406
+ * :::
407
+ *
408
+ * ### Region
409
+ * Fly Machines live in a region. Default is `iad`. See
410
+ * [Regions](/fly/compute/regions) for the list of codes.
411
+ *
412
+ * **Example:** Pin a region
413
+ * ```typescript
414
+ * const web = yield* Fly.Machine("Web", {
415
+ * app: Site,
416
+ * region: "ewr",
417
+ * image: "nginx:alpine",
418
+ * });
419
+ * ```
420
+ *
421
+ * :::caution[Changing `region` replaces the Machine]
422
+ * The Machine is created in the new region. The old one is deleted.
423
+ * :::
424
+ *
425
+ * ### Guest size
426
+ * `guest` is CPU kind, CPU count, and memory. Default is shared-cpu,
427
+ * 1 CPU, 256 MB. Rolling updates guest sizing in place; blue/green replaces
428
+ * the Machines.
429
+ *
430
+ * **Example:** Shared CPU
431
+ * ```typescript
432
+ * const web = yield* Fly.Machine("Web", {
433
+ * app: Site,
434
+ * region: "iad",
435
+ * image: "nginx:alpine",
436
+ * guest: { cpuKind: "shared", cpus: 1, memoryMb: 256 },
437
+ * });
438
+ * ```
439
+ *
440
+ * ### GPU
441
+ * Set `gpuKind` and `gpus` on `guest` when the Machine should have a
442
+ * GPU.
443
+ *
444
+ * **Example:** GPU guest
445
+ * ```typescript
446
+ * const worker = yield* Fly.Machine("Worker", {
447
+ * app: Site,
448
+ * region: "iad",
449
+ * image: "my-gpu-image:tag",
450
+ * guest: {
451
+ * cpuKind: "performance",
452
+ * cpus: 2,
453
+ * memoryMb: 4096,
454
+ * gpuKind: "a10",
455
+ * gpus: 1,
456
+ * },
457
+ * });
458
+ * ```
459
+ *
460
+ * ### Environment variables
461
+ * `env` is merged onto the Machine. Fly also injects App
462
+ * {@link Secret} values as env vars unless the Machine skips secrets.
463
+ *
464
+ * **Example:** Set env
465
+ * ```typescript
466
+ * const worker = yield* Fly.Machine("Worker", {
467
+ * app: Site,
468
+ * region: "iad",
469
+ * image: "my-image:tag",
470
+ * env: { LOG_LEVEL: "info" },
471
+ * });
472
+ * ```
473
+ *
474
+ * ### Publish a proxy service
475
+ * `services` publishes ports on Fly's proxy. The App needs an
476
+ * {@link IpAssignment} before `{app}.fly.dev` answers. For a public
477
+ * endpoint without managing Apps and addresses, use a {@link Service}.
478
+ *
479
+ * Handlers are `http`, `tls`, `pg_tls`, and similar. Set `forceHttps`
480
+ * to redirect HTTP to HTTPS. Use `startPort` / `endPort` for a
481
+ * published range.
482
+ *
483
+ * Omit `services` (or pass `[]`) for a process that should not be
484
+ * reachable from the internet.
485
+ *
486
+ * **Example:** HTTP on port 80
487
+ * ```typescript
488
+ * const web = yield* Fly.Machine("Web", {
489
+ * app: Site,
490
+ * region: "iad",
491
+ * image: "nginx:alpine",
492
+ * services: [
493
+ * {
494
+ * protocol: "tcp",
495
+ * internalPort: 80,
496
+ * ports: [
497
+ * { port: 80, handlers: ["http"], forceHttps: true },
498
+ * { port: 443, handlers: ["tls", "http"] },
499
+ * ],
500
+ * },
501
+ * ],
502
+ * });
503
+ * ```
504
+ *
505
+ * ### Service health checks
506
+ * Add HTTP or TCP `checks` to a service. Fly uses their results to
507
+ * determine whether the service is ready to receive traffic. With rolling
508
+ * updates, reconcile waits for each started replica's checks before updating
509
+ * the next replica. Missing or non-passing results are polled within
510
+ * `deploy.healthTimeout` (60 seconds by default), then fail deployment with
511
+ * `Fly.ReplicaChecksNotPassing`. Later replicas remain unchanged; earlier
512
+ * updates are not rolled back. A single rolling replica can be unavailable.
513
+ * Blue/green checks replacements before retiring the old set, with
514
+ * representative/floor readiness for idle capacity.
515
+ *
516
+ * **Example:** HTTP readiness check
517
+ * ```typescript
518
+ * const web = yield* Fly.Machine("Web", {
519
+ * app: Site,
520
+ * region: "iad",
521
+ * image: "nginx:alpine",
522
+ * services: [
523
+ * {
524
+ * protocol: "tcp",
525
+ * internalPort: 80,
526
+ * ports: [{ port: 80, handlers: ["http"] }],
527
+ * checks: [
528
+ * {
529
+ * type: "http",
530
+ * port: 80,
531
+ * method: "GET",
532
+ * path: "/",
533
+ * protocol: "http",
534
+ * interval: "15s",
535
+ * timeout: "2s",
536
+ * gracePeriod: "30s",
537
+ * headers: [{ name: "X-Health-Check", values: ["alchemy"] }],
538
+ * },
539
+ * ],
540
+ * },
541
+ * ],
542
+ * });
543
+ * ```
544
+ *
545
+ * ### Autostart and autostop
546
+ * `autostart` starts the Machine when a request arrives. `autostop` is
547
+ * `"off"`, `"stop"`, `"suspend"`, or a boolean. `minMachinesRunning`
548
+ * keeps that many Machines up for the service.
549
+ *
550
+ * Autostop only affects Machines that already exist. Set `count` or declare
551
+ * more resources to size the pool. Stop boots a new process on autostart;
552
+ * suspend may resume memory or fall back to a cold start. Suspension is not
553
+ * SIGTERM shutdown and does not run ordinary shutdown finalizers.
554
+ *
555
+ * Blue/green supports both policies: it checks a representative and the
556
+ * required running floor while preserving idle nonrepresentatives. It
557
+ * restores the requested idle policy before retiring predecessors and
558
+ * checks any new instance created by restoration. A replacement does not
559
+ * inherit its suspended predecessor's process memory.
560
+ *
561
+ * **Example:** Stop when idle
562
+ * ```typescript
563
+ * const web = yield* Fly.Machine("Web", {
564
+ * app: Site,
565
+ * region: "iad",
566
+ * image: "nginx:alpine",
567
+ * services: [
568
+ * {
569
+ * protocol: "tcp",
570
+ * internalPort: 80,
571
+ * autostart: true,
572
+ * autostop: "stop",
573
+ * minMachinesRunning: 0,
574
+ * ports: [{ port: 80, handlers: ["http"] }],
575
+ * },
576
+ * ],
577
+ * });
578
+ * ```
579
+ *
580
+ * ### Scale up
581
+ * Each Machine resource runs one VM by default. Set `count` to manage
582
+ * several replicas together, or declare separate resources for Machines
583
+ * with different configuration. Fly's proxy load-balances published
584
+ * `services` across them.
585
+ *
586
+ * Both Machine and {@link Service} support `count`. Default rolling updates
587
+ * replicas sequentially; blue/green prepares replacements before retirement.
588
+ * Separate resources do not share an update order or App-wide lease lock.
589
+ *
590
+ * **Example:** Two Machines
591
+ * ```typescript
592
+ * const web1 = yield* Fly.Machine("Web1", {
593
+ * app: Site,
594
+ * region: "iad",
595
+ * image: "nginx:alpine",
596
+ * services: [
597
+ * {
598
+ * protocol: "tcp",
599
+ * internalPort: 80,
600
+ * ports: [{ port: 80, handlers: ["http"] }],
601
+ * },
602
+ * ],
603
+ * });
604
+ *
605
+ * const web2 = yield* Fly.Machine("Web2", {
606
+ * app: Site,
607
+ * region: "iad",
608
+ * image: "nginx:alpine",
609
+ * services: [
610
+ * {
611
+ * protocol: "tcp",
612
+ * internalPort: 80,
613
+ * ports: [{ port: 80, handlers: ["http"] }],
614
+ * },
615
+ * ],
616
+ * });
617
+ * ```
618
+ *
619
+ * ### Scale down
620
+ * Remove a Machine from the stack. The next deploy deletes it.
621
+ *
622
+ * **Example:** Drop Web2
623
+ * ```diff
624
+ * const web1 = yield* Fly.Machine("Web1", {
625
+ * app: Site,
626
+ * region: "iad",
627
+ * image: "nginx:alpine",
628
+ * });
629
+ * -
630
+ * - const web2 = yield* Fly.Machine("Web2", {
631
+ * - app: Site,
632
+ * - region: "iad",
633
+ * - image: "nginx:alpine",
634
+ * - });
635
+ * ```
636
+ *
637
+ * ### Attach a disk
638
+ * Pass disks as `mounts`. Alchemy creates a Volume in the Machine's
639
+ * app and region. A Volume attaches to one Machine. There is no
640
+ * standalone Volume resource.
641
+ *
642
+ * `sizeGb` can grow in place. Shrinking is not supported. Encryption,
643
+ * filesystem type, `snapshotId`, and `sourceVolumeId` are create-only.
644
+ * See {@link MountVolume} for the full disk spec. From a Service,
645
+ * prefer `MountVolume` so the path is part of the binding graph.
646
+ *
647
+ * **Example:** Mount `/data`
648
+ * ```typescript
649
+ * const box = yield* Fly.Machine("Box", {
650
+ * app: Site,
651
+ * region: "iad",
652
+ * image: "postgres:16",
653
+ * mounts: [{ path: "/data", sizeGb: 10 }],
654
+ * });
655
+ * ```
656
+ *
657
+ * ### Init
658
+ * `init` overrides `cmd`, `entrypoint`, `exec`, swap, and TTY. Updates
659
+ * in place.
660
+ *
661
+ * **Example:** Custom command
662
+ * ```typescript
663
+ * const box = yield* Fly.Machine("Box", {
664
+ * app: Site,
665
+ * region: "iad",
666
+ * image: "postgres:16",
667
+ * init: { cmd: ["postgres", "-c", "shared_buffers=256MB"] },
668
+ * });
669
+ * ```
670
+ *
671
+ * ### Restart policy
672
+ * `restart.policy` is `"no"`, `"always"`, `"on-failure"`, or
673
+ * `"spot-price"`. `maxRetries` applies when the policy is
674
+ * `"on-failure"`. Updates in place.
675
+ *
676
+ * **Example:** Always restart
677
+ * ```typescript
678
+ * const worker = yield* Fly.Machine("Worker", {
679
+ * app: Site,
680
+ * region: "iad",
681
+ * image: "my-image:tag",
682
+ * restart: { policy: "always" },
683
+ * });
684
+ * ```
685
+ *
686
+ * ### Destroy on exit
687
+ * `autoDestroy: true` tears the Machine down when its main process
688
+ * exits. Default is `false`.
689
+ *
690
+ * **Example:** One-shot Machine
691
+ * ```typescript
692
+ * const job = yield* Fly.Machine("Job", {
693
+ * app: Site,
694
+ * region: "iad",
695
+ * image: "my-job:tag",
696
+ * autoDestroy: true,
697
+ * restart: { policy: "no" },
698
+ * });
699
+ * ```
700
+ *
701
+ * ### Skip launch
702
+ * `skipLaunch: true` creates or updates the config without starting
703
+ * the Machine. Default is `false`. Reconcile otherwise waits until
704
+ * the Machine is `started`, and until service checks are passing when
705
+ * the Machine has them.
706
+ *
707
+ * **Example:** Config only
708
+ * ```typescript
709
+ * const web = yield* Fly.Machine("Web", {
710
+ * app: Site,
711
+ * region: "iad",
712
+ * image: "nginx:alpine",
713
+ * skipLaunch: true,
714
+ * });
715
+ * ```
716
+ *
717
+ * ### Metadata
718
+ * User keys on `metadata` merge with Alchemy ownership keys
719
+ * (`alchemy.stack`, `alchemy.stage`, `alchemy.id`, `alchemy.type`,
720
+ * `alchemy.replica`). Those ownership keys are always written so
721
+ * `list()` can find owned Machines. Fly Apps have no labels.
722
+ *
723
+ * **Example:** User metadata
724
+ * ```typescript
725
+ * const web = yield* Fly.Machine("Web", {
726
+ * app: Site,
727
+ * region: "iad",
728
+ * image: "nginx:alpine",
729
+ * metadata: { role: "edge" },
730
+ * });
731
+ * ```
732
+ *
733
+ * ### Secrets version
734
+ * `minSecretsVersion` requires at least that App-secrets version, not an
735
+ * immutable snapshot. Machine leases do not serialize vault writers.
736
+ * After rotating a {@link Secret}, declare the required floor or another
737
+ * explicit rollout input; an out-of-band change alone does not watch/redeploy.
738
+ *
739
+ * **Example:** Wait for secrets
740
+ * ```typescript
741
+ * const web = yield* Fly.Machine("Web", {
742
+ * app: Site,
743
+ * region: "iad",
744
+ * image: "nginx:alpine",
745
+ * minSecretsVersion: 2,
746
+ * });
747
+ * ```
748
+ *
749
+ * ### Blue/green deployments
750
+ * Prepare a healthy replacement set before retiring the current Machines.
751
+ * Physical IDs and names change; the App URL remains stable. Volumes,
752
+ * auto-destroy, and skipLaunch are incompatible. Autostop preserves idle
753
+ * nonrepresentatives while a representative passes checks. Raw images must
754
+ * handle their own shutdown signal and stop accepting background work.
755
+ *
756
+ * Retirement honors each predecessor's own signal and timeout. Native
757
+ * target leases do not exclude every simultaneous first deployment or
758
+ * snapshot; serialize CI for the same resource. See the
759
+ * [deployment guide](/fly/compute/deployments) for idle capacity, secret
760
+ * floors, recovery, and the limits of live-tested parity.
761
+ *
762
+ * **Example:** Private worker readiness
763
+ * ```typescript
764
+ * const worker = yield* Fly.Machine("Worker", {
765
+ * app: Site,
766
+ * image: "registry.example.com/worker:v2",
767
+ * deploy: { strategy: "bluegreen", healthTimeout: "60 seconds" },
768
+ * shutdown: { signal: "SIGTERM", timeout: "30 seconds" },
769
+ * checks: {
770
+ * ready: { type: "http", port: 3000, path: "/healthz", interval: "5s", timeout: "2s" },
771
+ * },
772
+ * });
773
+ * ```
774
+ *
775
+ * Every published service needs its own service check. Before promotion, a
776
+ * failed candidate leaves the old generation serving. After possible promotion,
777
+ * potentially serving replacements are preserved rather than blindly deleted.
778
+ * Retry an interrupted deploy to finish promotion or retirement; destroy
779
+ * discovers unfinished owned generations.
780
+ * See the [deployment guide](/fly/compute/deployments) for recovery and limits.
781
+ *
782
+ * @resource
783
+ * @product Machine
784
+ */
785
+ export declare const Machine: import("alchemy/Resource").ResourceClass<Machine>;
786
+ declare const MachineNotCreated_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 & {
787
+ readonly _tag: "Fly.MachineNotCreated";
788
+ } & Readonly<A>;
789
+ export declare class MachineNotCreated extends MachineNotCreated_base<{
790
+ resourceName: string;
791
+ appName: string;
792
+ }> {
793
+ }
794
+ declare const MachineAppNotResolved_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 & {
795
+ readonly _tag: "Fly.MachineAppNotResolved";
796
+ } & Readonly<A>;
797
+ export declare class MachineAppNotResolved extends MachineAppNotResolved_base<{
798
+ message: string;
799
+ }> {
800
+ }
801
+ export declare const MachineProvider: () => import("effect/Layer").Layer<Provider.Provider<Machine>, never, import("alchemy/Stack").Stack | import("alchemy/Stage").Stage | import("@distilled.cloud/fly-io").FlyIoOpContext>;
802
+ //# sourceMappingURL=Machine.d.ts.map