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.
Files changed (410) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +67 -0
  3. package/bin/setup.mjs +103 -0
  4. package/dist/auth-flow.d.ts +15 -0
  5. package/dist/auth-flow.d.ts.map +1 -0
  6. package/dist/auth-flow.js +90 -0
  7. package/dist/auth-flow.js.map +1 -0
  8. package/dist/client.d.ts +18 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +47 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/config.d.ts +13 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +10 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/index.d.ts +24 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +109 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/oauth.d.ts +44 -0
  21. package/dist/oauth.d.ts.map +1 -0
  22. package/dist/oauth.js +135 -0
  23. package/dist/oauth.js.map +1 -0
  24. package/dist/proxy.d.ts +29 -0
  25. package/dist/proxy.d.ts.map +1 -0
  26. package/dist/proxy.js +39 -0
  27. package/dist/proxy.js.map +1 -0
  28. package/dist/servers.d.ts +19 -0
  29. package/dist/servers.d.ts.map +1 -0
  30. package/dist/servers.js +40 -0
  31. package/dist/servers.js.map +1 -0
  32. package/dist/token-store.d.ts +23 -0
  33. package/dist/token-store.d.ts.map +1 -0
  34. package/dist/token-store.js +47 -0
  35. package/dist/token-store.js.map +1 -0
  36. package/package.json +67 -0
  37. package/skills/agents-sdk/SKILL.md +221 -0
  38. package/skills/agents-sdk/references/browse-the-web.md +63 -0
  39. package/skills/agents-sdk/references/callable.md +92 -0
  40. package/skills/agents-sdk/references/client-sdk.md +110 -0
  41. package/skills/agents-sdk/references/codemode.md +110 -0
  42. package/skills/agents-sdk/references/configuration.md +72 -0
  43. package/skills/agents-sdk/references/durable-execution.md +51 -0
  44. package/skills/agents-sdk/references/email.md +146 -0
  45. package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
  46. package/skills/agents-sdk/references/mcp.md +188 -0
  47. package/skills/agents-sdk/references/observability.md +44 -0
  48. package/skills/agents-sdk/references/queue-retries.md +79 -0
  49. package/skills/agents-sdk/references/routing.md +75 -0
  50. package/skills/agents-sdk/references/server-driven-messages.md +63 -0
  51. package/skills/agents-sdk/references/state-scheduling.md +171 -0
  52. package/skills/agents-sdk/references/streaming-chat.md +198 -0
  53. package/skills/agents-sdk/references/think.md +112 -0
  54. package/skills/agents-sdk/references/voice.md +68 -0
  55. package/skills/agents-sdk/references/webhooks-push.md +86 -0
  56. package/skills/agents-sdk/references/workflows.md +132 -0
  57. package/skills/cloudflare/SKILL.md +248 -0
  58. package/skills/cloudflare/references/agents-sdk/README.md +89 -0
  59. package/skills/cloudflare/references/agents-sdk/api.md +190 -0
  60. package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
  61. package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
  62. package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
  63. package/skills/cloudflare/references/ai-gateway/README.md +175 -0
  64. package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
  65. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
  66. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  67. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
  68. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
  69. package/skills/cloudflare/references/ai-search/README.md +138 -0
  70. package/skills/cloudflare/references/ai-search/api.md +87 -0
  71. package/skills/cloudflare/references/ai-search/configuration.md +88 -0
  72. package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
  73. package/skills/cloudflare/references/ai-search/patterns.md +85 -0
  74. package/skills/cloudflare/references/analytics-engine/README.md +94 -0
  75. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  76. package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
  77. package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
  78. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  79. package/skills/cloudflare/references/api/README.md +66 -0
  80. package/skills/cloudflare/references/api/api.md +204 -0
  81. package/skills/cloudflare/references/api/configuration.md +160 -0
  82. package/skills/cloudflare/references/api/gotchas.md +225 -0
  83. package/skills/cloudflare/references/api/patterns.md +204 -0
  84. package/skills/cloudflare/references/api-shield/README.md +44 -0
  85. package/skills/cloudflare/references/api-shield/api.md +141 -0
  86. package/skills/cloudflare/references/api-shield/configuration.md +192 -0
  87. package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
  88. package/skills/cloudflare/references/api-shield/patterns.md +180 -0
  89. package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
  90. package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
  91. package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
  92. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
  93. package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
  94. package/skills/cloudflare/references/artifacts/README.md +79 -0
  95. package/skills/cloudflare/references/artifacts/api.md +128 -0
  96. package/skills/cloudflare/references/artifacts/configuration.md +92 -0
  97. package/skills/cloudflare/references/bindings/README.md +122 -0
  98. package/skills/cloudflare/references/bindings/api.md +203 -0
  99. package/skills/cloudflare/references/bindings/configuration.md +188 -0
  100. package/skills/cloudflare/references/bindings/gotchas.md +208 -0
  101. package/skills/cloudflare/references/bindings/patterns.md +200 -0
  102. package/skills/cloudflare/references/bot-management/README.md +94 -0
  103. package/skills/cloudflare/references/bot-management/api.md +169 -0
  104. package/skills/cloudflare/references/bot-management/configuration.md +163 -0
  105. package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
  106. package/skills/cloudflare/references/bot-management/patterns.md +182 -0
  107. package/skills/cloudflare/references/browser-rendering/README.md +78 -0
  108. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  109. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  110. package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
  111. package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
  112. package/skills/cloudflare/references/c3/README.md +111 -0
  113. package/skills/cloudflare/references/c3/api.md +71 -0
  114. package/skills/cloudflare/references/c3/configuration.md +81 -0
  115. package/skills/cloudflare/references/c3/gotchas.md +92 -0
  116. package/skills/cloudflare/references/c3/patterns.md +82 -0
  117. package/skills/cloudflare/references/cache-reserve/README.md +147 -0
  118. package/skills/cloudflare/references/cache-reserve/api.md +194 -0
  119. package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
  120. package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
  121. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  122. package/skills/cloudflare/references/containers/README.md +85 -0
  123. package/skills/cloudflare/references/containers/api.md +187 -0
  124. package/skills/cloudflare/references/containers/configuration.md +188 -0
  125. package/skills/cloudflare/references/containers/gotchas.md +178 -0
  126. package/skills/cloudflare/references/containers/patterns.md +202 -0
  127. package/skills/cloudflare/references/cron-triggers/README.md +99 -0
  128. package/skills/cloudflare/references/cron-triggers/api.md +196 -0
  129. package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
  130. package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
  131. package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
  132. package/skills/cloudflare/references/d1/README.md +133 -0
  133. package/skills/cloudflare/references/d1/api.md +196 -0
  134. package/skills/cloudflare/references/d1/configuration.md +191 -0
  135. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  136. package/skills/cloudflare/references/d1/patterns.md +189 -0
  137. package/skills/cloudflare/references/ddos/README.md +41 -0
  138. package/skills/cloudflare/references/ddos/api.md +164 -0
  139. package/skills/cloudflare/references/ddos/configuration.md +93 -0
  140. package/skills/cloudflare/references/ddos/gotchas.md +107 -0
  141. package/skills/cloudflare/references/ddos/patterns.md +174 -0
  142. package/skills/cloudflare/references/do-storage/README.md +75 -0
  143. package/skills/cloudflare/references/do-storage/api.md +102 -0
  144. package/skills/cloudflare/references/do-storage/configuration.md +112 -0
  145. package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
  146. package/skills/cloudflare/references/do-storage/patterns.md +194 -0
  147. package/skills/cloudflare/references/do-storage/testing.md +183 -0
  148. package/skills/cloudflare/references/durable-objects/README.md +185 -0
  149. package/skills/cloudflare/references/durable-objects/api.md +187 -0
  150. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  151. package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
  152. package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
  153. package/skills/cloudflare/references/email-routing/README.md +89 -0
  154. package/skills/cloudflare/references/email-routing/api.md +195 -0
  155. package/skills/cloudflare/references/email-routing/configuration.md +186 -0
  156. package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
  157. package/skills/cloudflare/references/email-routing/patterns.md +229 -0
  158. package/skills/cloudflare/references/email-workers/README.md +151 -0
  159. package/skills/cloudflare/references/email-workers/api.md +237 -0
  160. package/skills/cloudflare/references/email-workers/configuration.md +112 -0
  161. package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
  162. package/skills/cloudflare/references/email-workers/patterns.md +102 -0
  163. package/skills/cloudflare/references/flagship/README.md +59 -0
  164. package/skills/cloudflare/references/flagship/api.md +390 -0
  165. package/skills/cloudflare/references/flagship/configuration.md +202 -0
  166. package/skills/cloudflare/references/flagship/gotchas.md +178 -0
  167. package/skills/cloudflare/references/flagship/patterns.md +469 -0
  168. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  169. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  170. package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
  171. package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
  172. package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
  173. package/skills/cloudflare/references/hyperdrive/README.md +82 -0
  174. package/skills/cloudflare/references/hyperdrive/api.md +143 -0
  175. package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
  176. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  177. package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
  178. package/skills/cloudflare/references/images/README.md +61 -0
  179. package/skills/cloudflare/references/images/api.md +96 -0
  180. package/skills/cloudflare/references/images/configuration.md +211 -0
  181. package/skills/cloudflare/references/images/gotchas.md +99 -0
  182. package/skills/cloudflare/references/images/patterns.md +115 -0
  183. package/skills/cloudflare/references/kv/README.md +89 -0
  184. package/skills/cloudflare/references/kv/api.md +160 -0
  185. package/skills/cloudflare/references/kv/configuration.md +144 -0
  186. package/skills/cloudflare/references/kv/gotchas.md +131 -0
  187. package/skills/cloudflare/references/kv/patterns.md +196 -0
  188. package/skills/cloudflare/references/miniflare/README.md +105 -0
  189. package/skills/cloudflare/references/miniflare/api.md +187 -0
  190. package/skills/cloudflare/references/miniflare/configuration.md +173 -0
  191. package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
  192. package/skills/cloudflare/references/miniflare/patterns.md +181 -0
  193. package/skills/cloudflare/references/network-interconnect/README.md +99 -0
  194. package/skills/cloudflare/references/network-interconnect/api.md +199 -0
  195. package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
  196. package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
  197. package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
  198. package/skills/cloudflare/references/observability/README.md +88 -0
  199. package/skills/cloudflare/references/observability/api.md +164 -0
  200. package/skills/cloudflare/references/observability/configuration.md +169 -0
  201. package/skills/cloudflare/references/observability/gotchas.md +115 -0
  202. package/skills/cloudflare/references/observability/patterns.md +105 -0
  203. package/skills/cloudflare/references/pages/README.md +88 -0
  204. package/skills/cloudflare/references/pages/api.md +204 -0
  205. package/skills/cloudflare/references/pages/configuration.md +201 -0
  206. package/skills/cloudflare/references/pages/gotchas.md +203 -0
  207. package/skills/cloudflare/references/pages/patterns.md +204 -0
  208. package/skills/cloudflare/references/pages-functions/README.md +98 -0
  209. package/skills/cloudflare/references/pages-functions/api.md +143 -0
  210. package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
  211. package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
  212. package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
  213. package/skills/cloudflare/references/pipelines/README.md +90 -0
  214. package/skills/cloudflare/references/pipelines/api.md +124 -0
  215. package/skills/cloudflare/references/pipelines/configuration.md +155 -0
  216. package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
  217. package/skills/cloudflare/references/pipelines/patterns.md +130 -0
  218. package/skills/cloudflare/references/pulumi/README.md +100 -0
  219. package/skills/cloudflare/references/pulumi/api.md +200 -0
  220. package/skills/cloudflare/references/pulumi/configuration.md +198 -0
  221. package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
  222. package/skills/cloudflare/references/pulumi/patterns.md +191 -0
  223. package/skills/cloudflare/references/queues/README.md +96 -0
  224. package/skills/cloudflare/references/queues/api.md +206 -0
  225. package/skills/cloudflare/references/queues/configuration.md +144 -0
  226. package/skills/cloudflare/references/queues/gotchas.md +206 -0
  227. package/skills/cloudflare/references/queues/patterns.md +220 -0
  228. package/skills/cloudflare/references/r2/README.md +95 -0
  229. package/skills/cloudflare/references/r2/api.md +200 -0
  230. package/skills/cloudflare/references/r2/configuration.md +165 -0
  231. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  232. package/skills/cloudflare/references/r2/patterns.md +193 -0
  233. package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
  234. package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
  235. package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
  236. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
  237. package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
  238. package/skills/cloudflare/references/r2-sql/README.md +64 -0
  239. package/skills/cloudflare/references/r2-sql/api.md +121 -0
  240. package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
  241. package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
  242. package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
  243. package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
  244. package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
  245. package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
  246. package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
  247. package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
  248. package/skills/cloudflare/references/realtimekit/README.md +113 -0
  249. package/skills/cloudflare/references/realtimekit/api.md +212 -0
  250. package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
  251. package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
  252. package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
  253. package/skills/cloudflare/references/sandbox/README.md +96 -0
  254. package/skills/cloudflare/references/sandbox/api.md +198 -0
  255. package/skills/cloudflare/references/sandbox/configuration.md +143 -0
  256. package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
  257. package/skills/cloudflare/references/sandbox/patterns.md +201 -0
  258. package/skills/cloudflare/references/secrets-store/README.md +74 -0
  259. package/skills/cloudflare/references/secrets-store/api.md +200 -0
  260. package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
  261. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  262. package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
  263. package/skills/cloudflare/references/smart-placement/README.md +138 -0
  264. package/skills/cloudflare/references/smart-placement/api.md +183 -0
  265. package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
  266. package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
  267. package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
  268. package/skills/cloudflare/references/snippets/README.md +68 -0
  269. package/skills/cloudflare/references/snippets/api.md +198 -0
  270. package/skills/cloudflare/references/snippets/configuration.md +227 -0
  271. package/skills/cloudflare/references/snippets/gotchas.md +86 -0
  272. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  273. package/skills/cloudflare/references/spectrum/README.md +52 -0
  274. package/skills/cloudflare/references/spectrum/api.md +181 -0
  275. package/skills/cloudflare/references/spectrum/configuration.md +194 -0
  276. package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
  277. package/skills/cloudflare/references/spectrum/patterns.md +196 -0
  278. package/skills/cloudflare/references/static-assets/README.md +65 -0
  279. package/skills/cloudflare/references/static-assets/api.md +199 -0
  280. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  281. package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
  282. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  283. package/skills/cloudflare/references/stream/README.md +114 -0
  284. package/skills/cloudflare/references/stream/api-live.md +195 -0
  285. package/skills/cloudflare/references/stream/api.md +199 -0
  286. package/skills/cloudflare/references/stream/configuration.md +141 -0
  287. package/skills/cloudflare/references/stream/gotchas.md +130 -0
  288. package/skills/cloudflare/references/stream/patterns.md +184 -0
  289. package/skills/cloudflare/references/tail-workers/README.md +89 -0
  290. package/skills/cloudflare/references/tail-workers/api.md +200 -0
  291. package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
  292. package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
  293. package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
  294. package/skills/cloudflare/references/terraform/README.md +102 -0
  295. package/skills/cloudflare/references/terraform/api.md +178 -0
  296. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  297. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  298. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  299. package/skills/cloudflare/references/tunnel/README.md +129 -0
  300. package/skills/cloudflare/references/tunnel/api.md +193 -0
  301. package/skills/cloudflare/references/tunnel/configuration.md +157 -0
  302. package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
  303. package/skills/cloudflare/references/tunnel/networking.md +168 -0
  304. package/skills/cloudflare/references/tunnel/patterns.md +192 -0
  305. package/skills/cloudflare/references/turn/README.md +82 -0
  306. package/skills/cloudflare/references/turn/api.md +239 -0
  307. package/skills/cloudflare/references/turn/configuration.md +179 -0
  308. package/skills/cloudflare/references/turn/gotchas.md +231 -0
  309. package/skills/cloudflare/references/turn/patterns.md +213 -0
  310. package/skills/cloudflare/references/turnstile/README.md +99 -0
  311. package/skills/cloudflare/references/turnstile/api.md +240 -0
  312. package/skills/cloudflare/references/turnstile/configuration.md +222 -0
  313. package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
  314. package/skills/cloudflare/references/turnstile/patterns.md +193 -0
  315. package/skills/cloudflare/references/vectorize/README.md +133 -0
  316. package/skills/cloudflare/references/vectorize/api.md +88 -0
  317. package/skills/cloudflare/references/vectorize/configuration.md +88 -0
  318. package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
  319. package/skills/cloudflare/references/vectorize/patterns.md +90 -0
  320. package/skills/cloudflare/references/waf/README.md +113 -0
  321. package/skills/cloudflare/references/waf/api.md +202 -0
  322. package/skills/cloudflare/references/waf/configuration.md +203 -0
  323. package/skills/cloudflare/references/waf/gotchas.md +204 -0
  324. package/skills/cloudflare/references/waf/patterns.md +197 -0
  325. package/skills/cloudflare/references/web-analytics/README.md +141 -0
  326. package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
  327. package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
  328. package/skills/cloudflare/references/web-analytics/integration.md +60 -0
  329. package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
  330. package/skills/cloudflare/references/workerd/README.md +78 -0
  331. package/skills/cloudflare/references/workerd/api.md +185 -0
  332. package/skills/cloudflare/references/workerd/configuration.md +183 -0
  333. package/skills/cloudflare/references/workerd/gotchas.md +139 -0
  334. package/skills/cloudflare/references/workerd/patterns.md +192 -0
  335. package/skills/cloudflare/references/workers/README.md +108 -0
  336. package/skills/cloudflare/references/workers/api.md +195 -0
  337. package/skills/cloudflare/references/workers/configuration.md +185 -0
  338. package/skills/cloudflare/references/workers/frameworks.md +197 -0
  339. package/skills/cloudflare/references/workers/gotchas.md +137 -0
  340. package/skills/cloudflare/references/workers/patterns.md +198 -0
  341. package/skills/cloudflare/references/workers-ai/README.md +197 -0
  342. package/skills/cloudflare/references/workers-ai/api.md +112 -0
  343. package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
  344. package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
  345. package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
  346. package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
  347. package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
  348. package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
  349. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  350. package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
  351. package/skills/cloudflare/references/workers-playground/README.md +127 -0
  352. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  353. package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
  354. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  355. package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
  356. package/skills/cloudflare/references/workers-vpc/README.md +127 -0
  357. package/skills/cloudflare/references/workers-vpc/api.md +202 -0
  358. package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
  359. package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
  360. package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
  361. package/skills/cloudflare/references/workflows/README.md +77 -0
  362. package/skills/cloudflare/references/workflows/api.md +218 -0
  363. package/skills/cloudflare/references/workflows/configuration.md +152 -0
  364. package/skills/cloudflare/references/workflows/gotchas.md +90 -0
  365. package/skills/cloudflare/references/workflows/patterns.md +175 -0
  366. package/skills/cloudflare/references/wrangler/README.md +135 -0
  367. package/skills/cloudflare/references/wrangler/api.md +188 -0
  368. package/skills/cloudflare/references/wrangler/configuration.md +197 -0
  369. package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
  370. package/skills/cloudflare/references/wrangler/patterns.md +209 -0
  371. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
  372. package/skills/cloudflare/references/zaraz/README.md +111 -0
  373. package/skills/cloudflare/references/zaraz/api.md +112 -0
  374. package/skills/cloudflare/references/zaraz/configuration.md +90 -0
  375. package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
  376. package/skills/cloudflare/references/zaraz/patterns.md +74 -0
  377. package/skills/cloudflare-email-service/SKILL.md +103 -0
  378. package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
  379. package/skills/cloudflare-email-service/references/deliverability.md +285 -0
  380. package/skills/cloudflare-email-service/references/rest-api.md +184 -0
  381. package/skills/cloudflare-email-service/references/routing.md +199 -0
  382. package/skills/cloudflare-email-service/references/sending.md +252 -0
  383. package/skills/cloudflare-one/SKILL.md +176 -0
  384. package/skills/cloudflare-one-migrations/SKILL.md +110 -0
  385. package/skills/durable-objects/SKILL.md +186 -0
  386. package/skills/durable-objects/references/rules.md +295 -0
  387. package/skills/durable-objects/references/testing.md +264 -0
  388. package/skills/durable-objects/references/workers.md +346 -0
  389. package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
  390. package/skills/sandbox-next/SKILL.md +91 -0
  391. package/skills/sandbox-next/references/api-quick-ref.md +94 -0
  392. package/skills/sandbox-next/references/examples.md +15 -0
  393. package/skills/sandbox-stable/SKILL.md +110 -0
  394. package/skills/turnstile-spin/README.md +51 -0
  395. package/skills/turnstile-spin/SKILL.md +330 -0
  396. package/skills/turnstile-spin/references/astro.md +199 -0
  397. package/skills/turnstile-spin/references/hugo.md +114 -0
  398. package/skills/turnstile-spin/references/nextjs-app.md +261 -0
  399. package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
  400. package/skills/turnstile-spin/references/sveltekit.md +191 -0
  401. package/skills/turnstile-spin/references/vanilla-html.md +157 -0
  402. package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
  403. package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
  404. package/skills/turnstile-spin/scripts/validate.sh +137 -0
  405. package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
  406. package/skills/turnstile-spin/tests/validation.md +62 -0
  407. package/skills/workers-best-practices/SKILL.md +127 -0
  408. package/skills/workers-best-practices/references/review.md +174 -0
  409. package/skills/workers-best-practices/references/rules.md +467 -0
  410. package/skills/wrangler/SKILL.md +922 -0
@@ -0,0 +1,196 @@
1
+ # KV Patterns & Best Practices
2
+
3
+ ## Multi-Tier Caching
4
+
5
+ ```typescript
6
+ // Memory → KV → Origin (3-tier cache)
7
+ const memoryCache = new Map<string, { data: any; expires: number }>();
8
+
9
+ async function getCached(env: Env, key: string): Promise<any> {
10
+ const now = Date.now();
11
+
12
+ // L1: Memory cache (fastest)
13
+ const cached = memoryCache.get(key);
14
+ if (cached && cached.expires > now) {
15
+ return cached.data;
16
+ }
17
+
18
+ // L2: KV cache (fast)
19
+ const kvValue = await env.CACHE.get(key, "json");
20
+ if (kvValue) {
21
+ memoryCache.set(key, { data: kvValue, expires: now + 60000 }); // 1min in memory
22
+ return kvValue;
23
+ }
24
+
25
+ // L3: Origin (slow)
26
+ const origin = await fetch(`https://api.example.com/${key}`).then(r => r.json());
27
+
28
+ // Backfill caches
29
+ await env.CACHE.put(key, JSON.stringify(origin), { expirationTtl: 300 }); // 5min in KV
30
+ memoryCache.set(key, { data: origin, expires: now + 60000 });
31
+
32
+ return origin;
33
+ }
34
+ ```
35
+
36
+ ## API Response Caching
37
+
38
+ ```typescript
39
+ async function getCachedData(env: Env, key: string, fetcher: () => Promise<any>): Promise<any> {
40
+ const cached = await env.MY_KV.get(key, "json");
41
+ if (cached) return cached;
42
+
43
+ const data = await fetcher();
44
+ await env.MY_KV.put(key, JSON.stringify(data), { expirationTtl: 300 });
45
+ return data;
46
+ }
47
+
48
+ const apiData = await getCachedData(
49
+ env,
50
+ "cache:users",
51
+ () => fetch("https://api.example.com/users").then(r => r.json())
52
+ );
53
+ ```
54
+
55
+ ## Session Management
56
+
57
+ ```typescript
58
+ interface Session { userId: string; expiresAt: number; }
59
+
60
+ async function createSession(env: Env, userId: string): Promise<string> {
61
+ const sessionId = crypto.randomUUID();
62
+ const expiresAt = Date.now() + (24 * 60 * 60 * 1000);
63
+
64
+ await env.SESSIONS.put(
65
+ `session:${sessionId}`,
66
+ JSON.stringify({ userId, expiresAt }),
67
+ { expirationTtl: 86400, metadata: { createdAt: Date.now() } }
68
+ );
69
+
70
+ return sessionId;
71
+ }
72
+
73
+ async function getSession(env: Env, sessionId: string): Promise<Session | null> {
74
+ const data = await env.SESSIONS.get<Session>(`session:${sessionId}`, "json");
75
+ if (!data || data.expiresAt < Date.now()) return null;
76
+ return data;
77
+ }
78
+ ```
79
+
80
+ ## Coalesce Cold Keys
81
+
82
+ ```typescript
83
+ // ❌ BAD: Many individual keys
84
+ await env.KV.put("user:123:name", "John");
85
+ await env.KV.put("user:123:email", "john@example.com");
86
+
87
+ // ✅ GOOD: Single coalesced object
88
+ await env.USERS.put("user:123:profile", JSON.stringify({
89
+ name: "John",
90
+ email: "john@example.com",
91
+ role: "admin"
92
+ }));
93
+
94
+ // Benefits: Hot key cache, single read, reduced operations
95
+ // Trade-off: Harder to update individual fields
96
+ ```
97
+
98
+ ## Prefix-Based Namespacing
99
+
100
+ ```typescript
101
+ // Logical partitioning within single namespace
102
+ const PREFIXES = {
103
+ users: "user:",
104
+ sessions: "session:",
105
+ cache: "cache:",
106
+ features: "feature:"
107
+ } as const;
108
+
109
+ // Write with prefix
110
+ async function setUser(env: Env, id: string, data: any) {
111
+ await env.KV.put(`${PREFIXES.users}${id}`, JSON.stringify(data));
112
+ }
113
+
114
+ // Read with prefix
115
+ async function getUser(env: Env, id: string) {
116
+ return await env.KV.get(`${PREFIXES.users}${id}`, "json");
117
+ }
118
+
119
+ // List by prefix
120
+ async function listUserIds(env: Env): Promise<string[]> {
121
+ const result = await env.KV.list({ prefix: PREFIXES.users });
122
+ return result.keys.map(k => k.name.replace(PREFIXES.users, ""));
123
+ }
124
+
125
+ // Example hierarchy
126
+ "user:123:profile"
127
+ "user:123:settings"
128
+ "cache:api:users"
129
+ "session:abc-def"
130
+ "feature:flags:beta"
131
+ ```
132
+
133
+ ## Metadata Versioning
134
+
135
+ ```typescript
136
+ interface VersionedData {
137
+ version: number;
138
+ data: any;
139
+ }
140
+
141
+ async function migrateIfNeeded(env: Env, key: string) {
142
+ const result = await env.DATA.getWithMetadata(key, "json");
143
+
144
+ if (!result.value) return null;
145
+
146
+ const currentVersion = result.metadata?.version || 1;
147
+ const targetVersion = 2;
148
+
149
+ if (currentVersion < targetVersion) {
150
+ // Migrate data format
151
+ const migrated = migrate(result.value, currentVersion, targetVersion);
152
+
153
+ // Store with new version
154
+ await env.DATA.put(key, JSON.stringify(migrated), {
155
+ metadata: { version: targetVersion, migratedAt: Date.now() }
156
+ });
157
+
158
+ return migrated;
159
+ }
160
+
161
+ return result.value;
162
+ }
163
+
164
+ function migrate(data: any, from: number, to: number): any {
165
+ if (from === 1 && to === 2) {
166
+ // V1 → V2: Rename field
167
+ return { ...data, userName: data.name };
168
+ }
169
+ return data;
170
+ }
171
+ ```
172
+
173
+ ## Error Boundary Pattern
174
+
175
+ ```typescript
176
+ // Resilient get with fallback
177
+ async function resilientGet<T>(
178
+ env: Env,
179
+ key: string,
180
+ fallback: T
181
+ ): Promise<T> {
182
+ try {
183
+ const value = await env.KV.get<T>(key, "json");
184
+ return value ?? fallback;
185
+ } catch (err) {
186
+ console.error(`KV error for ${key}:`, err);
187
+ return fallback;
188
+ }
189
+ }
190
+
191
+ // Usage
192
+ const config = await resilientGet(env, "config:app", {
193
+ theme: "light",
194
+ maxItems: 10
195
+ });
196
+ ```
@@ -0,0 +1,105 @@
1
+ # Miniflare
2
+
3
+ Local simulator for Cloudflare Workers development/testing. Runs Workers in workerd sandbox implementing runtime APIs - no internet required.
4
+
5
+ ## Features
6
+
7
+ - Full-featured: KV, Durable Objects, R2, D1, WebSockets, Queues
8
+ - Fully-local: test without internet, instant reload
9
+ - TypeScript-native: detailed logging, source maps
10
+ - Advanced testing: dispatch events without HTTP, simulate Worker connections
11
+
12
+ ## When to Use
13
+
14
+ **Decision tree for testing Workers:**
15
+
16
+ ```
17
+ Need to test Workers?
18
+
19
+ ├─ Unit tests for business logic only?
20
+ │ └─ getPlatformProxy (Vitest/Jest) → [patterns.md](./patterns.md#getplatformproxy)
21
+ │ Fast, no HTTP, direct binding access
22
+
23
+ ├─ Integration tests with full runtime?
24
+ │ ├─ Single Worker?
25
+ │ │ └─ Miniflare API → [Quick Start](#quick-start)
26
+ │ │ Full control, programmatic access
27
+ │ │
28
+ │ ├─ Multiple Workers + service bindings?
29
+ │ │ └─ Miniflare workers array → [configuration.md](./configuration.md#multiple-workers)
30
+ │ │ Shared storage, inter-worker calls
31
+ │ │
32
+ │ └─ Vitest test runner integration?
33
+ │ └─ vitest-pool-workers → [patterns.md](./patterns.md#vitest-pool-workers)
34
+ │ Full Workers env in Vitest
35
+
36
+ └─ Local dev server?
37
+ └─ wrangler dev (not Miniflare)
38
+ Hot reload, automatic config
39
+ ```
40
+
41
+ **Use Miniflare for:**
42
+ - Integration tests with full Worker runtime
43
+ - Testing bindings/storage locally
44
+ - Multiple Workers with service bindings
45
+ - Programmatic event dispatch (fetch, queue, scheduled)
46
+
47
+ **Use getPlatformProxy for:**
48
+ - Fast unit tests of business logic
49
+ - Testing without HTTP overhead
50
+ - Vitest/Jest environments
51
+
52
+ **Use Wrangler for:**
53
+ - Local development workflow
54
+ - Production deployments
55
+
56
+ ## Setup
57
+
58
+ ```bash
59
+ npm i -D miniflare
60
+ ```
61
+
62
+ Requires ES modules in `package.json`:
63
+ ```json
64
+ {"type": "module"}
65
+ ```
66
+
67
+ ## Quick Start
68
+
69
+ ```js
70
+ import { Miniflare } from "miniflare";
71
+
72
+ const mf = new Miniflare({
73
+ modules: true,
74
+ script: `
75
+ export default {
76
+ async fetch(request, env, ctx) {
77
+ return new Response("Hello Miniflare!");
78
+ }
79
+ }
80
+ `,
81
+ });
82
+
83
+ const res = await mf.dispatchFetch("http://localhost:8787/");
84
+ console.log(await res.text()); // Hello Miniflare!
85
+ await mf.dispose();
86
+ ```
87
+
88
+ ## Reading Order
89
+
90
+ **New to Miniflare?** Start here:
91
+ 1. [Quick Start](#quick-start) - Running in 2 minutes
92
+ 2. [When to Use](#when-to-use) - Choose your testing approach
93
+ 3. [patterns.md](./patterns.md) - Testing patterns (getPlatformProxy, Vitest, node:test)
94
+ 4. [configuration.md](./configuration.md) - Configure bindings, storage, multiple workers
95
+
96
+ **Troubleshooting:**
97
+ - [gotchas.md](./gotchas.md) - Common errors and debugging
98
+
99
+ **API reference:**
100
+ - [api.md](./api.md) - Complete method reference
101
+
102
+ ## See Also
103
+ - [wrangler](../wrangler/) - CLI tool that embeds Miniflare for `wrangler dev`
104
+ - [workerd](../workerd/) - Runtime that powers Miniflare
105
+ - [workers](../workers/) - Workers runtime API documentation
@@ -0,0 +1,187 @@
1
+ # Programmatic API
2
+
3
+ ## Miniflare Class
4
+
5
+ ```typescript
6
+ class Miniflare {
7
+ constructor(options: MiniflareOptions);
8
+
9
+ // Lifecycle
10
+ ready: Promise<URL>; // Resolves when server ready, returns URL
11
+ dispose(): Promise<void>; // Cleanup resources
12
+ setOptions(options: MiniflareOptions): Promise<void>; // Reload config
13
+
14
+ // Event dispatching
15
+ dispatchFetch(url: string | URL | Request, init?: RequestInit): Promise<Response>;
16
+ getWorker(name?: string): Promise<Worker>;
17
+
18
+ // Bindings access
19
+ getBindings<Bindings = Record<string, unknown>>(name?: string): Promise<Bindings>;
20
+ getCf(name?: string): Promise<IncomingRequestCfProperties | undefined>;
21
+ getKVNamespace(name: string): Promise<KVNamespace>;
22
+ getR2Bucket(name: string): Promise<R2Bucket>;
23
+ getDurableObjectNamespace(name: string): Promise<DurableObjectNamespace>;
24
+ getDurableObjectStorage(id: DurableObjectId): Promise<DurableObjectStorage>;
25
+ getD1Database(name: string): Promise<D1Database>;
26
+ getCaches(): Promise<CacheStorage>;
27
+ getQueueProducer(name: string): Promise<QueueProducer>;
28
+
29
+ // Debugging
30
+ getInspectorURL(): Promise<URL>; // Chrome DevTools inspector URL
31
+ }
32
+ ```
33
+
34
+ ## Event Dispatching
35
+
36
+ **Fetch (no HTTP server):**
37
+ ```js
38
+ const res = await mf.dispatchFetch("http://localhost:8787/path", {
39
+ method: "POST",
40
+ headers: { "Authorization": "Bearer token" },
41
+ body: JSON.stringify({ data: "value" }),
42
+ });
43
+ ```
44
+
45
+ **Custom Host routing:**
46
+ ```js
47
+ const res = await mf.dispatchFetch("http://localhost:8787/", {
48
+ headers: { "Host": "api.example.com" },
49
+ });
50
+ ```
51
+
52
+ **Scheduled:**
53
+ ```js
54
+ const worker = await mf.getWorker();
55
+ const result = await worker.scheduled({ cron: "30 * * * *" });
56
+ // result: { outcome: "ok", noRetry: false }
57
+ ```
58
+
59
+ **Queue:**
60
+ ```js
61
+ const worker = await mf.getWorker();
62
+ const result = await worker.queue("queue-name", [
63
+ { id: "msg1", timestamp: new Date(), body: "data", attempts: 1 },
64
+ ]);
65
+ // result: { outcome: "ok", retryAll: false, ackAll: false, ... }
66
+ ```
67
+
68
+ ## Bindings Access
69
+
70
+ **Environment variables:**
71
+ ```js
72
+ // Basic usage
73
+ const bindings = await mf.getBindings();
74
+ console.log(bindings.SECRET_KEY);
75
+
76
+ // With type safety (recommended):
77
+ interface Env {
78
+ SECRET_KEY: string;
79
+ API_URL: string;
80
+ KV: KVNamespace;
81
+ }
82
+ const env = await mf.getBindings<Env>();
83
+ env.SECRET_KEY; // string (typed!)
84
+ env.KV.get("key"); // KVNamespace methods available
85
+ ```
86
+
87
+ **Request.cf object:**
88
+ ```js
89
+ const cf = await mf.getCf();
90
+ console.log(cf?.colo); // "DFW"
91
+ console.log(cf?.country); // "US"
92
+ ```
93
+
94
+ **KV:**
95
+ ```js
96
+ const ns = await mf.getKVNamespace("TEST_NAMESPACE");
97
+ await ns.put("key", "value");
98
+ const value = await ns.get("key");
99
+ ```
100
+
101
+ **R2:**
102
+ ```js
103
+ const bucket = await mf.getR2Bucket("BUCKET");
104
+ await bucket.put("file.txt", "content");
105
+ const object = await bucket.get("file.txt");
106
+ ```
107
+
108
+ **Durable Objects:**
109
+ ```js
110
+ const ns = await mf.getDurableObjectNamespace("COUNTER");
111
+ const id = ns.idFromName("test");
112
+ const stub = ns.get(id);
113
+ const res = await stub.fetch("http://localhost/");
114
+
115
+ // Access storage directly:
116
+ const storage = await mf.getDurableObjectStorage(id);
117
+ await storage.put("key", "value");
118
+ ```
119
+
120
+ **D1:**
121
+ ```js
122
+ const db = await mf.getD1Database("DB");
123
+ await db.exec(`CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)`);
124
+ await db.prepare("INSERT INTO users (name) VALUES (?)").bind("Alice").run();
125
+ ```
126
+
127
+ **Cache:**
128
+ ```js
129
+ const caches = await mf.getCaches();
130
+ const defaultCache = caches.default;
131
+ await defaultCache.put("http://example.com", new Response("cached"));
132
+ ```
133
+
134
+ **Queue producer:**
135
+ ```js
136
+ const producer = await mf.getQueueProducer("QUEUE");
137
+ await producer.send({ body: "message data" });
138
+ ```
139
+
140
+ ## Lifecycle
141
+
142
+ **Reload:**
143
+ ```js
144
+ await mf.setOptions({
145
+ scriptPath: "worker.js",
146
+ bindings: { VERSION: "2.0" },
147
+ });
148
+ ```
149
+
150
+ **Watch (manual):**
151
+ ```js
152
+ import { watch } from "fs";
153
+
154
+ const config = { scriptPath: "worker.js" };
155
+ const mf = new Miniflare(config);
156
+
157
+ watch("worker.js", async () => {
158
+ console.log("Reloading...");
159
+ await mf.setOptions(config);
160
+ });
161
+ ```
162
+
163
+ **Cleanup:**
164
+ ```js
165
+ await mf.dispose();
166
+ ```
167
+
168
+ ## Debugging
169
+
170
+ **Inspector URL for DevTools:**
171
+ ```js
172
+ const url = await mf.getInspectorURL();
173
+ console.log(`DevTools: ${url}`);
174
+ // Open in Chrome DevTools for breakpoints, profiling
175
+ ```
176
+
177
+ **Wait for server ready:**
178
+ ```js
179
+ const mf = new Miniflare({ scriptPath: "worker.js" });
180
+ const url = await mf.ready; // Promise<URL>
181
+ console.log(`Server running at ${url}`); // http://127.0.0.1:8787
182
+
183
+ // Note: dispatchFetch() waits automatically, no need to await ready
184
+ const res = await mf.dispatchFetch("http://localhost/"); // Works immediately
185
+ ```
186
+
187
+ See [configuration.md](./configuration.md) for all constructor options.
@@ -0,0 +1,173 @@
1
+ # Configuration
2
+
3
+ ## Script Loading
4
+
5
+ ```js
6
+ // Inline
7
+ new Miniflare({ modules: true, script: `export default { ... }` });
8
+
9
+ // File-based
10
+ new Miniflare({ scriptPath: "worker.js" });
11
+
12
+ // Multi-module
13
+ new Miniflare({
14
+ scriptPath: "src/index.js",
15
+ modules: true,
16
+ modulesRules: [
17
+ { type: "ESModule", include: ["**/*.js"] },
18
+ { type: "Text", include: ["**/*.txt"] },
19
+ ],
20
+ });
21
+ ```
22
+
23
+ ## Compatibility
24
+
25
+ ```js
26
+ new Miniflare({
27
+ compatibilityDate: "2026-01-01", // Use recent date for latest features
28
+ compatibilityFlags: [
29
+ "nodejs_compat", // Node.js APIs (process, Buffer, etc)
30
+ "streams_enable_constructors", // Stream constructors
31
+ ],
32
+ upstream: "https://example.com", // Fallback for unhandled requests
33
+ });
34
+ ```
35
+
36
+ **Critical:** Use `compatibilityDate: "2026-01-01"` or latest to match production runtime. Old dates limit available APIs.
37
+
38
+ ## HTTP Server & Request.cf
39
+
40
+ ```js
41
+ new Miniflare({
42
+ port: 8787, // Default: 8787
43
+ host: "127.0.0.1",
44
+ https: true, // Self-signed cert
45
+ liveReload: true, // Auto-reload HTML
46
+
47
+ cf: true, // Fetch live Request.cf data (cached)
48
+ // cf: "./cf.json", // Or load from file
49
+ // cf: { colo: "DFW" }, // Or inline mock
50
+ });
51
+ ```
52
+
53
+ **Note:** For tests, use `dispatchFetch()` (no port conflicts).
54
+
55
+ ## Storage Bindings
56
+
57
+ ```js
58
+ new Miniflare({
59
+ // KV
60
+ kvNamespaces: ["TEST_NAMESPACE", "CACHE"],
61
+ kvPersist: "./kv-data", // Optional: persist to disk
62
+
63
+ // R2
64
+ r2Buckets: ["BUCKET", "IMAGES"],
65
+ r2Persist: "./r2-data",
66
+
67
+ // Durable Objects
68
+ modules: true,
69
+ durableObjects: {
70
+ COUNTER: "Counter", // className
71
+ API_OBJECT: { className: "ApiObject", scriptName: "api-worker" },
72
+ },
73
+ durableObjectsPersist: "./do-data",
74
+
75
+ // D1
76
+ d1Databases: ["DB"],
77
+ d1Persist: "./d1-data",
78
+
79
+ // Cache
80
+ cache: true, // Default
81
+ cachePersist: "./cache-data",
82
+ });
83
+ ```
84
+
85
+ ## Bindings
86
+
87
+ ```js
88
+ new Miniflare({
89
+ // Environment variables
90
+ bindings: {
91
+ SECRET_KEY: "my-secret-value",
92
+ API_URL: "https://api.example.com",
93
+ DEBUG: true,
94
+ },
95
+
96
+ // Other bindings
97
+ wasmBindings: { ADD_MODULE: "./add.wasm" },
98
+ textBlobBindings: { TEXT: "./data.txt" },
99
+ queueProducers: ["QUEUE"],
100
+ });
101
+ ```
102
+
103
+ ## Multiple Workers
104
+
105
+ ```js
106
+ new Miniflare({
107
+ workers: [
108
+ {
109
+ name: "main",
110
+ kvNamespaces: { DATA: "shared" },
111
+ serviceBindings: { API: "api-worker" },
112
+ script: `export default { ... }`,
113
+ },
114
+ {
115
+ name: "api-worker",
116
+ kvNamespaces: { DATA: "shared" }, // Shared storage
117
+ script: `export default { ... }`,
118
+ },
119
+ ],
120
+ });
121
+ ```
122
+
123
+ **With routing:**
124
+ ```js
125
+ workers: [
126
+ { name: "api", scriptPath: "./api.js", routes: ["api.example.com/*"] },
127
+ { name: "web", scriptPath: "./web.js", routes: ["example.com/*"] },
128
+ ],
129
+ ```
130
+
131
+ ## Logging & Performance
132
+
133
+ ```js
134
+ import { Log, LogLevel } from "miniflare";
135
+
136
+ new Miniflare({
137
+ log: new Log(LogLevel.DEBUG), // DEBUG | INFO | WARN | ERROR | NONE
138
+ scriptTimeout: 30000, // CPU limit (ms)
139
+ workersConcurrencyLimit: 10, // Max concurrent workers
140
+ });
141
+ ```
142
+
143
+ ## Workers Sites
144
+
145
+ ```js
146
+ new Miniflare({
147
+ sitePath: "./public",
148
+ siteInclude: ["**/*.html", "**/*.css"],
149
+ siteExclude: ["**/*.map"],
150
+ });
151
+ ```
152
+
153
+ ## From wrangler.toml
154
+
155
+ Miniflare doesn't auto-read `wrangler.toml`:
156
+
157
+ ```toml
158
+ # wrangler.toml
159
+ name = "my-worker"
160
+ main = "src/index.ts"
161
+ compatibility_date = "2026-01-01"
162
+ [[kv_namespaces]]
163
+ binding = "KV"
164
+ ```
165
+
166
+ ```js
167
+ // Miniflare equivalent
168
+ new Miniflare({
169
+ scriptPath: "src/index.ts",
170
+ compatibilityDate: "2026-01-01",
171
+ kvNamespaces: ["KV"],
172
+ });
173
+ ```