@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,389 @@
1
+ import type { SecretKey as FlySecretKey } from "@distilled.cloud/fly-io/machines";
2
+ import * as machines from "@distilled.cloud/fly-io/machines";
3
+ import { Unowned } from "alchemy/AdoptPolicy";
4
+ import { deepEqual, isResolved } from "alchemy/Diff";
5
+ import * as Provider from "alchemy/Provider";
6
+ import { Resource } from "alchemy/Resource";
7
+ import * as Data from "effect/Data";
8
+ import * as Effect from "effect/Effect";
9
+ import * as Schedule from "effect/Schedule";
10
+ import { App, listOwnedApps } from "./App.ts";
11
+ import {
12
+ createFlyVolumeName,
13
+ matchesAlchemyPhysicalName,
14
+ sanitizeFlyVolumeName,
15
+ } from "./Metadata.ts";
16
+ import type { Providers } from "./Providers.ts";
17
+
18
+ /**
19
+ * A resource-valued prop: the resource itself, or an Effect that produces
20
+ * it (so `yield* App(...)` and `App(...)` both type-check).
21
+ */
22
+ type Ref<T> = T | Effect.Effect<T, never, Providers>;
23
+
24
+ export interface SecretKeyProps {
25
+ /**
26
+ * Parent Fly App. Changing it replaces the secret key.
27
+ */
28
+ app: Ref<App>;
29
+ /**
30
+ * Secret key name, unique per App. If omitted, a unique name is generated
31
+ * from the stack, stage and logical ID (the ownership stamp). Changing it
32
+ * replaces the key.
33
+ */
34
+ name?: string;
35
+ /**
36
+ * Fly key type (`nacl_sign`, `nacl_box`, `hs256`, `hs384`, `hs512`,
37
+ * `xaes256gcm`, `nacl_auth`, `nacl_secretbox`, `es256`). Changing it
38
+ * replaces the key.
39
+ */
40
+ type?: string;
41
+ /**
42
+ * Raw key material. If omitted, Fly generates a key via
43
+ * `generateSecretKey`. If set, the key is created or updated with
44
+ * `setSecretKey`. Never persisted in state.
45
+ */
46
+ value?: ReadonlyArray<number>;
47
+ }
48
+
49
+ export type SecretKey = Resource<
50
+ "Fly.SecretKey",
51
+ SecretKeyProps,
52
+ {
53
+ /** Parent Fly App name. */
54
+ appName: string;
55
+ /** Secret key name (unique per App). */
56
+ name: string;
57
+ /** Observed Fly key type. */
58
+ type: string | undefined;
59
+ /** Public key (base64), when the type has one. Never private material. */
60
+ publicKey: string | undefined;
61
+ /** RFC3339 creation timestamp. */
62
+ createdAt: string | undefined;
63
+ /** RFC3339 last-update timestamp. */
64
+ updatedAt: string | undefined;
65
+ },
66
+ never,
67
+ Providers
68
+ >;
69
+
70
+ const resolveSecretKeyProps = (
71
+ props: SecretKeyProps | Effect.Effect<SecretKeyProps, never, Providers>,
72
+ ): Effect.Effect<SecretKeyProps, never, Providers> =>
73
+ Effect.gen(function* () {
74
+ const resolved = Effect.isEffect(props) ? yield* props : props;
75
+ if (globalThis.__ALCHEMY_RUNTIME__) return resolved;
76
+ const app = Effect.isEffect(resolved.app)
77
+ ? yield* resolved.app as Effect.Effect<App, never, Providers>
78
+ : resolved.app;
79
+ return { ...resolved, app };
80
+ });
81
+
82
+ const SecretKeyResource = Resource<SecretKey>("Fly.SecretKey");
83
+
84
+ /**
85
+ * A Fly.SecretKey is an App KMS key, not an env secret. Generate a
86
+ * random key or set raw material. Private bytes never appear in
87
+ * attributes.
88
+ *
89
+ * Use it at runtime with {@link Encrypt}, {@link Decrypt}, {@link Sign},
90
+ * and {@link Verify}. Generate, set, and delete stay on this resource.
91
+ *
92
+ * @see https://docs.machines.dev/secrets/Secretkeys_list
93
+ *
94
+ * ### Generate a key
95
+ * Omit `value` and Fly generates a key via `generateSecretKey`. `type`
96
+ * is Fly's key type (`nacl_sign`, `nacl_box`, `nacl_secretbox`,
97
+ * `hs256`, `hs384`, `hs512`, `xaes256gcm`, `nacl_auth`, `es256`, …).
98
+ *
99
+ * **Example:** Signing key
100
+ * ```typescript
101
+ * export const Signing = Fly.SecretKey("Signing", {
102
+ * app: Site,
103
+ * type: "nacl_sign",
104
+ * });
105
+ * ```
106
+ *
107
+ * :::caution[Changing `app`, `name`, or `type` replaces the key]
108
+ * The new key is created. The old one is deleted. Ciphertext from the
109
+ * old key will not decrypt.
110
+ * :::
111
+ *
112
+ * ### Set raw material
113
+ * Pass `value` as bytes. The key is created or updated with
114
+ * `setSecretKey`. Never persisted in state.
115
+ *
116
+ * **Example:** HS256
117
+ * ```typescript
118
+ * const hmac = yield* Fly.SecretKey("Hmac", {
119
+ * app: Site,
120
+ * type: "hs256",
121
+ * value: hmacBytes,
122
+ * });
123
+ * ```
124
+ *
125
+ * ### Encrypt
126
+ * Bind {@link Encrypt} to a box/secretbox/AEAD key. Provide
127
+ * {@link EncryptHttp}. Optional `associatedData` is AEAD associated
128
+ * data.
129
+ *
130
+ * Fly crypto ops need a KMS token. Org API tokens are typed
131
+ * `Forbidden`. Encrypt and sign from a {@link Service}, not a laptop
132
+ * Action.
133
+ *
134
+ * **Example:** Encrypt a payload
135
+ * ```typescript
136
+ * const encrypt = yield* Fly.Encrypt(Box);
137
+ * const { ciphertext } = yield* encrypt({
138
+ * plaintext: new TextEncoder().encode("attack at dawn"),
139
+ * });
140
+ * ```
141
+ *
142
+ * ### Decrypt
143
+ * Bind {@link Decrypt} to the same key. Plaintext comes back
144
+ * `Redacted`. Unwrap with `Redacted.value`. `associatedData` must
145
+ * match encryption. Provide {@link DecryptHttp}.
146
+ *
147
+ * **Example:** Decrypt a payload
148
+ * ```typescript
149
+ * const decrypt = yield* Fly.Decrypt(Box);
150
+ * const { plaintext } = yield* decrypt({ ciphertext });
151
+ * const bytes = Redacted.value(plaintext);
152
+ * ```
153
+ *
154
+ * ### Sign
155
+ * Bind {@link Sign} to a signing key (`nacl_sign`, `hs256`, `es256`,
156
+ * …). The private key never leaves Fly KMS. Provide {@link SignHttp}.
157
+ *
158
+ * **Example:** Sign a payload
159
+ * ```typescript
160
+ * const sign = yield* Fly.Sign(Signing);
161
+ * const { signature } = yield* sign({
162
+ * plaintext: new TextEncoder().encode("release-manifest-v1"),
163
+ * });
164
+ * ```
165
+ *
166
+ * ### Verify
167
+ * Bind {@link Verify} to the same key. A bad signature is a typed
168
+ * error from the Machines API. Provide {@link VerifyHttp}.
169
+ *
170
+ * **Example:** Verify a signature
171
+ * ```typescript
172
+ * const verify = yield* Fly.Verify(Signing);
173
+ * const { valid } = yield* verify({ plaintext, signature });
174
+ * ```
175
+ *
176
+ * @resource
177
+ * @product Secret Key
178
+ */
179
+ export const SecretKey: typeof SecretKeyResource = Object.assign(
180
+ (id: string, props: SecretKeyProps | Effect.Effect<SecretKeyProps, never, Providers>) =>
181
+ SecretKeyResource(id, resolveSecretKeyProps(props)),
182
+ SecretKeyResource,
183
+ );
184
+
185
+ export class SecretKeyNotCreated extends Data.TaggedError("Fly.SecretKeyNotCreated")<{
186
+ appName: string;
187
+ secretName: string;
188
+ }> {}
189
+
190
+ export class SecretKeyAppRequired extends Data.TaggedError("Fly.SecretKeyAppRequired")<{
191
+ message: string;
192
+ }> {}
193
+
194
+ const appNameOf = (value: unknown): string | undefined => {
195
+ if (value === null || typeof value !== "object") return undefined;
196
+ const rec = value as { appName?: unknown };
197
+ return typeof rec.appName === "string" && rec.appName.length > 0 ? rec.appName : undefined;
198
+ };
199
+
200
+ const resolveName = (id: string, name: string | undefined, existing?: string) =>
201
+ Effect.gen(function* () {
202
+ if (name !== undefined) return sanitizeFlyVolumeName(name);
203
+ if (existing !== undefined) return existing;
204
+ return yield* createFlyVolumeName(id);
205
+ });
206
+
207
+ const toAttrs = (
208
+ appName: string,
209
+ key: FlySecretKey,
210
+ fallbackName: string,
211
+ ): SecretKey["Attributes"] => ({
212
+ appName,
213
+ name: key.name ?? fallbackName,
214
+ type: key.type,
215
+ publicKey: key.public_key,
216
+ createdAt: key.created_at,
217
+ updatedAt: key.updated_at,
218
+ });
219
+
220
+ const getByName = (appName: string, secretName: string) =>
221
+ machines
222
+ .getSecretKey({
223
+ app_name: appName,
224
+ secret_name: secretName,
225
+ })
226
+ .pipe(Effect.catchTag("NotFound", () => Effect.undefined));
227
+
228
+ const listKeys = (appName: string) =>
229
+ machines.listSecretKeys({ app_name: appName }).pipe(
230
+ Effect.map((res) => res.secret_keys ?? []),
231
+ Effect.catchTag(["NotFound", "Forbidden"], () => Effect.succeed([])),
232
+ );
233
+
234
+ const putKey = (input: {
235
+ appName: string;
236
+ secretName: string;
237
+ type: string | undefined;
238
+ value: ReadonlyArray<number> | undefined;
239
+ }) => {
240
+ if (input.value !== undefined) {
241
+ return machines.setSecretKey({
242
+ app_name: input.appName,
243
+ secret_name: input.secretName,
244
+ type: input.type,
245
+ value: [...input.value],
246
+ });
247
+ }
248
+ return machines.generateSecretKey({
249
+ app_name: input.appName,
250
+ secret_name: input.secretName,
251
+ type: input.type,
252
+ });
253
+ };
254
+
255
+ const valuesEqual = (
256
+ left: ReadonlyArray<number> | undefined,
257
+ right: ReadonlyArray<number> | undefined,
258
+ ): boolean => {
259
+ if (left === undefined && right === undefined) return true;
260
+ if (left === undefined || right === undefined) return false;
261
+ return deepEqual(left, right);
262
+ };
263
+
264
+ export const SecretKeyProvider = () =>
265
+ Provider.succeed(SecretKey, {
266
+ stables: ["appName", "name", "type", "publicKey", "createdAt"],
267
+ nuke: { dependsOn: ["Fly.App"] },
268
+
269
+ diff: Effect.fn(function* ({ news, output }) {
270
+ if (news === undefined || !isResolved(news)) return undefined;
271
+ if (output === undefined) return undefined;
272
+ const desiredName = news.name !== undefined ? sanitizeFlyVolumeName(news.name) : output.name;
273
+ const nameChanged = desiredName !== output.name;
274
+ const nextApp = appNameOf(news.app);
275
+ const appChanged = nextApp !== undefined && nextApp !== output.appName;
276
+ const typeChanged =
277
+ news.type !== undefined && output.type !== undefined && news.type !== output.type;
278
+ if (nameChanged || appChanged || typeChanged) {
279
+ return {
280
+ action: "replace" as const,
281
+ // Same (app, name) cannot hold two types — delete first.
282
+ deleteFirst: !nameChanged && !appChanged,
283
+ };
284
+ }
285
+ return undefined;
286
+ }),
287
+
288
+ read: Effect.fn(function* ({ id, olds, output }) {
289
+ const appName = output?.appName ?? (olds !== undefined ? appNameOf(olds.app) : undefined);
290
+ if (appName === undefined) return undefined;
291
+ const name = yield* resolveName(id, olds?.name, output?.name);
292
+ const found = yield* getByName(appName, name);
293
+ if (found === undefined) return undefined;
294
+ const attrs = toAttrs(appName, found, name);
295
+ if (output !== undefined) return attrs;
296
+ return matchesAlchemyPhysicalName(name) ? attrs : Unowned(attrs);
297
+ }),
298
+
299
+ list: Effect.fn(function* () {
300
+ const apps = yield* listOwnedApps();
301
+ const rows = yield* Effect.forEach(
302
+ apps,
303
+ (app) =>
304
+ listKeys(app.appName).pipe(
305
+ Effect.map((keys) =>
306
+ keys.flatMap((key) => {
307
+ const name = key.name;
308
+ if (!matchesAlchemyPhysicalName(name)) return [];
309
+ return [toAttrs(app.appName, key, name ?? "")];
310
+ }),
311
+ ),
312
+ ),
313
+ { concurrency: 8 },
314
+ );
315
+ return rows.flat();
316
+ }),
317
+
318
+ reconcile: Effect.fn(function* ({ id, news, olds, output }) {
319
+ const props = news ?? ({} as SecretKeyProps);
320
+ const appName = appNameOf(props.app) ?? output?.appName;
321
+ if (appName === undefined) {
322
+ return yield* new SecretKeyAppRequired({
323
+ message: "SecretKey requires a resolved Fly.App",
324
+ });
325
+ }
326
+ const name = yield* resolveName(id, props.name, output?.name);
327
+
328
+ // Observe by cached identity, then the desired (app, name).
329
+ let current =
330
+ output !== undefined ? yield* getByName(output.appName, output.name) : undefined;
331
+ if (
332
+ current === undefined &&
333
+ (output === undefined || output.appName !== appName || output.name !== name)
334
+ ) {
335
+ current = yield* getByName(appName, name);
336
+ }
337
+
338
+ if (current === undefined) {
339
+ yield* putKey({
340
+ appName,
341
+ secretName: name,
342
+ type: props.type,
343
+ value: props.value,
344
+ }).pipe(Effect.catchTag("Conflict", () => Effect.void));
345
+ current = yield* getByName(appName, name);
346
+ }
347
+
348
+ if (current === undefined) {
349
+ return yield* new SecretKeyNotCreated({ appName, secretName: name });
350
+ }
351
+
352
+ // Sync — re-set when the caller supplied new material. Observed
353
+ // cloud never returns private bytes; `olds.value` is only a hint.
354
+ const desiredValue = props.value;
355
+ if (desiredValue !== undefined) {
356
+ const previousValue = olds?.value;
357
+ const shouldSet = previousValue === undefined || !valuesEqual(previousValue, desiredValue);
358
+ if (shouldSet) {
359
+ yield* putKey({
360
+ appName,
361
+ secretName: name,
362
+ type: props.type ?? current.type,
363
+ value: desiredValue,
364
+ }).pipe(Effect.catchTag("Conflict", () => Effect.void));
365
+ current = (yield* getByName(appName, name)) ?? current;
366
+ }
367
+ }
368
+
369
+ return toAttrs(appName, current, name);
370
+ }),
371
+
372
+ delete: Effect.fn(function* ({ output }) {
373
+ if (output.appName.length === 0 || output.name.length === 0) return;
374
+ yield* machines
375
+ .deleteSecretKey({
376
+ app_name: output.appName,
377
+ secret_name: output.name,
378
+ })
379
+ .pipe(Effect.catchTag("NotFound", () => Effect.void));
380
+ yield* getByName(output.appName, output.name).pipe(
381
+ Effect.map((key) => key === undefined),
382
+ Effect.repeat({
383
+ schedule: Schedule.spaced("1 second"),
384
+ until: (gone) => gone,
385
+ times: 8,
386
+ }),
387
+ );
388
+ }),
389
+ });
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shared scaffolding for Fly SecretKey HTTP bindings.
3
+ *
4
+ * NOT exported from `index.ts`.
5
+ */
6
+ import type * as Effect from "effect/Effect";
7
+ import type { SecretAuth } from "./SecretHttp.ts";
8
+ import { makeHttpSecretBinding } from "./SecretHttp.ts";
9
+ import type { SecretKey } from "./SecretKey.ts";
10
+
11
+ export const bytesToBase64 = (bytes: Uint8Array | ArrayLike<number>): string =>
12
+ Buffer.from(bytes instanceof Uint8Array ? bytes : Uint8Array.from(bytes)).toString("base64");
13
+
14
+ export const base64ToBytes = (value: string | undefined): Uint8Array =>
15
+ Uint8Array.from(Buffer.from(value ?? "", "base64"));
16
+
17
+ export const makeHttpSecretKeyBinding = <Client>(options: {
18
+ makeClient: (
19
+ auth: SecretAuth,
20
+ appName: Effect.Effect<string>,
21
+ secretName: Effect.Effect<string>,
22
+ ) => Client;
23
+ }) => makeHttpSecretBinding<SecretKey, Client>({ ...options, kms: true });