@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,212 @@
1
+ import { AlchemyContext } from "alchemy/AlchemyContext";
2
+ import type { MemoOptions } from "alchemy/Command/Memo";
3
+ import * as DNS from "alchemy/DNS/Adapter";
4
+ import * as Output from "alchemy/Output";
5
+ import { staticConfigFromAssets, type WebsiteAssetsProps, type WebsiteNotFoundHandling } from "alchemy/Website/assets";
6
+ import { Server as FrameworkServer, type ServerDevProps } from "alchemy/Website/Server";
7
+ import * as Effect from "effect/Effect";
8
+ import * as FileSystem from "effect/FileSystem";
9
+ import * as Path from "effect/Path";
10
+ import * as Redacted from "effect/Redacted";
11
+ import { App } from "../App.ts";
12
+ import { Certificate } from "../Certificate.ts";
13
+ import { IpAssignment } from "../IpAssignment.ts";
14
+ import type { Providers } from "../Providers.ts";
15
+ import { Service, type ServiceProps } from "../Service.ts";
16
+ /**
17
+ * A resource-valued prop: the resource itself, or an Effect that produces
18
+ * it (so `yield* App(...)` and `App(...)` both type-check).
19
+ */
20
+ export type Ref<T> = T | Effect.Effect<T, never, Providers>;
21
+ export type { ServerDevProps, WebsiteAssetsProps, WebsiteNotFoundHandling };
22
+ export { staticConfigFromAssets };
23
+ /**
24
+ * Custom hostname of a Fly website: the hostname itself, or
25
+ * `{ name, dns }` to also publish its DNS records.
26
+ */
27
+ export type WebsiteDomain = string | {
28
+ /** Hostname, e.g. `www.example.com`. */
29
+ name: string;
30
+ /**
31
+ * DNS host that publishes the hostname's records (see
32
+ * [DNS Adapters](/infrastructure-as-code/dns-adapters)), e.g.
33
+ * `Cloudflare.DNS.Adapter()`: the ACME challenge `CNAME` Fly lists in
34
+ * the Certificate's `dnsRequirements`, and `A` / `AAAA` records at
35
+ * the site's addresses. Omitted: publish the records yourself.
36
+ */
37
+ dns?: DNS.DnsConfig;
38
+ };
39
+ /** The hostname of a {@link WebsiteDomain}. */
40
+ export declare const websiteDomainName: (domain: WebsiteDomain | undefined) => string | undefined;
41
+ /**
42
+ * Publish a Fly website's records through `domain.dns`: the Certificate's
43
+ * ACME challenge `CNAME` (`CertificateValidation`) and `A` / `AAAA`
44
+ * records at the site's shared IPv4 plus any IPv6 Fly lists for the
45
+ * hostname (`Domain`). No-op for a plain hostname or an object without
46
+ * `dns`.
47
+ */
48
+ export declare const publishWebsiteDomainDns: (args: {
49
+ readonly domain: WebsiteDomain;
50
+ readonly certificate: Certificate;
51
+ readonly ip: IpAssignment;
52
+ }) => Effect.Effect<void, never, never>;
53
+ /**
54
+ * Props shared by every Fly framework website composite.
55
+ */
56
+ export interface FrameworkSiteProps {
57
+ /** Deployment strategy forwarded to the hosted Fly Service. */
58
+ deploy?: ServiceProps["deploy"];
59
+ /** Process shutdown policy. The framework server must handle the signal. */
60
+ shutdown?: ServiceProps["shutdown"];
61
+ /** Named Machine readiness checks. */
62
+ checks?: ServiceProps["checks"];
63
+ /** Override proxy services and their routing health checks. */
64
+ services?: ServiceProps["services"];
65
+ /**
66
+ * Project root directory (the directory containing `package.json`).
67
+ * @default "."
68
+ */
69
+ rootDir?: string;
70
+ /**
71
+ * Controls which files are hashed to decide whether the build re-runs.
72
+ * @default true
73
+ */
74
+ memo?: MemoOptions | boolean;
75
+ /**
76
+ * Parent Fly App. Accepts a `Fly.App` or an Effect that produces one.
77
+ * When omitted, a `Fly.App` is created under this site's namespace.
78
+ */
79
+ app?: Ref<App>;
80
+ /**
81
+ * Process environment for the hosted server. Not Cloudflare Worker
82
+ * bindings — values become Machine env vars. Accepts `Output`s
83
+ * (e.g. `VITE_API_URL: api.url`).
84
+ */
85
+ env?: Record<string, string | Redacted.Redacted<string> | Output.Output<string | undefined>>;
86
+ /**
87
+ * Static-asset routing (`notFoundHandling`, `htmlHandling`). Hashed
88
+ * client files are uploaded to Tigris regardless of this bag.
89
+ */
90
+ assets?: WebsiteAssetsProps;
91
+ /**
92
+ * Options for the local dev server that runs this site under
93
+ * `alchemy dev`.
94
+ */
95
+ dev?: ServerDevProps;
96
+ /**
97
+ * Optional custom hostname. Requests ACME (`Fly.Certificate`) on the
98
+ * App and `url` becomes `https://<domain>`.
99
+ *
100
+ * A string (or `{ name }`) leaves DNS to you. Set `dns` (e.g.
101
+ * `{ name: "www.example.com", dns: Cloudflare.DNS.Adapter() }`) to
102
+ * publish the ACME challenge `CNAME` and the `A` / `AAAA` records
103
+ * through that DNS host. See
104
+ * [DNS Adapters](/infrastructure-as-code/dns-adapters).
105
+ */
106
+ domain?: WebsiteDomain;
107
+ /**
108
+ * User-defined tags. Accepted for API parity; Fly Services do not
109
+ * surface resource tags.
110
+ */
111
+ tags?: Record<string, string>;
112
+ }
113
+ /** Per-framework wiring for {@link makeFrameworkSite}. */
114
+ export interface FrameworkSiteConfig {
115
+ /** Display name used in error messages (e.g. `"SvelteKit"`). */
116
+ name: string;
117
+ /** Framework-integration module specifier. */
118
+ framework: string;
119
+ /** Node deploy-target module specifier. */
120
+ target: string;
121
+ /**
122
+ * Framework-specific build options forwarded to the integration (e.g.
123
+ * `{ kit }`, `{ nuxt }`, `{ astro }`). Must be JSON-serializable.
124
+ */
125
+ options?: Record<string, unknown> | undefined;
126
+ /**
127
+ * Assets-only routing forwarded to the Node target (Vite SPA fallback).
128
+ * `spa` also publishes client files to Tigris at `/`.
129
+ */
130
+ static?: {
131
+ spa?: boolean;
132
+ errorPage?: string;
133
+ } | undefined;
134
+ /**
135
+ * Vocs/Waku: serve `about/index.html` at `/about`.
136
+ * @default "none"
137
+ */
138
+ htmlHandling?: "none" | "drop-trailing-slash";
139
+ /**
140
+ * Packages installed into the Machine image with `npm install` instead
141
+ * of bundling (Next.js needs `next`).
142
+ */
143
+ install?: string[] | undefined;
144
+ /**
145
+ * Skip baking `clientDirectory` at `/app/dist`. Next.js serves `.next`
146
+ * from the image root instead.
147
+ */
148
+ skipClientAssets?: boolean | undefined;
149
+ }
150
+ export interface FrameworkSite {
151
+ /**
152
+ * Public site URL. Local framework URL under `alchemy dev`;
153
+ * `https://{app}.fly.dev` (or `https://{domain}`) on deploy.
154
+ */
155
+ url: string | Output.Output<string | undefined> | undefined;
156
+ /** Parent Fly App. `undefined` during `alchemy dev`. */
157
+ app: App | undefined;
158
+ /** Hosted Fly Service. `undefined` during `alchemy dev`. */
159
+ service: Service | undefined;
160
+ /** Shared Anycast IPv4 so `{app}.fly.dev` answers. */
161
+ ip: IpAssignment | undefined;
162
+ /** ACME certificate when {@link FrameworkSiteProps.domain} is set. */
163
+ certificate: Certificate | undefined;
164
+ }
165
+ declare const FrameworkSiteError_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 & {
166
+ readonly _tag: "FrameworkSiteError";
167
+ } & Readonly<A>;
168
+ export declare class FrameworkSiteError extends FrameworkSiteError_base<{
169
+ readonly framework: string;
170
+ readonly message: string;
171
+ readonly cause?: unknown;
172
+ }> {
173
+ }
174
+ /**
175
+ * Shared implementation behind the Fly framework website composites:
176
+ * `Website.Server` runs the framework toolchain (dev sidecar / production
177
+ * build), then a live deploy hosts `serve-node.mjs` on a Fly.Service.
178
+ *
179
+ * Callers pipe `Namespace.push(id)` themselves (the composites do).
180
+ *
181
+ * Composite-level tagged errors (`FrameworkSiteError`, filesystem) are
182
+ * defects — `Alchemy.Stack` only admits `ConfigError` on the user
183
+ * effect, same as Cloudflare/AWS Website composites.
184
+ */
185
+ export declare const makeFrameworkSite: (id: string, props: FrameworkSiteProps, config: FrameworkSiteConfig) => Effect.Effect<{
186
+ url: Output.Output<string | undefined, never>;
187
+ app: undefined;
188
+ service: undefined;
189
+ ip: undefined;
190
+ certificate: undefined;
191
+ } | {
192
+ url: string | Output.Output<string, never>;
193
+ app: App;
194
+ service: Service;
195
+ ip: IpAssignment;
196
+ certificate: Certificate | undefined;
197
+ }, never, AlchemyContext | FileSystem.FileSystem | Path.Path | import("alchemy/Provider").Provider<FrameworkServer> | Providers>;
198
+ /** Push {@link id} then run {@link makeFrameworkSite}. */
199
+ export declare const frameworkSite: (id: string, props: FrameworkSiteProps, config: FrameworkSiteConfig) => Effect.Effect<{
200
+ url: Output.Output<string | undefined, never>;
201
+ app: undefined;
202
+ service: undefined;
203
+ ip: undefined;
204
+ certificate: undefined;
205
+ } | {
206
+ url: string | Output.Output<string, never>;
207
+ app: App;
208
+ service: Service;
209
+ ip: IpAssignment;
210
+ certificate: Certificate | undefined;
211
+ }, never, AlchemyContext | FileSystem.FileSystem | Path.Path | import("alchemy/Provider").Provider<FrameworkServer> | Providers>;
212
+ //# sourceMappingURL=FrameworkSite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrameworkSite.d.ts","sourceRoot":"","sources":["../../src/Website/FrameworkSite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ import { AlchemyContext } from "alchemy/AlchemyContext";
2
+ import * as DNS from "alchemy/DNS/Adapter";
3
+ import * as Namespace from "alchemy/Namespace";
4
+ import * as Output from "alchemy/Output";
5
+ import { ProviderModePolicy } from "alchemy/ProviderMode";
6
+ import { initialCwd } from "alchemy/Util/Node";
7
+ import { staticConfigFromAssets, } from "alchemy/Website/assets";
8
+ import { packSiteExtraFiles } from "alchemy/Website/packExtraFiles";
9
+ import { Server as FrameworkServer } from "alchemy/Website/Server";
10
+ import * as Data from "effect/Data";
11
+ import * as Effect from "effect/Effect";
12
+ import * as FileSystem from "effect/FileSystem";
13
+ import * as Path from "effect/Path";
14
+ import * as Redacted from "effect/Redacted";
15
+ import { App } from "../App.js";
16
+ import { Bucket } from "../Bucket.js";
17
+ import { Certificate } from "../Certificate.js";
18
+ import { IpAssignment } from "../IpAssignment.js";
19
+ import { Service } from "../Service.js";
20
+ import { AssetDeployment } from "./AssetDeployment.js";
21
+ export { staticConfigFromAssets };
22
+ /** The hostname of a {@link WebsiteDomain}. */
23
+ export const websiteDomainName = (domain) => domain === undefined || typeof domain === "string" ? domain : domain.name;
24
+ const acmeChallengeRecords = (hostname, requirements) => {
25
+ const challenge = requirements?.acmeChallenge;
26
+ if (challenge?.target === undefined || challenge.target.length === 0) {
27
+ return [];
28
+ }
29
+ const expected = `_acme-challenge.${hostname}`;
30
+ const name = challenge.name !== undefined &&
31
+ DNS.normalizeDnsName(challenge.name).endsWith(DNS.normalizeDnsName(hostname))
32
+ ? challenge.name
33
+ : expected;
34
+ return [{ name, type: "CNAME", value: challenge.target }];
35
+ };
36
+ /**
37
+ * Publish a Fly website's records through `domain.dns`: the Certificate's
38
+ * ACME challenge `CNAME` (`CertificateValidation`) and `A` / `AAAA`
39
+ * records at the site's shared IPv4 plus any IPv6 Fly lists for the
40
+ * hostname (`Domain`). No-op for a plain hostname or an object without
41
+ * `dns`.
42
+ */
43
+ export const publishWebsiteDomainDns = Effect.fn("Fly.Website.publishDomainDns")(function* (args) {
44
+ if (typeof args.domain === "string" || args.domain.dns === undefined) {
45
+ return;
46
+ }
47
+ const dns = yield* DNS.resolve(args.domain.dns);
48
+ const name = args.domain.name;
49
+ yield* dns.records("CertificateValidation", {
50
+ records: Output.map(args.certificate.dnsRequirements, (requirements) => acmeChallengeRecords(name, requirements)),
51
+ });
52
+ yield* dns.alias("Domain", {
53
+ name,
54
+ target: {
55
+ ipv4: Output.map(args.ip.ip, (ip) => [ip]),
56
+ ipv6: Output.map(args.certificate.dnsRequirements, (requirements) => requirements?.aaaa ?? []),
57
+ },
58
+ });
59
+ });
60
+ export class FrameworkSiteError extends Data.TaggedError("FrameworkSiteError") {
61
+ }
62
+ const DEFAULT_PORT = 3000;
63
+ const resolveRef = (ref) => Effect.isEffect(ref) ? ref : Effect.succeed(ref);
64
+ const envRecord = (env) => {
65
+ if (env === undefined)
66
+ return undefined;
67
+ return Object.fromEntries(Object.entries(env).map(([key, value]) => [
68
+ key,
69
+ Redacted.isRedacted(value) ? Redacted.value(value) : value,
70
+ ]));
71
+ };
72
+ const runFrameworkSite = Effect.fn("Fly.Website.FrameworkSite")(function* (_id, props, config) {
73
+ const ctx = yield* AlchemyContext;
74
+ const remoted = yield* ProviderModePolicy;
75
+ const isLocal = ctx.dev && remoted !== true;
76
+ const path = yield* Path.Path;
77
+ const fs = yield* FileSystem.FileSystem;
78
+ const build = yield* FrameworkServer("Build", {
79
+ framework: config.framework,
80
+ target: config.target,
81
+ root: props.rootDir,
82
+ env: envRecord(props.env),
83
+ options: config.options,
84
+ memo: props.memo,
85
+ dev: props.dev,
86
+ });
87
+ if (isLocal) {
88
+ return {
89
+ url: build.url,
90
+ app: undefined,
91
+ service: undefined,
92
+ ip: undefined,
93
+ certificate: undefined,
94
+ };
95
+ }
96
+ // The build runs at APPLY time (`Website.Server` is a resource), so its
97
+ // attributes are Outputs here — derive every deploy input lazily and let
98
+ // the engine resolve them once the build has produced real paths. Reading
99
+ // `build.distDir` eagerly in the composite body would observe an Output
100
+ // proxy, not a string.
101
+ const buildOut = Output.mapEffect(([serverEntry, distDir]) => Effect.gen(function* () {
102
+ if (serverEntry === undefined || distDir === undefined) {
103
+ return yield* Effect.die(new FrameworkSiteError({
104
+ framework: config.framework,
105
+ message: `The ${config.name} build produced no Node serve entry (serverModules[0]). The Node deploy target should write serve-node.mjs.`,
106
+ }));
107
+ }
108
+ const main = path.resolve(initialCwd, serverEntry);
109
+ if (!(yield* fs.exists(main).pipe(Effect.orElseSucceed(() => false)))) {
110
+ return yield* Effect.die(new FrameworkSiteError({
111
+ framework: config.framework,
112
+ message: `The ${config.name} build produced no server entry at ${main}`,
113
+ }));
114
+ }
115
+ return { distDir: path.resolve(initialCwd, distDir), main };
116
+ }))(Output.all(build.serverEntry, build.distDir));
117
+ const main = Output.map(buildOut, (out) => out.main);
118
+ const extraFiles = Output.mapEffect((out) => packSiteExtraFiles(out.distDir, config.skipClientAssets === true ? "next" : "client"))(buildOut);
119
+ const app = props.app !== undefined ? yield* resolveRef(props.app) : yield* App("App");
120
+ const ip = yield* IpAssignment("Shared", {
121
+ app,
122
+ type: "shared_v4",
123
+ });
124
+ // SPA: hashed `/assets` at Tigris. HTML and unknown paths stay on
125
+ // origin (NodeServe `notFoundHandling: "spa"`). Intercepting `/` with
126
+ // Tigris hangs SPA fallbacks — Fly does not rewrite `/counter/42` to
127
+ // `index.html`.
128
+ let statics;
129
+ if (config.static?.spa === true) {
130
+ const clientDir = Output.map(build.clientDir, (dir) => {
131
+ if (dir === undefined) {
132
+ throw new FrameworkSiteError({
133
+ framework: config.framework,
134
+ message: `The ${config.name} build produced no client assets directory`,
135
+ });
136
+ }
137
+ return path.resolve(initialCwd, dir);
138
+ });
139
+ const bucket = yield* Bucket("Assets", { public: true });
140
+ yield* AssetDeployment("Files", {
141
+ bucket,
142
+ sourcePath: clientDir,
143
+ purge: true,
144
+ });
145
+ statics = Output.mapEffect(([clientDir, bucketName]) => Effect.gen(function* () {
146
+ const assetsDir = path.join(clientDir, "assets");
147
+ const exists = yield* fs.exists(assetsDir).pipe(Effect.orElseSucceed(() => false));
148
+ return exists
149
+ ? [
150
+ {
151
+ guestPath: "/assets",
152
+ urlPrefix: "/assets",
153
+ tigrisBucket: bucketName,
154
+ },
155
+ ]
156
+ : undefined;
157
+ }))(Output.all(clientDir, bucket.name));
158
+ }
159
+ const service = yield* Service("Service", {
160
+ app,
161
+ deploy: props.deploy,
162
+ shutdown: props.shutdown,
163
+ checks: props.checks,
164
+ services: props.services,
165
+ main: main,
166
+ port: DEFAULT_PORT,
167
+ // Node + nitro SSR needs more than the Machine default 256MB.
168
+ guest: { memoryMb: 512 },
169
+ isExternal: true,
170
+ env: props.env,
171
+ extraFiles: extraFiles,
172
+ statics: statics,
173
+ build: config.install !== undefined && config.install.length > 0
174
+ ? { install: config.install }
175
+ : undefined,
176
+ });
177
+ const domainName = websiteDomainName(props.domain);
178
+ const certificate = domainName !== undefined
179
+ ? yield* Certificate("Certificate", {
180
+ app,
181
+ hostname: domainName,
182
+ kind: "acme",
183
+ })
184
+ : undefined;
185
+ if (props.domain !== undefined && certificate !== undefined) {
186
+ yield* publishWebsiteDomainDns({ domain: props.domain, certificate, ip });
187
+ }
188
+ const url = domainName !== undefined ? `https://${domainName}` : app.url;
189
+ return { url, app, service, ip, certificate };
190
+ });
191
+ /**
192
+ * Shared implementation behind the Fly framework website composites:
193
+ * `Website.Server` runs the framework toolchain (dev sidecar / production
194
+ * build), then a live deploy hosts `serve-node.mjs` on a Fly.Service.
195
+ *
196
+ * Callers pipe `Namespace.push(id)` themselves (the composites do).
197
+ *
198
+ * Composite-level tagged errors (`FrameworkSiteError`, filesystem) are
199
+ * defects — `Alchemy.Stack` only admits `ConfigError` on the user
200
+ * effect, same as Cloudflare/AWS Website composites.
201
+ */
202
+ export const makeFrameworkSite = (id, props, config) => runFrameworkSite(id, props, config).pipe(Effect.orDie);
203
+ /** Push {@link id} then run {@link makeFrameworkSite}. */
204
+ export const frameworkSite = (id, props, config) => makeFrameworkSite(id, props, config).pipe(Namespace.push(id));
205
+ //# sourceMappingURL=FrameworkSite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrameworkSite.js","sourceRoot":"","sources":["../../src/Website/FrameworkSite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { type FrameworkSiteProps } from "./FrameworkSite.ts";
2
+ /**
3
+ * The Next.js-on-Node framework module (`next build` + a custom
4
+ * `next({ dev: false })` server). Not OpenNext.
5
+ */
6
+ export declare const NEXTJS_NODE_FRAMEWORK_SPECIFIER = "@alchemy.run/frontend-frameworks/nextjs/node";
7
+ export interface NextjsProps extends FrameworkSiteProps {
8
+ }
9
+ /**
10
+ * Deploy a Next.js application to Fly as a long-running Node process:
11
+ * `next build`, then a serve entry that `import("next")` +
12
+ * `next({ dev: false }).prepare()` + `getRequestHandler()`. The `.next`
13
+ * output (and `public/` when present) is baked into the image; `next` is
14
+ * installed unbundled.
15
+ *
16
+ * Do not use OpenNext AWS/CF wrappers — those are Lambda/workerd.
17
+ *
18
+ * During `alchemy dev` the site is `next dev` and no cloud resources are
19
+ * declared; `Alchemy.remote()` opts back into the live Service path.
20
+ *
21
+ *
22
+ * ### Creating Next.js Sites
23
+ * **Example:** Basic Next.js App
24
+ * ```typescript
25
+ * const site = yield* Fly.Website.Nextjs("Web", {
26
+ * rootDir: "./app",
27
+ * });
28
+ * ```
29
+ *
30
+ * **Example:** Custom Domain
31
+ * ```typescript
32
+ * const site = yield* Fly.Website.Nextjs("Web", {
33
+ * rootDir: "./app",
34
+ * domain: "app.example.com",
35
+ * });
36
+ * ```
37
+ *
38
+ * @resource
39
+ * @product Website
40
+ */
41
+ export declare const Nextjs: (id: string, props?: NextjsProps) => import("effect/Effect").Effect<{
42
+ url: import("alchemy/Output").Output<string | undefined, never>;
43
+ app: undefined;
44
+ service: undefined;
45
+ ip: undefined;
46
+ certificate: undefined;
47
+ } | {
48
+ url: string | import("alchemy/Output").Output<string, never>;
49
+ app: import("../App.ts").App;
50
+ service: import("../Service.ts").Service;
51
+ ip: import("../IpAssignment.ts").IpAssignment;
52
+ certificate: import("../Certificate.ts").Certificate | undefined;
53
+ }, never, import("alchemy/AlchemyContext").AlchemyContext | import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("alchemy/Provider").Provider<import("alchemy/Website/Server").Server> | import("../Providers.ts").Providers>;
54
+ //# sourceMappingURL=Nextjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Nextjs.d.ts","sourceRoot":"","sources":["../../src/Website/Nextjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,+BAA+B,iDAAiD,CAAC;AAE9F,MAAM,WAAW,WAAY,SAAQ,kBAAkB;CAAG;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,MAAM,OAAQ,MAAM,UAAS,WAAW;;;;;;;;;;;;qPAOjD,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { frameworkSite } from "./FrameworkSite.js";
2
+ /**
3
+ * The Next.js-on-Node framework module (`next build` + a custom
4
+ * `next({ dev: false })` server). Not OpenNext.
5
+ */
6
+ export const NEXTJS_NODE_FRAMEWORK_SPECIFIER = "@alchemy.run/frontend-frameworks/nextjs/node";
7
+ /**
8
+ * Deploy a Next.js application to Fly as a long-running Node process:
9
+ * `next build`, then a serve entry that `import("next")` +
10
+ * `next({ dev: false }).prepare()` + `getRequestHandler()`. The `.next`
11
+ * output (and `public/` when present) is baked into the image; `next` is
12
+ * installed unbundled.
13
+ *
14
+ * Do not use OpenNext AWS/CF wrappers — those are Lambda/workerd.
15
+ *
16
+ * During `alchemy dev` the site is `next dev` and no cloud resources are
17
+ * declared; `Alchemy.remote()` opts back into the live Service path.
18
+ *
19
+ *
20
+ * ### Creating Next.js Sites
21
+ * **Example:** Basic Next.js App
22
+ * ```typescript
23
+ * const site = yield* Fly.Website.Nextjs("Web", {
24
+ * rootDir: "./app",
25
+ * });
26
+ * ```
27
+ *
28
+ * **Example:** Custom Domain
29
+ * ```typescript
30
+ * const site = yield* Fly.Website.Nextjs("Web", {
31
+ * rootDir: "./app",
32
+ * domain: "app.example.com",
33
+ * });
34
+ * ```
35
+ *
36
+ * @resource
37
+ * @product Website
38
+ */
39
+ export const Nextjs = (id, props = {}) => frameworkSite(id, props, {
40
+ name: "Next.js",
41
+ framework: NEXTJS_NODE_FRAMEWORK_SPECIFIER,
42
+ target: NEXTJS_NODE_FRAMEWORK_SPECIFIER,
43
+ install: ["next", "react", "react-dom"],
44
+ skipClientAssets: true,
45
+ });
46
+ //# sourceMappingURL=Nextjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Nextjs.js","sourceRoot":"","sources":["../../src/Website/Nextjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;AAE5E;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,8CAA8C,CAAC;AAI9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,KAAK,GAAgB,EAAE,EAAE,EAAE,CAC5D,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE;IACvB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,+BAA+B;IAC1C,MAAM,EAAE,+BAA+B;IACvC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC;IACvC,gBAAgB,EAAE,IAAI;CACvB,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { type FrameworkSiteProps } from "./FrameworkSite.ts";
2
+ /** The framework-integration package that drives the Nuxt build. */
3
+ export declare const NUXT_FRAMEWORK_SPECIFIER = "@alchemy.run/frontend-frameworks/nuxt";
4
+ /** The Node container deploy target for the Nuxt build. */
5
+ export declare const NUXT_NODE_TARGET_SPECIFIER = "@alchemy.run/frontend-frameworks/nuxt/node";
6
+ export interface NuxtProps extends FrameworkSiteProps {
7
+ /**
8
+ * Nuxt config overrides merged over the project's own `nuxt.config.ts`
9
+ * (highest-priority layer). `nitro.preset` is owned by the Node deploy
10
+ * target and may not be set here.
11
+ */
12
+ nuxt?: Record<string, unknown>;
13
+ }
14
+ /**
15
+ * Deploy a Nuxt application to Fly: the nitro Node server on a Machine,
16
+ * static assets (prerendered pages included) baked into the image.
17
+ *
18
+ *
19
+ * ### Creating Nuxt Sites
20
+ * **Example:** Basic Nuxt App
21
+ * ```typescript
22
+ * const site = yield* Fly.Website.Nuxt("Web", {
23
+ * rootDir: "./app",
24
+ * });
25
+ * ```
26
+ *
27
+ * **Example:** Custom Domain
28
+ * ```typescript
29
+ * const site = yield* Fly.Website.Nuxt("Web", {
30
+ * rootDir: "./app",
31
+ * domain: "app.example.com",
32
+ * });
33
+ * ```
34
+ *
35
+ * @resource
36
+ * @product Website
37
+ */
38
+ export declare const Nuxt: (id: string, props?: NuxtProps) => import("effect/Effect").Effect<{
39
+ url: import("alchemy/Output").Output<string | undefined, never>;
40
+ app: undefined;
41
+ service: undefined;
42
+ ip: undefined;
43
+ certificate: undefined;
44
+ } | {
45
+ url: string | import("alchemy/Output").Output<string, never>;
46
+ app: import("../App.ts").App;
47
+ service: import("../Service.ts").Service;
48
+ ip: import("../IpAssignment.ts").IpAssignment;
49
+ certificate: import("../Certificate.ts").Certificate | undefined;
50
+ }, never, import("alchemy/AlchemyContext").AlchemyContext | import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("alchemy/Provider").Provider<import("alchemy/Website/Server").Server> | import("../Providers.ts").Providers>;
51
+ //# sourceMappingURL=Nuxt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Nuxt.d.ts","sourceRoot":"","sources":["../../src/Website/Nuxt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,0CAA0C,CAAC;AAEhF,2DAA2D;AAC3D,eAAO,MAAM,0BAA0B,+CAA+C,CAAC;AAEvF,MAAM,WAAW,SAAU,SAAQ,kBAAkB;IACnD;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,OAAQ,MAAM,UAAS,SAAS;;;;;;;;;;;;qPAM7C,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { frameworkSite } from "./FrameworkSite.js";
2
+ /** The framework-integration package that drives the Nuxt build. */
3
+ export const NUXT_FRAMEWORK_SPECIFIER = "@alchemy.run/frontend-frameworks/nuxt";
4
+ /** The Node container deploy target for the Nuxt build. */
5
+ export const NUXT_NODE_TARGET_SPECIFIER = "@alchemy.run/frontend-frameworks/nuxt/node";
6
+ /**
7
+ * Deploy a Nuxt application to Fly: the nitro Node server on a Machine,
8
+ * static assets (prerendered pages included) baked into the image.
9
+ *
10
+ *
11
+ * ### Creating Nuxt Sites
12
+ * **Example:** Basic Nuxt App
13
+ * ```typescript
14
+ * const site = yield* Fly.Website.Nuxt("Web", {
15
+ * rootDir: "./app",
16
+ * });
17
+ * ```
18
+ *
19
+ * **Example:** Custom Domain
20
+ * ```typescript
21
+ * const site = yield* Fly.Website.Nuxt("Web", {
22
+ * rootDir: "./app",
23
+ * domain: "app.example.com",
24
+ * });
25
+ * ```
26
+ *
27
+ * @resource
28
+ * @product Website
29
+ */
30
+ export const Nuxt = (id, props = {}) => frameworkSite(id, props, {
31
+ name: "Nuxt",
32
+ framework: NUXT_FRAMEWORK_SPECIFIER,
33
+ target: NUXT_NODE_TARGET_SPECIFIER,
34
+ options: props.nuxt ? { nuxt: props.nuxt } : undefined,
35
+ });
36
+ //# sourceMappingURL=Nuxt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Nuxt.js","sourceRoot":"","sources":["../../src/Website/Nuxt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;AAE5E,oEAAoE;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,uCAAuC,CAAC;AAEhF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,4CAA4C,CAAC;AAWvF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,KAAK,GAAc,EAAE,EAAE,EAAE,CACxD,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE;IACvB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,wBAAwB;IACnC,MAAM,EAAE,0BAA0B;IAClC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;CACvD,CAAC,CAAC"}