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

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 +340 -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 +59 -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 +35 -0
  176. package/lib/PostgresMigrations.d.ts.map +1 -0
  177. package/lib/PostgresMigrations.js +110 -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 +608 -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 +8 -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 +1022 -0
  240. package/lib/Service.d.ts.map +1 -0
  241. package/lib/Service.js +1397 -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 +469 -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 +87 -0
  280. package/lib/Website/Astro.d.ts.map +1 -0
  281. package/lib/Website/Astro.js +55 -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 +175 -0
  288. package/lib/Website/FrameworkSite.d.ts.map +1 -0
  289. package/lib/Website/FrameworkSite.js +162 -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 +155 -0
  312. package/lib/Website/StaticSite.d.ts.map +1 -0
  313. package/lib/Website/StaticSite.js +168 -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 +103 -0
  328. package/lib/Website/Vite.d.ts.map +1 -0
  329. package/lib/Website/Vite.js +91 -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 +458 -0
  370. package/lib/bluegreen.js.map +1 -0
  371. package/lib/hosted.d.ts +172 -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 +145 -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 +516 -0
  401. package/src/AuthProvider.ts +68 -0
  402. package/src/BindService.ts +304 -0
  403. package/src/Bootstrap.ts +66 -0
  404. package/src/Bucket.ts +916 -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 +102 -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 +1268 -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 +153 -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 +820 -0
  452. package/src/RedisBinding.ts +64 -0
  453. package/src/RedisHttp.ts +11 -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 +1934 -0
  460. package/src/Sign.ts +46 -0
  461. package/src/SignHttp.ts +44 -0
  462. package/src/Sprite.ts +671 -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 +294 -0
  469. package/src/Website/Astro.ts +87 -0
  470. package/src/Website/Foldkit.ts +54 -0
  471. package/src/Website/FrameworkSite.ts +363 -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 +275 -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 +112 -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 +708 -0
  492. package/src/globals.d.ts +2 -0
  493. package/src/hosted.ts +668 -0
  494. package/src/index.ts +64 -0
  495. package/src/internal/RemoteBuilder.ts +224 -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 @@
1
+ {"version":3,"file":"ConnectPostgresHttp.d.ts","sourceRoot":"","sources":["../src/ConnectPostgresHttp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EACL,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAsB9B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,mBAAmB,4CAuB/B,CAAC"}
@@ -0,0 +1,57 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Redacted from "effect/Redacted";
5
+ import { ConnectPostgres, PostgresUrlMissing, } from "./ConnectPostgres.js";
6
+ import {} from "./Postgres.js";
7
+ const isFlyHost = (value) => typeof value === "object" &&
8
+ value !== null &&
9
+ (value.Type === "Fly.Service" ||
10
+ value.Type === "Fly.Machine");
11
+ const asRedactedUrl = (value, name) => {
12
+ const plain = typeof value === "string" ? value : Redacted.isRedacted(value) ? Redacted.value(value) : "";
13
+ const url = typeof plain === "string" ? plain : "";
14
+ return url.length > 0
15
+ ? Effect.succeed(Redacted.make(url))
16
+ : Effect.fail(new PostgresUrlMissing({ name }));
17
+ };
18
+ /**
19
+ * Implementation of {@link ConnectPostgres}. Provide it on the
20
+ * {@link Service} Effect.
21
+ *
22
+ * Registers the cluster attachment for Fly's private network. Alchemy
23
+ * transports each cluster's connection URIs through resource Outputs,
24
+ * so callers do not configure connection-string environment variables.
25
+ *
26
+ *
27
+ * ### Provide the layer
28
+ * **Example:** On a Service
29
+ * ```typescript
30
+ * Effect.gen(function* () {
31
+ * const conn = yield* Fly.ConnectPostgres(Db);
32
+ * const db = yield* Drizzle.Postgres(conn.connectionString);
33
+ * }).pipe(Effect.provide(Fly.ConnectPostgresHttp))
34
+ * ```
35
+ *
36
+ * @layer
37
+ * @product Postgres
38
+ * @provides Fly.ConnectPostgres
39
+ */
40
+ export const ConnectPostgresHttp = Layer.effect(ConnectPostgres, Effect.succeed(Effect.fn(function* (postgres) {
41
+ const name = postgres.LogicalId;
42
+ if (!globalThis.__ALCHEMY_RUNTIME__) {
43
+ const host = yield* Binding.Host;
44
+ if (isFlyHost(host)) {
45
+ yield* host.bind `${postgres}`({
46
+ postgres: { clusterId: postgres.clusterId },
47
+ });
48
+ }
49
+ }
50
+ const pooled = yield* postgres.pooledConnectionUri;
51
+ const direct = yield* postgres.connectionUri;
52
+ return {
53
+ connectionString: pooled.pipe(Effect.flatMap((value) => asRedactedUrl(value, name))),
54
+ directConnectionString: direct.pipe(Effect.flatMap((value) => asRedactedUrl(value, name))),
55
+ };
56
+ })));
57
+ //# sourceMappingURL=ConnectPostgresHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectPostgresHttp.js","sourceRoot":"","sources":["../src/ConnectPostgresHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAE3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,eAAe,EACf,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAiB,MAAM,eAAe,CAAC;AAE9C,MAAM,SAAS,GAAG,CAAC,KAAc,EAAuD,EAAE,CACxF,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,CAAE,KAA2B,CAAC,IAAI,KAAK,aAAa;QACjD,KAA2B,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;AAEzD,MAAM,aAAa,GAAG,CACpB,KAAc,EACd,IAAY,EACkD,EAAE;IAChE,MAAM,KAAK,GACT,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC;QACnB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAC7C,eAAe,EACf,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAkB;IACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;IAChC,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACjC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA,GAAG,QAAQ,EAAE,CAAC;gBAC5B,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE;aAC5C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACnD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;IAE7C,OAAO;QACL,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACpF,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;KAC3D,CAAC;AACpC,CAAC,CAAC,CACH,CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ import * as Contributions from "alchemy/Contributions";
2
+ declare const _default: {
3
+ readonly name: "fly";
4
+ readonly auth: Contributions.Lazy<import("effect/Layer").Layer<never, never, import("alchemy/Auth/AuthProvider").AuthProviders | import("effect/FileSystem").FileSystem | import("effect/Path").Path>>;
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=Contributions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Contributions.d.ts","sourceRoot":"","sources":["../src/Contributions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;;;;;AAEvD,wBAMG"}
@@ -0,0 +1,6 @@
1
+ import * as Contributions from "alchemy/Contributions";
2
+ export default Contributions.make({
3
+ name: "fly",
4
+ auth: Contributions.lazy(() => import("./AuthProvider.js"), (module) => module.FlyAuth),
5
+ });
6
+ //# sourceMappingURL=Contributions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Contributions.js","sourceRoot":"","sources":["../src/Contributions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;AAEvD,eAAe,aAAa,CAAC,IAAI,CAAC;IAChC,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,aAAa,CAAC,IAAI,CACtB,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,EACjC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAC3B;CACF,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { Credentials } from "@distilled.cloud/fly-io";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ export { Credentials, CredentialsFromEnv, credentials, DEFAULT_API_BASE_URL, normalizeApiBaseUrl, type Config as CredentialsConfig, } from "@distilled.cloud/fly-io";
5
+ /**
6
+ * Capture the deployment's org token as a named runtime Output.
7
+ * Resolve it during binding initialization so plan/diff retains
8
+ * profile-backed credentials rather than falling back to process env.
9
+ */
10
+ export declare const bindFlyApiToken: () => Effect.Effect<void, never, Credentials>;
11
+ /**
12
+ * `Credentials` for the HTTP binding layers (`GetSecretHttp`, `ExecHttp`, …).
13
+ *
14
+ * Those layers are built in two places. Inside a stack (plan/deploy, or an
15
+ * Action) `providers()` has already resolved the profile-backed
16
+ * `Credentials`, and the binding must use them — a laptop deploy has no
17
+ * `FLY_API_TOKEN` in its env once the token lives in the Alchemy profile.
18
+ * Inside a deployed Machine there is no profile; `bindFlyApiToken`
19
+ * has already `RuntimeContext.set` the org token, which Platform copies
20
+ * into Machine env as `FLY_API_TOKEN`. So: reuse the ambient
21
+ * `Credentials` when present, otherwise read the env.
22
+ */
23
+ export declare const CredentialsFromAmbientOrEnv: Layer.Layer<Credentials>;
24
+ /**
25
+ * Build a `Credentials` layer that resolves Fly credentials via the current
26
+ * Alchemy profile, or directly from environment variables in CI.
27
+ *
28
+ * Maps onto `@distilled.cloud/fly-io`'s `{ apiKey, apiBaseUrl }` shape.
29
+ * Distilled's own `CredentialsFromEnv` also accepts `FLY_IO_API_KEY` as a
30
+ * fallback — Alchemy itself only reads `FLY_API_TOKEN`.
31
+ */
32
+ export declare const fromAuthProvider: () => Layer.Layer<Credentials, never, import("alchemy/Auth/AuthProvider").AuthProviders | import("alchemy/Auth/Profile").ProfileStore>;
33
+ //# sourceMappingURL=Credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Credentials.d.ts","sourceRoot":"","sources":["../src/Credentials.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAsB,MAAM,yBAAyB,CAAC;AAO1E,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAStC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,MAAM,IAAI,iBAAiB,GACjC,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CASrE,CAAC;AAEL;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAOhE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,wIA6B1B,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { ConfigError } from "@distilled.cloud/core/errors";
2
+ import { Credentials, CredentialsFromEnv } from "@distilled.cloud/fly-io";
3
+ import { deferUntilFirstUse, orDieCredentialsUnavailable, resolveProviderConfig, } from "alchemy/Auth/Resolve";
4
+ import * as Output from "alchemy/Output";
5
+ import * as Effect from "effect/Effect";
6
+ import * as Layer from "effect/Layer";
7
+ import * as Option from "effect/Option";
8
+ import * as Redacted from "effect/Redacted";
9
+ import { FLY_AUTH_PROVIDER_NAME, } from "./AuthProvider.js";
10
+ export { Credentials, CredentialsFromEnv, credentials, DEFAULT_API_BASE_URL, normalizeApiBaseUrl, } from "@distilled.cloud/fly-io";
11
+ /**
12
+ * Capture the deployment's org token as a named runtime Output.
13
+ * Resolve it during binding initialization so plan/diff retains
14
+ * profile-backed credentials rather than falling back to process env.
15
+ */
16
+ export const bindFlyApiToken = () => Effect.gen(function* () {
17
+ const token = globalThis.__ALCHEMY_RUNTIME__
18
+ ? ""
19
+ : yield* Credentials.pipe(Effect.flatMap((resolve) => resolve), Effect.map((cfg) => Redacted.value(cfg.apiKey)));
20
+ yield* Output.named(Output.asOutput(token), "FLY_API_TOKEN").asEffect().pipe(Effect.asVoid);
21
+ });
22
+ /**
23
+ * `Credentials` for the HTTP binding layers (`GetSecretHttp`, `ExecHttp`, …).
24
+ *
25
+ * Those layers are built in two places. Inside a stack (plan/deploy, or an
26
+ * Action) `providers()` has already resolved the profile-backed
27
+ * `Credentials`, and the binding must use them — a laptop deploy has no
28
+ * `FLY_API_TOKEN` in its env once the token lives in the Alchemy profile.
29
+ * Inside a deployed Machine there is no profile; `bindFlyApiToken`
30
+ * has already `RuntimeContext.set` the org token, which Platform copies
31
+ * into Machine env as `FLY_API_TOKEN`. So: reuse the ambient
32
+ * `Credentials` when present, otherwise read the env.
33
+ */
34
+ export const CredentialsFromAmbientOrEnv = Layer.effect(Credentials, Effect.gen(function* () {
35
+ const ambient = yield* Effect.serviceOption(Credentials);
36
+ if (Option.isSome(ambient))
37
+ return ambient.value;
38
+ return yield* Credentials.pipe(Effect.provide(CredentialsFromEnv));
39
+ }));
40
+ /**
41
+ * Build a `Credentials` layer that resolves Fly credentials via the current
42
+ * Alchemy profile, or directly from environment variables in CI.
43
+ *
44
+ * Maps onto `@distilled.cloud/fly-io`'s `{ apiKey, apiBaseUrl }` shape.
45
+ * Distilled's own `CredentialsFromEnv` also accepts `FLY_IO_API_KEY` as a
46
+ * fallback — Alchemy itself only reads `FLY_API_TOKEN`.
47
+ */
48
+ export const fromAuthProvider = () => Layer.effect(Credentials, Effect.gen(function* () {
49
+ // Defer profile lookup and credential resolution until first use, so
50
+ // building the provider layers never requires a configured profile.
51
+ const resolve = yield* resolveProviderConfig(FLY_AUTH_PROVIDER_NAME).pipe(Effect.flatMap(({ profileName, resolve }) => resolve.pipe(Effect.map((creds) => ({
52
+ apiKey: creds.apiKey,
53
+ apiBaseUrl: creds.apiBaseUrl,
54
+ })), Effect.mapError((e) => ConfigError.make({
55
+ message: `Failed to resolve Fly credentials from ${profileName === undefined ? "the CI environment" : `profile '${profileName}'`}: ${e.message ?? String(e)}`,
56
+ })))), deferUntilFirstUse);
57
+ return yield* resolve.pipe(orDieCredentialsUnavailable(FLY_AUTH_PROVIDER_NAME), Effect.cached);
58
+ }));
59
+ //# sourceMappingURL=Credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Credentials.js","sourceRoot":"","sources":["../src/Credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { DecryptSecretKeyError } from "@distilled.cloud/fly-io/machines";
2
+ import * as Binding from "alchemy/Binding";
3
+ import type { RuntimeContext } from "alchemy/RuntimeContext";
4
+ import type * as Effect from "effect/Effect";
5
+ import type * as Redacted from "effect/Redacted";
6
+ import type { SecretKey } from "./SecretKey.ts";
7
+ export interface DecryptRequest {
8
+ /** Ciphertext produced by {@link Encrypt}. */
9
+ ciphertext: Uint8Array | ArrayLike<number>;
10
+ /** Optional AEAD associated data. Must match encryption. */
11
+ associatedData?: Uint8Array | ArrayLike<number>;
12
+ }
13
+ export interface DecryptResult {
14
+ /** Plaintext, wrapped so it never logs. Unwrap with `Redacted.value`. */
15
+ plaintext: Redacted.Redacted<Uint8Array>;
16
+ }
17
+ /**
18
+ * Decrypt with a Fly {@link SecretKey}. The App and key name are fixed
19
+ * by `Decrypt(key)`.
20
+ *
21
+ *
22
+ * ### Decrypt a payload
23
+ * Provide {@link DecryptHttp}. Plaintext comes back `Redacted`. Unwrap
24
+ * with `Redacted.value` only where you need the raw bytes.
25
+ *
26
+ * **Example:** Decrypt
27
+ * ```typescript
28
+ * import * as Redacted from "effect/Redacted";
29
+ *
30
+ * const decrypt = yield* Fly.Decrypt(Box);
31
+ * const { plaintext } = yield* decrypt({ ciphertext });
32
+ * const bytes = Redacted.value(plaintext);
33
+ * ```
34
+ *
35
+ * ### Associated data
36
+ * `associatedData` must match the bytes passed to {@link Encrypt}.
37
+ *
38
+ * **Example:** AEAD
39
+ * ```typescript
40
+ * const { plaintext } = yield* decrypt({
41
+ * ciphertext,
42
+ * associatedData: nonce,
43
+ * });
44
+ * ```
45
+ *
46
+ * @binding
47
+ * @product Secret Key
48
+ */
49
+ export interface Decrypt extends Binding.Service<Decrypt, "Fly.Decrypt", (key: SecretKey) => Effect.Effect<(request: DecryptRequest) => Effect.Effect<DecryptResult, DecryptSecretKeyError, RuntimeContext>>> {
50
+ }
51
+ export declare const Decrypt: Decrypt;
52
+ //# sourceMappingURL=Decrypt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Decrypt.d.ts","sourceRoot":"","sources":["../src/Decrypt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3C,4DAA4D;IAC5D,cAAc,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,OAAQ,SAAQ,OAAO,CAAC,OAAO,CAC9C,OAAO,EACP,aAAa,EACb,CACE,GAAG,EAAE,SAAS,KACX,MAAM,CAAC,MAAM,CAChB,CAAC,OAAO,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,cAAc,CAAC,CACjG,CACF;CAAG;AAEJ,eAAO,MAAM,OAAO,SAA0C,CAAC"}
package/lib/Decrypt.js ADDED
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const Decrypt = Binding.Service("Fly.Decrypt");
3
+ //# sourceMappingURL=Decrypt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Decrypt.js","sourceRoot":"","sources":["../src/Decrypt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA4D3C,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAU,aAAa,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { Decrypt } from "./Decrypt.ts";
3
+ /**
4
+ * HTTP implementation of {@link Decrypt}. Provide it on the
5
+ * {@link Service} or Action Effect.
6
+ *
7
+ *
8
+ * ### Provide the layer
9
+ * **Example:** On a Service
10
+ * ```typescript
11
+ * Effect.gen(function* () {
12
+ * const decrypt = yield* Fly.Decrypt(Box);
13
+ * // ...
14
+ * }).pipe(Effect.provide(Fly.DecryptHttp))
15
+ * ```
16
+ *
17
+ * @layer
18
+ * @product Secret Key
19
+ * @provides Fly.Decrypt
20
+ */
21
+ export declare const DecryptHttp: Layer.Layer<Decrypt, never, never>;
22
+ //# sourceMappingURL=DecryptHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecryptHttp.d.ts","sourceRoot":"","sources":["../src/DecryptHttp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAc,CAAC;AAI5D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,WAAW,oCAuBgE,CAAC"}
@@ -0,0 +1,43 @@
1
+ import * as machines from "@distilled.cloud/fly-io/machines";
2
+ import * as Effect from "effect/Effect";
3
+ import * as FetchHttpClient from "effect/http/FetchHttpClient";
4
+ import * as Layer from "effect/Layer";
5
+ import * as Redacted from "effect/Redacted";
6
+ import { CredentialsFromAmbientOrEnv } from "./Credentials.js";
7
+ import { Decrypt } from "./Decrypt.js";
8
+ import { unwrapSecretValue } from "./SecretHttp.js";
9
+ import { base64ToBytes, bytesToBase64, makeHttpSecretKeyBinding } from "./SecretKeyHttp.js";
10
+ /**
11
+ * HTTP implementation of {@link Decrypt}. Provide it on the
12
+ * {@link Service} or Action Effect.
13
+ *
14
+ *
15
+ * ### Provide the layer
16
+ * **Example:** On a Service
17
+ * ```typescript
18
+ * Effect.gen(function* () {
19
+ * const decrypt = yield* Fly.Decrypt(Box);
20
+ * // ...
21
+ * }).pipe(Effect.provide(Fly.DecryptHttp))
22
+ * ```
23
+ *
24
+ * @layer
25
+ * @product Secret Key
26
+ * @provides Fly.Decrypt
27
+ */
28
+ export const DecryptHttp = Layer.effect(Decrypt, Effect.suspend(() => makeHttpSecretKeyBinding({
29
+ makeClient: (auth, appName, secretName) => Effect.fn("Fly.Decrypt")(function* (request) {
30
+ const res = yield* auth.authorize(machines.decryptSecretKey({
31
+ app_name: yield* appName,
32
+ secret_name: yield* secretName,
33
+ ciphertext: bytesToBase64(request.ciphertext),
34
+ associated_data: request.associatedData === undefined
35
+ ? undefined
36
+ : bytesToBase64(request.associatedData),
37
+ }));
38
+ return {
39
+ plaintext: Redacted.make(base64ToBytes(unwrapSecretValue(res.plaintext ?? ""))),
40
+ };
41
+ }),
42
+ }))).pipe(Layer.provide(FetchHttpClient.layer), Layer.provide(CredentialsFromAmbientOrEnv));
43
+ //# sourceMappingURL=DecryptHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecryptHttp.js","sourceRoot":"","sources":["../src/DecryptHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE5F;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CACrC,OAAO,EACP,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,wBAAwB,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CACxC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAuB;QACzD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAC/B,QAAQ,CAAC,gBAAgB,CAAC;YACxB,QAAQ,EAAE,KAAK,CAAC,CAAC,OAAO;YACxB,WAAW,EAAE,KAAK,CAAC,CAAC,UAAU;YAC9B,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;YAC7C,eAAe,EACb,OAAO,CAAC,cAAc,KAAK,SAAS;gBAClC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC;SAC5C,CAAC,CACH,CAAC;QACF,OAAO;YACL,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;SAChF,CAAC;IACJ,CAAC,CAAC;CACL,CAAC,CACH,CACF,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type * as S3 from "@distilled.cloud/aws/s3";
2
+ import * as Binding from "alchemy/Binding";
3
+ import type { RuntimeContext } from "alchemy/RuntimeContext";
4
+ import type * as Effect from "effect/Effect";
5
+ import type { Bucket } from "./Bucket.ts";
6
+ import type { TigrisCredentialsMissing } from "./Errors.ts";
7
+ export interface DeleteObjectRequest extends Omit<S3.DeleteObjectRequest, "Bucket"> {
8
+ }
9
+ /**
10
+ * Runtime binding for Tigris `DeleteObject` over the S3 API.
11
+ *
12
+ * Bind this operation to a {@link Bucket} in Service init. Provide
13
+ * {@link DeleteObjectHttp}.
14
+ *
15
+ *
16
+ * ### Deleting Objects
17
+ * **Example:** Delete an Object
18
+ * ```typescript
19
+ * const deleteObject = yield* Fly.DeleteObject(Data);
20
+ * yield* deleteObject({ Key: "hello.txt" });
21
+ * ```
22
+ *
23
+ * @binding
24
+ * @product Bucket
25
+ */
26
+ export interface DeleteObject extends Binding.Service<DeleteObject, "Fly.DeleteObject", (bucket: Bucket) => Effect.Effect<(request: DeleteObjectRequest) => Effect.Effect<S3.DeleteObjectOutput, S3.DeleteObjectError | TigrisCredentialsMissing, RuntimeContext>>> {
27
+ }
28
+ export declare const DeleteObject: DeleteObject;
29
+ //# sourceMappingURL=DeleteObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteObject.d.ts","sourceRoot":"","sources":["../src/DeleteObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC;CAAG;AAEtF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,OAAO,CACnD,YAAY,EACZ,kBAAkB,EAClB,CACE,MAAM,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAChB,CACE,OAAO,EAAE,mBAAmB,KACzB,MAAM,CAAC,MAAM,CAChB,EAAE,CAAC,kBAAkB,EACrB,EAAE,CAAC,iBAAiB,GAAG,wBAAwB,EAC/C,cAAc,CACf,CACF,CACF;CAAG;AAEJ,eAAO,MAAM,YAAY,cAAoD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const DeleteObject = Binding.Service("Fly.DeleteObject");
3
+ //# sourceMappingURL=DeleteObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteObject.js","sourceRoot":"","sources":["../src/DeleteObject.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAyC3C,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAe,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { DeleteObject } from "./DeleteObject.ts";
3
+ /**
4
+ * HTTP implementation of {@link DeleteObject}. Calls distilled S3
5
+ * `deleteObject` against the Tigris endpoint with the bucket's credentials.
6
+ *
7
+ * @layer
8
+ * @product Bucket
9
+ * @provides Fly.DeleteObject
10
+ */
11
+ export declare const DeleteObjectHttp: Layer.Layer<DeleteObject, never, never>;
12
+ //# sourceMappingURL=DeleteObjectHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteObjectHttp.d.ts","sourceRoot":"","sources":["../src/DeleteObjectHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,yCAM5B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import * as S3 from "@distilled.cloud/aws/s3";
2
+ import * as Layer from "effect/Layer";
3
+ import { makeTigrisS3Binding } from "./BucketBinding.js";
4
+ import { DeleteObject } from "./DeleteObject.js";
5
+ /**
6
+ * HTTP implementation of {@link DeleteObject}. Calls distilled S3
7
+ * `deleteObject` against the Tigris endpoint with the bucket's credentials.
8
+ *
9
+ * @layer
10
+ * @product Bucket
11
+ * @provides Fly.DeleteObject
12
+ */
13
+ export const DeleteObjectHttp = Layer.effect(DeleteObject, makeTigrisS3Binding({
14
+ tag: "Fly.DeleteObject",
15
+ operation: S3.deleteObject,
16
+ }));
17
+ //# sourceMappingURL=DeleteObjectHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteObjectHttp.js","sourceRoot":"","sources":["../src/DeleteObjectHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAC1C,YAAY,EACZ,mBAAmB,CAAC;IAClB,GAAG,EAAE,kBAAkB;IACvB,SAAS,EAAE,EAAE,CAAC,YAAY;CAC3B,CAAC,CACH,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { FlyMachineConfig, FlyStopConfigSignal } from "@distilled.cloud/fly-io/machines";
2
+ import * as Duration from "effect/Duration";
3
+ import * as Effect from "effect/Effect";
4
+ import type { MachineServiceCheck } from "./Machine.ts";
5
+ /** Replacement/readiness policy shared by Machines, Services, and websites; not an App-wide deployment lock. */
6
+ export interface MachineDeploy {
7
+ /** Sequential in-place updates, or a checked replacement set. @default "rolling" */
8
+ strategy: "rolling" | "bluegreen";
9
+ /** Readiness deadline after startup, positive and at most 300 seconds. A deadline-only change does not replace Machines. @default "60 seconds" */
10
+ healthTimeout?: Duration.Input;
11
+ }
12
+ /** Process shutdown policy. Retirement uses the predecessor's own policy; raw images and external website servers own signal handling and drain. */
13
+ export interface MachineShutdown {
14
+ /** Signal sent before termination. Managed Services support SIGTERM and SIGINT. @default "SIGTERM" */
15
+ signal?: Exclude<FlyStopConfigSignal, "SIGKILL">;
16
+ /** Grace period, greater than zero and at most 300 seconds. @default "30 seconds" */
17
+ timeout?: Duration.Input;
18
+ }
19
+ /** Named readiness check for a worker without public proxy ports. */
20
+ export interface MachineCheck extends MachineServiceCheck {
21
+ /** Port inside the Machine to check. */
22
+ port: number;
23
+ }
24
+ declare const InvalidDeployment_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 & {
25
+ readonly _tag: "Fly.InvalidDeployment";
26
+ } & Readonly<A>;
27
+ export declare class InvalidDeployment extends InvalidDeployment_base<{
28
+ message: string;
29
+ }> {
30
+ }
31
+ export interface DeploymentPolicy {
32
+ bluegreen: boolean;
33
+ healthTimeoutMs: number;
34
+ shutdown: {
35
+ signal: Exclude<FlyStopConfigSignal, "SIGKILL">;
36
+ timeout: string;
37
+ timeoutMs: number;
38
+ } | undefined;
39
+ }
40
+ export declare const deploymentPolicy: (deploy: MachineDeploy | undefined, shutdown: MachineShutdown | undefined, managed?: any) => Effect.Effect<{
41
+ bluegreen: boolean;
42
+ healthTimeoutMs: number;
43
+ shutdown: {
44
+ signal: "SIGHUP" | "SIGINT" | "SIGQUIT" | "SIGTERM" | "SIGUSR1" | "SIGUSR2";
45
+ timeout: string;
46
+ timeoutMs: number;
47
+ } | undefined;
48
+ }, InvalidDeployment, never>;
49
+ export declare const validateDeployment: (policy: DeploymentPolicy, config: FlyMachineConfig, mounted: boolean, skipLaunch?: boolean) => Effect.Effect<void, never, never> | Effect.Effect<never, InvalidDeployment, never>;
50
+ export {};
51
+ //# sourceMappingURL=Deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Deployment.d.ts","sourceRoot":"","sources":["../src/Deployment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE9F,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,gHAAgH;AAChH,MAAM,WAAW,aAAa;IAC5B,oFAAoF;IACpF,QAAQ,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,kJAAkJ;IAClJ,aAAa,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;CAChC;AAED,oJAAoJ;AACpJ,MAAM,WAAW,eAAe;IAC9B,sGAAsG;IACtG,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IACjD,qFAAqF;IACrF,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;CAC1B;AAED,qEAAqE;AACrE,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;CACd;;;;AAED,qBAAa,iBAAkB,SAAQ,uBAA0C;IAC/E,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;CAAG;AAEL,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EACJ;QAAE,MAAM,EAAE,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GACvF,SAAS,CAAC;CACf;AAiBD,eAAO,MAAM,gBAAgB;;;;;;;;4BAmC3B,CAAC;AAEH,eAAO,MAAM,kBAAkB,WACrB,gBAAgB,UAChB,gBAAgB,WACf,OAAO,6GAwBjB,CAAC"}
@@ -0,0 +1,62 @@
1
+ import * as Data from "effect/Data";
2
+ import * as Duration from "effect/Duration";
3
+ import * as Effect from "effect/Effect";
4
+ import { pinsFromConfig } from "./DeploymentImages.js";
5
+ export class InvalidDeployment extends Data.TaggedError("Fly.InvalidDeployment") {
6
+ }
7
+ const duration = (value, name, maximum) => Effect.try({
8
+ try: () => {
9
+ const milliseconds = Duration.toMillis(value);
10
+ if (!Number.isSafeInteger(milliseconds) || milliseconds <= 0 || milliseconds > maximum) {
11
+ throw new Error("invalid duration");
12
+ }
13
+ return milliseconds;
14
+ },
15
+ catch: () => new InvalidDeployment({
16
+ message: `${name} must be a finite positive duration no greater than ${maximum / 1000} seconds.`,
17
+ }),
18
+ });
19
+ export const deploymentPolicy = Effect.fn(function* (deploy, shutdown, managed = false) {
20
+ const bluegreen = deploy?.strategy === "bluegreen";
21
+ const healthTimeoutMs = yield* duration(deploy?.healthTimeout ?? "60 seconds", "deploy.healthTimeout", 300_000);
22
+ const enabled = bluegreen || shutdown !== undefined;
23
+ const signal = shutdown?.signal ?? "SIGTERM";
24
+ if (enabled &&
25
+ !["SIGHUP", "SIGINT", "SIGQUIT", "SIGUSR1", "SIGUSR2", "SIGTERM"].includes(signal)) {
26
+ return yield* new InvalidDeployment({
27
+ message: "shutdown.signal must be a supported graceful Fly signal, not SIGKILL.",
28
+ });
29
+ }
30
+ if (managed && enabled && signal !== "SIGTERM" && signal !== "SIGINT") {
31
+ return yield* new InvalidDeployment({
32
+ message: "Managed Fly Services support SIGTERM and SIGINT shutdown signals.",
33
+ });
34
+ }
35
+ const timeoutMs = enabled
36
+ ? yield* duration(shutdown?.timeout ?? "30 seconds", "shutdown.timeout", 300_000)
37
+ : undefined;
38
+ return {
39
+ bluegreen,
40
+ healthTimeoutMs,
41
+ shutdown: timeoutMs === undefined ? undefined : { signal, timeout: `${timeoutMs}ms`, timeoutMs },
42
+ };
43
+ });
44
+ export const validateDeployment = (policy, config, mounted, skipLaunch = false) => {
45
+ if (!policy.bluegreen)
46
+ return Effect.void;
47
+ let message;
48
+ if (mounted)
49
+ message = "Blue/green deployments cannot attach volumes, including MountVolume bindings.";
50
+ else if (config.containers !== undefined && pinsFromConfig(config) === undefined)
51
+ message =
52
+ "Blue/green multi-container Machines require unique names and immutable repository@sha256 image references for every container.";
53
+ else if (skipLaunch || config.auto_destroy || config.restart?.policy === "no")
54
+ message = "Blue/green deployments require a persistent, launched Machine.";
55
+ else if ((config.services ?? []).some((service) => (service.ports?.length ?? 0) > 0 && !service.checks?.length))
56
+ message = "Every published service needs a service health check for blue/green deployment.";
57
+ else if (!(config.services ?? []).some((service) => service.checks?.length) &&
58
+ !Object.keys(config.checks ?? {}).length)
59
+ message = "Blue/green deployments require readiness checks.";
60
+ return message ? Effect.fail(new InvalidDeployment({ message })) : Effect.void;
61
+ };
62
+ //# sourceMappingURL=Deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Deployment.js","sourceRoot":"","sources":["../src/Deployment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { FlyMachineConfig } from "@distilled.cloud/fly-io/machines";
2
+ export type ContainerImagePin = {
3
+ name: string;
4
+ image: string;
5
+ };
6
+ /** Blue/green needs immutable image references that survive a crash. */
7
+ export declare const isImmutableImage: (image: string) => boolean;
8
+ export declare const pinsFromConfig: (config: FlyMachineConfig | undefined) => ContainerImagePin[] | undefined;
9
+ export declare const encodeImageSet: (pins: readonly ContainerImagePin[]) => string | undefined;
10
+ export declare const decodeImageSet: (raw: string | undefined) => ContainerImagePin[] | undefined;
11
+ export declare const sameImageSet: (left: readonly ContainerImagePin[] | undefined, right: readonly ContainerImagePin[] | undefined) => boolean;
12
+ /** Protocol-2 metadata and the authoritative readback config must describe exactly the same set. */
13
+ export declare const validObservedImageSet: (machine: {
14
+ config?: FlyMachineConfig;
15
+ }) => boolean;
16
+ /** Keep all named pins when changing service or idle policy on a candidate. */
17
+ export declare const applyImageSet: (config: FlyMachineConfig, pins: readonly ContainerImagePin[]) => FlyMachineConfig | undefined;
18
+ //# sourceMappingURL=DeploymentImages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentImages.d.ts","sourceRoot":"","sources":["../src/DeploymentImages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAMzE,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,OACoB,CAAC;AAUtE,eAAO,MAAM,cAAc,WACjB,gBAAgB,GAAG,SAAS,KACnC,iBAAiB,EAAE,GAAG,SAQxB,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,SAAS,iBAAiB,EAAE,KAAG,MAAM,GAAG,SAClB,CAAC;AAE5D,eAAO,MAAM,cAAc,QAAS,MAAM,GAAG,SAAS,KAAG,iBAAiB,EAAE,GAAG,SAM9E,CAAC;AAEF,eAAO,MAAM,YAAY,SACjB,SAAS,iBAAiB,EAAE,GAAG,SAAS,SACvC,SAAS,iBAAiB,EAAE,GAAG,SAAS,KAC9C,OAIF,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,qBAAqB,YAAa;IAAE,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,KAAG,OAO9E,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,aAAa,WAChB,gBAAgB,QAClB,SAAS,iBAAiB,EAAE,KACjC,gBAAgB,GAAG,SAiBrB,CAAC"}