alchemy 0.24.1 → 0.26.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/README.md +7 -0
- package/lib/ai/astro-file.d.ts.map +1 -1
- package/lib/ai/astro-file.js +2 -1
- package/lib/ai/astro-file.js.map +1 -1
- package/lib/ai/client.d.ts.map +1 -1
- package/lib/ai/client.js +3 -2
- package/lib/ai/client.js.map +1 -1
- package/lib/alchemy.d.ts +7 -0
- package/lib/alchemy.d.ts.map +1 -1
- package/lib/alchemy.js +19 -3
- package/lib/alchemy.js.map +1 -1
- package/lib/apply.d.ts.map +1 -1
- package/lib/apply.js +63 -5
- package/lib/apply.js.map +1 -1
- package/lib/aws/control/client.js +5 -4
- package/lib/aws/control/client.js.map +1 -1
- package/lib/aws/control/properties.d.ts +6 -0
- package/lib/aws/control/properties.d.ts.map +1 -1
- package/lib/aws/control/properties.js +48 -0
- package/lib/aws/control/properties.js.map +1 -1
- package/lib/aws/control/resource.d.ts.map +1 -1
- package/lib/aws/control/resource.js +5 -3
- package/lib/aws/control/resource.js.map +1 -1
- package/lib/aws/control/types.d.ts +3969 -4862
- package/lib/aws/control/types.d.ts.map +1 -1
- package/lib/aws/control/types.js.map +1 -1
- package/lib/aws/function.d.ts.map +1 -1
- package/lib/aws/function.js +9 -8
- package/lib/aws/function.js.map +1 -1
- package/lib/aws/oidc/oidc-provider.d.ts.map +1 -1
- package/lib/aws/oidc/oidc-provider.js +3 -2
- package/lib/aws/oidc/oidc-provider.js.map +1 -1
- package/lib/aws/queue.d.ts.map +1 -1
- package/lib/aws/queue.js +3 -2
- package/lib/aws/queue.js.map +1 -1
- package/lib/aws/role.d.ts.map +1 -1
- package/lib/aws/role.js +3 -1
- package/lib/aws/role.js.map +1 -1
- package/lib/aws/ssm-parameter.d.ts.map +1 -1
- package/lib/aws/ssm-parameter.js +2 -1
- package/lib/aws/ssm-parameter.js.map +1 -1
- package/lib/cloudflare/account-api-token.d.ts.map +1 -1
- package/lib/cloudflare/account-api-token.js +3 -2
- package/lib/cloudflare/account-api-token.js.map +1 -1
- package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
- package/lib/cloudflare/ai-gateway.js +4 -3
- package/lib/cloudflare/ai-gateway.js.map +1 -1
- package/lib/cloudflare/ai.d.ts +21 -0
- package/lib/cloudflare/ai.d.ts.map +1 -1
- package/lib/cloudflare/ai.js +21 -0
- package/lib/cloudflare/ai.js.map +1 -1
- package/lib/cloudflare/api-error.d.ts +0 -9
- package/lib/cloudflare/api-error.d.ts.map +1 -1
- package/lib/cloudflare/api-error.js +24 -0
- package/lib/cloudflare/api-error.js.map +1 -1
- package/lib/cloudflare/api.d.ts.map +1 -1
- package/lib/cloudflare/api.js +5 -4
- package/lib/cloudflare/api.js.map +1 -1
- package/lib/cloudflare/assets.d.ts.map +1 -1
- package/lib/cloudflare/assets.js +26 -6
- package/lib/cloudflare/assets.js.map +1 -1
- package/lib/cloudflare/astro.d.ts +63 -0
- package/lib/cloudflare/astro.d.ts.map +1 -0
- package/lib/cloudflare/astro.js +133 -0
- package/lib/cloudflare/astro.js.map +1 -0
- package/lib/cloudflare/auth.d.ts.map +1 -1
- package/lib/cloudflare/auth.js +3 -2
- package/lib/cloudflare/auth.js.map +1 -1
- package/lib/cloudflare/bindings.d.ts +23 -2
- package/lib/cloudflare/bindings.d.ts.map +1 -1
- package/lib/cloudflare/bindings.js.map +1 -1
- package/lib/cloudflare/bound.d.ts +7 -1
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/bucket.d.ts.map +1 -1
- package/lib/cloudflare/bucket.js +12 -8
- package/lib/cloudflare/bucket.js.map +1 -1
- package/lib/cloudflare/bundle/bundle-worker.d.ts.map +1 -1
- package/lib/cloudflare/bundle/bundle-worker.js +2 -1
- package/lib/cloudflare/bundle/bundle-worker.js.map +1 -1
- package/lib/cloudflare/bundle/nodejs-compat-mode.d.ts.map +1 -1
- package/lib/cloudflare/bundle/nodejs-compat-mode.js +2 -1
- package/lib/cloudflare/bundle/nodejs-compat-mode.js.map +1 -1
- package/lib/cloudflare/custom-domain.d.ts.map +1 -1
- package/lib/cloudflare/custom-domain.js +10 -9
- package/lib/cloudflare/custom-domain.js.map +1 -1
- package/lib/cloudflare/d1-database.d.ts.map +1 -1
- package/lib/cloudflare/d1-database.js +11 -10
- package/lib/cloudflare/d1-database.js.map +1 -1
- package/lib/cloudflare/d1-export.d.ts.map +1 -1
- package/lib/cloudflare/d1-export.js +2 -1
- package/lib/cloudflare/d1-export.js.map +1 -1
- package/lib/cloudflare/d1-import.d.ts.map +1 -1
- package/lib/cloudflare/d1-import.js +2 -1
- package/lib/cloudflare/d1-import.js.map +1 -1
- package/lib/cloudflare/d1-migrations.d.ts.map +1 -1
- package/lib/cloudflare/d1-migrations.js +2 -1
- package/lib/cloudflare/d1-migrations.js.map +1 -1
- package/lib/cloudflare/dns-records.d.ts.map +1 -1
- package/lib/cloudflare/dns-records.js +5 -4
- package/lib/cloudflare/dns-records.js.map +1 -1
- package/lib/cloudflare/do-state-store/worker.d.ts.map +1 -1
- package/lib/cloudflare/do-state-store/worker.js +4 -0
- package/lib/cloudflare/do-state-store/worker.js.map +1 -1
- package/lib/cloudflare/email-address.d.ts +79 -0
- package/lib/cloudflare/email-address.d.ts.map +1 -0
- package/lib/cloudflare/email-address.js +112 -0
- package/lib/cloudflare/email-address.js.map +1 -0
- package/lib/cloudflare/email-catch-all.d.ts +123 -0
- package/lib/cloudflare/email-catch-all.d.ts.map +1 -0
- package/lib/cloudflare/email-catch-all.js +124 -0
- package/lib/cloudflare/email-catch-all.js.map +1 -0
- package/lib/cloudflare/email-routing.d.ts +89 -0
- package/lib/cloudflare/email-routing.d.ts.map +1 -0
- package/lib/cloudflare/email-routing.js +120 -0
- package/lib/cloudflare/email-routing.js.map +1 -0
- package/lib/cloudflare/email-rule.d.ts +196 -0
- package/lib/cloudflare/email-rule.d.ts.map +1 -0
- package/lib/cloudflare/email-rule.js +153 -0
- package/lib/cloudflare/email-rule.js.map +1 -0
- package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
- package/lib/cloudflare/hyperdrive.js +5 -4
- package/lib/cloudflare/hyperdrive.js.map +1 -1
- package/lib/cloudflare/images.d.ts +60 -0
- package/lib/cloudflare/images.d.ts.map +1 -0
- package/lib/cloudflare/images.js +60 -0
- package/lib/cloudflare/images.js.map +1 -0
- package/lib/cloudflare/index.d.ts +9 -0
- package/lib/cloudflare/index.d.ts.map +1 -1
- package/lib/cloudflare/index.js +9 -0
- package/lib/cloudflare/index.js.map +1 -1
- package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
- package/lib/cloudflare/kv-namespace.js +2 -1
- package/lib/cloudflare/kv-namespace.js.map +1 -1
- package/lib/cloudflare/pipeline.d.ts +7 -0
- package/lib/cloudflare/pipeline.d.ts.map +1 -1
- package/lib/cloudflare/pipeline.js +28 -2
- package/lib/cloudflare/pipeline.js.map +1 -1
- package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
- package/lib/cloudflare/queue-consumer.js +2 -1
- package/lib/cloudflare/queue-consumer.js.map +1 -1
- package/lib/cloudflare/queue.d.ts.map +1 -1
- package/lib/cloudflare/queue.js +0 -8
- package/lib/cloudflare/queue.js.map +1 -1
- package/lib/cloudflare/route.d.ts +26 -1
- package/lib/cloudflare/route.d.ts.map +1 -1
- package/lib/cloudflare/route.js +84 -16
- package/lib/cloudflare/route.js.map +1 -1
- package/lib/cloudflare/secret.d.ts +137 -0
- package/lib/cloudflare/secret.d.ts.map +1 -0
- package/lib/cloudflare/secret.js +122 -0
- package/lib/cloudflare/secret.js.map +1 -0
- package/lib/cloudflare/secrets-store.d.ts +145 -0
- package/lib/cloudflare/secrets-store.d.ts.map +1 -0
- package/lib/cloudflare/secrets-store.js +213 -0
- package/lib/cloudflare/secrets-store.js.map +1 -0
- package/lib/cloudflare/sveltekit.d.ts +49 -0
- package/lib/cloudflare/sveltekit.d.ts.map +1 -0
- package/lib/cloudflare/sveltekit.js +56 -0
- package/lib/cloudflare/sveltekit.js.map +1 -0
- package/lib/cloudflare/user.d.ts.map +1 -1
- package/lib/cloudflare/user.js +2 -1
- package/lib/cloudflare/user.js.map +1 -1
- package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
- package/lib/cloudflare/vectorize-index.js +6 -5
- package/lib/cloudflare/vectorize-index.js.map +1 -1
- package/lib/cloudflare/vectorize-metadata-index.d.ts.map +1 -1
- package/lib/cloudflare/vectorize-metadata-index.js +2 -1
- package/lib/cloudflare/vectorize-metadata-index.js.map +1 -1
- package/lib/cloudflare/website.d.ts.map +1 -1
- package/lib/cloudflare/website.js +7 -2
- package/lib/cloudflare/website.js.map +1 -1
- package/lib/cloudflare/worker-assets.d.ts +18 -0
- package/lib/cloudflare/worker-assets.d.ts.map +1 -1
- package/lib/cloudflare/worker-assets.js +61 -57
- package/lib/cloudflare/worker-assets.js.map +1 -1
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js +16 -1
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +31 -1
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +34 -8
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/wrangler.json.d.ts +14 -0
- package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
- package/lib/cloudflare/wrangler.json.js +23 -0
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/cloudflare/zone.d.ts +30 -2
- package/lib/cloudflare/zone.d.ts.map +1 -1
- package/lib/cloudflare/zone.js +57 -3
- package/lib/cloudflare/zone.js.map +1 -1
- package/lib/destroy.d.ts.map +1 -1
- package/lib/destroy.js +30 -13
- package/lib/destroy.js.map +1 -1
- package/lib/dns/godaddy.d.ts.map +1 -1
- package/lib/dns/godaddy.js +3 -2
- package/lib/dns/godaddy.js.map +1 -1
- package/lib/dns/import-dns.d.ts.map +1 -1
- package/lib/dns/import-dns.js +2 -1
- package/lib/dns/import-dns.js.map +1 -1
- package/lib/esbuild/bundle.d.ts +1 -1
- package/lib/esbuild/bundle.d.ts.map +1 -1
- package/lib/esbuild/bundle.js +2 -1
- package/lib/esbuild/bundle.js.map +1 -1
- package/lib/fs/copy-file.d.ts.map +1 -1
- package/lib/fs/copy-file.js +2 -1
- package/lib/fs/copy-file.js.map +1 -1
- package/lib/fs/file.d.ts.map +1 -1
- package/lib/fs/file.js +2 -1
- package/lib/fs/file.js.map +1 -1
- package/lib/github/client.d.ts.map +1 -1
- package/lib/github/client.js +11 -10
- package/lib/github/client.js.map +1 -1
- package/lib/github/repository-environment.d.ts.map +1 -1
- package/lib/github/repository-environment.js +5 -4
- package/lib/github/repository-environment.js.map +1 -1
- package/lib/github/secret.d.ts.map +1 -1
- package/lib/github/secret.js +7 -6
- package/lib/github/secret.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/neon/project.d.ts.map +1 -1
- package/lib/neon/project.js +3 -2
- package/lib/neon/project.js.map +1 -1
- package/lib/planetscale/api.d.ts +53 -0
- package/lib/planetscale/api.d.ts.map +1 -0
- package/lib/planetscale/api.js +84 -0
- package/lib/planetscale/api.js.map +1 -0
- package/lib/planetscale/branch.d.ts +129 -0
- package/lib/planetscale/branch.d.ts.map +1 -0
- package/lib/planetscale/branch.js +161 -0
- package/lib/planetscale/branch.js.map +1 -0
- package/lib/planetscale/database.d.ts +143 -0
- package/lib/planetscale/database.d.ts.map +1 -0
- package/lib/planetscale/database.js +184 -0
- package/lib/planetscale/database.js.map +1 -0
- package/lib/planetscale/index.d.ts +5 -0
- package/lib/planetscale/index.d.ts.map +1 -0
- package/lib/planetscale/index.js +5 -0
- package/lib/planetscale/index.js.map +1 -0
- package/lib/planetscale/utils.d.ts +15 -0
- package/lib/planetscale/utils.d.ts.map +1 -0
- package/lib/planetscale/utils.js +95 -0
- package/lib/planetscale/utils.js.map +1 -0
- package/lib/resource.js +7 -1
- package/lib/resource.js.map +1 -1
- package/lib/runtime/plugin.d.ts.map +1 -1
- package/lib/runtime/plugin.js +2 -1
- package/lib/runtime/plugin.js.map +1 -1
- package/lib/scope.d.ts +13 -2
- package/lib/scope.d.ts.map +1 -1
- package/lib/scope.js +53 -10
- package/lib/scope.js.map +1 -1
- package/lib/sentry/client-key.d.ts.map +1 -1
- package/lib/sentry/client-key.js +5 -4
- package/lib/sentry/client-key.js.map +1 -1
- package/lib/sentry/project.d.ts.map +1 -1
- package/lib/sentry/project.js +5 -4
- package/lib/sentry/project.js.map +1 -1
- package/lib/sentry/team.d.ts.map +1 -1
- package/lib/sentry/team.js +5 -4
- package/lib/sentry/team.js.map +1 -1
- package/lib/stripe/card.d.ts.map +1 -1
- package/lib/stripe/card.js +2 -1
- package/lib/stripe/card.js.map +1 -1
- package/lib/stripe/client.d.ts.map +1 -1
- package/lib/stripe/client.js +3 -2
- package/lib/stripe/client.js.map +1 -1
- package/lib/stripe/coupon.d.ts.map +1 -1
- package/lib/stripe/coupon.js +2 -1
- package/lib/stripe/coupon.js.map +1 -1
- package/lib/stripe/customer.d.ts.map +1 -1
- package/lib/stripe/customer.js +2 -1
- package/lib/stripe/customer.js.map +1 -1
- package/lib/stripe/entitlements-feature.d.ts.map +1 -1
- package/lib/stripe/entitlements-feature.js +2 -1
- package/lib/stripe/entitlements-feature.js.map +1 -1
- package/lib/stripe/file.d.ts.map +1 -1
- package/lib/stripe/file.js +2 -1
- package/lib/stripe/file.js.map +1 -1
- package/lib/stripe/meter.d.ts.map +1 -1
- package/lib/stripe/meter.js +4 -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 +2 -1
- package/lib/stripe/portal-configuration.js.map +1 -1
- package/lib/stripe/price.d.ts.map +1 -1
- package/lib/stripe/price.js +2 -1
- package/lib/stripe/price.js.map +1 -1
- package/lib/stripe/product-feature.d.ts.map +1 -1
- package/lib/stripe/product-feature.js +2 -1
- package/lib/stripe/product-feature.js.map +1 -1
- package/lib/stripe/product.d.ts.map +1 -1
- package/lib/stripe/product.js +2 -1
- package/lib/stripe/product.js.map +1 -1
- package/lib/stripe/promotion-code.d.ts.map +1 -1
- package/lib/stripe/promotion-code.js +2 -1
- 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 +2 -1
- 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 +2 -1
- package/lib/stripe/tax-rate.js.map +1 -1
- package/lib/stripe/webhook.d.ts.map +1 -1
- package/lib/stripe/webhook.js +3 -2
- package/lib/stripe/webhook.js.map +1 -1
- package/lib/test/bun.d.ts.map +1 -1
- package/lib/test/bun.js +6 -1
- package/lib/test/bun.js.map +1 -1
- package/lib/test/prune.js +7 -1
- package/lib/test/prune.js.map +1 -1
- package/lib/test/vitest.d.ts.map +1 -1
- package/lib/test/vitest.js +2 -0
- package/lib/test/vitest.js.map +1 -1
- package/lib/upstash/redis.d.ts.map +1 -1
- package/lib/upstash/redis.js +2 -1
- package/lib/upstash/redis.js.map +1 -1
- package/lib/util/async-queue.d.ts +35 -0
- package/lib/util/async-queue.d.ts.map +1 -0
- package/lib/util/async-queue.js +87 -0
- package/lib/util/async-queue.js.map +1 -0
- package/lib/util/cli.d.ts +37 -0
- package/lib/util/cli.d.ts.map +1 -0
- package/lib/util/cli.js +90 -0
- package/lib/util/cli.js.map +1 -0
- package/lib/util/ignore-matcher.d.ts +94 -0
- package/lib/util/ignore-matcher.d.ts.map +1 -0
- package/lib/util/ignore-matcher.js +616 -0
- package/lib/util/ignore-matcher.js.map +1 -0
- package/lib/util/logger.d.ts +3 -0
- package/lib/util/logger.d.ts.map +1 -0
- package/lib/util/logger.js +15 -0
- package/lib/util/logger.js.map +1 -0
- package/lib/util/retry.d.ts.map +1 -1
- package/lib/util/retry.js +0 -1
- package/lib/util/retry.js.map +1 -1
- package/lib/util/safe-fetch.d.ts.map +1 -1
- package/lib/util/safe-fetch.js +2 -1
- package/lib/util/safe-fetch.js.map +1 -1
- package/lib/util/telemetry/client.d.ts +32 -0
- package/lib/util/telemetry/client.d.ts.map +1 -0
- package/lib/util/telemetry/client.js +94 -0
- package/lib/util/telemetry/client.js.map +1 -0
- package/lib/util/telemetry/constants.d.ts +4 -0
- package/lib/util/telemetry/constants.d.ts.map +1 -0
- package/lib/util/telemetry/constants.js +8 -0
- package/lib/util/telemetry/constants.js.map +1 -0
- package/lib/util/telemetry/context.d.ts +15 -0
- package/lib/util/telemetry/context.d.ts.map +1 -0
- package/lib/util/telemetry/context.js +128 -0
- package/lib/util/telemetry/context.js.map +1 -0
- package/lib/util/telemetry/index.d.ts +3 -0
- package/lib/util/telemetry/index.d.ts.map +1 -0
- package/lib/util/telemetry/index.js +3 -0
- package/lib/util/telemetry/index.js.map +1 -0
- package/lib/util/telemetry/types.d.ts +59 -0
- package/lib/util/telemetry/types.d.ts.map +1 -0
- package/lib/util/telemetry/types.js +1 -0
- package/lib/util/telemetry/types.js.map +1 -0
- package/lib/util/xdg-paths.d.ts +9 -0
- package/lib/util/xdg-paths.d.ts.map +1 -0
- package/lib/util/xdg-paths.js +41 -0
- package/lib/util/xdg-paths.js.map +1 -0
- package/lib/vercel/project.d.ts.map +1 -1
- package/lib/vercel/project.js +2 -1
- package/lib/vercel/project.js.map +1 -1
- package/lib/web/astro.d.ts.map +1 -1
- package/lib/web/astro.js +2 -1
- package/lib/web/astro.js.map +1 -1
- package/lib/web/shadcn.d.ts.map +1 -1
- package/lib/web/shadcn.js +2 -1
- package/lib/web/shadcn.js.map +1 -1
- package/lib/web/vite.d.ts.map +1 -1
- package/lib/web/vite.js +3 -2
- package/lib/web/vite.js.map +1 -1
- package/lib/web/vitepress/dependencies.d.ts.map +1 -1
- package/lib/web/vitepress/dependencies.js +2 -1
- package/lib/web/vitepress/dependencies.js.map +1 -1
- package/lib/web/vitepress/vitepress.d.ts.map +1 -1
- package/lib/web/vitepress/vitepress.js +2 -1
- package/lib/web/vitepress/vitepress.js.map +1 -1
- package/package.json +7 -5
- package/src/ai/astro-file.ts +2 -1
- package/src/ai/client.ts +3 -2
- package/src/alchemy.ts +28 -3
- package/src/apply.ts +66 -5
- package/src/aws/control/client.ts +5 -5
- package/src/aws/control/properties.ts +48 -0
- package/src/aws/control/resource.ts +5 -3
- package/src/aws/control/types.ts +3988 -6301
- package/src/aws/function.ts +9 -8
- package/src/aws/oidc/oidc-provider.ts +3 -2
- package/src/aws/queue.ts +3 -2
- package/src/aws/role.ts +3 -1
- package/src/aws/ssm-parameter.ts +2 -1
- package/src/cloudflare/account-api-token.ts +3 -2
- package/src/cloudflare/ai-gateway.ts +4 -3
- package/src/cloudflare/ai.ts +21 -0
- package/src/cloudflare/api-error.ts +36 -0
- package/src/cloudflare/api.ts +9 -4
- package/src/cloudflare/assets.ts +30 -6
- package/src/cloudflare/astro.ts +176 -0
- package/src/cloudflare/auth.ts +3 -2
- package/src/cloudflare/bindings.ts +27 -0
- package/src/cloudflare/bound.ts +31 -17
- package/src/cloudflare/bucket.ts +15 -8
- package/src/cloudflare/bundle/bundle-worker.ts +2 -1
- package/src/cloudflare/bundle/nodejs-compat-mode.ts +2 -1
- package/src/cloudflare/custom-domain.ts +10 -9
- package/src/cloudflare/d1-database.ts +11 -10
- package/src/cloudflare/d1-export.ts +2 -1
- package/src/cloudflare/d1-import.ts +2 -1
- package/src/cloudflare/d1-migrations.ts +2 -1
- package/src/cloudflare/dns-records.ts +5 -4
- package/src/cloudflare/do-state-store/worker.ts +4 -0
- package/src/cloudflare/email-address.ts +203 -0
- package/src/cloudflare/email-catch-all.ts +248 -0
- package/src/cloudflare/email-routing.ts +230 -0
- package/src/cloudflare/email-rule.ts +322 -0
- package/src/cloudflare/hyperdrive.ts +5 -4
- package/src/cloudflare/images.ts +59 -0
- package/src/cloudflare/index.ts +9 -0
- package/src/cloudflare/kv-namespace.ts +2 -1
- package/src/cloudflare/pipeline.ts +38 -2
- package/src/cloudflare/queue-consumer.ts +2 -1
- package/src/cloudflare/queue.ts +0 -12
- package/src/cloudflare/route.ts +118 -18
- package/src/cloudflare/secret.ts +253 -0
- package/src/cloudflare/secrets-store.ts +420 -0
- package/src/cloudflare/sveltekit.ts +72 -0
- package/src/cloudflare/user.ts +2 -1
- package/src/cloudflare/vectorize-index.ts +6 -5
- package/src/cloudflare/vectorize-metadata-index.ts +2 -1
- package/src/cloudflare/website.ts +76 -66
- package/src/cloudflare/worker-assets.ts +95 -77
- package/src/cloudflare/worker-metadata.ts +14 -1
- package/src/cloudflare/worker.ts +76 -9
- package/src/cloudflare/wrangler.json.ts +42 -0
- package/src/cloudflare/zone.ts +79 -5
- package/src/destroy.ts +35 -17
- package/src/dns/godaddy.ts +3 -2
- package/src/dns/import-dns.ts +2 -1
- package/src/esbuild/bundle.ts +2 -1
- package/src/fs/copy-file.ts +2 -1
- package/src/fs/file.ts +3 -1
- package/src/github/client.ts +11 -10
- package/src/github/repository-environment.ts +5 -4
- package/src/github/secret.ts +7 -6
- package/src/index.ts +2 -1
- package/src/neon/project.ts +3 -2
- package/src/planetscale/api.ts +115 -0
- package/src/planetscale/branch.ts +352 -0
- package/src/planetscale/database.ts +394 -0
- package/src/planetscale/index.ts +4 -0
- package/src/planetscale/utils.ts +189 -0
- package/src/resource.ts +7 -1
- package/src/runtime/plugin.ts +2 -1
- package/src/scope.ts +64 -13
- package/src/sentry/client-key.ts +5 -4
- package/src/sentry/project.ts +5 -4
- package/src/sentry/team.ts +5 -4
- package/src/stripe/card.ts +2 -1
- package/src/stripe/client.ts +3 -2
- package/src/stripe/coupon.ts +2 -1
- package/src/stripe/customer.ts +2 -1
- package/src/stripe/entitlements-feature.ts +2 -1
- package/src/stripe/file.ts +2 -1
- package/src/stripe/meter.ts +4 -2
- package/src/stripe/portal-configuration.ts +2 -1
- package/src/stripe/price.ts +2 -1
- package/src/stripe/product-feature.ts +2 -1
- package/src/stripe/product.ts +2 -1
- package/src/stripe/promotion-code.ts +2 -1
- package/src/stripe/shipping-rate.ts +2 -1
- package/src/stripe/tax-rate.ts +2 -1
- package/src/stripe/webhook.ts +3 -2
- package/src/test/bun.ts +6 -1
- package/src/test/prune.ts +7 -1
- package/src/test/vitest.ts +2 -0
- package/src/upstash/redis.ts +2 -1
- package/src/util/async-queue.ts +97 -0
- package/src/util/cli.tsx +221 -0
- package/src/util/ignore-matcher.ts +873 -0
- package/src/util/logger.ts +17 -0
- package/src/util/retry.ts +0 -1
- package/src/util/safe-fetch.ts +2 -1
- package/src/util/telemetry/client.ts +127 -0
- package/src/util/telemetry/constants.ts +13 -0
- package/src/util/telemetry/context.ts +154 -0
- package/src/util/telemetry/index.ts +2 -0
- package/src/util/telemetry/types.ts +83 -0
- package/src/util/xdg-paths.ts +48 -0
- package/src/vercel/project.ts +2 -1
- package/src/web/astro.ts +2 -1
- package/src/web/shadcn.ts +2 -1
- package/src/web/vite.ts +3 -2
- package/src/web/vitepress/dependencies.ts +2 -1
- package/src/web/vitepress/vitepress.ts +2 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { Context } from "../context.ts";
|
|
2
|
+
import { Resource } from "../resource.ts";
|
|
3
|
+
import type { Secret } from "../secret.ts";
|
|
4
|
+
import { type PlanetScaleClusterSize } from "./utils.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Properties for creating or updating a PlanetScale Branch
|
|
7
|
+
*/
|
|
8
|
+
export interface BranchProps {
|
|
9
|
+
/**
|
|
10
|
+
* The name of the branch
|
|
11
|
+
*/
|
|
12
|
+
name: string;
|
|
13
|
+
/**
|
|
14
|
+
* The organization ID
|
|
15
|
+
*/
|
|
16
|
+
organizationId: string;
|
|
17
|
+
/**
|
|
18
|
+
* The database name
|
|
19
|
+
*/
|
|
20
|
+
databaseName: string;
|
|
21
|
+
/**
|
|
22
|
+
* PlanetScale API token (overrides environment variable)
|
|
23
|
+
*/
|
|
24
|
+
apiKey?: Secret;
|
|
25
|
+
/**
|
|
26
|
+
* Whether or not the branch should be set to a production branch or not.
|
|
27
|
+
*/
|
|
28
|
+
isProduction: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Whether to adopt an existing branch if it exists.
|
|
31
|
+
* If false and the branch exists, an error will be thrown.
|
|
32
|
+
* If true and the branch exists, it will be updated with the provided properties.
|
|
33
|
+
*/
|
|
34
|
+
adopt?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* The parent branch name or Branch object
|
|
37
|
+
*/
|
|
38
|
+
parentBranch?: string | Branch;
|
|
39
|
+
/**
|
|
40
|
+
* If provided, restores the backup's schema and data to the new branch.
|
|
41
|
+
* Must have restore_production_branch_backup(s) or restore_backup(s) access.
|
|
42
|
+
*
|
|
43
|
+
* Ignored if the branch already exists.
|
|
44
|
+
*/
|
|
45
|
+
backupId?: string;
|
|
46
|
+
/**
|
|
47
|
+
* If provided, restores the last successful backup's schema and data to the new branch.
|
|
48
|
+
* Must have restore_production_branch_backup(s) or restore_backup(s) access,
|
|
49
|
+
* in addition to Data Branching being enabled for the branch.
|
|
50
|
+
* Use 'last_successful_backup' or empty string.
|
|
51
|
+
*
|
|
52
|
+
* Ignored if the branch already exists.
|
|
53
|
+
*/
|
|
54
|
+
seedData?: string;
|
|
55
|
+
/**
|
|
56
|
+
* The database cluster size is required if a backup_id is provided. If the branch is not a production branch, the cluster size MUST be "PS_DEV".
|
|
57
|
+
*/
|
|
58
|
+
clusterSize?: PlanetScaleClusterSize;
|
|
59
|
+
/**
|
|
60
|
+
* Enable or disable safe migrations on this branch
|
|
61
|
+
*/
|
|
62
|
+
safeMigrations?: boolean;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Represents a PlanetScale Branch
|
|
66
|
+
*/
|
|
67
|
+
export interface Branch extends Resource<"planetscale::Branch">, BranchProps {
|
|
68
|
+
/**
|
|
69
|
+
* The name of the branch
|
|
70
|
+
*/
|
|
71
|
+
name: string;
|
|
72
|
+
/**
|
|
73
|
+
* The name of the parent branch
|
|
74
|
+
*/
|
|
75
|
+
parentBranch: string;
|
|
76
|
+
/**
|
|
77
|
+
* Time at which the branch was created
|
|
78
|
+
*/
|
|
79
|
+
createdAt: string;
|
|
80
|
+
/**
|
|
81
|
+
* Time at which the branch was last updated
|
|
82
|
+
*/
|
|
83
|
+
updatedAt: string;
|
|
84
|
+
/**
|
|
85
|
+
* HTML URL to access the branch
|
|
86
|
+
*/
|
|
87
|
+
htmlUrl: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create or manage a PlanetScale database branch
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* // Create a branch from 'main'
|
|
94
|
+
* const branch = await Branch("feature-123", {
|
|
95
|
+
* name: "feature-123",
|
|
96
|
+
* organizationId: "my-org",
|
|
97
|
+
* databaseName: "my-database",
|
|
98
|
+
* parentBranch: "main"
|
|
99
|
+
* });
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* // Create a branch from another branch object
|
|
103
|
+
* const parentBranch = await Branch("staging", {
|
|
104
|
+
* name: "staging",
|
|
105
|
+
* organizationId: "my-org",
|
|
106
|
+
* databaseName: "my-database",
|
|
107
|
+
* parentBranch: "main"
|
|
108
|
+
* });
|
|
109
|
+
*
|
|
110
|
+
* const featureBranch = await Branch("feature-456", {
|
|
111
|
+
* name: "feature-456",
|
|
112
|
+
* organizationId: "my-org",
|
|
113
|
+
* databaseName: "my-database",
|
|
114
|
+
* parentBranch: parentBranch // Using Branch object instead of string
|
|
115
|
+
* });
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* // Create a branch from a backup
|
|
119
|
+
* const branch = await Branch("restored-branch", {
|
|
120
|
+
* name: "restored-branch",
|
|
121
|
+
* organizationId: "my-org",
|
|
122
|
+
* databaseName: "my-database",
|
|
123
|
+
* parentBranch: "main",
|
|
124
|
+
* backupId: "backup-123",
|
|
125
|
+
* clusterSize: "PS_10"
|
|
126
|
+
* });
|
|
127
|
+
*/
|
|
128
|
+
export declare const Branch: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<Branch>, _id: string, props: BranchProps) => Promise<Branch>);
|
|
129
|
+
//# sourceMappingURL=branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/planetscale/branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IAEH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAErC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,QAAQ,CAAC,qBAAqB,CAAC,EAAE,WAAW;IAC1E;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,MAAM,yFAGT,OAAO,CAAC,MAAM,CAAC,OAChB,MAAM,SACJ,WAAW,KACjB,OAAO,CAAC,MAAM,CAAC,CAmMnB,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { Resource } from "../resource.js";
|
|
2
|
+
import { PlanetScaleApi } from "./api.js";
|
|
3
|
+
import { fixClusterSize, waitForDatabaseReady, } from "./utils.js";
|
|
4
|
+
/**
|
|
5
|
+
* Create or manage a PlanetScale database branch
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* // Create a branch from 'main'
|
|
9
|
+
* const branch = await Branch("feature-123", {
|
|
10
|
+
* name: "feature-123",
|
|
11
|
+
* organizationId: "my-org",
|
|
12
|
+
* databaseName: "my-database",
|
|
13
|
+
* parentBranch: "main"
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // Create a branch from another branch object
|
|
18
|
+
* const parentBranch = await Branch("staging", {
|
|
19
|
+
* name: "staging",
|
|
20
|
+
* organizationId: "my-org",
|
|
21
|
+
* databaseName: "my-database",
|
|
22
|
+
* parentBranch: "main"
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* const featureBranch = await Branch("feature-456", {
|
|
26
|
+
* name: "feature-456",
|
|
27
|
+
* organizationId: "my-org",
|
|
28
|
+
* databaseName: "my-database",
|
|
29
|
+
* parentBranch: parentBranch // Using Branch object instead of string
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* // Create a branch from a backup
|
|
34
|
+
* const branch = await Branch("restored-branch", {
|
|
35
|
+
* name: "restored-branch",
|
|
36
|
+
* organizationId: "my-org",
|
|
37
|
+
* databaseName: "my-database",
|
|
38
|
+
* parentBranch: "main",
|
|
39
|
+
* backupId: "backup-123",
|
|
40
|
+
* clusterSize: "PS_10"
|
|
41
|
+
* });
|
|
42
|
+
*/
|
|
43
|
+
export const Branch = Resource("planetscale::Branch", async function (_id, props) {
|
|
44
|
+
const apiKey = props.apiKey?.unencrypted || process.env.PLANETSCALE_API_TOKEN;
|
|
45
|
+
if (!apiKey) {
|
|
46
|
+
throw new Error("PLANETSCALE_API_TOKEN environment variable is required");
|
|
47
|
+
}
|
|
48
|
+
const api = new PlanetScaleApi({ apiKey });
|
|
49
|
+
if (this.phase === "delete") {
|
|
50
|
+
try {
|
|
51
|
+
if (this.output?.name) {
|
|
52
|
+
const response = await api.delete(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${this.output.name}`);
|
|
53
|
+
if (!response.ok && response.status !== 404) {
|
|
54
|
+
throw new Error(`Failed to delete branch: ${response.statusText} ${await response.text()}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error("Error deleting branch:", error);
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
return this.destroy();
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const parentBranchName = !props.parentBranch
|
|
66
|
+
? "main"
|
|
67
|
+
: typeof props.parentBranch === "string"
|
|
68
|
+
? props.parentBranch
|
|
69
|
+
: props.parentBranch.name;
|
|
70
|
+
if (typeof props.parentBranch !== "string" && props.parentBranch) {
|
|
71
|
+
await waitForDatabaseReady(api, props.organizationId, props.databaseName, props.parentBranch.name);
|
|
72
|
+
}
|
|
73
|
+
// Check if branch exists
|
|
74
|
+
const getResponse = await api.get(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${props.name}`);
|
|
75
|
+
if (!getResponse.ok && getResponse.status !== 404) {
|
|
76
|
+
// Error getting branch
|
|
77
|
+
throw new Error(`Failed to get branch: ${getResponse.statusText} ${await getResponse.text()}`);
|
|
78
|
+
}
|
|
79
|
+
if (getResponse.ok) {
|
|
80
|
+
// Branch exists
|
|
81
|
+
if (!props.adopt) {
|
|
82
|
+
throw new Error(`Branch ${props.name} already exists and adopt is false`);
|
|
83
|
+
}
|
|
84
|
+
const data = await getResponse.json();
|
|
85
|
+
const currentParentBranch = data.parent_branch || "main";
|
|
86
|
+
// Check immutable properties
|
|
87
|
+
if (props.parentBranch && parentBranchName !== currentParentBranch) {
|
|
88
|
+
throw new Error(`Cannot change parent branch from ${currentParentBranch} to ${parentBranchName}`);
|
|
89
|
+
}
|
|
90
|
+
if (this.output?.backupId) {
|
|
91
|
+
console.warn("BackupID is set, but branch already exists, so it will be ignored");
|
|
92
|
+
}
|
|
93
|
+
if (this.output?.seedData) {
|
|
94
|
+
console.warn("SeedData is set, but branch already exists, so it will be ignored");
|
|
95
|
+
}
|
|
96
|
+
// Update mutable properties if they've changed
|
|
97
|
+
if (props.safeMigrations !== undefined) {
|
|
98
|
+
const safeMigrationsResponse = await api[props.safeMigrations ? "post" : "delete"](`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${props.name}/safe-migrations`);
|
|
99
|
+
if (!safeMigrationsResponse.ok) {
|
|
100
|
+
throw new Error(`Failed to ${props.safeMigrations ? "enable" : "disable"} safe migrations: ${safeMigrationsResponse.statusText}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (props.clusterSize && data.cluster_size !== props.clusterSize) {
|
|
104
|
+
const clusterResponse = await api.patch(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${props.name}/cluster`, {
|
|
105
|
+
cluster_size: props.clusterSize,
|
|
106
|
+
});
|
|
107
|
+
if (!clusterResponse.ok) {
|
|
108
|
+
throw new Error(`Failed to update cluster size: ${clusterResponse.statusText}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return this({
|
|
112
|
+
...props,
|
|
113
|
+
name: props.name,
|
|
114
|
+
parentBranch: currentParentBranch,
|
|
115
|
+
createdAt: data.created_at,
|
|
116
|
+
updatedAt: data.updated_at,
|
|
117
|
+
htmlUrl: data.html_url,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
await waitForDatabaseReady(api, props.organizationId, props.databaseName);
|
|
121
|
+
// Branch doesn't exist, create it
|
|
122
|
+
const createResponse = await api.post(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches`, {
|
|
123
|
+
name: props.name,
|
|
124
|
+
parent_branch: parentBranchName,
|
|
125
|
+
backup_id: props.backupId,
|
|
126
|
+
seed_data: props.seedData,
|
|
127
|
+
cluster_size: props.clusterSize,
|
|
128
|
+
});
|
|
129
|
+
if (!createResponse.ok) {
|
|
130
|
+
throw new Error(`Failed to create branch: ${createResponse.statusText} ${await createResponse.text()}`);
|
|
131
|
+
}
|
|
132
|
+
const data = await createResponse.json();
|
|
133
|
+
// Handle safe migrations if specified
|
|
134
|
+
if (props.safeMigrations !== undefined) {
|
|
135
|
+
// We can't change the migrations mode if the database is not ready
|
|
136
|
+
await waitForDatabaseReady(api, props.organizationId, props.databaseName, props.name);
|
|
137
|
+
const safeMigrationsResponse = await api[props.safeMigrations ? "post" : "delete"](`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${props.name}/safe-migrations`);
|
|
138
|
+
if (!safeMigrationsResponse.ok) {
|
|
139
|
+
throw new Error(`Failed to ${props.safeMigrations ? "enable" : "disable"} safe migrations: ${safeMigrationsResponse.statusText} : ${await safeMigrationsResponse.text()}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Handle cluster size update if specified
|
|
143
|
+
if (props.clusterSize) {
|
|
144
|
+
// Wait for database to be ready before modifying cluster size
|
|
145
|
+
await fixClusterSize(api, props.organizationId, props.databaseName, props.name, props.clusterSize, true);
|
|
146
|
+
}
|
|
147
|
+
return this({
|
|
148
|
+
...props,
|
|
149
|
+
name: props.name,
|
|
150
|
+
parentBranch: data.parent_branch,
|
|
151
|
+
createdAt: data.created_at,
|
|
152
|
+
updatedAt: data.updated_at,
|
|
153
|
+
htmlUrl: data.html_url,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
console.error("Error managing branch:", error);
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/planetscale/branch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type { Context } from "../context.ts";
|
|
2
|
+
import { Resource } from "../resource.ts";
|
|
3
|
+
import type { Secret } from "../secret.ts";
|
|
4
|
+
import { type PlanetScaleClusterSize } from "./utils.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Properties for creating or updating a PlanetScale Database
|
|
7
|
+
*/
|
|
8
|
+
export interface DatabaseProps {
|
|
9
|
+
/**
|
|
10
|
+
* The name of the database
|
|
11
|
+
*/
|
|
12
|
+
name: string;
|
|
13
|
+
/**
|
|
14
|
+
* The organization ID where the database will be created
|
|
15
|
+
*/
|
|
16
|
+
organizationId: string;
|
|
17
|
+
/**
|
|
18
|
+
* PlanetScale API token (overrides environment variable)
|
|
19
|
+
*/
|
|
20
|
+
apiKey?: Secret;
|
|
21
|
+
/**
|
|
22
|
+
* Whether to adopt the database if it already exists in Planetscale
|
|
23
|
+
*/
|
|
24
|
+
adopt?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* The region where the database will be created (create only)
|
|
27
|
+
*/
|
|
28
|
+
region?: {
|
|
29
|
+
/**
|
|
30
|
+
* The slug identifier of the region
|
|
31
|
+
*/
|
|
32
|
+
slug: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Whether to require approval for deployments
|
|
36
|
+
*/
|
|
37
|
+
requireApprovalForDeploy?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Whether to allow data branching
|
|
40
|
+
*/
|
|
41
|
+
allowDataBranching?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Whether to enable automatic migrations
|
|
44
|
+
*/
|
|
45
|
+
automaticMigrations?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Whether to restrict branch creation to the same region as database
|
|
48
|
+
*/
|
|
49
|
+
restrictBranchRegion?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Whether to collect full queries from the database
|
|
52
|
+
*/
|
|
53
|
+
insightsRawQueries?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Whether web console can be used on production branch
|
|
56
|
+
*/
|
|
57
|
+
productionBranchWebConsole?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* The default branch of the database
|
|
60
|
+
*/
|
|
61
|
+
defaultBranch?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Migration framework to use on the database
|
|
64
|
+
*/
|
|
65
|
+
migrationFramework?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Name of table to use as migration table
|
|
68
|
+
*/
|
|
69
|
+
migrationTableName?: string;
|
|
70
|
+
/**
|
|
71
|
+
* The database cluster size (required)
|
|
72
|
+
*/
|
|
73
|
+
clusterSize: PlanetScaleClusterSize;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Represents a PlanetScale Database
|
|
77
|
+
*/
|
|
78
|
+
export interface Database extends Resource<"planetscale::Database">, DatabaseProps {
|
|
79
|
+
/**
|
|
80
|
+
* The unique identifier of the database
|
|
81
|
+
*/
|
|
82
|
+
id: string;
|
|
83
|
+
/**
|
|
84
|
+
* The current state of the database
|
|
85
|
+
*/
|
|
86
|
+
state: string;
|
|
87
|
+
/**
|
|
88
|
+
* The default branch name
|
|
89
|
+
*/
|
|
90
|
+
defaultBranch: string;
|
|
91
|
+
/**
|
|
92
|
+
* The plan type
|
|
93
|
+
*/
|
|
94
|
+
plan: string;
|
|
95
|
+
/**
|
|
96
|
+
* Time at which the database was created
|
|
97
|
+
*/
|
|
98
|
+
createdAt: string;
|
|
99
|
+
/**
|
|
100
|
+
* Time at which the database was last updated
|
|
101
|
+
*/
|
|
102
|
+
updatedAt: string;
|
|
103
|
+
/**
|
|
104
|
+
* HTML URL to access the database
|
|
105
|
+
*/
|
|
106
|
+
htmlUrl: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create, manage and delete PlanetScale databases
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* // Create a basic database in a specific organization
|
|
113
|
+
* const db = await Database("my-app-db", {
|
|
114
|
+
* name: "my-app-db",
|
|
115
|
+
* organizationId: "my-org",
|
|
116
|
+
* clusterSize: "PS_10"
|
|
117
|
+
* });
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* // Create a database with specific region and settings
|
|
121
|
+
* const db = await Database("my-app-db", {
|
|
122
|
+
* name: "my-app-db",
|
|
123
|
+
* organizationId: "my-org",
|
|
124
|
+
* region: {
|
|
125
|
+
* slug: "us-east"
|
|
126
|
+
* },
|
|
127
|
+
* clusterSize: "PS_10",
|
|
128
|
+
* requireApprovalForDeploy: true,
|
|
129
|
+
* allowDataBranching: true,
|
|
130
|
+
* automaticMigrations: true
|
|
131
|
+
* });
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* // Create a database with custom API key
|
|
135
|
+
* const db = await Database("my-app-db", {
|
|
136
|
+
* name: "my-app-db",
|
|
137
|
+
* organizationId: "my-org",
|
|
138
|
+
* apiKey: alchemy.secret(process.env.CUSTOM_PLANETSCALE_TOKEN),
|
|
139
|
+
* clusterSize: "PS_10"
|
|
140
|
+
* });
|
|
141
|
+
*/
|
|
142
|
+
export declare const Database: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<Database>, _id: string, props: DatabaseProps) => Promise<Database>);
|
|
143
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/planetscale/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAEL,KAAK,sBAAsB,EAE5B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,QACf,SAAQ,QAAQ,CAAC,uBAAuB,CAAC,EACvC,aAAa;IACf;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,QAAQ,yFAGX,OAAO,CAAC,QAAQ,CAAC,OAClB,MAAM,SACJ,aAAa,KACnB,OAAO,CAAC,QAAQ,CAAC,CAwNrB,CAAC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { Resource } from "../resource.js";
|
|
2
|
+
import { PlanetScaleApi } from "./api.js";
|
|
3
|
+
import { fixClusterSize, waitForDatabaseReady, } from "./utils.js";
|
|
4
|
+
/**
|
|
5
|
+
* Create, manage and delete PlanetScale databases
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* // Create a basic database in a specific organization
|
|
9
|
+
* const db = await Database("my-app-db", {
|
|
10
|
+
* name: "my-app-db",
|
|
11
|
+
* organizationId: "my-org",
|
|
12
|
+
* clusterSize: "PS_10"
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* // Create a database with specific region and settings
|
|
17
|
+
* const db = await Database("my-app-db", {
|
|
18
|
+
* name: "my-app-db",
|
|
19
|
+
* organizationId: "my-org",
|
|
20
|
+
* region: {
|
|
21
|
+
* slug: "us-east"
|
|
22
|
+
* },
|
|
23
|
+
* clusterSize: "PS_10",
|
|
24
|
+
* requireApprovalForDeploy: true,
|
|
25
|
+
* allowDataBranching: true,
|
|
26
|
+
* automaticMigrations: true
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* // Create a database with custom API key
|
|
31
|
+
* const db = await Database("my-app-db", {
|
|
32
|
+
* name: "my-app-db",
|
|
33
|
+
* organizationId: "my-org",
|
|
34
|
+
* apiKey: alchemy.secret(process.env.CUSTOM_PLANETSCALE_TOKEN),
|
|
35
|
+
* clusterSize: "PS_10"
|
|
36
|
+
* });
|
|
37
|
+
*/
|
|
38
|
+
export const Database = Resource("planetscale::Database", async function (_id, props) {
|
|
39
|
+
const apiKey = props.apiKey?.unencrypted || process.env.PLANETSCALE_API_TOKEN;
|
|
40
|
+
if (!apiKey) {
|
|
41
|
+
throw new Error("PLANETSCALE_API_TOKEN environment variable is required");
|
|
42
|
+
}
|
|
43
|
+
const api = new PlanetScaleApi({ apiKey });
|
|
44
|
+
if (this.phase === "delete") {
|
|
45
|
+
try {
|
|
46
|
+
if (this.output?.name) {
|
|
47
|
+
const response = await api.delete(`/organizations/${props.organizationId}/databases/${this.output.name}`);
|
|
48
|
+
if (!response.ok && response.status !== 404) {
|
|
49
|
+
throw new Error(`Failed to delete database: ${response.statusText} ${await response.text()}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error("Error deleting database:", error);
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
return this.destroy();
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
// Check if database exists
|
|
61
|
+
const getResponse = await api.get(`/organizations/${props.organizationId}/databases/${props.name}`);
|
|
62
|
+
const getData = await getResponse.json();
|
|
63
|
+
if (this.phase === "update" || (props.adopt && getResponse.ok)) {
|
|
64
|
+
if (!getResponse.ok) {
|
|
65
|
+
throw new Error(`Database ${props.name} not found`);
|
|
66
|
+
}
|
|
67
|
+
// Update database settings
|
|
68
|
+
// If updating to a non-'main' default branch, create it first
|
|
69
|
+
if (props.defaultBranch && props.defaultBranch !== "main") {
|
|
70
|
+
const branchResponse = await api.get(`/organizations/${props.organizationId}/databases/${props.name}/branches/${props.defaultBranch}`);
|
|
71
|
+
if (!getData.ready) {
|
|
72
|
+
await waitForDatabaseReady(api, props.organizationId, props.name);
|
|
73
|
+
}
|
|
74
|
+
if (!branchResponse.ok && branchResponse.status === 404) {
|
|
75
|
+
// Create the branch
|
|
76
|
+
const createBranchResponse = await api.post(`/organizations/${props.organizationId}/databases/${props.name}/branches`, {
|
|
77
|
+
name: props.defaultBranch,
|
|
78
|
+
parent_branch: "main",
|
|
79
|
+
});
|
|
80
|
+
if (!createBranchResponse.ok) {
|
|
81
|
+
throw new Error(`Failed to create default branch: ${createBranchResponse.statusText} ${await createBranchResponse.text()}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const updateResponse = await api.patch(`/organizations/${props.organizationId}/databases/${props.name}`, {
|
|
86
|
+
automatic_migrations: props.automaticMigrations,
|
|
87
|
+
migration_framework: props.migrationFramework,
|
|
88
|
+
migration_table_name: props.migrationTableName,
|
|
89
|
+
require_approval_for_deploy: props.requireApprovalForDeploy,
|
|
90
|
+
restrict_branch_region: props.restrictBranchRegion,
|
|
91
|
+
allow_data_branching: props.allowDataBranching,
|
|
92
|
+
insights_raw_queries: props.insightsRawQueries,
|
|
93
|
+
production_branch_web_console: props.productionBranchWebConsole,
|
|
94
|
+
default_branch: props.defaultBranch,
|
|
95
|
+
});
|
|
96
|
+
if (!updateResponse.ok) {
|
|
97
|
+
throw new Error(`Failed to update database: ${updateResponse.statusText} ${await updateResponse.text()}`);
|
|
98
|
+
}
|
|
99
|
+
await fixClusterSize(api, props.organizationId, props.name, props.defaultBranch || "main", props.clusterSize, getData.ready);
|
|
100
|
+
const data = await updateResponse.json();
|
|
101
|
+
return this({
|
|
102
|
+
...props,
|
|
103
|
+
id: data.id,
|
|
104
|
+
state: data.state,
|
|
105
|
+
defaultBranch: data.default_branch,
|
|
106
|
+
plan: data.plan,
|
|
107
|
+
createdAt: data.created_at,
|
|
108
|
+
updatedAt: data.updated_at,
|
|
109
|
+
htmlUrl: data.html_url,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
if (getResponse.ok) {
|
|
113
|
+
throw new Error(`Database with name ${props.name} already exists`);
|
|
114
|
+
}
|
|
115
|
+
// Create new database
|
|
116
|
+
const createResponse = await api.post(`/organizations/${props.organizationId}/databases`, {
|
|
117
|
+
name: props.name,
|
|
118
|
+
region_slug: props.region?.slug,
|
|
119
|
+
require_approval_for_deploy: props.requireApprovalForDeploy,
|
|
120
|
+
allow_data_branching: props.allowDataBranching,
|
|
121
|
+
automatic_migrations: props.automaticMigrations,
|
|
122
|
+
restrict_branch_region: props.restrictBranchRegion,
|
|
123
|
+
insights_raw_queries: props.insightsRawQueries,
|
|
124
|
+
production_branch_web_console: props.productionBranchWebConsole,
|
|
125
|
+
migration_framework: props.migrationFramework,
|
|
126
|
+
migration_table_name: props.migrationTableName,
|
|
127
|
+
cluster_size: props.clusterSize,
|
|
128
|
+
});
|
|
129
|
+
if (!createResponse.ok) {
|
|
130
|
+
throw new Error(`Failed to create database: ${createResponse.statusText} ${await createResponse.text()}`);
|
|
131
|
+
}
|
|
132
|
+
const data = await createResponse.json();
|
|
133
|
+
// If a non-'main' default branch is specified, create it
|
|
134
|
+
if (props.defaultBranch && props.defaultBranch !== "main") {
|
|
135
|
+
await waitForDatabaseReady(api, props.organizationId, props.name);
|
|
136
|
+
// Check if branch exists
|
|
137
|
+
const branchResponse = await api.get(`/organizations/${props.organizationId}/databases/${props.name}/branches/${props.defaultBranch}`);
|
|
138
|
+
if (!branchResponse.ok && branchResponse.status === 404) {
|
|
139
|
+
// Create the branch
|
|
140
|
+
const createBranchResponse = await api.post(`/organizations/${props.organizationId}/databases/${props.name}/branches`, {
|
|
141
|
+
name: props.defaultBranch,
|
|
142
|
+
parent_branch: "main",
|
|
143
|
+
});
|
|
144
|
+
if (!createBranchResponse.ok) {
|
|
145
|
+
throw new Error(`Failed to create default branch: ${createBranchResponse.statusText} ${await createBranchResponse.text()}`);
|
|
146
|
+
}
|
|
147
|
+
await fixClusterSize(api, props.organizationId, props.name, props.defaultBranch || "main", props.clusterSize, false);
|
|
148
|
+
// Update database to use new branch as default
|
|
149
|
+
const updateResponse = await api.patch(`/organizations/${props.organizationId}/databases/${props.name}`, {
|
|
150
|
+
default_branch: props.defaultBranch,
|
|
151
|
+
});
|
|
152
|
+
if (!updateResponse.ok) {
|
|
153
|
+
throw new Error(`Failed to set default branch: ${updateResponse.statusText} ${await updateResponse.text()}`);
|
|
154
|
+
}
|
|
155
|
+
const updatedData = await updateResponse.json();
|
|
156
|
+
return this({
|
|
157
|
+
...props,
|
|
158
|
+
id: data.id,
|
|
159
|
+
state: updatedData.state,
|
|
160
|
+
defaultBranch: updatedData.default_branch,
|
|
161
|
+
plan: updatedData.plan,
|
|
162
|
+
createdAt: updatedData.created_at,
|
|
163
|
+
updatedAt: updatedData.updated_at,
|
|
164
|
+
htmlUrl: updatedData.html_url,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return this({
|
|
169
|
+
...props,
|
|
170
|
+
id: data.id,
|
|
171
|
+
state: data.state,
|
|
172
|
+
defaultBranch: data.default_branch || "main",
|
|
173
|
+
plan: data.plan,
|
|
174
|
+
createdAt: data.created_at,
|
|
175
|
+
updatedAt: data.updated_at,
|
|
176
|
+
htmlUrl: data.html_url,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
console.error("Error managing database:", error);
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/planetscale/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/planetscale/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/planetscale/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|