opencodekit 0.15.3 → 0.15.5
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/dist/index.js +1 -1
- package/dist/template/.opencode/AGENTS.md +209 -77
- package/dist/template/.opencode/agent/plan.md +4 -0
- package/dist/template/.opencode/command/cloudflare.md +70 -0
- package/dist/template/.opencode/package.json +1 -1
- package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
- package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
- package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
- package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
- package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
- package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
- package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
- package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
- package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
- package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
- package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
- package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
- package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
- package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
- package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
- package/package.json +1 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
### Wrangler Integration
|
|
2
|
+
|
|
3
|
+
While Wrangler primarily manages Workers, WAF configuration is typically done via:
|
|
4
|
+
- Dashboard UI
|
|
5
|
+
- Cloudflare API directly
|
|
6
|
+
- Terraform provider
|
|
7
|
+
- Pulumi provider
|
|
8
|
+
|
|
9
|
+
**Related Wrangler Operations**:
|
|
10
|
+
- Deploy Workers that benefit from WAF protection
|
|
11
|
+
- Configure zone settings that complement WAF
|
|
12
|
+
- Use `wrangler.toml` for environment-specific configurations
|
|
13
|
+
|
|
14
|
+
**Example: Using Cloudflare API from Worker**:
|
|
15
|
+
```typescript
|
|
16
|
+
// Worker that calls WAF API
|
|
17
|
+
export default {
|
|
18
|
+
async fetch(request: Request, env: Env): Promise<Response> {
|
|
19
|
+
const response = await fetch(
|
|
20
|
+
`https://api.cloudflare.com/client/v4/zones/${env.ZONE_ID}/rulesets`,
|
|
21
|
+
{
|
|
22
|
+
headers: {
|
|
23
|
+
'Authorization': `Bearer ${env.CF_API_TOKEN}`,
|
|
24
|
+
'Content-Type': 'application/json',
|
|
25
|
+
},
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
return response;
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### TypeScript SDK Usage
|
|
34
|
+
|
|
35
|
+
**Installation**:
|
|
36
|
+
```bash
|
|
37
|
+
npm install cloudflare
|
|
38
|
+
# or
|
|
39
|
+
pnpm add cloudflare
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Basic Setup**:
|
|
43
|
+
```typescript
|
|
44
|
+
import Cloud
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
### Common Issues & Solutions
|
|
2
|
+
|
|
3
|
+
**Issue**: False positives blocking legitimate traffic
|
|
4
|
+
**Solution**:
|
|
5
|
+
- Start with `log` action to monitor
|
|
6
|
+
- Use WAF exceptions for specific endpoints
|
|
7
|
+
- Override managed ruleset rules to less aggressive actions
|
|
8
|
+
- Combine attack score with path filters
|
|
9
|
+
|
|
10
|
+
**Issue**: Rate limiting blocking legitimate users behind NAT
|
|
11
|
+
**Solution**:
|
|
12
|
+
- Use "IP with NAT support" characteristic (Business+)
|
|
13
|
+
- Add additional characteristics (headers, cookies)
|
|
14
|
+
- Increase rate limits for shared IPs
|
|
15
|
+
- Use counting expressions to filter what counts
|
|
16
|
+
|
|
17
|
+
**Issue**: Rules not applying as expected
|
|
18
|
+
**Solution**:
|
|
19
|
+
- Check rule order and priority
|
|
20
|
+
- Verify expression syntax with Security Events
|
|
21
|
+
- Ensure ruleset is deployed to correct phase
|
|
22
|
+
- Check for conflicting skip or allow rules
|
|
23
|
+
|
|
24
|
+
**Issue**: Managed
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
### Common Issues & Solutions
|
|
2
|
+
|
|
3
|
+
**Issue**: False positives blocking legitimate traffic
|
|
4
|
+
**Solution**:
|
|
5
|
+
- Start with `log` action to monitor
|
|
6
|
+
- Use WAF exceptions for specific endpoints
|
|
7
|
+
- Override managed ruleset rules to less aggressive actions
|
|
8
|
+
- Combine attack score with path filters
|
|
9
|
+
|
|
10
|
+
**Issue**: Rate limiting blocking legitimate users behind NAT
|
|
11
|
+
**Solution**:
|
|
12
|
+
- Use "IP with NAT support" characteristic (Business+)
|
|
13
|
+
- Add additional characteristics (headers, cookies)
|
|
14
|
+
- Increase rate limits for shared IPs
|
|
15
|
+
- Use counting expressions to filter what counts
|
|
16
|
+
|
|
17
|
+
**Issue**: Rules not applying as expected
|
|
18
|
+
**Solution**:
|
|
19
|
+
- Check rule order and priority
|
|
20
|
+
- Verify expression syntax with Security Events
|
|
21
|
+
- Ensure ruleset is deployed to correct phase
|
|
22
|
+
- Check for conflicting skip or allow rules
|
|
23
|
+
|
|
24
|
+
**Issue**: Managed ruleset causing performance issues
|
|
25
|
+
**Solution**:
|
|
26
|
+
- Use exceptions to skip ruleset for static assets
|
|
27
|
+
- Override ruleset to disable unused rule categories
|
|
28
|
+
- Consider using zone-specific configuration
|
|
29
|
+
-
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Cloudflare Web Analytics Skill Reference
|
|
2
|
+
|
|
3
|
+
Comprehensive guide for implementing Cloudflare Web Analytics - a privacy-first web analytics solution that provides performance metrics and user insights without compromising visitor privacy.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Cloudflare Web Analytics is a free, privacy-focused analytics service that:
|
|
8
|
+
- Measures Core W...
|
|
9
|
+
|
|
10
|
+
## In This Reference
|
|
11
|
+
|
|
12
|
+
- **[configuration.md](./configuration.md)** - Setup, deployment, configuration
|
|
13
|
+
- **[api.md](./api.md)** - API endpoints, methods, interfaces
|
|
14
|
+
- **[patterns.md](./patterns.md)** - Common patterns, use cases, examples
|
|
15
|
+
- **[gotchas.md](./gotchas.md)** - Troubleshooting, best practices, limitations
|
|
16
|
+
|
|
17
|
+
## See Also
|
|
18
|
+
|
|
19
|
+
- [Cloudflare Docs](https://developers.cloudflare.com/)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
## API Access (GraphQL)
|
|
2
|
+
|
|
3
|
+
While Web Analytics is primarily dashboard-based, Cloudflare provides GraphQL API access for advanced queries.
|
|
4
|
+
|
|
5
|
+
### Authentication
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# API Token with "Web Analytics Read" permission
|
|
9
|
+
curl -X POST https://api.cloudflare.com/client/v4/graphql \
|
|
10
|
+
-H "Authorization: Bearer YOUR_API_TOKEN" \
|
|
11
|
+
-H "Content-Type: application/json" \
|
|
12
|
+
--data '{"query": "..."}'
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Example Queries
|
|
16
|
+
|
|
17
|
+
**Get page views by path:**
|
|
18
|
+
|
|
19
|
+
```graphql
|
|
20
|
+
query {
|
|
21
|
+
viewer {
|
|
22
|
+
accounts(filter: {accountTag: "YOUR_ACCOUNT_ID"}) {
|
|
23
|
+
rumPageloadEventsAdaptiveGroups(
|
|
24
|
+
filter: {
|
|
25
|
+
date_geq: "2024-01-01"
|
|
26
|
+
date_lt: "2024-01-31"
|
|
27
|
+
}
|
|
28
|
+
limit: 100
|
|
29
|
+
) {
|
|
30
|
+
dimensions {
|
|
31
|
+
blob1 # Page path
|
|
32
|
+
}
|
|
33
|
+
sum {
|
|
34
|
+
visits
|
|
35
|
+
pageViews
|
|
36
|
+
}
|
|
37
|
+
avg {
|
|
38
|
+
sampleInterval
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Get Core Web Vitals:**
|
|
47
|
+
|
|
48
|
+
```graphql
|
|
49
|
+
query {
|
|
50
|
+
viewer {
|
|
51
|
+
accounts(filter: {accountTag: "YOUR_ACCOUNT_ID"}) {
|
|
52
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
## Setup Methods
|
|
2
|
+
|
|
3
|
+
### 1. Sites Proxied Through Cloudflare (Automatic)
|
|
4
|
+
|
|
5
|
+
For sites already on Cloudflare's proxy:
|
|
6
|
+
|
|
7
|
+
1. **Dashboard setup:**
|
|
8
|
+
- Navigate to Web Analytics in Cloudflare dashboard
|
|
9
|
+
- Click "Add a site"
|
|
10
|
+
- Select hostname from dropdown → "Done"
|
|
11
|
+
- Analytics enabled by default (beacon auto-injected)
|
|
12
|
+
|
|
13
|
+
2. **Configuration options:**
|
|
14
|
+
- **Enable** - Full auto-injection for all visitors
|
|
15
|
+
- **Enable, excluding visitor data in the EU** - No injection for EU visitors
|
|
16
|
+
- **Enable with JS Snippet installation** - Manual snippet required
|
|
17
|
+
- **Disable** - Turn off analytics
|
|
18
|
+
|
|
19
|
+
**Important:** If `Cache-Control: public, no-transform` header is set, auto-injection fails. Beacon must be added manually.
|
|
20
|
+
|
|
21
|
+
### 2. Sites Not Proxied Through Cloudflare (Manual)
|
|
22
|
+
|
|
23
|
+
For non-proxied sites (limit: 10 sites):
|
|
24
|
+
|
|
25
|
+
1. Dashboard: Web Analytics → "Add a site"
|
|
26
|
+
2. Enter hostname manually → "Done"
|
|
27
|
+
3. Copy JS snippet from "Manage site"
|
|
28
|
+
4. Add snippet before closing `</body>` tag:
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<!-- Cloudflar
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## Troubleshooting
|
|
2
|
+
|
|
3
|
+
### Beacon Not Loading
|
|
4
|
+
|
|
5
|
+
**Issue:** Script not appearing on page
|
|
6
|
+
|
|
7
|
+
**Solutions:**
|
|
8
|
+
1. Check `Cache-Control` header - remove `no-transform` if present
|
|
9
|
+
2. Verify beacon placement before `</body>`
|
|
10
|
+
3. Check CSP (Content Security Policy) allows `static.cloudflareinsights.com`
|
|
11
|
+
4. For proxied sites: Ensure auto-injection enabled in dashboard
|
|
12
|
+
|
|
13
|
+
**CSP Fix:**
|
|
14
|
+
```html
|
|
15
|
+
<meta http-equiv="Content-Security-Policy"
|
|
16
|
+
content="script-src 'self' 'unsafe-inline' https://static.cloudflareinsights.com;">
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### No Data Appearing
|
|
20
|
+
|
|
21
|
+
**Issue:** Dashboard shows no analytics
|
|
22
|
+
|
|
23
|
+
**Solutions:**
|
|
24
|
+
1. Wait 5-10 minutes after setup (data ingestion delay)
|
|
25
|
+
2. Verify token is correct in `data-cf-beacon`
|
|
26
|
+
3. Check browser console for beacon errors
|
|
27
|
+
4. Confirm site has real traffic (test by visiting pages)
|
|
28
|
+
5.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
## Common Use Cases
|
|
2
|
+
|
|
3
|
+
### 1. Performance Monitoring
|
|
4
|
+
|
|
5
|
+
Track Core Web Vitals to identify slow-loading elements:
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// Debug poor LCP scores
|
|
9
|
+
// 1. Enable Web Analytics
|
|
10
|
+
// 2. Dashboard → Core Web Vitals → LCP section
|
|
11
|
+
// 3. Debug View shows top 5 problematic elements
|
|
12
|
+
// 4. Use element CSS selector in browser console:
|
|
13
|
+
document.querySelector('.hero-image') // Example element
|
|
14
|
+
// 5. Optimize identified elements (lazy loading, compression, etc.)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### 2. Bot Traffic Filtering
|
|
18
|
+
|
|
19
|
+
Exclude bots to see real user metrics:
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Dashboard filters:
|
|
23
|
+
- Exclude Bots: Yes
|
|
24
|
+
→ Shows human traffic only
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 3. Multi-Site Analytics
|
|
28
|
+
|
|
29
|
+
Track multiple properties under one account:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Proxied sites: Unlimited
|
|
33
|
+
Non-proxied: Up to 10 sites
|
|
34
|
+
|
|
35
|
+
View by dimension:
|
|
36
|
+
- Site: example.com
|
|
37
|
+
- Site: blog.example.com
|
|
38
|
+
→ Compare traffic across properties
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 4. Geographic Analysis
|
|
42
|
+
|
|
43
|
+
Understand visitor distribution:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Filter by:
|
|
47
|
+
- Country: United States
|
|
48
|
+
- Device type: Mobile
|
|
49
|
+
→ Mobile traffic from US
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 5.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Workerd Runtime
|
|
2
|
+
|
|
3
|
+
V8-based JS/Wasm runtime powering Cloudflare Workers. Use as app server, dev tool, or HTTP proxy.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
- Local Workers development (via Wrangler)
|
|
7
|
+
- Self-hosted Workers runtime
|
|
8
|
+
- Custom embedded runtime
|
|
9
|
+
- Debugging runtime-specific issues
|
|
10
|
+
|
|
11
|
+
## Key Features
|
|
12
|
+
- **Standards-based**: Fetch API, Web Crypto, Streams, WebSocket
|
|
13
|
+
- **Nanoservices**: Service bindings with local call performance
|
|
14
|
+
- **Capability security**: Explicit bindings prevent SSRF
|
|
15
|
+
- **Backwards compatible**: Version = max compat date supported
|
|
16
|
+
|
|
17
|
+
## Architecture
|
|
18
|
+
```
|
|
19
|
+
Config (workerd.capnp)
|
|
20
|
+
├── Services (workers/endpoints)
|
|
21
|
+
├── Sockets (HTTP/HTTPS listeners)
|
|
22
|
+
└── Extensions (global capabilities)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
```bash
|
|
27
|
+
workerd serve config.capnp
|
|
28
|
+
workerd compile config.capnp myConfig -o binary
|
|
29
|
+
workerd test config.capnp
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Core Concepts
|
|
33
|
+
- **Service**: Named endpoint (worker/network/disk/external)
|
|
34
|
+
- **Binding**: Capability-based resource access (KV/DO/R2/services)
|
|
35
|
+
- **Compatibility date**: Feature gate (always set!)
|
|
36
|
+
- **Modules**: ES modules (recommended) or service worker syntax
|
|
37
|
+
|
|
38
|
+
## See Also
|
|
39
|
+
- [configuration.md](./configuration.md) - Config format, services, bindings
|
|
40
|
+
- [api.md](./api.md) - Runtime APIs, C++ embedding
|
|
41
|
+
- [patterns.md](./patterns.md) - Multi-service, DO, proxies
|
|
42
|
+
- [gotchas.md](./gotchas.md) - Common errors, debugging
|
|
43
|
+
|
|
44
|
+
## References
|
|
45
|
+
- [GitHub](https://github.com/cloudflare/workerd)
|
|
46
|
+
- [Compat Dates](https://developers.cloudflare.com/workers/configuration/compatibility-dates/)
|
|
47
|
+
- [workerd.capnp](https://github.com/cloudflare/workerd/blob/main/src/workerd/server/workerd.capnp)
|
|
@@ -0,0 +1,199 @@
|
|
|
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
|
+
// env: bindings, ctx: ExecutionContext
|
|
10
|
+
const value = await env.KV.get("key");
|
|
11
|
+
const response = await env.API.fetch(request);
|
|
12
|
+
|
|
13
|
+
ctx.waitUntil(logRequest(request)); // Background task
|
|
14
|
+
return new Response("OK");
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
async adminApi(request, env, ctx) { // Named entrypoint
|
|
18
|
+
return new Response("Admin");
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
async queue(batch, env, ctx) { // Queue consumer
|
|
22
|
+
for (const msg of batch.messages) {
|
|
23
|
+
await processMessage(msg.body);
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
async scheduled(event, env, ctx) { // Cron
|
|
28
|
+
ctx.waitUntil(runTask(env));
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### TypeScript Types
|
|
34
|
+
```typescript
|
|
35
|
+
interface Env {
|
|
36
|
+
API: Fetcher;
|
|
37
|
+
CACHE: KVNamespace;
|
|
38
|
+
STORAGE: R2Bucket;
|
|
39
|
+
ROOMS: DurableObjectNamespace;
|
|
40
|
+
API_KEY: string;
|
|
41
|
+
CONFIG: {apiUrl: string};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default {
|
|
45
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
|
46
|
+
const data = await env.CACHE.get("key");
|
|
47
|
+
return new Response(data);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Service Worker Syntax
|
|
53
|
+
```javascript
|
|
54
|
+
addEventListener('fetch', event => {
|
|
55
|
+
event.respondWith(handleRequest(event.request));
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
async function handleRequest(request) {
|
|
59
|
+
// Bindings as globals
|
|
60
|
+
const value = await KV.get("key");
|
|
61
|
+
return new Response("OK");
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Durable Objects
|
|
66
|
+
```javascript
|
|
67
|
+
export class Room {
|
|
68
|
+
constructor(state, env) {
|
|
69
|
+
this.state = state;
|
|
70
|
+
this.env = env;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async fetch(request) {
|
|
74
|
+
const url = new URL(request.url);
|
|
75
|
+
|
|
76
|
+
if (url.pathname === "/state") {
|
|
77
|
+
const value = await this.state.storage.get("counter");
|
|
78
|
+
return new Response(value || "0");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (url.pathname === "/increment") {
|
|
82
|
+
const value = (await this.state.storage.get("counter")) || 0;
|
|
83
|
+
await this.state.storage.put("counter", value + 1);
|
|
84
|
+
return new Response(String(value + 1));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return new Response("Not found", {status: 404});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### RPC Between Services
|
|
93
|
+
```javascript
|
|
94
|
+
// Caller
|
|
95
|
+
export default {
|
|
96
|
+
async fetch(request, env, ctx) {
|
|
97
|
+
const user = await env.AUTH.validateToken(request.headers.get("Authorization"));
|
|
98
|
+
return new Response(`Hello ${user.name}`);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// Callee
|
|
103
|
+
export default {
|
|
104
|
+
async validateToken(token) {
|
|
105
|
+
return {id: 123, name: "Alice"}; // Return structured data
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Web Platform APIs
|
|
111
|
+
|
|
112
|
+
### Fetch
|
|
113
|
+
- `fetch()`, `Request`, `Response`, `Headers`
|
|
114
|
+
- `AbortController`, `AbortSignal`
|
|
115
|
+
|
|
116
|
+
### Streams
|
|
117
|
+
- `ReadableStream`, `WritableStream`, `TransformStream`
|
|
118
|
+
- Byte streams, BYOB readers
|
|
119
|
+
|
|
120
|
+
### Web Crypto
|
|
121
|
+
- `crypto.subtle` (encrypt/decrypt/sign/verify)
|
|
122
|
+
- `crypto.randomUUID()`, `crypto.getRandomValues()`
|
|
123
|
+
|
|
124
|
+
### Encoding
|
|
125
|
+
- `TextEncoder`, `TextDecoder`
|
|
126
|
+
- `atob()`, `btoa()`
|
|
127
|
+
|
|
128
|
+
### Web Standards
|
|
129
|
+
- `URL`, `URLSearchParams`
|
|
130
|
+
- `Blob`, `File`, `FormData`
|
|
131
|
+
- `WebSocket`, `EventSource` (SSE)
|
|
132
|
+
- `HTMLRewriter`
|
|
133
|
+
|
|
134
|
+
### Performance
|
|
135
|
+
- `performance.now()`, `performance.timeOrigin`
|
|
136
|
+
- `setTimeout()`, `setInterval()`, `queueMicrotask()`
|
|
137
|
+
|
|
138
|
+
### Console
|
|
139
|
+
- `console.log()`, `console.error()`, `console.warn()`
|
|
140
|
+
|
|
141
|
+
### Node.js Compat (`nodejs_compat` flag)
|
|
142
|
+
- `node:*` imports
|
|
143
|
+
- `process.env`, `Buffer`
|
|
144
|
+
- Subset of Node.js APIs
|
|
145
|
+
|
|
146
|
+
## CLI Commands
|
|
147
|
+
|
|
148
|
+
### Serve
|
|
149
|
+
```bash
|
|
150
|
+
workerd serve config.capnp [constantName]
|
|
151
|
+
workerd serve config.capnp --socket-addr http=*:3000
|
|
152
|
+
workerd serve config.capnp --socket-fd http=3 # Systemd
|
|
153
|
+
workerd serve config.capnp --verbose
|
|
154
|
+
workerd serve config.capnp --compat-date=2024-01-15
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Compile
|
|
158
|
+
```bash
|
|
159
|
+
workerd compile config.capnp constantName -o binary
|
|
160
|
+
./binary
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Test
|
|
164
|
+
```bash
|
|
165
|
+
workerd test config.capnp
|
|
166
|
+
workerd test config.capnp --test-only=my-test.js
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Wrangler Integration
|
|
170
|
+
```bash
|
|
171
|
+
export MINIFLARE_WORKERD_PATH="/path/to/workerd"
|
|
172
|
+
wrangler dev
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**wrangler.toml**:
|
|
176
|
+
```toml
|
|
177
|
+
name = "my-worker"
|
|
178
|
+
main = "src/index.js"
|
|
179
|
+
compatibility_date = "2024-01-15"
|
|
180
|
+
compatibility_flags = ["nodejs_compat"]
|
|
181
|
+
|
|
182
|
+
[[kv_namespaces]]
|
|
183
|
+
binding = "CACHE"
|
|
184
|
+
id = "abc123"
|
|
185
|
+
|
|
186
|
+
[[r2_buckets]]
|
|
187
|
+
binding = "STORAGE"
|
|
188
|
+
bucket_name = "my-bucket"
|
|
189
|
+
|
|
190
|
+
[[durable_objects.bindings]]
|
|
191
|
+
name = "ROOMS"
|
|
192
|
+
class_name = "Room"
|
|
193
|
+
script_name = "my-worker"
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## C++ Embedder API
|
|
197
|
+
Not covered here. See [workerd source](https://github.com/cloudflare/workerd) for embedding runtime in C++ applications.
|
|
198
|
+
|
|
199
|
+
See [patterns.md](./patterns.md) for usage examples, [configuration.md](./configuration.md) for config details.
|