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,109 @@
|
|
|
1
|
+
# Cloudflare Pipelines
|
|
2
|
+
|
|
3
|
+
ETL streaming platform for ingesting, transforming, and loading data into R2 with SQL transformations.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Pipelines provides:
|
|
8
|
+
|
|
9
|
+
- **Streams**: Durable event buffers (HTTP/Workers ingestion)
|
|
10
|
+
- **Pipelines**: SQL-based transformations
|
|
11
|
+
- **Sinks**: R2 destinations (Iceberg tables or Parquet/JSON files)
|
|
12
|
+
|
|
13
|
+
**Status**: Open beta (Workers Paid plan)
|
|
14
|
+
**Pricing**: No charge beyond standard R2 storage/operations
|
|
15
|
+
|
|
16
|
+
## Architecture
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
Data Sources → Streams → Pipelines (SQL) → Sinks → R2
|
|
20
|
+
↑ ↓ ↓
|
|
21
|
+
HTTP/Workers Transform Iceberg/Parquet
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
| Component | Purpose | Key Feature |
|
|
25
|
+
| --------- | ------------------ | -------------------------------------- |
|
|
26
|
+
| Streams | Event ingestion | Structured (validated) or unstructured |
|
|
27
|
+
| Pipelines | Transform with SQL | Immutable after creation |
|
|
28
|
+
| Sinks | Write to R2 | Exactly-once delivery |
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Interactive setup (recommended)
|
|
34
|
+
npx wrangler pipelines setup
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Minimal Worker example:**
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
interface Env {
|
|
41
|
+
STREAM: Pipeline
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default {
|
|
45
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
|
46
|
+
const event = { user_id: '123', event_type: 'purchase', amount: 29.99 }
|
|
47
|
+
|
|
48
|
+
// Fire-and-forget pattern
|
|
49
|
+
ctx.waitUntil(env.STREAM.send([event]))
|
|
50
|
+
|
|
51
|
+
return new Response('OK')
|
|
52
|
+
},
|
|
53
|
+
} satisfies ExportedHandler<Env>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Which Sink Type?
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Need SQL queries on data?
|
|
60
|
+
→ R2 Data Catalog (Iceberg)
|
|
61
|
+
✅ ACID transactions, time-travel, schema evolution
|
|
62
|
+
❌ More setup complexity (namespace, table, catalog token)
|
|
63
|
+
|
|
64
|
+
Just file storage/archival?
|
|
65
|
+
→ R2 Storage (Parquet)
|
|
66
|
+
✅ Simple, direct file access
|
|
67
|
+
❌ No built-in SQL queries
|
|
68
|
+
|
|
69
|
+
Using external tools (Spark/Athena)?
|
|
70
|
+
→ R2 Storage (Parquet with partitioning)
|
|
71
|
+
✅ Standard format, partition pruning for performance
|
|
72
|
+
❌ Must manage schema compatibility yourself
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Common Use Cases
|
|
76
|
+
|
|
77
|
+
- **Analytics pipelines**: Clickstream, telemetry, server logs
|
|
78
|
+
- **Data warehousing**: ETL into queryable Iceberg tables
|
|
79
|
+
- **Event processing**: Mobile/IoT with enrichment
|
|
80
|
+
- **Ecommerce analytics**: User events, purchases, views
|
|
81
|
+
|
|
82
|
+
## Reading Order
|
|
83
|
+
|
|
84
|
+
**New to Pipelines?** Start here:
|
|
85
|
+
|
|
86
|
+
1. [configuration.md](./configuration.md) - Setup streams, sinks, pipelines
|
|
87
|
+
2. [api.md](./api.md) - Send events, TypeScript types, SQL functions
|
|
88
|
+
3. [patterns.md](./patterns.md) - Best practices, integrations, complete example
|
|
89
|
+
4. [gotchas.md](./gotchas.md) - Critical warnings, troubleshooting
|
|
90
|
+
|
|
91
|
+
**Task-based routing:**
|
|
92
|
+
|
|
93
|
+
- Setup pipeline → [configuration.md](./configuration.md)
|
|
94
|
+
- Send/query data → [api.md](./api.md)
|
|
95
|
+
- Implement pattern → [patterns.md](./patterns.md)
|
|
96
|
+
- Debug issue → [gotchas.md](./gotchas.md)
|
|
97
|
+
|
|
98
|
+
## In This Reference
|
|
99
|
+
|
|
100
|
+
- [configuration.md](./configuration.md) - wrangler.jsonc bindings, schema definition, sink options, CLI commands
|
|
101
|
+
- [api.md](./api.md) - Pipeline binding interface, send() method, HTTP ingest, SQL function reference
|
|
102
|
+
- [patterns.md](./patterns.md) - Fire-and-forget, schema validation with Zod, integrations, performance tuning
|
|
103
|
+
- [gotchas.md](./gotchas.md) - Silent validation failures, immutable pipelines, latency expectations, limits
|
|
104
|
+
|
|
105
|
+
## See Also
|
|
106
|
+
|
|
107
|
+
- [r2](../r2/) - R2 storage backend for sinks
|
|
108
|
+
- [queues](../queues/) - Compare with Queues for async processing
|
|
109
|
+
- [workers](../workers/) - Worker runtime for event ingestion
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# Pipelines API Reference
|
|
2
|
+
|
|
3
|
+
## Pipeline Binding Interface
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
// From @cloudflare/workers-types
|
|
7
|
+
interface Pipeline {
|
|
8
|
+
send(data: object | object[]): Promise<void>
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface Env {
|
|
12
|
+
STREAM: Pipeline
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default {
|
|
16
|
+
async fetch(request: Request, env: Env): Promise<Response> {
|
|
17
|
+
// send() returns Promise<void> - no result data
|
|
18
|
+
await env.STREAM.send([event])
|
|
19
|
+
return new Response('OK')
|
|
20
|
+
},
|
|
21
|
+
} satisfies ExportedHandler<Env>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Key points:**
|
|
25
|
+
|
|
26
|
+
- `send()` accepts single object or array
|
|
27
|
+
- Always returns `Promise<void>` (no confirmation data)
|
|
28
|
+
- Throws on network/validation errors (wrap in try/catch)
|
|
29
|
+
- Use `ctx.waitUntil()` for fire-and-forget pattern
|
|
30
|
+
|
|
31
|
+
## Writing Events
|
|
32
|
+
|
|
33
|
+
### Single Event
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
await env.STREAM.send([
|
|
37
|
+
{
|
|
38
|
+
user_id: '12345',
|
|
39
|
+
event_type: 'purchase',
|
|
40
|
+
product_id: 'widget-001',
|
|
41
|
+
amount: 29.99,
|
|
42
|
+
},
|
|
43
|
+
])
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Batch Events
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
const events = [
|
|
50
|
+
{ user_id: 'user1', event_type: 'view' },
|
|
51
|
+
{ user_id: 'user2', event_type: 'purchase', amount: 50 },
|
|
52
|
+
]
|
|
53
|
+
await env.STREAM.send(events)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Limits:**
|
|
57
|
+
|
|
58
|
+
- Max 1 MB per request
|
|
59
|
+
- 5 MB/s per stream
|
|
60
|
+
|
|
61
|
+
### Fire-and-Forget Pattern
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
export default {
|
|
65
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
|
66
|
+
const event = {
|
|
67
|
+
/* ... */
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Don't block response on send
|
|
71
|
+
ctx.waitUntil(env.STREAM.send([event]))
|
|
72
|
+
|
|
73
|
+
return new Response('OK')
|
|
74
|
+
},
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Error Handling
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
try {
|
|
82
|
+
await env.STREAM.send([event])
|
|
83
|
+
} catch (error) {
|
|
84
|
+
console.error('Pipeline send failed:', error)
|
|
85
|
+
// Log to another system, retry, or return error response
|
|
86
|
+
return new Response('Failed to track event', { status: 500 })
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## HTTP Ingest API
|
|
91
|
+
|
|
92
|
+
### Endpoint Format
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
https://{stream-id}.ingest.cloudflare.com
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Get `{stream-id}` from: `npx wrangler pipelines streams list`
|
|
99
|
+
|
|
100
|
+
### Request Format
|
|
101
|
+
|
|
102
|
+
**CRITICAL:** Must send array, not single object
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# ✅ Correct
|
|
106
|
+
curl -X POST https://{stream-id}.ingest.cloudflare.com \
|
|
107
|
+
-H "Content-Type: application/json" \
|
|
108
|
+
-d '[{"user_id": "123", "event_type": "purchase"}]'
|
|
109
|
+
|
|
110
|
+
# ❌ Wrong - will fail
|
|
111
|
+
curl -X POST https://{stream-id}.ingest.cloudflare.com \
|
|
112
|
+
-H "Content-Type: application/json" \
|
|
113
|
+
-d '{"user_id": "123", "event_type": "purchase"}'
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Authentication
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
curl -X POST https://{stream-id}.ingest.cloudflare.com \
|
|
120
|
+
-H "Content-Type: application/json" \
|
|
121
|
+
-H "Authorization: Bearer YOUR_API_TOKEN" \
|
|
122
|
+
-d '[{"event": "data"}]'
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Required permission:** Workers Pipeline Send
|
|
126
|
+
|
|
127
|
+
Create token: Dashboard → Workers → API tokens → Create with Pipeline Send permission
|
|
128
|
+
|
|
129
|
+
### Response Codes
|
|
130
|
+
|
|
131
|
+
| Code | Meaning | Action |
|
|
132
|
+
| ---- | ----------------- | ---------------------------------- |
|
|
133
|
+
| 200 | Accepted | Success |
|
|
134
|
+
| 400 | Invalid format | Check JSON array, schema match |
|
|
135
|
+
| 401 | Auth failed | Verify token valid |
|
|
136
|
+
| 413 | Payload too large | Split into smaller batches (<1 MB) |
|
|
137
|
+
| 429 | Rate limited | Back off, retry with delay |
|
|
138
|
+
| 5xx | Server error | Retry with exponential backoff |
|
|
139
|
+
|
|
140
|
+
## SQL Functions Quick Reference
|
|
141
|
+
|
|
142
|
+
Available in `INSERT INTO sink SELECT ... FROM stream` transformations:
|
|
143
|
+
|
|
144
|
+
| Function | Example | Use Case |
|
|
145
|
+
| ---------------------------- | --------------------------------------------------- | ------------------------- |
|
|
146
|
+
| `UPPER(s)` | `UPPER(event_type)` | Normalize strings |
|
|
147
|
+
| `LOWER(s)` | `LOWER(email)` | Case-insensitive matching |
|
|
148
|
+
| `CONCAT(...)` | `CONCAT(user_id, '_', product_id)` | Generate composite keys |
|
|
149
|
+
| `CASE WHEN ... THEN ... END` | `CASE WHEN amount > 100 THEN 'high' ELSE 'low' END` | Conditional enrichment |
|
|
150
|
+
| `CAST(x AS type)` | `CAST(timestamp AS string)` | Type conversion |
|
|
151
|
+
| `COALESCE(x, y)` | `COALESCE(amount, 0.0)` | Default values |
|
|
152
|
+
| Math operators | `amount * 1.1`, `price / quantity` | Calculations |
|
|
153
|
+
| Comparison | `amount > 100`, `status IN ('active', 'pending')` | Filtering |
|
|
154
|
+
|
|
155
|
+
**String types for CAST:** `string`, `int32`, `int64`, `float32`, `float64`, `bool`, `timestamp`
|
|
156
|
+
|
|
157
|
+
Full reference: [Pipelines SQL Reference](https://developers.cloudflare.com/pipelines/sql-reference/)
|
|
158
|
+
|
|
159
|
+
## SQL Transform Examples
|
|
160
|
+
|
|
161
|
+
### Filter Events
|
|
162
|
+
|
|
163
|
+
```sql
|
|
164
|
+
INSERT INTO my_sink
|
|
165
|
+
SELECT * FROM my_stream
|
|
166
|
+
WHERE event_type = 'purchase' AND amount > 100
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Select Specific Fields
|
|
170
|
+
|
|
171
|
+
```sql
|
|
172
|
+
INSERT INTO my_sink
|
|
173
|
+
SELECT user_id, event_type, timestamp, amount
|
|
174
|
+
FROM my_stream
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Transform and Enrich
|
|
178
|
+
|
|
179
|
+
```sql
|
|
180
|
+
INSERT INTO my_sink
|
|
181
|
+
SELECT
|
|
182
|
+
user_id,
|
|
183
|
+
UPPER(event_type) as event_type,
|
|
184
|
+
timestamp,
|
|
185
|
+
amount * 1.1 as amount_with_tax,
|
|
186
|
+
CONCAT(user_id, '_', product_id) as unique_key,
|
|
187
|
+
CASE
|
|
188
|
+
WHEN amount > 1000 THEN 'high_value'
|
|
189
|
+
WHEN amount > 100 THEN 'medium_value'
|
|
190
|
+
ELSE 'low_value'
|
|
191
|
+
END as customer_tier
|
|
192
|
+
FROM my_stream
|
|
193
|
+
WHERE event_type IN ('purchase', 'refund')
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Querying Results (R2 Data Catalog)
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
export WRANGLER_R2_SQL_AUTH_TOKEN=YOUR_CATALOG_TOKEN
|
|
200
|
+
|
|
201
|
+
npx wrangler r2 sql query "warehouse_name" "
|
|
202
|
+
SELECT
|
|
203
|
+
event_type,
|
|
204
|
+
COUNT(*) as event_count,
|
|
205
|
+
SUM(amount) as total_revenue
|
|
206
|
+
FROM default.my_table
|
|
207
|
+
WHERE event_type = 'purchase'
|
|
208
|
+
AND timestamp >= '2025-01-01'
|
|
209
|
+
GROUP BY event_type
|
|
210
|
+
ORDER BY total_revenue DESC
|
|
211
|
+
LIMIT 100"
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Note:** Iceberg tables support standard SQL queries with GROUP BY, JOINs, WHERE, ORDER BY, etc.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Pipelines Configuration
|
|
2
|
+
|
|
3
|
+
## Worker Binding
|
|
4
|
+
|
|
5
|
+
```jsonc
|
|
6
|
+
// wrangler.jsonc
|
|
7
|
+
{
|
|
8
|
+
"pipelines": [{ "pipeline": "<STREAM_ID>", "binding": "STREAM" }],
|
|
9
|
+
}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Get stream ID: `npx wrangler pipelines streams list`
|
|
13
|
+
|
|
14
|
+
## Schema (Structured Streams)
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"fields": [
|
|
19
|
+
{ "name": "user_id", "type": "string", "required": true },
|
|
20
|
+
{ "name": "event_type", "type": "string", "required": true },
|
|
21
|
+
{ "name": "amount", "type": "float64", "required": false },
|
|
22
|
+
{ "name": "timestamp", "type": "timestamp", "required": true }
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Types:** `string`, `int32`, `int64`, `float32`, `float64`, `bool`, `timestamp`, `json`, `binary`, `list`, `struct`
|
|
28
|
+
|
|
29
|
+
## Stream Setup
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# With schema
|
|
33
|
+
npx wrangler pipelines streams create my-stream --schema-file schema.json
|
|
34
|
+
|
|
35
|
+
# Unstructured (no validation)
|
|
36
|
+
npx wrangler pipelines streams create my-stream
|
|
37
|
+
|
|
38
|
+
# List/get/delete
|
|
39
|
+
npx wrangler pipelines streams list
|
|
40
|
+
npx wrangler pipelines streams get <ID>
|
|
41
|
+
npx wrangler pipelines streams delete <ID>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Sink Configuration
|
|
45
|
+
|
|
46
|
+
**R2 Data Catalog (Iceberg):**
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npx wrangler pipelines sinks create my-sink \
|
|
50
|
+
--type r2-data-catalog \
|
|
51
|
+
--bucket my-bucket --namespace default --table events \
|
|
52
|
+
--catalog-token $TOKEN \
|
|
53
|
+
--compression zstd --roll-interval 60
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**R2 Raw (Parquet):**
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx wrangler pipelines sinks create my-sink \
|
|
60
|
+
--type r2 --bucket my-bucket --format parquet \
|
|
61
|
+
--path analytics/events \
|
|
62
|
+
--partitioning "year=%Y/month=%m/day=%d" \
|
|
63
|
+
--access-key-id $KEY --secret-access-key $SECRET
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
| Option | Values | Guidance |
|
|
67
|
+
| ----------------- | ------------------------ | ----------------------------------- |
|
|
68
|
+
| `--compression` | `zstd`, `snappy`, `gzip` | `zstd` best ratio, `snappy` fastest |
|
|
69
|
+
| `--roll-interval` | Seconds | Low latency: 10-60, Query perf: 300 |
|
|
70
|
+
| `--roll-size` | MB | Larger = better compression |
|
|
71
|
+
|
|
72
|
+
## Pipeline Creation
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npx wrangler pipelines create my-pipeline \
|
|
76
|
+
--sql "INSERT INTO my_sink SELECT * FROM my_stream WHERE event_type = 'purchase'"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**⚠️ Pipelines are immutable** - cannot modify SQL. Must delete/recreate.
|
|
80
|
+
|
|
81
|
+
## Credentials
|
|
82
|
+
|
|
83
|
+
| Type | Permission | Get From |
|
|
84
|
+
| ----------------- | --------------------- | ---------------------------------- |
|
|
85
|
+
| Catalog token | R2 Admin Read & Write | Dashboard → R2 → API tokens |
|
|
86
|
+
| R2 credentials | Object Read & Write | `wrangler r2 bucket create` output |
|
|
87
|
+
| HTTP ingest token | Workers Pipeline Send | Dashboard → Workers → API tokens |
|
|
88
|
+
|
|
89
|
+
## Complete Example
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
npx wrangler r2 bucket create my-bucket
|
|
93
|
+
npx wrangler r2 bucket catalog enable my-bucket
|
|
94
|
+
npx wrangler pipelines streams create my-stream --schema-file schema.json
|
|
95
|
+
npx wrangler pipelines sinks create my-sink --type r2-data-catalog --bucket my-bucket ...
|
|
96
|
+
npx wrangler pipelines create my-pipeline --sql "INSERT INTO my_sink SELECT * FROM my_stream"
|
|
97
|
+
npx wrangler deploy
|
|
98
|
+
```
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Pipelines Gotchas
|
|
2
|
+
|
|
3
|
+
## Critical Issues
|
|
4
|
+
|
|
5
|
+
### Events Silently Dropped
|
|
6
|
+
|
|
7
|
+
**Most common issue.** Events accepted (HTTP 200) but never appear in sink.
|
|
8
|
+
|
|
9
|
+
**Causes:**
|
|
10
|
+
|
|
11
|
+
1. Schema validation fails - structured streams drop invalid events silently
|
|
12
|
+
2. Waiting for roll interval (10-300s) - expected behavior
|
|
13
|
+
|
|
14
|
+
**Solution:** Validate client-side with Zod:
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
const EventSchema = z.object({ user_id: z.string(), amount: z.number() })
|
|
18
|
+
try {
|
|
19
|
+
const validated = EventSchema.parse(rawEvent)
|
|
20
|
+
await env.STREAM.send([validated])
|
|
21
|
+
} catch (e) {
|
|
22
|
+
/* get immediate feedback */
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Pipelines Are Immutable
|
|
27
|
+
|
|
28
|
+
Cannot modify SQL after creation. Must delete and recreate.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npx wrangler pipelines delete old-pipeline
|
|
32
|
+
npx wrangler pipelines create new-pipeline --sql "..."
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Tip:** Use version naming (`events-pipeline-v1`) and keep SQL in version control.
|
|
36
|
+
|
|
37
|
+
### Worker Binding Not Found
|
|
38
|
+
|
|
39
|
+
**`env.STREAM is undefined`**
|
|
40
|
+
|
|
41
|
+
1. Use **stream ID** (not pipeline ID) in `wrangler.jsonc`
|
|
42
|
+
2. Redeploy after adding binding
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npx wrangler pipelines streams list # Get stream ID
|
|
46
|
+
npx wrangler deploy
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Common Errors
|
|
50
|
+
|
|
51
|
+
| Error | Cause | Fix |
|
|
52
|
+
| -------------------------- | ----------------------------- | ----------------------------------- |
|
|
53
|
+
| Events not in R2 | Roll interval not elapsed | Wait 10-300s, check `roll_interval` |
|
|
54
|
+
| Schema validation failures | Type mismatch, missing fields | Validate client-side |
|
|
55
|
+
| Rate limit (429) | >5 MB/s per stream | Batch events, request increase |
|
|
56
|
+
| Payload too large (413) | >1 MB request | Split into smaller batches |
|
|
57
|
+
| Cannot delete stream | Pipeline references it | Delete pipelines first |
|
|
58
|
+
| Sink credential errors | Token expired | Recreate sink with new credentials |
|
|
59
|
+
|
|
60
|
+
## Limits (Open Beta)
|
|
61
|
+
|
|
62
|
+
| Resource | Limit |
|
|
63
|
+
| ----------------------------------- | ---------- |
|
|
64
|
+
| Streams/Sinks/Pipelines per account | 20 each |
|
|
65
|
+
| Payload size | 1 MB |
|
|
66
|
+
| Ingest rate per stream | 5 MB/s |
|
|
67
|
+
| Event retention | 24 hours |
|
|
68
|
+
| Recommended batch size | 100 events |
|
|
69
|
+
|
|
70
|
+
## SQL Limitations
|
|
71
|
+
|
|
72
|
+
- **No JOINs** - single stream per pipeline
|
|
73
|
+
- **No window functions** - basic SQL only
|
|
74
|
+
- **No subqueries** - must use `INSERT INTO ... SELECT ... FROM`
|
|
75
|
+
- **No schema evolution** - cannot modify after creation
|
|
76
|
+
|
|
77
|
+
## Debug Checklist
|
|
78
|
+
|
|
79
|
+
- [ ] Stream exists: `npx wrangler pipelines streams list`
|
|
80
|
+
- [ ] Pipeline healthy: `npx wrangler pipelines get <ID>`
|
|
81
|
+
- [ ] SQL syntax matches schema
|
|
82
|
+
- [ ] Worker redeployed after binding added
|
|
83
|
+
- [ ] Waited for roll interval
|
|
84
|
+
- [ ] Accepted vs processed count matches (no validation drops)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Pipelines Patterns
|
|
2
|
+
|
|
3
|
+
## Fire-and-Forget
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
export default {
|
|
7
|
+
async fetch(request, env, ctx) {
|
|
8
|
+
const event = { user_id: '...', event_type: 'page_view', timestamp: new Date().toISOString() }
|
|
9
|
+
ctx.waitUntil(env.STREAM.send([event])) // Don't block response
|
|
10
|
+
return new Response('OK')
|
|
11
|
+
},
|
|
12
|
+
}
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Schema Validation with Zod
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { z } from 'zod'
|
|
19
|
+
|
|
20
|
+
const EventSchema = z.object({
|
|
21
|
+
user_id: z.string(),
|
|
22
|
+
event_type: z.enum(['purchase', 'view']),
|
|
23
|
+
amount: z.number().positive().optional(),
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
const validated = EventSchema.parse(rawEvent) // Throws on invalid
|
|
27
|
+
await env.STREAM.send([validated])
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Why:** Structured streams drop invalid events silently. Client validation gives immediate feedback.
|
|
31
|
+
|
|
32
|
+
## SQL Transform Patterns
|
|
33
|
+
|
|
34
|
+
```sql
|
|
35
|
+
-- Filter early (reduce storage)
|
|
36
|
+
INSERT INTO my_sink
|
|
37
|
+
SELECT user_id, event_type, amount
|
|
38
|
+
FROM my_stream
|
|
39
|
+
WHERE event_type = 'purchase' AND amount > 10
|
|
40
|
+
|
|
41
|
+
-- Select only needed fields
|
|
42
|
+
INSERT INTO my_sink
|
|
43
|
+
SELECT user_id, event_type, timestamp FROM my_stream
|
|
44
|
+
|
|
45
|
+
-- Enrich with CASE
|
|
46
|
+
INSERT INTO my_sink
|
|
47
|
+
SELECT user_id, amount,
|
|
48
|
+
CASE WHEN amount > 1000 THEN 'vip' ELSE 'standard' END as tier
|
|
49
|
+
FROM my_stream
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Pipelines + Queues Fan-out
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
await Promise.all([
|
|
56
|
+
env.ANALYTICS_STREAM.send([event]), // Long-term storage
|
|
57
|
+
env.PROCESS_QUEUE.send(event), // Immediate processing
|
|
58
|
+
])
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
| Need | Use |
|
|
62
|
+
| ------------------------------ | --------------- |
|
|
63
|
+
| Long-term storage, SQL queries | Pipelines |
|
|
64
|
+
| Immediate processing, retries | Queues |
|
|
65
|
+
| Both | Fan-out pattern |
|
|
66
|
+
|
|
67
|
+
## Performance Tuning
|
|
68
|
+
|
|
69
|
+
| Goal | Config |
|
|
70
|
+
| ----------------- | ---------------------------------------- |
|
|
71
|
+
| Low latency | `--roll-interval 10` |
|
|
72
|
+
| Query performance | `--roll-interval 300 --roll-size 100` |
|
|
73
|
+
| Cost optimal | `--compression zstd --roll-interval 300` |
|
|
74
|
+
|
|
75
|
+
## Schema Evolution
|
|
76
|
+
|
|
77
|
+
Pipelines are immutable. Use versioning:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Create v2 stream/sink/pipeline
|
|
81
|
+
npx wrangler pipelines streams create events-v2 --schema-file v2.json
|
|
82
|
+
|
|
83
|
+
# Dual-write during transition
|
|
84
|
+
await Promise.all([env.EVENTS_V1.send([event]), env.EVENTS_V2.send([event])]);
|
|
85
|
+
|
|
86
|
+
# Query across versions with UNION ALL
|
|
87
|
+
```
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Product Index
|
|
2
|
+
|
|
3
|
+
### Compute & Runtime
|
|
4
|
+
|
|
5
|
+
| Product | Reference |
|
|
6
|
+
| --------------------- | ----------------------------------- |
|
|
7
|
+
| Workers | `references/workers/` |
|
|
8
|
+
| Pages | `references/pages/` |
|
|
9
|
+
| Pages Functions | `references/pages-functions/` |
|
|
10
|
+
| Durable Objects | `references/durable-objects/` |
|
|
11
|
+
| Workflows | `references/workflows/` |
|
|
12
|
+
| Containers | `references/containers/` |
|
|
13
|
+
| Workers for Platforms | `references/workers-for-platforms/` |
|
|
14
|
+
| Cron Triggers | `references/cron-triggers/` |
|
|
15
|
+
| Tail Workers | `references/tail-workers/` |
|
|
16
|
+
| Snippets | `references/snippets/` |
|
|
17
|
+
| Smart Placement | `references/smart-placement/` |
|
|
18
|
+
|
|
19
|
+
### Storage & Data
|
|
20
|
+
|
|
21
|
+
| Product | Reference |
|
|
22
|
+
| --------------- | ----------------------------- |
|
|
23
|
+
| KV | `references/kv/` |
|
|
24
|
+
| D1 | `references/d1/` |
|
|
25
|
+
| R2 | `references/r2/` |
|
|
26
|
+
| Queues | `references/queues/` |
|
|
27
|
+
| Hyperdrive | `references/hyperdrive/` |
|
|
28
|
+
| DO Storage | `references/do-storage/` |
|
|
29
|
+
| Secrets Store | `references/secrets-store/` |
|
|
30
|
+
| Pipelines | `references/pipelines/` |
|
|
31
|
+
| R2 Data Catalog | `references/r2-data-catalog/` |
|
|
32
|
+
| R2 SQL | `references/r2-sql/` |
|
|
33
|
+
|
|
34
|
+
### AI & Machine Learning
|
|
35
|
+
|
|
36
|
+
| Product | Reference |
|
|
37
|
+
| ---------- | ------------------------ |
|
|
38
|
+
| Workers AI | `references/workers-ai/` |
|
|
39
|
+
| Vectorize | `references/vectorize/` |
|
|
40
|
+
| Agents SDK | `references/agents-sdk/` |
|
|
41
|
+
| AI Gateway | `references/ai-gateway/` |
|
|
42
|
+
| AI Search | `references/ai-search/` |
|
|
43
|
+
|
|
44
|
+
### Networking & Connectivity
|
|
45
|
+
|
|
46
|
+
| Product | Reference |
|
|
47
|
+
| -------------------- | ---------------------------------- |
|
|
48
|
+
| Tunnel | `references/tunnel/` |
|
|
49
|
+
| Spectrum | `references/spectrum/` |
|
|
50
|
+
| TURN | `references/turn/` |
|
|
51
|
+
| Network Interconnect | `references/network-interconnect/` |
|
|
52
|
+
| Argo Smart Routing | `references/argo-smart-routing/` |
|
|
53
|
+
| Workers VPC | `references/workers-vpc/` |
|
|
54
|
+
|
|
55
|
+
### Security
|
|
56
|
+
|
|
57
|
+
| Product | Reference |
|
|
58
|
+
| --------------- | ---------------------------- |
|
|
59
|
+
| WAF | `references/waf/` |
|
|
60
|
+
| DDoS Protection | `references/ddos/` |
|
|
61
|
+
| Bot Management | `references/bot-management/` |
|
|
62
|
+
| API Shield | `references/api-shield/` |
|
|
63
|
+
| Turnstile | `references/turnstile/` |
|
|
64
|
+
|
|
65
|
+
### Media & Content
|
|
66
|
+
|
|
67
|
+
| Product | Reference |
|
|
68
|
+
| ----------------- | ------------------------------- |
|
|
69
|
+
| Images | `references/images/` |
|
|
70
|
+
| Stream | `references/stream/` |
|
|
71
|
+
| Browser Rendering | `references/browser-rendering/` |
|
|
72
|
+
| Zaraz | `references/zaraz/` |
|
|
73
|
+
|
|
74
|
+
### Real-Time Communication
|
|
75
|
+
|
|
76
|
+
| Product | Reference |
|
|
77
|
+
| ------------ | -------------------------- |
|
|
78
|
+
| RealtimeKit | `references/realtimekit/` |
|
|
79
|
+
| Realtime SFU | `references/realtime-sfu/` |
|
|
80
|
+
|
|
81
|
+
### Developer Tools
|
|
82
|
+
|
|
83
|
+
| Product | Reference |
|
|
84
|
+
| --------------------- | -------------------------------- |
|
|
85
|
+
| Wrangler | `references/wrangler/` |
|
|
86
|
+
| Miniflare | `references/miniflare/` |
|
|
87
|
+
| C3 | `references/c3/` |
|
|
88
|
+
| Observability | `references/observability/` |
|
|
89
|
+
| GraphQL Analytics API | `references/graphql-api/` |
|
|
90
|
+
| Analytics Engine | `references/analytics-engine/` |
|
|
91
|
+
| Web Analytics | `references/web-analytics/` |
|
|
92
|
+
| Sandbox | `references/sandbox/` |
|
|
93
|
+
| Workerd | `references/workerd/` |
|
|
94
|
+
| Workers Playground | `references/workers-playground/` |
|
|
95
|
+
|
|
96
|
+
### Infrastructure as Code
|
|
97
|
+
|
|
98
|
+
| Product | Reference |
|
|
99
|
+
| --------- | ----------------------- |
|
|
100
|
+
| Pulumi | `references/pulumi/` |
|
|
101
|
+
| Terraform | `references/terraform/` |
|
|
102
|
+
| API | `references/api/` |
|
|
103
|
+
|
|
104
|
+
### Other Services
|
|
105
|
+
|
|
106
|
+
| Product | Reference |
|
|
107
|
+
| ------------- | --------------------------- |
|
|
108
|
+
| Email Routing | `references/email-routing/` |
|
|
109
|
+
| Email Workers | `references/email-workers/` |
|
|
110
|
+
| Static Assets | `references/static-assets/` |
|
|
111
|
+
| Bindings | `references/bindings/` |
|
|
112
|
+
| Cache Reserve | `references/cache-reserve/` |
|