pi-cloudflare 0.1.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/LICENSE +674 -0
- package/README.md +67 -0
- package/bin/setup.mjs +103 -0
- package/dist/auth-flow.d.ts +15 -0
- package/dist/auth-flow.d.ts.map +1 -0
- package/dist/auth-flow.js +90 -0
- package/dist/auth-flow.js.map +1 -0
- package/dist/client.d.ts +18 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +47 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/oauth.d.ts +44 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +135 -0
- package/dist/oauth.js.map +1 -0
- package/dist/proxy.d.ts +29 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +39 -0
- package/dist/proxy.js.map +1 -0
- package/dist/servers.d.ts +19 -0
- package/dist/servers.d.ts.map +1 -0
- package/dist/servers.js +40 -0
- package/dist/servers.js.map +1 -0
- package/dist/token-store.d.ts +23 -0
- package/dist/token-store.d.ts.map +1 -0
- package/dist/token-store.js +47 -0
- package/dist/token-store.js.map +1 -0
- package/package.json +67 -0
- package/skills/agents-sdk/SKILL.md +221 -0
- package/skills/agents-sdk/references/browse-the-web.md +63 -0
- package/skills/agents-sdk/references/callable.md +92 -0
- package/skills/agents-sdk/references/client-sdk.md +110 -0
- package/skills/agents-sdk/references/codemode.md +110 -0
- package/skills/agents-sdk/references/configuration.md +72 -0
- package/skills/agents-sdk/references/durable-execution.md +51 -0
- package/skills/agents-sdk/references/email.md +146 -0
- package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
- package/skills/agents-sdk/references/mcp.md +188 -0
- package/skills/agents-sdk/references/observability.md +44 -0
- package/skills/agents-sdk/references/queue-retries.md +79 -0
- package/skills/agents-sdk/references/routing.md +75 -0
- package/skills/agents-sdk/references/server-driven-messages.md +63 -0
- package/skills/agents-sdk/references/state-scheduling.md +171 -0
- package/skills/agents-sdk/references/streaming-chat.md +198 -0
- package/skills/agents-sdk/references/think.md +112 -0
- package/skills/agents-sdk/references/voice.md +68 -0
- package/skills/agents-sdk/references/webhooks-push.md +86 -0
- package/skills/agents-sdk/references/workflows.md +132 -0
- package/skills/cloudflare/SKILL.md +248 -0
- package/skills/cloudflare/references/agents-sdk/README.md +89 -0
- package/skills/cloudflare/references/agents-sdk/api.md +190 -0
- package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
- package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
- package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
- package/skills/cloudflare/references/ai-gateway/README.md +175 -0
- package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
- package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
- package/skills/cloudflare/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
- package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
- package/skills/cloudflare/references/ai-search/README.md +138 -0
- package/skills/cloudflare/references/ai-search/api.md +87 -0
- package/skills/cloudflare/references/ai-search/configuration.md +88 -0
- package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
- package/skills/cloudflare/references/ai-search/patterns.md +85 -0
- package/skills/cloudflare/references/analytics-engine/README.md +94 -0
- package/skills/cloudflare/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
- package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
- package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
- package/skills/cloudflare/references/api/README.md +66 -0
- package/skills/cloudflare/references/api/api.md +204 -0
- package/skills/cloudflare/references/api/configuration.md +160 -0
- package/skills/cloudflare/references/api/gotchas.md +225 -0
- package/skills/cloudflare/references/api/patterns.md +204 -0
- package/skills/cloudflare/references/api-shield/README.md +44 -0
- package/skills/cloudflare/references/api-shield/api.md +141 -0
- package/skills/cloudflare/references/api-shield/configuration.md +192 -0
- package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
- package/skills/cloudflare/references/api-shield/patterns.md +180 -0
- package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
- package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
- package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
- package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
- package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
- package/skills/cloudflare/references/artifacts/README.md +79 -0
- package/skills/cloudflare/references/artifacts/api.md +128 -0
- package/skills/cloudflare/references/artifacts/configuration.md +92 -0
- package/skills/cloudflare/references/bindings/README.md +122 -0
- package/skills/cloudflare/references/bindings/api.md +203 -0
- package/skills/cloudflare/references/bindings/configuration.md +188 -0
- package/skills/cloudflare/references/bindings/gotchas.md +208 -0
- package/skills/cloudflare/references/bindings/patterns.md +200 -0
- package/skills/cloudflare/references/bot-management/README.md +94 -0
- package/skills/cloudflare/references/bot-management/api.md +169 -0
- package/skills/cloudflare/references/bot-management/configuration.md +163 -0
- package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
- package/skills/cloudflare/references/bot-management/patterns.md +182 -0
- package/skills/cloudflare/references/browser-rendering/README.md +78 -0
- package/skills/cloudflare/references/browser-rendering/api.md +108 -0
- package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
- package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
- package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
- package/skills/cloudflare/references/c3/README.md +111 -0
- package/skills/cloudflare/references/c3/api.md +71 -0
- package/skills/cloudflare/references/c3/configuration.md +81 -0
- package/skills/cloudflare/references/c3/gotchas.md +92 -0
- package/skills/cloudflare/references/c3/patterns.md +82 -0
- package/skills/cloudflare/references/cache-reserve/README.md +147 -0
- package/skills/cloudflare/references/cache-reserve/api.md +194 -0
- package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
- package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
- package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare/references/containers/README.md +85 -0
- package/skills/cloudflare/references/containers/api.md +187 -0
- package/skills/cloudflare/references/containers/configuration.md +188 -0
- package/skills/cloudflare/references/containers/gotchas.md +178 -0
- package/skills/cloudflare/references/containers/patterns.md +202 -0
- package/skills/cloudflare/references/cron-triggers/README.md +99 -0
- package/skills/cloudflare/references/cron-triggers/api.md +196 -0
- package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
- package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
- package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
- package/skills/cloudflare/references/d1/README.md +133 -0
- package/skills/cloudflare/references/d1/api.md +196 -0
- package/skills/cloudflare/references/d1/configuration.md +191 -0
- package/skills/cloudflare/references/d1/gotchas.md +98 -0
- package/skills/cloudflare/references/d1/patterns.md +189 -0
- package/skills/cloudflare/references/ddos/README.md +41 -0
- package/skills/cloudflare/references/ddos/api.md +164 -0
- package/skills/cloudflare/references/ddos/configuration.md +93 -0
- package/skills/cloudflare/references/ddos/gotchas.md +107 -0
- package/skills/cloudflare/references/ddos/patterns.md +174 -0
- package/skills/cloudflare/references/do-storage/README.md +75 -0
- package/skills/cloudflare/references/do-storage/api.md +102 -0
- package/skills/cloudflare/references/do-storage/configuration.md +112 -0
- package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
- package/skills/cloudflare/references/do-storage/patterns.md +194 -0
- package/skills/cloudflare/references/do-storage/testing.md +183 -0
- package/skills/cloudflare/references/durable-objects/README.md +185 -0
- package/skills/cloudflare/references/durable-objects/api.md +187 -0
- package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
- package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
- package/skills/cloudflare/references/email-routing/README.md +89 -0
- package/skills/cloudflare/references/email-routing/api.md +195 -0
- package/skills/cloudflare/references/email-routing/configuration.md +186 -0
- package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
- package/skills/cloudflare/references/email-routing/patterns.md +229 -0
- package/skills/cloudflare/references/email-workers/README.md +151 -0
- package/skills/cloudflare/references/email-workers/api.md +237 -0
- package/skills/cloudflare/references/email-workers/configuration.md +112 -0
- package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
- package/skills/cloudflare/references/email-workers/patterns.md +102 -0
- package/skills/cloudflare/references/flagship/README.md +59 -0
- package/skills/cloudflare/references/flagship/api.md +390 -0
- package/skills/cloudflare/references/flagship/configuration.md +202 -0
- package/skills/cloudflare/references/flagship/gotchas.md +178 -0
- package/skills/cloudflare/references/flagship/patterns.md +469 -0
- package/skills/cloudflare/references/graphql-api/README.md +147 -0
- package/skills/cloudflare/references/graphql-api/api.md +175 -0
- package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
- package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
- package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
- package/skills/cloudflare/references/hyperdrive/README.md +82 -0
- package/skills/cloudflare/references/hyperdrive/api.md +143 -0
- package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
- package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
- package/skills/cloudflare/references/images/README.md +61 -0
- package/skills/cloudflare/references/images/api.md +96 -0
- package/skills/cloudflare/references/images/configuration.md +211 -0
- package/skills/cloudflare/references/images/gotchas.md +99 -0
- package/skills/cloudflare/references/images/patterns.md +115 -0
- package/skills/cloudflare/references/kv/README.md +89 -0
- package/skills/cloudflare/references/kv/api.md +160 -0
- package/skills/cloudflare/references/kv/configuration.md +144 -0
- package/skills/cloudflare/references/kv/gotchas.md +131 -0
- package/skills/cloudflare/references/kv/patterns.md +196 -0
- package/skills/cloudflare/references/miniflare/README.md +105 -0
- package/skills/cloudflare/references/miniflare/api.md +187 -0
- package/skills/cloudflare/references/miniflare/configuration.md +173 -0
- package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
- package/skills/cloudflare/references/miniflare/patterns.md +181 -0
- package/skills/cloudflare/references/network-interconnect/README.md +99 -0
- package/skills/cloudflare/references/network-interconnect/api.md +199 -0
- package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
- package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
- package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
- package/skills/cloudflare/references/observability/README.md +88 -0
- package/skills/cloudflare/references/observability/api.md +164 -0
- package/skills/cloudflare/references/observability/configuration.md +169 -0
- package/skills/cloudflare/references/observability/gotchas.md +115 -0
- package/skills/cloudflare/references/observability/patterns.md +105 -0
- package/skills/cloudflare/references/pages/README.md +88 -0
- package/skills/cloudflare/references/pages/api.md +204 -0
- package/skills/cloudflare/references/pages/configuration.md +201 -0
- package/skills/cloudflare/references/pages/gotchas.md +203 -0
- package/skills/cloudflare/references/pages/patterns.md +204 -0
- package/skills/cloudflare/references/pages-functions/README.md +98 -0
- package/skills/cloudflare/references/pages-functions/api.md +143 -0
- package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
- package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
- package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
- package/skills/cloudflare/references/pipelines/README.md +90 -0
- package/skills/cloudflare/references/pipelines/api.md +124 -0
- package/skills/cloudflare/references/pipelines/configuration.md +155 -0
- package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
- package/skills/cloudflare/references/pipelines/patterns.md +130 -0
- package/skills/cloudflare/references/pulumi/README.md +100 -0
- package/skills/cloudflare/references/pulumi/api.md +200 -0
- package/skills/cloudflare/references/pulumi/configuration.md +198 -0
- package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
- package/skills/cloudflare/references/pulumi/patterns.md +191 -0
- package/skills/cloudflare/references/queues/README.md +96 -0
- package/skills/cloudflare/references/queues/api.md +206 -0
- package/skills/cloudflare/references/queues/configuration.md +144 -0
- package/skills/cloudflare/references/queues/gotchas.md +206 -0
- package/skills/cloudflare/references/queues/patterns.md +220 -0
- package/skills/cloudflare/references/r2/README.md +95 -0
- package/skills/cloudflare/references/r2/api.md +200 -0
- package/skills/cloudflare/references/r2/configuration.md +165 -0
- package/skills/cloudflare/references/r2/gotchas.md +190 -0
- package/skills/cloudflare/references/r2/patterns.md +193 -0
- package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
- package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
- package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
- package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
- package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
- package/skills/cloudflare/references/r2-sql/README.md +64 -0
- package/skills/cloudflare/references/r2-sql/api.md +121 -0
- package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
- package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
- package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
- package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
- package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
- package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
- package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
- package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
- package/skills/cloudflare/references/realtimekit/README.md +113 -0
- package/skills/cloudflare/references/realtimekit/api.md +212 -0
- package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
- package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
- package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
- package/skills/cloudflare/references/sandbox/README.md +96 -0
- package/skills/cloudflare/references/sandbox/api.md +198 -0
- package/skills/cloudflare/references/sandbox/configuration.md +143 -0
- package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
- package/skills/cloudflare/references/sandbox/patterns.md +201 -0
- package/skills/cloudflare/references/secrets-store/README.md +74 -0
- package/skills/cloudflare/references/secrets-store/api.md +200 -0
- package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
- package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
- package/skills/cloudflare/references/smart-placement/README.md +138 -0
- package/skills/cloudflare/references/smart-placement/api.md +183 -0
- package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
- package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
- package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
- package/skills/cloudflare/references/snippets/README.md +68 -0
- package/skills/cloudflare/references/snippets/api.md +198 -0
- package/skills/cloudflare/references/snippets/configuration.md +227 -0
- package/skills/cloudflare/references/snippets/gotchas.md +86 -0
- package/skills/cloudflare/references/snippets/patterns.md +135 -0
- package/skills/cloudflare/references/spectrum/README.md +52 -0
- package/skills/cloudflare/references/spectrum/api.md +181 -0
- package/skills/cloudflare/references/spectrum/configuration.md +194 -0
- package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
- package/skills/cloudflare/references/spectrum/patterns.md +196 -0
- package/skills/cloudflare/references/static-assets/README.md +65 -0
- package/skills/cloudflare/references/static-assets/api.md +199 -0
- package/skills/cloudflare/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
- package/skills/cloudflare/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare/references/stream/README.md +114 -0
- package/skills/cloudflare/references/stream/api-live.md +195 -0
- package/skills/cloudflare/references/stream/api.md +199 -0
- package/skills/cloudflare/references/stream/configuration.md +141 -0
- package/skills/cloudflare/references/stream/gotchas.md +130 -0
- package/skills/cloudflare/references/stream/patterns.md +184 -0
- package/skills/cloudflare/references/tail-workers/README.md +89 -0
- package/skills/cloudflare/references/tail-workers/api.md +200 -0
- package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
- package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
- package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
- package/skills/cloudflare/references/terraform/README.md +102 -0
- package/skills/cloudflare/references/terraform/api.md +178 -0
- package/skills/cloudflare/references/terraform/configuration.md +197 -0
- package/skills/cloudflare/references/terraform/gotchas.md +150 -0
- package/skills/cloudflare/references/terraform/patterns.md +174 -0
- package/skills/cloudflare/references/tunnel/README.md +129 -0
- package/skills/cloudflare/references/tunnel/api.md +193 -0
- package/skills/cloudflare/references/tunnel/configuration.md +157 -0
- package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
- package/skills/cloudflare/references/tunnel/networking.md +168 -0
- package/skills/cloudflare/references/tunnel/patterns.md +192 -0
- package/skills/cloudflare/references/turn/README.md +82 -0
- package/skills/cloudflare/references/turn/api.md +239 -0
- package/skills/cloudflare/references/turn/configuration.md +179 -0
- package/skills/cloudflare/references/turn/gotchas.md +231 -0
- package/skills/cloudflare/references/turn/patterns.md +213 -0
- package/skills/cloudflare/references/turnstile/README.md +99 -0
- package/skills/cloudflare/references/turnstile/api.md +240 -0
- package/skills/cloudflare/references/turnstile/configuration.md +222 -0
- package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
- package/skills/cloudflare/references/turnstile/patterns.md +193 -0
- package/skills/cloudflare/references/vectorize/README.md +133 -0
- package/skills/cloudflare/references/vectorize/api.md +88 -0
- package/skills/cloudflare/references/vectorize/configuration.md +88 -0
- package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
- package/skills/cloudflare/references/vectorize/patterns.md +90 -0
- package/skills/cloudflare/references/waf/README.md +113 -0
- package/skills/cloudflare/references/waf/api.md +202 -0
- package/skills/cloudflare/references/waf/configuration.md +203 -0
- package/skills/cloudflare/references/waf/gotchas.md +204 -0
- package/skills/cloudflare/references/waf/patterns.md +197 -0
- package/skills/cloudflare/references/web-analytics/README.md +141 -0
- package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
- package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
- package/skills/cloudflare/references/web-analytics/integration.md +60 -0
- package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
- package/skills/cloudflare/references/workerd/README.md +78 -0
- package/skills/cloudflare/references/workerd/api.md +185 -0
- package/skills/cloudflare/references/workerd/configuration.md +183 -0
- package/skills/cloudflare/references/workerd/gotchas.md +139 -0
- package/skills/cloudflare/references/workerd/patterns.md +192 -0
- package/skills/cloudflare/references/workers/README.md +108 -0
- package/skills/cloudflare/references/workers/api.md +195 -0
- package/skills/cloudflare/references/workers/configuration.md +185 -0
- package/skills/cloudflare/references/workers/frameworks.md +197 -0
- package/skills/cloudflare/references/workers/gotchas.md +137 -0
- package/skills/cloudflare/references/workers/patterns.md +198 -0
- package/skills/cloudflare/references/workers-ai/README.md +197 -0
- package/skills/cloudflare/references/workers-ai/api.md +112 -0
- package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
- package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
- package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
- package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
- package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
- package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
- package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
- package/skills/cloudflare/references/workers-playground/README.md +127 -0
- package/skills/cloudflare/references/workers-playground/api.md +101 -0
- package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
- package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
- package/skills/cloudflare/references/workers-vpc/README.md +127 -0
- package/skills/cloudflare/references/workers-vpc/api.md +202 -0
- package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
- package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
- package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
- package/skills/cloudflare/references/workflows/README.md +77 -0
- package/skills/cloudflare/references/workflows/api.md +218 -0
- package/skills/cloudflare/references/workflows/configuration.md +152 -0
- package/skills/cloudflare/references/workflows/gotchas.md +90 -0
- package/skills/cloudflare/references/workflows/patterns.md +175 -0
- package/skills/cloudflare/references/wrangler/README.md +135 -0
- package/skills/cloudflare/references/wrangler/api.md +188 -0
- package/skills/cloudflare/references/wrangler/configuration.md +197 -0
- package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
- package/skills/cloudflare/references/wrangler/patterns.md +209 -0
- package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
- package/skills/cloudflare/references/zaraz/README.md +111 -0
- package/skills/cloudflare/references/zaraz/api.md +112 -0
- package/skills/cloudflare/references/zaraz/configuration.md +90 -0
- package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
- package/skills/cloudflare/references/zaraz/patterns.md +74 -0
- package/skills/cloudflare-email-service/SKILL.md +103 -0
- package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
- package/skills/cloudflare-email-service/references/deliverability.md +285 -0
- package/skills/cloudflare-email-service/references/rest-api.md +184 -0
- package/skills/cloudflare-email-service/references/routing.md +199 -0
- package/skills/cloudflare-email-service/references/sending.md +252 -0
- package/skills/cloudflare-one/SKILL.md +176 -0
- package/skills/cloudflare-one-migrations/SKILL.md +110 -0
- package/skills/durable-objects/SKILL.md +186 -0
- package/skills/durable-objects/references/rules.md +295 -0
- package/skills/durable-objects/references/testing.md +264 -0
- package/skills/durable-objects/references/workers.md +346 -0
- package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
- package/skills/sandbox-next/SKILL.md +91 -0
- package/skills/sandbox-next/references/api-quick-ref.md +94 -0
- package/skills/sandbox-next/references/examples.md +15 -0
- package/skills/sandbox-stable/SKILL.md +110 -0
- package/skills/turnstile-spin/README.md +51 -0
- package/skills/turnstile-spin/SKILL.md +330 -0
- package/skills/turnstile-spin/references/astro.md +199 -0
- package/skills/turnstile-spin/references/hugo.md +114 -0
- package/skills/turnstile-spin/references/nextjs-app.md +261 -0
- package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
- package/skills/turnstile-spin/references/sveltekit.md +191 -0
- package/skills/turnstile-spin/references/vanilla-html.md +157 -0
- package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
- package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
- package/skills/turnstile-spin/scripts/validate.sh +137 -0
- package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
- package/skills/turnstile-spin/tests/validation.md +62 -0
- package/skills/workers-best-practices/SKILL.md +127 -0
- package/skills/workers-best-practices/references/review.md +174 -0
- package/skills/workers-best-practices/references/rules.md +467 -0
- package/skills/wrangler/SKILL.md +922 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Tail Workers Gotchas & Debugging
|
|
2
|
+
|
|
3
|
+
## Critical Pitfalls
|
|
4
|
+
|
|
5
|
+
### 1. Not Using `ctx.waitUntil()`
|
|
6
|
+
|
|
7
|
+
**Problem:** Async work doesn't complete or tail Worker times out
|
|
8
|
+
**Cause:** Handlers exit immediately; awaiting blocks processing
|
|
9
|
+
**Solution:**
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
// ❌ WRONG - fire and forget
|
|
13
|
+
export default {
|
|
14
|
+
async tail(events) {
|
|
15
|
+
fetch(endpoint, { body: JSON.stringify(events) });
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// ❌ WRONG - blocking await
|
|
20
|
+
export default {
|
|
21
|
+
async tail(events, env, ctx) {
|
|
22
|
+
await fetch(endpoint, { body: JSON.stringify(events) });
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// ✅ CORRECT
|
|
27
|
+
export default {
|
|
28
|
+
async tail(events, env, ctx) {
|
|
29
|
+
ctx.waitUntil(
|
|
30
|
+
(async () => {
|
|
31
|
+
await fetch(endpoint, { body: JSON.stringify(events) });
|
|
32
|
+
await processMore();
|
|
33
|
+
})()
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 2. Missing `tail()` Handler
|
|
40
|
+
|
|
41
|
+
**Problem:** Producer deployment fails
|
|
42
|
+
**Cause:** Worker in `tail_consumers` doesn't export `tail()` handler
|
|
43
|
+
**Solution:** Ensure `export default { async tail(events, env, ctx) { ... } }`
|
|
44
|
+
|
|
45
|
+
### 3. Outcome vs HTTP Status
|
|
46
|
+
|
|
47
|
+
**Problem:** Filtering by wrong status
|
|
48
|
+
**Cause:** `outcome` is script execution status, not HTTP status
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
// ❌ WRONG
|
|
52
|
+
if (event.outcome === 500) { /* never matches */ }
|
|
53
|
+
|
|
54
|
+
// ✅ CORRECT
|
|
55
|
+
if (event.outcome === 'exception') { /* script threw */ }
|
|
56
|
+
if (event.event?.response?.status === 500) { /* HTTP 500 */ }
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 4. Timestamp Units
|
|
60
|
+
|
|
61
|
+
**Problem:** Dates off by 1000x
|
|
62
|
+
**Cause:** Timestamps are epoch milliseconds, not seconds
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
// ❌ WRONG: const date = new Date(event.eventTimestamp * 1000);
|
|
66
|
+
// ✅ CORRECT: const date = new Date(event.eventTimestamp);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 5. Type Name Mismatch
|
|
70
|
+
|
|
71
|
+
**Problem:** Using `TailItem` type
|
|
72
|
+
**Cause:** Old docs used `TailItem`, SDK uses `TraceItem`
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
import type { TraceItem } from '@cloudflare/workers-types';
|
|
76
|
+
export default {
|
|
77
|
+
async tail(events: TraceItem[], env, ctx) { /* ... */ }
|
|
78
|
+
};
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 6. Excessive Logging Volume
|
|
82
|
+
|
|
83
|
+
**Problem:** Unexpected high costs
|
|
84
|
+
**Cause:** Invoked on EVERY producer request
|
|
85
|
+
**Solution:** Sample events
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
export default {
|
|
89
|
+
async tail(events, env, ctx) {
|
|
90
|
+
if (Math.random() > 0.1) return; // 10% sample
|
|
91
|
+
ctx.waitUntil(sendToEndpoint(events));
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 7. Serialization Issues
|
|
97
|
+
|
|
98
|
+
**Problem:** `JSON.stringify()` fails
|
|
99
|
+
**Cause:** `log.message` is `unknown[]` with non-serializable values
|
|
100
|
+
**Solution:**
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
const safePayload = events.map(e => ({
|
|
104
|
+
...e,
|
|
105
|
+
logs: e.logs.map(log => ({
|
|
106
|
+
...log,
|
|
107
|
+
message: log.message.map(m => {
|
|
108
|
+
try { return JSON.parse(JSON.stringify(m)); }
|
|
109
|
+
catch { return String(m); }
|
|
110
|
+
})
|
|
111
|
+
}))
|
|
112
|
+
}));
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 8. Missing Error Handling
|
|
116
|
+
|
|
117
|
+
**Problem:** Tail Worker silently fails
|
|
118
|
+
**Cause:** No try/catch
|
|
119
|
+
**Solution:**
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
ctx.waitUntil((async () => {
|
|
123
|
+
try {
|
|
124
|
+
await fetch(env.ENDPOINT, { body: JSON.stringify(events) });
|
|
125
|
+
} catch (error) {
|
|
126
|
+
console.error("Tail error:", error);
|
|
127
|
+
await env.FALLBACK_KV.put(`failed:${Date.now()}`, JSON.stringify(events));
|
|
128
|
+
}
|
|
129
|
+
})());
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 9. Deployment Order
|
|
133
|
+
|
|
134
|
+
**Problem:** Producer deployment fails
|
|
135
|
+
**Cause:** Tail consumer not deployed yet
|
|
136
|
+
**Solution:** Deploy tail consumer FIRST
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
cd tail-worker && wrangler deploy
|
|
140
|
+
cd ../producer && wrangler deploy
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 10. No Event Retry
|
|
144
|
+
|
|
145
|
+
**Problem:** Events lost when handler fails
|
|
146
|
+
**Cause:** Failed invocations NOT retried
|
|
147
|
+
**Solution:** Implement fallback storage (see #8)
|
|
148
|
+
|
|
149
|
+
## Debugging
|
|
150
|
+
|
|
151
|
+
**View logs:** `wrangler tail my-tail-worker`
|
|
152
|
+
|
|
153
|
+
**Incremental testing:**
|
|
154
|
+
1. Verify receipt: `console.log('Events:', events.length)`
|
|
155
|
+
2. Inspect structure: `console.log(JSON.stringify(events[0], null, 2))`
|
|
156
|
+
3. Add external call with `ctx.waitUntil()`
|
|
157
|
+
|
|
158
|
+
**Monitor dashboard:** Check invocation count (matches producer?), error rate, CPU time
|
|
159
|
+
|
|
160
|
+
## Testing
|
|
161
|
+
|
|
162
|
+
Add test endpoint to producer:
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
export default {
|
|
166
|
+
async fetch(request) {
|
|
167
|
+
if (request.url.includes('/test')) {
|
|
168
|
+
console.log('Test log');
|
|
169
|
+
throw new Error('Test error');
|
|
170
|
+
}
|
|
171
|
+
return new Response('OK');
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Trigger: `curl https://producer.example.workers.dev/test`
|
|
177
|
+
|
|
178
|
+
## Common Errors
|
|
179
|
+
|
|
180
|
+
| Error | Cause | Solution |
|
|
181
|
+
|-------|-------|----------|
|
|
182
|
+
| "Tail consumer not found" | Not deployed | Deploy tail Worker first |
|
|
183
|
+
| "No tail handler" | Missing `tail()` | Add to default export |
|
|
184
|
+
| "waitUntil is not a function" | Missing `ctx` | Add `ctx` parameter |
|
|
185
|
+
| Timeout | Blocking await | Use `ctx.waitUntil()` |
|
|
186
|
+
|
|
187
|
+
## Performance Notes
|
|
188
|
+
|
|
189
|
+
- Max 100 events per invocation
|
|
190
|
+
- Each consumer receives all events independently
|
|
191
|
+
- CPU limits same as regular Workers
|
|
192
|
+
- For high volume, use Durable Objects batching
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Tail Workers Common Patterns
|
|
2
|
+
|
|
3
|
+
## Community Libraries
|
|
4
|
+
|
|
5
|
+
While most tail Worker implementations are custom, these libraries may help:
|
|
6
|
+
|
|
7
|
+
**Logging/Observability:**
|
|
8
|
+
- **Axiom** - `axiom-cloudflare-workers` (npm) - Direct Axiom integration
|
|
9
|
+
- **Baselime** - SDK for Baselime observability platform
|
|
10
|
+
- **LogFlare** - Structured log aggregation
|
|
11
|
+
|
|
12
|
+
**Type Definitions:**
|
|
13
|
+
- **@cloudflare/workers-types** - Official TypeScript types (use `TraceItem`)
|
|
14
|
+
|
|
15
|
+
**Note:** Most integrations require custom tail handler implementation. See integration examples below.
|
|
16
|
+
|
|
17
|
+
## Basic Patterns
|
|
18
|
+
|
|
19
|
+
### HTTP Endpoint Logging
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
export default {
|
|
23
|
+
async tail(events, env, ctx) {
|
|
24
|
+
const payload = events.map(event => ({
|
|
25
|
+
script: event.scriptName,
|
|
26
|
+
timestamp: event.eventTimestamp,
|
|
27
|
+
outcome: event.outcome,
|
|
28
|
+
url: event.event?.request?.url,
|
|
29
|
+
status: event.event?.response?.status,
|
|
30
|
+
logs: event.logs,
|
|
31
|
+
exceptions: event.exceptions,
|
|
32
|
+
}));
|
|
33
|
+
|
|
34
|
+
ctx.waitUntil(
|
|
35
|
+
fetch(env.LOG_ENDPOINT, {
|
|
36
|
+
method: "POST",
|
|
37
|
+
body: JSON.stringify(payload),
|
|
38
|
+
})
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Error Tracking Only
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
export default {
|
|
48
|
+
async tail(events, env, ctx) {
|
|
49
|
+
const errors = events.filter(e =>
|
|
50
|
+
e.outcome === 'exception' || e.exceptions.length > 0
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
if (errors.length === 0) return;
|
|
54
|
+
|
|
55
|
+
ctx.waitUntil(
|
|
56
|
+
fetch(env.ERROR_ENDPOINT, {
|
|
57
|
+
method: "POST",
|
|
58
|
+
body: JSON.stringify(errors),
|
|
59
|
+
})
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Storage Integration
|
|
66
|
+
|
|
67
|
+
### KV Storage with TTL
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
export default {
|
|
71
|
+
async tail(events, env, ctx) {
|
|
72
|
+
ctx.waitUntil(
|
|
73
|
+
Promise.all(events.map(event =>
|
|
74
|
+
env.LOGS_KV.put(
|
|
75
|
+
`log:${event.scriptName}:${event.eventTimestamp}`,
|
|
76
|
+
JSON.stringify(event),
|
|
77
|
+
{ expirationTtl: 86400 } // 24 hours
|
|
78
|
+
)
|
|
79
|
+
))
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Analytics Engine Metrics
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
export default {
|
|
89
|
+
async tail(events, env, ctx) {
|
|
90
|
+
ctx.waitUntil(
|
|
91
|
+
Promise.all(events.map(event =>
|
|
92
|
+
env.ANALYTICS.writeDataPoint({
|
|
93
|
+
blobs: [event.scriptName, event.outcome],
|
|
94
|
+
doubles: [1, event.event?.response?.status ?? 0],
|
|
95
|
+
indexes: [event.event?.request?.cf?.colo ?? 'unknown'],
|
|
96
|
+
})
|
|
97
|
+
))
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Filtering & Routing
|
|
104
|
+
|
|
105
|
+
Filter by route, outcome, or other criteria:
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
export default {
|
|
109
|
+
async tail(events, env, ctx) {
|
|
110
|
+
// Route filtering
|
|
111
|
+
const apiEvents = events.filter(e =>
|
|
112
|
+
e.event?.request?.url?.includes('/api/')
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
// Multi-destination routing
|
|
116
|
+
const errors = events.filter(e => e.outcome === 'exception');
|
|
117
|
+
const success = events.filter(e => e.outcome === 'ok');
|
|
118
|
+
|
|
119
|
+
const tasks = [];
|
|
120
|
+
if (errors.length > 0) {
|
|
121
|
+
tasks.push(fetch(env.ERROR_ENDPOINT, {
|
|
122
|
+
method: "POST",
|
|
123
|
+
body: JSON.stringify(errors),
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
if (success.length > 0) {
|
|
127
|
+
tasks.push(fetch(env.SUCCESS_ENDPOINT, {
|
|
128
|
+
method: "POST",
|
|
129
|
+
body: JSON.stringify(success),
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
ctx.waitUntil(Promise.all(tasks));
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Sampling
|
|
139
|
+
|
|
140
|
+
Reduce costs by processing only a percentage of events:
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
export default {
|
|
144
|
+
async tail(events, env, ctx) {
|
|
145
|
+
if (Math.random() > 0.1) return; // 10% sample rate
|
|
146
|
+
ctx.waitUntil(fetch(env.LOG_ENDPOINT, {
|
|
147
|
+
method: "POST",
|
|
148
|
+
body: JSON.stringify(events),
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Advanced Patterns
|
|
155
|
+
|
|
156
|
+
### Batching with Durable Objects
|
|
157
|
+
|
|
158
|
+
Accumulate events before sending:
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
export default {
|
|
162
|
+
async tail(events, env, ctx) {
|
|
163
|
+
const batch = env.BATCH_DO.get(env.BATCH_DO.idFromName("batch"));
|
|
164
|
+
ctx.waitUntil(batch.fetch("https://batch/add", {
|
|
165
|
+
method: "POST",
|
|
166
|
+
body: JSON.stringify(events),
|
|
167
|
+
}));
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
See durable-objects skill for full implementation.
|
|
173
|
+
|
|
174
|
+
### Workers for Platforms
|
|
175
|
+
|
|
176
|
+
Dynamic dispatch sends TWO events per request. Filter by `scriptName` to distinguish dispatch vs user Worker events.
|
|
177
|
+
|
|
178
|
+
### Error Handling
|
|
179
|
+
|
|
180
|
+
Always wrap external calls. See gotchas.md for fallback storage pattern.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Cloudflare Terraform Provider
|
|
2
|
+
|
|
3
|
+
**Expert guidance for Cloudflare Terraform Provider - infrastructure as code for Cloudflare resources.**
|
|
4
|
+
|
|
5
|
+
## Core Principles
|
|
6
|
+
|
|
7
|
+
- **Provider-first**: Use Terraform provider for ALL infrastructure - never mix with wrangler.jsonc for the same resources
|
|
8
|
+
- **State management**: Always use remote state (S3, Terraform Cloud, etc.) for team environments
|
|
9
|
+
- **Modular architecture**: Create reusable modules for common patterns (zones, workers, pages)
|
|
10
|
+
- **Version pinning**: Always pin provider version with `~>` for predictable upgrades
|
|
11
|
+
- **Secret management**: Use variables + environment vars for sensitive data - never hardcode API tokens
|
|
12
|
+
|
|
13
|
+
## Provider Version
|
|
14
|
+
|
|
15
|
+
| Version | Status | Notes |
|
|
16
|
+
|---------|--------|-------|
|
|
17
|
+
| 5.x | Current | Auto-generated from OpenAPI, breaking changes from v4 |
|
|
18
|
+
| 4.x | Legacy | Manual maintenance, deprecated |
|
|
19
|
+
|
|
20
|
+
**Critical:** v5 renamed many resources (`cloudflare_record` → `cloudflare_dns_record`, `cloudflare_worker_*` → `cloudflare_workers_*`). See [gotchas.md](./gotchas.md#v5-breaking-changes) for migration details.
|
|
21
|
+
|
|
22
|
+
## Provider Setup
|
|
23
|
+
|
|
24
|
+
### Basic Configuration
|
|
25
|
+
|
|
26
|
+
```hcl
|
|
27
|
+
terraform {
|
|
28
|
+
required_version = ">= 1.0"
|
|
29
|
+
|
|
30
|
+
required_providers {
|
|
31
|
+
cloudflare = {
|
|
32
|
+
source = "cloudflare/cloudflare"
|
|
33
|
+
version = "~> 5.15.0"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
provider "cloudflare" {
|
|
39
|
+
api_token = var.cloudflare_api_token # or CLOUDFLARE_API_TOKEN env var
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Authentication Methods (priority order)
|
|
44
|
+
|
|
45
|
+
1. **API Token** (RECOMMENDED): `api_token` or `CLOUDFLARE_API_TOKEN`
|
|
46
|
+
- Create: Dashboard → My Profile → API Tokens
|
|
47
|
+
- Scope to specific accounts/zones for security
|
|
48
|
+
|
|
49
|
+
2. **Global API Key** (LEGACY): `api_key` + `api_email` or `CLOUDFLARE_API_KEY` + `CLOUDFLARE_EMAIL`
|
|
50
|
+
- Less secure, use tokens instead
|
|
51
|
+
|
|
52
|
+
3. **User Service Key**: `user_service_key` for Origin CA certificates
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
## Quick Reference: Common Commands
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
terraform init # Initialize provider
|
|
60
|
+
terraform plan # Plan changes
|
|
61
|
+
terraform apply # Apply changes
|
|
62
|
+
terraform destroy # Destroy resources
|
|
63
|
+
terraform import cloudflare_zone.example <zone-id> # Import existing
|
|
64
|
+
terraform state list # List resources in state
|
|
65
|
+
terraform output # Show outputs
|
|
66
|
+
terraform fmt -recursive # Format code
|
|
67
|
+
terraform validate # Validate configuration
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Import Existing Resources
|
|
71
|
+
|
|
72
|
+
Use cf-terraforming to generate configs from existing Cloudflare resources:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Install
|
|
76
|
+
brew install cloudflare/cloudflare/cf-terraforming
|
|
77
|
+
|
|
78
|
+
# Generate HCL from existing resources
|
|
79
|
+
cf-terraforming generate --resource-type cloudflare_dns_record --zone <zone-id>
|
|
80
|
+
|
|
81
|
+
# Import into Terraform state
|
|
82
|
+
cf-terraforming import --resource-type cloudflare_dns_record --zone <zone-id>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Reading Order
|
|
86
|
+
|
|
87
|
+
1. Start with [README.md](./README.md) for provider setup and authentication
|
|
88
|
+
2. Review [configuration.md](./configuration.md) for resource configurations
|
|
89
|
+
3. Check [api.md](./api.md) for data sources and existing resource queries
|
|
90
|
+
4. See [patterns.md](./patterns.md) for multi-environment and CI/CD patterns
|
|
91
|
+
5. Read [gotchas.md](./gotchas.md) for state drift, v5 breaking changes, and troubleshooting
|
|
92
|
+
|
|
93
|
+
## In This Reference
|
|
94
|
+
- [configuration.md](./configuration.md) - Resources for zones, DNS, workers, KV, R2, D1, Pages, rulesets
|
|
95
|
+
- [api.md](./api.md) - Data sources for existing resources
|
|
96
|
+
- [patterns.md](./patterns.md) - Architecture patterns, multi-env setup, CI/CD integration
|
|
97
|
+
- [gotchas.md](./gotchas.md) - Common issues, security, best practices
|
|
98
|
+
|
|
99
|
+
## See Also
|
|
100
|
+
- [pulumi](../pulumi/) - Alternative IaC tool for Cloudflare
|
|
101
|
+
- [wrangler](../wrangler/) - CLI deployment alternative
|
|
102
|
+
- [workers](../workers/) - Worker runtime documentation
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Terraform Data Sources Reference
|
|
2
|
+
|
|
3
|
+
Query existing Cloudflare resources to reference in your configurations.
|
|
4
|
+
|
|
5
|
+
## v5 Data Source Names
|
|
6
|
+
|
|
7
|
+
| v4 Name | v5 Name | Notes |
|
|
8
|
+
|---------|---------|-------|
|
|
9
|
+
| `cloudflare_record` | `cloudflare_dns_record` | |
|
|
10
|
+
| `cloudflare_worker_script` | `cloudflare_workers_script` | Note: plural |
|
|
11
|
+
| `cloudflare_access_*` | `cloudflare_zero_trust_*` | Access → Zero Trust |
|
|
12
|
+
|
|
13
|
+
## Zone Data Sources
|
|
14
|
+
|
|
15
|
+
```hcl
|
|
16
|
+
# Get zone by name
|
|
17
|
+
data "cloudflare_zone" "example" {
|
|
18
|
+
name = "example.com"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
# Use in resources
|
|
22
|
+
resource "cloudflare_dns_record" "www" {
|
|
23
|
+
zone_id = data.cloudflare_zone.example.id
|
|
24
|
+
name = "www"
|
|
25
|
+
# ...
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Account Data Sources
|
|
30
|
+
|
|
31
|
+
```hcl
|
|
32
|
+
# List all accounts
|
|
33
|
+
data "cloudflare_accounts" "main" {
|
|
34
|
+
name = "My Account"
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
# Use account ID
|
|
38
|
+
resource "cloudflare_worker_script" "api" {
|
|
39
|
+
account_id = data.cloudflare_accounts.main.accounts[0].id
|
|
40
|
+
# ...
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Worker Data Sources
|
|
45
|
+
|
|
46
|
+
```hcl
|
|
47
|
+
# Get existing worker script (v5: cloudflare_workers_script)
|
|
48
|
+
data "cloudflare_workers_script" "existing" {
|
|
49
|
+
account_id = var.account_id
|
|
50
|
+
name = "existing-worker"
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
# Reference in service bindings
|
|
54
|
+
resource "cloudflare_workers_script" "consumer" {
|
|
55
|
+
service_binding {
|
|
56
|
+
name = "UPSTREAM"
|
|
57
|
+
service = data.cloudflare_workers_script.existing.name
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## KV Data Sources
|
|
63
|
+
|
|
64
|
+
```hcl
|
|
65
|
+
# Get KV namespace
|
|
66
|
+
data "cloudflare_workers_kv_namespace" "existing" {
|
|
67
|
+
account_id = var.account_id
|
|
68
|
+
namespace_id = "abc123"
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
# Use in worker binding
|
|
72
|
+
resource "cloudflare_workers_script" "api" {
|
|
73
|
+
kv_namespace_binding {
|
|
74
|
+
name = "KV"
|
|
75
|
+
namespace_id = data.cloudflare_workers_kv_namespace.existing.id
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Lists Data Source
|
|
81
|
+
|
|
82
|
+
```hcl
|
|
83
|
+
# Get IP lists for WAF rules
|
|
84
|
+
data "cloudflare_list" "blocked_ips" {
|
|
85
|
+
account_id = var.account_id
|
|
86
|
+
name = "blocked_ips"
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## IP Ranges Data Source
|
|
91
|
+
|
|
92
|
+
```hcl
|
|
93
|
+
# Get Cloudflare IP ranges (for firewall rules)
|
|
94
|
+
data "cloudflare_ip_ranges" "cloudflare" {}
|
|
95
|
+
|
|
96
|
+
output "ipv4_cidrs" {
|
|
97
|
+
value = data.cloudflare_ip_ranges.cloudflare.ipv4_cidr_blocks
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
output "ipv6_cidrs" {
|
|
101
|
+
value = data.cloudflare_ip_ranges.cloudflare.ipv6_cidr_blocks
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
# Use in security group rules (AWS example)
|
|
105
|
+
resource "aws_security_group_rule" "allow_cloudflare" {
|
|
106
|
+
type = "ingress"
|
|
107
|
+
from_port = 443
|
|
108
|
+
to_port = 443
|
|
109
|
+
protocol = "tcp"
|
|
110
|
+
cidr_blocks = data.cloudflare_ip_ranges.cloudflare.ipv4_cidr_blocks
|
|
111
|
+
security_group_id = aws_security_group.web.id
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Common Patterns
|
|
116
|
+
|
|
117
|
+
### Import ID Formats
|
|
118
|
+
|
|
119
|
+
| Resource | Import ID Format |
|
|
120
|
+
|----------|------------------|
|
|
121
|
+
| `cloudflare_zone` | `<zone-id>` |
|
|
122
|
+
| `cloudflare_dns_record` | `<zone-id>/<record-id>` |
|
|
123
|
+
| `cloudflare_workers_script` | `<account-id>/<script-name>` |
|
|
124
|
+
| `cloudflare_workers_kv_namespace` | `<account-id>/<namespace-id>` |
|
|
125
|
+
| `cloudflare_r2_bucket` | `<account-id>/<bucket-name>` |
|
|
126
|
+
| `cloudflare_d1_database` | `<account-id>/<database-id>` |
|
|
127
|
+
| `cloudflare_pages_project` | `<account-id>/<project-name>` |
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Example: Import DNS record
|
|
131
|
+
terraform import cloudflare_dns_record.example <zone-id>/<record-id>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Reference Across Modules
|
|
135
|
+
|
|
136
|
+
```hcl
|
|
137
|
+
# modules/worker/main.tf
|
|
138
|
+
data "cloudflare_zone" "main" {
|
|
139
|
+
name = var.domain
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
resource "cloudflare_worker_route" "api" {
|
|
143
|
+
zone_id = data.cloudflare_zone.main.id
|
|
144
|
+
pattern = "api.${var.domain}/*"
|
|
145
|
+
script_name = cloudflare_worker_script.api.name
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Output Important Values
|
|
150
|
+
|
|
151
|
+
```hcl
|
|
152
|
+
output "zone_id" {
|
|
153
|
+
value = cloudflare_zone.main.id
|
|
154
|
+
description = "Zone ID for DNS management"
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
output "worker_url" {
|
|
158
|
+
value = "https://${cloudflare_worker_domain.api.hostname}"
|
|
159
|
+
description = "Worker API endpoint"
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
output "kv_namespace_id" {
|
|
163
|
+
value = cloudflare_workers_kv_namespace.app.id
|
|
164
|
+
sensitive = false
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
output "name_servers" {
|
|
168
|
+
value = cloudflare_zone.main.name_servers
|
|
169
|
+
description = "Name servers for domain registration"
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## See Also
|
|
174
|
+
|
|
175
|
+
- [README](./README.md) - Provider setup
|
|
176
|
+
- [Configuration Reference](./configuration.md) - All resource types
|
|
177
|
+
- [Patterns](./patterns.md) - Architecture patterns
|
|
178
|
+
- [Troubleshooting](./gotchas.md) - Common issues
|