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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +57 -4
  3. package/lib/App.d.ts +230 -0
  4. package/lib/App.d.ts.map +1 -0
  5. package/lib/App.js +338 -0
  6. package/lib/App.js.map +1 -0
  7. package/lib/AuthProvider.d.ts +22 -0
  8. package/lib/AuthProvider.d.ts.map +1 -0
  9. package/lib/AuthProvider.js +48 -0
  10. package/lib/AuthProvider.js.map +1 -0
  11. package/lib/BindService.d.ts +159 -0
  12. package/lib/BindService.d.ts.map +1 -0
  13. package/lib/BindService.js +222 -0
  14. package/lib/BindService.js.map +1 -0
  15. package/lib/Bootstrap.d.ts +8 -0
  16. package/lib/Bootstrap.d.ts.map +1 -0
  17. package/lib/Bootstrap.js +41 -0
  18. package/lib/Bootstrap.js.map +1 -0
  19. package/lib/Bucket.d.ts +278 -0
  20. package/lib/Bucket.d.ts.map +1 -0
  21. package/lib/Bucket.js +658 -0
  22. package/lib/Bucket.js.map +1 -0
  23. package/lib/BucketBinding.d.ts +33 -0
  24. package/lib/BucketBinding.d.ts.map +1 -0
  25. package/lib/BucketBinding.js +70 -0
  26. package/lib/BucketBinding.js.map +1 -0
  27. package/lib/Catalog.d.ts +28 -0
  28. package/lib/Catalog.d.ts.map +1 -0
  29. package/lib/Catalog.js +31 -0
  30. package/lib/Catalog.js.map +1 -0
  31. package/lib/Certificate.d.ts +189 -0
  32. package/lib/Certificate.d.ts.map +1 -0
  33. package/lib/Certificate.js +380 -0
  34. package/lib/Certificate.js.map +1 -0
  35. package/lib/Checkpoint.d.ts +55 -0
  36. package/lib/Checkpoint.d.ts.map +1 -0
  37. package/lib/Checkpoint.js +3 -0
  38. package/lib/Checkpoint.js.map +1 -0
  39. package/lib/CheckpointHttp.d.ts +22 -0
  40. package/lib/CheckpointHttp.d.ts.map +1 -0
  41. package/lib/CheckpointHttp.js +53 -0
  42. package/lib/CheckpointHttp.js.map +1 -0
  43. package/lib/ConnectPostgres.d.ts +58 -0
  44. package/lib/ConnectPostgres.d.ts.map +1 -0
  45. package/lib/ConnectPostgres.js +13 -0
  46. package/lib/ConnectPostgres.js.map +1 -0
  47. package/lib/ConnectPostgresHttp.d.ts +26 -0
  48. package/lib/ConnectPostgresHttp.d.ts.map +1 -0
  49. package/lib/ConnectPostgresHttp.js +57 -0
  50. package/lib/ConnectPostgresHttp.js.map +1 -0
  51. package/lib/Contributions.d.ts +7 -0
  52. package/lib/Contributions.d.ts.map +1 -0
  53. package/lib/Contributions.js +6 -0
  54. package/lib/Contributions.js.map +1 -0
  55. package/lib/Credentials.d.ts +33 -0
  56. package/lib/Credentials.d.ts.map +1 -0
  57. package/lib/Credentials.js +55 -0
  58. package/lib/Credentials.js.map +1 -0
  59. package/lib/Decrypt.d.ts +52 -0
  60. package/lib/Decrypt.d.ts.map +1 -0
  61. package/lib/Decrypt.js +3 -0
  62. package/lib/Decrypt.js.map +1 -0
  63. package/lib/DecryptHttp.d.ts +22 -0
  64. package/lib/DecryptHttp.d.ts.map +1 -0
  65. package/lib/DecryptHttp.js +43 -0
  66. package/lib/DecryptHttp.js.map +1 -0
  67. package/lib/DeleteObject.d.ts +29 -0
  68. package/lib/DeleteObject.d.ts.map +1 -0
  69. package/lib/DeleteObject.js +3 -0
  70. package/lib/DeleteObject.js.map +1 -0
  71. package/lib/DeleteObjectHttp.d.ts +12 -0
  72. package/lib/DeleteObjectHttp.d.ts.map +1 -0
  73. package/lib/DeleteObjectHttp.js +17 -0
  74. package/lib/DeleteObjectHttp.js.map +1 -0
  75. package/lib/Deployment.d.ts +51 -0
  76. package/lib/Deployment.d.ts.map +1 -0
  77. package/lib/Deployment.js +62 -0
  78. package/lib/Deployment.js.map +1 -0
  79. package/lib/DeploymentImages.d.ts +18 -0
  80. package/lib/DeploymentImages.d.ts.map +1 -0
  81. package/lib/DeploymentImages.js +61 -0
  82. package/lib/DeploymentImages.js.map +1 -0
  83. package/lib/DeploymentState.d.ts +17 -0
  84. package/lib/DeploymentState.d.ts.map +1 -0
  85. package/lib/DeploymentState.js +87 -0
  86. package/lib/DeploymentState.js.map +1 -0
  87. package/lib/Encrypt.d.ts +50 -0
  88. package/lib/Encrypt.d.ts.map +1 -0
  89. package/lib/Encrypt.js +3 -0
  90. package/lib/Encrypt.js.map +1 -0
  91. package/lib/EncryptHttp.d.ts +22 -0
  92. package/lib/EncryptHttp.d.ts.map +1 -0
  93. package/lib/EncryptHttp.js +39 -0
  94. package/lib/EncryptHttp.js.map +1 -0
  95. package/lib/Environment.d.ts +45 -0
  96. package/lib/Environment.d.ts.map +1 -0
  97. package/lib/Environment.js +43 -0
  98. package/lib/Environment.js.map +1 -0
  99. package/lib/Errors.d.ts +18 -0
  100. package/lib/Errors.d.ts.map +1 -0
  101. package/lib/Errors.js +13 -0
  102. package/lib/Errors.js.map +1 -0
  103. package/lib/Exec.d.ts +41 -0
  104. package/lib/Exec.d.ts.map +1 -0
  105. package/lib/Exec.js +3 -0
  106. package/lib/Exec.js.map +1 -0
  107. package/lib/ExecHttp.d.ts +22 -0
  108. package/lib/ExecHttp.d.ts.map +1 -0
  109. package/lib/ExecHttp.js +39 -0
  110. package/lib/ExecHttp.js.map +1 -0
  111. package/lib/GetObject.d.ts +34 -0
  112. package/lib/GetObject.d.ts.map +1 -0
  113. package/lib/GetObject.js +3 -0
  114. package/lib/GetObject.js.map +1 -0
  115. package/lib/GetObjectHttp.d.ts +12 -0
  116. package/lib/GetObjectHttp.d.ts.map +1 -0
  117. package/lib/GetObjectHttp.js +17 -0
  118. package/lib/GetObjectHttp.js.map +1 -0
  119. package/lib/GetSecret.d.ts +44 -0
  120. package/lib/GetSecret.d.ts.map +1 -0
  121. package/lib/GetSecret.js +3 -0
  122. package/lib/GetSecret.js.map +1 -0
  123. package/lib/GetSecretHttp.d.ts +22 -0
  124. package/lib/GetSecretHttp.d.ts.map +1 -0
  125. package/lib/GetSecretHttp.js +50 -0
  126. package/lib/GetSecretHttp.js.map +1 -0
  127. package/lib/HeadObject.d.ts +29 -0
  128. package/lib/HeadObject.d.ts.map +1 -0
  129. package/lib/HeadObject.js +3 -0
  130. package/lib/HeadObject.js.map +1 -0
  131. package/lib/HeadObjectHttp.d.ts +12 -0
  132. package/lib/HeadObjectHttp.d.ts.map +1 -0
  133. package/lib/HeadObjectHttp.js +17 -0
  134. package/lib/HeadObjectHttp.js.map +1 -0
  135. package/lib/IpAssignment.d.ts +258 -0
  136. package/lib/IpAssignment.d.ts.map +1 -0
  137. package/lib/IpAssignment.js +376 -0
  138. package/lib/IpAssignment.js.map +1 -0
  139. package/lib/ListObjectsV2.d.ts +29 -0
  140. package/lib/ListObjectsV2.d.ts.map +1 -0
  141. package/lib/ListObjectsV2.js +3 -0
  142. package/lib/ListObjectsV2.js.map +1 -0
  143. package/lib/ListObjectsV2Http.d.ts +12 -0
  144. package/lib/ListObjectsV2Http.d.ts.map +1 -0
  145. package/lib/ListObjectsV2Http.js +17 -0
  146. package/lib/ListObjectsV2Http.js.map +1 -0
  147. package/lib/ListSecrets.d.ts +53 -0
  148. package/lib/ListSecrets.d.ts.map +1 -0
  149. package/lib/ListSecrets.js +3 -0
  150. package/lib/ListSecrets.js.map +1 -0
  151. package/lib/ListSecretsHttp.d.ts +22 -0
  152. package/lib/ListSecretsHttp.d.ts.map +1 -0
  153. package/lib/ListSecretsHttp.js +35 -0
  154. package/lib/ListSecretsHttp.js.map +1 -0
  155. package/lib/Machine.d.ts +802 -0
  156. package/lib/Machine.d.ts.map +1 -0
  157. package/lib/Machine.js +773 -0
  158. package/lib/Machine.js.map +1 -0
  159. package/lib/MachineContainers.d.ts +44 -0
  160. package/lib/MachineContainers.d.ts.map +1 -0
  161. package/lib/MachineContainers.js +115 -0
  162. package/lib/MachineContainers.js.map +1 -0
  163. package/lib/Metadata.d.ts +109 -0
  164. package/lib/Metadata.d.ts.map +1 -0
  165. package/lib/Metadata.js +159 -0
  166. package/lib/Metadata.js.map +1 -0
  167. package/lib/MountVolume.d.ts +295 -0
  168. package/lib/MountVolume.d.ts.map +1 -0
  169. package/lib/MountVolume.js +20 -0
  170. package/lib/MountVolume.js.map +1 -0
  171. package/lib/Postgres.d.ts +298 -0
  172. package/lib/Postgres.d.ts.map +1 -0
  173. package/lib/Postgres.js +508 -0
  174. package/lib/Postgres.js.map +1 -0
  175. package/lib/PostgresMigrations.d.ts +20 -0
  176. package/lib/PostgresMigrations.d.ts.map +1 -0
  177. package/lib/PostgresMigrations.js +58 -0
  178. package/lib/PostgresMigrations.js.map +1 -0
  179. package/lib/Providers.d.ts +38 -0
  180. package/lib/Providers.d.ts.map +1 -0
  181. package/lib/Providers.js +95 -0
  182. package/lib/Providers.js.map +1 -0
  183. package/lib/PutObject.d.ts +35 -0
  184. package/lib/PutObject.d.ts.map +1 -0
  185. package/lib/PutObject.js +3 -0
  186. package/lib/PutObject.js.map +1 -0
  187. package/lib/PutObjectHttp.d.ts +12 -0
  188. package/lib/PutObjectHttp.d.ts.map +1 -0
  189. package/lib/PutObjectHttp.js +17 -0
  190. package/lib/PutObjectHttp.js.map +1 -0
  191. package/lib/ReadRedis.d.ts +26 -0
  192. package/lib/ReadRedis.d.ts.map +1 -0
  193. package/lib/ReadRedis.js +3 -0
  194. package/lib/ReadRedis.js.map +1 -0
  195. package/lib/ReadRedisHttp.d.ts +11 -0
  196. package/lib/ReadRedisHttp.d.ts.map +1 -0
  197. package/lib/ReadRedisHttp.js +15 -0
  198. package/lib/ReadRedisHttp.js.map +1 -0
  199. package/lib/ReadWriteRedis.d.ts +29 -0
  200. package/lib/ReadWriteRedis.d.ts.map +1 -0
  201. package/lib/ReadWriteRedis.js +3 -0
  202. package/lib/ReadWriteRedis.js.map +1 -0
  203. package/lib/ReadWriteRedisHttp.d.ts +11 -0
  204. package/lib/ReadWriteRedisHttp.d.ts.map +1 -0
  205. package/lib/ReadWriteRedisHttp.js +15 -0
  206. package/lib/ReadWriteRedisHttp.js.map +1 -0
  207. package/lib/Redis.d.ts +252 -0
  208. package/lib/Redis.d.ts.map +1 -0
  209. package/lib/Redis.js +611 -0
  210. package/lib/Redis.js.map +1 -0
  211. package/lib/RedisBinding.d.ts +7 -0
  212. package/lib/RedisBinding.d.ts.map +1 -0
  213. package/lib/RedisBinding.js +53 -0
  214. package/lib/RedisBinding.js.map +1 -0
  215. package/lib/RedisHttp.d.ts +8 -0
  216. package/lib/RedisHttp.d.ts.map +1 -0
  217. package/lib/RedisHttp.js +11 -0
  218. package/lib/RedisHttp.js.map +1 -0
  219. package/lib/Region.d.ts +16 -0
  220. package/lib/Region.d.ts.map +1 -0
  221. package/lib/Region.js +13 -0
  222. package/lib/Region.js.map +1 -0
  223. package/lib/Secret.d.ts +190 -0
  224. package/lib/Secret.d.ts.map +1 -0
  225. package/lib/Secret.js +310 -0
  226. package/lib/Secret.js.map +1 -0
  227. package/lib/SecretHttp.d.ts +54 -0
  228. package/lib/SecretHttp.d.ts.map +1 -0
  229. package/lib/SecretHttp.js +66 -0
  230. package/lib/SecretHttp.js.map +1 -0
  231. package/lib/SecretKey.d.ts +164 -0
  232. package/lib/SecretKey.d.ts.map +1 -0
  233. package/lib/SecretKey.js +277 -0
  234. package/lib/SecretKey.js.map +1 -0
  235. package/lib/SecretKeyHttp.d.ts +14 -0
  236. package/lib/SecretKeyHttp.d.ts.map +1 -0
  237. package/lib/SecretKeyHttp.js +5 -0
  238. package/lib/SecretKeyHttp.js.map +1 -0
  239. package/lib/Service.d.ts +1017 -0
  240. package/lib/Service.d.ts.map +1 -0
  241. package/lib/Service.js +1430 -0
  242. package/lib/Service.js.map +1 -0
  243. package/lib/Sign.d.ts +36 -0
  244. package/lib/Sign.d.ts.map +1 -0
  245. package/lib/Sign.js +3 -0
  246. package/lib/Sign.js.map +1 -0
  247. package/lib/SignHttp.d.ts +22 -0
  248. package/lib/SignHttp.d.ts.map +1 -0
  249. package/lib/SignHttp.js +36 -0
  250. package/lib/SignHttp.js.map +1 -0
  251. package/lib/Sprite.d.ts +283 -0
  252. package/lib/Sprite.d.ts.map +1 -0
  253. package/lib/Sprite.js +471 -0
  254. package/lib/Sprite.js.map +1 -0
  255. package/lib/SpriteHttp.d.ts +25 -0
  256. package/lib/SpriteHttp.d.ts.map +1 -0
  257. package/lib/SpriteHttp.js +33 -0
  258. package/lib/SpriteHttp.js.map +1 -0
  259. package/lib/Verify.d.ts +37 -0
  260. package/lib/Verify.d.ts.map +1 -0
  261. package/lib/Verify.js +3 -0
  262. package/lib/Verify.js.map +1 -0
  263. package/lib/VerifyHttp.d.ts +22 -0
  264. package/lib/VerifyHttp.d.ts.map +1 -0
  265. package/lib/VerifyHttp.js +38 -0
  266. package/lib/VerifyHttp.js.map +1 -0
  267. package/lib/Volume.d.ts +53 -0
  268. package/lib/Volume.d.ts.map +1 -0
  269. package/lib/Volume.js +188 -0
  270. package/lib/Volume.js.map +1 -0
  271. package/lib/VolumeSnapshot.d.ts +135 -0
  272. package/lib/VolumeSnapshot.d.ts.map +1 -0
  273. package/lib/VolumeSnapshot.js +213 -0
  274. package/lib/VolumeSnapshot.js.map +1 -0
  275. package/lib/Website/AssetDeployment.d.ts +43 -0
  276. package/lib/Website/AssetDeployment.d.ts.map +1 -0
  277. package/lib/Website/AssetDeployment.js +162 -0
  278. package/lib/Website/AssetDeployment.js.map +1 -0
  279. package/lib/Website/Astro.d.ts +89 -0
  280. package/lib/Website/Astro.d.ts.map +1 -0
  281. package/lib/Website/Astro.js +54 -0
  282. package/lib/Website/Astro.js.map +1 -0
  283. package/lib/Website/Foldkit.d.ts +52 -0
  284. package/lib/Website/Foldkit.d.ts.map +1 -0
  285. package/lib/Website/Foldkit.js +45 -0
  286. package/lib/Website/Foldkit.js.map +1 -0
  287. package/lib/Website/FrameworkSite.d.ts +212 -0
  288. package/lib/Website/FrameworkSite.d.ts.map +1 -0
  289. package/lib/Website/FrameworkSite.js +205 -0
  290. package/lib/Website/FrameworkSite.js.map +1 -0
  291. package/lib/Website/Nextjs.d.ts +54 -0
  292. package/lib/Website/Nextjs.d.ts.map +1 -0
  293. package/lib/Website/Nextjs.js +46 -0
  294. package/lib/Website/Nextjs.js.map +1 -0
  295. package/lib/Website/Nuxt.d.ts +51 -0
  296. package/lib/Website/Nuxt.d.ts.map +1 -0
  297. package/lib/Website/Nuxt.js +36 -0
  298. package/lib/Website/Nuxt.js.map +1 -0
  299. package/lib/Website/Octane.d.ts +49 -0
  300. package/lib/Website/Octane.d.ts.map +1 -0
  301. package/lib/Website/Octane.js +39 -0
  302. package/lib/Website/Octane.js.map +1 -0
  303. package/lib/Website/ReactRouter.d.ts +80 -0
  304. package/lib/Website/ReactRouter.d.ts.map +1 -0
  305. package/lib/Website/ReactRouter.js +70 -0
  306. package/lib/Website/ReactRouter.js.map +1 -0
  307. package/lib/Website/SolidStart.d.ts +93 -0
  308. package/lib/Website/SolidStart.d.ts.map +1 -0
  309. package/lib/Website/SolidStart.js +71 -0
  310. package/lib/Website/SolidStart.js.map +1 -0
  311. package/lib/Website/StaticSite.d.ts +162 -0
  312. package/lib/Website/StaticSite.d.ts.map +1 -0
  313. package/lib/Website/StaticSite.js +180 -0
  314. package/lib/Website/StaticSite.js.map +1 -0
  315. package/lib/Website/SvelteKit.d.ts +52 -0
  316. package/lib/Website/SvelteKit.d.ts.map +1 -0
  317. package/lib/Website/SvelteKit.js +37 -0
  318. package/lib/Website/SvelteKit.js.map +1 -0
  319. package/lib/Website/TanStackStart.d.ts +76 -0
  320. package/lib/Website/TanStackStart.d.ts.map +1 -0
  321. package/lib/Website/TanStackStart.js +66 -0
  322. package/lib/Website/TanStackStart.js.map +1 -0
  323. package/lib/Website/Vinext.d.ts +73 -0
  324. package/lib/Website/Vinext.d.ts.map +1 -0
  325. package/lib/Website/Vinext.js +67 -0
  326. package/lib/Website/Vinext.js.map +1 -0
  327. package/lib/Website/Vite.d.ts +112 -0
  328. package/lib/Website/Vite.d.ts.map +1 -0
  329. package/lib/Website/Vite.js +100 -0
  330. package/lib/Website/Vite.js.map +1 -0
  331. package/lib/Website/Vocs.d.ts +52 -0
  332. package/lib/Website/Vocs.d.ts.map +1 -0
  333. package/lib/Website/Vocs.js +38 -0
  334. package/lib/Website/Vocs.js.map +1 -0
  335. package/lib/Website/Waku.d.ts +64 -0
  336. package/lib/Website/Waku.d.ts.map +1 -0
  337. package/lib/Website/Waku.js +39 -0
  338. package/lib/Website/Waku.js.map +1 -0
  339. package/lib/Website/index.d.ts +17 -0
  340. package/lib/Website/index.d.ts.map +1 -0
  341. package/lib/Website/index.js +17 -0
  342. package/lib/Website/index.js.map +1 -0
  343. package/lib/WriteCertificates.d.ts +63 -0
  344. package/lib/WriteCertificates.d.ts.map +1 -0
  345. package/lib/WriteCertificates.js +3 -0
  346. package/lib/WriteCertificates.js.map +1 -0
  347. package/lib/WriteCertificatesHttp.d.ts +25 -0
  348. package/lib/WriteCertificatesHttp.d.ts.map +1 -0
  349. package/lib/WriteCertificatesHttp.js +67 -0
  350. package/lib/WriteCertificatesHttp.js.map +1 -0
  351. package/lib/WriteRedis.d.ts +26 -0
  352. package/lib/WriteRedis.d.ts.map +1 -0
  353. package/lib/WriteRedis.js +3 -0
  354. package/lib/WriteRedis.js.map +1 -0
  355. package/lib/WriteRedisHttp.d.ts +11 -0
  356. package/lib/WriteRedisHttp.d.ts.map +1 -0
  357. package/lib/WriteRedisHttp.js +15 -0
  358. package/lib/WriteRedisHttp.js.map +1 -0
  359. package/lib/WriteSecret.d.ts +68 -0
  360. package/lib/WriteSecret.d.ts.map +1 -0
  361. package/lib/WriteSecret.js +4 -0
  362. package/lib/WriteSecret.js.map +1 -0
  363. package/lib/WriteSecretHttp.d.ts +26 -0
  364. package/lib/WriteSecretHttp.d.ts.map +1 -0
  365. package/lib/WriteSecretHttp.js +54 -0
  366. package/lib/WriteSecretHttp.js.map +1 -0
  367. package/lib/bluegreen.d.ts +36 -0
  368. package/lib/bluegreen.d.ts.map +1 -0
  369. package/lib/bluegreen.js +460 -0
  370. package/lib/bluegreen.js.map +1 -0
  371. package/lib/hosted.d.ts +171 -0
  372. package/lib/hosted.d.ts.map +1 -0
  373. package/lib/hosted.js +458 -0
  374. package/lib/hosted.js.map +1 -0
  375. package/lib/index.d.ts +65 -0
  376. package/lib/index.d.ts.map +1 -0
  377. package/lib/index.js +63 -0
  378. package/lib/index.js.map +1 -0
  379. package/lib/internal/RemoteBuilder.d.ts +28 -0
  380. package/lib/internal/RemoteBuilder.d.ts.map +1 -0
  381. package/lib/internal/RemoteBuilder.js +158 -0
  382. package/lib/internal/RemoteBuilder.js.map +1 -0
  383. package/lib/leases.d.ts +53 -0
  384. package/lib/leases.d.ts.map +1 -0
  385. package/lib/leases.js +279 -0
  386. package/lib/leases.js.map +1 -0
  387. package/lib/ports.d.ts +51 -0
  388. package/lib/ports.d.ts.map +1 -0
  389. package/lib/ports.js +123 -0
  390. package/lib/ports.js.map +1 -0
  391. package/lib/replicas.d.ts +270 -0
  392. package/lib/replicas.d.ts.map +1 -0
  393. package/lib/replicas.js +969 -0
  394. package/lib/replicas.js.map +1 -0
  395. package/lib/rpc.d.ts +35 -0
  396. package/lib/rpc.d.ts.map +1 -0
  397. package/lib/rpc.js +113 -0
  398. package/lib/rpc.js.map +1 -0
  399. package/package.json +83 -3
  400. package/src/App.ts +514 -0
  401. package/src/AuthProvider.ts +68 -0
  402. package/src/BindService.ts +303 -0
  403. package/src/Bootstrap.ts +66 -0
  404. package/src/Bucket.ts +918 -0
  405. package/src/BucketBinding.ts +128 -0
  406. package/src/Catalog.ts +43 -0
  407. package/src/Certificate.ts +548 -0
  408. package/src/Checkpoint.ts +69 -0
  409. package/src/CheckpointHttp.ts +66 -0
  410. package/src/ConnectPostgres.ts +68 -0
  411. package/src/ConnectPostgresHttp.ts +77 -0
  412. package/src/Contributions.ts +9 -0
  413. package/src/Credentials.ts +75 -0
  414. package/src/Decrypt.ts +62 -0
  415. package/src/DecryptHttp.ts +52 -0
  416. package/src/DeleteObject.ts +43 -0
  417. package/src/DeleteObjectHttp.ts +20 -0
  418. package/src/Deployment.ts +121 -0
  419. package/src/DeploymentImages.ts +84 -0
  420. package/src/DeploymentState.ts +104 -0
  421. package/src/Encrypt.ts +60 -0
  422. package/src/EncryptHttp.ts +48 -0
  423. package/src/Environment.ts +81 -0
  424. package/src/Errors.ts +14 -0
  425. package/src/Exec.ts +50 -0
  426. package/src/ExecHttp.ts +47 -0
  427. package/src/GetObject.ts +48 -0
  428. package/src/GetObjectHttp.ts +20 -0
  429. package/src/GetSecret.ts +48 -0
  430. package/src/GetSecretHttp.ts +60 -0
  431. package/src/HeadObject.ts +43 -0
  432. package/src/HeadObjectHttp.ts +20 -0
  433. package/src/IpAssignment.ts +522 -0
  434. package/src/ListObjectsV2.ts +43 -0
  435. package/src/ListObjectsV2Http.ts +20 -0
  436. package/src/ListSecrets.ts +57 -0
  437. package/src/ListSecretsHttp.ts +43 -0
  438. package/src/Machine.ts +1270 -0
  439. package/src/MachineContainers.ts +152 -0
  440. package/src/Metadata.ts +195 -0
  441. package/src/MountVolume.ts +315 -0
  442. package/src/Postgres.ts +777 -0
  443. package/src/PostgresMigrations.ts +93 -0
  444. package/src/Providers.ts +155 -0
  445. package/src/PutObject.ts +49 -0
  446. package/src/PutObjectHttp.ts +20 -0
  447. package/src/ReadRedis.ts +31 -0
  448. package/src/ReadRedisHttp.ts +18 -0
  449. package/src/ReadWriteRedis.ts +33 -0
  450. package/src/ReadWriteRedisHttp.ts +18 -0
  451. package/src/Redis.ts +823 -0
  452. package/src/RedisBinding.ts +64 -0
  453. package/src/RedisHttp.ts +14 -0
  454. package/src/Region.ts +44 -0
  455. package/src/Secret.ts +405 -0
  456. package/src/SecretHttp.ts +149 -0
  457. package/src/SecretKey.ts +389 -0
  458. package/src/SecretKeyHttp.ts +23 -0
  459. package/src/Service.ts +1968 -0
  460. package/src/Sign.ts +46 -0
  461. package/src/SignHttp.ts +44 -0
  462. package/src/Sprite.ts +673 -0
  463. package/src/SpriteHttp.ts +50 -0
  464. package/src/Verify.ts +47 -0
  465. package/src/VerifyHttp.ts +46 -0
  466. package/src/Volume.ts +264 -0
  467. package/src/VolumeSnapshot.ts +321 -0
  468. package/src/Website/AssetDeployment.ts +292 -0
  469. package/src/Website/Astro.ts +92 -0
  470. package/src/Website/Foldkit.ts +54 -0
  471. package/src/Website/FrameworkSite.ts +449 -0
  472. package/src/Website/Nextjs.ts +50 -0
  473. package/src/Website/Nuxt.ts +48 -0
  474. package/src/Website/Octane.ts +44 -0
  475. package/src/Website/ReactRouter.ts +76 -0
  476. package/src/Website/SolidStart.ts +90 -0
  477. package/src/Website/StaticSite.ts +295 -0
  478. package/src/Website/SvelteKit.ts +49 -0
  479. package/src/Website/TanStackStart.ts +72 -0
  480. package/src/Website/Vinext.ts +79 -0
  481. package/src/Website/Vite.ts +121 -0
  482. package/src/Website/Vocs.ts +50 -0
  483. package/src/Website/Waku.ts +65 -0
  484. package/src/Website/index.ts +16 -0
  485. package/src/WriteCertificates.ts +90 -0
  486. package/src/WriteCertificatesHttp.ts +93 -0
  487. package/src/WriteRedis.ts +31 -0
  488. package/src/WriteRedisHttp.ts +18 -0
  489. package/src/WriteSecret.ts +86 -0
  490. package/src/WriteSecretHttp.ts +71 -0
  491. package/src/bluegreen.ts +711 -0
  492. package/src/globals.d.ts +2 -0
  493. package/src/hosted.ts +667 -0
  494. package/src/index.ts +64 -0
  495. package/src/internal/RemoteBuilder.ts +242 -0
  496. package/src/leases.ts +437 -0
  497. package/src/ports.ts +177 -0
  498. package/src/replicas.ts +1480 -0
  499. package/src/rpc.ts +136 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentImages.js","sourceRoot":"","sources":["../src/DeploymentImages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { FlyMachineConfig } from "@distilled.cloud/fly-io/machines";
2
+ type DeploymentState = {
3
+ protocol: "legacy" | "1" | "2";
4
+ } | {
5
+ protocol: "invalid";
6
+ reason: string;
7
+ };
8
+ /** Observation and reconciliation must agree before treating a Machine as legacy. */
9
+ export declare const classifyDeploymentState: (machine: {
10
+ config?: FlyMachineConfig;
11
+ }) => DeploymentState;
12
+ /** A partial protocol-2 generation is valid only when every member agrees on its identity. */
13
+ export declare const validProtocol2Generation: (group: readonly {
14
+ config?: FlyMachineConfig;
15
+ }[]) => boolean;
16
+ export {};
17
+ //# sourceMappingURL=DeploymentState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentState.d.ts","sourceRoot":"","sources":["../src/DeploymentState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIzE,KAAK,eAAe,GAAG;IAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpG,qFAAqF;AACrF,eAAO,MAAM,uBAAuB,YAAa;IAC/C,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,KAAG,eAoCH,CAAC;AAiCF,8FAA8F;AAC9F,eAAO,MAAM,wBAAwB,UAC5B,SAAS;IAAE,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,EAAE,KAC9C,OAsBF,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { pinsFromConfig, sameImageSet, validObservedImageSet } from "./DeploymentImages.js";
2
+ import { alchemyMetadataKeys as keys } from "./Metadata.js";
3
+ /** Observation and reconciliation must agree before treating a Machine as legacy. */
4
+ export const classifyDeploymentState = (machine) => {
5
+ const metadata = machine.config?.metadata;
6
+ const protocol = metadata?.[keys.protocol];
7
+ if (protocol !== undefined && protocol !== "1" && protocol !== "2")
8
+ return {
9
+ protocol: "invalid",
10
+ reason: `Unknown deployment protocol ${protocol}.`,
11
+ };
12
+ if (protocol !== "2" && metadata?.[keys.containerImageSet] !== undefined)
13
+ return {
14
+ protocol: "invalid",
15
+ reason: "Container image metadata requires deployment protocol 2.",
16
+ };
17
+ if (protocol === "2")
18
+ return validProtocol2RecoveryMetadata(machine)
19
+ ? { protocol }
20
+ : {
21
+ protocol: "invalid",
22
+ reason: "Invalid protocol-2 image set or recovery metadata.",
23
+ };
24
+ if (protocol === "1") {
25
+ const replica = metadata?.[keys.replica] ?? "";
26
+ if (!/^(0|[1-9]\d*)$/.test(replica) ||
27
+ !Number.isSafeInteger(Number(replica)) ||
28
+ !["candidate", "promoting", "validating", "active", "retiring"].includes(metadata?.[keys.phase] ?? ""))
29
+ return {
30
+ protocol: "invalid",
31
+ reason: "Invalid protocol-1 replica index or deployment phase.",
32
+ };
33
+ return { protocol };
34
+ }
35
+ return { protocol: "legacy" };
36
+ };
37
+ /** Required recovery fields for a complete protocol-2 generation member. */
38
+ const validProtocol2RecoveryMetadata = (machine) => {
39
+ if (!validObservedImageSet(machine))
40
+ return false;
41
+ const recorded = machine.config?.metadata;
42
+ const countText = recorded?.[keys.count] ?? "";
43
+ const sequenceText = recorded?.[keys.sequence] ?? "";
44
+ const replicaText = recorded?.[keys.replica] ?? "";
45
+ const count = Number(countText);
46
+ const index = Number(replicaText);
47
+ const roles = (recorded?.[keys.roles] ?? "").split(",");
48
+ return (Boolean(recorded?.[keys.generation]?.trim()) &&
49
+ Boolean(recorded?.[keys.workload]?.trim()) &&
50
+ /^[1-9]\d*$/.test(countText) &&
51
+ Number.isSafeInteger(count) &&
52
+ /^[1-9]\d*$/.test(sequenceText) &&
53
+ Number.isSafeInteger(Number(sequenceText)) &&
54
+ /^(0|[1-9]\d*)$/.test(replicaText) &&
55
+ Number.isSafeInteger(index) &&
56
+ index < count &&
57
+ roles.length === count &&
58
+ roles.includes("run") &&
59
+ roles.every((role) => role === "run" || role === "idle") &&
60
+ recorded?.[keys.role] === roles[index] &&
61
+ ["candidate", "promoting", "validating", "active", "retiring"].includes(recorded?.[keys.phase] ?? "") &&
62
+ ["true", "false"].includes(recorded?.[keys.restored] ?? ""));
63
+ };
64
+ /** A partial protocol-2 generation is valid only when every member agrees on its identity. */
65
+ export const validProtocol2Generation = (group) => {
66
+ const first = group[0]?.config?.metadata;
67
+ if (!first || group.length === 0)
68
+ return false;
69
+ const indices = new Set();
70
+ for (const machine of group) {
71
+ const metadata = machine.config?.metadata;
72
+ const replica = metadata?.[keys.replica];
73
+ if (!validProtocol2RecoveryMetadata(machine) ||
74
+ metadata?.[keys.generation] !== first[keys.generation] ||
75
+ metadata?.[keys.count] !== first[keys.count] ||
76
+ metadata?.[keys.sequence] !== first[keys.sequence] ||
77
+ metadata?.[keys.workload] !== first[keys.workload] ||
78
+ metadata?.[keys.roles] !== first[keys.roles] ||
79
+ replica === undefined ||
80
+ indices.has(replica) ||
81
+ !sameImageSet(pinsFromConfig(machine.config), pinsFromConfig(group[0]?.config)))
82
+ return false;
83
+ indices.add(replica);
84
+ }
85
+ return true;
86
+ };
87
+ //# sourceMappingURL=DeploymentState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentState.js","sourceRoot":"","sources":["../src/DeploymentState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { EncryptSecretKeyError } 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 EncryptRequest {
7
+ /** Bytes to encrypt. */
8
+ plaintext: Uint8Array | ArrayLike<number>;
9
+ /** Optional AEAD associated data. */
10
+ associatedData?: Uint8Array | ArrayLike<number>;
11
+ }
12
+ export interface EncryptResult {
13
+ ciphertext: Uint8Array;
14
+ }
15
+ /**
16
+ * Encrypt with a Fly {@link SecretKey} (`nacl_box`, `nacl_secretbox`,
17
+ * `xaes256gcm`, …). The App and key name are fixed by `Encrypt(key)`.
18
+ *
19
+ *
20
+ * ### Encrypt a payload
21
+ * Provide {@link EncryptHttp} on the Action or Service Effect. Fly
22
+ * crypto ops need a KMS token. Org API tokens are typed `Forbidden`.
23
+ *
24
+ * **Example:** Encrypt
25
+ * ```typescript
26
+ * const encrypt = yield* Fly.Encrypt(Box);
27
+ * const { ciphertext } = yield* encrypt({
28
+ * plaintext: new TextEncoder().encode("attack at dawn"),
29
+ * });
30
+ * ```
31
+ *
32
+ * ### Associated data
33
+ * `associatedData` is optional AEAD associated data. {@link Decrypt}
34
+ * must pass the same bytes.
35
+ *
36
+ * **Example:** AEAD
37
+ * ```typescript
38
+ * const { ciphertext } = yield* encrypt({
39
+ * plaintext: bytes,
40
+ * associatedData: nonce,
41
+ * });
42
+ * ```
43
+ *
44
+ * @binding
45
+ * @product Secret Key
46
+ */
47
+ export interface Encrypt extends Binding.Service<Encrypt, "Fly.Encrypt", (key: SecretKey) => Effect.Effect<(request: EncryptRequest) => Effect.Effect<EncryptResult, EncryptSecretKeyError, RuntimeContext>>> {
48
+ }
49
+ export declare const Encrypt: Encrypt;
50
+ //# sourceMappingURL=Encrypt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Encrypt.d.ts","sourceRoot":"","sources":["../src/Encrypt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1C,qCAAqC;IACrC,cAAc,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,OAAQ,SAAQ,OAAO,CAAC,OAAO,CAC9C,OAAO,EACP,aAAa,EACb,CACE,GAAG,EAAE,SAAS,KACX,MAAM,CAAC,MAAM,CAChB,CAAC,OAAO,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,cAAc,CAAC,CACjG,CACF;CAAG;AAEJ,eAAO,MAAM,OAAO,SAA0C,CAAC"}
package/lib/Encrypt.js ADDED
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const Encrypt = Binding.Service("Fly.Encrypt");
3
+ //# sourceMappingURL=Encrypt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Encrypt.js","sourceRoot":"","sources":["../src/Encrypt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA0D3C,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAU,aAAa,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { Encrypt } from "./Encrypt.ts";
3
+ /**
4
+ * HTTP implementation of {@link Encrypt}. 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 encrypt = yield* Fly.Encrypt(Box);
13
+ * // ...
14
+ * }).pipe(Effect.provide(Fly.EncryptHttp))
15
+ * ```
16
+ *
17
+ * @layer
18
+ * @product Secret Key
19
+ * @provides Fly.Encrypt
20
+ */
21
+ export declare const EncryptHttp: Layer.Layer<Encrypt, never, never>;
22
+ //# sourceMappingURL=EncryptHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptHttp.d.ts","sourceRoot":"","sources":["../src/EncryptHttp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAc,CAAC;AAG5D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,WAAW,oCAqBgE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import * as machines from "@distilled.cloud/fly-io/machines";
2
+ import * as Effect from "effect/Effect";
3
+ import * as FetchHttpClient from "effect/http/FetchHttpClient";
4
+ import * as Layer from "effect/Layer";
5
+ import { CredentialsFromAmbientOrEnv } from "./Credentials.js";
6
+ import { Encrypt } from "./Encrypt.js";
7
+ import { base64ToBytes, bytesToBase64, makeHttpSecretKeyBinding } from "./SecretKeyHttp.js";
8
+ /**
9
+ * HTTP implementation of {@link Encrypt}. Provide it on the
10
+ * {@link Service} or Action Effect.
11
+ *
12
+ *
13
+ * ### Provide the layer
14
+ * **Example:** On a Service
15
+ * ```typescript
16
+ * Effect.gen(function* () {
17
+ * const encrypt = yield* Fly.Encrypt(Box);
18
+ * // ...
19
+ * }).pipe(Effect.provide(Fly.EncryptHttp))
20
+ * ```
21
+ *
22
+ * @layer
23
+ * @product Secret Key
24
+ * @provides Fly.Encrypt
25
+ */
26
+ export const EncryptHttp = Layer.effect(Encrypt, Effect.suspend(() => makeHttpSecretKeyBinding({
27
+ makeClient: (auth, appName, secretName) => Effect.fn("Fly.Encrypt")(function* (request) {
28
+ const res = yield* auth.authorize(machines.encryptSecretKey({
29
+ app_name: yield* appName,
30
+ secret_name: yield* secretName,
31
+ plaintext: bytesToBase64(request.plaintext),
32
+ associated_data: request.associatedData === undefined
33
+ ? undefined
34
+ : bytesToBase64(request.associatedData),
35
+ }));
36
+ return { ciphertext: base64ToBytes(res.ciphertext) };
37
+ }),
38
+ }))).pipe(Layer.provide(FetchHttpClient.layer), Layer.provide(CredentialsFromAmbientOrEnv));
39
+ //# sourceMappingURL=EncryptHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptHttp.js","sourceRoot":"","sources":["../src/EncryptHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE5F;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CACrC,OAAO,EACP,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,wBAAwB,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CACxC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAuB;QACzD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAC/B,QAAQ,CAAC,gBAAgB,CAAC;YACxB,QAAQ,EAAE,KAAK,CAAC,CAAC,OAAO;YACxB,WAAW,EAAE,KAAK,CAAC,CAAC,UAAU;YAC9B,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;YAC3C,eAAe,EACb,OAAO,CAAC,cAAc,KAAK,SAAS;gBAClC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC;SAC5C,CAAC,CACH,CAAC;QACF,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;IACvD,CAAC,CAAC;CACL,CAAC,CACH,CACF,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { Config } from "@distilled.cloud/fly-io";
2
+ import { Credentials } from "@distilled.cloud/fly-io";
3
+ import * as machines from "@distilled.cloud/fly-io/machines";
4
+ import * as Context from "effect/Context";
5
+ import * as Effect from "effect/Effect";
6
+ import * as HttpClient from "effect/http/HttpClient";
7
+ import * as Layer from "effect/Layer";
8
+ declare const FlyOrgNotFound_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 & {
9
+ readonly _tag: "Fly.OrgNotFound";
10
+ } & Readonly<A>;
11
+ export declare class FlyOrgNotFound extends FlyOrgNotFound_base<{
12
+ message: string;
13
+ }> {
14
+ }
15
+ /**
16
+ * Fully-resolved Fly.io environment for a stack.
17
+ *
18
+ * `{ apiKey, apiBaseUrl }` comes from distilled `Credentials`. `orgSlug` is
19
+ * the current token's organization (`getCurrentToken` → `tokens[0].org_slug`),
20
+ * cached for the process. Resolve it inside lifecycle operations with
21
+ * `FlyEnvironment.current`.
22
+ */
23
+ export type FlyEnvironmentShape = Config & {
24
+ readonly orgSlug: string;
25
+ };
26
+ declare const FlyEnvironment_base: Context.ServiceClass<FlyEnvironment, "Fly::Environment", Effect.Effect<FlyEnvironmentShape, never, never>>;
27
+ export declare class FlyEnvironment extends FlyEnvironment_base {
28
+ static current: Effect.Effect<FlyEnvironmentShape, never, FlyEnvironment>;
29
+ readonly kind: "Environment";
30
+ }
31
+ /**
32
+ * Discover the current token's organization slug via `getCurrentToken`.
33
+ * Used by {@link fromCredentials} and by {@link Catalog.currentOrgSlug}.
34
+ */
35
+ export declare const resolveOrgSlug: () => Effect.Effect<string, FlyOrgNotFound | machines.GetCurrentTokenError, machines.FlyIoOpContext>;
36
+ /**
37
+ * Build a `FlyEnvironment` layer from the distilled `Credentials`
38
+ * service. Provide this after `Credentials.fromAuthProvider()`.
39
+ *
40
+ * `orgSlug` is resolved from `getCurrentToken` and cached so App.list /
41
+ * Catalog do not re-hit `/tokens/current` on every call.
42
+ */
43
+ export declare const fromCredentials: () => Layer.Layer<FlyEnvironment, never, Credentials | HttpClient.HttpClient>;
44
+ export {};
45
+ //# sourceMappingURL=Environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Environment.d.ts","sourceRoot":"","sources":["../src/Environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAC7D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;;;;AAEtC,qBAAa,cAAe,SAAQ,oBAAoC;IACtE,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;CAAG;AAEL;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;;AAEF,qBAAa,cAAe,SAAQ,mBAGb;IACrB,MAAM,CAAC,OAAO,4DAAoC;IAClD,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;CACxC;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,sGASzB,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,+EAyBzB,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { Credentials } from "@distilled.cloud/fly-io";
2
+ import * as machines from "@distilled.cloud/fly-io/machines";
3
+ import * as Context from "effect/Context";
4
+ import * as Data from "effect/Data";
5
+ import * as Effect from "effect/Effect";
6
+ import * as HttpClient from "effect/http/HttpClient";
7
+ import * as Layer from "effect/Layer";
8
+ export class FlyOrgNotFound extends Data.TaggedError("Fly.OrgNotFound") {
9
+ }
10
+ export class FlyEnvironment extends Context.Service()("Fly::Environment") {
11
+ static current = FlyEnvironment.use((env) => env);
12
+ kind = "Environment";
13
+ }
14
+ /**
15
+ * Discover the current token's organization slug via `getCurrentToken`.
16
+ * Used by {@link fromCredentials} and by {@link Catalog.currentOrgSlug}.
17
+ */
18
+ export const resolveOrgSlug = Effect.fn(function* () {
19
+ const info = yield* machines.getCurrentToken({});
20
+ const orgSlug = info.tokens?.[0]?.org_slug;
21
+ if (orgSlug === undefined || orgSlug.length === 0) {
22
+ return yield* new FlyOrgNotFound({
23
+ message: "Fly current token did not include an organization slug.",
24
+ });
25
+ }
26
+ return orgSlug;
27
+ });
28
+ /**
29
+ * Build a `FlyEnvironment` layer from the distilled `Credentials`
30
+ * service. Provide this after `Credentials.fromAuthProvider()`.
31
+ *
32
+ * `orgSlug` is resolved from `getCurrentToken` and cached so App.list /
33
+ * Catalog do not re-hit `/tokens/current` on every call.
34
+ */
35
+ export const fromCredentials = () => Layer.effect(FlyEnvironment, Effect.gen(function* () {
36
+ const creds = yield* Credentials;
37
+ const http = yield* HttpClient.HttpClient;
38
+ return yield* creds.pipe(Effect.flatMap((resolved) => resolveOrgSlug().pipe(Effect.provide(Layer.mergeAll(Layer.succeed(Credentials, creds), Layer.succeed(HttpClient.HttpClient, http))), Effect.map((orgSlug) => ({
39
+ ...resolved,
40
+ orgSlug,
41
+ })))), Effect.orDie, Effect.cached);
42
+ }));
43
+ //# sourceMappingURL=Environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Environment.js","sourceRoot":"","sources":["../src/Environment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAC7D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,OAAO,cAAe,SAAQ,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAEpE;CAAG;AAcL,MAAM,OAAO,cAAe,SAAQ,OAAO,CAAC,OAAO,EAGhD,CAAC,kBAAkB,CAAC;IACrB,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,GAAG,aAAsB,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;IAC3C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC;YAC/B,OAAO,EAAE,yDAAyD;SACnE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE,CAClC,KAAK,CAAC,MAAM,CACV,cAAc,EACd,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IAC1C,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CACtB,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC1B,cAAc,EAAE,CAAC,IAAI,CACnB,MAAM,CAAC,OAAO,CACZ,KAAK,CAAC,QAAQ,CACZ,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,EACjC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAC3C,CACF,EACD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACvB,GAAG,QAAQ;QACX,OAAO;KACR,CAAC,CAAC,CACJ,CACF,EACD,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,CACd,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ declare const TigrisCredentialsMissing_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 & {
2
+ readonly _tag: "Fly.TigrisCredentialsMissing";
3
+ } & Readonly<A>;
4
+ /**
5
+ * A {@link Bucket}'s Tigris credentials could not be resolved when a
6
+ * bound S3 operation ran.
7
+ *
8
+ * Tigris hands out the access key pair once, at add-on creation. If the
9
+ * Bucket attributes reaching the binding carry no key pair — an adopted
10
+ * bucket, or one whose create-only secrets were never persisted — the
11
+ * operation fails with this instead of signing an anonymous request.
12
+ */
13
+ export declare class TigrisCredentialsMissing extends TigrisCredentialsMissing_base<{
14
+ resourceName: string;
15
+ }> {
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=Errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,8BAAiD;IAC7F,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;CAAG"}
package/lib/Errors.js ADDED
@@ -0,0 +1,13 @@
1
+ import * as Data from "effect/Data";
2
+ /**
3
+ * A {@link Bucket}'s Tigris credentials could not be resolved when a
4
+ * bound S3 operation ran.
5
+ *
6
+ * Tigris hands out the access key pair once, at add-on creation. If the
7
+ * Bucket attributes reaching the binding carry no key pair — an adopted
8
+ * bucket, or one whose create-only secrets were never persisted — the
9
+ * operation fails with this instead of signing an anonymous request.
10
+ */
11
+ export class TigrisCredentialsMissing extends Data.TaggedError("Fly.TigrisCredentialsMissing") {
12
+ }
13
+ //# sourceMappingURL=Errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Errors.js","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,OAAO,wBAAyB,SAAQ,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAE3F;CAAG"}
package/lib/Exec.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ import type { ExecCommandError, ExecResult } from "@distilled.cloud/fly-io/sprites";
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 { Sprite } from "./Sprite.ts";
6
+ export interface ExecRequest {
7
+ /** Command and args. */
8
+ cmd: string[];
9
+ /** Explicit path to the executable. */
10
+ path?: string;
11
+ /** Read stdin from {@link body}. */
12
+ stdin?: boolean;
13
+ /** Environment variables as `KEY=VALUE`. */
14
+ env?: string[];
15
+ /** Working directory. */
16
+ dir?: string;
17
+ /** Stdin bytes when {@link stdin} is true. */
18
+ body?: Uint8Array | string;
19
+ }
20
+ /**
21
+ * Run a command on a {@link Sprite} via `POST /sprites/{name}/exec`.
22
+ *
23
+ *
24
+ * ### Exec a command
25
+ * Bind the client in init. Provide {@link ExecHttp}. The Sprite name
26
+ * is fixed by `Exec(box)`. Alchemy transports that name and the
27
+ * deployment's org token to the caller automatically.
28
+ *
29
+ * **Example:** List files
30
+ * ```typescript
31
+ * const exec = yield* Fly.Exec(Box);
32
+ * const result = yield* exec({ cmd: ["ls", "-la"] });
33
+ * ```
34
+ *
35
+ * @binding
36
+ * @product Sprite
37
+ */
38
+ export interface Exec extends Binding.Service<Exec, "Fly.Exec", (sprite: Sprite) => Effect.Effect<(request: ExecRequest) => Effect.Effect<ExecResult, ExecCommandError, RuntimeContext>>> {
39
+ }
40
+ export declare const Exec: Exec;
41
+ //# sourceMappingURL=Exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Exec.d.ts","sourceRoot":"","sources":["../src/Exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,IAAK,SAAQ,OAAO,CAAC,OAAO,CAC3C,IAAI,EACJ,UAAU,EACV,CACE,MAAM,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAChB,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,EAAE,cAAc,CAAC,CACtF,CACF;CAAG;AAEJ,eAAO,MAAM,IAAI,MAAoC,CAAC"}
package/lib/Exec.js ADDED
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const Exec = Binding.Service("Fly.Exec");
3
+ //# sourceMappingURL=Exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Exec.js","sourceRoot":"","sources":["../src/Exec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAgD3C,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAO,UAAU,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { Exec } from "./Exec.ts";
3
+ /**
4
+ * HTTP implementation of {@link Exec}. Provide it on the
5
+ * {@link Sprite}, {@link Service}, or Action Effect.
6
+ *
7
+ *
8
+ * ### Provide the layer
9
+ * **Example:** On a Sprite
10
+ * ```typescript
11
+ * Effect.gen(function* () {
12
+ * const exec = yield* Fly.Exec(Box);
13
+ * // ...
14
+ * }).pipe(Effect.provide(Fly.ExecHttp))
15
+ * ```
16
+ *
17
+ * @layer
18
+ * @product Sprite
19
+ * @provides Fly.Exec
20
+ */
21
+ export declare const ExecHttp: Layer.Layer<Exec, never, never>;
22
+ //# sourceMappingURL=ExecHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecHttp.d.ts","sourceRoot":"","sources":["../src/ExecHttp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAoB,MAAM,WAAW,CAAC;AAGnD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,QAAQ,iCAoBmE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import * as sprites from "@distilled.cloud/fly-io/sprites";
2
+ import * as Effect from "effect/Effect";
3
+ import * as FetchHttpClient from "effect/http/FetchHttpClient";
4
+ import * as Layer from "effect/Layer";
5
+ import { CredentialsFromAmbientOrEnv } from "./Credentials.js";
6
+ import { Exec } from "./Exec.js";
7
+ import { makeHttpSpriteBinding } from "./SpriteHttp.js";
8
+ /**
9
+ * HTTP implementation of {@link Exec}. Provide it on the
10
+ * {@link Sprite}, {@link Service}, or Action Effect.
11
+ *
12
+ *
13
+ * ### Provide the layer
14
+ * **Example:** On a Sprite
15
+ * ```typescript
16
+ * Effect.gen(function* () {
17
+ * const exec = yield* Fly.Exec(Box);
18
+ * // ...
19
+ * }).pipe(Effect.provide(Fly.ExecHttp))
20
+ * ```
21
+ *
22
+ * @layer
23
+ * @product Sprite
24
+ * @provides Fly.Exec
25
+ */
26
+ export const ExecHttp = Layer.effect(Exec, Effect.suspend(() => makeHttpSpriteBinding({
27
+ makeClient: (auth, spriteName) => Effect.fn("Fly.Exec")(function* (request) {
28
+ return yield* auth.authorize(sprites.execCommand({
29
+ name: yield* spriteName,
30
+ cmd: request.cmd,
31
+ path: request.path,
32
+ stdin: request.stdin,
33
+ env: request.env,
34
+ dir: request.dir,
35
+ body: request.body,
36
+ }));
37
+ }),
38
+ }))).pipe(Layer.provide(FetchHttpClient.layer), Layer.provide(CredentialsFromAmbientOrEnv));
39
+ //# sourceMappingURL=ExecHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecHttp.js","sourceRoot":"","sources":["../src/ExecHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAoB,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAClC,IAAI,EACJ,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,qBAAqB,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAC/B,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAoB;QACnD,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAC1B,OAAO,CAAC,WAAW,CAAC;YAClB,IAAI,EAAE,KAAK,CAAC,CAAC,UAAU;YACvB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;CACL,CAAC,CACH,CACF,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type * as S3 from "@distilled.cloud/aws/s3";
2
+ import * as Binding from "alchemy/Binding";
3
+ import type { RuntimeContext } from "alchemy/RuntimeContext";
4
+ import type * as Effect from "effect/Effect";
5
+ import type { Bucket } from "./Bucket.ts";
6
+ import type { TigrisCredentialsMissing } from "./Errors.ts";
7
+ export interface GetObjectRequest extends Omit<S3.GetObjectRequest, "Bucket"> {
8
+ }
9
+ /**
10
+ * Runtime binding for Tigris `GetObject` over the S3 API.
11
+ *
12
+ * Bind this operation to a {@link Bucket} in Service init. Provide
13
+ * {@link GetObjectHttp}.
14
+ *
15
+ *
16
+ * ### Reading Objects
17
+ * **Example:** Read an Object and Decode Its Body
18
+ * ```typescript
19
+ * const getObject = yield* Fly.GetObject(Data);
20
+ *
21
+ * const text = yield* getObject({ Key: "hello.txt" }).pipe(
22
+ * Effect.flatMap((result) =>
23
+ * Stream.mkString(Stream.decodeText(result.Body!)),
24
+ * ),
25
+ * );
26
+ * ```
27
+ *
28
+ * @binding
29
+ * @product Bucket
30
+ */
31
+ export interface GetObject extends Binding.Service<GetObject, "Fly.GetObject", (bucket: Bucket) => Effect.Effect<(request: GetObjectRequest) => Effect.Effect<S3.GetObjectOutput, S3.GetObjectError | TigrisCredentialsMissing, RuntimeContext>>> {
32
+ }
33
+ export declare const GetObject: GetObject;
34
+ //# sourceMappingURL=GetObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetObject.d.ts","sourceRoot":"","sources":["../src/GetObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC;CAAG;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,SAAU,SAAQ,OAAO,CAAC,OAAO,CAChD,SAAS,EACT,eAAe,EACf,CACE,MAAM,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAChB,CACE,OAAO,EAAE,gBAAgB,KACtB,MAAM,CAAC,MAAM,CAChB,EAAE,CAAC,eAAe,EAClB,EAAE,CAAC,cAAc,GAAG,wBAAwB,EAC5C,cAAc,CACf,CACF,CACF;CAAG;AAEJ,eAAO,MAAM,SAAS,WAA8C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as Binding from "alchemy/Binding";
2
+ export const GetObject = Binding.Service("Fly.GetObject");
3
+ //# sourceMappingURL=GetObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetObject.js","sourceRoot":"","sources":["../src/GetObject.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AA8C3C,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAY,eAAe,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { GetObject } from "./GetObject.ts";
3
+ /**
4
+ * HTTP implementation of {@link GetObject}. Calls distilled S3
5
+ * `getObject` against the Tigris endpoint with the bucket's credentials.
6
+ *
7
+ * @layer
8
+ * @product Bucket
9
+ * @provides Fly.GetObject
10
+ */
11
+ export declare const GetObjectHttp: Layer.Layer<GetObject, never, never>;
12
+ //# sourceMappingURL=GetObjectHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetObjectHttp.d.ts","sourceRoot":"","sources":["../src/GetObjectHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,sCAMzB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import * as S3 from "@distilled.cloud/aws/s3";
2
+ import * as Layer from "effect/Layer";
3
+ import { makeTigrisS3Binding } from "./BucketBinding.js";
4
+ import { GetObject } from "./GetObject.js";
5
+ /**
6
+ * HTTP implementation of {@link GetObject}. Calls distilled S3
7
+ * `getObject` against the Tigris endpoint with the bucket's credentials.
8
+ *
9
+ * @layer
10
+ * @product Bucket
11
+ * @provides Fly.GetObject
12
+ */
13
+ export const GetObjectHttp = Layer.effect(GetObject, makeTigrisS3Binding({
14
+ tag: "Fly.GetObject",
15
+ operation: S3.getObject,
16
+ }));
17
+ //# sourceMappingURL=GetObjectHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetObjectHttp.js","sourceRoot":"","sources":["../src/GetObjectHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CACvC,SAAS,EACT,mBAAmB,CAAC;IAClB,GAAG,EAAE,eAAe;IACpB,SAAS,EAAE,EAAE,CAAC,SAAS;CACxB,CAAC,CACH,CAAC"}