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,79 @@
|
|
|
1
|
+
# Cloudflare Artifacts
|
|
2
|
+
|
|
3
|
+
Store versioned file trees behind a repo-style interface that works from Workers, the REST API, and Git-compatible tooling.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Use **Artifacts** when the thing you need to store is a versioned filesystem tree rather than a single object, key, or SQL row.
|
|
8
|
+
|
|
9
|
+
Typical Artifacts use cases:
|
|
10
|
+
- Git-style repositories
|
|
11
|
+
- Per-agent, per-session, or per-task repos
|
|
12
|
+
- Build outputs and deployment bundles
|
|
13
|
+
- Checkpoints and generated assets
|
|
14
|
+
- Shared file trees passed between developer tools and Workers
|
|
15
|
+
|
|
16
|
+
Artifacts is a good fit when the same content needs to be addressable from **Workers**, the **REST API**, and **Git-compatible clients**.
|
|
17
|
+
|
|
18
|
+
Artifacts is especially useful for agent and automation workflows where each unit of work should have its own isolated repo and token.
|
|
19
|
+
|
|
20
|
+
**Prefer retrieval over memory** for current availability, authentication details, route shapes, limits, and pricing. Start at `https://developers.cloudflare.com/artifacts/`.
|
|
21
|
+
|
|
22
|
+
## When to Use Artifacts
|
|
23
|
+
|
|
24
|
+
| Need | Use | Why |
|
|
25
|
+
|------|-----|-----|
|
|
26
|
+
| Versioned file trees such as repos, build outputs, checkpoints, or generated assets | Artifacts | Artifacts stores and shares **versioned filesystem content** |
|
|
27
|
+
| A git-compatible workflow with `clone`, `fetch`, `pull`, or `push` | Artifacts | Artifacts exposes **git-over-HTTPS remotes** and repo-scoped tokens |
|
|
28
|
+
| The same artifact accessible from Workers, HTTP APIs, and developer tooling | Artifacts | Artifacts is available through a **Workers binding**, **REST API**, and **git-compatible interface** |
|
|
29
|
+
| Large files by object key, app config by key, or relational app data | R2, KV, or D1 | Use storage products directly when you need **objects, key-value entries, or SQL rows**, not versioned file trees |
|
|
30
|
+
|
|
31
|
+
## Recommended Workflow
|
|
32
|
+
|
|
33
|
+
- Create one repo per agent, session, user workspace, or task when work should stay isolated.
|
|
34
|
+
- Fork from a stable baseline when many repos need the same starter files or prompts.
|
|
35
|
+
- Use branches only when collaborators share the same lifecycle and need to work in one repo.
|
|
36
|
+
- Use namespaces to separate environments, teams, or high-rate workloads.
|
|
37
|
+
|
|
38
|
+
## Quick Start
|
|
39
|
+
|
|
40
|
+
**From a Worker:**
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
interface Env {
|
|
44
|
+
ARTIFACTS: Artifacts;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const created = await env.ARTIFACTS.create("starter-repo");
|
|
48
|
+
// created.remote -> git remote URL
|
|
49
|
+
// created.token -> initial repo token
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**From the REST API:**
|
|
53
|
+
|
|
54
|
+
Use the namespace-scoped Artifacts base URL plus a gateway JWT. For imports from existing HTTPS remotes, use the REST API rather than the Workers binding.
|
|
55
|
+
|
|
56
|
+
## Reading Order
|
|
57
|
+
|
|
58
|
+
| Task | Read |
|
|
59
|
+
|------|------|
|
|
60
|
+
| Decide whether Artifacts is the right product | README only |
|
|
61
|
+
| Create or manage repos from a Worker | README → configuration.md → api.md |
|
|
62
|
+
| Integrate Artifacts from an external system | README → api.md |
|
|
63
|
+
| Set up agent or sandbox workflows | README → configuration.md |
|
|
64
|
+
| Verify exact auth, routes, limits, or pricing | Live docs first: `https://developers.cloudflare.com/artifacts/` |
|
|
65
|
+
|
|
66
|
+
## In This Reference
|
|
67
|
+
|
|
68
|
+
- **[api.md](api.md)** - Workers binding methods, REST routes, token and repo operations
|
|
69
|
+
- **[configuration.md](configuration.md)** - Wrangler binding shape, Worker typing, REST configuration guidance
|
|
70
|
+
|
|
71
|
+
## See Also
|
|
72
|
+
|
|
73
|
+
- [Cloudflare Artifacts Docs](https://developers.cloudflare.com/artifacts/)
|
|
74
|
+
- [Artifacts Git Protocol Docs](https://developers.cloudflare.com/artifacts/api/git-protocol/)
|
|
75
|
+
- [ArtifactFS Docs](https://developers.cloudflare.com/artifacts/api/artifactfs/)
|
|
76
|
+
- [Cloudflare Workers Docs](https://developers.cloudflare.com/workers/)
|
|
77
|
+
- [Cloudflare Durable Objects Docs](https://developers.cloudflare.com/durable-objects/)
|
|
78
|
+
- [Cloudflare R2 Docs](https://developers.cloudflare.com/r2/)
|
|
79
|
+
- [Cloudflare D1 Docs](https://developers.cloudflare.com/d1/)
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Artifacts API Reference
|
|
2
|
+
|
|
3
|
+
Use Artifacts through the **Workers binding**, the **REST control plane**, and **Git-compatible remotes**.
|
|
4
|
+
|
|
5
|
+
**Prefer retrieval** for exact request and response details. Verify current behavior at `https://developers.cloudflare.com/artifacts/` before relying on specific auth flows, route details, or generated binding types.
|
|
6
|
+
|
|
7
|
+
## Workers Binding
|
|
8
|
+
|
|
9
|
+
Artifacts exposes a Worker binding on `env.ARTIFACTS`.
|
|
10
|
+
|
|
11
|
+
### Namespace Methods
|
|
12
|
+
|
|
13
|
+
| Method | Use For |
|
|
14
|
+
|--------|---------|
|
|
15
|
+
| `create(name, opts?)` | Create a repo and receive its initial remote and token |
|
|
16
|
+
| `get(name)` | Resolve a repo handle for repo-scoped operations |
|
|
17
|
+
| `list(opts?)` | List repos in a namespace |
|
|
18
|
+
| `delete(name)` | Delete a repo |
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
const created = await env.ARTIFACTS.create("starter-repo", {
|
|
22
|
+
description: "Repository for automation experiments",
|
|
23
|
+
setDefaultBranch: "main"
|
|
24
|
+
});
|
|
25
|
+
const repo = await env.ARTIFACTS.get("starter-repo");
|
|
26
|
+
const page = await env.ARTIFACTS.list({ limit: 10 });
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Use the REST API when you need to import a repo from another HTTPS remote.
|
|
30
|
+
|
|
31
|
+
### Repo Handle Methods
|
|
32
|
+
|
|
33
|
+
Use a repo handle returned by `get()` or `create()`.
|
|
34
|
+
|
|
35
|
+
| Method | Use For |
|
|
36
|
+
|--------|---------|
|
|
37
|
+
| `info()` | Read repo metadata, including the remote URL |
|
|
38
|
+
| `createToken(scope?, ttl?)` | Mint a repo-scoped read or write token |
|
|
39
|
+
| `listTokens()` | Inspect active tokens |
|
|
40
|
+
| `validateToken(token)` | Check whether a token is still valid |
|
|
41
|
+
| `revokeToken(tokenOrId)` | Revoke a token by ID or value |
|
|
42
|
+
| `fork(name, opts?)` | Fork one repo into another |
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
const repo = await env.ARTIFACTS.get("starter-repo");
|
|
46
|
+
if (!repo) throw new Error("Repo not found");
|
|
47
|
+
|
|
48
|
+
const info = await repo.info();
|
|
49
|
+
const token = await repo.createToken("read", 3600);
|
|
50
|
+
const forked = await repo.fork("starter-repo-copy", {
|
|
51
|
+
defaultBranchOnly: true
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Binding Notes
|
|
56
|
+
|
|
57
|
+
- Current docs describe the runtime binding surface as `create`, `get`, `list`, `delete`, and repo-handle methods like `info`, `createToken`, and `fork`.
|
|
58
|
+
- Use `npx wrangler types` in the target project and treat the generated `worker-configuration.d.ts` as the source of truth for that environment.
|
|
59
|
+
- If generated types appear to expose `import()` or a different `get()` shape, verify the live docs before depending on those methods.
|
|
60
|
+
|
|
61
|
+
Verify current runtime behavior in the live docs before depending on methods that are not shown in the Workers binding reference.
|
|
62
|
+
|
|
63
|
+
## REST API
|
|
64
|
+
|
|
65
|
+
Artifacts currently documents a namespace-scoped control plane:
|
|
66
|
+
|
|
67
|
+
```txt
|
|
68
|
+
https://artifacts.cloudflare.net/v1/api/namespaces/$ARTIFACTS_NAMESPACE
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Some deployments also expose an `/edge/v1/api/...` base path. Verify the correct base URL for your environment in the live docs.
|
|
72
|
+
|
|
73
|
+
Requests to the standard `/v1/api/...` routes use a **gateway JWT** with Bearer authentication.
|
|
74
|
+
|
|
75
|
+
Returned repo tokens authenticate **Git operations** against the repo `remote`. They do not authenticate REST control-plane requests.
|
|
76
|
+
|
|
77
|
+
Current docs show the standard Cloudflare v4 response envelope around REST results.
|
|
78
|
+
|
|
79
|
+
### Repo Routes
|
|
80
|
+
|
|
81
|
+
| Route | Use For |
|
|
82
|
+
|-------|---------|
|
|
83
|
+
| `POST /repos` | Create a repo |
|
|
84
|
+
| `GET /repos` | List repos |
|
|
85
|
+
| `GET /repos/:name` | Read repo metadata and remote |
|
|
86
|
+
| `DELETE /repos/:name` | Delete a repo |
|
|
87
|
+
| `POST /repos/:name/fork` | Fork a repo |
|
|
88
|
+
| `POST /repos/:name/import` | Import a public HTTPS remote |
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
curl --request POST "$ARTIFACTS_BASE_URL/repos" \
|
|
92
|
+
--header "Authorization: Bearer $ARTIFACTS_JWT" \
|
|
93
|
+
--header "Content-Type: application/json" \
|
|
94
|
+
--data '{"name":"starter-repo"}'
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Important current details from the docs draft:
|
|
98
|
+
- `POST /repos/:name/import` accepts a full HTTPS remote URL such as GitHub or GitLab.
|
|
99
|
+
- Import supports options such as `branch`, `depth`, and `read_only`.
|
|
100
|
+
- Repo metadata includes fields such as description, default branch, timestamps, and the Git `remote`.
|
|
101
|
+
|
|
102
|
+
### Token Routes
|
|
103
|
+
|
|
104
|
+
| Route | Use For |
|
|
105
|
+
|-------|---------|
|
|
106
|
+
| `GET /repos/:name/tokens` | List repo tokens |
|
|
107
|
+
| `POST /tokens` | Create a token for a repo |
|
|
108
|
+
| `DELETE /tokens/:id` | Revoke a token by ID |
|
|
109
|
+
|
|
110
|
+
Current docs show list-token filtering and pagination by token state. Retrieve the exact query shape from the live docs when you need token audit or cleanup workflows.
|
|
111
|
+
|
|
112
|
+
Use **read** tokens for clone, fetch, pull, and indexing workflows. Use **write** tokens only when a workflow must push or otherwise mutate a repo.
|
|
113
|
+
|
|
114
|
+
## Git-Compatible Access
|
|
115
|
+
|
|
116
|
+
Artifacts returns repo `remote` URLs that work with standard git-over-HTTPS tooling.
|
|
117
|
+
|
|
118
|
+
Recommended current auth pattern for local workflows:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Use a self-contained Basic-auth remote only for short-lived commands that need credentials embedded in the URL.
|
|
125
|
+
|
|
126
|
+
`read` tokens support `clone`, `fetch`, and `pull`. `git push` requires a `write` token.
|
|
127
|
+
|
|
128
|
+
For large repos where startup time matters more than a full clone, Artifacts also documents **ArtifactFS**. Retrieve current details from `https://developers.cloudflare.com/artifacts/` when you need mount-style access.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Artifacts Configuration
|
|
2
|
+
|
|
3
|
+
## Worker Binding
|
|
4
|
+
|
|
5
|
+
Configure the `artifacts` binding in your Wrangler config:
|
|
6
|
+
|
|
7
|
+
```toml
|
|
8
|
+
[[artifacts]]
|
|
9
|
+
binding = "ARTIFACTS"
|
|
10
|
+
namespace = "default"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
This exposes Artifacts on `env.ARTIFACTS` inside your Worker.
|
|
14
|
+
|
|
15
|
+
If you authenticate with `wrangler login`, current docs say Wrangler requests `artifacts:write` by default.
|
|
16
|
+
|
|
17
|
+
## TypeScript
|
|
18
|
+
|
|
19
|
+
Regenerate Worker types after adding the binding:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx wrangler types
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Use the generated binding type in your environment definition:
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
interface Env {
|
|
29
|
+
ARTIFACTS: Artifacts;
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Wrangler generates the `Artifacts` type from the binding. Treat the generated `worker-configuration.d.ts` file as the source of truth for your environment.
|
|
34
|
+
|
|
35
|
+
## Structure Repos for Isolation
|
|
36
|
+
|
|
37
|
+
Artifacts works best when autonomous work is isolated:
|
|
38
|
+
- Create one repo per agent, session, sandbox, or task when work should stay separate.
|
|
39
|
+
- Fork from a reviewed baseline instead of copying starter files into every new repo.
|
|
40
|
+
- Use branches only when collaborators share the same lifecycle and need to work in one repo.
|
|
41
|
+
- Use namespaces to separate environments, teams, or high-rate workloads.
|
|
42
|
+
|
|
43
|
+
## REST Configuration
|
|
44
|
+
|
|
45
|
+
For external systems, configure the namespace-scoped base URL and gateway JWT:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
export ARTIFACTS_NAMESPACE="default"
|
|
49
|
+
export ARTIFACTS_JWT="<YOUR_GATEWAY_JWT>"
|
|
50
|
+
export ARTIFACTS_BASE_URL="https://artifacts.cloudflare.net/v1/api/namespaces/$ARTIFACTS_NAMESPACE"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Some environments also expose an `/edge/v1/api/...` base path. Verify the correct host and base path in the live docs for your Artifacts environment.
|
|
54
|
+
|
|
55
|
+
Use environment variables or your secret manager. Do not hardcode gateway JWTs or repo tokens.
|
|
56
|
+
|
|
57
|
+
## Repo Tokens
|
|
58
|
+
|
|
59
|
+
Artifacts workflows usually involve repo-scoped tokens returned by `create()` or minted later through the binding or REST API.
|
|
60
|
+
|
|
61
|
+
Keep the control plane and data plane separate:
|
|
62
|
+
- Use the **Workers binding** or **REST API** with a gateway JWT to create repos and mint tokens.
|
|
63
|
+
- Use repo-scoped tokens only for **Git operations** against the returned `remote`.
|
|
64
|
+
|
|
65
|
+
Recommended handling:
|
|
66
|
+
- Mint the narrowest scope you need: `read` or `write`
|
|
67
|
+
- Prefer short-lived tokens for handoff between systems
|
|
68
|
+
- Revoke tokens that are no longer needed
|
|
69
|
+
|
|
70
|
+
Verify the current token behavior and auth guidance in `https://developers.cloudflare.com/artifacts/` before building long-lived automation.
|
|
71
|
+
|
|
72
|
+
## Git Consumers
|
|
73
|
+
|
|
74
|
+
Artifacts is designed to work with standard git-over-HTTPS clients once you have a repo `remote` and an access token.
|
|
75
|
+
|
|
76
|
+
Prefer header-based auth for local tooling so the full token stays out of the remote URL:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Use a Basic-auth remote only for short-lived commands that need a self-contained URL.
|
|
83
|
+
|
|
84
|
+
## Retrieval Checklist
|
|
85
|
+
|
|
86
|
+
Check the live docs before relying on:
|
|
87
|
+
- the current Workers binding surface
|
|
88
|
+
- exact token formats
|
|
89
|
+
- availability or product status
|
|
90
|
+
- route details for import, fork, and token-management flows
|
|
91
|
+
- the correct control-plane host or `/edge/v1` base path for your environment
|
|
92
|
+
- platform limits or pricing
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Cloudflare Bindings Skill Reference
|
|
2
|
+
|
|
3
|
+
Expert guidance on Cloudflare Workers Bindings - the runtime APIs that connect Workers to Cloudflare platform resources.
|
|
4
|
+
|
|
5
|
+
## What Are Bindings?
|
|
6
|
+
|
|
7
|
+
Bindings are how Workers access Cloudflare resources (storage, compute, services) via the `env` object. They're configured in `wrangler.jsonc`, type-safe via TypeScript, and zero-overhead at runtime.
|
|
8
|
+
|
|
9
|
+
## Reading Order
|
|
10
|
+
|
|
11
|
+
1. **This file** - Binding catalog and selection guide
|
|
12
|
+
2. **[api.md](api.md)** - TypeScript types and env access patterns
|
|
13
|
+
3. **[configuration.md](configuration.md)** - Complete wrangler.jsonc examples
|
|
14
|
+
4. **[patterns.md](patterns.md)** - Best practices and common patterns
|
|
15
|
+
5. **[gotchas.md](gotchas.md)** - Critical pitfalls and troubleshooting
|
|
16
|
+
|
|
17
|
+
## Binding Catalog
|
|
18
|
+
|
|
19
|
+
### Storage Bindings
|
|
20
|
+
|
|
21
|
+
| Binding | Use Case | Access Pattern |
|
|
22
|
+
|---------|----------|----------------|
|
|
23
|
+
| **KV** | Key-value cache, CDN-backed reads | `env.MY_KV.get(key)` |
|
|
24
|
+
| **R2** | Object storage (S3-compatible) | `env.MY_BUCKET.get(key)` |
|
|
25
|
+
| **D1** | SQL database (SQLite) | `env.DB.prepare(sql).all()` |
|
|
26
|
+
| **Durable Objects** | Coordination, real-time state | `env.MY_DO.get(id)` |
|
|
27
|
+
| **Vectorize** | Vector embeddings search | `env.VECTORIZE.query(vector)` |
|
|
28
|
+
| **Queues** | Async message processing | `env.MY_QUEUE.send(msg)` |
|
|
29
|
+
|
|
30
|
+
### Compute Bindings
|
|
31
|
+
|
|
32
|
+
| Binding | Use Case | Access Pattern |
|
|
33
|
+
|---------|----------|----------------|
|
|
34
|
+
| **Service** | Worker-to-Worker RPC | `env.MY_SERVICE.fetch(req)` |
|
|
35
|
+
| **Workers AI** | LLM inference | `env.AI.run(model, input)` |
|
|
36
|
+
| **Browser Rendering** | Headless Chrome | `env.BROWSER.fetch(url)` |
|
|
37
|
+
|
|
38
|
+
### Platform Bindings
|
|
39
|
+
|
|
40
|
+
| Binding | Use Case | Access Pattern |
|
|
41
|
+
|---------|----------|----------------|
|
|
42
|
+
| **Analytics Engine** | Custom metrics | `env.ANALYTICS.writeDataPoint(data)` |
|
|
43
|
+
| **mTLS** | Client certificates | `env.MY_CERT` (string) |
|
|
44
|
+
| **Hyperdrive** | Database pooling | `env.HYPERDRIVE.connectionString` |
|
|
45
|
+
| **Rate Limiting** | Request throttling | `env.RATE_LIMITER.limit(id)` |
|
|
46
|
+
| **Workflows** | Long-running workflows | `env.MY_WORKFLOW.create()` |
|
|
47
|
+
|
|
48
|
+
### Configuration Bindings
|
|
49
|
+
|
|
50
|
+
| Binding | Use Case | Access Pattern |
|
|
51
|
+
|---------|----------|----------------|
|
|
52
|
+
| **Environment Variables** | Non-sensitive config | `env.API_URL` (string) |
|
|
53
|
+
| **Secrets** | Sensitive values | `env.API_KEY` (string) |
|
|
54
|
+
| **Text/Data Blobs** | Static files | `env.MY_BLOB` (string) |
|
|
55
|
+
| **WASM** | WebAssembly modules | `env.MY_WASM` (WebAssembly.Module) |
|
|
56
|
+
|
|
57
|
+
## Quick Selection Guide
|
|
58
|
+
|
|
59
|
+
**Need persistent storage?**
|
|
60
|
+
- Key-value < 25MB → **KV**
|
|
61
|
+
- Files/objects → **R2**
|
|
62
|
+
- Relational data → **D1**
|
|
63
|
+
- Real-time coordination → **Durable Objects**
|
|
64
|
+
|
|
65
|
+
**Need AI/compute?**
|
|
66
|
+
- LLM inference → **Workers AI**
|
|
67
|
+
- Scraping/PDFs → **Browser Rendering**
|
|
68
|
+
- Call another Worker → **Service binding**
|
|
69
|
+
|
|
70
|
+
**Need async processing?**
|
|
71
|
+
- Background jobs → **Queues**
|
|
72
|
+
|
|
73
|
+
**Need config?**
|
|
74
|
+
- Public values → **Environment Variables**
|
|
75
|
+
- Secrets → **Secrets** (never commit)
|
|
76
|
+
|
|
77
|
+
## Quick Start
|
|
78
|
+
|
|
79
|
+
1. **Add binding to wrangler.jsonc:**
|
|
80
|
+
```jsonc
|
|
81
|
+
{
|
|
82
|
+
"kv_namespaces": [
|
|
83
|
+
{ "binding": "MY_KV", "id": "your-kv-id" }
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
2. **Generate types:**
|
|
89
|
+
```bash
|
|
90
|
+
npx wrangler types
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
3. **Access in Worker:**
|
|
94
|
+
```typescript
|
|
95
|
+
export default {
|
|
96
|
+
async fetch(request, env, ctx) {
|
|
97
|
+
await env.MY_KV.put('key', 'value');
|
|
98
|
+
return new Response('OK');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Type Safety
|
|
104
|
+
|
|
105
|
+
Bindings are fully typed via `wrangler types`. See [api.md](api.md) for details.
|
|
106
|
+
|
|
107
|
+
## Limits
|
|
108
|
+
|
|
109
|
+
- 64 bindings max per Worker (all types combined)
|
|
110
|
+
- See [gotchas.md](gotchas.md) for per-binding limits
|
|
111
|
+
|
|
112
|
+
## Key Concepts
|
|
113
|
+
|
|
114
|
+
**Zero-overhead access:** Bindings compiled into Worker, no network calls to access
|
|
115
|
+
**Type-safe:** Full TypeScript support via `wrangler types`
|
|
116
|
+
**Per-environment:** Different IDs for dev/staging/production
|
|
117
|
+
**Secrets vs Vars:** Secrets encrypted at rest, never in config files
|
|
118
|
+
|
|
119
|
+
## See Also
|
|
120
|
+
|
|
121
|
+
- [Cloudflare Docs: Bindings](https://developers.cloudflare.com/workers/runtime-apis/bindings/)
|
|
122
|
+
- [Wrangler Configuration](https://developers.cloudflare.com/workers/wrangler/configuration/)
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Bindings API Reference
|
|
2
|
+
|
|
3
|
+
## TypeScript Types
|
|
4
|
+
|
|
5
|
+
Cloudflare generates binding types via `npx wrangler types`. This creates `.wrangler/types/runtime.d.ts` with your Env interface.
|
|
6
|
+
|
|
7
|
+
### Generated Env Interface
|
|
8
|
+
|
|
9
|
+
After running `wrangler types`, TypeScript knows your bindings:
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
interface Env {
|
|
13
|
+
// From wrangler.jsonc bindings
|
|
14
|
+
MY_KV: KVNamespace;
|
|
15
|
+
MY_BUCKET: R2Bucket;
|
|
16
|
+
DB: D1Database;
|
|
17
|
+
MY_SERVICE: Fetcher;
|
|
18
|
+
AI: Ai;
|
|
19
|
+
|
|
20
|
+
// From vars
|
|
21
|
+
API_URL: string;
|
|
22
|
+
|
|
23
|
+
// From secrets (set via wrangler secret put)
|
|
24
|
+
API_KEY: string;
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Binding Types
|
|
29
|
+
|
|
30
|
+
| Config | TypeScript Type | Package |
|
|
31
|
+
|--------|-----------------|---------|
|
|
32
|
+
| `kv_namespaces` | `KVNamespace` | `@cloudflare/workers-types` |
|
|
33
|
+
| `r2_buckets` | `R2Bucket` | `@cloudflare/workers-types` |
|
|
34
|
+
| `d1_databases` | `D1Database` | `@cloudflare/workers-types` |
|
|
35
|
+
| `durable_objects.bindings` | `DurableObjectNamespace` | `@cloudflare/workers-types` |
|
|
36
|
+
| `vectorize` | `VectorizeIndex` | `@cloudflare/workers-types` |
|
|
37
|
+
| `queues.producers` | `Queue` | `@cloudflare/workers-types` |
|
|
38
|
+
| `services` | `Fetcher` | `@cloudflare/workers-types` |
|
|
39
|
+
| `ai` | `Ai` | `@cloudflare/workers-types` |
|
|
40
|
+
| `browser` | `Fetcher` | `@cloudflare/workers-types` |
|
|
41
|
+
| `analytics_engine_datasets` | `AnalyticsEngineDataset` | `@cloudflare/workers-types` |
|
|
42
|
+
| `hyperdrive` | `Hyperdrive` | `@cloudflare/workers-types` |
|
|
43
|
+
| `rate_limiting` | `RateLimit` | `@cloudflare/workers-types` |
|
|
44
|
+
| `workflows` | `Workflow` | `@cloudflare/workers-types` |
|
|
45
|
+
| `mtls_certificates` / `vars` / `text_blobs` / `data_blobs` | `string` | Built-in |
|
|
46
|
+
| `wasm_modules` | `WebAssembly.Module` | Built-in |
|
|
47
|
+
|
|
48
|
+
## Accessing Bindings
|
|
49
|
+
|
|
50
|
+
### Method 1: fetch() Handler (Recommended)
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
export default {
|
|
54
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
|
55
|
+
const value = await env.MY_KV.get('key');
|
|
56
|
+
return new Response(value);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Why:** Type-safe, aligns with Workers API, supports ctx for waitUntil/passThroughOnException.
|
|
62
|
+
|
|
63
|
+
### Method 2: Hono Framework
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { Hono } from 'hono';
|
|
67
|
+
|
|
68
|
+
const app = new Hono<{ Bindings: Env }>();
|
|
69
|
+
|
|
70
|
+
app.get('/', async (c) => {
|
|
71
|
+
const value = await c.env.MY_KV.get('key');
|
|
72
|
+
return c.json({ value });
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
export default app;
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Why:** c.env auto-typed, ergonomic for routing-heavy apps.
|
|
79
|
+
|
|
80
|
+
### Method 3: Module Workers (Legacy)
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
export async function handleRequest(request: Request, env: Env): Promise<Response> {
|
|
84
|
+
const value = await env.MY_KV.get('key');
|
|
85
|
+
return new Response(value);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
addEventListener('fetch', (event) => {
|
|
89
|
+
// env not directly available - requires workarounds
|
|
90
|
+
});
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Avoid:** Use fetch() handler instead (Method 1).
|
|
94
|
+
|
|
95
|
+
## Type Generation Workflow
|
|
96
|
+
|
|
97
|
+
### Initial Setup
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Install wrangler
|
|
101
|
+
npm install -D wrangler
|
|
102
|
+
|
|
103
|
+
# Generate types from wrangler.jsonc
|
|
104
|
+
npx wrangler types
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### After Changing Bindings
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Added/modified binding in wrangler.jsonc
|
|
111
|
+
npx wrangler types
|
|
112
|
+
|
|
113
|
+
# TypeScript now sees updated Env interface
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Note:** `wrangler types` outputs to `.wrangler/types/runtime.d.ts`. TypeScript picks this up automatically if `@cloudflare/workers-types` is in `tsconfig.json` `"types"` array.
|
|
117
|
+
|
|
118
|
+
## Key Binding Methods
|
|
119
|
+
|
|
120
|
+
**KV:**
|
|
121
|
+
```typescript
|
|
122
|
+
await env.MY_KV.get(key, { type: 'json' }); // text|json|arrayBuffer|stream
|
|
123
|
+
await env.MY_KV.put(key, value, { expirationTtl: 3600 });
|
|
124
|
+
await env.MY_KV.delete(key);
|
|
125
|
+
await env.MY_KV.list({ prefix: 'user:' });
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**R2:**
|
|
129
|
+
```typescript
|
|
130
|
+
await env.BUCKET.get(key);
|
|
131
|
+
await env.BUCKET.put(key, value);
|
|
132
|
+
await env.BUCKET.delete(key);
|
|
133
|
+
await env.BUCKET.list({ prefix: 'images/' });
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**D1:**
|
|
137
|
+
```typescript
|
|
138
|
+
await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId).first();
|
|
139
|
+
await env.DB.batch([stmt1, stmt2]);
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Service:**
|
|
143
|
+
```typescript
|
|
144
|
+
await env.MY_SERVICE.fetch(new Request('https://fake/path'));
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Workers AI:**
|
|
148
|
+
```typescript
|
|
149
|
+
await env.AI.run('@cf/meta/llama-3.1-8b-instruct', { prompt: 'Hello' });
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Queues:**
|
|
153
|
+
```typescript
|
|
154
|
+
await env.MY_QUEUE.send({ userId: 123, action: 'process' });
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Durable Objects:**
|
|
158
|
+
```typescript
|
|
159
|
+
const id = env.MY_DO.idFromName('user-123');
|
|
160
|
+
const stub = env.MY_DO.get(id);
|
|
161
|
+
await stub.fetch(new Request('https://fake/increment'));
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Runtime vs Build-Time Types
|
|
165
|
+
|
|
166
|
+
| Type Source | When Generated | Use Case |
|
|
167
|
+
|-------------|----------------|----------|
|
|
168
|
+
| `@cloudflare/workers-types` | npm install | Base Workers APIs (Request, Response, etc.) |
|
|
169
|
+
| `wrangler types` | After config change | Your specific bindings (Env interface) |
|
|
170
|
+
|
|
171
|
+
**Install both:**
|
|
172
|
+
```bash
|
|
173
|
+
npm install -D @cloudflare/workers-types
|
|
174
|
+
npx wrangler types
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Type Safety Best Practices
|
|
178
|
+
|
|
179
|
+
1. **Never use `any` for env:**
|
|
180
|
+
```typescript
|
|
181
|
+
// ❌ BAD
|
|
182
|
+
async fetch(request: Request, env: any) { }
|
|
183
|
+
|
|
184
|
+
// ✅ GOOD
|
|
185
|
+
async fetch(request: Request, env: Env) { }
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
2. **Run wrangler types after config changes:**
|
|
189
|
+
```bash
|
|
190
|
+
# After editing wrangler.jsonc
|
|
191
|
+
npx wrangler types
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
3. **Check generated types match config:**
|
|
195
|
+
```bash
|
|
196
|
+
# View generated Env interface
|
|
197
|
+
cat .wrangler/types/runtime.d.ts
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## See Also
|
|
201
|
+
|
|
202
|
+
- [Workers Types Package](https://www.npmjs.com/package/@cloudflare/workers-types)
|
|
203
|
+
- [Wrangler Types Command](https://developers.cloudflare.com/workers/wrangler/commands/#types)
|