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,60 @@
|
|
|
1
|
+
# Framework Integration
|
|
2
|
+
|
|
3
|
+
**Web Analytics is dashboard-only** - no programmatic API. This covers beacon integration.
|
|
4
|
+
|
|
5
|
+
## Basic HTML
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<script defer src='https://static.cloudflareinsights.com/beacon.min.js'
|
|
9
|
+
data-cf-beacon='{"token": "YOUR_TOKEN", "spa": true}'></script>
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Place before closing `</body>` tag.
|
|
13
|
+
|
|
14
|
+
## Framework Examples
|
|
15
|
+
|
|
16
|
+
| Framework | Location | Notes |
|
|
17
|
+
|-----------|----------|-------|
|
|
18
|
+
| React/Vite | `public/index.html` | Add `spa: true` |
|
|
19
|
+
| Next.js App Router | `app/layout.tsx` | Use `<Script strategy="afterInteractive">` |
|
|
20
|
+
| Next.js Pages | `pages/_document.tsx` | Use `<Script>` |
|
|
21
|
+
| Nuxt 3 | `app.vue` with `useHead()` | Or use plugin |
|
|
22
|
+
| Vue 3/Vite | `index.html` | Add `spa: true` |
|
|
23
|
+
| Gatsby | `gatsby-browser.js` | `onClientEntry` hook |
|
|
24
|
+
| SvelteKit | `src/app.html` | Before `</body>` |
|
|
25
|
+
| Astro | Layout component | Before `</body>` |
|
|
26
|
+
| Angular | `src/index.html` | Add `spa: true` |
|
|
27
|
+
| Docusaurus | `docusaurus.config.js` | In `scripts` array |
|
|
28
|
+
|
|
29
|
+
## Configuration
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"token": "YOUR_TOKEN",
|
|
34
|
+
"spa": true
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Use `spa: true` for:** React Router, Vue Router, Next.js, Nuxt, Gatsby, SvelteKit, Angular
|
|
39
|
+
|
|
40
|
+
**Use `spa: false` for:** Traditional server-rendered (PHP, Django, Rails, WordPress)
|
|
41
|
+
|
|
42
|
+
## CSP Headers
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
script-src 'self' https://static.cloudflareinsights.com;
|
|
46
|
+
connect-src 'self' https://cloudflareinsights.com;
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## GDPR Consent
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
// Load conditionally based on consent
|
|
53
|
+
if (localStorage.getItem('analytics-consent') === 'true') {
|
|
54
|
+
const script = document.createElement('script');
|
|
55
|
+
script.src = 'https://static.cloudflareinsights.com/beacon.min.js';
|
|
56
|
+
script.defer = true;
|
|
57
|
+
script.setAttribute('data-cf-beacon', '{"token": "YOUR_TOKEN", "spa": true}');
|
|
58
|
+
document.body.appendChild(script);
|
|
59
|
+
}
|
|
60
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Web Analytics Patterns
|
|
2
|
+
|
|
3
|
+
## Core Web Vitals Debugging
|
|
4
|
+
|
|
5
|
+
Dashboard → Core Web Vitals → Click metric → Debug View shows top 5 problematic elements.
|
|
6
|
+
|
|
7
|
+
### LCP Fixes
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<!-- Priority hints -->
|
|
11
|
+
<img src="hero.jpg" loading="eager" fetchpriority="high" />
|
|
12
|
+
<link rel="preload" as="image" href="/hero.jpg" fetchpriority="high" />
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### CLS Fixes
|
|
16
|
+
|
|
17
|
+
```css
|
|
18
|
+
/* Reserve space */
|
|
19
|
+
.ad-container { min-height: 250px; }
|
|
20
|
+
img { width: 400px; height: 300px; } /* Explicit dimensions */
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### INP Fixes
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
// Debounce expensive operations
|
|
27
|
+
const handleInput = debounce(search, 300);
|
|
28
|
+
|
|
29
|
+
// Yield to main thread
|
|
30
|
+
await task(); await new Promise(r => setTimeout(r, 0)); await task2();
|
|
31
|
+
|
|
32
|
+
// Move to Web Worker for heavy computation
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
| Metric | Good | Poor |
|
|
36
|
+
|--------|------|------|
|
|
37
|
+
| LCP | ≤2.5s | >4s |
|
|
38
|
+
| INP | ≤200ms | >500ms |
|
|
39
|
+
| CLS | ≤0.1 | >0.25 |
|
|
40
|
+
|
|
41
|
+
## GDPR Consent
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
// Load beacon only after consent
|
|
45
|
+
const consent = localStorage.getItem('analytics-consent');
|
|
46
|
+
if (consent === 'accepted') {
|
|
47
|
+
const script = document.createElement('script');
|
|
48
|
+
script.src = 'https://static.cloudflareinsights.com/beacon.min.js';
|
|
49
|
+
script.setAttribute('data-cf-beacon', '{"token": "TOKEN", "spa": true}');
|
|
50
|
+
document.body.appendChild(script);
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Alternative: Dashboard → "Enable, excluding visitor data in the EU"
|
|
55
|
+
|
|
56
|
+
## SPA Navigation
|
|
57
|
+
|
|
58
|
+
```html
|
|
59
|
+
<!-- REQUIRED for React/Vue/etc routing -->
|
|
60
|
+
<script data-cf-beacon='{"token": "TOKEN", "spa": true}' ...></script>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Without `spa: true`: only initial pageload tracked.
|
|
64
|
+
|
|
65
|
+
## Staging/Production Separation
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
// Use env-specific tokens
|
|
69
|
+
const token = process.env.NEXT_PUBLIC_CF_ANALYTICS_TOKEN;
|
|
70
|
+
// .env.production: production token
|
|
71
|
+
// .env.staging: staging token (or empty to disable)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Bot Filtering
|
|
75
|
+
|
|
76
|
+
Dashboard → Filters → "Exclude Bot Traffic"
|
|
77
|
+
|
|
78
|
+
Filters: Search crawlers, monitoring services, known bots.
|
|
79
|
+
Not filtered: Headless browsers (Playwright/Puppeteer).
|
|
80
|
+
|
|
81
|
+
## Ad-Blocker Impact
|
|
82
|
+
|
|
83
|
+
~25-40% of users may block `cloudflareinsights.com`. No official workaround.
|
|
84
|
+
Dashboard shows minimum baseline; use server logs for complete picture.
|
|
85
|
+
|
|
86
|
+
## Limitations
|
|
87
|
+
|
|
88
|
+
- No UTM parameter tracking
|
|
89
|
+
- No webhooks/alerts/API
|
|
90
|
+
- No custom beacon domains
|
|
91
|
+
- Max 10 non-proxied sites
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Workerd Runtime
|
|
2
|
+
|
|
3
|
+
V8-based JS/Wasm runtime powering Cloudflare Workers. Use as app server, dev tool, or HTTP proxy.
|
|
4
|
+
|
|
5
|
+
## ⚠️ IMPORTANT SECURITY NOTICE
|
|
6
|
+
**workerd is NOT a hardened sandbox.** Do not run untrusted code. It's designed for deploying YOUR code locally/self-hosted, not multi-tenant SaaS. Cloudflare production adds security layers not present in open-source workerd.
|
|
7
|
+
|
|
8
|
+
## Decision Tree: When to Use What
|
|
9
|
+
|
|
10
|
+
**95% of users:** Use Wrangler
|
|
11
|
+
- Local development: `wrangler dev` (uses workerd internally)
|
|
12
|
+
- Deployment: `wrangler deploy` (deploys to Cloudflare)
|
|
13
|
+
- Types: `wrangler types` (generates TypeScript types)
|
|
14
|
+
|
|
15
|
+
**Use raw workerd directly only if:**
|
|
16
|
+
- Self-hosting Workers runtime in production
|
|
17
|
+
- Embedding runtime in C++ application
|
|
18
|
+
- Custom tooling/testing infrastructure
|
|
19
|
+
- Debugging workerd-specific behavior
|
|
20
|
+
|
|
21
|
+
**Never use workerd for:**
|
|
22
|
+
- Running untrusted/user-submitted code
|
|
23
|
+
- Multi-tenant isolation (not hardened)
|
|
24
|
+
- Production without additional security layers
|
|
25
|
+
|
|
26
|
+
## Key Features
|
|
27
|
+
- **Standards-based**: Fetch API, Web Crypto, Streams, WebSocket
|
|
28
|
+
- **Nanoservices**: Service bindings with local call performance
|
|
29
|
+
- **Capability security**: Explicit bindings prevent SSRF
|
|
30
|
+
- **Backwards compatible**: Version = max compat date supported
|
|
31
|
+
|
|
32
|
+
## Architecture
|
|
33
|
+
```
|
|
34
|
+
Config (workerd.capnp)
|
|
35
|
+
├── Services (workers/endpoints)
|
|
36
|
+
├── Sockets (HTTP/HTTPS listeners)
|
|
37
|
+
└── Extensions (global capabilities)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Quick Start
|
|
41
|
+
```bash
|
|
42
|
+
workerd serve config.capnp
|
|
43
|
+
workerd compile config.capnp myConfig -o binary
|
|
44
|
+
workerd test config.capnp
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Platform Support & Beta Status
|
|
48
|
+
|
|
49
|
+
| Platform | Status | Notes |
|
|
50
|
+
|----------|--------|-------|
|
|
51
|
+
| Linux (x64) | Stable | Primary platform |
|
|
52
|
+
| macOS (x64/ARM) | Stable | Full support |
|
|
53
|
+
| Windows | Beta | Use WSL2 for best results |
|
|
54
|
+
| Linux (ARM64) | Experimental | Limited testing |
|
|
55
|
+
|
|
56
|
+
workerd is in **active development**. Breaking changes possible. Pin versions in production.
|
|
57
|
+
|
|
58
|
+
## Core Concepts
|
|
59
|
+
- **Service**: Named endpoint (worker/network/disk/external)
|
|
60
|
+
- **Binding**: Capability-based resource access (KV/DO/R2/services)
|
|
61
|
+
- **Compatibility date**: Feature gate (always set!)
|
|
62
|
+
- **Modules**: ES modules (recommended) or service worker syntax
|
|
63
|
+
|
|
64
|
+
## Reading Order (Progressive Disclosure)
|
|
65
|
+
|
|
66
|
+
**Start here:**
|
|
67
|
+
1. This README (overview, decision tree)
|
|
68
|
+
2. [patterns.md](./patterns.md) - Common workflows, framework examples
|
|
69
|
+
|
|
70
|
+
**When you need details:**
|
|
71
|
+
3. [configuration.md](./configuration.md) - Config format, services, bindings
|
|
72
|
+
4. [api.md](./api.md) - Runtime APIs, TypeScript types
|
|
73
|
+
5. [gotchas.md](./gotchas.md) - Common errors, debugging
|
|
74
|
+
|
|
75
|
+
## Related References
|
|
76
|
+
- [workers](../workers/) - Workers runtime API documentation
|
|
77
|
+
- [miniflare](../miniflare/) - Testing tool built on workerd
|
|
78
|
+
- [wrangler](../wrangler/) - CLI that uses workerd for local dev
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Workerd APIs
|
|
2
|
+
|
|
3
|
+
## Worker Code (JS/TS)
|
|
4
|
+
|
|
5
|
+
### ES Modules (Recommended)
|
|
6
|
+
```javascript
|
|
7
|
+
export default {
|
|
8
|
+
async fetch(request, env, ctx) {
|
|
9
|
+
const value = await env.KV.get("key"); // Bindings in env
|
|
10
|
+
const response = await env.API.fetch(request); // Service binding
|
|
11
|
+
ctx.waitUntil(logRequest(request)); // Background task
|
|
12
|
+
return new Response("OK");
|
|
13
|
+
},
|
|
14
|
+
async adminApi(request, env, ctx) { /* Named entrypoint */ },
|
|
15
|
+
async queue(batch, env, ctx) { /* Queue consumer */ },
|
|
16
|
+
async scheduled(event, env, ctx) { /* Cron handler */ }
|
|
17
|
+
};
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### TypeScript Types
|
|
21
|
+
|
|
22
|
+
**Generate from wrangler.toml (Recommended):**
|
|
23
|
+
```bash
|
|
24
|
+
wrangler types # Output: worker-configuration.d.ts
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Manual types:**
|
|
28
|
+
```typescript
|
|
29
|
+
interface Env {
|
|
30
|
+
API: Fetcher;
|
|
31
|
+
CACHE: KVNamespace;
|
|
32
|
+
STORAGE: R2Bucket;
|
|
33
|
+
ROOMS: DurableObjectNamespace;
|
|
34
|
+
API_KEY: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default {
|
|
38
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
|
39
|
+
return new Response(await env.CACHE.get("key"));
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Setup:**
|
|
45
|
+
```bash
|
|
46
|
+
npm install -D @cloudflare/workers-types
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
// tsconfig.json
|
|
51
|
+
{"compilerOptions": {"types": ["@cloudflare/workers-types"]}}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Service Worker Syntax (Legacy)
|
|
55
|
+
```javascript
|
|
56
|
+
addEventListener('fetch', event => {
|
|
57
|
+
event.respondWith(handleRequest(event.request));
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
async function handleRequest(request) {
|
|
61
|
+
const value = await KV.get("key"); // Bindings as globals
|
|
62
|
+
return new Response("OK");
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Durable Objects
|
|
67
|
+
```javascript
|
|
68
|
+
export class Room {
|
|
69
|
+
constructor(state, env) { this.state = state; this.env = env; }
|
|
70
|
+
|
|
71
|
+
async fetch(request) {
|
|
72
|
+
const url = new URL(request.url);
|
|
73
|
+
if (url.pathname === "/increment") {
|
|
74
|
+
const value = (await this.state.storage.get("counter")) || 0;
|
|
75
|
+
await this.state.storage.put("counter", value + 1);
|
|
76
|
+
return new Response(String(value + 1));
|
|
77
|
+
}
|
|
78
|
+
return new Response("Not found", {status: 404});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### RPC Between Services
|
|
84
|
+
```javascript
|
|
85
|
+
// Caller: env.AUTH.validateToken(token) returns structured data
|
|
86
|
+
const user = await env.AUTH.validateToken(request.headers.get("Authorization"));
|
|
87
|
+
|
|
88
|
+
// Callee: export methods that return data
|
|
89
|
+
export default {
|
|
90
|
+
async validateToken(token) { return {id: 123, name: "Alice"}; }
|
|
91
|
+
};
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Web Platform APIs
|
|
95
|
+
|
|
96
|
+
### Fetch
|
|
97
|
+
- `fetch()`, `Request`, `Response`, `Headers`
|
|
98
|
+
- `AbortController`, `AbortSignal`
|
|
99
|
+
|
|
100
|
+
### Streams
|
|
101
|
+
- `ReadableStream`, `WritableStream`, `TransformStream`
|
|
102
|
+
- Byte streams, BYOB readers
|
|
103
|
+
|
|
104
|
+
### Web Crypto
|
|
105
|
+
- `crypto.subtle` (encrypt/decrypt/sign/verify)
|
|
106
|
+
- `crypto.randomUUID()`, `crypto.getRandomValues()`
|
|
107
|
+
|
|
108
|
+
### Encoding
|
|
109
|
+
- `TextEncoder`, `TextDecoder`
|
|
110
|
+
- `atob()`, `btoa()`
|
|
111
|
+
|
|
112
|
+
### Web Standards
|
|
113
|
+
- `URL`, `URLSearchParams`
|
|
114
|
+
- `Blob`, `File`, `FormData`
|
|
115
|
+
- `WebSocket`
|
|
116
|
+
|
|
117
|
+
### Server-Sent Events (EventSource)
|
|
118
|
+
```javascript
|
|
119
|
+
// Server-side SSE
|
|
120
|
+
const { readable, writable } = new TransformStream();
|
|
121
|
+
const writer = writable.getWriter();
|
|
122
|
+
writer.write(new TextEncoder().encode('data: Hello\n\n'));
|
|
123
|
+
return new Response(readable, {headers: {'Content-Type': 'text/event-stream'}});
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### HTMLRewriter (HTML Parsing/Transformation)
|
|
127
|
+
```javascript
|
|
128
|
+
const response = await fetch('https://example.com');
|
|
129
|
+
return new HTMLRewriter()
|
|
130
|
+
.on('a[href]', {
|
|
131
|
+
element(el) {
|
|
132
|
+
el.setAttribute('href', `/proxy?url=${encodeURIComponent(el.getAttribute('href'))}`);
|
|
133
|
+
}
|
|
134
|
+
})
|
|
135
|
+
.on('script', { element(el) { el.remove(); } })
|
|
136
|
+
.transform(response);
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### TCP Sockets (Experimental)
|
|
140
|
+
```javascript
|
|
141
|
+
const socket = await connect({ hostname: 'example.com', port: 80 });
|
|
142
|
+
const writer = socket.writable.getWriter();
|
|
143
|
+
await writer.write(new TextEncoder().encode('GET / HTTP/1.1\r\n\r\n'));
|
|
144
|
+
const reader = socket.readable.getReader();
|
|
145
|
+
const { value } = await reader.read();
|
|
146
|
+
return new Response(value);
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Performance
|
|
150
|
+
- `performance.now()`, `performance.timeOrigin`
|
|
151
|
+
- `setTimeout()`, `setInterval()`, `queueMicrotask()`
|
|
152
|
+
|
|
153
|
+
### Console
|
|
154
|
+
- `console.log()`, `console.error()`, `console.warn()`
|
|
155
|
+
|
|
156
|
+
### Node.js Compat (`nodejs_compat` flag)
|
|
157
|
+
```javascript
|
|
158
|
+
import { Buffer } from 'node:buffer';
|
|
159
|
+
import { randomBytes } from 'node:crypto';
|
|
160
|
+
|
|
161
|
+
const buf = Buffer.from('Hello');
|
|
162
|
+
const random = randomBytes(16);
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Available:** `node:buffer`, `node:crypto`, `node:stream`, `node:util`, `node:events`, `node:assert`, `node:path`, `node:querystring`, `node:url`
|
|
166
|
+
**NOT available:** `node:fs`, `node:http`, `node:net`, `node:child_process`
|
|
167
|
+
|
|
168
|
+
## CLI Commands
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
workerd serve config.capnp [constantName] # Start server
|
|
172
|
+
workerd serve config.capnp --socket-addr http=*:3000 --verbose
|
|
173
|
+
workerd compile config.capnp constantName -o binary # Compile to binary
|
|
174
|
+
workerd test config.capnp [--test-only=test.js] # Run tests
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Wrangler Integration
|
|
178
|
+
|
|
179
|
+
Use Wrangler for development:
|
|
180
|
+
```bash
|
|
181
|
+
wrangler dev # Uses workerd internally
|
|
182
|
+
wrangler types # Generate TypeScript types from wrangler.toml
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
See [patterns.md](./patterns.md) for usage examples, [configuration.md](./configuration.md) for config details.
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Workerd Configuration
|
|
2
|
+
|
|
3
|
+
## Basic Structure
|
|
4
|
+
```capnp
|
|
5
|
+
using Workerd = import "/workerd/workerd.capnp";
|
|
6
|
+
|
|
7
|
+
const config :Workerd.Config = (
|
|
8
|
+
services = [(name = "main", worker = .mainWorker)],
|
|
9
|
+
sockets = [(name = "http", address = "*:8080", http = (), service = "main")]
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
const mainWorker :Workerd.Worker = (
|
|
13
|
+
modules = [(name = "index.js", esModule = embed "src/index.js")],
|
|
14
|
+
compatibilityDate = "2024-01-15",
|
|
15
|
+
bindings = [...]
|
|
16
|
+
);
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Services
|
|
20
|
+
**Worker**: Run JS/Wasm code
|
|
21
|
+
```capnp
|
|
22
|
+
(name = "api", worker = (
|
|
23
|
+
modules = [(name = "index.js", esModule = embed "index.js")],
|
|
24
|
+
compatibilityDate = "2024-01-15",
|
|
25
|
+
bindings = [...]
|
|
26
|
+
))
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Network**: Internet access
|
|
30
|
+
```capnp
|
|
31
|
+
(name = "internet", network = (allow = ["public"], tlsOptions = (trustBrowserCas = true)))
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**External**: Reverse proxy
|
|
35
|
+
```capnp
|
|
36
|
+
(name = "backend", external = (address = "api.com:443", http = (style = tls)))
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Disk**: Static files
|
|
40
|
+
```capnp
|
|
41
|
+
(name = "assets", disk = (path = "/var/www", writable = false))
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Sockets
|
|
45
|
+
```capnp
|
|
46
|
+
(name = "http", address = "*:8080", http = (), service = "main")
|
|
47
|
+
(name = "https", address = "*:443", https = (options = (), tlsOptions = (keypair = (...))), service = "main")
|
|
48
|
+
(name = "app", address = "unix:/tmp/app.sock", http = (), service = "main")
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Worker Formats
|
|
52
|
+
```capnp
|
|
53
|
+
# ES Modules (recommended)
|
|
54
|
+
modules = [(name = "index.js", esModule = embed "src/index.js"), (name = "wasm.wasm", wasm = embed "build/module.wasm")]
|
|
55
|
+
|
|
56
|
+
# Service Worker (legacy)
|
|
57
|
+
serviceWorkerScript = embed "worker.js"
|
|
58
|
+
|
|
59
|
+
# CommonJS
|
|
60
|
+
(name = "legacy.js", commonJsModule = embed "legacy.js", namedExports = ["foo"])
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Bindings
|
|
64
|
+
Bindings expose resources to workers. ES modules: `env.BINDING`, Service workers: globals.
|
|
65
|
+
|
|
66
|
+
### Primitive Types
|
|
67
|
+
```capnp
|
|
68
|
+
(name = "API_KEY", text = "secret") # String
|
|
69
|
+
(name = "CONFIG", json = '{"key":"val"}') # Parsed JSON
|
|
70
|
+
(name = "DATA", data = embed "data.bin") # ArrayBuffer
|
|
71
|
+
(name = "DATABASE_URL", fromEnvironment = "DB_URL") # System env var
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Service Binding
|
|
75
|
+
```capnp
|
|
76
|
+
(name = "AUTH", service = "auth-worker") # Basic
|
|
77
|
+
(name = "API", service = (
|
|
78
|
+
name = "backend",
|
|
79
|
+
entrypoint = "adminApi", # Named export
|
|
80
|
+
props = (json = '{"role":"admin"}') # ctx.props
|
|
81
|
+
))
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Storage
|
|
85
|
+
```capnp
|
|
86
|
+
(name = "CACHE", kvNamespace = "kv-service") # KV
|
|
87
|
+
(name = "STORAGE", r2Bucket = "r2-service") # R2
|
|
88
|
+
(name = "ROOMS", durableObjectNamespace = (
|
|
89
|
+
serviceName = "room-service",
|
|
90
|
+
className = "Room"
|
|
91
|
+
))
|
|
92
|
+
(name = "FAST", memoryCache = (
|
|
93
|
+
id = "cache-id",
|
|
94
|
+
limits = (maxKeys = 1000, maxValueSize = 1048576)
|
|
95
|
+
))
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Other
|
|
99
|
+
```capnp
|
|
100
|
+
(name = "TASKS", queue = "queue-service")
|
|
101
|
+
(name = "ANALYTICS", analyticsEngine = "analytics")
|
|
102
|
+
(name = "LOADER", workerLoader = (id = "dynamic"))
|
|
103
|
+
(name = "KEY", cryptoKey = (format = raw, algorithm = (name = "HMAC", hash = "SHA-256"), keyData = embed "key.bin", usages = [sign, verify], extractable = false))
|
|
104
|
+
(name = "TRACED", wrapped = (moduleName = "tracing", entrypoint = "makeTracer", innerBindings = [(name = "backend", service = "backend")]))
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Compatibility
|
|
108
|
+
```capnp
|
|
109
|
+
compatibilityDate = "2024-01-15" # Always set!
|
|
110
|
+
compatibilityFlags = ["nodejs_compat", "streams_enable_constructors"]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Version = max compat date. Update carefully after testing.
|
|
114
|
+
|
|
115
|
+
## Parameter Bindings (Inheritance)
|
|
116
|
+
```capnp
|
|
117
|
+
const base :Workerd.Worker = (
|
|
118
|
+
modules = [...], compatibilityDate = "2024-01-15",
|
|
119
|
+
bindings = [(name = "API_URL", parameter = (type = text)), (name = "DB", parameter = (type = service))]
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
const derived :Workerd.Worker = (
|
|
123
|
+
inherit = "base-service",
|
|
124
|
+
bindings = [(name = "API_URL", text = "https://api.com"), (name = "DB", service = "postgres")]
|
|
125
|
+
);
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Durable Objects Config
|
|
129
|
+
```capnp
|
|
130
|
+
const worker :Workerd.Worker = (
|
|
131
|
+
modules = [...],
|
|
132
|
+
compatibilityDate = "2024-01-15",
|
|
133
|
+
bindings = [(name = "ROOMS", durableObjectNamespace = "Room")],
|
|
134
|
+
durableObjectNamespaces = [(className = "Room", uniqueKey = "v1")],
|
|
135
|
+
durableObjectStorage = (localDisk = "/var/do")
|
|
136
|
+
);
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Remote Bindings (Development)
|
|
140
|
+
|
|
141
|
+
Connect local workerd to production Cloudflare resources:
|
|
142
|
+
|
|
143
|
+
```capnp
|
|
144
|
+
bindings = [
|
|
145
|
+
# Remote KV (requires API token)
|
|
146
|
+
(name = "PROD_KV", kvNamespace = (
|
|
147
|
+
remote = (
|
|
148
|
+
accountId = "your-account-id",
|
|
149
|
+
namespaceId = "your-namespace-id",
|
|
150
|
+
apiToken = .envVar("CF_API_TOKEN")
|
|
151
|
+
)
|
|
152
|
+
)),
|
|
153
|
+
|
|
154
|
+
# Remote R2
|
|
155
|
+
(name = "PROD_R2", r2Bucket = (
|
|
156
|
+
remote = (
|
|
157
|
+
accountId = "your-account-id",
|
|
158
|
+
bucketName = "my-bucket",
|
|
159
|
+
apiToken = .envVar("CF_API_TOKEN")
|
|
160
|
+
)
|
|
161
|
+
)),
|
|
162
|
+
|
|
163
|
+
# Remote Durable Object
|
|
164
|
+
(name = "PROD_DO", durableObjectNamespace = (
|
|
165
|
+
remote = (
|
|
166
|
+
accountId = "your-account-id",
|
|
167
|
+
scriptName = "my-worker",
|
|
168
|
+
className = "MyDO",
|
|
169
|
+
apiToken = .envVar("CF_API_TOKEN")
|
|
170
|
+
)
|
|
171
|
+
))
|
|
172
|
+
]
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Note:** Remote bindings require network access and valid Cloudflare API credentials.
|
|
176
|
+
|
|
177
|
+
## Logging & Debugging
|
|
178
|
+
```capnp
|
|
179
|
+
logging = (structuredLogging = true, stdoutPrefix = "OUT: ", stderrPrefix = "ERR: ")
|
|
180
|
+
v8Flags = ["--expose-gc", "--max-old-space-size=2048"] # ⚠️ Unsupported in production
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
See [patterns.md](./patterns.md) for multi-service examples, [gotchas.md](./gotchas.md) for config errors.
|