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