alchemy 0.25.0 → 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 +4 -3
- 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 +3 -2
- 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/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 -67
- 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.map +1 -1
- package/lib/cloudflare/zone.js +4 -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 +6 -4
- 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 +4 -4
- package/src/aws/control/properties.ts +48 -0
- package/src/aws/control/resource.ts +3 -2
- 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/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 -89
- 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 +4 -3
- 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,248 @@
|
|
|
1
|
+
import type { Context } from "../context.ts";
|
|
2
|
+
import { Resource } from "../resource.ts";
|
|
3
|
+
import { type CloudflareApiOptions, createCloudflareApi } from "./api.ts";
|
|
4
|
+
import type { CloudflareResponse } from "./response.ts";
|
|
5
|
+
import type { EmailAction, EmailMatcher } from "./email-rule.ts";
|
|
6
|
+
import type { Zone } from "./zone.ts";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Cloudflare Email Catch All response format
|
|
10
|
+
*/
|
|
11
|
+
interface CloudflareEmailCatchAll {
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
name: string;
|
|
14
|
+
matchers: EmailMatcher[];
|
|
15
|
+
actions: EmailAction[];
|
|
16
|
+
tag: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Properties for configuring the catch-all email rule
|
|
21
|
+
*/
|
|
22
|
+
export interface EmailCatchAllProps extends CloudflareApiOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Zone ID or Zone resource where the catch-all rule will be configured
|
|
25
|
+
*/
|
|
26
|
+
zone: string | Zone;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Whether the catch-all rule is enabled
|
|
30
|
+
*
|
|
31
|
+
* @default true
|
|
32
|
+
*/
|
|
33
|
+
enabled?: boolean;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Name for the catch-all rule
|
|
37
|
+
*
|
|
38
|
+
* @default "Catch All"
|
|
39
|
+
*/
|
|
40
|
+
name?: string;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Matchers for the catch-all rule (typically matches all emails)
|
|
44
|
+
* If not provided, defaults to matching all emails
|
|
45
|
+
*/
|
|
46
|
+
matchers?: EmailMatcher[];
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Actions to take for emails that don't match other rules
|
|
50
|
+
*/
|
|
51
|
+
actions: EmailAction[];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* A catch-all email routing rule for a Cloudflare zone
|
|
56
|
+
*/
|
|
57
|
+
export interface EmailCatchAll extends Resource<"cloudflare::EmailCatchAll"> {
|
|
58
|
+
/**
|
|
59
|
+
* Zone ID where the catch-all rule is configured
|
|
60
|
+
*/
|
|
61
|
+
zoneId: string;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Whether the catch-all rule is enabled
|
|
65
|
+
*/
|
|
66
|
+
enabled: boolean;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Rule name
|
|
70
|
+
*/
|
|
71
|
+
name: string;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Matchers for the catch-all rule
|
|
75
|
+
*/
|
|
76
|
+
matchers: EmailMatcher[];
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Actions for the catch-all rule
|
|
80
|
+
*/
|
|
81
|
+
actions: EmailAction[];
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Rule tag
|
|
85
|
+
*/
|
|
86
|
+
tag: string;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Configures a catch-all email routing rule that handles emails not matched by other rules.
|
|
91
|
+
* This rule is processed last and typically matches all emails that haven't been handled.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ## Forward all unmatched emails
|
|
95
|
+
*
|
|
96
|
+
* Set up a catch-all rule to forward any unmatched emails to an admin address.
|
|
97
|
+
*
|
|
98
|
+
* ```ts
|
|
99
|
+
* const catchAll = await EmailCatchAll("default-catchall", {
|
|
100
|
+
* zone: "example.com",
|
|
101
|
+
* enabled: true,
|
|
102
|
+
* actions: [
|
|
103
|
+
* {
|
|
104
|
+
* type: "forward",
|
|
105
|
+
* value: ["admin@company.com"]
|
|
106
|
+
* }
|
|
107
|
+
* ]
|
|
108
|
+
* });
|
|
109
|
+
* ```
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ## Drop unmatched emails
|
|
113
|
+
*
|
|
114
|
+
* Configure catch-all to drop any emails that don't match specific rules.
|
|
115
|
+
*
|
|
116
|
+
* ```ts
|
|
117
|
+
* const catchAll = await EmailCatchAll("drop-catchall", {
|
|
118
|
+
* zone: "example.com",
|
|
119
|
+
* enabled: true,
|
|
120
|
+
* actions: [
|
|
121
|
+
* {
|
|
122
|
+
* type: "drop"
|
|
123
|
+
* }
|
|
124
|
+
* ]
|
|
125
|
+
* });
|
|
126
|
+
* ```
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ## Process with Worker
|
|
130
|
+
*
|
|
131
|
+
* Use a Worker to handle all unmatched emails for custom processing.
|
|
132
|
+
*
|
|
133
|
+
* ```ts
|
|
134
|
+
* const catchAll = await EmailCatchAll("worker-catchall", {
|
|
135
|
+
* zone: "example.com",
|
|
136
|
+
* enabled: true,
|
|
137
|
+
* actions: [
|
|
138
|
+
* {
|
|
139
|
+
* type: "worker",
|
|
140
|
+
* value: ["email-processor"]
|
|
141
|
+
* }
|
|
142
|
+
* ]
|
|
143
|
+
* });
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export const EmailCatchAll = Resource(
|
|
147
|
+
"cloudflare::EmailCatchAll",
|
|
148
|
+
async function (
|
|
149
|
+
this: Context<EmailCatchAll>,
|
|
150
|
+
_id: string,
|
|
151
|
+
props: EmailCatchAllProps,
|
|
152
|
+
): Promise<EmailCatchAll> {
|
|
153
|
+
const api = await createCloudflareApi(props);
|
|
154
|
+
const zoneId = typeof props.zone === "string" ? props.zone : props.zone.id;
|
|
155
|
+
|
|
156
|
+
if (this.phase === "delete") {
|
|
157
|
+
// Disable the catch-all rule by setting enabled to false
|
|
158
|
+
const disablePayload = {
|
|
159
|
+
enabled: false,
|
|
160
|
+
name: "Catch All",
|
|
161
|
+
matchers: [{ type: "all" as const }],
|
|
162
|
+
actions: [{ type: "drop" as const }],
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
const response = await api.put(
|
|
166
|
+
`/zones/${zoneId}/email/routing/rules/catch_all`,
|
|
167
|
+
disablePayload,
|
|
168
|
+
);
|
|
169
|
+
if (!response.ok && response.status !== 404) {
|
|
170
|
+
throw new Error(
|
|
171
|
+
`Failed to disable catch-all rule: ${response.statusText}`,
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
return this.destroy();
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Get current catch-all rule state
|
|
178
|
+
const _getResponse = await api.get(
|
|
179
|
+
`/zones/${zoneId}/email/routing/rules/catch_all`,
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
if (this.phase === "update" && this.output) {
|
|
183
|
+
// Update the catch-all rule
|
|
184
|
+
const updatePayload = {
|
|
185
|
+
enabled: props.enabled ?? true,
|
|
186
|
+
name: props.name || "Catch All",
|
|
187
|
+
matchers: props.matchers || [{ type: "all" as const }],
|
|
188
|
+
actions: props.actions,
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
const response = await api.put(
|
|
192
|
+
`/zones/${zoneId}/email/routing/rules/catch_all`,
|
|
193
|
+
updatePayload,
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
if (!response.ok) {
|
|
197
|
+
const errorBody = await response.text();
|
|
198
|
+
throw new Error(
|
|
199
|
+
`Failed to update catch-all rule: ${response.statusText}\nResponse: ${errorBody}`,
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const result =
|
|
204
|
+
(await response.json()) as CloudflareResponse<CloudflareEmailCatchAll>;
|
|
205
|
+
|
|
206
|
+
return this({
|
|
207
|
+
zoneId,
|
|
208
|
+
enabled: result.result.enabled,
|
|
209
|
+
name: result.result.name,
|
|
210
|
+
matchers: result.result.matchers,
|
|
211
|
+
actions: result.result.actions,
|
|
212
|
+
tag: result.result.tag,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Create or update catch-all rule
|
|
217
|
+
const catchAllPayload = {
|
|
218
|
+
enabled: props.enabled ?? true,
|
|
219
|
+
name: props.name || "Catch All",
|
|
220
|
+
matchers: props.matchers || [{ type: "all" as const }],
|
|
221
|
+
actions: props.actions,
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
const response = await api.put(
|
|
225
|
+
`/zones/${zoneId}/email/routing/rules/catch_all`,
|
|
226
|
+
catchAllPayload,
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
if (!response.ok) {
|
|
230
|
+
const errorBody = await response.text();
|
|
231
|
+
throw new Error(
|
|
232
|
+
`Failed to configure catch-all rule: ${response.statusText}\nResponse: ${errorBody}`,
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const result =
|
|
237
|
+
(await response.json()) as CloudflareResponse<CloudflareEmailCatchAll>;
|
|
238
|
+
|
|
239
|
+
return this({
|
|
240
|
+
zoneId,
|
|
241
|
+
enabled: result.result.enabled,
|
|
242
|
+
name: result.result.name,
|
|
243
|
+
matchers: result.result.matchers,
|
|
244
|
+
actions: result.result.actions,
|
|
245
|
+
tag: result.result.tag,
|
|
246
|
+
});
|
|
247
|
+
},
|
|
248
|
+
);
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import type { Context } from "../context.ts";
|
|
2
|
+
import { Resource } from "../resource.ts";
|
|
3
|
+
import { handleApiError } from "./api-error.ts";
|
|
4
|
+
import { type CloudflareApiOptions, createCloudflareApi } from "./api.ts";
|
|
5
|
+
import type { CloudflareResponse } from "./response.ts";
|
|
6
|
+
import type { Zone } from "./zone.ts";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Cloudflare Email Routing response format
|
|
10
|
+
*/
|
|
11
|
+
interface CloudflareEmailRouting {
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
name: string;
|
|
14
|
+
created: string;
|
|
15
|
+
modified: string;
|
|
16
|
+
tag: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Properties for configuring email routing on a zone
|
|
21
|
+
*/
|
|
22
|
+
export interface EmailRoutingProps extends CloudflareApiOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Zone ID or Zone resource where email routing will be configured
|
|
25
|
+
*/
|
|
26
|
+
zone: string | Zone;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Whether email routing should be enabled
|
|
30
|
+
*
|
|
31
|
+
* @default true
|
|
32
|
+
*/
|
|
33
|
+
enabled?: boolean;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Skip the DNS setup wizard when enabling email routing
|
|
37
|
+
*
|
|
38
|
+
* @default false
|
|
39
|
+
*/
|
|
40
|
+
skipWizard?: boolean;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Email routing configuration for a Cloudflare zone
|
|
45
|
+
*/
|
|
46
|
+
export interface EmailRouting extends Resource<"cloudflare::EmailRouting"> {
|
|
47
|
+
/**
|
|
48
|
+
* Zone ID where email routing is configured
|
|
49
|
+
*/
|
|
50
|
+
zoneId: string;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Whether email routing is enabled
|
|
54
|
+
*/
|
|
55
|
+
enabled: boolean;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Zone name
|
|
59
|
+
*/
|
|
60
|
+
name: string;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* When email routing was created
|
|
64
|
+
*/
|
|
65
|
+
created: string;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* When email routing was last modified
|
|
69
|
+
*/
|
|
70
|
+
modified: string;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Zone tag
|
|
74
|
+
*/
|
|
75
|
+
tag: string;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Configures email routing for a Cloudflare zone, allowing emails sent to the zone's domain
|
|
80
|
+
* to be routed according to defined rules.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ## Enable email routing for a zone
|
|
84
|
+
*
|
|
85
|
+
* Enable email routing for your domain to start receiving and routing emails.
|
|
86
|
+
*
|
|
87
|
+
* ```ts
|
|
88
|
+
* const emailRouting = await EmailRouting("example.com-routing", {
|
|
89
|
+
* zone: "example.com",
|
|
90
|
+
* enabled: true
|
|
91
|
+
* });
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ## Use with existing Zone resource
|
|
96
|
+
*
|
|
97
|
+
* Configure email routing using an existing Zone resource reference.
|
|
98
|
+
*
|
|
99
|
+
* ```ts
|
|
100
|
+
* const zone = await Zone("my-zone", {
|
|
101
|
+
* name: "example.com"
|
|
102
|
+
* });
|
|
103
|
+
*
|
|
104
|
+
* const emailRouting = await EmailRouting("example.com-routing", {
|
|
105
|
+
* zone: zone,
|
|
106
|
+
* enabled: true,
|
|
107
|
+
* skipWizard: true
|
|
108
|
+
* });
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export const EmailRouting = Resource(
|
|
112
|
+
"cloudflare::EmailRouting",
|
|
113
|
+
async function (
|
|
114
|
+
this: Context<EmailRouting>,
|
|
115
|
+
_id: string,
|
|
116
|
+
props: EmailRoutingProps,
|
|
117
|
+
): Promise<EmailRouting> {
|
|
118
|
+
const api = await createCloudflareApi(props);
|
|
119
|
+
const zoneId = typeof props.zone === "string" ? props.zone : props.zone.id;
|
|
120
|
+
|
|
121
|
+
if (this.phase === "delete") {
|
|
122
|
+
// Disable email routing DNS
|
|
123
|
+
const response = await api.delete(`/zones/${zoneId}/email/routing/dns`);
|
|
124
|
+
if (!response.ok && response.status !== 404) {
|
|
125
|
+
await handleApiError(response, "disabling", "email routing DNS");
|
|
126
|
+
}
|
|
127
|
+
return this.destroy();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (this.phase === "update" && this.output) {
|
|
131
|
+
// Check if we need to update the enabled state
|
|
132
|
+
const currentEnabled = this.output.enabled;
|
|
133
|
+
const desiredEnabled = props.enabled ?? true;
|
|
134
|
+
|
|
135
|
+
if (currentEnabled !== desiredEnabled) {
|
|
136
|
+
if (desiredEnabled) {
|
|
137
|
+
// Enable email routing DNS
|
|
138
|
+
const enablePayload = {
|
|
139
|
+
enabled: true,
|
|
140
|
+
...(props.skipWizard && { skip_wizard: props.skipWizard }),
|
|
141
|
+
};
|
|
142
|
+
const response = await api.post(
|
|
143
|
+
`/zones/${zoneId}/email/routing/dns`,
|
|
144
|
+
enablePayload,
|
|
145
|
+
);
|
|
146
|
+
if (!response.ok) {
|
|
147
|
+
await handleApiError(response, "enabling", "email routing DNS");
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
// Disable email routing DNS
|
|
151
|
+
const response = await api.delete(
|
|
152
|
+
`/zones/${zoneId}/email/routing/dns`,
|
|
153
|
+
);
|
|
154
|
+
if (!response.ok) {
|
|
155
|
+
await handleApiError(response, "disabling", "email routing DNS");
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Get current state
|
|
161
|
+
const getResponse = await api.get(`/zones/${zoneId}/email/routing/dns`);
|
|
162
|
+
if (!getResponse.ok) {
|
|
163
|
+
if (getResponse.status === 404) {
|
|
164
|
+
throw new Error("Email routing DNS is not configured for this zone");
|
|
165
|
+
}
|
|
166
|
+
await handleApiError(
|
|
167
|
+
getResponse,
|
|
168
|
+
"getting",
|
|
169
|
+
"email routing DNS settings",
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const result =
|
|
174
|
+
(await getResponse.json()) as CloudflareResponse<CloudflareEmailRouting>;
|
|
175
|
+
|
|
176
|
+
return this({
|
|
177
|
+
zoneId,
|
|
178
|
+
enabled: result.result.enabled,
|
|
179
|
+
name: result.result.name,
|
|
180
|
+
created: result.result.created,
|
|
181
|
+
modified: result.result.modified,
|
|
182
|
+
tag: result.result.tag,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Create/Enable email routing
|
|
187
|
+
const enabled = props.enabled ?? true;
|
|
188
|
+
|
|
189
|
+
if (enabled) {
|
|
190
|
+
const enablePayload = {
|
|
191
|
+
enabled: true,
|
|
192
|
+
...(props.skipWizard && { skip_wizard: props.skipWizard }),
|
|
193
|
+
};
|
|
194
|
+
const response = await api.post(
|
|
195
|
+
`/zones/${zoneId}/email/routing/dns`,
|
|
196
|
+
enablePayload,
|
|
197
|
+
);
|
|
198
|
+
if (!response.ok) {
|
|
199
|
+
await handleApiError(response, "enabling", "email routing DNS");
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Get the current state
|
|
204
|
+
const getResponse = await api.get(`/zones/${zoneId}/email/routing/dns`);
|
|
205
|
+
if (!getResponse.ok) {
|
|
206
|
+
if (getResponse.status === 404) {
|
|
207
|
+
throw new Error(
|
|
208
|
+
"Email routing DNS is not configured. Set enabled: true to configure it.",
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
await handleApiError(
|
|
212
|
+
getResponse,
|
|
213
|
+
"getting",
|
|
214
|
+
"email routing DNS settings",
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
const result =
|
|
219
|
+
(await getResponse.json()) as CloudflareResponse<CloudflareEmailRouting>;
|
|
220
|
+
|
|
221
|
+
return this({
|
|
222
|
+
zoneId,
|
|
223
|
+
enabled: result.result.enabled,
|
|
224
|
+
name: result.result.name,
|
|
225
|
+
created: result.result.created,
|
|
226
|
+
modified: result.result.modified,
|
|
227
|
+
tag: result.result.tag,
|
|
228
|
+
});
|
|
229
|
+
},
|
|
230
|
+
);
|