@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
package/lib/Sprite.js ADDED
@@ -0,0 +1,469 @@
1
+ import * as sprites from "@distilled.cloud/fly-io/sprites";
2
+ import { Unowned } from "alchemy/AdoptPolicy";
3
+ import * as Bundle from "alchemy/Bundle/Bundle";
4
+ import { isResolved } from "alchemy/Diff";
5
+ import { Platform } from "alchemy/Platform";
6
+ import * as Provider from "alchemy/Provider";
7
+ import { Stack } from "alchemy/Stack";
8
+ import { createInternalTags } from "alchemy/Tags";
9
+ import * as Data from "effect/Data";
10
+ import * as Duration from "effect/Duration";
11
+ import * as Effect from "effect/Effect";
12
+ import * as Redacted from "effect/Redacted";
13
+ import * as Schedule from "effect/Schedule";
14
+ import * as Stream from "effect/Stream";
15
+ import { createFlyHostRuntimeContext, createSpriteHostedSupport, DEFAULT_PORT, } from "./hosted.js";
16
+ import { createFlyResourceName, matchesAlchemyPhysicalName, sanitizeFlyAppName, } from "./Metadata.js";
17
+ const DEFAULT_URL_AUTH = "public";
18
+ const APP_DIR = "/home/sprite/alchemy";
19
+ const BUN_BIN = "/home/sprite/.bun/bin/bun";
20
+ const SERVICE_NAME = "alchemy";
21
+ const OWNER_LABEL = "alchemy.type=Fly.Sprite";
22
+ const backoff = Schedule.min([
23
+ Schedule.exponential(Duration.millis(500), 1.5),
24
+ Schedule.spaced(Duration.seconds(5)),
25
+ ]);
26
+ export const isSprite = (value) => typeof value === "object" && value !== null && value.Type === "Fly.Sprite";
27
+ /**
28
+ * A Sprite is an Effect program running in a Fly.io Sprite. Sprites
29
+ * are org-scoped Linux sandboxes. They hibernate when idle and wake
30
+ * on demand. There is no parent {@link App}. Unlike a {@link Service},
31
+ * Alchemy does not build a Docker image.
32
+ *
33
+ * @see https://sprites.dev/api/sprites
34
+ *
35
+ * ### Declare a Sprite
36
+ * A Sprite is a class. Props describe the sandbox. The Effect is the
37
+ * program that runs on it. There is no parent App.
38
+ *
39
+ * `main: import.meta.url` is the bundle entrypoint. Alchemy bundles
40
+ * this file with Rolldown, writes it onto the Sprite, and runs it as
41
+ * a Sprite service on {@link port}. Auth is `FLY_API_TOKEN`.
42
+ *
43
+ * **Example:** Class + main
44
+ * ```typescript
45
+ * export default class Box extends Fly.Sprite<Box>()(
46
+ * "Box",
47
+ * { main: import.meta.url },
48
+ * Effect.gen(function* () {
49
+ * return {};
50
+ * }),
51
+ * ) {}
52
+ * ```
53
+ *
54
+ * ### Serve HTTP with fetch
55
+ * Return `fetch` from the init Effect to boot an HTTP server. The
56
+ * Sprite URL proxies to {@link port}.
57
+ *
58
+ * **Example:** Hello
59
+ * ```typescript
60
+ * export default class Box extends Fly.Sprite<Box>()(
61
+ * "Box",
62
+ * { main: import.meta.url },
63
+ * Effect.gen(function* () {
64
+ * return {
65
+ * fetch: Effect.succeed(HttpServerResponse.text("hello")),
66
+ * };
67
+ * }),
68
+ * ) {}
69
+ * ```
70
+ *
71
+ * ### The public URL
72
+ * Yield the Sprite in the Stack. `box.url` is
73
+ * `https://{name}-….sprites.app`.
74
+ *
75
+ * **Example:** Stack output
76
+ * ```typescript
77
+ * export default Alchemy.Stack(
78
+ * "MyApp",
79
+ * { providers: Fly.providers(), state: Alchemy.localState() },
80
+ * Effect.gen(function* () {
81
+ * const box = yield* Box;
82
+ * return { url: box.url };
83
+ * }),
84
+ * );
85
+ * ```
86
+ *
87
+ * ### URL auth
88
+ * `urlAuth` is `public` or `sprite`. Default is `public` so `url`
89
+ * answers without a Sprites token.
90
+ *
91
+ * **Example:** Sprite-auth URL
92
+ * ```typescript
93
+ * export default class Box extends Fly.Sprite<Box>()(
94
+ * "Box",
95
+ * { main: import.meta.url, urlAuth: "sprite" },
96
+ * Effect.gen(function* () {
97
+ * return {
98
+ * fetch: Effect.succeed(HttpServerResponse.text("hello")),
99
+ * };
100
+ * }),
101
+ * ) {}
102
+ * ```
103
+ *
104
+ * :::note[Default is public]
105
+ * Fly's API default is `sprite`. Alchemy defaults to `public` so a
106
+ * `fetch` handler is reachable.
107
+ * :::
108
+ *
109
+ * ### Config
110
+ * Yield `Config` in init. Alchemy reads the value from the env of
111
+ * whoever deploys and writes it onto the Sprite. Do not pass
112
+ * `env: { ... }` on a Sprite.
113
+ *
114
+ * Yield `FileSystem.FileSystem` in init, never inside `fetch`.
115
+ *
116
+ * **Example:** Config.Redacted
117
+ * ```typescript
118
+ * import * as Config from "effect/Config";
119
+ * import * as FileSystem from "effect/FileSystem";
120
+ * import * as Redacted from "effect/Redacted";
121
+ *
122
+ * export default class Box extends Fly.Sprite<Box>()(
123
+ * "Box",
124
+ * { main: import.meta.url },
125
+ * Effect.gen(function* () {
126
+ * const apiKey = yield* Config.Redacted("API_KEY");
127
+ * const fs = yield* FileSystem.FileSystem;
128
+ * yield* fs.makeDirectory("/tmp", { recursive: true });
129
+ *
130
+ * return {
131
+ * fetch: Effect.gen(function* () {
132
+ * const token = Redacted.value(apiKey);
133
+ * return HttpServerResponse.text("ok");
134
+ * }),
135
+ * };
136
+ * }),
137
+ * ) {}
138
+ * ```
139
+ *
140
+ * ### Exec
141
+ * {@link Exec} runs a command on the Sprite. Provide {@link ExecHttp}.
142
+ *
143
+ * **Example:** ls
144
+ * ```typescript
145
+ * const exec = yield* Fly.Exec(Box);
146
+ * const result = yield* exec({ cmd: ["ls", "-la"] });
147
+ * ```
148
+ *
149
+ * ### Checkpoint
150
+ * {@link Checkpoint} snapshots and restores the Sprite disk. Provide
151
+ * {@link CheckpointHttp}.
152
+ *
153
+ * **Example:** Create and restore
154
+ * ```typescript
155
+ * const checkpoint = yield* Fly.Checkpoint(Box);
156
+ * yield* checkpoint.create({ comment: "before" });
157
+ * yield* checkpoint.restore("v1");
158
+ * ```
159
+ *
160
+ * :::caution[Restore is destructive]
161
+ * The disk rewinds. Later writes are gone.
162
+ * :::
163
+ *
164
+ * ### A stable name
165
+ * Omit `name` and Alchemy generates one from the stack, stage, and
166
+ * logical ID.
167
+ *
168
+ * **Example:** Explicit name
169
+ * ```typescript
170
+ * export default class Box extends Fly.Sprite<Box>()(
171
+ * "Box",
172
+ * { main: import.meta.url, name: "box" },
173
+ * Effect.gen(function* () {
174
+ * return {
175
+ * fetch: Effect.succeed(HttpServerResponse.text("hello")),
176
+ * };
177
+ * }),
178
+ * ) {}
179
+ * ```
180
+ *
181
+ * :::caution[Changing `name` replaces the Sprite]
182
+ * Fly cannot rename a Sprite. Alchemy creates the new name, then
183
+ * deletes the old one.
184
+ * :::
185
+ *
186
+ * ### Named export
187
+ * `handler` is the named export to load from `main`. Default is
188
+ * `"default"`.
189
+ *
190
+ * **Example:** Custom handler
191
+ * ```typescript
192
+ * export default class Box extends Fly.Sprite<Box>()(
193
+ * "Box",
194
+ * { main: import.meta.url, handler: "box" },
195
+ * Effect.gen(function* () {
196
+ * return {
197
+ * fetch: Effect.succeed(HttpServerResponse.text("hello")),
198
+ * };
199
+ * }),
200
+ * ) {}
201
+ * ```
202
+ *
203
+ * @resource
204
+ * @product Sprite
205
+ */
206
+ export const Sprite = Platform("Fly.Sprite", {
207
+ createRuntimeContext: createFlyHostRuntimeContext("Fly.Sprite"),
208
+ });
209
+ export class SpriteNotCreated extends Data.TaggedError("Fly.SpriteNotCreated") {
210
+ }
211
+ export class SpriteExecFailed extends Data.TaggedError("Fly.SpriteExecFailed") {
212
+ }
213
+ class SpritePending extends Data.TaggedError("Fly.SpritePending") {
214
+ }
215
+ const toStatus = (status) => status === "warm" || status === "running" || status === "cold" ? status : "cold";
216
+ const toUrlAuth = (auth) => (auth === "sprite" ? "sprite" : "public");
217
+ const toAttrs = (sprite, name, codeHash) => ({
218
+ spriteId: sprite.id ?? name,
219
+ name: sprite.name ?? name,
220
+ url: sprite.url ?? `https://${name}.sprites.app`,
221
+ status: toStatus(sprite.status),
222
+ urlAuth: toUrlAuth(sprite.url_settings?.auth),
223
+ orgSlug: sprite.organization,
224
+ code: { hash: codeHash },
225
+ });
226
+ const isOwnedSprite = (sprite) => {
227
+ const labels = sprite.labels ?? [];
228
+ if (labels.includes(OWNER_LABEL))
229
+ return true;
230
+ if (labels.some((label) => label.startsWith("alchemy.type=")))
231
+ return true;
232
+ return matchesAlchemyPhysicalName(sprite.name);
233
+ };
234
+ const resolveSpriteName = (id, name, existing) => Effect.gen(function* () {
235
+ if (name !== undefined)
236
+ return sanitizeFlyAppName(name);
237
+ if (existing !== undefined)
238
+ return existing;
239
+ return yield* createFlyResourceName(id);
240
+ });
241
+ const ownershipLabels = (id) => Effect.gen(function* () {
242
+ const tags = yield* createInternalTags(id);
243
+ return [...Object.entries(tags).map(([key, value]) => `${key}=${value}`), OWNER_LABEL];
244
+ });
245
+ const getByName = (name) => sprites.getSprite({ name }).pipe(Effect.catchTag("NotFound", () => Effect.succeed(undefined)));
246
+ const waitForSprite = (name) => getByName(name).pipe(Effect.flatMap((found) => found !== undefined ? Effect.succeed(found) : Effect.fail(new SpritePending({ name }))), Effect.retry({
247
+ while: (e) => e._tag === "Fly.SpritePending",
248
+ times: 8,
249
+ schedule: backoff,
250
+ }));
251
+ const isTransient = (e) => e._tag === "NotFound" ||
252
+ e._tag === "TooManyRequests" ||
253
+ e._tag === "ServiceUnavailable" ||
254
+ e._tag === "BadGateway" ||
255
+ e._tag === "GatewayTimeout";
256
+ const retryTransient = (effect) => effect.pipe(Effect.retry({
257
+ while: isTransient,
258
+ times: 8,
259
+ schedule: backoff,
260
+ }));
261
+ const toEnv = (env) => Object.fromEntries(Object.entries(env ?? {}).flatMap(([key, value]) => {
262
+ if (value === undefined || value === null)
263
+ return [];
264
+ const raw = Redacted.isRedacted(value) ? Redacted.value(value) : value;
265
+ return [[key, String(raw)]];
266
+ }));
267
+ const collectBindingEnv = (bindings) => {
268
+ const active = bindings.filter((binding) => binding.action !== "delete");
269
+ return active
270
+ .map((binding) => binding?.data?.env)
271
+ .reduce((acc, value) => ({ ...acc, ...value }), {});
272
+ };
273
+ const desiredEnv = (props, bindingEnv, alchemyEnv, port) => ({
274
+ ...toEnv(bindingEnv),
275
+ ...alchemyEnv,
276
+ PORT: String(port),
277
+ ...toEnv(props.env),
278
+ });
279
+ const renderEnvFile = (env) => `${Object.entries(env)
280
+ .sort(([left], [right]) => left.localeCompare(right))
281
+ .map(([key, value]) => `${key}=${JSON.stringify(value)}`)
282
+ .join("\n")}\n`;
283
+ const writeRemoteFile = (input) => retryTransient(sprites.writeFile({
284
+ name: input.name,
285
+ path: input.path,
286
+ workingDir: "/",
287
+ mkdir: true,
288
+ body: input.body,
289
+ }));
290
+ const runExec = (input) => Effect.gen(function* () {
291
+ const result = yield* retryTransient(sprites.execCommand({
292
+ name: input.name,
293
+ cmd: input.cmd,
294
+ env: input.env,
295
+ }));
296
+ if ((result.exit_code ?? 0) !== 0) {
297
+ return yield* new SpriteExecFailed({
298
+ name: input.name,
299
+ cmd: input.cmd.join(" "),
300
+ exitCode: result.exit_code,
301
+ stderr: result.stderr,
302
+ });
303
+ }
304
+ return result;
305
+ });
306
+ const ensureBun = (name) => runExec({
307
+ name,
308
+ cmd: [
309
+ "bash",
310
+ "-lc",
311
+ [
312
+ "set -euo pipefail",
313
+ "export HOME=/home/sprite",
314
+ "export BUN_INSTALL=/home/sprite/.bun",
315
+ 'export PATH="$BUN_INSTALL/bin:$PATH"',
316
+ 'if [ ! -x "$BUN_INSTALL/bin/bun" ]; then',
317
+ " curl -fsSL https://bun.sh/install | bash",
318
+ "fi",
319
+ `test -x ${BUN_BIN}`,
320
+ ].join("\n"),
321
+ ],
322
+ });
323
+ const putAlchemyService = (input) => retryTransient(sprites.putService({
324
+ name: input.name,
325
+ service_name: SERVICE_NAME,
326
+ cmd: "bash",
327
+ args: [
328
+ "-lc",
329
+ `set -a; [ -f ${APP_DIR}/env ] && . ${APP_DIR}/env; set +a; exec ${BUN_BIN} --no-install ${APP_DIR}/index.mjs`,
330
+ ],
331
+ dir: APP_DIR,
332
+ http_port: input.port,
333
+ })).pipe(Effect.catchTag("NotFound", () => Effect.void));
334
+ const deployProgram = Effect.fn(function* (input) {
335
+ const note = input.session?.note ?? ((_message) => Effect.void);
336
+ yield* note(`Writing ${input.name} program onto the Sprite...`);
337
+ for (const file of input.files) {
338
+ const rel = file.path.replace(/^\/+/, "");
339
+ yield* writeRemoteFile({
340
+ name: input.name,
341
+ path: `${APP_DIR}/${rel}`,
342
+ body: file.content,
343
+ });
344
+ }
345
+ yield* writeRemoteFile({
346
+ name: input.name,
347
+ path: `${APP_DIR}/env`,
348
+ body: new TextEncoder().encode(renderEnvFile(input.env)),
349
+ });
350
+ yield* note(`Installing bun on ${input.name}...`);
351
+ yield* ensureBun(input.name);
352
+ yield* note(`Starting ${input.name} service...`);
353
+ yield* putAlchemyService({ name: input.name, port: input.port });
354
+ });
355
+ export const SpriteProvider = () => Provider.effect(Sprite, Effect.gen(function* () {
356
+ const stack = yield* Stack;
357
+ const virtualEntryPlugin = yield* Bundle.virtualEntryPlugin;
358
+ const hosted = createSpriteHostedSupport({
359
+ stackName: stack.name,
360
+ stage: stack.stage,
361
+ virtualEntryPlugin,
362
+ });
363
+ return Sprite.Provider.of({
364
+ stables: ["spriteId", "name"],
365
+ diff: Effect.fn(function* ({ news, output }) {
366
+ if (news === undefined || output === undefined)
367
+ return undefined;
368
+ if (isResolved(news)) {
369
+ const desiredName = news.name !== undefined ? sanitizeFlyAppName(news.name) : output.name;
370
+ if (desiredName !== output.name) {
371
+ return { action: "replace" };
372
+ }
373
+ const desiredAuth = news.urlAuth ?? DEFAULT_URL_AUTH;
374
+ if (desiredAuth !== output.urlAuth) {
375
+ return { action: "update" };
376
+ }
377
+ }
378
+ // The code hash depends only on statically-known props — never
379
+ // gate it on the WHOLE props being resolved: an unresolved
380
+ // reference elsewhere in props would make code-only changes
381
+ // silently noop (see the same pattern in Service.ts). By diff
382
+ // time the effect-config form has been evaluated, so the object
383
+ // view is safe to read.
384
+ const statics = news;
385
+ if (isResolved({ main: statics.main, port: statics.port })) {
386
+ const hash = yield* hosted.hash(news);
387
+ if (hash !== output.code.hash) {
388
+ return { action: "update" };
389
+ }
390
+ }
391
+ return undefined;
392
+ }),
393
+ read: Effect.fn(function* ({ id, olds, output }) {
394
+ const name = yield* resolveSpriteName(id, olds?.name, output?.name);
395
+ const found = yield* (output?.name !== undefined ? getByName(output.name) : Effect.succeed(undefined)).pipe(Effect.flatMap((existing) => existing !== undefined ? Effect.succeed(existing) : getByName(name)), Effect.catchTag("SpritesNotEnabled", () => Effect.succeed(undefined)));
396
+ if (found === undefined)
397
+ return undefined;
398
+ const attrs = toAttrs(found, name, output?.code.hash ?? "");
399
+ if (output !== undefined)
400
+ return attrs;
401
+ return isOwnedSprite(found) ? attrs : Unowned(attrs);
402
+ }),
403
+ list: Effect.fn(function* () {
404
+ const items = yield* sprites.listSprites.items({ max_results: 50 }).pipe(Stream.runCollect, Effect.map((chunk) => Array.from(chunk)), Effect.catchTag("SpritesNotEnabled", () => Effect.succeed([])));
405
+ return items
406
+ .filter(isOwnedSprite)
407
+ .map((sprite) => toAttrs(sprite, sprite.name ?? "", ""));
408
+ }),
409
+ reconcile: Effect.fn(function* ({ id, news, output, bindings, session }) {
410
+ const props = news;
411
+ const name = yield* resolveSpriteName(id, props.name, output?.name);
412
+ const urlAuth = props.urlAuth ?? DEFAULT_URL_AUTH;
413
+ const port = props.port ?? DEFAULT_PORT;
414
+ const labels = yield* ownershipLabels(id);
415
+ const boundEnv = collectBindingEnv(bindings ?? []);
416
+ const env = desiredEnv(props, boundEnv, hosted.alchemyEnv, port);
417
+ let current = output?.name !== undefined ? yield* getByName(output.name) : undefined;
418
+ if (current === undefined && output?.name !== name) {
419
+ current = yield* getByName(name);
420
+ }
421
+ if (current === undefined) {
422
+ yield* sprites
423
+ .createSprite({
424
+ name,
425
+ url_settings: { auth: urlAuth },
426
+ labels,
427
+ })
428
+ .pipe(Effect.catchTag("Conflict", () => Effect.void));
429
+ current = yield* waitForSprite(name).pipe(Effect.catchTag("Fly.SpritePending", () => getByName(name)));
430
+ }
431
+ if (current === undefined) {
432
+ return yield* new SpriteNotCreated({ name });
433
+ }
434
+ // Narrowed once so the `NotFound` fallbacks below keep the
435
+ // non-optional type instead of widening back to `| undefined`.
436
+ let sprite = current;
437
+ const observedAuth = toUrlAuth(sprite.url_settings?.auth);
438
+ if (observedAuth !== urlAuth) {
439
+ sprite = yield* sprites
440
+ .updateSprite({
441
+ name,
442
+ url_settings: { auth: urlAuth },
443
+ })
444
+ .pipe(Effect.catchTag("NotFound", () => Effect.succeed(sprite)));
445
+ }
446
+ const codeHash = yield* hosted.hash(props);
447
+ if (codeHash !== output?.code.hash) {
448
+ const bundled = yield* hosted.bundleProgram(props);
449
+ yield* deployProgram({
450
+ name,
451
+ files: bundled.files,
452
+ env,
453
+ port,
454
+ session,
455
+ });
456
+ sprite = (yield* getByName(name)) ?? sprite;
457
+ }
458
+ return toAttrs(sprite, name, codeHash);
459
+ }),
460
+ delete: Effect.fn(function* ({ output }) {
461
+ if (output.name.length === 0)
462
+ return;
463
+ yield* sprites
464
+ .deleteSprite({ name: output.name })
465
+ .pipe(Effect.catchTag(["NotFound", "SpritesNotEnabled"], () => Effect.void));
466
+ }),
467
+ });
468
+ }));
469
+ //# sourceMappingURL=Sprite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sprite.js","sourceRoot":"","sources":["../src/Sprite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
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 type * as HttpClient from "effect/http/HttpClient";
6
+ import type { Sprite } from "./Sprite.ts";
7
+ /**
8
+ * Shared scaffolding for HTTP-backed Fly Sprite bindings.
9
+ *
10
+ * Captures ambient credentials during stack-eval (so Actions work
11
+ * in-process) and `yield*`s the org token plus sprite `name` so
12
+ * RuntimeContext.set runs. Runtime calls inside a deployed host read
13
+ * `FLY_API_TOKEN` via {@link CredentialsFromEnv} after Platform copies
14
+ * `runtimeContext.env` onto the host.
15
+ *
16
+ * NOT exported from `index.ts`.
17
+ */
18
+ export declare const makeHttpSpriteBinding: <Client>(options: {
19
+ makeClient: (auth: SpriteAuth, spriteName: Effect.Effect<string>) => Client;
20
+ }) => Effect.Effect<(sprite: Sprite) => Effect.Effect<Client, never, never>, never, Credentials | HttpClient.HttpClient>;
21
+ export interface SpriteAuth {
22
+ authorize: <A, E>(eff: Effect.Effect<A, E, Credentials | HttpClient.HttpClient>) => Effect.Effect<A, E, RuntimeContext>;
23
+ }
24
+ export declare const makeSpriteAuth: (ambient: Context.Context<Credentials | HttpClient.HttpClient>) => SpriteAuth;
25
+ //# sourceMappingURL=SpriteHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteHttp.d.ts","sourceRoot":"","sources":["../src/SpriteHttp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,yBAAyB,CAAC;AAC1E,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,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAG1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,WAAW;IACrD,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;CAC7E,uHASG,CAAC;AAEL,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,eAAO,MAAM,cAAc,YAChB,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,KAC5D,UAOD,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { Credentials, CredentialsFromEnv } from "@distilled.cloud/fly-io";
2
+ import * as Effect from "effect/Effect";
3
+ import * as FetchHttpClient from "effect/http/FetchHttpClient";
4
+ import * as Layer from "effect/Layer";
5
+ import { bindFlyApiToken } from "./Credentials.js";
6
+ /**
7
+ * Shared scaffolding for HTTP-backed Fly Sprite bindings.
8
+ *
9
+ * Captures ambient credentials during stack-eval (so Actions work
10
+ * in-process) and `yield*`s the org token plus sprite `name` so
11
+ * RuntimeContext.set runs. Runtime calls inside a deployed host read
12
+ * `FLY_API_TOKEN` via {@link CredentialsFromEnv} after Platform copies
13
+ * `runtimeContext.env` onto the host.
14
+ *
15
+ * NOT exported from `index.ts`.
16
+ */
17
+ export const makeHttpSpriteBinding = (options) => Effect.gen(function* () {
18
+ const context = yield* Effect.context();
19
+ return Effect.fn(function* (sprite) {
20
+ yield* bindFlyApiToken().pipe(Effect.provideContext(context));
21
+ const name = yield* sprite.name;
22
+ return options.makeClient(makeSpriteAuth(context), name);
23
+ });
24
+ });
25
+ export const makeSpriteAuth = (ambient) => ({
26
+ authorize: (eff) => {
27
+ if (globalThis.__ALCHEMY_RUNTIME__) {
28
+ return eff.pipe(Effect.provide(Layer.mergeAll(CredentialsFromEnv, FetchHttpClient.layer)));
29
+ }
30
+ return eff.pipe(Effect.provideContext(ambient));
31
+ },
32
+ });
33
+ //# sourceMappingURL=SpriteHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteHttp.js","sourceRoot":"","sources":["../src/SpriteHttp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG1E,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAE/D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAS,OAE7C,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAuC,CAAC;IAE7E,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAc;QACxC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,OAAO,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAQL,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAA6D,EACjD,EAAE,CAAC,CAAC;IAChB,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;QACjB,IAAI,UAAU,CAAC,mBAAmB,EAAE,CAAC;YACnC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { VerifySecretKeyError } 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 { SecretKey } from "./SecretKey.ts";
6
+ export interface VerifyRequest {
7
+ /** Original payload. */
8
+ plaintext: Uint8Array | ArrayLike<number>;
9
+ /** Signature produced by {@link Sign}. */
10
+ signature: Uint8Array | ArrayLike<number>;
11
+ }
12
+ export interface VerifyResult {
13
+ /** Fly returns 200 only when the signature is valid. */
14
+ valid: true;
15
+ }
16
+ /**
17
+ * Verify a signature with a Fly {@link SecretKey}. The App and key
18
+ * name are fixed by `Verify(key)`.
19
+ *
20
+ *
21
+ * ### Verify a signature
22
+ * Provide {@link VerifyHttp}. A bad signature is a typed error from
23
+ * the Machines API, not `valid: false`.
24
+ *
25
+ * **Example:** Verify
26
+ * ```typescript
27
+ * const verify = yield* Fly.Verify(Signing);
28
+ * const { valid } = yield* verify({ plaintext, signature });
29
+ * ```
30
+ *
31
+ * @binding
32
+ * @product Secret Key
33
+ */
34
+ export interface Verify extends Binding.Service<Verify, "Fly.Verify", (key: SecretKey) => Effect.Effect<(request: VerifyRequest) => Effect.Effect<VerifyResult, VerifySecretKeyError, RuntimeContext>>> {
35
+ }
36
+ export declare const Verify: Verify;
37
+ //# sourceMappingURL=Verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Verify.d.ts","sourceRoot":"","sources":["../src/Verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,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,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1C,0CAA0C;IAC1C,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,KAAK,EAAE,IAAI,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,MAAO,SAAQ,OAAO,CAAC,OAAO,CAC7C,MAAM,EACN,YAAY,EACZ,CACE,GAAG,EAAE,SAAS,KACX,MAAM,CAAC,MAAM,CAChB,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAC9F,CACF;CAAG;AAEJ,eAAO,MAAM,MAAM,QAAwC,CAAC"}
package/lib/Verify.js ADDED
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const Verify = Binding.Service("Fly.Verify");
3
+ //# sourceMappingURL=Verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Verify.js","sourceRoot":"","sources":["../src/Verify.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA6C3C,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAS,YAAY,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { Verify } from "./Verify.ts";
3
+ /**
4
+ * HTTP implementation of {@link Verify}. 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 verify = yield* Fly.Verify(Signing);
13
+ * // ...
14
+ * }).pipe(Effect.provide(Fly.VerifyHttp))
15
+ * ```
16
+ *
17
+ * @layer
18
+ * @product Secret Key
19
+ * @provides Fly.Verify
20
+ */
21
+ export declare const VerifyHttp: Layer.Layer<Verify, never, never>;
22
+ //# sourceMappingURL=VerifyHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerifyHttp.d.ts","sourceRoot":"","sources":["../src/VerifyHttp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAsB,MAAM,aAAa,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU,mCAmBiE,CAAC"}