pi-cloudflare 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +67 -0
- package/bin/setup.mjs +103 -0
- package/dist/auth-flow.d.ts +15 -0
- package/dist/auth-flow.d.ts.map +1 -0
- package/dist/auth-flow.js +90 -0
- package/dist/auth-flow.js.map +1 -0
- package/dist/client.d.ts +18 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +47 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/oauth.d.ts +44 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +135 -0
- package/dist/oauth.js.map +1 -0
- package/dist/proxy.d.ts +29 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +39 -0
- package/dist/proxy.js.map +1 -0
- package/dist/servers.d.ts +19 -0
- package/dist/servers.d.ts.map +1 -0
- package/dist/servers.js +40 -0
- package/dist/servers.js.map +1 -0
- package/dist/token-store.d.ts +23 -0
- package/dist/token-store.d.ts.map +1 -0
- package/dist/token-store.js +47 -0
- package/dist/token-store.js.map +1 -0
- package/package.json +67 -0
- package/skills/agents-sdk/SKILL.md +221 -0
- package/skills/agents-sdk/references/browse-the-web.md +63 -0
- package/skills/agents-sdk/references/callable.md +92 -0
- package/skills/agents-sdk/references/client-sdk.md +110 -0
- package/skills/agents-sdk/references/codemode.md +110 -0
- package/skills/agents-sdk/references/configuration.md +72 -0
- package/skills/agents-sdk/references/durable-execution.md +51 -0
- package/skills/agents-sdk/references/email.md +146 -0
- package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
- package/skills/agents-sdk/references/mcp.md +188 -0
- package/skills/agents-sdk/references/observability.md +44 -0
- package/skills/agents-sdk/references/queue-retries.md +79 -0
- package/skills/agents-sdk/references/routing.md +75 -0
- package/skills/agents-sdk/references/server-driven-messages.md +63 -0
- package/skills/agents-sdk/references/state-scheduling.md +171 -0
- package/skills/agents-sdk/references/streaming-chat.md +198 -0
- package/skills/agents-sdk/references/think.md +112 -0
- package/skills/agents-sdk/references/voice.md +68 -0
- package/skills/agents-sdk/references/webhooks-push.md +86 -0
- package/skills/agents-sdk/references/workflows.md +132 -0
- package/skills/cloudflare/SKILL.md +248 -0
- package/skills/cloudflare/references/agents-sdk/README.md +89 -0
- package/skills/cloudflare/references/agents-sdk/api.md +190 -0
- package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
- package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
- package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
- package/skills/cloudflare/references/ai-gateway/README.md +175 -0
- package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
- package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
- package/skills/cloudflare/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
- package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
- package/skills/cloudflare/references/ai-search/README.md +138 -0
- package/skills/cloudflare/references/ai-search/api.md +87 -0
- package/skills/cloudflare/references/ai-search/configuration.md +88 -0
- package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
- package/skills/cloudflare/references/ai-search/patterns.md +85 -0
- package/skills/cloudflare/references/analytics-engine/README.md +94 -0
- package/skills/cloudflare/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
- package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
- package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
- package/skills/cloudflare/references/api/README.md +66 -0
- package/skills/cloudflare/references/api/api.md +204 -0
- package/skills/cloudflare/references/api/configuration.md +160 -0
- package/skills/cloudflare/references/api/gotchas.md +225 -0
- package/skills/cloudflare/references/api/patterns.md +204 -0
- package/skills/cloudflare/references/api-shield/README.md +44 -0
- package/skills/cloudflare/references/api-shield/api.md +141 -0
- package/skills/cloudflare/references/api-shield/configuration.md +192 -0
- package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
- package/skills/cloudflare/references/api-shield/patterns.md +180 -0
- package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
- package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
- package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
- package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
- package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
- package/skills/cloudflare/references/artifacts/README.md +79 -0
- package/skills/cloudflare/references/artifacts/api.md +128 -0
- package/skills/cloudflare/references/artifacts/configuration.md +92 -0
- package/skills/cloudflare/references/bindings/README.md +122 -0
- package/skills/cloudflare/references/bindings/api.md +203 -0
- package/skills/cloudflare/references/bindings/configuration.md +188 -0
- package/skills/cloudflare/references/bindings/gotchas.md +208 -0
- package/skills/cloudflare/references/bindings/patterns.md +200 -0
- package/skills/cloudflare/references/bot-management/README.md +94 -0
- package/skills/cloudflare/references/bot-management/api.md +169 -0
- package/skills/cloudflare/references/bot-management/configuration.md +163 -0
- package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
- package/skills/cloudflare/references/bot-management/patterns.md +182 -0
- package/skills/cloudflare/references/browser-rendering/README.md +78 -0
- package/skills/cloudflare/references/browser-rendering/api.md +108 -0
- package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
- package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
- package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
- package/skills/cloudflare/references/c3/README.md +111 -0
- package/skills/cloudflare/references/c3/api.md +71 -0
- package/skills/cloudflare/references/c3/configuration.md +81 -0
- package/skills/cloudflare/references/c3/gotchas.md +92 -0
- package/skills/cloudflare/references/c3/patterns.md +82 -0
- package/skills/cloudflare/references/cache-reserve/README.md +147 -0
- package/skills/cloudflare/references/cache-reserve/api.md +194 -0
- package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
- package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
- package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare/references/containers/README.md +85 -0
- package/skills/cloudflare/references/containers/api.md +187 -0
- package/skills/cloudflare/references/containers/configuration.md +188 -0
- package/skills/cloudflare/references/containers/gotchas.md +178 -0
- package/skills/cloudflare/references/containers/patterns.md +202 -0
- package/skills/cloudflare/references/cron-triggers/README.md +99 -0
- package/skills/cloudflare/references/cron-triggers/api.md +196 -0
- package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
- package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
- package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
- package/skills/cloudflare/references/d1/README.md +133 -0
- package/skills/cloudflare/references/d1/api.md +196 -0
- package/skills/cloudflare/references/d1/configuration.md +191 -0
- package/skills/cloudflare/references/d1/gotchas.md +98 -0
- package/skills/cloudflare/references/d1/patterns.md +189 -0
- package/skills/cloudflare/references/ddos/README.md +41 -0
- package/skills/cloudflare/references/ddos/api.md +164 -0
- package/skills/cloudflare/references/ddos/configuration.md +93 -0
- package/skills/cloudflare/references/ddos/gotchas.md +107 -0
- package/skills/cloudflare/references/ddos/patterns.md +174 -0
- package/skills/cloudflare/references/do-storage/README.md +75 -0
- package/skills/cloudflare/references/do-storage/api.md +102 -0
- package/skills/cloudflare/references/do-storage/configuration.md +112 -0
- package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
- package/skills/cloudflare/references/do-storage/patterns.md +194 -0
- package/skills/cloudflare/references/do-storage/testing.md +183 -0
- package/skills/cloudflare/references/durable-objects/README.md +185 -0
- package/skills/cloudflare/references/durable-objects/api.md +187 -0
- package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
- package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
- package/skills/cloudflare/references/email-routing/README.md +89 -0
- package/skills/cloudflare/references/email-routing/api.md +195 -0
- package/skills/cloudflare/references/email-routing/configuration.md +186 -0
- package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
- package/skills/cloudflare/references/email-routing/patterns.md +229 -0
- package/skills/cloudflare/references/email-workers/README.md +151 -0
- package/skills/cloudflare/references/email-workers/api.md +237 -0
- package/skills/cloudflare/references/email-workers/configuration.md +112 -0
- package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
- package/skills/cloudflare/references/email-workers/patterns.md +102 -0
- package/skills/cloudflare/references/flagship/README.md +59 -0
- package/skills/cloudflare/references/flagship/api.md +390 -0
- package/skills/cloudflare/references/flagship/configuration.md +202 -0
- package/skills/cloudflare/references/flagship/gotchas.md +178 -0
- package/skills/cloudflare/references/flagship/patterns.md +469 -0
- package/skills/cloudflare/references/graphql-api/README.md +147 -0
- package/skills/cloudflare/references/graphql-api/api.md +175 -0
- package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
- package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
- package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
- package/skills/cloudflare/references/hyperdrive/README.md +82 -0
- package/skills/cloudflare/references/hyperdrive/api.md +143 -0
- package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
- package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
- package/skills/cloudflare/references/images/README.md +61 -0
- package/skills/cloudflare/references/images/api.md +96 -0
- package/skills/cloudflare/references/images/configuration.md +211 -0
- package/skills/cloudflare/references/images/gotchas.md +99 -0
- package/skills/cloudflare/references/images/patterns.md +115 -0
- package/skills/cloudflare/references/kv/README.md +89 -0
- package/skills/cloudflare/references/kv/api.md +160 -0
- package/skills/cloudflare/references/kv/configuration.md +144 -0
- package/skills/cloudflare/references/kv/gotchas.md +131 -0
- package/skills/cloudflare/references/kv/patterns.md +196 -0
- package/skills/cloudflare/references/miniflare/README.md +105 -0
- package/skills/cloudflare/references/miniflare/api.md +187 -0
- package/skills/cloudflare/references/miniflare/configuration.md +173 -0
- package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
- package/skills/cloudflare/references/miniflare/patterns.md +181 -0
- package/skills/cloudflare/references/network-interconnect/README.md +99 -0
- package/skills/cloudflare/references/network-interconnect/api.md +199 -0
- package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
- package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
- package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
- package/skills/cloudflare/references/observability/README.md +88 -0
- package/skills/cloudflare/references/observability/api.md +164 -0
- package/skills/cloudflare/references/observability/configuration.md +169 -0
- package/skills/cloudflare/references/observability/gotchas.md +115 -0
- package/skills/cloudflare/references/observability/patterns.md +105 -0
- package/skills/cloudflare/references/pages/README.md +88 -0
- package/skills/cloudflare/references/pages/api.md +204 -0
- package/skills/cloudflare/references/pages/configuration.md +201 -0
- package/skills/cloudflare/references/pages/gotchas.md +203 -0
- package/skills/cloudflare/references/pages/patterns.md +204 -0
- package/skills/cloudflare/references/pages-functions/README.md +98 -0
- package/skills/cloudflare/references/pages-functions/api.md +143 -0
- package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
- package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
- package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
- package/skills/cloudflare/references/pipelines/README.md +90 -0
- package/skills/cloudflare/references/pipelines/api.md +124 -0
- package/skills/cloudflare/references/pipelines/configuration.md +155 -0
- package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
- package/skills/cloudflare/references/pipelines/patterns.md +130 -0
- package/skills/cloudflare/references/pulumi/README.md +100 -0
- package/skills/cloudflare/references/pulumi/api.md +200 -0
- package/skills/cloudflare/references/pulumi/configuration.md +198 -0
- package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
- package/skills/cloudflare/references/pulumi/patterns.md +191 -0
- package/skills/cloudflare/references/queues/README.md +96 -0
- package/skills/cloudflare/references/queues/api.md +206 -0
- package/skills/cloudflare/references/queues/configuration.md +144 -0
- package/skills/cloudflare/references/queues/gotchas.md +206 -0
- package/skills/cloudflare/references/queues/patterns.md +220 -0
- package/skills/cloudflare/references/r2/README.md +95 -0
- package/skills/cloudflare/references/r2/api.md +200 -0
- package/skills/cloudflare/references/r2/configuration.md +165 -0
- package/skills/cloudflare/references/r2/gotchas.md +190 -0
- package/skills/cloudflare/references/r2/patterns.md +193 -0
- package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
- package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
- package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
- package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
- package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
- package/skills/cloudflare/references/r2-sql/README.md +64 -0
- package/skills/cloudflare/references/r2-sql/api.md +121 -0
- package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
- package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
- package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
- package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
- package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
- package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
- package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
- package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
- package/skills/cloudflare/references/realtimekit/README.md +113 -0
- package/skills/cloudflare/references/realtimekit/api.md +212 -0
- package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
- package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
- package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
- package/skills/cloudflare/references/sandbox/README.md +96 -0
- package/skills/cloudflare/references/sandbox/api.md +198 -0
- package/skills/cloudflare/references/sandbox/configuration.md +143 -0
- package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
- package/skills/cloudflare/references/sandbox/patterns.md +201 -0
- package/skills/cloudflare/references/secrets-store/README.md +74 -0
- package/skills/cloudflare/references/secrets-store/api.md +200 -0
- package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
- package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
- package/skills/cloudflare/references/smart-placement/README.md +138 -0
- package/skills/cloudflare/references/smart-placement/api.md +183 -0
- package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
- package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
- package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
- package/skills/cloudflare/references/snippets/README.md +68 -0
- package/skills/cloudflare/references/snippets/api.md +198 -0
- package/skills/cloudflare/references/snippets/configuration.md +227 -0
- package/skills/cloudflare/references/snippets/gotchas.md +86 -0
- package/skills/cloudflare/references/snippets/patterns.md +135 -0
- package/skills/cloudflare/references/spectrum/README.md +52 -0
- package/skills/cloudflare/references/spectrum/api.md +181 -0
- package/skills/cloudflare/references/spectrum/configuration.md +194 -0
- package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
- package/skills/cloudflare/references/spectrum/patterns.md +196 -0
- package/skills/cloudflare/references/static-assets/README.md +65 -0
- package/skills/cloudflare/references/static-assets/api.md +199 -0
- package/skills/cloudflare/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
- package/skills/cloudflare/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare/references/stream/README.md +114 -0
- package/skills/cloudflare/references/stream/api-live.md +195 -0
- package/skills/cloudflare/references/stream/api.md +199 -0
- package/skills/cloudflare/references/stream/configuration.md +141 -0
- package/skills/cloudflare/references/stream/gotchas.md +130 -0
- package/skills/cloudflare/references/stream/patterns.md +184 -0
- package/skills/cloudflare/references/tail-workers/README.md +89 -0
- package/skills/cloudflare/references/tail-workers/api.md +200 -0
- package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
- package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
- package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
- package/skills/cloudflare/references/terraform/README.md +102 -0
- package/skills/cloudflare/references/terraform/api.md +178 -0
- package/skills/cloudflare/references/terraform/configuration.md +197 -0
- package/skills/cloudflare/references/terraform/gotchas.md +150 -0
- package/skills/cloudflare/references/terraform/patterns.md +174 -0
- package/skills/cloudflare/references/tunnel/README.md +129 -0
- package/skills/cloudflare/references/tunnel/api.md +193 -0
- package/skills/cloudflare/references/tunnel/configuration.md +157 -0
- package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
- package/skills/cloudflare/references/tunnel/networking.md +168 -0
- package/skills/cloudflare/references/tunnel/patterns.md +192 -0
- package/skills/cloudflare/references/turn/README.md +82 -0
- package/skills/cloudflare/references/turn/api.md +239 -0
- package/skills/cloudflare/references/turn/configuration.md +179 -0
- package/skills/cloudflare/references/turn/gotchas.md +231 -0
- package/skills/cloudflare/references/turn/patterns.md +213 -0
- package/skills/cloudflare/references/turnstile/README.md +99 -0
- package/skills/cloudflare/references/turnstile/api.md +240 -0
- package/skills/cloudflare/references/turnstile/configuration.md +222 -0
- package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
- package/skills/cloudflare/references/turnstile/patterns.md +193 -0
- package/skills/cloudflare/references/vectorize/README.md +133 -0
- package/skills/cloudflare/references/vectorize/api.md +88 -0
- package/skills/cloudflare/references/vectorize/configuration.md +88 -0
- package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
- package/skills/cloudflare/references/vectorize/patterns.md +90 -0
- package/skills/cloudflare/references/waf/README.md +113 -0
- package/skills/cloudflare/references/waf/api.md +202 -0
- package/skills/cloudflare/references/waf/configuration.md +203 -0
- package/skills/cloudflare/references/waf/gotchas.md +204 -0
- package/skills/cloudflare/references/waf/patterns.md +197 -0
- package/skills/cloudflare/references/web-analytics/README.md +141 -0
- package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
- package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
- package/skills/cloudflare/references/web-analytics/integration.md +60 -0
- package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
- package/skills/cloudflare/references/workerd/README.md +78 -0
- package/skills/cloudflare/references/workerd/api.md +185 -0
- package/skills/cloudflare/references/workerd/configuration.md +183 -0
- package/skills/cloudflare/references/workerd/gotchas.md +139 -0
- package/skills/cloudflare/references/workerd/patterns.md +192 -0
- package/skills/cloudflare/references/workers/README.md +108 -0
- package/skills/cloudflare/references/workers/api.md +195 -0
- package/skills/cloudflare/references/workers/configuration.md +185 -0
- package/skills/cloudflare/references/workers/frameworks.md +197 -0
- package/skills/cloudflare/references/workers/gotchas.md +137 -0
- package/skills/cloudflare/references/workers/patterns.md +198 -0
- package/skills/cloudflare/references/workers-ai/README.md +197 -0
- package/skills/cloudflare/references/workers-ai/api.md +112 -0
- package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
- package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
- package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
- package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
- package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
- package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
- package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
- package/skills/cloudflare/references/workers-playground/README.md +127 -0
- package/skills/cloudflare/references/workers-playground/api.md +101 -0
- package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
- package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
- package/skills/cloudflare/references/workers-vpc/README.md +127 -0
- package/skills/cloudflare/references/workers-vpc/api.md +202 -0
- package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
- package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
- package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
- package/skills/cloudflare/references/workflows/README.md +77 -0
- package/skills/cloudflare/references/workflows/api.md +218 -0
- package/skills/cloudflare/references/workflows/configuration.md +152 -0
- package/skills/cloudflare/references/workflows/gotchas.md +90 -0
- package/skills/cloudflare/references/workflows/patterns.md +175 -0
- package/skills/cloudflare/references/wrangler/README.md +135 -0
- package/skills/cloudflare/references/wrangler/api.md +188 -0
- package/skills/cloudflare/references/wrangler/configuration.md +197 -0
- package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
- package/skills/cloudflare/references/wrangler/patterns.md +209 -0
- package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
- package/skills/cloudflare/references/zaraz/README.md +111 -0
- package/skills/cloudflare/references/zaraz/api.md +112 -0
- package/skills/cloudflare/references/zaraz/configuration.md +90 -0
- package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
- package/skills/cloudflare/references/zaraz/patterns.md +74 -0
- package/skills/cloudflare-email-service/SKILL.md +103 -0
- package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
- package/skills/cloudflare-email-service/references/deliverability.md +285 -0
- package/skills/cloudflare-email-service/references/rest-api.md +184 -0
- package/skills/cloudflare-email-service/references/routing.md +199 -0
- package/skills/cloudflare-email-service/references/sending.md +252 -0
- package/skills/cloudflare-one/SKILL.md +176 -0
- package/skills/cloudflare-one-migrations/SKILL.md +110 -0
- package/skills/durable-objects/SKILL.md +186 -0
- package/skills/durable-objects/references/rules.md +295 -0
- package/skills/durable-objects/references/testing.md +264 -0
- package/skills/durable-objects/references/workers.md +346 -0
- package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
- package/skills/sandbox-next/SKILL.md +91 -0
- package/skills/sandbox-next/references/api-quick-ref.md +94 -0
- package/skills/sandbox-next/references/examples.md +15 -0
- package/skills/sandbox-stable/SKILL.md +110 -0
- package/skills/turnstile-spin/README.md +51 -0
- package/skills/turnstile-spin/SKILL.md +330 -0
- package/skills/turnstile-spin/references/astro.md +199 -0
- package/skills/turnstile-spin/references/hugo.md +114 -0
- package/skills/turnstile-spin/references/nextjs-app.md +261 -0
- package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
- package/skills/turnstile-spin/references/sveltekit.md +191 -0
- package/skills/turnstile-spin/references/vanilla-html.md +157 -0
- package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
- package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
- package/skills/turnstile-spin/scripts/validate.sh +137 -0
- package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
- package/skills/turnstile-spin/tests/validation.md +62 -0
- package/skills/workers-best-practices/SKILL.md +127 -0
- package/skills/workers-best-practices/references/review.md +174 -0
- package/skills/workers-best-practices/references/rules.md +467 -0
- package/skills/wrangler/SKILL.md +922 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# RealtimeKit API Reference
|
|
2
|
+
|
|
3
|
+
Complete API reference for Meeting object, REST endpoints, and SDK methods.
|
|
4
|
+
|
|
5
|
+
## Meeting Object API
|
|
6
|
+
|
|
7
|
+
### `meeting.self` - Local Participant
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
// Properties: id, userId, name, audioEnabled, videoEnabled, screenShareEnabled, audioTrack, videoTrack, screenShareTracks, roomJoined, roomState
|
|
11
|
+
// Methods
|
|
12
|
+
await meeting.self.enableAudio() / disableAudio() / enableVideo() / disableVideo() / enableScreenShare() / disableScreenShare()
|
|
13
|
+
await meeting.self.setName("Name") // Before join only
|
|
14
|
+
await meeting.self.setDevice(device)
|
|
15
|
+
const devices = await meeting.self.getAllDevices() / getAudioDevices() / getVideoDevices() / getSpeakerDevices()
|
|
16
|
+
// Events: 'roomJoined', 'audioUpdate', 'videoUpdate', 'screenShareUpdate', 'deviceUpdate', 'deviceListUpdate'
|
|
17
|
+
meeting.self.on('roomJoined', () => {})
|
|
18
|
+
meeting.self.on('audioUpdate', ({ audioEnabled, audioTrack }) => {})
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### `meeting.participants` - Remote Participants
|
|
22
|
+
|
|
23
|
+
**Collections**:
|
|
24
|
+
```typescript
|
|
25
|
+
meeting.participants.joined / active / waitlisted / pinned // Maps
|
|
26
|
+
const participants = meeting.participants.joined.toArray()
|
|
27
|
+
const count = meeting.participants.joined.size()
|
|
28
|
+
const p = meeting.participants.joined.get('peer-id')
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Participant Properties**:
|
|
32
|
+
```typescript
|
|
33
|
+
participant.id / userId / name
|
|
34
|
+
participant.audioEnabled / videoEnabled / screenShareEnabled
|
|
35
|
+
participant.audioTrack / videoTrack / screenShareTracks
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Events**:
|
|
39
|
+
```typescript
|
|
40
|
+
meeting.participants.joined.on('participantJoined', (participant) => {})
|
|
41
|
+
meeting.participants.joined.on('participantLeft', (participant) => {})
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### `meeting.meta` - Metadata
|
|
45
|
+
```typescript
|
|
46
|
+
meeting.meta.meetingId / meetingTitle / meetingStartedTimestamp
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### `meeting.chat` - Chat
|
|
50
|
+
```typescript
|
|
51
|
+
meeting.chat.messages // Array
|
|
52
|
+
await meeting.chat.sendTextMessage("Hello") / sendImageMessage(file)
|
|
53
|
+
meeting.chat.on('chatUpdate', ({ message, messages }) => {})
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### `meeting.polls` - Polling
|
|
57
|
+
```typescript
|
|
58
|
+
meeting.polls.items // Array
|
|
59
|
+
await meeting.polls.create(question, options, anonymous, hideVotes)
|
|
60
|
+
await meeting.polls.vote(pollId, optionIndex)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### `meeting.plugins` - Collaborative Apps
|
|
64
|
+
```typescript
|
|
65
|
+
meeting.plugins.all // Array
|
|
66
|
+
await meeting.plugins.activate(pluginId) / deactivate()
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### `meeting.ai` - AI Features
|
|
70
|
+
```typescript
|
|
71
|
+
meeting.ai.transcripts // Live transcriptions (when enabled in Preset)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Core Methods
|
|
75
|
+
```typescript
|
|
76
|
+
await meeting.join() // Emits 'roomJoined' on meeting.self
|
|
77
|
+
await meeting.leave()
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## TypeScript Types
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
import type { RealtimeKitClient, States, UIConfig, Participant } from '@cloudflare/realtimekit';
|
|
84
|
+
|
|
85
|
+
// Main interface
|
|
86
|
+
interface RealtimeKitClient {
|
|
87
|
+
self: SelfState; // Local participant (id, userId, name, audioEnabled, videoEnabled, roomJoined, roomState)
|
|
88
|
+
participants: { joined, active, waitlisted, pinned }; // Reactive Maps
|
|
89
|
+
chat: ChatNamespace; // messages[], sendTextMessage(), sendImageMessage()
|
|
90
|
+
polls: PollsNamespace; // items[], create(), vote()
|
|
91
|
+
plugins: PluginsNamespace; // all[], activate(), deactivate()
|
|
92
|
+
ai: AINamespace; // transcripts[]
|
|
93
|
+
meta: MetaState; // meetingId, meetingTitle, meetingStartedTimestamp
|
|
94
|
+
join(): Promise<void>;
|
|
95
|
+
leave(): Promise<void>;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Participant (self & remote share same shape)
|
|
99
|
+
interface Participant {
|
|
100
|
+
id: string; // Peer ID (changes on rejoin)
|
|
101
|
+
userId: string; // Persistent participant ID
|
|
102
|
+
name: string;
|
|
103
|
+
audioEnabled: boolean;
|
|
104
|
+
videoEnabled: boolean;
|
|
105
|
+
screenShareEnabled: boolean;
|
|
106
|
+
audioTrack: MediaStreamTrack | null;
|
|
107
|
+
videoTrack: MediaStreamTrack | null;
|
|
108
|
+
screenShareTracks: MediaStreamTrack[];
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Store Architecture
|
|
113
|
+
|
|
114
|
+
RealtimeKit uses reactive store (event-driven updates, live Maps):
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
// Subscribe to state changes
|
|
118
|
+
meeting.self.on('audioUpdate', ({ audioEnabled, audioTrack }) => {});
|
|
119
|
+
meeting.participants.joined.on('participantJoined', (p) => {});
|
|
120
|
+
|
|
121
|
+
// Access current state synchronously
|
|
122
|
+
const isAudioOn = meeting.self.audioEnabled;
|
|
123
|
+
const count = meeting.participants.joined.size();
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Key principles:** State updates emit events after changes. Use `.toArray()` sparingly. Collections are live Maps.
|
|
127
|
+
|
|
128
|
+
## REST API
|
|
129
|
+
|
|
130
|
+
Base: `https://api.cloudflare.com/client/v4/accounts/{account_id}/realtime/kit/{app_id}`
|
|
131
|
+
|
|
132
|
+
### Meetings
|
|
133
|
+
```bash
|
|
134
|
+
GET /meetings # List all
|
|
135
|
+
GET /meetings/{meeting_id} # Get details
|
|
136
|
+
POST /meetings # Create: {"title": "..."}
|
|
137
|
+
PATCH /meetings/{meeting_id} # Update: {"title": "...", "record_on_start": true}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Participants
|
|
141
|
+
```bash
|
|
142
|
+
GET /meetings/{meeting_id}/participants # List all
|
|
143
|
+
GET /meetings/{meeting_id}/participants/{participant_id} # Get details
|
|
144
|
+
POST /meetings/{meeting_id}/participants # Add: {"name": "...", "preset_name": "...", "custom_participant_id": "..."}
|
|
145
|
+
PATCH /meetings/{meeting_id}/participants/{participant_id} # Update: {"name": "...", "preset_name": "..."}
|
|
146
|
+
DELETE /meetings/{meeting_id}/participants/{participant_id} # Delete
|
|
147
|
+
POST /meetings/{meeting_id}/participants/{participant_id}/token # Refresh token
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Active Session
|
|
151
|
+
```bash
|
|
152
|
+
GET /meetings/{meeting_id}/active-session # Get active session
|
|
153
|
+
POST /meetings/{meeting_id}/active-session/kick # Kick users: {"user_ids": ["id1", "id2"]}
|
|
154
|
+
POST /meetings/{meeting_id}/active-session/kick-all # Kick all
|
|
155
|
+
POST /meetings/{meeting_id}/active-session/poll # Create poll: {"question": "...", "options": [...], "anonymous": false}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Recording
|
|
159
|
+
```bash
|
|
160
|
+
GET /recordings?meeting_id={meeting_id} # List recordings
|
|
161
|
+
GET /recordings/active-recording/{meeting_id} # Get active recording
|
|
162
|
+
POST /recordings # Start: {"meeting_id": "...", "type": "composite"} (or "track")
|
|
163
|
+
PUT /recordings/{recording_id} # Control: {"action": "pause"} (or "resume", "stop")
|
|
164
|
+
POST /recordings/track # Track recording: {"meeting_id": "...", "layers": [...]}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Livestreaming
|
|
168
|
+
```bash
|
|
169
|
+
GET /livestreams?exclude_meetings=false # List all
|
|
170
|
+
GET /livestreams/{livestream_id} # Get details
|
|
171
|
+
POST /meetings/{meeting_id}/livestreams # Start for meeting
|
|
172
|
+
POST /meetings/{meeting_id}/active-livestream/stop # Stop
|
|
173
|
+
POST /livestreams # Create independent: returns {ingest_server, stream_key, playback_url}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Sessions & Analytics
|
|
177
|
+
```bash
|
|
178
|
+
GET /sessions # List all
|
|
179
|
+
GET /sessions/{session_id} # Get details
|
|
180
|
+
GET /sessions/{session_id}/participants # List participants
|
|
181
|
+
GET /sessions/{session_id}/participants/{participant_id} # Call stats
|
|
182
|
+
GET /sessions/{session_id}/chat # Download chat CSV
|
|
183
|
+
GET /sessions/{session_id}/transcript # Download transcript CSV
|
|
184
|
+
GET /sessions/{session_id}/summary # Get summary
|
|
185
|
+
POST /sessions/{session_id}/summary # Generate summary
|
|
186
|
+
GET /analytics/daywise?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD # Day-wise analytics
|
|
187
|
+
GET /analytics/livestreams/overall # Livestream analytics
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Webhooks
|
|
191
|
+
```bash
|
|
192
|
+
GET /webhooks # List all
|
|
193
|
+
POST /webhooks # Create: {"url": "https://...", "events": ["session.started", "session.ended"]}
|
|
194
|
+
PATCH /webhooks/{webhook_id} # Update
|
|
195
|
+
DELETE /webhooks/{webhook_id} # Delete
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Session Lifecycle
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
Initialization → Join Intent → [Waitlist?] → Meeting Screen (Stage) → Ended
|
|
202
|
+
↓ Approved
|
|
203
|
+
[Rejected → Ended]
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
UI Kit handles state transitions automatically.
|
|
207
|
+
|
|
208
|
+
## See Also
|
|
209
|
+
|
|
210
|
+
- [Configuration](./configuration.md) - Setup and installation
|
|
211
|
+
- [Patterns](./patterns.md) - Usage examples
|
|
212
|
+
- [README](./README.md) - Overview and quick start
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# RealtimeKit Configuration
|
|
2
|
+
|
|
3
|
+
Configuration guide for RealtimeKit setup, client SDKs, and wrangler integration.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### React
|
|
8
|
+
```bash
|
|
9
|
+
npm install @cloudflare/realtimekit @cloudflare/realtimekit-react-ui
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Angular
|
|
13
|
+
```bash
|
|
14
|
+
npm install @cloudflare/realtimekit @cloudflare/realtimekit-angular-ui
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Web Components/HTML
|
|
18
|
+
```bash
|
|
19
|
+
npm install @cloudflare/realtimekit @cloudflare/realtimekit-ui
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Client SDK Configuration
|
|
23
|
+
|
|
24
|
+
### React UI Kit
|
|
25
|
+
```tsx
|
|
26
|
+
import { RtkMeeting } from '@cloudflare/realtimekit-react-ui';
|
|
27
|
+
<RtkMeeting authToken="<token>" onLeave={() => {}} />
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Angular UI Kit
|
|
31
|
+
```typescript
|
|
32
|
+
@Component({ template: `<rtk-meeting [authToken]="authToken" (rtkLeave)="onLeave($event)"></rtk-meeting>` })
|
|
33
|
+
export class AppComponent { authToken = '<token>'; onLeave() {} }
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Web Components
|
|
37
|
+
```html
|
|
38
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit-ui/dist/realtimekit-ui/realtimekit-ui.esm.js"></script>
|
|
39
|
+
<rtk-meeting id="meeting"></rtk-meeting>
|
|
40
|
+
<script>
|
|
41
|
+
document.getElementById('meeting').authToken = '<token>';
|
|
42
|
+
</script>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Core SDK Configuration
|
|
46
|
+
```typescript
|
|
47
|
+
import RealtimeKitClient from '@cloudflare/realtimekit';
|
|
48
|
+
|
|
49
|
+
const meeting = new RealtimeKitClient({
|
|
50
|
+
authToken: '<token>',
|
|
51
|
+
video: true, audio: true, autoSwitchAudioDevice: true,
|
|
52
|
+
mediaConfiguration: {
|
|
53
|
+
video: { width: { ideal: 1280 }, height: { ideal: 720 }, frameRate: { ideal: 30 } },
|
|
54
|
+
audio: { echoCancellation: true, noiseSuppression: true, autoGainControl: true },
|
|
55
|
+
screenshare: { width: { max: 1920 }, height: { max: 1080 }, frameRate: { ideal: 15 } }
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
await meeting.join();
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Backend Setup
|
|
62
|
+
|
|
63
|
+
### Create App & Credentials
|
|
64
|
+
|
|
65
|
+
**Dashboard**: https://dash.cloudflare.com/?to=/:account/realtime/kit
|
|
66
|
+
|
|
67
|
+
**API**:
|
|
68
|
+
```bash
|
|
69
|
+
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/apps' \
|
|
70
|
+
-H 'Content-Type: application/json' \
|
|
71
|
+
-H 'Authorization: Bearer <api_token>' \
|
|
72
|
+
-d '{"name": "My RealtimeKit App"}'
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Required Permissions**: API token with **Realtime / Realtime Admin** permissions
|
|
76
|
+
|
|
77
|
+
### Create Presets
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/<app_id>/presets' \
|
|
81
|
+
-H 'Authorization: Bearer <api_token>' \
|
|
82
|
+
-d '{
|
|
83
|
+
"name": "host",
|
|
84
|
+
"permissions": {
|
|
85
|
+
"canShareAudio": true,
|
|
86
|
+
"canShareVideo": true,
|
|
87
|
+
"canRecord": true,
|
|
88
|
+
"canLivestream": true,
|
|
89
|
+
"canStartStopRecording": true
|
|
90
|
+
}
|
|
91
|
+
}'
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Wrangler Configuration
|
|
95
|
+
|
|
96
|
+
### Basic Configuration
|
|
97
|
+
```jsonc
|
|
98
|
+
// wrangler.jsonc
|
|
99
|
+
{
|
|
100
|
+
"name": "realtimekit-app",
|
|
101
|
+
"main": "src/index.ts",
|
|
102
|
+
"compatibility_date": "2025-01-01", // Use current date
|
|
103
|
+
"vars": {
|
|
104
|
+
"CLOUDFLARE_ACCOUNT_ID": "abc123",
|
|
105
|
+
"REALTIMEKIT_APP_ID": "xyz789"
|
|
106
|
+
}
|
|
107
|
+
// Secrets: wrangler secret put CLOUDFLARE_API_TOKEN
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### With Database & Storage
|
|
112
|
+
```jsonc
|
|
113
|
+
{
|
|
114
|
+
"d1_databases": [{ "binding": "DB", "database_name": "meetings", "database_id": "d1-id" }],
|
|
115
|
+
"r2_buckets": [{ "binding": "RECORDINGS", "bucket_name": "recordings" }],
|
|
116
|
+
"kv_namespaces": [{ "binding": "SESSIONS", "id": "kv-id" }]
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Multi-Environment
|
|
121
|
+
```bash
|
|
122
|
+
# Deploy to environments
|
|
123
|
+
wrangler deploy --env staging
|
|
124
|
+
wrangler deploy --env production
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## TURN Service Configuration
|
|
128
|
+
|
|
129
|
+
RealtimeKit can use Cloudflare's TURN service for connectivity through restrictive networks:
|
|
130
|
+
|
|
131
|
+
```jsonc
|
|
132
|
+
// wrangler.jsonc
|
|
133
|
+
{
|
|
134
|
+
"vars": {
|
|
135
|
+
"TURN_SERVICE_ID": "your_turn_service_id"
|
|
136
|
+
}
|
|
137
|
+
// Set secret: wrangler secret put TURN_SERVICE_TOKEN
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
TURN automatically configured when enabled in account - no client-side changes needed.
|
|
142
|
+
|
|
143
|
+
## Theming & Design Tokens
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
import type { UIConfig } from '@cloudflare/realtimekit';
|
|
147
|
+
|
|
148
|
+
const uiConfig: UIConfig = {
|
|
149
|
+
designTokens: {
|
|
150
|
+
colors: {
|
|
151
|
+
brand: { 500: '#0066ff', 600: '#0052cc' },
|
|
152
|
+
background: { 1000: '#1A1A1A', 900: '#2D2D2D' },
|
|
153
|
+
text: { 1000: '#FFFFFF', 900: '#E0E0E0' }
|
|
154
|
+
},
|
|
155
|
+
borderRadius: 'extra-rounded', // 'rounded' | 'extra-rounded' | 'sharp'
|
|
156
|
+
theme: 'dark' // 'light' | 'dark'
|
|
157
|
+
},
|
|
158
|
+
logo: { url: 'https://example.com/logo.png', altText: 'Company' }
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
// Apply to React
|
|
162
|
+
<RtkMeeting authToken={token} config={uiConfig} onLeave={() => {}} />
|
|
163
|
+
|
|
164
|
+
// Or use CSS variables
|
|
165
|
+
// :root { --rtk-color-brand-500: #0066ff; --rtk-border-radius: 12px; }
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Internationalization (i18n)
|
|
169
|
+
|
|
170
|
+
### Custom Language Strings
|
|
171
|
+
```typescript
|
|
172
|
+
import { useLanguage } from '@cloudflare/realtimekit-ui';
|
|
173
|
+
|
|
174
|
+
const customLanguage = {
|
|
175
|
+
'join': 'Entrar',
|
|
176
|
+
'leave': 'Salir',
|
|
177
|
+
'mute': 'Silenciar',
|
|
178
|
+
'unmute': 'Activar audio',
|
|
179
|
+
'turn_on_camera': 'Encender cámara',
|
|
180
|
+
'turn_off_camera': 'Apagar cámara',
|
|
181
|
+
'share_screen': 'Compartir pantalla',
|
|
182
|
+
'stop_sharing': 'Dejar de compartir'
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
const t = useLanguage(customLanguage);
|
|
186
|
+
|
|
187
|
+
// React usage
|
|
188
|
+
<RtkMeeting authToken={token} t={t} onLeave={() => {}} />
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Supported Locales
|
|
192
|
+
Default locales available: `en`, `es`, `fr`, `de`, `pt`, `ja`, `zh`
|
|
193
|
+
|
|
194
|
+
```typescript
|
|
195
|
+
import { setLocale } from '@cloudflare/realtimekit-ui';
|
|
196
|
+
setLocale('es'); // Switch to Spanish
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## See Also
|
|
200
|
+
|
|
201
|
+
- [API](./api.md) - Meeting APIs, REST endpoints
|
|
202
|
+
- [Patterns](./patterns.md) - Backend integration examples
|
|
203
|
+
- [README](./README.md) - Overview and quick start
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# RealtimeKit Gotchas & Troubleshooting
|
|
2
|
+
|
|
3
|
+
## Common Errors
|
|
4
|
+
|
|
5
|
+
### "Cannot connect to meeting"
|
|
6
|
+
|
|
7
|
+
**Cause:** Auth token invalid/expired, API credentials lack permissions, or network blocks WebRTC
|
|
8
|
+
**Solution:**
|
|
9
|
+
Verify token validity, check API token has **Realtime / Realtime Admin** permissions, enable TURN service for restrictive networks
|
|
10
|
+
|
|
11
|
+
### "No video/audio tracks"
|
|
12
|
+
|
|
13
|
+
**Cause:** Browser permissions not granted, video/audio not enabled, device in use, or device unavailable
|
|
14
|
+
**Solution:**
|
|
15
|
+
Request browser permissions explicitly, verify initialization config, use `meeting.self.getAllDevices()` to debug, close other apps using device
|
|
16
|
+
|
|
17
|
+
### "Participant count mismatched"
|
|
18
|
+
|
|
19
|
+
**Cause:** `meeting.participants` doesn't include `meeting.self`
|
|
20
|
+
**Solution:** Total count = `meeting.participants.joined.size() + 1`
|
|
21
|
+
|
|
22
|
+
### "Events not firing"
|
|
23
|
+
|
|
24
|
+
**Cause:** Listeners registered after actions, incorrect event name, or wrong namespace
|
|
25
|
+
**Solution:**
|
|
26
|
+
Register listeners before calling `meeting.join()`, check event names against docs, verify correct namespace
|
|
27
|
+
|
|
28
|
+
### "CORS errors in API calls"
|
|
29
|
+
|
|
30
|
+
**Cause:** Making REST API calls from client-side
|
|
31
|
+
**Solution:** All REST API calls **must** be server-side (Workers, backend). Never expose API tokens to clients.
|
|
32
|
+
|
|
33
|
+
### "Preset not applying"
|
|
34
|
+
|
|
35
|
+
**Cause:** Preset doesn't exist, name mismatch (case-sensitive), or participant created before preset
|
|
36
|
+
**Solution:**
|
|
37
|
+
Verify preset exists via Dashboard or API, check exact spelling and case, create preset before adding participants
|
|
38
|
+
|
|
39
|
+
### "Token reuse error"
|
|
40
|
+
|
|
41
|
+
**Cause:** Reusing participant tokens across sessions
|
|
42
|
+
**Solution:** Generate fresh token per session. Use refresh endpoint if token expires during session.
|
|
43
|
+
|
|
44
|
+
### "Video quality poor"
|
|
45
|
+
|
|
46
|
+
**Cause:** Insufficient bandwidth, resolution/bitrate too high, or CPU overload
|
|
47
|
+
**Solution:**
|
|
48
|
+
Lower `mediaConfiguration.video` resolution/frameRate, monitor network conditions, reduce participant count or grid size
|
|
49
|
+
|
|
50
|
+
### "Echo or audio feedback"
|
|
51
|
+
|
|
52
|
+
**Cause:** Multiple devices picking up same audio source
|
|
53
|
+
**Solution:**
|
|
54
|
+
- Lower `mediaConfiguration.video` resolution/frameRate
|
|
55
|
+
- Monitor network conditions
|
|
56
|
+
- Reduce participant count or grid size
|
|
57
|
+
|
|
58
|
+
### Issue: Echo or audio feedback
|
|
59
|
+
**Cause**: Multiple devices picking up same audio source
|
|
60
|
+
|
|
61
|
+
**Solutions**:
|
|
62
|
+
Enable `echoCancellation: true` in `mediaConfiguration.audio`, use headphones, mute when not speaking
|
|
63
|
+
|
|
64
|
+
### "Screen share not working"
|
|
65
|
+
|
|
66
|
+
**Cause:** Browser doesn't support screen sharing API, permission denied, or wrong `displaySurface` config
|
|
67
|
+
**Solution:**
|
|
68
|
+
Use Chrome/Edge/Firefox (Safari limited support), check browser permissions, try different `displaySurface` values ('window', 'monitor', 'browser')
|
|
69
|
+
|
|
70
|
+
### "How do I schedule meetings?"
|
|
71
|
+
|
|
72
|
+
**Cause:** RealtimeKit has no built-in scheduling system
|
|
73
|
+
**Solution:**
|
|
74
|
+
Store meeting IDs in your database with timestamps. Generate participant tokens only when user should join. Example:
|
|
75
|
+
```typescript
|
|
76
|
+
// Store in DB
|
|
77
|
+
{ meetingId: 'abc123', scheduledFor: '2026-02-15T10:00:00Z', userId: 'user456' }
|
|
78
|
+
|
|
79
|
+
// Generate token when user clicks "Join" near scheduled time
|
|
80
|
+
const response = await fetch('/api/join-meeting', {
|
|
81
|
+
method: 'POST',
|
|
82
|
+
body: JSON.stringify({ meetingId: 'abc123' })
|
|
83
|
+
});
|
|
84
|
+
const { authToken } = await response.json();
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### "Recording not starting"
|
|
88
|
+
|
|
89
|
+
**Cause:** Preset lacks recording permissions, no active session, or API call from client
|
|
90
|
+
**Solution:**
|
|
91
|
+
Verify preset has `canRecord: true` and `canStartStopRecording: true`, ensure session is active (at least one participant), make recording API calls server-side only
|
|
92
|
+
|
|
93
|
+
## Limits
|
|
94
|
+
|
|
95
|
+
| Resource | Limit |
|
|
96
|
+
|----------|-------|
|
|
97
|
+
| Max participants per session | 100 |
|
|
98
|
+
| Max concurrent sessions per App | 1000 |
|
|
99
|
+
| Max recording duration | 6 hours |
|
|
100
|
+
| Max meeting duration | 24 hours |
|
|
101
|
+
| Max chat message length | 4000 characters |
|
|
102
|
+
| Max preset name length | 64 characters |
|
|
103
|
+
| Max meeting title length | 256 characters |
|
|
104
|
+
| Max participant name length | 256 characters |
|
|
105
|
+
| Token expiration | 24 hours (default) |
|
|
106
|
+
| WebRTC ports required | UDP 1024-65535 |
|
|
107
|
+
|
|
108
|
+
## Network Requirements
|
|
109
|
+
|
|
110
|
+
### Firewall Rules
|
|
111
|
+
Allow outbound UDP/TCP to:
|
|
112
|
+
- `*.cloudflare.com` ports 443, 80
|
|
113
|
+
- UDP ports 1024-65535 (WebRTC media)
|
|
114
|
+
|
|
115
|
+
### TURN Service
|
|
116
|
+
Enable for users behind restrictive firewalls/proxies:
|
|
117
|
+
```jsonc
|
|
118
|
+
// wrangler.jsonc
|
|
119
|
+
{
|
|
120
|
+
"vars": {
|
|
121
|
+
"TURN_SERVICE_ID": "your_turn_service_id"
|
|
122
|
+
}
|
|
123
|
+
// Set secret: wrangler secret put TURN_SERVICE_TOKEN
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
TURN automatically configured in SDK when enabled in account.
|
|
128
|
+
|
|
129
|
+
## Debugging Tips
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
// Check devices
|
|
133
|
+
const devices = await meeting.self.getAllDevices();
|
|
134
|
+
meeting.self.on('deviceListUpdate', ({ added, removed, devices }) => console.log('Devices:', { added, removed, devices }));
|
|
135
|
+
|
|
136
|
+
// Monitor participants
|
|
137
|
+
meeting.participants.joined.on('participantJoined', (p) => console.log(`${p.name} joined:`, { id: p.id, userId: p.userId, audioEnabled: p.audioEnabled, videoEnabled: p.videoEnabled }));
|
|
138
|
+
|
|
139
|
+
// Check room state
|
|
140
|
+
meeting.self.on('roomJoined', () => console.log('Room:', { meetingId: meeting.meta.meetingId, meetingTitle: meeting.meta.meetingTitle, participantCount: meeting.participants.joined.size() + 1, audioEnabled: meeting.self.audioEnabled, videoEnabled: meeting.self.videoEnabled }));
|
|
141
|
+
|
|
142
|
+
// Log all events
|
|
143
|
+
['roomJoined', 'audioUpdate', 'videoUpdate', 'screenShareUpdate', 'deviceUpdate', 'deviceListUpdate'].forEach(event => meeting.self.on(event, (data) => console.log(`[self] ${event}:`, data)));
|
|
144
|
+
['participantJoined', 'participantLeft'].forEach(event => meeting.participants.joined.on(event, (data) => console.log(`[participants] ${event}:`, data)));
|
|
145
|
+
meeting.chat.on('chatUpdate', (data) => console.log('[chat] chatUpdate:', data));
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Security & Performance
|
|
149
|
+
|
|
150
|
+
### Security: Do NOT
|
|
151
|
+
- Expose `CLOUDFLARE_API_TOKEN` in client code, hardcode credentials in frontend
|
|
152
|
+
- Reuse participant tokens, store tokens in localStorage without encryption
|
|
153
|
+
- Allow client-side meeting creation
|
|
154
|
+
|
|
155
|
+
### Security: DO
|
|
156
|
+
- Generate tokens server-side only, use HTTPS, implement rate limiting
|
|
157
|
+
- Validate user auth before generating tokens, use `custom_participant_id` to map to your user system
|
|
158
|
+
- Set appropriate preset permissions per user role, rotate API tokens regularly
|
|
159
|
+
|
|
160
|
+
### Performance
|
|
161
|
+
- **CPU**: Lower video resolution/frameRate, disable video for audio-only, use `meeting.participants.active` for large meetings, implement virtual scrolling
|
|
162
|
+
- **Bandwidth**: Set max resolution in `mediaConfiguration`, disable screenshare audio if unneeded, use audio-only mode, implement adaptive bitrate
|
|
163
|
+
- **Memory**: Clean up event listeners on unmount, call `meeting.leave()` when done, don't store large participant arrays
|
|
164
|
+
|
|
165
|
+
## In This Reference
|
|
166
|
+
- [README.md](README.md) - Overview, core concepts, quick start
|
|
167
|
+
- [configuration.md](configuration.md) - SDK config, presets, wrangler setup
|
|
168
|
+
- [api.md](api.md) - Client SDK APIs, REST endpoints
|
|
169
|
+
- [patterns.md](patterns.md) - Common patterns, React hooks, backend integration
|