alchemy 0.62.3 → 0.63.0
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 +1516 -1202
- package/bin/commands/deploy.ts +2 -0
- package/bin/commands/dev.ts +2 -0
- package/bin/services/execute-alchemy.ts +11 -0
- 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/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/hyperdrive.d.ts +7 -1
- package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
- package/lib/cloudflare/hyperdrive.js +2 -1
- 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.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 +10 -6
- 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 +5 -4
- package/lib/upstash/redis.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/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/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/hyperdrive.ts +13 -3
- 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.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 +20 -6
- 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 +15 -5
- package/src/util/ignore-matcher.ts +3 -1
- package/src/util/peer.ts +53 -0
- 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/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
|
},
|
package/src/aws/ses.ts
CHANGED
|
@@ -1,27 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
GetConfigurationSetCommand,
|
|
8
|
-
GetEmailIdentityCommand,
|
|
9
|
-
NotFoundException,
|
|
10
|
-
PutConfigurationSetDeliveryOptionsCommand,
|
|
11
|
-
PutConfigurationSetReputationOptionsCommand,
|
|
12
|
-
PutConfigurationSetSendingOptionsCommand,
|
|
13
|
-
PutConfigurationSetSuppressionOptionsCommand,
|
|
14
|
-
PutConfigurationSetTrackingOptionsCommand,
|
|
15
|
-
PutEmailIdentityDkimAttributesCommand,
|
|
16
|
-
type ReputationOptions,
|
|
17
|
-
SESv2Client,
|
|
18
|
-
type SendingOptions,
|
|
19
|
-
type SuppressionOptions,
|
|
20
|
-
type TrackingOptions,
|
|
1
|
+
import type {
|
|
2
|
+
DeliveryOptions,
|
|
3
|
+
ReputationOptions,
|
|
4
|
+
SendingOptions,
|
|
5
|
+
SuppressionOptions,
|
|
6
|
+
TrackingOptions,
|
|
21
7
|
} from "@aws-sdk/client-sesv2";
|
|
22
8
|
import type { Context } from "../context.ts";
|
|
23
9
|
import { Resource } from "../resource.ts";
|
|
24
10
|
import { ignore } from "../util/ignore.ts";
|
|
11
|
+
import { importPeer } from "../util/peer.ts";
|
|
25
12
|
import { retry } from "./retry.ts";
|
|
26
13
|
|
|
27
14
|
/**
|
|
@@ -165,6 +152,23 @@ export const SES = Resource(
|
|
|
165
152
|
props: SESProps,
|
|
166
153
|
): Promise<SES> {
|
|
167
154
|
// Create SES client
|
|
155
|
+
const {
|
|
156
|
+
CreateConfigurationSetCommand,
|
|
157
|
+
CreateEmailIdentityCommand,
|
|
158
|
+
DeleteConfigurationSetCommand,
|
|
159
|
+
DeleteEmailIdentityCommand,
|
|
160
|
+
GetConfigurationSetCommand,
|
|
161
|
+
GetEmailIdentityCommand,
|
|
162
|
+
NotFoundException,
|
|
163
|
+
PutConfigurationSetDeliveryOptionsCommand,
|
|
164
|
+
PutConfigurationSetReputationOptionsCommand,
|
|
165
|
+
PutConfigurationSetSendingOptionsCommand,
|
|
166
|
+
PutConfigurationSetSuppressionOptionsCommand,
|
|
167
|
+
PutConfigurationSetTrackingOptionsCommand,
|
|
168
|
+
PutEmailIdentityDkimAttributesCommand,
|
|
169
|
+
SESv2Client,
|
|
170
|
+
} = await importPeer(import("@aws-sdk/client-sesv2"), "ses::SES");
|
|
171
|
+
|
|
168
172
|
const client = new SESv2Client({});
|
|
169
173
|
|
|
170
174
|
// Resource ID is either based on the configuration set name or email identity
|
package/src/aws/ssm-parameter.ts
CHANGED
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AddTagsToResourceCommand,
|
|
3
|
-
DeleteParameterCommand,
|
|
4
|
-
GetParameterCommand,
|
|
5
|
-
ParameterAlreadyExists,
|
|
6
|
-
ParameterNotFound,
|
|
7
|
-
PutParameterCommand,
|
|
8
|
-
SSMClient,
|
|
9
|
-
type Tag,
|
|
10
|
-
} from "@aws-sdk/client-ssm";
|
|
1
|
+
import type { Tag } from "@aws-sdk/client-ssm";
|
|
11
2
|
import type { Context } from "../context.ts";
|
|
12
3
|
import { Resource } from "../resource.ts";
|
|
13
4
|
import { type Secret, isSecret } from "../secret.ts";
|
|
14
5
|
import { ignore } from "../util/ignore.ts";
|
|
15
6
|
import { logger } from "../util/logger.ts";
|
|
7
|
+
import { importPeer } from "../util/peer.ts";
|
|
16
8
|
|
|
17
9
|
/**
|
|
18
10
|
* Base properties shared by all SSM Parameter types
|
|
@@ -20,8 +12,10 @@ import { logger } from "../util/logger.ts";
|
|
|
20
12
|
interface SSMParameterBaseProps {
|
|
21
13
|
/**
|
|
22
14
|
* Name of the parameter
|
|
15
|
+
*
|
|
16
|
+
* @default ${app}-${stage}-${id}
|
|
23
17
|
*/
|
|
24
|
-
name
|
|
18
|
+
name?: string;
|
|
25
19
|
|
|
26
20
|
/**
|
|
27
21
|
* Description of the parameter's purpose
|
|
@@ -101,6 +95,11 @@ export type SSMParameter = Resource<"ssm::Parameter"> & {
|
|
|
101
95
|
*/
|
|
102
96
|
arn: string;
|
|
103
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Name of the SSM Parameter.
|
|
100
|
+
*/
|
|
101
|
+
name: string;
|
|
102
|
+
|
|
104
103
|
/**
|
|
105
104
|
* Version of the parameter
|
|
106
105
|
*/
|
|
@@ -176,17 +175,33 @@ export const SSMParameter = Resource(
|
|
|
176
175
|
"ssm::Parameter",
|
|
177
176
|
async function (
|
|
178
177
|
this: Context<SSMParameter>,
|
|
179
|
-
|
|
178
|
+
id: string,
|
|
180
179
|
props: SSMParameterProps,
|
|
181
180
|
): Promise<SSMParameter> {
|
|
181
|
+
const {
|
|
182
|
+
AddTagsToResourceCommand,
|
|
183
|
+
DeleteParameterCommand,
|
|
184
|
+
GetParameterCommand,
|
|
185
|
+
ParameterAlreadyExists,
|
|
186
|
+
ParameterNotFound,
|
|
187
|
+
PutParameterCommand,
|
|
188
|
+
SSMClient,
|
|
189
|
+
} = await importPeer(import("@aws-sdk/client-ssm"), "ssm::Parameter");
|
|
182
190
|
const client = new SSMClient({});
|
|
183
191
|
|
|
192
|
+
const parameterName =
|
|
193
|
+
props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
|
|
194
|
+
|
|
195
|
+
if (this.phase === "update" && this.output.name !== parameterName) {
|
|
196
|
+
this.replace();
|
|
197
|
+
}
|
|
198
|
+
|
|
184
199
|
if (this.phase === "delete") {
|
|
185
200
|
try {
|
|
186
201
|
await ignore(ParameterNotFound.name, () =>
|
|
187
202
|
client.send(
|
|
188
203
|
new DeleteParameterCommand({
|
|
189
|
-
Name:
|
|
204
|
+
Name: parameterName,
|
|
190
205
|
}),
|
|
191
206
|
),
|
|
192
207
|
);
|
|
@@ -217,7 +232,7 @@ export const SSMParameter = Resource(
|
|
|
217
232
|
try {
|
|
218
233
|
await client.send(
|
|
219
234
|
new PutParameterCommand({
|
|
220
|
-
Name:
|
|
235
|
+
Name: parameterName,
|
|
221
236
|
Value: parameterValue,
|
|
222
237
|
Type: parameterType,
|
|
223
238
|
Description: props.description,
|
|
@@ -247,7 +262,7 @@ export const SSMParameter = Resource(
|
|
|
247
262
|
if (error instanceof ParameterAlreadyExists) {
|
|
248
263
|
await client.send(
|
|
249
264
|
new PutParameterCommand({
|
|
250
|
-
Name:
|
|
265
|
+
Name: parameterName,
|
|
251
266
|
Value: parameterValue,
|
|
252
267
|
Type: parameterType,
|
|
253
268
|
Description: props.description,
|
|
@@ -278,7 +293,7 @@ export const SSMParameter = Resource(
|
|
|
278
293
|
await client.send(
|
|
279
294
|
new AddTagsToResourceCommand({
|
|
280
295
|
ResourceType: "Parameter",
|
|
281
|
-
ResourceId:
|
|
296
|
+
ResourceId: parameterName,
|
|
282
297
|
Tags: tags,
|
|
283
298
|
}),
|
|
284
299
|
);
|
|
@@ -290,13 +305,15 @@ export const SSMParameter = Resource(
|
|
|
290
305
|
// Get the updated parameter
|
|
291
306
|
const parameter = await client.send(
|
|
292
307
|
new GetParameterCommand({
|
|
293
|
-
Name:
|
|
308
|
+
Name: parameterName,
|
|
294
309
|
WithDecryption: true,
|
|
295
310
|
}),
|
|
296
311
|
);
|
|
297
312
|
|
|
298
313
|
if (!parameter?.Parameter) {
|
|
299
|
-
throw new Error(
|
|
314
|
+
throw new Error(
|
|
315
|
+
`Failed to create or update parameter ${parameterName}`,
|
|
316
|
+
);
|
|
300
317
|
}
|
|
301
318
|
|
|
302
319
|
return this({
|
|
@@ -304,12 +321,15 @@ export const SSMParameter = Resource(
|
|
|
304
321
|
arn: parameter.Parameter.ARN!,
|
|
305
322
|
version: parameter.Parameter.Version!,
|
|
306
323
|
lastModifiedDate: parameter.Parameter.LastModifiedDate!,
|
|
307
|
-
name: parameter.Parameter.Name ??
|
|
324
|
+
name: parameter.Parameter.Name ?? parameterName,
|
|
308
325
|
value: props.value,
|
|
309
326
|
type: (parameter.Parameter.Type as any) ?? parameterType,
|
|
310
327
|
} as SSMParameter);
|
|
311
328
|
} catch (error: any) {
|
|
312
|
-
logger.error(
|
|
329
|
+
logger.error(
|
|
330
|
+
`Error creating/updating parameter ${parameterName}:`,
|
|
331
|
+
error,
|
|
332
|
+
);
|
|
313
333
|
throw error;
|
|
314
334
|
}
|
|
315
335
|
},
|
package/src/aws/table.ts
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CreateTableCommand,
|
|
3
|
-
DeleteTableCommand,
|
|
4
|
-
DescribeTableCommand,
|
|
5
|
-
DynamoDBClient,
|
|
6
|
-
type KeySchemaElement,
|
|
7
|
-
ResourceNotFoundException,
|
|
8
|
-
} from "@aws-sdk/client-dynamodb";
|
|
1
|
+
import type { KeySchemaElement } from "@aws-sdk/client-dynamodb";
|
|
9
2
|
import type { Context } from "../context.ts";
|
|
10
3
|
import { Resource } from "../resource.ts";
|
|
11
4
|
import { ignore } from "../util/ignore.ts";
|
|
5
|
+
import { importPeer } from "../util/peer.ts";
|
|
12
6
|
import { retry } from "./retry.ts";
|
|
13
7
|
|
|
14
8
|
/**
|
|
@@ -17,8 +11,10 @@ import { retry } from "./retry.ts";
|
|
|
17
11
|
export interface TableProps {
|
|
18
12
|
/**
|
|
19
13
|
* Name of the DynamoDB table
|
|
14
|
+
*
|
|
15
|
+
* @default ${app}-${stage}-${id}
|
|
20
16
|
*/
|
|
21
|
-
tableName
|
|
17
|
+
tableName?: string;
|
|
22
18
|
|
|
23
19
|
/**
|
|
24
20
|
* Primary partition key (hash key) configuration
|
|
@@ -88,6 +84,11 @@ export interface Table extends Resource<"dynamo::Table">, TableProps {
|
|
|
88
84
|
*/
|
|
89
85
|
arn: string;
|
|
90
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Name of the DynamoDB Table.
|
|
89
|
+
*/
|
|
90
|
+
tableName: string;
|
|
91
|
+
|
|
91
92
|
/**
|
|
92
93
|
* ARN of the table's stream if enabled
|
|
93
94
|
* Format: arn:aws:dynamodb:region:account-id:table/table-name/stream/timestamp
|
|
@@ -140,17 +141,33 @@ export const Table = Resource(
|
|
|
140
141
|
"dynamo::Table",
|
|
141
142
|
async function (
|
|
142
143
|
this: Context<Table>,
|
|
143
|
-
|
|
144
|
+
id: string,
|
|
144
145
|
props: TableProps,
|
|
145
146
|
): Promise<Table> {
|
|
147
|
+
const {
|
|
148
|
+
CreateTableCommand,
|
|
149
|
+
DeleteTableCommand,
|
|
150
|
+
DescribeTableCommand,
|
|
151
|
+
DynamoDBClient,
|
|
152
|
+
ResourceNotFoundException,
|
|
153
|
+
} = await importPeer(import("@aws-sdk/client-dynamodb"), "dynamo::Table");
|
|
146
154
|
const client = new DynamoDBClient({});
|
|
147
155
|
|
|
156
|
+
const tableName =
|
|
157
|
+
props.tableName ??
|
|
158
|
+
this.output?.tableName ??
|
|
159
|
+
this.scope.createPhysicalName(id);
|
|
160
|
+
|
|
161
|
+
if (this.phase === "update" && this.output?.tableName !== tableName) {
|
|
162
|
+
this.replace();
|
|
163
|
+
}
|
|
164
|
+
|
|
148
165
|
if (this.phase === "delete") {
|
|
149
166
|
await retry(async () => {
|
|
150
167
|
await ignore(ResourceNotFoundException.name, () =>
|
|
151
168
|
client.send(
|
|
152
169
|
new DeleteTableCommand({
|
|
153
|
-
TableName:
|
|
170
|
+
TableName: tableName,
|
|
154
171
|
}),
|
|
155
172
|
),
|
|
156
173
|
);
|
|
@@ -165,7 +182,7 @@ export const Table = Resource(
|
|
|
165
182
|
try {
|
|
166
183
|
await client.send(
|
|
167
184
|
new DescribeTableCommand({
|
|
168
|
-
TableName:
|
|
185
|
+
TableName: tableName,
|
|
169
186
|
}),
|
|
170
187
|
);
|
|
171
188
|
// If we get here, table still exists
|
|
@@ -184,7 +201,7 @@ export const Table = Resource(
|
|
|
184
201
|
|
|
185
202
|
if (!tableDeleted) {
|
|
186
203
|
throw new Error(
|
|
187
|
-
`Timed out waiting for table ${
|
|
204
|
+
`Timed out waiting for table ${tableName} to be deleted`,
|
|
188
205
|
);
|
|
189
206
|
}
|
|
190
207
|
|
|
@@ -222,7 +239,7 @@ export const Table = Resource(
|
|
|
222
239
|
// First check if table already exists
|
|
223
240
|
const describeResponse = await client.send(
|
|
224
241
|
new DescribeTableCommand({
|
|
225
|
-
TableName:
|
|
242
|
+
TableName: tableName,
|
|
226
243
|
}),
|
|
227
244
|
);
|
|
228
245
|
|
|
@@ -240,7 +257,7 @@ export const Table = Resource(
|
|
|
240
257
|
// Table doesn't exist, try to create it
|
|
241
258
|
await client.send(
|
|
242
259
|
new CreateTableCommand({
|
|
243
|
-
TableName:
|
|
260
|
+
TableName: tableName,
|
|
244
261
|
AttributeDefinitions: attributeDefinitions,
|
|
245
262
|
KeySchema: keySchema,
|
|
246
263
|
BillingMode: props.billingMode || "PAY_PER_REQUEST",
|
|
@@ -277,7 +294,7 @@ export const Table = Resource(
|
|
|
277
294
|
async () =>
|
|
278
295
|
await client.send(
|
|
279
296
|
new DescribeTableCommand({
|
|
280
|
-
TableName:
|
|
297
|
+
TableName: tableName,
|
|
281
298
|
}),
|
|
282
299
|
),
|
|
283
300
|
);
|
|
@@ -302,13 +319,14 @@ export const Table = Resource(
|
|
|
302
319
|
|
|
303
320
|
if (!tableActive) {
|
|
304
321
|
throw new Error(
|
|
305
|
-
`Timed out waiting for table ${
|
|
322
|
+
`Timed out waiting for table ${tableName} to become active`,
|
|
306
323
|
);
|
|
307
324
|
}
|
|
308
325
|
|
|
309
326
|
return this({
|
|
310
327
|
...props,
|
|
311
328
|
arn: tableDescription!.TableArn!,
|
|
329
|
+
tableName,
|
|
312
330
|
streamArn: tableDescription!.LatestStreamArn,
|
|
313
331
|
tableId: tableDescription!.TableId!,
|
|
314
332
|
});
|