memory-journal-mcp 7.7.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -56
- package/dist/chunk-6OHRCNYW.js +3231 -0
- package/dist/chunk-JFMITANR.js +5168 -0
- package/dist/{chunk-QCQPAF4I.js → chunk-MWNLAEHR.js} +301 -4321
- package/dist/{chunk-ARLYSFSI.js → chunk-UHSO65A4.js} +4242 -6092
- package/dist/cli.js +21 -3
- package/dist/index.d.ts +16 -13
- package/dist/index.js +4 -2
- package/dist/resources-IJVKDFGS.js +2 -0
- package/dist/tools-44DGXE3V.js +2 -0
- package/dist/worker-script.js +201 -20
- package/package.json +7 -4
- package/skills/README.md +62 -25
- package/skills/adversarial-performance/SKILL.md +139 -0
- package/skills/adversarial-performance/references/audit-categories.md +462 -0
- package/skills/adversarial-performance/references/copilot-performance-prompts.md +44 -0
- package/skills/adversarial-performance/references/copilot-usage.md +16 -0
- package/skills/adversarial-performance/references/feedback-loop.md +177 -0
- package/skills/adversarial-performance/references/multi-pass-performance-protocol.md +398 -0
- package/skills/adversarial-planner/SKILL.md +23 -54
- package/skills/adversarial-planner/references/copilot-integration.md +25 -40
- package/skills/adversarial-planner/references/copilot-usage.md +16 -0
- package/skills/adversarial-planner/references/multi-pass-protocol.md +4 -0
- package/skills/adversarial-security/SKILL.md +149 -0
- package/skills/adversarial-security/references/adversarial-base-protocol.md +44 -0
- package/skills/adversarial-security/references/audit-categories.md +723 -0
- package/skills/adversarial-security/references/copilot-security-prompts.md +142 -0
- package/skills/adversarial-security/references/copilot-usage.md +16 -0
- package/skills/adversarial-security/references/feedback-loop.md +206 -0
- package/skills/adversarial-security/references/journal-opt-out.md +7 -0
- package/skills/adversarial-security/references/multi-pass-security-protocol.md +403 -0
- package/skills/adversarial-skill-audit/SKILL.md +118 -0
- package/skills/adversarial-skill-audit/references/audit-categories.md +308 -0
- package/skills/adversarial-skill-audit/references/copilot-skill-prompts.md +68 -0
- package/skills/adversarial-skill-audit/references/copilot-usage.md +16 -0
- package/skills/adversarial-skill-audit/references/feedback-loop.md +155 -0
- package/skills/adversarial-skill-audit/references/multi-pass-skill-protocol.md +367 -0
- package/skills/adversarial-skill-audit/scripts/check-skills.ps1 +48 -0
- package/skills/adversarial-skill-audit/scripts/run-copilot.ps1 +52 -0
- package/skills/adversarial-workflow-audit/SKILL.md +82 -0
- package/skills/adversarial-workflow-audit/references/audit-categories.md +28 -0
- package/skills/adversarial-workflow-audit/references/copilot-usage.md +16 -0
- package/skills/adversarial-workflow-audit/scripts/check-workflows.ps1 +24 -0
- package/skills/agents-sdk/SKILL.md +220 -0
- package/skills/agents-sdk/references/callable.md +92 -0
- package/skills/agents-sdk/references/codemode.md +209 -0
- package/skills/agents-sdk/references/email.md +144 -0
- package/skills/agents-sdk/references/mcp/SKILL.md +65 -0
- package/skills/agents-sdk/references/mcp/code-mode-reference.md +245 -0
- package/skills/agents-sdk/references/mcp/oauth-reference.md +359 -0
- package/skills/agents-sdk/references/mcp/references/architecture-reference.md +208 -0
- package/skills/agents-sdk/references/mcp/references/cloudflare-quickstart.md +156 -0
- package/skills/agents-sdk/references/mcp/references/error-handling.md +343 -0
- package/skills/agents-sdk/references/mcp/references/http-security.md +164 -0
- package/skills/agents-sdk/references/mcp/references/implementation-guide.md +507 -0
- package/skills/agents-sdk/references/mcp/references/testing-reference.md +171 -0
- package/skills/agents-sdk/references/mcp.md +157 -0
- package/skills/agents-sdk/references/state-scheduling.md +164 -0
- package/skills/agents-sdk/references/streaming-chat.md +168 -0
- package/skills/agents-sdk/references/workflows.md +136 -0
- package/skills/auth-identity/SKILL.md +48 -0
- package/skills/autonomous-dev/SKILL.md +46 -23
- package/skills/autonomous-dev/references/workflow_orchestration.md +22 -0
- package/skills/aws/SKILL.md +39 -0
- package/skills/azure/SKILL.md +38 -0
- package/skills/bin/sync.js +7 -1
- package/skills/biome/SKILL.md +59 -0
- package/skills/bun/SKILL.md +8 -2
- package/skills/cloudflare/SKILL.md +37 -0
- package/skills/cloudflare/references/agents-sdk/README.md +95 -0
- package/skills/cloudflare/references/agents-sdk/api.md +195 -0
- package/skills/cloudflare/references/agents-sdk/configuration.md +178 -0
- package/skills/cloudflare/references/agents-sdk/gotchas.md +173 -0
- package/skills/cloudflare/references/agents-sdk/patterns.md +215 -0
- package/skills/cloudflare/references/ai-gateway/README.md +176 -0
- package/skills/cloudflare/references/ai-gateway/configuration.md +117 -0
- package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +88 -0
- package/skills/cloudflare/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare/references/ai-gateway/sdk-integration.md +110 -0
- package/skills/cloudflare/references/ai-gateway/troubleshooting.md +90 -0
- package/skills/cloudflare/references/ai-search/README.md +145 -0
- package/skills/cloudflare/references/ai-search/api.md +87 -0
- package/skills/cloudflare/references/ai-search/configuration.md +91 -0
- package/skills/cloudflare/references/ai-search/gotchas.md +92 -0
- package/skills/cloudflare/references/ai-search/patterns.md +87 -0
- package/skills/cloudflare/references/analytics-engine/README.md +96 -0
- package/skills/cloudflare/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare/references/analytics-engine/configuration.md +107 -0
- package/skills/cloudflare/references/analytics-engine/gotchas.md +87 -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 +205 -0
- package/skills/cloudflare/references/api/configuration.md +158 -0
- package/skills/cloudflare/references/api/gotchas.md +231 -0
- package/skills/cloudflare/references/api/patterns.md +208 -0
- package/skills/cloudflare/references/api-shield/README.md +44 -0
- package/skills/cloudflare/references/api-shield/api.md +153 -0
- package/skills/cloudflare/references/api-shield/configuration.md +210 -0
- package/skills/cloudflare/references/api-shield/gotchas.md +132 -0
- package/skills/cloudflare/references/api-shield/patterns.md +185 -0
- package/skills/cloudflare/references/argo-smart-routing/README.md +96 -0
- package/skills/cloudflare/references/argo-smart-routing/api.md +253 -0
- package/skills/cloudflare/references/argo-smart-routing/configuration.md +205 -0
- package/skills/cloudflare/references/argo-smart-routing/gotchas.md +115 -0
- package/skills/cloudflare/references/argo-smart-routing/patterns.md +107 -0
- package/skills/cloudflare/references/bindings/README.md +127 -0
- package/skills/cloudflare/references/bindings/api.md +214 -0
- package/skills/cloudflare/references/bindings/configuration.md +200 -0
- package/skills/cloudflare/references/bindings/gotchas.md +210 -0
- package/skills/cloudflare/references/bindings/patterns.md +205 -0
- package/skills/cloudflare/references/bot-management/README.md +95 -0
- package/skills/cloudflare/references/bot-management/api.md +175 -0
- package/skills/cloudflare/references/bot-management/configuration.md +175 -0
- package/skills/cloudflare/references/bot-management/gotchas.md +116 -0
- package/skills/cloudflare/references/bot-management/patterns.md +181 -0
- package/skills/cloudflare/references/browser-rendering/README.md +84 -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 +91 -0
- package/skills/cloudflare/references/browser-rendering/patterns.md +93 -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 +85 -0
- package/skills/cloudflare/references/c3/gotchas.md +97 -0
- package/skills/cloudflare/references/c3/patterns.md +84 -0
- package/skills/cloudflare/references/cache-reserve/README.md +150 -0
- package/skills/cloudflare/references/cache-reserve/api.md +184 -0
- package/skills/cloudflare/references/cache-reserve/configuration.md +170 -0
- package/skills/cloudflare/references/cache-reserve/gotchas.md +136 -0
- package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare/references/containers/README.md +87 -0
- package/skills/cloudflare/references/containers/api.md +197 -0
- package/skills/cloudflare/references/containers/configuration.md +191 -0
- package/skills/cloudflare/references/containers/gotchas.md +182 -0
- package/skills/cloudflare/references/containers/patterns.md +204 -0
- package/skills/cloudflare/references/cron-triggers/README.md +101 -0
- package/skills/cloudflare/references/cron-triggers/api.md +224 -0
- package/skills/cloudflare/references/cron-triggers/configuration.md +190 -0
- package/skills/cloudflare/references/cron-triggers/gotchas.md +207 -0
- package/skills/cloudflare/references/cron-triggers/patterns.md +274 -0
- package/skills/cloudflare/references/d1/README.md +137 -0
- package/skills/cloudflare/references/d1/api.md +213 -0
- package/skills/cloudflare/references/d1/configuration.md +198 -0
- package/skills/cloudflare/references/d1/gotchas.md +98 -0
- package/skills/cloudflare/references/d1/patterns.md +240 -0
- package/skills/cloudflare/references/ddos/README.md +42 -0
- package/skills/cloudflare/references/ddos/api.md +158 -0
- package/skills/cloudflare/references/ddos/configuration.md +94 -0
- package/skills/cloudflare/references/ddos/gotchas.md +114 -0
- package/skills/cloudflare/references/ddos/patterns.md +220 -0
- package/skills/cloudflare/references/decision-trees.md +95 -0
- package/skills/cloudflare/references/do-storage/README.md +79 -0
- package/skills/cloudflare/references/do-storage/api.md +107 -0
- package/skills/cloudflare/references/do-storage/configuration.md +114 -0
- package/skills/cloudflare/references/do-storage/gotchas.md +153 -0
- package/skills/cloudflare/references/do-storage/patterns.md +210 -0
- package/skills/cloudflare/references/do-storage/testing.md +186 -0
- package/skills/cloudflare/references/durable-objects/README.md +194 -0
- package/skills/cloudflare/references/durable-objects/api.md +205 -0
- package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare/references/durable-objects/gotchas.md +200 -0
- package/skills/cloudflare/references/durable-objects/patterns.md +205 -0
- package/skills/cloudflare/references/email-routing/README.md +89 -0
- package/skills/cloudflare/references/email-routing/api.md +192 -0
- package/skills/cloudflare/references/email-routing/configuration.md +187 -0
- package/skills/cloudflare/references/email-routing/gotchas.md +203 -0
- package/skills/cloudflare/references/email-routing/patterns.md +241 -0
- package/skills/cloudflare/references/email-workers/README.md +153 -0
- package/skills/cloudflare/references/email-workers/api.md +227 -0
- package/skills/cloudflare/references/email-workers/configuration.md +115 -0
- package/skills/cloudflare/references/email-workers/gotchas.md +133 -0
- package/skills/cloudflare/references/email-workers/patterns.md +108 -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 +151 -0
- package/skills/cloudflare/references/graphql-api/gotchas.md +111 -0
- package/skills/cloudflare/references/graphql-api/patterns.md +276 -0
- package/skills/cloudflare/references/hyperdrive/README.md +84 -0
- package/skills/cloudflare/references/hyperdrive/api.md +149 -0
- package/skills/cloudflare/references/hyperdrive/configuration.md +166 -0
- package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare/references/hyperdrive/patterns.md +203 -0
- package/skills/cloudflare/references/images/README.md +65 -0
- package/skills/cloudflare/references/images/api.md +101 -0
- package/skills/cloudflare/references/images/configuration.md +206 -0
- package/skills/cloudflare/references/images/gotchas.md +106 -0
- package/skills/cloudflare/references/images/patterns.md +126 -0
- package/skills/cloudflare/references/kv/README.md +90 -0
- package/skills/cloudflare/references/kv/api.md +163 -0
- package/skills/cloudflare/references/kv/configuration.md +148 -0
- package/skills/cloudflare/references/kv/gotchas.md +133 -0
- package/skills/cloudflare/references/kv/patterns.md +195 -0
- package/skills/cloudflare/references/miniflare/README.md +113 -0
- package/skills/cloudflare/references/miniflare/api.md +204 -0
- package/skills/cloudflare/references/miniflare/configuration.md +174 -0
- package/skills/cloudflare/references/miniflare/gotchas.md +179 -0
- package/skills/cloudflare/references/miniflare/patterns.md +187 -0
- package/skills/cloudflare/references/network-interconnect/README.md +104 -0
- package/skills/cloudflare/references/network-interconnect/api.md +220 -0
- package/skills/cloudflare/references/network-interconnect/configuration.md +123 -0
- package/skills/cloudflare/references/network-interconnect/gotchas.md +175 -0
- package/skills/cloudflare/references/network-interconnect/patterns.md +174 -0
- package/skills/cloudflare/references/observability/README.md +93 -0
- package/skills/cloudflare/references/observability/api.md +168 -0
- package/skills/cloudflare/references/observability/configuration.md +178 -0
- package/skills/cloudflare/references/observability/gotchas.md +125 -0
- package/skills/cloudflare/references/observability/patterns.md +105 -0
- package/skills/cloudflare/references/pages/README.md +92 -0
- package/skills/cloudflare/references/pages/api.md +205 -0
- package/skills/cloudflare/references/pages/configuration.md +216 -0
- package/skills/cloudflare/references/pages/gotchas.md +218 -0
- package/skills/cloudflare/references/pages/patterns.md +215 -0
- package/skills/cloudflare/references/pages-functions/README.md +104 -0
- package/skills/cloudflare/references/pages-functions/api.md +159 -0
- package/skills/cloudflare/references/pages-functions/configuration.md +130 -0
- package/skills/cloudflare/references/pages-functions/gotchas.md +102 -0
- package/skills/cloudflare/references/pages-functions/patterns.md +148 -0
- package/skills/cloudflare/references/pipelines/README.md +109 -0
- package/skills/cloudflare/references/pipelines/api.md +214 -0
- package/skills/cloudflare/references/pipelines/configuration.md +98 -0
- package/skills/cloudflare/references/pipelines/gotchas.md +84 -0
- package/skills/cloudflare/references/pipelines/patterns.md +87 -0
- package/skills/cloudflare/references/product-index.md +112 -0
- package/skills/cloudflare/references/pulumi/README.md +113 -0
- package/skills/cloudflare/references/pulumi/api.md +230 -0
- package/skills/cloudflare/references/pulumi/configuration.md +213 -0
- package/skills/cloudflare/references/pulumi/gotchas.md +205 -0
- package/skills/cloudflare/references/pulumi/patterns.md +260 -0
- package/skills/cloudflare/references/queues/README.md +99 -0
- package/skills/cloudflare/references/queues/api.md +211 -0
- package/skills/cloudflare/references/queues/configuration.md +151 -0
- package/skills/cloudflare/references/queues/gotchas.md +210 -0
- package/skills/cloudflare/references/queues/patterns.md +220 -0
- package/skills/cloudflare/references/r2/README.md +97 -0
- package/skills/cloudflare/references/r2/api.md +235 -0
- package/skills/cloudflare/references/r2/configuration.md +176 -0
- package/skills/cloudflare/references/r2/gotchas.md +190 -0
- package/skills/cloudflare/references/r2/patterns.md +203 -0
- package/skills/cloudflare/references/r2-data-catalog/README.md +157 -0
- package/skills/cloudflare/references/r2-data-catalog/api.md +199 -0
- package/skills/cloudflare/references/r2-data-catalog/configuration.md +205 -0
- package/skills/cloudflare/references/r2-data-catalog/gotchas.md +170 -0
- package/skills/cloudflare/references/r2-data-catalog/patterns.md +191 -0
- package/skills/cloudflare/references/r2-sql/README.md +138 -0
- package/skills/cloudflare/references/r2-sql/SKILL.md.backup +512 -0
- package/skills/cloudflare/references/r2-sql/api.md +159 -0
- package/skills/cloudflare/references/r2-sql/configuration.md +152 -0
- package/skills/cloudflare/references/r2-sql/gotchas.md +228 -0
- package/skills/cloudflare/references/r2-sql/patterns.md +230 -0
- package/skills/cloudflare/references/realtime-sfu/README.md +66 -0
- package/skills/cloudflare/references/realtime-sfu/api.md +164 -0
- package/skills/cloudflare/references/realtime-sfu/configuration.md +141 -0
- package/skills/cloudflare/references/realtime-sfu/gotchas.md +138 -0
- package/skills/cloudflare/references/realtime-sfu/patterns.md +187 -0
- package/skills/cloudflare/references/realtimekit/README.md +118 -0
- package/skills/cloudflare/references/realtimekit/api.md +234 -0
- package/skills/cloudflare/references/realtimekit/configuration.md +226 -0
- package/skills/cloudflare/references/realtimekit/gotchas.md +206 -0
- package/skills/cloudflare/references/realtimekit/patterns.md +240 -0
- package/skills/cloudflare/references/sandbox/README.md +104 -0
- package/skills/cloudflare/references/sandbox/api.md +200 -0
- package/skills/cloudflare/references/sandbox/configuration.md +154 -0
- package/skills/cloudflare/references/sandbox/gotchas.md +201 -0
- package/skills/cloudflare/references/sandbox/patterns.md +195 -0
- package/skills/cloudflare/references/secrets-store/README.md +77 -0
- package/skills/cloudflare/references/secrets-store/api.md +199 -0
- package/skills/cloudflare/references/secrets-store/configuration.md +187 -0
- package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare/references/secrets-store/patterns.md +218 -0
- package/skills/cloudflare/references/smart-placement/README.md +143 -0
- package/skills/cloudflare/references/smart-placement/api.md +192 -0
- package/skills/cloudflare/references/smart-placement/configuration.md +202 -0
- package/skills/cloudflare/references/smart-placement/gotchas.md +180 -0
- package/skills/cloudflare/references/smart-placement/patterns.md +190 -0
- package/skills/cloudflare/references/snippets/README.md +74 -0
- package/skills/cloudflare/references/snippets/api.md +214 -0
- package/skills/cloudflare/references/snippets/configuration.md +239 -0
- package/skills/cloudflare/references/snippets/gotchas.md +104 -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 +184 -0
- package/skills/cloudflare/references/spectrum/configuration.md +203 -0
- package/skills/cloudflare/references/spectrum/gotchas.md +155 -0
- package/skills/cloudflare/references/spectrum/patterns.md +206 -0
- package/skills/cloudflare/references/static-assets/README.md +65 -0
- package/skills/cloudflare/references/static-assets/api.md +201 -0
- package/skills/cloudflare/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare/references/static-assets/gotchas.md +164 -0
- package/skills/cloudflare/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare/references/stream/README.md +123 -0
- package/skills/cloudflare/references/stream/api-live.md +202 -0
- package/skills/cloudflare/references/stream/api.md +206 -0
- package/skills/cloudflare/references/stream/configuration.md +151 -0
- package/skills/cloudflare/references/stream/gotchas.md +139 -0
- package/skills/cloudflare/references/stream/patterns.md +217 -0
- package/skills/cloudflare/references/tail-workers/README.md +92 -0
- package/skills/cloudflare/references/tail-workers/api.md +203 -0
- package/skills/cloudflare/references/tail-workers/configuration.md +178 -0
- package/skills/cloudflare/references/tail-workers/gotchas.md +206 -0
- package/skills/cloudflare/references/tail-workers/patterns.md +190 -0
- package/skills/cloudflare/references/terraform/README.md +100 -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 +137 -0
- package/skills/cloudflare/references/tunnel/api.md +205 -0
- package/skills/cloudflare/references/tunnel/configuration.md +163 -0
- package/skills/cloudflare/references/tunnel/gotchas.md +159 -0
- package/skills/cloudflare/references/tunnel/networking.md +174 -0
- package/skills/cloudflare/references/tunnel/patterns.md +199 -0
- package/skills/cloudflare/references/turn/README.md +86 -0
- package/skills/cloudflare/references/turn/api.md +236 -0
- package/skills/cloudflare/references/turn/configuration.md +181 -0
- package/skills/cloudflare/references/turn/gotchas.md +236 -0
- package/skills/cloudflare/references/turn/patterns.md +228 -0
- package/skills/cloudflare/references/turnstile/README.md +102 -0
- package/skills/cloudflare/references/turnstile/api.md +253 -0
- package/skills/cloudflare/references/turnstile/configuration.md +242 -0
- package/skills/cloudflare/references/turnstile/gotchas.md +253 -0
- package/skills/cloudflare/references/turnstile/patterns.md +195 -0
- package/skills/cloudflare/references/vectorize/README.md +133 -0
- package/skills/cloudflare/references/vectorize/api.md +89 -0
- package/skills/cloudflare/references/vectorize/configuration.md +91 -0
- package/skills/cloudflare/references/vectorize/gotchas.md +83 -0
- package/skills/cloudflare/references/vectorize/patterns.md +92 -0
- package/skills/cloudflare/references/waf/README.md +125 -0
- package/skills/cloudflare/references/waf/api.md +203 -0
- package/skills/cloudflare/references/waf/configuration.md +215 -0
- package/skills/cloudflare/references/waf/gotchas.md +208 -0
- package/skills/cloudflare/references/waf/patterns.md +236 -0
- package/skills/cloudflare/references/web-analytics/README.md +149 -0
- package/skills/cloudflare/references/web-analytics/configuration.md +81 -0
- package/skills/cloudflare/references/web-analytics/gotchas.md +86 -0
- package/skills/cloudflare/references/web-analytics/integration.md +63 -0
- package/skills/cloudflare/references/web-analytics/patterns.md +98 -0
- package/skills/cloudflare/references/workerd/README.md +85 -0
- package/skills/cloudflare/references/workerd/api.md +219 -0
- package/skills/cloudflare/references/workerd/configuration.md +200 -0
- package/skills/cloudflare/references/workerd/gotchas.md +151 -0
- package/skills/cloudflare/references/workerd/patterns.md +205 -0
- package/skills/cloudflare/references/workers/README.md +110 -0
- package/skills/cloudflare/references/workers/api.md +197 -0
- package/skills/cloudflare/references/workers/configuration.md +184 -0
- package/skills/cloudflare/references/workers/frameworks.md +200 -0
- package/skills/cloudflare/references/workers/gotchas.md +145 -0
- package/skills/cloudflare/references/workers/patterns.md +220 -0
- package/skills/cloudflare/references/workers-ai/README.md +206 -0
- package/skills/cloudflare/references/workers-ai/api.md +115 -0
- package/skills/cloudflare/references/workers-ai/configuration.md +98 -0
- package/skills/cloudflare/references/workers-ai/gotchas.md +130 -0
- package/skills/cloudflare/references/workers-ai/patterns.md +122 -0
- package/skills/cloudflare/references/workers-for-platforms/README.md +95 -0
- package/skills/cloudflare/references/workers-for-platforms/api.md +212 -0
- package/skills/cloudflare/references/workers-for-platforms/configuration.md +178 -0
- package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare/references/workers-for-platforms/patterns.md +210 -0
- package/skills/cloudflare/references/workers-playground/README.md +131 -0
- package/skills/cloudflare/references/workers-playground/api.md +101 -0
- package/skills/cloudflare/references/workers-playground/configuration.md +169 -0
- package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare/references/workers-playground/patterns.md +134 -0
- package/skills/cloudflare/references/workers-vpc/README.md +130 -0
- package/skills/cloudflare/references/workers-vpc/api.md +196 -0
- package/skills/cloudflare/references/workers-vpc/configuration.md +151 -0
- package/skills/cloudflare/references/workers-vpc/gotchas.md +171 -0
- package/skills/cloudflare/references/workers-vpc/patterns.md +235 -0
- package/skills/cloudflare/references/workflows/README.md +72 -0
- package/skills/cloudflare/references/workflows/api.md +237 -0
- package/skills/cloudflare/references/workflows/configuration.md +158 -0
- package/skills/cloudflare/references/workflows/gotchas.md +97 -0
- package/skills/cloudflare/references/workflows/patterns.md +245 -0
- package/skills/cloudflare/references/wrangler/README.md +143 -0
- package/skills/cloudflare/references/wrangler/api.md +188 -0
- package/skills/cloudflare/references/wrangler/configuration.md +198 -0
- package/skills/cloudflare/references/wrangler/gotchas.md +212 -0
- package/skills/cloudflare/references/wrangler/patterns.md +211 -0
- package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +131 -0
- package/skills/cloudflare/references/zaraz/README.md +114 -0
- package/skills/cloudflare/references/zaraz/api.md +118 -0
- package/skills/cloudflare/references/zaraz/configuration.md +94 -0
- package/skills/cloudflare/references/zaraz/gotchas.md +88 -0
- package/skills/cloudflare/references/zaraz/patterns.md +77 -0
- package/skills/docker/SKILL.md +7 -101
- package/skills/docker/references/advanced-examples.md +71 -0
- package/skills/docker/references/templates.md +34 -0
- package/skills/docs-marketer/SKILL.md +178 -0
- package/skills/docs-marketer/references/audit-categories.md +328 -0
- package/skills/docs-marketer/references/copilot-docs-prompts.md +88 -0
- package/skills/docs-marketer/references/copilot-usage.md +16 -0
- package/skills/docs-marketer/references/feedback-loop.md +155 -0
- package/skills/docs-marketer/references/multi-pass-docs-protocol.md +410 -0
- package/skills/drizzle-orm/SKILL.md +82 -0
- package/skills/durable-objects/SKILL.md +167 -0
- package/skills/durable-objects/references/advanced_features.md +29 -0
- package/skills/durable-objects/references/rules.md +300 -0
- package/skills/durable-objects/references/testing.md +261 -0
- package/skills/durable-objects/references/workers.md +336 -0
- package/skills/gcp/SKILL.md +37 -0
- package/skills/github-actions/SKILL.md +5 -58
- package/skills/github-actions/references/templates.md +65 -0
- package/skills/github-commander/SKILL.md +13 -21
- package/skills/github-commander/workflows/copilot-audit.md +12 -12
- package/skills/github-copilot-cli/SKILL.md +21 -26
- package/skills/github-repo-setup/SKILL.md +136 -0
- package/skills/github-repo-setup/references/community-standards.md +136 -0
- package/skills/github-repo-setup/references/github-automation.md +490 -0
- package/skills/github-repo-setup/references/inline-templates.md +205 -0
- package/skills/github-repo-setup/references/project-config.md +320 -0
- package/skills/gitlab/SKILL.md +7 -2
- package/skills/gitlab/package-lock.json +389 -389
- package/skills/golang/SKILL.md +8 -1
- package/skills/graphql/SKILL.md +30 -0
- package/skills/hono/SKILL.md +82 -0
- package/skills/journal-optimizer/SKILL.md +206 -0
- package/skills/journal-optimizer/references/optimizer-scripts.md +169 -0
- package/skills/llm-app-engineering/SKILL.md +18 -0
- package/skills/monorepo/SKILL.md +56 -0
- package/skills/multi-agent-orchestration/SKILL.md +14 -0
- package/skills/mysql/SKILL.md +6 -2
- package/skills/next-best-practices/SKILL.md +86 -0
- package/skills/next-best-practices/references/cache-components-examples.md +234 -0
- package/skills/next-best-practices/references/cache-components.md +210 -0
- package/skills/next-best-practices/references/upgrade-decision-tree.md +33 -0
- package/skills/next-best-practices/references/upgrade.md +43 -0
- package/skills/next-cache-components/SKILL.md +441 -0
- package/skills/next-upgrade/SKILL.md +43 -0
- package/skills/next-upgrade/references/decision-tree.md +33 -0
- package/skills/nodejs/SKILL.md +46 -0
- package/skills/opentelemetry/SKILL.md +62 -0
- package/skills/package.json +39 -4
- package/skills/playwright-standard/SKILL.md +6 -11
- package/skills/playwright-standard/references/locators.md +7 -0
- package/skills/postgres/SKILL.md +6 -1
- package/skills/python/SKILL.md +8 -70
- package/skills/python/references/advanced-patterns.md +37 -0
- package/skills/python/references/config-templates.md +48 -0
- package/skills/rag-pipelines/SKILL.md +14 -0
- package/skills/redis/SKILL.md +31 -0
- package/skills/render/SKILL.md +35 -0
- package/skills/rust/SKILL.md +15 -25
- package/skills/rust/references/borrow-checker.md +13 -0
- package/skills/rust/references/ecosystem.md +11 -0
- package/skills/sandbox-sdk/SKILL.md +186 -0
- package/skills/sandbox-sdk/references/api-quick-ref.md +113 -0
- package/skills/sandbox-sdk/references/examples.md +52 -0
- package/skills/shadcn-ui/SKILL.md +22 -57
- package/skills/skill-builder/SKILL.md +23 -424
- package/skills/skill-builder/references/tutorial.md +457 -0
- package/skills/sqlite/SKILL.md +16 -5
- package/skills/table.md +59 -0
- package/skills/tailwind-css/SKILL.md +11 -60
- package/skills/tailwind-css/references/component-patterns.md +52 -0
- package/skills/trpc/SKILL.md +56 -0
- package/skills/typescript/SKILL.md +30 -433
- package/skills/typescript/references/tutorial.md +453 -0
- package/skills/vercel-ai-sdk/SKILL.md +48 -0
- package/skills/vitest-standard/SKILL.md +5 -11
- package/skills/vitest-standard/references/assertions.md +11 -0
- package/skills/web-perf/SKILL.md +207 -0
- package/skills/workers-best-practices/SKILL.md +120 -0
- package/skills/workers-best-practices/references/anti-patterns.md +18 -0
- package/skills/workers-best-practices/references/review.md +174 -0
- package/skills/workers-best-practices/references/rules.md +485 -0
- package/skills/wrangler/SKILL.md +43 -0
- package/skills/wrangler/references/cli-commands.md +861 -0
- package/skills/zod/SKILL.md +48 -0
- package/dist/tools-P4VGG4FH.js +0 -1
- package/skills/react-best-practices/AGENTS.md +0 -2883
- package/skills/react-best-practices/SKILL.md +0 -138
- /package/skills/{react-best-practices → next-best-practices}/README.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/metadata.json +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/_sections.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/_template.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-event-handler-refs.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-init-once.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-use-latest.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-api-routes.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-defer-await.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-dependencies.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-parallel.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-suspense-boundaries.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-barrel-imports.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-conditional.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-defer-third-party.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-dynamic-imports.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-preload.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-event-listeners.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-localstorage-schema.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-passive-event-listeners.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-swr-dedup.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-batch-dom-css.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-function-results.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-property-access.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-storage.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-combine-iterations.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-early-exit.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-hoist-regexp.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-index-maps.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-length-check-first.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-min-max-loop.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-set-map-lookups.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-tosorted-immutable.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-activity.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-animate-svg-wrapper.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-conditional-render.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-content-visibility.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hoist-jsx.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-no-flicker.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-suppress-warning.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-svg-precision.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-usetransition-loading.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-defer-reads.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-dependencies.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state-no-effect.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-functional-setstate.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-lazy-state-init.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo-with-default-value.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-move-effect-to-event.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-simple-expression-in-memo.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-transitions.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-use-ref-transient-values.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-after-nonblocking.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-auth-actions.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-lru.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-react.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-dedup-props.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-parallel-fetching.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-serialization.md +0 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# Bindings API Reference
|
|
2
|
+
|
|
3
|
+
## TypeScript Types
|
|
4
|
+
|
|
5
|
+
Cloudflare generates binding types via `npx wrangler types`. This creates `.wrangler/types/runtime.d.ts` with your Env interface.
|
|
6
|
+
|
|
7
|
+
### Generated Env Interface
|
|
8
|
+
|
|
9
|
+
After running `wrangler types`, TypeScript knows your bindings:
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
interface Env {
|
|
13
|
+
// From wrangler.jsonc bindings
|
|
14
|
+
MY_KV: KVNamespace
|
|
15
|
+
MY_BUCKET: R2Bucket
|
|
16
|
+
DB: D1Database
|
|
17
|
+
MY_SERVICE: Fetcher
|
|
18
|
+
AI: Ai
|
|
19
|
+
|
|
20
|
+
// From vars
|
|
21
|
+
API_URL: string
|
|
22
|
+
|
|
23
|
+
// From secrets (set via wrangler secret put)
|
|
24
|
+
API_KEY: string
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Binding Types
|
|
29
|
+
|
|
30
|
+
| Config | TypeScript Type | Package |
|
|
31
|
+
| ---------------------------------------------------------- | ------------------------ | --------------------------- |
|
|
32
|
+
| `kv_namespaces` | `KVNamespace` | `@cloudflare/workers-types` |
|
|
33
|
+
| `r2_buckets` | `R2Bucket` | `@cloudflare/workers-types` |
|
|
34
|
+
| `d1_databases` | `D1Database` | `@cloudflare/workers-types` |
|
|
35
|
+
| `durable_objects.bindings` | `DurableObjectNamespace` | `@cloudflare/workers-types` |
|
|
36
|
+
| `vectorize` | `VectorizeIndex` | `@cloudflare/workers-types` |
|
|
37
|
+
| `queues.producers` | `Queue` | `@cloudflare/workers-types` |
|
|
38
|
+
| `services` | `Fetcher` | `@cloudflare/workers-types` |
|
|
39
|
+
| `ai` | `Ai` | `@cloudflare/workers-types` |
|
|
40
|
+
| `browser` | `Fetcher` | `@cloudflare/workers-types` |
|
|
41
|
+
| `analytics_engine_datasets` | `AnalyticsEngineDataset` | `@cloudflare/workers-types` |
|
|
42
|
+
| `hyperdrive` | `Hyperdrive` | `@cloudflare/workers-types` |
|
|
43
|
+
| `rate_limiting` | `RateLimit` | `@cloudflare/workers-types` |
|
|
44
|
+
| `workflows` | `Workflow` | `@cloudflare/workers-types` |
|
|
45
|
+
| `mtls_certificates` / `vars` / `text_blobs` / `data_blobs` | `string` | Built-in |
|
|
46
|
+
| `wasm_modules` | `WebAssembly.Module` | Built-in |
|
|
47
|
+
|
|
48
|
+
## Accessing Bindings
|
|
49
|
+
|
|
50
|
+
### Method 1: fetch() Handler (Recommended)
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
export default {
|
|
54
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
|
55
|
+
const value = await env.MY_KV.get('key')
|
|
56
|
+
return new Response(value)
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Why:** Type-safe, aligns with Workers API, supports ctx for waitUntil/passThroughOnException.
|
|
62
|
+
|
|
63
|
+
### Method 2: Hono Framework
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { Hono } from 'hono'
|
|
67
|
+
|
|
68
|
+
const app = new Hono<{ Bindings: Env }>()
|
|
69
|
+
|
|
70
|
+
app.get('/', async (c) => {
|
|
71
|
+
const value = await c.env.MY_KV.get('key')
|
|
72
|
+
return c.json({ value })
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
export default app
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Why:** c.env auto-typed, ergonomic for routing-heavy apps.
|
|
79
|
+
|
|
80
|
+
### Method 3: Module Workers (Legacy)
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
export async function handleRequest(request: Request, env: Env): Promise<Response> {
|
|
84
|
+
const value = await env.MY_KV.get('key')
|
|
85
|
+
return new Response(value)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
addEventListener('fetch', (event) => {
|
|
89
|
+
// env not directly available - requires workarounds
|
|
90
|
+
})
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Avoid:** Use fetch() handler instead (Method 1).
|
|
94
|
+
|
|
95
|
+
## Type Generation Workflow
|
|
96
|
+
|
|
97
|
+
### Initial Setup
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Install wrangler
|
|
101
|
+
npm install -D wrangler
|
|
102
|
+
|
|
103
|
+
# Generate types from wrangler.jsonc
|
|
104
|
+
npx wrangler types
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### After Changing Bindings
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Added/modified binding in wrangler.jsonc
|
|
111
|
+
npx wrangler types
|
|
112
|
+
|
|
113
|
+
# TypeScript now sees updated Env interface
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Note:** `wrangler types` outputs to `.wrangler/types/runtime.d.ts`. TypeScript picks this up automatically if `@cloudflare/workers-types` is in `tsconfig.json` `"types"` array.
|
|
117
|
+
|
|
118
|
+
## Key Binding Methods
|
|
119
|
+
|
|
120
|
+
**KV:**
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
await env.MY_KV.get(key, { type: 'json' }) // text|json|arrayBuffer|stream
|
|
124
|
+
await env.MY_KV.put(key, value, { expirationTtl: 3600 })
|
|
125
|
+
await env.MY_KV.delete(key)
|
|
126
|
+
await env.MY_KV.list({ prefix: 'user:' })
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**R2:**
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
await env.BUCKET.get(key)
|
|
133
|
+
await env.BUCKET.put(key, value)
|
|
134
|
+
await env.BUCKET.delete(key)
|
|
135
|
+
await env.BUCKET.list({ prefix: 'images/' })
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**D1:**
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId).first()
|
|
142
|
+
await env.DB.batch([stmt1, stmt2])
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Service:**
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
await env.MY_SERVICE.fetch(new Request('https://fake/path'))
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Workers AI:**
|
|
152
|
+
|
|
153
|
+
```typescript
|
|
154
|
+
await env.AI.run('@cf/meta/llama-3.1-8b-instruct', { prompt: 'Hello' })
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Queues:**
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
await env.MY_QUEUE.send({ userId: 123, action: 'process' })
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Durable Objects:**
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
const id = env.MY_DO.idFromName('user-123')
|
|
167
|
+
const stub = env.MY_DO.get(id)
|
|
168
|
+
await stub.fetch(new Request('https://fake/increment'))
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Runtime vs Build-Time Types
|
|
172
|
+
|
|
173
|
+
| Type Source | When Generated | Use Case |
|
|
174
|
+
| --------------------------- | ------------------- | ------------------------------------------- |
|
|
175
|
+
| `@cloudflare/workers-types` | npm install | Base Workers APIs (Request, Response, etc.) |
|
|
176
|
+
| `wrangler types` | After config change | Your specific bindings (Env interface) |
|
|
177
|
+
|
|
178
|
+
**Install both:**
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
npm install -D @cloudflare/workers-types
|
|
182
|
+
npx wrangler types
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Type Safety Best Practices
|
|
186
|
+
|
|
187
|
+
1. **Never use `any` for env:**
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
// ❌ BAD
|
|
191
|
+
async fetch(request: Request, env: any) { }
|
|
192
|
+
|
|
193
|
+
// ✅ GOOD
|
|
194
|
+
async fetch(request: Request, env: Env) { }
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
2. **Run wrangler types after config changes:**
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# After editing wrangler.jsonc
|
|
201
|
+
npx wrangler types
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
3. **Check generated types match config:**
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
# View generated Env interface
|
|
208
|
+
cat .wrangler/types/runtime.d.ts
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## See Also
|
|
212
|
+
|
|
213
|
+
- [Workers Types Package](https://www.npmjs.com/package/@cloudflare/workers-types)
|
|
214
|
+
- [Wrangler Types Command](https://developers.cloudflare.com/workers/wrangler/commands/#types)
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# Binding Configuration Reference
|
|
2
|
+
|
|
3
|
+
## Storage Bindings
|
|
4
|
+
|
|
5
|
+
```jsonc
|
|
6
|
+
{
|
|
7
|
+
"kv_namespaces": [{ "binding": "MY_KV", "id": "..." }],
|
|
8
|
+
"r2_buckets": [{ "binding": "MY_BUCKET", "bucket_name": "my-bucket" }],
|
|
9
|
+
"d1_databases": [{ "binding": "DB", "database_name": "my-db", "database_id": "..." }],
|
|
10
|
+
"durable_objects": { "bindings": [{ "name": "MY_DO", "class_name": "MyDO" }] },
|
|
11
|
+
"vectorize": [{ "binding": "VECTORIZE", "index_name": "my-index" }],
|
|
12
|
+
"queues": { "producers": [{ "binding": "MY_QUEUE", "queue": "my-queue" }] },
|
|
13
|
+
}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**Create commands:**
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npx wrangler kv namespace create MY_KV
|
|
20
|
+
npx wrangler r2 bucket create my-bucket
|
|
21
|
+
npx wrangler d1 create my-db
|
|
22
|
+
npx wrangler vectorize create my-index --dimensions=768 --metric=cosine
|
|
23
|
+
npx wrangler queues create my-queue
|
|
24
|
+
|
|
25
|
+
# List existing resources
|
|
26
|
+
npx wrangler kv namespace list
|
|
27
|
+
npx wrangler r2 bucket list
|
|
28
|
+
npx wrangler d1 list
|
|
29
|
+
npx wrangler vectorize list
|
|
30
|
+
npx wrangler queues list
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Compute Bindings
|
|
34
|
+
|
|
35
|
+
```jsonc
|
|
36
|
+
{
|
|
37
|
+
"services": [
|
|
38
|
+
{
|
|
39
|
+
"binding": "MY_SERVICE",
|
|
40
|
+
"service": "other-worker",
|
|
41
|
+
"environment": "production", // Optional: target specific env
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
"ai": { "binding": "AI" },
|
|
45
|
+
"browser": { "binding": "BROWSER" },
|
|
46
|
+
"workflows": [{ "binding": "MY_WORKFLOW", "name": "my-workflow" }],
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Create workflows:**
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npx wrangler workflows create my-workflow
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Platform Bindings
|
|
57
|
+
|
|
58
|
+
```jsonc
|
|
59
|
+
{
|
|
60
|
+
"analytics_engine_datasets": [{ "binding": "ANALYTICS" }],
|
|
61
|
+
"mtls_certificates": [{ "binding": "MY_CERT", "certificate_id": "..." }],
|
|
62
|
+
"hyperdrive": [{ "binding": "HYPERDRIVE", "id": "..." }],
|
|
63
|
+
"unsafe": {
|
|
64
|
+
"bindings": [{ "name": "RATE_LIMITER", "type": "ratelimit", "namespace_id": "..." }],
|
|
65
|
+
},
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Configuration Bindings
|
|
70
|
+
|
|
71
|
+
```jsonc
|
|
72
|
+
{
|
|
73
|
+
"vars": {
|
|
74
|
+
"API_URL": "https://api.example.com",
|
|
75
|
+
"MAX_RETRIES": "3",
|
|
76
|
+
},
|
|
77
|
+
"text_blobs": { "MY_TEXT": "./data/template.html" },
|
|
78
|
+
"data_blobs": { "MY_DATA": "./data/config.bin" },
|
|
79
|
+
"wasm_modules": { "MY_WASM": "./build/module.wasm" },
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Secrets (never in config):**
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
npx wrangler secret put API_KEY
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Environment-Specific Configuration
|
|
90
|
+
|
|
91
|
+
```jsonc
|
|
92
|
+
{
|
|
93
|
+
"name": "my-worker",
|
|
94
|
+
"vars": { "ENV": "production" },
|
|
95
|
+
"kv_namespaces": [{ "binding": "CACHE", "id": "prod-kv-id" }],
|
|
96
|
+
|
|
97
|
+
"env": {
|
|
98
|
+
"staging": {
|
|
99
|
+
"vars": { "ENV": "staging" },
|
|
100
|
+
"kv_namespaces": [{ "binding": "CACHE", "id": "staging-kv-id" }],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Deploy:**
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npx wrangler deploy # Production
|
|
110
|
+
npx wrangler deploy --env staging
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Local Development
|
|
114
|
+
|
|
115
|
+
```jsonc
|
|
116
|
+
{
|
|
117
|
+
"kv_namespaces": [
|
|
118
|
+
{
|
|
119
|
+
"binding": "MY_KV",
|
|
120
|
+
"id": "prod-id",
|
|
121
|
+
"preview_id": "dev-id", // Used in wrangler dev
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Or use remote:**
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
npx wrangler dev --remote # Uses production bindings
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Complete Example
|
|
134
|
+
|
|
135
|
+
```jsonc
|
|
136
|
+
{
|
|
137
|
+
"$schema": "./node_modules/wrangler/config-schema.json",
|
|
138
|
+
"name": "my-app",
|
|
139
|
+
"main": "src/index.ts",
|
|
140
|
+
"compatibility_date": "2025-01-01",
|
|
141
|
+
|
|
142
|
+
"vars": { "API_URL": "https://api.example.com" },
|
|
143
|
+
"kv_namespaces": [{ "binding": "CACHE", "id": "abc123" }],
|
|
144
|
+
"r2_buckets": [{ "binding": "ASSETS", "bucket_name": "my-assets" }],
|
|
145
|
+
"d1_databases": [{ "binding": "DB", "database_name": "my-db", "database_id": "xyz789" }],
|
|
146
|
+
"services": [{ "binding": "AUTH", "service": "auth-worker" }],
|
|
147
|
+
"ai": { "binding": "AI" },
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Binding-Specific Configuration
|
|
152
|
+
|
|
153
|
+
### Durable Objects with Class Export
|
|
154
|
+
|
|
155
|
+
```jsonc
|
|
156
|
+
{
|
|
157
|
+
"durable_objects": {
|
|
158
|
+
"bindings": [{ "name": "COUNTER", "class_name": "Counter", "script_name": "my-worker" }],
|
|
159
|
+
},
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
// In same Worker or script_name Worker
|
|
165
|
+
export class Counter {
|
|
166
|
+
constructor(
|
|
167
|
+
private state: DurableObjectState,
|
|
168
|
+
private env: Env
|
|
169
|
+
) {}
|
|
170
|
+
async fetch(request: Request) {
|
|
171
|
+
/* ... */
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Queue Consumers
|
|
177
|
+
|
|
178
|
+
```jsonc
|
|
179
|
+
{
|
|
180
|
+
"queues": {
|
|
181
|
+
"producers": [{ "binding": "MY_QUEUE", "queue": "my-queue" }],
|
|
182
|
+
"consumers": [{ "queue": "my-queue", "max_batch_size": 10 }],
|
|
183
|
+
},
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Queue consumer handler: `export default { async queue(batch, env) { /* process batch.messages */ } }`
|
|
188
|
+
|
|
189
|
+
## Key Points
|
|
190
|
+
|
|
191
|
+
- **64 binding limit** (all types combined)
|
|
192
|
+
- **Secrets**: Always use `wrangler secret put`, never commit
|
|
193
|
+
- **Types**: Run `npx wrangler types` after config changes
|
|
194
|
+
- **Environments**: Use `env` field for staging/production variants
|
|
195
|
+
- **Development**: Use `preview_id` or `--remote` flag
|
|
196
|
+
- **IDs vs Names**: Some bindings use `id` (KV, D1), others use `name` (R2, Queues)
|
|
197
|
+
|
|
198
|
+
## See Also
|
|
199
|
+
|
|
200
|
+
- [Wrangler Configuration](https://developers.cloudflare.com/workers/wrangler/configuration/)
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Binding Gotchas and Troubleshooting
|
|
2
|
+
|
|
3
|
+
## Critical: Global Scope Mutation
|
|
4
|
+
|
|
5
|
+
### ❌ THE #1 GOTCHA: Caching env in Global Scope
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// ❌ DANGEROUS - env cached at deploy time
|
|
9
|
+
const apiKey = env.API_KEY // ERROR: env not available in global scope
|
|
10
|
+
|
|
11
|
+
export default {
|
|
12
|
+
async fetch(request: Request, env: Env) {
|
|
13
|
+
// Uses undefined or stale value!
|
|
14
|
+
},
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Why it breaks:**
|
|
19
|
+
|
|
20
|
+
- `env` not available in global scope
|
|
21
|
+
- If using workarounds, secrets may not update without redeployment
|
|
22
|
+
- Leads to "Cannot read property 'X' of undefined" errors
|
|
23
|
+
|
|
24
|
+
**✅ Always access env per-request:**
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
export default {
|
|
28
|
+
async fetch(request: Request, env: Env) {
|
|
29
|
+
const apiKey = env.API_KEY // Fresh every request
|
|
30
|
+
},
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Common Errors
|
|
35
|
+
|
|
36
|
+
### "env.MY_KV is undefined"
|
|
37
|
+
|
|
38
|
+
**Cause:** Name mismatch or not configured
|
|
39
|
+
**Solution:** Check wrangler.jsonc (case-sensitive), run `npx wrangler types`, verify `npx wrangler kv namespace list`
|
|
40
|
+
|
|
41
|
+
### "Property 'MY_KV' does not exist on type 'Env'"
|
|
42
|
+
|
|
43
|
+
**Cause:** Types not generated
|
|
44
|
+
**Solution:** `npx wrangler types`
|
|
45
|
+
|
|
46
|
+
### "preview_id is required for --remote"
|
|
47
|
+
|
|
48
|
+
**Cause:** Missing preview binding
|
|
49
|
+
**Solution:** Add `"preview_id": "dev-id"` or use `npx wrangler dev` (local mode)
|
|
50
|
+
|
|
51
|
+
### "Secret updated but Worker still uses old value"
|
|
52
|
+
|
|
53
|
+
**Cause:** Cached in global scope or not redeployed
|
|
54
|
+
**Solution:** Avoid global caching, redeploy after secret change
|
|
55
|
+
|
|
56
|
+
### "KV get() returns null for existing key"
|
|
57
|
+
|
|
58
|
+
**Cause:** Eventual consistency (60s), wrong namespace, wrong environment
|
|
59
|
+
**Solution:**
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Check key exists
|
|
63
|
+
npx wrangler kv key get --binding=MY_KV "your-key"
|
|
64
|
+
|
|
65
|
+
# Verify namespace ID
|
|
66
|
+
npx wrangler kv namespace list
|
|
67
|
+
|
|
68
|
+
# Check environment
|
|
69
|
+
npx wrangler deployments list
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### "D1 database not found"
|
|
73
|
+
|
|
74
|
+
**Solution:** `npx wrangler d1 list`, verify ID in wrangler.jsonc
|
|
75
|
+
|
|
76
|
+
### "Service binding returns 'No such service'"
|
|
77
|
+
|
|
78
|
+
**Cause:** Target Worker not deployed, name mismatch, environment mismatch
|
|
79
|
+
**Solution:**
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# List deployed Workers
|
|
83
|
+
npx wrangler deployments list --name=target-worker
|
|
84
|
+
|
|
85
|
+
# Check service binding config
|
|
86
|
+
cat wrangler.jsonc | grep -A2 services
|
|
87
|
+
|
|
88
|
+
# Deploy target first
|
|
89
|
+
cd ../target-worker && npx wrangler deploy
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### "Rate limit exceeded" on KV writes
|
|
93
|
+
|
|
94
|
+
**Cause:** >1 write/second per key
|
|
95
|
+
**Solution:** Use different keys, Durable Objects, or Queues
|
|
96
|
+
|
|
97
|
+
## Type Safety Gotchas
|
|
98
|
+
|
|
99
|
+
### Missing @cloudflare/workers-types
|
|
100
|
+
|
|
101
|
+
**Error:** `Cannot find name 'Request'`
|
|
102
|
+
**Solution:** `npm install -D @cloudflare/workers-types`, add to tsconfig.json `"types"`
|
|
103
|
+
|
|
104
|
+
### Binding Type Mismatches
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// ❌ Wrong - KV returns string | null
|
|
108
|
+
const value: string = await env.MY_KV.get('key')
|
|
109
|
+
|
|
110
|
+
// ✅ Handle null
|
|
111
|
+
const value = await env.MY_KV.get('key')
|
|
112
|
+
if (!value) return new Response('Not found', { status: 404 })
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Environment Gotchas
|
|
116
|
+
|
|
117
|
+
### Wrong Environment Deployed
|
|
118
|
+
|
|
119
|
+
**Solution:** Check `npx wrangler deployments list`, use `--env` flag
|
|
120
|
+
|
|
121
|
+
### Secrets Not Per-Environment
|
|
122
|
+
|
|
123
|
+
**Solution:** Set per environment: `npx wrangler secret put API_KEY --env staging`
|
|
124
|
+
|
|
125
|
+
## Development Gotchas
|
|
126
|
+
|
|
127
|
+
**wrangler dev vs deploy:**
|
|
128
|
+
|
|
129
|
+
- dev: Uses `preview_id` or local bindings, secrets not available
|
|
130
|
+
- deploy: Uses production `id`, secrets available
|
|
131
|
+
|
|
132
|
+
**Access secrets in dev:** `npx wrangler dev --remote`
|
|
133
|
+
**Persist local data:** `npx wrangler dev --persist`
|
|
134
|
+
|
|
135
|
+
## Performance Gotchas
|
|
136
|
+
|
|
137
|
+
### Sequential Binding Calls
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
// ❌ Slow
|
|
141
|
+
const user = await env.DB.prepare('...').first()
|
|
142
|
+
const config = await env.MY_KV.get('config')
|
|
143
|
+
|
|
144
|
+
// ✅ Parallel
|
|
145
|
+
const [user, config] = await Promise.all([env.DB.prepare('...').first(), env.MY_KV.get('config')])
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Security Gotchas
|
|
149
|
+
|
|
150
|
+
**❌ Secrets in logs:** `console.log('Key:', env.API_KEY)` - visible in dashboard
|
|
151
|
+
**✅** `console.log('Key:', env.API_KEY ? '***' : 'missing')`
|
|
152
|
+
|
|
153
|
+
**❌ Exposing env:** `return Response.json(env)` - exposes all bindings
|
|
154
|
+
**✅** Never return env object in responses
|
|
155
|
+
|
|
156
|
+
## Limits Reference
|
|
157
|
+
|
|
158
|
+
| Resource | Limit | Impact | Plan |
|
|
159
|
+
| ------------------------- | ---------------------- | ------------------------------ | ---- |
|
|
160
|
+
| **Bindings per Worker** | 64 total | All binding types combined | All |
|
|
161
|
+
| **Environment variables** | 64 max, 5KB each | Per Worker | All |
|
|
162
|
+
| **Secret size** | 1KB | Per secret | All |
|
|
163
|
+
| **KV key size** | 512 bytes | UTF-8 encoded | All |
|
|
164
|
+
| **KV value size** | 25 MB | Per value | All |
|
|
165
|
+
| **KV writes per key** | 1/second | Per key; exceeding = 429 error | All |
|
|
166
|
+
| **KV list() results** | 1000 keys | Per call; use cursor for more | All |
|
|
167
|
+
| **KV operations** | 1000 reads/day | Free tier only | Free |
|
|
168
|
+
| **R2 object size** | 5 TB | Per object | All |
|
|
169
|
+
| **R2 operations** | 1M Class A/month free | Writes | All |
|
|
170
|
+
| **D1 database size** | 10 GB | Per database | All |
|
|
171
|
+
| **D1 rows per query** | 100,000 | Result set limit | All |
|
|
172
|
+
| **D1 databases** | 10 | Free tier | Free |
|
|
173
|
+
| **Queue batch size** | 100 messages | Per consumer batch | All |
|
|
174
|
+
| **Queue message size** | 128 KB | Per message | All |
|
|
175
|
+
| **Service binding calls** | Unlimited | Counts toward CPU time | All |
|
|
176
|
+
| **Durable Objects** | 1M requests/month free | First 1M | Free |
|
|
177
|
+
|
|
178
|
+
## Debugging Tips
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# Check configuration
|
|
182
|
+
npx wrangler deploy --dry-run # Validate config without deploying
|
|
183
|
+
npx wrangler kv namespace list # List KV namespaces
|
|
184
|
+
npx wrangler secret list # List secrets (not values)
|
|
185
|
+
npx wrangler deployments list # Recent deployments
|
|
186
|
+
|
|
187
|
+
# Inspect bindings
|
|
188
|
+
npx wrangler kv key list --binding=MY_KV
|
|
189
|
+
npx wrangler kv key get --binding=MY_KV "key-name"
|
|
190
|
+
npx wrangler r2 object get my-bucket/file.txt
|
|
191
|
+
npx wrangler d1 execute my-db --command="SELECT * FROM sqlite_master"
|
|
192
|
+
|
|
193
|
+
# Test locally
|
|
194
|
+
npx wrangler dev # Local mode
|
|
195
|
+
npx wrangler dev --remote # Production bindings
|
|
196
|
+
npx wrangler dev --persist # Persist data across restarts
|
|
197
|
+
|
|
198
|
+
# Verify types
|
|
199
|
+
npx wrangler types
|
|
200
|
+
cat .wrangler/types/runtime.d.ts | grep "interface Env"
|
|
201
|
+
|
|
202
|
+
# Debug specific binding issues
|
|
203
|
+
npx wrangler tail # Stream logs in real-time
|
|
204
|
+
npx wrangler tail --format=pretty # Formatted logs
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## See Also
|
|
208
|
+
|
|
209
|
+
- [Workers Limits](https://developers.cloudflare.com/workers/platform/limits/)
|
|
210
|
+
- [Wrangler Commands](https://developers.cloudflare.com/workers/wrangler/commands/)
|