@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,54 @@
1
+ import { Credentials } from "@distilled.cloud/fly-io";
2
+ import type { RuntimeContext } from "alchemy/RuntimeContext";
3
+ import type * as Context from "effect/Context";
4
+ import * as Effect from "effect/Effect";
5
+ import * as HttpClient from "effect/http/HttpClient";
6
+ import * as Redacted from "effect/Redacted";
7
+ import type { App } from "./App.ts";
8
+ import type { Secret } from "./Secret.ts";
9
+ import type { SecretKey } from "./SecretKey.ts";
10
+ /**
11
+ * Shared scaffolding for the HTTP-backed Fly Secret bindings.
12
+ *
13
+ * Fly has no native Worker-style binding. This layer captures the ambient
14
+ * org token during stack-eval (so Actions work in-process) and `yield*`s
15
+ * it plus `appName` / secret `name` so RuntimeContext.set runs. Platform
16
+ * copies those Outputs into host env; runtime `yield*` gets them back.
17
+ * {@link CredentialsFromEnv} still reads `FLY_API_TOKEN` after that copy.
18
+ *
19
+ * NOT exported from `index.ts`.
20
+ */
21
+ export type AppNamed = Secret | SecretKey;
22
+ export declare const makeHttpSecretBinding: <Target extends AppNamed, Client>(options: {
23
+ makeClient: (auth: SecretAuth, appName: Effect.Effect<string>, secretName: Effect.Effect<string>) => Client;
24
+ /**
25
+ * PetSem encrypt/sign/decrypt/verify only work from a Machine over
26
+ * `/.fly/api` (implicit machine identity). Org tokens return Forbidden.
27
+ */
28
+ kms?: boolean;
29
+ }) => Effect.Effect<(resource: Target) => Effect.Effect<Client, never, never>, never, Credentials | HttpClient.HttpClient>;
30
+ /**
31
+ * Same scaffolding as {@link makeHttpSecretBinding}, but the target is
32
+ * an {@link App} (no secret name). Used by ListSecrets.
33
+ */
34
+ export declare const makeHttpAppBinding: <Client>(options: {
35
+ makeClient: (auth: SecretAuth, appName: Effect.Effect<string>) => Client;
36
+ }) => Effect.Effect<(app: App) => Effect.Effect<Client, never, never>, never, Credentials | HttpClient.HttpClient>;
37
+ /**
38
+ * Injectable auth for the Secret HTTP client builders. Supplies an
39
+ * `authorize` that provides `Credentials` + `HttpClient` to a raw SDK op.
40
+ */
41
+ export interface SecretAuth {
42
+ authorize: <A, E>(eff: Effect.Effect<A, E, Credentials | HttpClient.HttpClient>) => Effect.Effect<A, E, RuntimeContext>;
43
+ }
44
+ /** Build auth that uses ambient stack creds, or env creds inside a host. */
45
+ export declare const makeSecretAuth: (ambient: Context.Context<Credentials | HttpClient.HttpClient>) => SecretAuth;
46
+ /**
47
+ * PetSem encrypt/sign/decrypt/verify from a Machine. Org API tokens are
48
+ * Forbidden; the machine identity is the unix socket at `/.fly/api`.
49
+ * {@link MachineIdentity} is the protocol signal (no Authorization,
50
+ * Connection: close). GetSecret in the same process keeps Bearer.
51
+ */
52
+ export declare const makeKmsAuth: (ambient: Context.Context<Credentials | HttpClient.HttpClient>) => SecretAuth;
53
+ export declare const unwrapSecretValue: (value: Redacted.Redacted<string> | string) => string;
54
+ //# sourceMappingURL=SecretHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretHttp.d.ts","sourceRoot":"","sources":["../src/SecretHttp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAIZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C,eAAO,MAAM,qBAAqB,GAAI,MAAM,SAAS,QAAQ,EAAE,MAAM,WAAW;IAC9E,UAAU,EAAE,CACV,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAC9B,MAAM,CAAC;IACZ;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,yHAWG,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,WAAW;IAClD,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;CAC1E,iHASG,CAAC;AAEL;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EACd,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,KAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;CAC1C;AAED,4EAA4E;AAC5E,eAAO,MAAM,cAAc,YAChB,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,KAC5D,UAaD,CAAC;AAeH;;;;;GAKG;AACH,eAAO,MAAM,WAAW,YACb,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,KAC5D,UAuBD,CAAC;AAEH,eAAO,MAAM,iBAAiB,UAAW,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,KAAG,MAClB,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { Credentials, CredentialsFromEnv, credentials, MachineIdentity, } from "@distilled.cloud/fly-io";
2
+ import * as NodeHttpClient from "@effect/platform-node/NodeHttpClient";
3
+ import * as Effect from "effect/Effect";
4
+ import * as FetchHttpClient from "effect/http/FetchHttpClient";
5
+ import * as HttpClient from "effect/http/HttpClient";
6
+ import * as Layer from "effect/Layer";
7
+ import * as Redacted from "effect/Redacted";
8
+ import { bindFlyApiToken } from "./Credentials.js";
9
+ export const makeHttpSecretBinding = (options) => Effect.gen(function* () {
10
+ const context = yield* Effect.context();
11
+ const auth = options.kms === true ? makeKmsAuth(context) : makeSecretAuth(context);
12
+ return Effect.fn(function* (resource) {
13
+ yield* bindFlyApiToken().pipe(Effect.provideContext(context));
14
+ const appName = yield* resource.appName;
15
+ const secretName = yield* resource.name;
16
+ return options.makeClient(auth, appName, secretName);
17
+ });
18
+ });
19
+ /**
20
+ * Same scaffolding as {@link makeHttpSecretBinding}, but the target is
21
+ * an {@link App} (no secret name). Used by ListSecrets.
22
+ */
23
+ export const makeHttpAppBinding = (options) => Effect.gen(function* () {
24
+ const context = yield* Effect.context();
25
+ return Effect.fn(function* (app) {
26
+ yield* bindFlyApiToken().pipe(Effect.provideContext(context));
27
+ const appName = yield* app.appName;
28
+ return options.makeClient(makeSecretAuth(context), appName);
29
+ });
30
+ });
31
+ /** Build auth that uses ambient stack creds, or env creds inside a host. */
32
+ export const makeSecretAuth = (ambient) => ({
33
+ authorize: (eff) => {
34
+ if (globalThis.__ALCHEMY_RUNTIME__) {
35
+ // oxlint-disable-next-line effecttsgo/unsafe-effect-type-assertion -- TimeoutError/env-credential errors surface untyped; widening SecretAuth would ripple through every Fly secret client
36
+ return eff.pipe(Effect.provide(Layer.mergeAll(CredentialsFromEnv, FetchHttpClient.layer)), Effect.timeout("8 seconds"));
37
+ }
38
+ return eff.pipe(Effect.provideContext(ambient));
39
+ },
40
+ });
41
+ const FLY_MACHINE_API_SOCKET = "/.fly/api";
42
+ /** Distilled machines client over `/.fly/api`. URL host is unused. */
43
+ const flyMachineApiHttp = NodeHttpClient.layerNodeHttpNoAgent.pipe(Layer.provide(NodeHttpClient.layerAgentOptions({
44
+ socketPath: FLY_MACHINE_API_SOCKET,
45
+ keepAlive: false,
46
+ })));
47
+ /**
48
+ * PetSem encrypt/sign/decrypt/verify from a Machine. Org API tokens are
49
+ * Forbidden; the machine identity is the unix socket at `/.fly/api`.
50
+ * {@link MachineIdentity} is the protocol signal (no Authorization,
51
+ * Connection: close). GetSecret in the same process keeps Bearer.
52
+ */
53
+ export const makeKmsAuth = (ambient) => ({
54
+ authorize: (eff) => {
55
+ if (globalThis.__ALCHEMY_RUNTIME__) {
56
+ // oxlint-disable-next-line effecttsgo/unsafe-effect-type-assertion -- TimeoutError surfaces untyped; widening SecretAuth would ripple through every Fly secret client
57
+ return Effect.scoped(eff.pipe(Effect.provide(Layer.mergeAll(Layer.succeed(MachineIdentity, true), flyMachineApiHttp, credentials({
58
+ apiKey: Redacted.make("unused"),
59
+ apiBaseUrl: "http://localhost/v1",
60
+ }))))).pipe(Effect.timeout("8 seconds"));
61
+ }
62
+ return eff.pipe(Effect.provideContext(ambient));
63
+ },
64
+ });
65
+ export const unwrapSecretValue = (value) => Redacted.isRedacted(value) ? Redacted.value(value) : value;
66
+ //# sourceMappingURL=SecretHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretHttp.js","sourceRoot":"","sources":["../src/SecretHttp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ import * as machines from "@distilled.cloud/fly-io/machines";
2
+ import * as Provider from "alchemy/Provider";
3
+ import { Resource } from "alchemy/Resource";
4
+ import * as Effect from "effect/Effect";
5
+ import { App } from "./App.ts";
6
+ import type { Providers } from "./Providers.ts";
7
+ /**
8
+ * A resource-valued prop: the resource itself, or an Effect that produces
9
+ * it (so `yield* App(...)` and `App(...)` both type-check).
10
+ */
11
+ type Ref<T> = T | Effect.Effect<T, never, Providers>;
12
+ export interface SecretKeyProps {
13
+ /**
14
+ * Parent Fly App. Changing it replaces the secret key.
15
+ */
16
+ app: Ref<App>;
17
+ /**
18
+ * Secret key name, unique per App. If omitted, a unique name is generated
19
+ * from the stack, stage and logical ID (the ownership stamp). Changing it
20
+ * replaces the key.
21
+ */
22
+ name?: string;
23
+ /**
24
+ * Fly key type (`nacl_sign`, `nacl_box`, `hs256`, `hs384`, `hs512`,
25
+ * `xaes256gcm`, `nacl_auth`, `nacl_secretbox`, `es256`). Changing it
26
+ * replaces the key.
27
+ */
28
+ type?: string;
29
+ /**
30
+ * Raw key material. If omitted, Fly generates a key via
31
+ * `generateSecretKey`. If set, the key is created or updated with
32
+ * `setSecretKey`. Never persisted in state.
33
+ */
34
+ value?: ReadonlyArray<number>;
35
+ }
36
+ export type SecretKey = Resource<"Fly.SecretKey", SecretKeyProps, {
37
+ /** Parent Fly App name. */
38
+ appName: string;
39
+ /** Secret key name (unique per App). */
40
+ name: string;
41
+ /** Observed Fly key type. */
42
+ type: string | undefined;
43
+ /** Public key (base64), when the type has one. Never private material. */
44
+ publicKey: string | undefined;
45
+ /** RFC3339 creation timestamp. */
46
+ createdAt: string | undefined;
47
+ /** RFC3339 last-update timestamp. */
48
+ updatedAt: string | undefined;
49
+ }, never, Providers>;
50
+ declare const SecretKeyResource: import("alchemy/Resource").ResourceClass<SecretKey>;
51
+ /**
52
+ * A Fly.SecretKey is an App KMS key, not an env secret. Generate a
53
+ * random key or set raw material. Private bytes never appear in
54
+ * attributes.
55
+ *
56
+ * Use it at runtime with {@link Encrypt}, {@link Decrypt}, {@link Sign},
57
+ * and {@link Verify}. Generate, set, and delete stay on this resource.
58
+ *
59
+ * @see https://docs.machines.dev/secrets/Secretkeys_list
60
+ *
61
+ * ### Generate a key
62
+ * Omit `value` and Fly generates a key via `generateSecretKey`. `type`
63
+ * is Fly's key type (`nacl_sign`, `nacl_box`, `nacl_secretbox`,
64
+ * `hs256`, `hs384`, `hs512`, `xaes256gcm`, `nacl_auth`, `es256`, …).
65
+ *
66
+ * **Example:** Signing key
67
+ * ```typescript
68
+ * export const Signing = Fly.SecretKey("Signing", {
69
+ * app: Site,
70
+ * type: "nacl_sign",
71
+ * });
72
+ * ```
73
+ *
74
+ * :::caution[Changing `app`, `name`, or `type` replaces the key]
75
+ * The new key is created. The old one is deleted. Ciphertext from the
76
+ * old key will not decrypt.
77
+ * :::
78
+ *
79
+ * ### Set raw material
80
+ * Pass `value` as bytes. The key is created or updated with
81
+ * `setSecretKey`. Never persisted in state.
82
+ *
83
+ * **Example:** HS256
84
+ * ```typescript
85
+ * const hmac = yield* Fly.SecretKey("Hmac", {
86
+ * app: Site,
87
+ * type: "hs256",
88
+ * value: hmacBytes,
89
+ * });
90
+ * ```
91
+ *
92
+ * ### Encrypt
93
+ * Bind {@link Encrypt} to a box/secretbox/AEAD key. Provide
94
+ * {@link EncryptHttp}. Optional `associatedData` is AEAD associated
95
+ * data.
96
+ *
97
+ * Fly crypto ops need a KMS token. Org API tokens are typed
98
+ * `Forbidden`. Encrypt and sign from a {@link Service}, not a laptop
99
+ * Action.
100
+ *
101
+ * **Example:** Encrypt a payload
102
+ * ```typescript
103
+ * const encrypt = yield* Fly.Encrypt(Box);
104
+ * const { ciphertext } = yield* encrypt({
105
+ * plaintext: new TextEncoder().encode("attack at dawn"),
106
+ * });
107
+ * ```
108
+ *
109
+ * ### Decrypt
110
+ * Bind {@link Decrypt} to the same key. Plaintext comes back
111
+ * `Redacted`. Unwrap with `Redacted.value`. `associatedData` must
112
+ * match encryption. Provide {@link DecryptHttp}.
113
+ *
114
+ * **Example:** Decrypt a payload
115
+ * ```typescript
116
+ * const decrypt = yield* Fly.Decrypt(Box);
117
+ * const { plaintext } = yield* decrypt({ ciphertext });
118
+ * const bytes = Redacted.value(plaintext);
119
+ * ```
120
+ *
121
+ * ### Sign
122
+ * Bind {@link Sign} to a signing key (`nacl_sign`, `hs256`, `es256`,
123
+ * …). The private key never leaves Fly KMS. Provide {@link SignHttp}.
124
+ *
125
+ * **Example:** Sign a payload
126
+ * ```typescript
127
+ * const sign = yield* Fly.Sign(Signing);
128
+ * const { signature } = yield* sign({
129
+ * plaintext: new TextEncoder().encode("release-manifest-v1"),
130
+ * });
131
+ * ```
132
+ *
133
+ * ### Verify
134
+ * Bind {@link Verify} to the same key. A bad signature is a typed
135
+ * error from the Machines API. Provide {@link VerifyHttp}.
136
+ *
137
+ * **Example:** Verify a signature
138
+ * ```typescript
139
+ * const verify = yield* Fly.Verify(Signing);
140
+ * const { valid } = yield* verify({ plaintext, signature });
141
+ * ```
142
+ *
143
+ * @resource
144
+ * @product Secret Key
145
+ */
146
+ export declare const SecretKey: typeof SecretKeyResource;
147
+ declare const SecretKeyNotCreated_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 & {
148
+ readonly _tag: "Fly.SecretKeyNotCreated";
149
+ } & Readonly<A>;
150
+ export declare class SecretKeyNotCreated extends SecretKeyNotCreated_base<{
151
+ appName: string;
152
+ name: string;
153
+ }> {
154
+ }
155
+ declare const SecretKeyAppRequired_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 & {
156
+ readonly _tag: "Fly.SecretKeyAppRequired";
157
+ } & Readonly<A>;
158
+ export declare class SecretKeyAppRequired extends SecretKeyAppRequired_base<{
159
+ message: string;
160
+ }> {
161
+ }
162
+ export declare const SecretKeyProvider: () => import("effect/Layer").Layer<Provider.Provider<SecretKey>, never, import("alchemy/Stack").Stack | import("alchemy/Stage").Stage | machines.FlyIoOpContext>;
163
+ export {};
164
+ //# sourceMappingURL=SecretKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretKey.d.ts","sourceRoot":"","sources":["../src/SecretKey.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAG7D,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,GAAG,EAAiB,MAAM,UAAU,CAAC;AAM9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,CAC9B,eAAe,EACf,cAAc,EACd;IACE,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,kCAAkC;IAClC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,qCAAqC;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAcF,QAAA,MAAM,iBAAiB,qDAAuC,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,iBAI9B,CAAC;;;;AAEF,qBAAa,mBAAoB,SAAQ,yBAA4C;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;CAAG;;;;AAEL,qBAAa,oBAAqB,SAAQ,0BAA6C;IACrF,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;CAAG;AAwEL,eAAO,MAAM,iBAAiB,kKA6H1B,CAAC"}
@@ -0,0 +1,277 @@
1
+ import * as machines from "@distilled.cloud/fly-io/machines";
2
+ import { Unowned } from "alchemy/AdoptPolicy";
3
+ import { deepEqual, isResolved } from "alchemy/Diff";
4
+ import * as Provider from "alchemy/Provider";
5
+ import { Resource } from "alchemy/Resource";
6
+ import * as Data from "effect/Data";
7
+ import * as Effect from "effect/Effect";
8
+ import * as Schedule from "effect/Schedule";
9
+ import { App, listOwnedApps } from "./App.js";
10
+ import { createFlyVolumeName, matchesAlchemyPhysicalName, sanitizeFlyVolumeName, } from "./Metadata.js";
11
+ const resolveSecretKeyProps = (props) => Effect.gen(function* () {
12
+ const resolved = Effect.isEffect(props) ? yield* props : props;
13
+ if (globalThis.__ALCHEMY_RUNTIME__)
14
+ return resolved;
15
+ const app = Effect.isEffect(resolved.app)
16
+ ? yield* resolved.app
17
+ : resolved.app;
18
+ return { ...resolved, app };
19
+ });
20
+ const SecretKeyResource = Resource("Fly.SecretKey");
21
+ /**
22
+ * A Fly.SecretKey is an App KMS key, not an env secret. Generate a
23
+ * random key or set raw material. Private bytes never appear in
24
+ * attributes.
25
+ *
26
+ * Use it at runtime with {@link Encrypt}, {@link Decrypt}, {@link Sign},
27
+ * and {@link Verify}. Generate, set, and delete stay on this resource.
28
+ *
29
+ * @see https://docs.machines.dev/secrets/Secretkeys_list
30
+ *
31
+ * ### Generate a key
32
+ * Omit `value` and Fly generates a key via `generateSecretKey`. `type`
33
+ * is Fly's key type (`nacl_sign`, `nacl_box`, `nacl_secretbox`,
34
+ * `hs256`, `hs384`, `hs512`, `xaes256gcm`, `nacl_auth`, `es256`, …).
35
+ *
36
+ * **Example:** Signing key
37
+ * ```typescript
38
+ * export const Signing = Fly.SecretKey("Signing", {
39
+ * app: Site,
40
+ * type: "nacl_sign",
41
+ * });
42
+ * ```
43
+ *
44
+ * :::caution[Changing `app`, `name`, or `type` replaces the key]
45
+ * The new key is created. The old one is deleted. Ciphertext from the
46
+ * old key will not decrypt.
47
+ * :::
48
+ *
49
+ * ### Set raw material
50
+ * Pass `value` as bytes. The key is created or updated with
51
+ * `setSecretKey`. Never persisted in state.
52
+ *
53
+ * **Example:** HS256
54
+ * ```typescript
55
+ * const hmac = yield* Fly.SecretKey("Hmac", {
56
+ * app: Site,
57
+ * type: "hs256",
58
+ * value: hmacBytes,
59
+ * });
60
+ * ```
61
+ *
62
+ * ### Encrypt
63
+ * Bind {@link Encrypt} to a box/secretbox/AEAD key. Provide
64
+ * {@link EncryptHttp}. Optional `associatedData` is AEAD associated
65
+ * data.
66
+ *
67
+ * Fly crypto ops need a KMS token. Org API tokens are typed
68
+ * `Forbidden`. Encrypt and sign from a {@link Service}, not a laptop
69
+ * Action.
70
+ *
71
+ * **Example:** Encrypt a payload
72
+ * ```typescript
73
+ * const encrypt = yield* Fly.Encrypt(Box);
74
+ * const { ciphertext } = yield* encrypt({
75
+ * plaintext: new TextEncoder().encode("attack at dawn"),
76
+ * });
77
+ * ```
78
+ *
79
+ * ### Decrypt
80
+ * Bind {@link Decrypt} to the same key. Plaintext comes back
81
+ * `Redacted`. Unwrap with `Redacted.value`. `associatedData` must
82
+ * match encryption. Provide {@link DecryptHttp}.
83
+ *
84
+ * **Example:** Decrypt a payload
85
+ * ```typescript
86
+ * const decrypt = yield* Fly.Decrypt(Box);
87
+ * const { plaintext } = yield* decrypt({ ciphertext });
88
+ * const bytes = Redacted.value(plaintext);
89
+ * ```
90
+ *
91
+ * ### Sign
92
+ * Bind {@link Sign} to a signing key (`nacl_sign`, `hs256`, `es256`,
93
+ * …). The private key never leaves Fly KMS. Provide {@link SignHttp}.
94
+ *
95
+ * **Example:** Sign a payload
96
+ * ```typescript
97
+ * const sign = yield* Fly.Sign(Signing);
98
+ * const { signature } = yield* sign({
99
+ * plaintext: new TextEncoder().encode("release-manifest-v1"),
100
+ * });
101
+ * ```
102
+ *
103
+ * ### Verify
104
+ * Bind {@link Verify} to the same key. A bad signature is a typed
105
+ * error from the Machines API. Provide {@link VerifyHttp}.
106
+ *
107
+ * **Example:** Verify a signature
108
+ * ```typescript
109
+ * const verify = yield* Fly.Verify(Signing);
110
+ * const { valid } = yield* verify({ plaintext, signature });
111
+ * ```
112
+ *
113
+ * @resource
114
+ * @product Secret Key
115
+ */
116
+ export const SecretKey = Object.assign((id, props) => SecretKeyResource(id, resolveSecretKeyProps(props)), SecretKeyResource);
117
+ export class SecretKeyNotCreated extends Data.TaggedError("Fly.SecretKeyNotCreated") {
118
+ }
119
+ export class SecretKeyAppRequired extends Data.TaggedError("Fly.SecretKeyAppRequired") {
120
+ }
121
+ const appNameOf = (value) => {
122
+ if (value === null || typeof value !== "object")
123
+ return undefined;
124
+ const rec = value;
125
+ return typeof rec.appName === "string" && rec.appName.length > 0 ? rec.appName : undefined;
126
+ };
127
+ const resolveName = (id, name, existing) => Effect.gen(function* () {
128
+ if (name !== undefined)
129
+ return sanitizeFlyVolumeName(name);
130
+ if (existing !== undefined)
131
+ return existing;
132
+ return yield* createFlyVolumeName(id);
133
+ });
134
+ const toAttrs = (appName, key, fallbackName) => ({
135
+ appName,
136
+ name: key.name ?? fallbackName,
137
+ type: key.type,
138
+ publicKey: key.public_key,
139
+ createdAt: key.created_at,
140
+ updatedAt: key.updated_at,
141
+ });
142
+ const getByName = (appName, secretName) => machines
143
+ .getSecretKey({
144
+ app_name: appName,
145
+ secret_name: secretName,
146
+ })
147
+ .pipe(Effect.catchTag("NotFound", () => Effect.succeed(undefined)));
148
+ const listKeys = (appName) => machines.listSecretKeys({ app_name: appName }).pipe(Effect.map((res) => res.secret_keys ?? []), Effect.catchTag(["NotFound", "Forbidden"], () => Effect.succeed([])));
149
+ const putKey = (input) => {
150
+ if (input.value !== undefined) {
151
+ return machines.setSecretKey({
152
+ app_name: input.appName,
153
+ secret_name: input.secretName,
154
+ type: input.type,
155
+ value: [...input.value],
156
+ });
157
+ }
158
+ return machines.generateSecretKey({
159
+ app_name: input.appName,
160
+ secret_name: input.secretName,
161
+ type: input.type,
162
+ });
163
+ };
164
+ const valuesEqual = (left, right) => {
165
+ if (left === undefined && right === undefined)
166
+ return true;
167
+ if (left === undefined || right === undefined)
168
+ return false;
169
+ return deepEqual(left, right);
170
+ };
171
+ export const SecretKeyProvider = () => Provider.succeed(SecretKey, {
172
+ stables: ["appName", "name", "type", "publicKey", "createdAt"],
173
+ nuke: { dependsOn: ["Fly.App"] },
174
+ diff: Effect.fn(function* ({ news, output }) {
175
+ if (news === undefined || !isResolved(news))
176
+ return undefined;
177
+ if (output === undefined)
178
+ return undefined;
179
+ const desiredName = news.name !== undefined ? sanitizeFlyVolumeName(news.name) : output.name;
180
+ const nameChanged = desiredName !== output.name;
181
+ const nextApp = appNameOf(news.app);
182
+ const appChanged = nextApp !== undefined && nextApp !== output.appName;
183
+ const typeChanged = news.type !== undefined && output.type !== undefined && news.type !== output.type;
184
+ if (nameChanged || appChanged || typeChanged) {
185
+ return {
186
+ action: "replace",
187
+ // Same (app, name) cannot hold two types — delete first.
188
+ deleteFirst: !nameChanged && !appChanged,
189
+ };
190
+ }
191
+ return undefined;
192
+ }),
193
+ read: Effect.fn(function* ({ id, olds, output }) {
194
+ const appName = output?.appName ?? (olds !== undefined ? appNameOf(olds.app) : undefined);
195
+ if (appName === undefined)
196
+ return undefined;
197
+ const name = yield* resolveName(id, olds?.name, output?.name);
198
+ const found = yield* getByName(appName, name);
199
+ if (found === undefined)
200
+ return undefined;
201
+ const attrs = toAttrs(appName, found, name);
202
+ if (output !== undefined)
203
+ return attrs;
204
+ return matchesAlchemyPhysicalName(name) ? attrs : Unowned(attrs);
205
+ }),
206
+ list: Effect.fn(function* () {
207
+ const apps = yield* listOwnedApps();
208
+ const rows = yield* Effect.forEach(apps, (app) => listKeys(app.appName).pipe(Effect.map((keys) => keys.flatMap((key) => {
209
+ const name = key.name;
210
+ if (!matchesAlchemyPhysicalName(name))
211
+ return [];
212
+ return [toAttrs(app.appName, key, name ?? "")];
213
+ }))), { concurrency: 8 });
214
+ return rows.flat();
215
+ }),
216
+ reconcile: Effect.fn(function* ({ id, news, olds, output }) {
217
+ const props = news ?? {};
218
+ const appName = appNameOf(props.app) ?? output?.appName;
219
+ if (appName === undefined) {
220
+ return yield* new SecretKeyAppRequired({
221
+ message: "SecretKey requires a resolved Fly.App",
222
+ });
223
+ }
224
+ const name = yield* resolveName(id, props.name, output?.name);
225
+ // Observe by cached identity, then the desired (app, name).
226
+ let current = output !== undefined ? yield* getByName(output.appName, output.name) : undefined;
227
+ if (current === undefined &&
228
+ (output === undefined || output.appName !== appName || output.name !== name)) {
229
+ current = yield* getByName(appName, name);
230
+ }
231
+ if (current === undefined) {
232
+ yield* putKey({
233
+ appName,
234
+ secretName: name,
235
+ type: props.type,
236
+ value: props.value,
237
+ }).pipe(Effect.catchTag("Conflict", () => Effect.void));
238
+ current = yield* getByName(appName, name);
239
+ }
240
+ if (current === undefined) {
241
+ return yield* new SecretKeyNotCreated({ appName, name });
242
+ }
243
+ // Sync — re-set when the caller supplied new material. Observed
244
+ // cloud never returns private bytes; `olds.value` is only a hint.
245
+ const desiredValue = props.value;
246
+ if (desiredValue !== undefined) {
247
+ const previousValue = olds?.value;
248
+ const shouldSet = previousValue === undefined || !valuesEqual(previousValue, desiredValue);
249
+ if (shouldSet) {
250
+ yield* putKey({
251
+ appName,
252
+ secretName: name,
253
+ type: props.type ?? current.type,
254
+ value: desiredValue,
255
+ }).pipe(Effect.catchTag("Conflict", () => Effect.void));
256
+ current = (yield* getByName(appName, name)) ?? current;
257
+ }
258
+ }
259
+ return toAttrs(appName, current, name);
260
+ }),
261
+ delete: Effect.fn(function* ({ output }) {
262
+ if (output.appName.length === 0 || output.name.length === 0)
263
+ return;
264
+ yield* machines
265
+ .deleteSecretKey({
266
+ app_name: output.appName,
267
+ secret_name: output.name,
268
+ })
269
+ .pipe(Effect.catchTag("NotFound", () => Effect.void));
270
+ yield* getByName(output.appName, output.name).pipe(Effect.map((key) => key === undefined), Effect.repeat({
271
+ schedule: Schedule.spaced("1 second"),
272
+ until: (gone) => gone,
273
+ times: 8,
274
+ }));
275
+ }),
276
+ });
277
+ //# sourceMappingURL=SecretKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretKey.js","sourceRoot":"","sources":["../src/SecretKey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
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 type { SecretKey } from "./SecretKey.ts";
9
+ export declare const bytesToBase64: (bytes: Uint8Array | ArrayLike<number>) => string;
10
+ export declare const base64ToBytes: (value: string | undefined) => Uint8Array;
11
+ export declare const makeHttpSecretKeyBinding: <Client>(options: {
12
+ makeClient: (auth: SecretAuth, appName: Effect.Effect<string>, secretName: Effect.Effect<string>) => Client;
13
+ }) => Effect.Effect<(resource: SecretKey) => Effect.Effect<Client, never, never>, never, import("@distilled.cloud/fly-io").Credentials | import("effect/http/HttpClient").HttpClient>;
14
+ //# sourceMappingURL=SecretKeyHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretKeyHttp.d.ts","sourceRoot":"","sources":["../src/SecretKeyHttp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,eAAO,MAAM,aAAa,UAAW,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,KAAG,MACwB,CAAC;AAE/F,eAAO,MAAM,aAAa,UAAW,MAAM,GAAG,SAAS,KAAG,UACL,CAAC;AAEtD,eAAO,MAAM,wBAAwB,GAAI,MAAM,WAAW;IACxD,UAAU,EAAE,CACV,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAC9B,MAAM,CAAC;CACb,oLAAwE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { makeHttpSecretBinding } from "./SecretHttp.js";
2
+ export const bytesToBase64 = (bytes) => Buffer.from(bytes instanceof Uint8Array ? bytes : Uint8Array.from(bytes)).toString("base64");
3
+ export const base64ToBytes = (value) => Uint8Array.from(Buffer.from(value ?? "", "base64"));
4
+ export const makeHttpSecretKeyBinding = (options) => makeHttpSecretBinding({ ...options, kms: true });
5
+ //# sourceMappingURL=SecretKeyHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretKeyHttp.js","sourceRoot":"","sources":["../src/SecretKeyHttp.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAqC,EAAU,EAAE,CAC7E,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAE/F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAc,EAAE,CACrE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEtD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAS,OAMhD,EAAE,EAAE,CAAC,qBAAqB,CAAoB,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC"}