alchemy 0.62.3 → 0.63.1
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/bin/alchemy.js +1517 -1203
- package/bin/commands/deploy.ts +2 -0
- package/bin/commands/dev.ts +2 -0
- package/bin/commands/init.ts +1 -1
- package/bin/services/execute-alchemy.ts +11 -0
- package/bin/services/github-workflow.ts +2 -2
- package/bin/services/template-manager.ts +2 -0
- package/bin/types.ts +2 -1
- package/lib/alchemy.d.ts +6 -22
- package/lib/alchemy.d.ts.map +1 -1
- package/lib/alchemy.js +65 -169
- package/lib/alchemy.js.map +1 -1
- package/lib/apply.d.ts +0 -2
- package/lib/apply.d.ts.map +1 -1
- package/lib/apply.js +2 -16
- package/lib/apply.js.map +1 -1
- package/lib/aws/account-id.d.ts.map +1 -1
- package/lib/aws/account-id.js +3 -2
- package/lib/aws/account-id.js.map +1 -1
- package/lib/aws/bucket.d.ts +8 -2
- package/lib/aws/bucket.d.ts.map +1 -1
- package/lib/aws/bucket.js +21 -14
- package/lib/aws/bucket.js.map +1 -1
- package/lib/aws/ec2/security-group.d.ts +8 -2
- package/lib/aws/ec2/security-group.d.ts.map +1 -1
- package/lib/aws/ec2/security-group.js +7 -2
- package/lib/aws/ec2/security-group.js.map +1 -1
- package/lib/aws/function.d.ts +9 -3
- package/lib/aws/function.d.ts.map +1 -1
- package/lib/aws/function.js +35 -26
- package/lib/aws/function.js.map +1 -1
- package/lib/aws/policy-attachment.d.ts.map +1 -1
- package/lib/aws/policy-attachment.js +2 -1
- package/lib/aws/policy-attachment.js.map +1 -1
- package/lib/aws/policy.d.ts +8 -2
- package/lib/aws/policy.d.ts.map +1 -1
- package/lib/aws/policy.js +13 -4
- package/lib/aws/policy.js.map +1 -1
- package/lib/aws/queue.d.ts +8 -2
- package/lib/aws/queue.d.ts.map +1 -1
- package/lib/aws/queue.js +22 -14
- package/lib/aws/queue.js.map +1 -1
- package/lib/aws/role.d.ts +8 -2
- package/lib/aws/role.d.ts.map +1 -1
- package/lib/aws/role.js +10 -3
- package/lib/aws/role.js.map +1 -1
- package/lib/aws/ses.d.ts +1 -1
- package/lib/aws/ses.d.ts.map +1 -1
- package/lib/aws/ses.js +2 -1
- package/lib/aws/ses.js.map +1 -1
- package/lib/aws/ssm-parameter.d.ts +8 -2
- package/lib/aws/ssm-parameter.d.ts.map +1 -1
- package/lib/aws/ssm-parameter.js +15 -10
- package/lib/aws/ssm-parameter.js.map +1 -1
- package/lib/aws/table.d.ts +8 -2
- package/lib/aws/table.d.ts.map +1 -1
- package/lib/aws/table.js +17 -9
- package/lib/aws/table.js.map +1 -1
- package/lib/cloudflare/account-api-token.d.ts +2 -2
- package/lib/cloudflare/account-api-token.d.ts.map +1 -1
- package/lib/cloudflare/account-api-token.js +7 -6
- package/lib/cloudflare/account-api-token.js.map +1 -1
- package/lib/cloudflare/ai-gateway.d.ts +9 -4
- package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
- package/lib/cloudflare/ai-gateway.js +20 -24
- package/lib/cloudflare/ai-gateway.js.map +1 -1
- package/lib/cloudflare/api-schema.d.ts +2 -2
- package/lib/cloudflare/api-schema.d.ts.map +1 -1
- package/lib/cloudflare/api-schema.js +6 -2
- package/lib/cloudflare/api-schema.js.map +1 -1
- package/lib/cloudflare/api-shield.d.ts +5 -1
- package/lib/cloudflare/api-shield.d.ts.map +1 -1
- package/lib/cloudflare/api-shield.js +6 -1
- package/lib/cloudflare/api-shield.js.map +1 -1
- package/lib/cloudflare/assets.d.ts +1 -1
- package/lib/cloudflare/assets.d.ts.map +1 -1
- package/lib/cloudflare/astro/astro.d.ts.map +1 -1
- package/lib/cloudflare/astro/astro.js +3 -1
- package/lib/cloudflare/astro/astro.js.map +1 -1
- package/lib/cloudflare/astro/plugin.d.ts +2 -1
- package/lib/cloudflare/astro/plugin.d.ts.map +1 -1
- package/lib/cloudflare/astro/plugin.js.map +1 -1
- package/lib/cloudflare/bindings.d.ts +2 -2
- package/lib/cloudflare/bindings.d.ts.map +1 -1
- package/lib/cloudflare/bound.d.ts +1 -1
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/bucket.d.ts +120 -1
- package/lib/cloudflare/bucket.d.ts.map +1 -1
- package/lib/cloudflare/bucket.js +80 -2
- package/lib/cloudflare/bucket.js.map +1 -1
- package/lib/cloudflare/cloudflare-env-proxy.js +1 -1
- package/lib/cloudflare/cloudflare-env-proxy.js.map +1 -1
- package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
- package/lib/cloudflare/compatibility-date.gen.js +1 -1
- package/lib/cloudflare/container.d.ts +10 -4
- package/lib/cloudflare/container.d.ts.map +1 -1
- package/lib/cloudflare/container.js +12 -9
- package/lib/cloudflare/container.js.map +1 -1
- package/lib/cloudflare/custom-domain.js +2 -1
- package/lib/cloudflare/custom-domain.js.map +1 -1
- package/lib/cloudflare/d1-database.d.ts +1 -1
- package/lib/cloudflare/d1-database.d.ts.map +1 -1
- package/lib/cloudflare/d1-database.js +6 -2
- package/lib/cloudflare/d1-database.js.map +1 -1
- package/lib/cloudflare/dispatch-namespace.d.ts +2 -0
- package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -1
- package/lib/cloudflare/dispatch-namespace.js +7 -5
- package/lib/cloudflare/dispatch-namespace.js.map +1 -1
- package/lib/cloudflare/durable-object-namespace.d.ts.map +1 -1
- package/lib/cloudflare/durable-object-namespace.js.map +1 -1
- package/lib/cloudflare/hyperdrive.d.ts +7 -1
- package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
- package/lib/cloudflare/hyperdrive.js +3 -2
- package/lib/cloudflare/hyperdrive.js.map +1 -1
- package/lib/cloudflare/kv-namespace.d.ts +3 -0
- package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
- package/lib/cloudflare/kv-namespace.js +11 -2
- package/lib/cloudflare/kv-namespace.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +3 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
- package/lib/cloudflare/miniflare/paths.d.ts +4 -0
- package/lib/cloudflare/miniflare/paths.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/paths.js +11 -0
- package/lib/cloudflare/miniflare/paths.js.map +1 -1
- package/lib/cloudflare/pipeline.d.ts +14 -3
- package/lib/cloudflare/pipeline.d.ts.map +1 -1
- package/lib/cloudflare/pipeline.js +31 -2
- package/lib/cloudflare/pipeline.js.map +1 -1
- package/lib/cloudflare/queue-consumer.js +1 -1
- package/lib/cloudflare/queue-consumer.js.map +1 -1
- package/lib/cloudflare/queue.d.ts +4 -2
- package/lib/cloudflare/queue.d.ts.map +1 -1
- package/lib/cloudflare/queue.js +13 -9
- package/lib/cloudflare/queue.js.map +1 -1
- package/lib/cloudflare/react-router/plugin.d.ts +1 -1
- package/lib/cloudflare/react-router/plugin.d.ts.map +1 -1
- package/lib/cloudflare/react-router/react-router.d.ts.map +1 -1
- package/lib/cloudflare/react-router/react-router.js +32 -2
- package/lib/cloudflare/react-router/react-router.js.map +1 -1
- package/lib/cloudflare/redwood/plugin.d.ts +2 -1
- package/lib/cloudflare/redwood/plugin.d.ts.map +1 -1
- package/lib/cloudflare/redwood/plugin.js.map +1 -1
- package/lib/cloudflare/route.js +1 -1
- package/lib/cloudflare/route.js.map +1 -1
- package/lib/cloudflare/ruleset.d.ts +3 -1
- package/lib/cloudflare/ruleset.d.ts.map +1 -1
- package/lib/cloudflare/ruleset.js +3 -2
- package/lib/cloudflare/ruleset.js.map +1 -1
- package/lib/cloudflare/secret.d.ts +6 -23
- package/lib/cloudflare/secret.d.ts.map +1 -1
- package/lib/cloudflare/secret.js +8 -4
- package/lib/cloudflare/secret.js.map +1 -1
- package/lib/cloudflare/secrets-store.d.ts +1 -1
- package/lib/cloudflare/secrets-store.d.ts.map +1 -1
- package/lib/cloudflare/secrets-store.js +5 -2
- package/lib/cloudflare/secrets-store.js.map +1 -1
- package/lib/cloudflare/tunnel.d.ts +5 -1
- package/lib/cloudflare/tunnel.d.ts.map +1 -1
- package/lib/cloudflare/tunnel.js +5 -1
- package/lib/cloudflare/tunnel.js.map +1 -1
- package/lib/cloudflare/vectorize-index.d.ts +7 -1
- package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
- package/lib/cloudflare/vectorize-index.js +5 -2
- package/lib/cloudflare/vectorize-index.js.map +1 -1
- package/lib/cloudflare/vite/plugin.d.ts +2 -1
- package/lib/cloudflare/vite/plugin.d.ts.map +1 -1
- package/lib/cloudflare/vite/plugin.js.map +1 -1
- package/lib/cloudflare/website.js +1 -1
- package/lib/cloudflare/website.js.map +1 -1
- package/lib/cloudflare/worker-metadata.js +1 -1
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +1 -1
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +12 -7
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/wrangler.json.d.ts +1 -1
- package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
- package/lib/cloudflare/wrangler.json.js +5 -3
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/docker/container.d.ts +6 -0
- package/lib/docker/container.d.ts.map +1 -1
- package/lib/docker/container.js +5 -1
- package/lib/docker/container.js.map +1 -1
- package/lib/docker/network.d.ts +8 -2
- package/lib/docker/network.d.ts.map +1 -1
- package/lib/docker/network.js +7 -2
- package/lib/docker/network.js.map +1 -1
- package/lib/docker/volume.d.ts +8 -2
- package/lib/docker/volume.d.ts.map +1 -1
- package/lib/docker/volume.js +6 -4
- package/lib/docker/volume.js.map +1 -1
- package/lib/esbuild/bundle.d.ts +1 -1
- package/lib/fs/index.d.ts +0 -8
- package/lib/fs/index.d.ts.map +1 -1
- package/lib/fs/index.js +0 -8
- package/lib/fs/index.js.map +1 -1
- package/lib/github/client.d.ts +1 -1
- package/lib/github/client.d.ts.map +1 -1
- package/lib/github/client.js +2 -1
- package/lib/github/client.js.map +1 -1
- package/lib/github/repository-environment.d.ts +8 -2
- package/lib/github/repository-environment.d.ts.map +1 -1
- package/lib/github/repository-environment.js +16 -12
- package/lib/github/repository-environment.js.map +1 -1
- package/lib/neon/project.d.ts +7 -1
- package/lib/neon/project.d.ts.map +1 -1
- package/lib/neon/project.js +14 -11
- package/lib/neon/project.js.map +1 -1
- package/lib/planetscale/branch.d.ts +4 -2
- package/lib/planetscale/branch.d.ts.map +1 -1
- package/lib/planetscale/branch.js +18 -12
- package/lib/planetscale/branch.js.map +1 -1
- package/lib/planetscale/database.d.ts +8 -2
- package/lib/planetscale/database.d.ts.map +1 -1
- package/lib/planetscale/database.js +24 -16
- package/lib/planetscale/database.js.map +1 -1
- package/lib/planetscale/password.d.ts +8 -2
- package/lib/planetscale/password.d.ts.map +1 -1
- package/lib/planetscale/password.js +2 -2
- package/lib/planetscale/password.js.map +1 -1
- package/lib/resource.d.ts +0 -2
- package/lib/resource.d.ts.map +1 -1
- package/lib/resource.js +1 -9
- package/lib/resource.js.map +1 -1
- package/lib/scope.d.ts +9 -3
- package/lib/scope.d.ts.map +1 -1
- package/lib/scope.js +21 -34
- package/lib/scope.js.map +1 -1
- package/lib/sentry/client-key.d.ts +7 -1
- package/lib/sentry/client-key.d.ts.map +1 -1
- package/lib/sentry/client-key.js +45 -6
- package/lib/sentry/client-key.js.map +1 -1
- package/lib/sentry/project.d.ts +8 -2
- package/lib/sentry/project.d.ts.map +1 -1
- package/lib/sentry/project.js +35 -5
- package/lib/sentry/project.js.map +1 -1
- package/lib/sentry/team.d.ts +8 -2
- package/lib/sentry/team.d.ts.map +1 -1
- package/lib/sentry/team.js +36 -6
- package/lib/sentry/team.js.map +1 -1
- package/lib/serde.d.ts +0 -5
- package/lib/serde.d.ts.map +1 -1
- package/lib/serde.js +0 -28
- package/lib/serde.js.map +1 -1
- package/lib/state/d1-state-store.d.ts +1 -1
- package/lib/state/d1-state-store.d.ts.map +1 -1
- package/lib/state/d1-state-store.js +5 -5
- package/lib/state/d1-state-store.js.map +1 -1
- package/lib/state/sqlite-state-store.d.ts.map +1 -1
- package/lib/state/sqlite-state-store.js +7 -11
- package/lib/state/sqlite-state-store.js.map +1 -1
- package/lib/stripe/card.d.ts.map +1 -1
- package/lib/stripe/card.js +3 -2
- package/lib/stripe/card.js.map +1 -1
- package/lib/stripe/client.d.ts +2 -2
- package/lib/stripe/client.d.ts.map +1 -1
- package/lib/stripe/client.js +4 -3
- package/lib/stripe/client.js.map +1 -1
- package/lib/stripe/coupon.d.ts.map +1 -1
- package/lib/stripe/coupon.js +4 -3
- package/lib/stripe/coupon.js.map +1 -1
- package/lib/stripe/customer.js +2 -2
- package/lib/stripe/customer.js.map +1 -1
- package/lib/stripe/entitlements-feature.d.ts.map +1 -1
- package/lib/stripe/entitlements-feature.js +3 -2
- package/lib/stripe/entitlements-feature.js.map +1 -1
- package/lib/stripe/file.d.ts.map +1 -1
- package/lib/stripe/file.js +3 -2
- package/lib/stripe/file.js.map +1 -1
- package/lib/stripe/meter.js +2 -2
- package/lib/stripe/meter.js.map +1 -1
- package/lib/stripe/portal-configuration.d.ts.map +1 -1
- package/lib/stripe/portal-configuration.js +3 -2
- package/lib/stripe/portal-configuration.js.map +1 -1
- package/lib/stripe/price.d.ts.map +1 -1
- package/lib/stripe/price.js +3 -2
- package/lib/stripe/price.js.map +1 -1
- package/lib/stripe/product-feature.d.ts.map +1 -1
- package/lib/stripe/product-feature.js +3 -2
- package/lib/stripe/product-feature.js.map +1 -1
- package/lib/stripe/product.d.ts.map +1 -1
- package/lib/stripe/product.js +3 -2
- package/lib/stripe/product.js.map +1 -1
- package/lib/stripe/promotion-code.d.ts.map +1 -1
- package/lib/stripe/promotion-code.js +3 -2
- package/lib/stripe/promotion-code.js.map +1 -1
- package/lib/stripe/shipping-rate.d.ts.map +1 -1
- package/lib/stripe/shipping-rate.js +4 -3
- package/lib/stripe/shipping-rate.js.map +1 -1
- package/lib/stripe/tax-rate.d.ts.map +1 -1
- package/lib/stripe/tax-rate.js +3 -2
- package/lib/stripe/tax-rate.js.map +1 -1
- package/lib/stripe/webhook.d.ts.map +1 -1
- package/lib/stripe/webhook.js +4 -3
- package/lib/stripe/webhook.js.map +1 -1
- package/lib/test/vitest.d.ts.map +1 -1
- package/lib/test/vitest.js +1 -0
- package/lib/test/vitest.js.map +1 -1
- package/lib/upstash/redis.d.ts +8 -2
- package/lib/upstash/redis.d.ts.map +1 -1
- package/lib/upstash/redis.js +6 -5
- package/lib/upstash/redis.js.map +1 -1
- package/lib/util/idempotent-spawn.d.ts.map +1 -1
- package/lib/util/idempotent-spawn.js +21 -2
- package/lib/util/idempotent-spawn.js.map +1 -1
- package/lib/util/ignore-matcher.d.ts.map +1 -1
- package/lib/util/ignore-matcher.js +3 -1
- package/lib/util/ignore-matcher.js.map +1 -1
- package/lib/util/peer.d.ts +10 -0
- package/lib/util/peer.d.ts.map +1 -0
- package/lib/util/peer.js +42 -0
- package/lib/util/peer.js.map +1 -0
- package/lib/util/xml.js +1 -1
- package/lib/util/xml.js.map +1 -1
- package/lib/vercel/project.d.ts +7 -1
- package/lib/vercel/project.d.ts.map +1 -1
- package/lib/vercel/project.js +28 -0
- package/lib/vercel/project.js.map +1 -1
- package/package.json +88 -74
- package/src/alchemy.ts +76 -222
- package/src/apply.ts +6 -19
- package/src/aws/account-id.ts +6 -3
- package/src/aws/bucket.ts +43 -32
- package/src/aws/ec2/security-group.ts +15 -3
- package/src/aws/function.ts +65 -39
- package/src/aws/policy-attachment.ts +10 -6
- package/src/aws/policy.ts +33 -15
- package/src/aws/queue.ts +50 -29
- package/src/aws/role.ts +37 -20
- package/src/aws/ses.ts +24 -20
- package/src/aws/ssm-parameter.ts +40 -20
- package/src/aws/table.ts +35 -17
- package/src/cloudflare/account-api-token.ts +9 -7
- package/src/cloudflare/ai-gateway.ts +37 -34
- package/src/cloudflare/api-schema.ts +33 -26
- package/src/cloudflare/api-shield.ts +15 -2
- package/src/cloudflare/astro/astro.ts +5 -1
- package/src/cloudflare/astro/plugin.ts +2 -1
- package/src/cloudflare/bindings.ts +2 -2
- package/src/cloudflare/bound.ts +1 -1
- package/src/cloudflare/bucket.ts +242 -3
- package/src/cloudflare/cloudflare-env-proxy.ts +1 -1
- package/src/cloudflare/compatibility-date.gen.ts +1 -1
- package/src/cloudflare/container.ts +23 -12
- package/src/cloudflare/custom-domain.ts +2 -2
- package/src/cloudflare/d1-database.ts +10 -3
- package/src/cloudflare/dispatch-namespace.ts +10 -7
- package/src/cloudflare/durable-object-namespace.ts +0 -1
- package/src/cloudflare/hyperdrive.ts +14 -4
- package/src/cloudflare/kv-namespace.ts +25 -2
- package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +3 -1
- package/src/cloudflare/miniflare/paths.ts +13 -0
- package/src/cloudflare/pipeline.ts +76 -28
- package/src/cloudflare/queue-consumer.ts +1 -1
- package/src/cloudflare/queue.ts +26 -14
- package/src/cloudflare/react-router/react-router.ts +28 -2
- package/src/cloudflare/redwood/plugin.ts +3 -2
- package/src/cloudflare/route.ts +1 -1
- package/src/cloudflare/ruleset.ts +7 -2
- package/src/cloudflare/secret.ts +20 -31
- package/src/cloudflare/secrets-store.ts +7 -3
- package/src/cloudflare/tunnel.ts +13 -2
- package/src/cloudflare/vectorize-index.ts +14 -3
- package/src/cloudflare/vite/plugin.ts +3 -2
- package/src/cloudflare/website.ts +1 -1
- package/src/cloudflare/worker-metadata.ts +1 -1
- package/src/cloudflare/worker.ts +35 -23
- package/src/cloudflare/wrangler.json.ts +7 -4
- package/src/docker/container.ts +13 -1
- package/src/docker/network.ts +18 -3
- package/src/docker/volume.ts +17 -6
- package/src/fs/index.ts +0 -8
- package/src/github/client.ts +6 -2
- package/src/github/repository-environment.ts +27 -13
- package/src/neon/project.ts +24 -11
- package/src/planetscale/branch.ts +24 -13
- package/src/planetscale/database.ts +38 -17
- package/src/planetscale/password.ts +10 -3
- package/src/resource.ts +1 -10
- package/src/scope.ts +29 -38
- package/src/sentry/client-key.ts +74 -6
- package/src/sentry/project.ts +59 -6
- package/src/sentry/team.ts +55 -7
- package/src/serde.ts +0 -44
- package/src/state/d1-state-store.ts +13 -6
- package/src/state/sqlite-state-store.ts +16 -17
- package/src/stripe/card.ts +5 -2
- package/src/stripe/client.ts +10 -3
- package/src/stripe/coupon.ts +4 -3
- package/src/stripe/customer.ts +2 -2
- package/src/stripe/entitlements-feature.ts +5 -2
- package/src/stripe/file.ts +3 -2
- package/src/stripe/meter.ts +2 -2
- package/src/stripe/portal-configuration.ts +5 -2
- package/src/stripe/price.ts +3 -2
- package/src/stripe/product-feature.ts +5 -2
- package/src/stripe/product.ts +3 -2
- package/src/stripe/promotion-code.ts +3 -2
- package/src/stripe/shipping-rate.ts +4 -3
- package/src/stripe/tax-rate.ts +3 -2
- package/src/stripe/webhook.ts +4 -3
- package/src/test/vitest.ts +1 -0
- package/src/upstash/redis.ts +16 -6
- package/src/util/idempotent-spawn.ts +23 -2
- package/src/util/ignore-matcher.ts +3 -1
- package/src/util/peer.ts +53 -0
- package/src/util/xml.ts +1 -1
- package/src/vercel/project.ts +46 -1
- package/templates/hono/README.md +19 -0
- package/templates/hono/_env +1 -0
- package/templates/hono/_env.example +1 -0
- package/templates/hono/_gitignore +34 -0
- package/templates/hono/alchemy.run.ts +22 -0
- package/templates/hono/package.json +18 -0
- package/templates/hono/src/index.ts +17 -0
- package/templates/hono/tsconfig.json +13 -0
- package/templates/hono/types/env.d.ts +16 -0
- package/templates/react-router/vite.config.ts +5 -3
- package/workers/cloudflare-state-store.js +69 -74
- package/workers/dofs-state-store.js +1 -1
- package/bin/bootstrap-s3.ts +0 -255
- package/lib/ai/ark.d.ts +0 -12
- package/lib/ai/ark.d.ts.map +0 -1
- package/lib/ai/ark.js +0 -87
- package/lib/ai/ark.js.map +0 -1
- package/lib/ai/astro-file.d.ts +0 -138
- package/lib/ai/astro-file.d.ts.map +0 -1
- package/lib/ai/astro-file.js +0 -158
- package/lib/ai/astro-file.js.map +0 -1
- package/lib/ai/client.d.ts +0 -51
- package/lib/ai/client.d.ts.map +0 -1
- package/lib/ai/client.js +0 -58
- package/lib/ai/client.js.map +0 -1
- package/lib/ai/css-file.d.ts +0 -132
- package/lib/ai/css-file.d.ts.map +0 -1
- package/lib/ai/css-file.js +0 -142
- package/lib/ai/css-file.js.map +0 -1
- package/lib/ai/data.d.ts +0 -152
- package/lib/ai/data.d.ts.map +0 -1
- package/lib/ai/data.js +0 -120
- package/lib/ai/data.js.map +0 -1
- package/lib/ai/document.d.ts +0 -208
- package/lib/ai/document.d.ts.map +0 -1
- package/lib/ai/document.js +0 -206
- package/lib/ai/document.js.map +0 -1
- package/lib/ai/html-file.d.ts +0 -129
- package/lib/ai/html-file.d.ts.map +0 -1
- package/lib/ai/html-file.js +0 -139
- package/lib/ai/html-file.js.map +0 -1
- package/lib/ai/index.d.ts +0 -11
- package/lib/ai/index.d.ts.map +0 -1
- package/lib/ai/index.js +0 -11
- package/lib/ai/index.js.map +0 -1
- package/lib/ai/json-file.d.ts +0 -161
- package/lib/ai/json-file.d.ts.map +0 -1
- package/lib/ai/json-file.js +0 -188
- package/lib/ai/json-file.js.map +0 -1
- package/lib/ai/typescript-file.d.ts +0 -140
- package/lib/ai/typescript-file.d.ts.map +0 -1
- package/lib/ai/typescript-file.js +0 -146
- package/lib/ai/typescript-file.js.map +0 -1
- package/lib/ai/vue-file.d.ts +0 -127
- package/lib/ai/vue-file.d.ts.map +0 -1
- package/lib/ai/vue-file.js +0 -137
- package/lib/ai/vue-file.js.map +0 -1
- package/lib/ai/yaml-file.d.ts +0 -170
- package/lib/ai/yaml-file.d.ts.map +0 -1
- package/lib/ai/yaml-file.js +0 -201
- package/lib/ai/yaml-file.js.map +0 -1
- package/lib/fs/static-astro-file.d.ts +0 -35
- package/lib/fs/static-astro-file.d.ts.map +0 -1
- package/lib/fs/static-astro-file.js +0 -40
- package/lib/fs/static-astro-file.js.map +0 -1
- package/lib/fs/static-css-file.d.ts +0 -25
- package/lib/fs/static-css-file.d.ts.map +0 -1
- package/lib/fs/static-css-file.js +0 -30
- package/lib/fs/static-css-file.js.map +0 -1
- package/lib/fs/static-html-file.d.ts +0 -32
- package/lib/fs/static-html-file.d.ts.map +0 -1
- package/lib/fs/static-html-file.js +0 -37
- package/lib/fs/static-html-file.js.map +0 -1
- package/lib/fs/static-json-file.d.ts +0 -18
- package/lib/fs/static-json-file.d.ts.map +0 -1
- package/lib/fs/static-json-file.js +0 -19
- package/lib/fs/static-json-file.js.map +0 -1
- package/lib/fs/static-text-file.d.ts +0 -13
- package/lib/fs/static-text-file.d.ts.map +0 -1
- package/lib/fs/static-text-file.js +0 -9
- package/lib/fs/static-text-file.js.map +0 -1
- package/lib/fs/static-typescript-file.d.ts +0 -20
- package/lib/fs/static-typescript-file.d.ts.map +0 -1
- package/lib/fs/static-typescript-file.js +0 -16
- package/lib/fs/static-typescript-file.js.map +0 -1
- package/lib/fs/static-vue-file.d.ts +0 -29
- package/lib/fs/static-vue-file.d.ts.map +0 -1
- package/lib/fs/static-vue-file.js +0 -34
- package/lib/fs/static-vue-file.js.map +0 -1
- package/lib/fs/static-yaml-file.d.ts +0 -23
- package/lib/fs/static-yaml-file.d.ts.map +0 -1
- package/lib/fs/static-yaml-file.js +0 -10
- package/lib/fs/static-yaml-file.js.map +0 -1
- package/lib/internal/docs/providers.d.ts +0 -34
- package/lib/internal/docs/providers.d.ts.map +0 -1
- package/lib/internal/docs/providers.js +0 -200
- package/lib/internal/docs/providers.js.map +0 -1
- package/lib/runtime/bind.d.ts +0 -25
- package/lib/runtime/bind.d.ts.map +0 -1
- package/lib/runtime/bind.js +0 -76
- package/lib/runtime/bind.js.map +0 -1
- package/lib/runtime/global.d.ts +0 -8
- package/lib/runtime/global.d.ts.map +0 -1
- package/lib/runtime/global.js +0 -3
- package/lib/runtime/global.js.map +0 -1
- package/lib/runtime/plugin.d.ts +0 -35
- package/lib/runtime/plugin.d.ts.map +0 -1
- package/lib/runtime/plugin.js +0 -134
- package/lib/runtime/plugin.js.map +0 -1
- package/lib/runtime/shims.d.ts +0 -6
- package/lib/runtime/shims.d.ts.map +0 -1
- package/lib/runtime/shims.js +0 -27
- package/lib/runtime/shims.js.map +0 -1
- package/lib/runtime/state.d.ts +0 -5
- package/lib/runtime/state.d.ts.map +0 -1
- package/lib/runtime/state.js +0 -4
- package/lib/runtime/state.js.map +0 -1
- package/lib/web/astro.d.ts +0 -148
- package/lib/web/astro.d.ts.map +0 -1
- package/lib/web/astro.js +0 -419
- package/lib/web/astro.js.map +0 -1
- package/lib/web/shadcn-component.d.ts +0 -30
- package/lib/web/shadcn-component.d.ts.map +0 -1
- package/lib/web/shadcn-component.js +0 -25
- package/lib/web/shadcn-component.js.map +0 -1
- package/lib/web/shadcn.d.ts +0 -98
- package/lib/web/shadcn.d.ts.map +0 -1
- package/lib/web/shadcn.js +0 -102
- package/lib/web/shadcn.js.map +0 -1
- package/lib/web/tailwind.d.ts +0 -65
- package/lib/web/tailwind.d.ts.map +0 -1
- package/lib/web/tailwind.js +0 -98
- package/lib/web/tailwind.js.map +0 -1
- package/lib/web/vite.d.ts +0 -96
- package/lib/web/vite.d.ts.map +0 -1
- package/lib/web/vite.js +0 -232
- package/lib/web/vite.js.map +0 -1
- package/lib/web/vitepress/config.d.ts +0 -12
- package/lib/web/vitepress/config.d.ts.map +0 -1
- package/lib/web/vitepress/config.js +0 -33
- package/lib/web/vitepress/config.js.map +0 -1
- package/lib/web/vitepress/custom-theme.d.ts +0 -174
- package/lib/web/vitepress/custom-theme.d.ts.map +0 -1
- package/lib/web/vitepress/custom-theme.js +0 -337
- package/lib/web/vitepress/custom-theme.js.map +0 -1
- package/lib/web/vitepress/dependencies.d.ts +0 -13
- package/lib/web/vitepress/dependencies.d.ts.map +0 -1
- package/lib/web/vitepress/dependencies.js +0 -37
- package/lib/web/vitepress/dependencies.js.map +0 -1
- package/lib/web/vitepress/home-page.d.ts +0 -247
- package/lib/web/vitepress/home-page.d.ts.map +0 -1
- package/lib/web/vitepress/home-page.js +0 -146
- package/lib/web/vitepress/home-page.js.map +0 -1
- package/lib/web/vitepress/index.d.ts +0 -6
- package/lib/web/vitepress/index.d.ts.map +0 -1
- package/lib/web/vitepress/index.js +0 -6
- package/lib/web/vitepress/index.js.map +0 -1
- package/lib/web/vitepress/process-front-matter-files.d.ts +0 -19
- package/lib/web/vitepress/process-front-matter-files.d.ts.map +0 -1
- package/lib/web/vitepress/process-front-matter-files.js +0 -73
- package/lib/web/vitepress/process-front-matter-files.js.map +0 -1
- package/lib/web/vitepress/vitepress.d.ts +0 -75
- package/lib/web/vitepress/vitepress.d.ts.map +0 -1
- package/lib/web/vitepress/vitepress.js +0 -254
- package/lib/web/vitepress/vitepress.js.map +0 -1
- package/src/ai/ark.ts +0 -118
- package/src/ai/astro-file.ts +0 -270
- package/src/ai/client.ts +0 -117
- package/src/ai/css-file.ts +0 -247
- package/src/ai/data.ts +0 -221
- package/src/ai/document.ts +0 -367
- package/src/ai/html-file.ts +0 -244
- package/src/ai/index.ts +0 -10
- package/src/ai/json-file.ts +0 -325
- package/src/ai/typescript-file.ts +0 -259
- package/src/ai/vue-file.ts +0 -242
- package/src/ai/yaml-file.ts +0 -328
- package/src/fs/static-astro-file.ts +0 -45
- package/src/fs/static-css-file.ts +0 -35
- package/src/fs/static-html-file.ts +0 -42
- package/src/fs/static-json-file.ts +0 -38
- package/src/fs/static-text-file.ts +0 -23
- package/src/fs/static-typescript-file.ts +0 -37
- package/src/fs/static-vue-file.ts +0 -39
- package/src/fs/static-yaml-file.ts +0 -33
- package/src/internal/docs/providers.ts +0 -286
- package/src/runtime/bind.ts +0 -95
- package/src/runtime/global.ts +0 -10
- package/src/runtime/plugin.ts +0 -163
- package/src/runtime/shims.js +0 -34
- package/src/runtime/state.ts +0 -9
- package/src/web/astro.ts +0 -643
- package/src/web/shadcn-component.ts +0 -72
- package/src/web/shadcn.ts +0 -221
- package/src/web/tailwind.ts +0 -167
- package/src/web/vite.ts +0 -407
- package/src/web/vitepress/config.ts +0 -50
- package/src/web/vitepress/custom-theme.ts +0 -514
- package/src/web/vitepress/dependencies.ts +0 -69
- package/src/web/vitepress/home-page.ts +0 -378
- package/src/web/vitepress/index.ts +0 -5
- package/src/web/vitepress/process-front-matter-files.ts +0 -107
- package/src/web/vitepress/vitepress.ts +0 -372
- package/templates/sveltekit/bun.lock +0 -1099
package/src/aws/function.ts
CHANGED
|
@@ -1,25 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AddPermissionCommand,
|
|
1
|
+
import type {
|
|
3
2
|
Architecture,
|
|
4
|
-
CreateFunctionCommand,
|
|
5
|
-
CreateFunctionUrlConfigCommand,
|
|
6
|
-
DeleteFunctionCommand,
|
|
7
|
-
DeleteFunctionUrlConfigCommand,
|
|
8
|
-
GetFunctionCommand,
|
|
9
|
-
GetFunctionConfigurationCommand,
|
|
10
|
-
GetFunctionUrlConfigCommand,
|
|
11
3
|
LambdaClient,
|
|
12
|
-
ResourceNotFoundException,
|
|
13
4
|
Runtime,
|
|
14
|
-
UpdateFunctionCodeCommand,
|
|
15
|
-
UpdateFunctionConfigurationCommand,
|
|
16
|
-
UpdateFunctionUrlConfigCommand,
|
|
17
5
|
} from "@aws-sdk/client-lambda";
|
|
18
6
|
import type { Context } from "../context.ts";
|
|
19
7
|
import type { Bundle } from "../esbuild/bundle.ts";
|
|
20
8
|
import { Resource } from "../resource.ts";
|
|
21
9
|
import { ignore } from "../util/ignore.ts";
|
|
22
10
|
import { logger } from "../util/logger.ts";
|
|
11
|
+
import { importPeer } from "../util/peer.ts";
|
|
23
12
|
import { retry } from "./retry.ts";
|
|
24
13
|
|
|
25
14
|
/**
|
|
@@ -28,8 +17,10 @@ import { retry } from "./retry.ts";
|
|
|
28
17
|
export interface FunctionProps {
|
|
29
18
|
/**
|
|
30
19
|
* Name of the Lambda function
|
|
20
|
+
*
|
|
21
|
+
* @default ${app}-${stage}-${id}
|
|
31
22
|
*/
|
|
32
|
-
functionName
|
|
23
|
+
functionName?: string;
|
|
33
24
|
|
|
34
25
|
/**
|
|
35
26
|
* Bundle for the function
|
|
@@ -151,6 +142,11 @@ export interface Function extends Resource<"lambda::Function">, FunctionProps {
|
|
|
151
142
|
*/
|
|
152
143
|
arn: string;
|
|
153
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Name of the Function
|
|
147
|
+
*/
|
|
148
|
+
functionName: string;
|
|
149
|
+
|
|
154
150
|
/**
|
|
155
151
|
* Timestamp of the last function modification
|
|
156
152
|
*/
|
|
@@ -309,10 +305,36 @@ export interface Function extends Resource<"lambda::Function">, FunctionProps {
|
|
|
309
305
|
*/
|
|
310
306
|
export const Function = Resource(
|
|
311
307
|
"lambda::Function",
|
|
312
|
-
async function (this: Context<Function>,
|
|
308
|
+
async function (this: Context<Function>, id: string, props: FunctionProps) {
|
|
309
|
+
const {
|
|
310
|
+
AddPermissionCommand,
|
|
311
|
+
Architecture,
|
|
312
|
+
CreateFunctionCommand,
|
|
313
|
+
CreateFunctionUrlConfigCommand,
|
|
314
|
+
DeleteFunctionCommand,
|
|
315
|
+
DeleteFunctionUrlConfigCommand,
|
|
316
|
+
GetFunctionCommand,
|
|
317
|
+
GetFunctionConfigurationCommand,
|
|
318
|
+
GetFunctionUrlConfigCommand,
|
|
319
|
+
LambdaClient,
|
|
320
|
+
ResourceNotFoundException,
|
|
321
|
+
Runtime,
|
|
322
|
+
UpdateFunctionCodeCommand,
|
|
323
|
+
UpdateFunctionConfigurationCommand,
|
|
324
|
+
UpdateFunctionUrlConfigCommand,
|
|
325
|
+
} = await importPeer(import("@aws-sdk/client-lambda"), "lambda::Function");
|
|
313
326
|
const client = new LambdaClient({});
|
|
314
327
|
const region = await resolveRegion(client);
|
|
315
328
|
|
|
329
|
+
const functionName =
|
|
330
|
+
props.functionName ??
|
|
331
|
+
this.output?.functionName ??
|
|
332
|
+
this.scope.createPhysicalName(id);
|
|
333
|
+
|
|
334
|
+
if (this.phase === "update" && this.output.functionName !== functionName) {
|
|
335
|
+
this.replace();
|
|
336
|
+
}
|
|
337
|
+
|
|
316
338
|
if (this.phase === "delete") {
|
|
317
339
|
// Delete function URL if it exists
|
|
318
340
|
if (this.output?.url) {
|
|
@@ -320,7 +342,7 @@ export const Function = Resource(
|
|
|
320
342
|
await retry(() =>
|
|
321
343
|
client.send(
|
|
322
344
|
new DeleteFunctionUrlConfigCommand({
|
|
323
|
-
FunctionName:
|
|
345
|
+
FunctionName: functionName,
|
|
324
346
|
}),
|
|
325
347
|
),
|
|
326
348
|
);
|
|
@@ -335,7 +357,7 @@ export const Function = Resource(
|
|
|
335
357
|
retry(() =>
|
|
336
358
|
client.send(
|
|
337
359
|
new DeleteFunctionCommand({
|
|
338
|
-
FunctionName:
|
|
360
|
+
FunctionName: functionName,
|
|
339
361
|
}),
|
|
340
362
|
),
|
|
341
363
|
),
|
|
@@ -352,33 +374,33 @@ export const Function = Resource(
|
|
|
352
374
|
await retry(() =>
|
|
353
375
|
client.send(
|
|
354
376
|
new GetFunctionCommand({
|
|
355
|
-
FunctionName:
|
|
377
|
+
FunctionName: functionName,
|
|
356
378
|
}),
|
|
357
379
|
),
|
|
358
380
|
);
|
|
359
381
|
|
|
360
382
|
if (this.phase === "update") {
|
|
361
383
|
// Wait for function to stabilize
|
|
362
|
-
await waitForFunctionStabilization(client,
|
|
384
|
+
await waitForFunctionStabilization(client, functionName);
|
|
363
385
|
|
|
364
386
|
// Update function code
|
|
365
387
|
await retry(() =>
|
|
366
388
|
client.send(
|
|
367
389
|
new UpdateFunctionCodeCommand({
|
|
368
|
-
FunctionName:
|
|
390
|
+
FunctionName: functionName,
|
|
369
391
|
ZipFile: code,
|
|
370
392
|
}),
|
|
371
393
|
),
|
|
372
394
|
);
|
|
373
395
|
|
|
374
396
|
// Wait for code update to stabilize
|
|
375
|
-
await waitForFunctionStabilization(client,
|
|
397
|
+
await waitForFunctionStabilization(client, functionName);
|
|
376
398
|
|
|
377
399
|
// Update function configuration
|
|
378
400
|
await retry(() =>
|
|
379
401
|
client.send(
|
|
380
402
|
new UpdateFunctionConfigurationCommand({
|
|
381
|
-
FunctionName:
|
|
403
|
+
FunctionName: functionName,
|
|
382
404
|
Handler: props.handler,
|
|
383
405
|
Runtime: props.runtime,
|
|
384
406
|
Role: props.roleArn,
|
|
@@ -394,7 +416,7 @@ export const Function = Resource(
|
|
|
394
416
|
);
|
|
395
417
|
|
|
396
418
|
// Wait for configuration update to stabilize
|
|
397
|
-
await waitForFunctionStabilization(client,
|
|
419
|
+
await waitForFunctionStabilization(client, functionName);
|
|
398
420
|
|
|
399
421
|
// Handle URL configuration
|
|
400
422
|
if (props.url) {
|
|
@@ -403,7 +425,7 @@ export const Function = Resource(
|
|
|
403
425
|
const urlConfig = await retry(() =>
|
|
404
426
|
client.send(
|
|
405
427
|
new GetFunctionUrlConfigCommand({
|
|
406
|
-
FunctionName:
|
|
428
|
+
FunctionName: functionName,
|
|
407
429
|
}),
|
|
408
430
|
),
|
|
409
431
|
);
|
|
@@ -413,7 +435,7 @@ export const Function = Resource(
|
|
|
413
435
|
const updateResult = await retry(() =>
|
|
414
436
|
client.send(
|
|
415
437
|
new UpdateFunctionUrlConfigCommand({
|
|
416
|
-
FunctionName:
|
|
438
|
+
FunctionName: functionName,
|
|
417
439
|
AuthType: props.url!.authType || "NONE",
|
|
418
440
|
InvokeMode: props.url!.invokeMode || "BUFFERED",
|
|
419
441
|
Cors: props.url!.cors
|
|
@@ -437,7 +459,7 @@ export const Function = Resource(
|
|
|
437
459
|
await retry(() =>
|
|
438
460
|
client.send(
|
|
439
461
|
new AddPermissionCommand({
|
|
440
|
-
FunctionName:
|
|
462
|
+
FunctionName: functionName,
|
|
441
463
|
StatementId: "FunctionURLAllowPublicAccess",
|
|
442
464
|
Action: "lambda:InvokeFunctionUrl",
|
|
443
465
|
Principal: "*",
|
|
@@ -456,7 +478,7 @@ export const Function = Resource(
|
|
|
456
478
|
const createResult = await retry(() =>
|
|
457
479
|
client.send(
|
|
458
480
|
new CreateFunctionUrlConfigCommand({
|
|
459
|
-
FunctionName:
|
|
481
|
+
FunctionName: functionName,
|
|
460
482
|
AuthType: props.url!.authType || "NONE",
|
|
461
483
|
InvokeMode: props.url!.invokeMode || "BUFFERED",
|
|
462
484
|
Cors: props.url!.cors
|
|
@@ -480,7 +502,7 @@ export const Function = Resource(
|
|
|
480
502
|
await retry(() =>
|
|
481
503
|
client.send(
|
|
482
504
|
new AddPermissionCommand({
|
|
483
|
-
FunctionName:
|
|
505
|
+
FunctionName: functionName,
|
|
484
506
|
StatementId: "FunctionURLAllowPublicAccess",
|
|
485
507
|
Action: "lambda:InvokeFunctionUrl",
|
|
486
508
|
Principal: "*",
|
|
@@ -501,7 +523,7 @@ export const Function = Resource(
|
|
|
501
523
|
const createResult = await retry(() =>
|
|
502
524
|
client.send(
|
|
503
525
|
new CreateFunctionUrlConfigCommand({
|
|
504
|
-
FunctionName:
|
|
526
|
+
FunctionName: functionName,
|
|
505
527
|
AuthType: props.url!.authType || "NONE",
|
|
506
528
|
InvokeMode: props.url!.invokeMode || "BUFFERED",
|
|
507
529
|
Cors: props.url!.cors
|
|
@@ -525,7 +547,7 @@ export const Function = Resource(
|
|
|
525
547
|
await retry(() =>
|
|
526
548
|
client.send(
|
|
527
549
|
new AddPermissionCommand({
|
|
528
|
-
FunctionName:
|
|
550
|
+
FunctionName: functionName,
|
|
529
551
|
StatementId: "FunctionURLAllowPublicAccess",
|
|
530
552
|
Action: "lambda:InvokeFunctionUrl",
|
|
531
553
|
Principal: "*",
|
|
@@ -549,7 +571,7 @@ export const Function = Resource(
|
|
|
549
571
|
await retry(() =>
|
|
550
572
|
client.send(
|
|
551
573
|
new DeleteFunctionUrlConfigCommand({
|
|
552
|
-
FunctionName:
|
|
574
|
+
FunctionName: functionName,
|
|
553
575
|
}),
|
|
554
576
|
),
|
|
555
577
|
);
|
|
@@ -572,7 +594,7 @@ export const Function = Resource(
|
|
|
572
594
|
await retry(() =>
|
|
573
595
|
client.send(
|
|
574
596
|
new CreateFunctionCommand({
|
|
575
|
-
FunctionName:
|
|
597
|
+
FunctionName: functionName,
|
|
576
598
|
Code: { ZipFile: code },
|
|
577
599
|
Handler: props.handler || "index.handler",
|
|
578
600
|
Runtime: props.runtime || Runtime.nodejs20x,
|
|
@@ -617,7 +639,7 @@ export const Function = Resource(
|
|
|
617
639
|
const config = await retry(() =>
|
|
618
640
|
client.send(
|
|
619
641
|
new GetFunctionConfigurationCommand({
|
|
620
|
-
FunctionName:
|
|
642
|
+
FunctionName: functionName,
|
|
621
643
|
}),
|
|
622
644
|
),
|
|
623
645
|
);
|
|
@@ -632,7 +654,7 @@ export const Function = Resource(
|
|
|
632
654
|
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
633
655
|
|
|
634
656
|
// Verify function is fully stable and role is usable
|
|
635
|
-
await waitForFunctionStabilization(client,
|
|
657
|
+
await waitForFunctionStabilization(client, functionName);
|
|
636
658
|
|
|
637
659
|
// Create URL configuration if needed
|
|
638
660
|
if (props.url) {
|
|
@@ -640,7 +662,7 @@ export const Function = Resource(
|
|
|
640
662
|
const createResult = await retry(() =>
|
|
641
663
|
client.send(
|
|
642
664
|
new CreateFunctionUrlConfigCommand({
|
|
643
|
-
FunctionName:
|
|
665
|
+
FunctionName: functionName,
|
|
644
666
|
AuthType: props.url!.authType || "NONE",
|
|
645
667
|
InvokeMode: props.url!.invokeMode || "BUFFERED",
|
|
646
668
|
Cors: props.url!.cors
|
|
@@ -664,7 +686,7 @@ export const Function = Resource(
|
|
|
664
686
|
await retry(() =>
|
|
665
687
|
client.send(
|
|
666
688
|
new AddPermissionCommand({
|
|
667
|
-
FunctionName:
|
|
689
|
+
FunctionName: functionName,
|
|
668
690
|
StatementId: "FunctionURLAllowPublicAccess",
|
|
669
691
|
Action: "lambda:InvokeFunctionUrl",
|
|
670
692
|
Principal: "*",
|
|
@@ -692,14 +714,14 @@ export const Function = Resource(
|
|
|
692
714
|
retry(() =>
|
|
693
715
|
client.send(
|
|
694
716
|
new GetFunctionCommand({
|
|
695
|
-
FunctionName:
|
|
717
|
+
FunctionName: functionName,
|
|
696
718
|
}),
|
|
697
719
|
),
|
|
698
720
|
),
|
|
699
721
|
retry(() =>
|
|
700
722
|
client.send(
|
|
701
723
|
new GetFunctionConfigurationCommand({
|
|
702
|
-
FunctionName:
|
|
724
|
+
FunctionName: functionName,
|
|
703
725
|
}),
|
|
704
726
|
),
|
|
705
727
|
),
|
|
@@ -711,7 +733,7 @@ export const Function = Resource(
|
|
|
711
733
|
const urlConfig = await retry(() =>
|
|
712
734
|
client.send(
|
|
713
735
|
new GetFunctionUrlConfigCommand({
|
|
714
|
-
FunctionName:
|
|
736
|
+
FunctionName: functionName,
|
|
715
737
|
}),
|
|
716
738
|
),
|
|
717
739
|
);
|
|
@@ -726,6 +748,7 @@ export const Function = Resource(
|
|
|
726
748
|
return this({
|
|
727
749
|
...props,
|
|
728
750
|
arn: config.FunctionArn!,
|
|
751
|
+
functionName,
|
|
729
752
|
lastModified: config.LastModified!,
|
|
730
753
|
version: config.Version!,
|
|
731
754
|
qualifiedArn: `${config.FunctionArn}:${config.Version}`,
|
|
@@ -755,6 +778,9 @@ async function waitForFunctionStabilization(
|
|
|
755
778
|
client: LambdaClient,
|
|
756
779
|
functionName: string,
|
|
757
780
|
) {
|
|
781
|
+
const { GetFunctionConfigurationCommand } = await import(
|
|
782
|
+
"@aws-sdk/client-lambda"
|
|
783
|
+
);
|
|
758
784
|
while (true) {
|
|
759
785
|
const config = await retry(() =>
|
|
760
786
|
client.send(
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AttachRolePolicyCommand,
|
|
3
|
-
DetachRolePolicyCommand,
|
|
4
|
-
IAMClient,
|
|
5
|
-
NoSuchEntityException,
|
|
6
|
-
} from "@aws-sdk/client-iam";
|
|
7
1
|
import type { Context } from "../context.ts";
|
|
8
2
|
import { Resource } from "../resource.ts";
|
|
9
3
|
import { ignore } from "../util/ignore.ts";
|
|
4
|
+
import { importPeer } from "../util/peer.ts";
|
|
10
5
|
import { retry } from "./retry.ts";
|
|
11
6
|
|
|
12
7
|
/**
|
|
@@ -69,6 +64,15 @@ export const PolicyAttachment = Resource(
|
|
|
69
64
|
_id: string,
|
|
70
65
|
props: PolicyAttachmentProps,
|
|
71
66
|
) {
|
|
67
|
+
const {
|
|
68
|
+
AttachRolePolicyCommand,
|
|
69
|
+
DetachRolePolicyCommand,
|
|
70
|
+
IAMClient,
|
|
71
|
+
NoSuchEntityException,
|
|
72
|
+
} = await importPeer(
|
|
73
|
+
import("@aws-sdk/client-iam"),
|
|
74
|
+
"iam::PolicyAttachment",
|
|
75
|
+
);
|
|
72
76
|
const client = new IAMClient({});
|
|
73
77
|
|
|
74
78
|
if (this.phase === "delete") {
|
package/src/aws/policy.ts
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CreatePolicyCommand,
|
|
3
|
-
CreatePolicyVersionCommand,
|
|
4
|
-
DeletePolicyCommand,
|
|
5
|
-
DeletePolicyVersionCommand,
|
|
6
|
-
GetPolicyCommand,
|
|
7
|
-
GetPolicyVersionCommand,
|
|
8
|
-
IAMClient,
|
|
9
|
-
ListPolicyVersionsCommand,
|
|
10
|
-
NoSuchEntityException,
|
|
11
|
-
} from "@aws-sdk/client-iam";
|
|
12
1
|
import type { Context } from "../context.ts";
|
|
13
2
|
import { Resource } from "../resource.ts";
|
|
3
|
+
import { importPeer } from "../util/peer.ts";
|
|
14
4
|
import { retry } from "./retry.ts";
|
|
15
5
|
|
|
16
6
|
/**
|
|
@@ -89,8 +79,10 @@ export interface PolicyDocument {
|
|
|
89
79
|
export interface PolicyProps {
|
|
90
80
|
/**
|
|
91
81
|
* Name of the policy
|
|
82
|
+
*
|
|
83
|
+
* @default ${app}-${stage}-${id}
|
|
92
84
|
*/
|
|
93
|
-
policyName
|
|
85
|
+
policyName?: string;
|
|
94
86
|
|
|
95
87
|
/**
|
|
96
88
|
* Policy document defining the permissions
|
|
@@ -122,6 +114,11 @@ export interface Policy extends Resource<"iam::Policy">, PolicyProps {
|
|
|
122
114
|
*/
|
|
123
115
|
arn: string;
|
|
124
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Name of the Policy.
|
|
119
|
+
*/
|
|
120
|
+
policyName: string;
|
|
121
|
+
|
|
125
122
|
/**
|
|
126
123
|
* ID of the default policy version
|
|
127
124
|
*/
|
|
@@ -230,11 +227,30 @@ export const Policy = Resource(
|
|
|
230
227
|
"iam::Policy",
|
|
231
228
|
async function (
|
|
232
229
|
this: Context<Policy>,
|
|
233
|
-
|
|
230
|
+
id: string,
|
|
234
231
|
props: PolicyProps,
|
|
235
232
|
): Promise<Policy> {
|
|
233
|
+
const {
|
|
234
|
+
CreatePolicyCommand,
|
|
235
|
+
CreatePolicyVersionCommand,
|
|
236
|
+
DeletePolicyCommand,
|
|
237
|
+
DeletePolicyVersionCommand,
|
|
238
|
+
GetPolicyCommand,
|
|
239
|
+
GetPolicyVersionCommand,
|
|
240
|
+
IAMClient,
|
|
241
|
+
ListPolicyVersionsCommand,
|
|
242
|
+
NoSuchEntityException,
|
|
243
|
+
} = await importPeer(import("@aws-sdk/client-iam"), "iam::Policy");
|
|
236
244
|
const client = new IAMClient({});
|
|
237
|
-
const
|
|
245
|
+
const policyName =
|
|
246
|
+
props.policyName ??
|
|
247
|
+
this.output?.policyName ??
|
|
248
|
+
this.scope.createPhysicalName(id);
|
|
249
|
+
const policyArn = `arn:aws:iam::${process.env.AWS_ACCOUNT_ID}:policy${props.path || "/"}${policyName}`;
|
|
250
|
+
|
|
251
|
+
if (this.phase === "update" && this.output.policyName !== policyName) {
|
|
252
|
+
this.replace();
|
|
253
|
+
}
|
|
238
254
|
|
|
239
255
|
if (this.phase === "delete") {
|
|
240
256
|
try {
|
|
@@ -351,6 +367,7 @@ export const Policy = Resource(
|
|
|
351
367
|
return this({
|
|
352
368
|
...props,
|
|
353
369
|
arn: policy.Policy!.Arn!,
|
|
370
|
+
policyName,
|
|
354
371
|
defaultVersionId: policy.Policy!.DefaultVersionId!,
|
|
355
372
|
attachmentCount: policy.Policy!.AttachmentCount!,
|
|
356
373
|
createDate: policy.Policy!.CreateDate!,
|
|
@@ -363,7 +380,7 @@ export const Policy = Resource(
|
|
|
363
380
|
const newPolicy = await retry(() =>
|
|
364
381
|
client.send(
|
|
365
382
|
new CreatePolicyCommand({
|
|
366
|
-
PolicyName:
|
|
383
|
+
PolicyName: policyName,
|
|
367
384
|
PolicyDocument: JSON.stringify(props.document),
|
|
368
385
|
Description: props.description,
|
|
369
386
|
Path: props.path,
|
|
@@ -380,6 +397,7 @@ export const Policy = Resource(
|
|
|
380
397
|
return this({
|
|
381
398
|
...props,
|
|
382
399
|
arn: newPolicy.Policy!.Arn!,
|
|
400
|
+
policyName,
|
|
383
401
|
defaultVersionId: newPolicy.Policy!.DefaultVersionId!,
|
|
384
402
|
attachmentCount: newPolicy.Policy!.AttachmentCount!,
|
|
385
403
|
createDate: newPolicy.Policy!.CreateDate!,
|
package/src/aws/queue.ts
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CreateQueueCommand,
|
|
3
|
-
DeleteQueueCommand,
|
|
4
|
-
GetQueueAttributesCommand,
|
|
5
|
-
GetQueueUrlCommand,
|
|
6
|
-
QueueDeletedRecently,
|
|
7
|
-
QueueDoesNotExist,
|
|
8
|
-
SQSClient,
|
|
9
|
-
} from "@aws-sdk/client-sqs";
|
|
10
1
|
import type { Context } from "../context.ts";
|
|
11
2
|
import { Resource } from "../resource.ts";
|
|
12
3
|
import { logger } from "../util/logger.ts";
|
|
4
|
+
import { importPeer } from "../util/peer.ts";
|
|
13
5
|
import { retry } from "./retry.ts";
|
|
14
6
|
|
|
15
7
|
/**
|
|
@@ -19,8 +11,10 @@ export interface QueueProps {
|
|
|
19
11
|
/**
|
|
20
12
|
* Name of the queue
|
|
21
13
|
* For FIFO queues, the name must end with the .fifo suffix
|
|
14
|
+
*
|
|
15
|
+
* @default ${app}-${stage}-${id}?.fifo
|
|
22
16
|
*/
|
|
23
|
-
queueName
|
|
17
|
+
queueName?: string;
|
|
24
18
|
|
|
25
19
|
/**
|
|
26
20
|
* Whether this is a FIFO queue.
|
|
@@ -91,6 +85,11 @@ export interface Queue extends Resource<"sqs::Queue">, QueueProps {
|
|
|
91
85
|
*/
|
|
92
86
|
arn: string;
|
|
93
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Name of the Queue
|
|
90
|
+
*/
|
|
91
|
+
queueName: string;
|
|
92
|
+
|
|
94
93
|
/**
|
|
95
94
|
* URL of the queue
|
|
96
95
|
*/
|
|
@@ -140,18 +139,34 @@ export const Queue = Resource(
|
|
|
140
139
|
"sqs::Queue",
|
|
141
140
|
async function (
|
|
142
141
|
this: Context<Queue>,
|
|
143
|
-
|
|
142
|
+
id: string,
|
|
144
143
|
props: QueueProps,
|
|
145
144
|
): Promise<Queue> {
|
|
145
|
+
const {
|
|
146
|
+
CreateQueueCommand,
|
|
147
|
+
DeleteQueueCommand,
|
|
148
|
+
GetQueueAttributesCommand,
|
|
149
|
+
GetQueueUrlCommand,
|
|
150
|
+
QueueDeletedRecently,
|
|
151
|
+
QueueDoesNotExist,
|
|
152
|
+
SQSClient,
|
|
153
|
+
} = await importPeer(import("@aws-sdk/client-sqs"), "sqs::Queue");
|
|
146
154
|
const client = new SQSClient({});
|
|
147
155
|
// Don't automatically add .fifo suffix - user must include it in queueName
|
|
148
|
-
const queueName =
|
|
156
|
+
const queueName =
|
|
157
|
+
props.queueName ??
|
|
158
|
+
this.output?.queueName ??
|
|
159
|
+
`${this.scope.createPhysicalName(id)}${props.fifo ? ".fifo" : ""}`;
|
|
149
160
|
|
|
150
|
-
// Validate that FIFO queues have .fifo suffix
|
|
151
161
|
if (props.fifo && !queueName.endsWith(".fifo")) {
|
|
162
|
+
// Validate that FIFO queues have .fifo suffix
|
|
152
163
|
throw new Error("FIFO queue names must end with .fifo suffix");
|
|
153
164
|
}
|
|
154
165
|
|
|
166
|
+
if (this.phase === "update" && this.output.queueName !== queueName) {
|
|
167
|
+
this.replace();
|
|
168
|
+
}
|
|
169
|
+
|
|
155
170
|
if (this.phase === "delete") {
|
|
156
171
|
try {
|
|
157
172
|
// Get queue URL first
|
|
@@ -271,6 +286,7 @@ export const Queue = Resource(
|
|
|
271
286
|
return this({
|
|
272
287
|
...props,
|
|
273
288
|
arn: attributesResponse.Attributes!.QueueArn!,
|
|
289
|
+
queueName,
|
|
274
290
|
url: createResponse.QueueUrl!,
|
|
275
291
|
});
|
|
276
292
|
} catch (error: any) {
|
|
@@ -311,6 +327,7 @@ export const Queue = Resource(
|
|
|
311
327
|
return this({
|
|
312
328
|
...props,
|
|
313
329
|
arn: attributesResponse.Attributes!.QueueArn!,
|
|
330
|
+
queueName,
|
|
314
331
|
url: createResponse.QueueUrl!,
|
|
315
332
|
});
|
|
316
333
|
} catch (retryError: any) {
|
|
@@ -326,21 +343,25 @@ export const Queue = Resource(
|
|
|
326
343
|
}
|
|
327
344
|
throw error;
|
|
328
345
|
}
|
|
329
|
-
},
|
|
330
|
-
);
|
|
331
346
|
|
|
332
|
-
function isQueueDoesNotExist(
|
|
333
|
-
|
|
334
|
-
error
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
347
|
+
function isQueueDoesNotExist(
|
|
348
|
+
error: any,
|
|
349
|
+
): error is typeof QueueDoesNotExist {
|
|
350
|
+
return (
|
|
351
|
+
error.name === "QueueDoesNotExist" ||
|
|
352
|
+
error.Code === "AWS.SimpleQueueService.NonExistentQueue" ||
|
|
353
|
+
error instanceof QueueDoesNotExist
|
|
354
|
+
);
|
|
355
|
+
}
|
|
339
356
|
|
|
340
|
-
function isQueueDeletedRecently(
|
|
341
|
-
|
|
342
|
-
error
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
357
|
+
function isQueueDeletedRecently(
|
|
358
|
+
error: any,
|
|
359
|
+
): error is typeof QueueDeletedRecently {
|
|
360
|
+
return (
|
|
361
|
+
error instanceof QueueDeletedRecently ||
|
|
362
|
+
error.Code === "AWS.SimpleQueueService.QueueDeletedRecently" ||
|
|
363
|
+
error.name === "QueueDeletedRecently"
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
);
|
package/src/aws/role.ts
CHANGED
|
@@ -1,24 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AttachRolePolicyCommand,
|
|
3
|
-
CreateRoleCommand,
|
|
4
|
-
DeleteRoleCommand,
|
|
5
|
-
DeleteRolePolicyCommand,
|
|
6
|
-
DetachRolePolicyCommand,
|
|
7
|
-
EntityAlreadyExistsException,
|
|
8
|
-
GetRoleCommand,
|
|
9
|
-
IAMClient,
|
|
10
|
-
ListAttachedRolePoliciesCommand,
|
|
11
|
-
NoSuchEntityException,
|
|
12
|
-
PutRolePolicyCommand,
|
|
13
|
-
type Tag,
|
|
14
|
-
TagRoleCommand,
|
|
15
|
-
UpdateAssumeRolePolicyCommand,
|
|
16
|
-
UpdateRoleCommand,
|
|
17
|
-
} from "@aws-sdk/client-iam";
|
|
1
|
+
import type { Tag } from "@aws-sdk/client-iam";
|
|
18
2
|
import type { Context } from "../context.ts";
|
|
19
3
|
import { Resource } from "../resource.ts";
|
|
20
4
|
import { ignore } from "../util/ignore.ts";
|
|
21
5
|
import { logger } from "../util/logger.ts";
|
|
6
|
+
import { importPeer } from "../util/peer.ts";
|
|
22
7
|
import type { PolicyDocument } from "./policy.ts";
|
|
23
8
|
import { retry } from "./retry.ts";
|
|
24
9
|
|
|
@@ -28,8 +13,10 @@ import { retry } from "./retry.ts";
|
|
|
28
13
|
export interface RoleProps {
|
|
29
14
|
/**
|
|
30
15
|
* Name of the IAM role
|
|
16
|
+
*
|
|
17
|
+
* @default ${app}-${stage}-${id}
|
|
31
18
|
*/
|
|
32
|
-
roleName
|
|
19
|
+
roleName?: string;
|
|
33
20
|
|
|
34
21
|
/**
|
|
35
22
|
* Policy that defines which entities can assume this role
|
|
@@ -86,6 +73,11 @@ export interface Role extends Resource<"iam::Role">, RoleProps {
|
|
|
86
73
|
*/
|
|
87
74
|
arn: string;
|
|
88
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Name of the Role.
|
|
78
|
+
*/
|
|
79
|
+
roleName: string;
|
|
80
|
+
|
|
89
81
|
/**
|
|
90
82
|
* Unique identifier for the role
|
|
91
83
|
*/
|
|
@@ -220,11 +212,36 @@ export const Role = Resource(
|
|
|
220
212
|
"iam::Role",
|
|
221
213
|
async function (
|
|
222
214
|
this: Context<Role>,
|
|
223
|
-
|
|
215
|
+
id: string,
|
|
224
216
|
props: RoleProps,
|
|
225
217
|
): Promise<Role> {
|
|
218
|
+
const {
|
|
219
|
+
AttachRolePolicyCommand,
|
|
220
|
+
CreateRoleCommand,
|
|
221
|
+
DeleteRoleCommand,
|
|
222
|
+
DeleteRolePolicyCommand,
|
|
223
|
+
DetachRolePolicyCommand,
|
|
224
|
+
EntityAlreadyExistsException,
|
|
225
|
+
GetRoleCommand,
|
|
226
|
+
IAMClient,
|
|
227
|
+
ListAttachedRolePoliciesCommand,
|
|
228
|
+
NoSuchEntityException,
|
|
229
|
+
PutRolePolicyCommand,
|
|
230
|
+
TagRoleCommand,
|
|
231
|
+
UpdateAssumeRolePolicyCommand,
|
|
232
|
+
UpdateRoleCommand,
|
|
233
|
+
} = await importPeer(import("@aws-sdk/client-iam"), "iam::Role");
|
|
226
234
|
const client = new IAMClient({});
|
|
227
235
|
|
|
236
|
+
const roleName =
|
|
237
|
+
props.roleName ??
|
|
238
|
+
this.output?.roleName ??
|
|
239
|
+
this.scope.createPhysicalName(id);
|
|
240
|
+
|
|
241
|
+
if (this.phase === "update" && this.output.roleName !== roleName) {
|
|
242
|
+
this.replace();
|
|
243
|
+
}
|
|
244
|
+
|
|
228
245
|
if (this.phase === "delete") {
|
|
229
246
|
try {
|
|
230
247
|
// Delete any inline policies first
|
|
@@ -523,7 +540,7 @@ export const Role = Resource(
|
|
|
523
540
|
arn: role.Role.Arn!,
|
|
524
541
|
uniqueId: role.Role.RoleId!,
|
|
525
542
|
roleId: role.Role.RoleId!,
|
|
526
|
-
roleName
|
|
543
|
+
roleName,
|
|
527
544
|
createDate: role.Role.CreateDate!,
|
|
528
545
|
});
|
|
529
546
|
},
|