void 0.1.6 → 0.7.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 (333) hide show
  1. package/AGENT_PROMPT.md +15 -0
  2. package/README.md +62 -123
  3. package/dist/auth-BdsJ0Aff.d.mts +43 -0
  4. package/dist/auth-cmd-Dx8oPKZC.mjs +43 -0
  5. package/dist/auth-migrations-BAtAck2g.mjs +117 -0
  6. package/dist/better-auth-shared-C9_GHSkR.d.mts +71 -0
  7. package/dist/better-auth-shared-CdYmQGry.mjs +163 -0
  8. package/dist/cache-W82I8ihI.mjs +47 -0
  9. package/dist/cancel-deploy-BOBTqqh0.mjs +59 -0
  10. package/dist/cf-access-Dee5cXxL.mjs +22 -0
  11. package/dist/chunk-DJd-R1mw.mjs +34 -0
  12. package/dist/cli/cli.d.mts +1 -0
  13. package/dist/cli/cli.mjs +1807 -0
  14. package/dist/client-snXOjrp1.mjs +565 -0
  15. package/dist/collect-CjeZgz5D.mjs +55 -0
  16. package/dist/config-BIa9HwVX.mjs +573 -0
  17. package/dist/config-BzM9Dy7T.mjs +37 -0
  18. package/dist/config-CvHtTM0q.mjs +30 -0
  19. package/dist/create-project-BIA15W7z.mjs +90 -0
  20. package/dist/db-DsRoMcfN.mjs +895 -0
  21. package/dist/defer-DcxEsVH1.mjs +49 -0
  22. package/dist/delete-DAP6yDc7.mjs +64 -0
  23. package/dist/deploy-BPKblFx6.mjs +2424 -0
  24. package/dist/discover-B7FkXBLB.mjs +40 -0
  25. package/dist/dist-DUyXJLkq.mjs +2667 -0
  26. package/dist/dist-Dayj3gCK.mjs +1287 -0
  27. package/dist/domain-BGofcQ6I.mjs +79 -0
  28. package/dist/dotenv-DwO4ti0Z.mjs +173 -0
  29. package/dist/drizzle-NnudE_UN.mjs +232 -0
  30. package/dist/env-CyG3tvU0.mjs +301 -0
  31. package/dist/env-helpers-Dr9Y7RnE.d.mts +52 -0
  32. package/dist/env-raw-BDL4TvdN.mjs +32 -0
  33. package/dist/env-types-DknSA4SO.mjs +64 -0
  34. package/dist/env-validation-DJKjR_8q.mjs +163 -0
  35. package/dist/fetch-error-BQ8sZ5Nd.mjs +266 -0
  36. package/dist/fetch-error-CVZ5CGA-.d.mts +20 -0
  37. package/dist/gen-U0Ktr4Zd.mjs +761 -0
  38. package/dist/handler-B0ds0OHJ.d.mts +269 -0
  39. package/dist/head-P-egrtFE.d.mts +45 -0
  40. package/dist/headers-DCXc7mDs.mjs +279 -0
  41. package/dist/index.d.mts +32 -0
  42. package/dist/index.mjs +4695 -0
  43. package/dist/init-C7wS5iGP.mjs +2625 -0
  44. package/dist/link-p2R6NbgN.mjs +49 -0
  45. package/dist/list-Bfel-QLc.mjs +113 -0
  46. package/dist/log-DXdqnmhF.mjs +26 -0
  47. package/dist/login-CkcXUiIu.mjs +72 -0
  48. package/dist/logs-DmkrRvx6.mjs +98 -0
  49. package/dist/magic-string.es-D6g9UnIy.mjs +1011 -0
  50. package/dist/mcp-CaQzfeUi.mjs +373 -0
  51. package/dist/node-DDfXj10V.mjs +54 -0
  52. package/dist/output-BwlcIYSR.mjs +139 -0
  53. package/dist/pages/client.d.mts +198 -0
  54. package/dist/pages/client.mjs +980 -0
  55. package/dist/pages/head-client.d.mts +15 -0
  56. package/dist/pages/head-client.mjs +90 -0
  57. package/dist/pages/head.d.mts +2 -0
  58. package/dist/pages/head.mjs +112 -0
  59. package/dist/pages/index.d.mts +38 -0
  60. package/dist/pages/index.mjs +76 -0
  61. package/dist/pages/islands-plugin.d.mts +50 -0
  62. package/dist/pages/islands-plugin.mjs +195 -0
  63. package/dist/pages/prefetch.d.mts +31 -0
  64. package/dist/pages/prefetch.mjs +90 -0
  65. package/dist/pages/protocol.d.mts +3 -0
  66. package/dist/pages/protocol.mjs +193 -0
  67. package/dist/pages/serialize.d.mts +10 -0
  68. package/dist/pages/serialize.mjs +14 -0
  69. package/dist/pathe.M-eThtNZ-D-kmWkCS.mjs +150 -0
  70. package/dist/plugin-inference-oZ6Ybu2_.mjs +2447 -0
  71. package/dist/prepare-BAtWufvm.mjs +99 -0
  72. package/dist/preset-D4I73kT4.mjs +221 -0
  73. package/dist/project-TqORyHn8.mjs +72 -0
  74. package/dist/project-cmd-B7lQp3F3.mjs +67 -0
  75. package/dist/project-slug-CKam8lF9.mjs +11 -0
  76. package/dist/project-tsconfig-DfkESbDL.mjs +63 -0
  77. package/dist/protocol-BWzXs2A2.d.mts +34 -0
  78. package/dist/providers-B3aMxWzP.mjs +67 -0
  79. package/dist/resolve-project-Br5BR03U.mjs +29 -0
  80. package/dist/rollback-gyC59l7U.mjs +92 -0
  81. package/dist/route-types-DReF1gUY.mjs +255 -0
  82. package/dist/routes-stub.d.mts +55 -0
  83. package/dist/routes-stub.mjs +1 -0
  84. package/dist/runner-6Ep3fNQu.mjs +123 -0
  85. package/dist/runner-pg-D0wWHYnr.mjs +57 -0
  86. package/dist/runtime/ai.d.mts +127 -0
  87. package/dist/runtime/ai.mjs +348 -0
  88. package/dist/runtime/auth-client-react.d.mts +8 -0
  89. package/dist/runtime/auth-client-react.mjs +6 -0
  90. package/dist/runtime/auth-client-solid.d.mts +8 -0
  91. package/dist/runtime/auth-client-solid.mjs +6 -0
  92. package/dist/runtime/auth-client-svelte.d.mts +8 -0
  93. package/dist/runtime/auth-client-svelte.mjs +6 -0
  94. package/dist/runtime/auth-client-vue.d.mts +8 -0
  95. package/dist/runtime/auth-client-vue.mjs +6 -0
  96. package/dist/runtime/auth-client.d.mts +8 -0
  97. package/dist/runtime/auth-client.mjs +6 -0
  98. package/dist/runtime/auth.d.mts +2 -0
  99. package/dist/runtime/auth.mjs +22 -0
  100. package/dist/runtime/better-auth-pg.d.mts +11 -0
  101. package/dist/runtime/better-auth-pg.mjs +51 -0
  102. package/dist/runtime/better-auth.d.mts +11 -0
  103. package/dist/runtime/better-auth.mjs +33 -0
  104. package/dist/runtime/client.d.mts +6 -0
  105. package/dist/runtime/client.mjs +5 -0
  106. package/dist/runtime/db-pg.d.mts +2 -0
  107. package/dist/runtime/db-pg.mjs +1 -0
  108. package/dist/runtime/db.d.mts +17 -0
  109. package/dist/runtime/db.mjs +30 -0
  110. package/dist/runtime/drizzle-arktype.d.mts +1 -0
  111. package/dist/runtime/drizzle-arktype.mjs +2 -0
  112. package/dist/runtime/drizzle-valibot.d.mts +1 -0
  113. package/dist/runtime/drizzle-valibot.mjs +2 -0
  114. package/dist/runtime/drizzle-zod.d.mts +1 -0
  115. package/dist/runtime/drizzle-zod.mjs +2 -0
  116. package/dist/runtime/env-helpers.d.mts +2 -0
  117. package/dist/runtime/env-helpers.mjs +173 -0
  118. package/dist/runtime/env-public-client.d.mts +22 -0
  119. package/dist/runtime/env-public-client.mjs +54 -0
  120. package/dist/runtime/env-public.d.mts +143 -0
  121. package/dist/runtime/env-public.mjs +366 -0
  122. package/dist/runtime/env.d.mts +13 -0
  123. package/dist/runtime/env.mjs +51 -0
  124. package/dist/runtime/fetch-stream.d.mts +51 -0
  125. package/dist/runtime/fetch-stream.mjs +81 -0
  126. package/dist/runtime/fetch.d.mts +59 -0
  127. package/dist/runtime/fetch.mjs +18 -0
  128. package/dist/runtime/handler.d.mts +3 -0
  129. package/dist/runtime/handler.mjs +85 -0
  130. package/dist/runtime/isr.d.mts +26 -0
  131. package/dist/runtime/isr.mjs +43 -0
  132. package/dist/runtime/kv.d.mts +48 -0
  133. package/dist/runtime/kv.mjs +106 -0
  134. package/dist/runtime/log.d.mts +24 -0
  135. package/dist/runtime/log.mjs +31 -0
  136. package/dist/runtime/migration-handler-pg.d.mts +6 -0
  137. package/dist/runtime/migration-handler-pg.mjs +85 -0
  138. package/dist/runtime/migration-handler.d.mts +19 -0
  139. package/dist/runtime/migration-handler.mjs +92 -0
  140. package/dist/runtime/queues.d.mts +7 -0
  141. package/dist/runtime/queues.mjs +8 -0
  142. package/dist/runtime/remote/binding-handler.d.mts +15 -0
  143. package/dist/runtime/remote/binding-handler.mjs +208 -0
  144. package/dist/runtime/remote/index.d.mts +8 -0
  145. package/dist/runtime/remote/index.mjs +461 -0
  146. package/dist/runtime/response.d.mts +14 -0
  147. package/dist/runtime/response.mjs +30 -0
  148. package/dist/runtime/sandbox.d.mts +17 -0
  149. package/dist/runtime/sandbox.mjs +19 -0
  150. package/dist/runtime/schema-d1.d.mts +1 -0
  151. package/dist/runtime/schema-d1.mjs +2 -0
  152. package/dist/runtime/schema-pg.d.mts +1 -0
  153. package/dist/runtime/schema-pg.mjs +2 -0
  154. package/dist/runtime/seed.d.mts +30 -0
  155. package/dist/runtime/seed.mjs +6 -0
  156. package/dist/runtime/storage.d.mts +7 -0
  157. package/dist/runtime/storage.mjs +14 -0
  158. package/dist/runtime/validator.d.mts +2 -0
  159. package/dist/runtime/validator.mjs +72 -0
  160. package/dist/runtime/ws-server.d.mts +26 -0
  161. package/dist/runtime/ws-server.mjs +296 -0
  162. package/dist/runtime/ws.d.mts +123 -0
  163. package/dist/runtime/ws.mjs +103 -0
  164. package/dist/scan-Ba4hFwlH.mjs +324 -0
  165. package/dist/scan-C6HMEIdW.mjs +318 -0
  166. package/dist/secret-CeRSukgM.mjs +109 -0
  167. package/dist/skills-ipldjlKE.mjs +62 -0
  168. package/dist/standard-schema-9CRjx-uR.d.mts +42 -0
  169. package/dist/subcommand-prompt-BKjuNAPb.mjs +349 -0
  170. package/dist/sveltekit.d.mts +20 -0
  171. package/dist/sveltekit.mjs +61 -0
  172. package/dist/types-mHOEwpW4.d.mts +57 -0
  173. package/dist/validate-CaMavMxu.mjs +146 -0
  174. package/dist/yarn-pnp-BFqMV_bl.mjs +196 -0
  175. package/getting-started-prompt.txt +26 -0
  176. package/package.json +322 -30
  177. package/schema.json +364 -0
  178. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +175 -0
  179. package/skills/void/SKILL.md +75 -0
  180. package/skills/void/command/void.md +7 -0
  181. package/skills/void/docs/guide/ai.md +235 -0
  182. package/skills/void/docs/guide/app-types.md +103 -0
  183. package/skills/void/docs/guide/auth.md +257 -0
  184. package/skills/void/docs/guide/database/d1.md +106 -0
  185. package/skills/void/docs/guide/database/postgresql.md +106 -0
  186. package/skills/void/docs/guide/database.md +418 -0
  187. package/skills/void/docs/guide/deployment.md +98 -0
  188. package/skills/void/docs/guide/edge/headers.md +79 -0
  189. package/skills/void/docs/guide/edge/prerendering.md +83 -0
  190. package/skills/void/docs/guide/edge/redirects.md +116 -0
  191. package/skills/void/docs/guide/edge/revalidation.md +131 -0
  192. package/skills/void/docs/guide/edge/rewrites.md +354 -0
  193. package/skills/void/docs/guide/edge/static-assets.md +72 -0
  194. package/skills/void/docs/guide/env-vars.md +298 -0
  195. package/skills/void/docs/guide/index.md +80 -0
  196. package/skills/void/docs/guide/jobs.md +91 -0
  197. package/skills/void/docs/guide/kv.md +107 -0
  198. package/skills/void/docs/guide/pages-routing/actions-and-forms.md +419 -0
  199. package/skills/void/docs/guide/pages-routing/head.md +130 -0
  200. package/skills/void/docs/guide/pages-routing/islands.md +405 -0
  201. package/skills/void/docs/guide/pages-routing/layouts.md +362 -0
  202. package/skills/void/docs/guide/pages-routing/loaders.md +267 -0
  203. package/skills/void/docs/guide/pages-routing/markdown.md +625 -0
  204. package/skills/void/docs/guide/pages-routing/overview.md +236 -0
  205. package/skills/void/docs/guide/pages-routing/view-transitions.md +140 -0
  206. package/skills/void/docs/guide/queues.md +140 -0
  207. package/skills/void/docs/guide/quickstart.md +233 -0
  208. package/skills/void/docs/guide/remote-dev.md +67 -0
  209. package/skills/void/docs/guide/sandboxes.md +82 -0
  210. package/skills/void/docs/guide/server-routing.md +246 -0
  211. package/skills/void/docs/guide/ssg.md +74 -0
  212. package/skills/void/docs/guide/ssr.md +105 -0
  213. package/skills/void/docs/guide/storage.md +67 -0
  214. package/skills/void/docs/guide/type-safety.md +179 -0
  215. package/skills/void/docs/guide/typed-fetch.md +113 -0
  216. package/skills/void/docs/guide/websockets.md +190 -0
  217. package/skills/void/docs/index.md +48 -0
  218. package/skills/void/docs/integrations/agents.md +84 -0
  219. package/skills/void/docs/integrations/cloudflare.md +284 -0
  220. package/skills/void/docs/integrations/frameworks/analog.md +182 -0
  221. package/skills/void/docs/integrations/frameworks/astro.md +197 -0
  222. package/skills/void/docs/integrations/frameworks/nuxt.md +164 -0
  223. package/skills/void/docs/integrations/frameworks/overview.md +136 -0
  224. package/skills/void/docs/integrations/frameworks/react-router.md +137 -0
  225. package/skills/void/docs/integrations/frameworks/sveltekit.md +191 -0
  226. package/skills/void/docs/integrations/frameworks/tanstack-start.md +140 -0
  227. package/skills/void/docs/integrations/hono.md +97 -0
  228. package/skills/void/docs/integrations/nodejs-bun-deno.md +210 -0
  229. package/skills/void/docs/node_modules/@iconify/vue/README.md +408 -0
  230. package/skills/void/docs/node_modules/@iconify/vue/offline/readme.md +5 -0
  231. package/skills/void/docs/node_modules/@voidzero-dev/vitepress-theme/README.md +103 -0
  232. package/skills/void/docs/node_modules/oxc-minify/README.md +78 -0
  233. package/skills/void/docs/node_modules/reka-ui/README.md +80 -0
  234. package/skills/void/docs/node_modules/vitepress/README.md +28 -0
  235. package/skills/void/docs/node_modules/vitepress/template/api-examples.md +49 -0
  236. package/skills/void/docs/node_modules/vitepress/template/index.md +28 -0
  237. package/skills/void/docs/node_modules/vitepress/template/markdown-examples.md +85 -0
  238. package/skills/void/docs/node_modules/vitepress-plugin-group-icons/README.md +101 -0
  239. package/skills/void/docs/node_modules/void/AGENTS.md +204 -0
  240. package/skills/void/docs/node_modules/void/AGENT_PROMPT.md +15 -0
  241. package/skills/void/docs/node_modules/void/README.md +89 -0
  242. package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/CHANGELOG.md +591 -0
  243. package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/README.md +375 -0
  244. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/sandbox/README.md +174 -0
  245. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/vite-plugin/README.md +37 -0
  246. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/workers-types/README.md +135 -0
  247. package/skills/void/docs/node_modules/void/node_modules/@electric-sql/pglite/README.md +189 -0
  248. package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/CHANGELOG.md +143 -0
  249. package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/README.md +1272 -0
  250. package/skills/void/docs/node_modules/void/node_modules/@napi-rs/keyring/README.md +19 -0
  251. package/skills/void/docs/node_modules/void/node_modules/@types/better-sqlite3/README.md +15 -0
  252. package/skills/void/docs/node_modules/void/node_modules/@types/node/README.md +15 -0
  253. package/skills/void/docs/node_modules/void/node_modules/@types/pg/README.md +15 -0
  254. package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/README.md +22 -0
  255. package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/vendor/vscode-jsonrpc/README.md +69 -0
  256. package/skills/void/docs/node_modules/void/node_modules/@void/md/README.md +152 -0
  257. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/engine-javascript/README.md +9 -0
  258. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/transformers/README.md +9 -0
  259. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@types/node/README.md +15 -0
  260. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/CHANGELOG.md +24 -0
  261. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/README.md +565 -0
  262. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-exit/README.md +124 -0
  263. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-anchor/README.md +600 -0
  264. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-attrs/README.md +386 -0
  265. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-container/README.md +95 -0
  266. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-emoji/README.md +101 -0
  267. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/pathe/README.md +73 -0
  268. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/shiki/README.md +15 -0
  269. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tinyglobby/README.md +25 -0
  270. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tsdown/README.md +55 -0
  271. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite/LICENSE.md +2230 -0
  272. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite/README.md +20 -0
  273. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vue/README.md +58 -0
  274. package/skills/void/docs/node_modules/void/node_modules/arktype/README.md +165 -0
  275. package/skills/void/docs/node_modules/void/node_modules/better-auth/LICENSE.md +20 -0
  276. package/skills/void/docs/node_modules/void/node_modules/better-auth/README.md +32 -0
  277. package/skills/void/docs/node_modules/void/node_modules/better-sqlite3/README.md +99 -0
  278. package/skills/void/docs/node_modules/void/node_modules/blake3-jit/README.md +108 -0
  279. package/skills/void/docs/node_modules/void/node_modules/drizzle-arktype/README.md +51 -0
  280. package/skills/void/docs/node_modules/void/node_modules/drizzle-kit/README.md +79 -0
  281. package/skills/void/docs/node_modules/void/node_modules/drizzle-orm/README.md +44 -0
  282. package/skills/void/docs/node_modules/void/node_modules/drizzle-valibot/README.md +51 -0
  283. package/skills/void/docs/node_modules/void/node_modules/drizzle-zod/README.md +65 -0
  284. package/skills/void/docs/node_modules/void/node_modules/es-module-lexer/README.md +390 -0
  285. package/skills/void/docs/node_modules/void/node_modules/estree-walker/README.md +48 -0
  286. package/skills/void/docs/node_modules/void/node_modules/hono/README.md +85 -0
  287. package/skills/void/docs/node_modules/void/node_modules/ignore/README.md +452 -0
  288. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/CHANGELOG.md +76 -0
  289. package/{LICENSE → skills/void/docs/node_modules/void/node_modules/jsonc-parser/LICENSE.md} +21 -21
  290. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/README.md +364 -0
  291. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/SECURITY.md +41 -0
  292. package/skills/void/docs/node_modules/void/node_modules/magic-string/README.md +325 -0
  293. package/skills/void/docs/node_modules/void/node_modules/ofetch/README.md +398 -0
  294. package/skills/void/docs/node_modules/void/node_modules/pathe/README.md +73 -0
  295. package/skills/void/docs/node_modules/void/node_modules/pg/README.md +95 -0
  296. package/skills/void/docs/node_modules/void/node_modules/pglite-server/LICENSE.md +21 -0
  297. package/skills/void/docs/node_modules/void/node_modules/pglite-server/README.md +135 -0
  298. package/skills/void/docs/node_modules/void/node_modules/picocolors/README.md +21 -0
  299. package/skills/void/docs/node_modules/void/node_modules/tinyglobby/README.md +25 -0
  300. package/skills/void/docs/node_modules/void/node_modules/tsdown/README.md +55 -0
  301. package/skills/void/docs/node_modules/void/node_modules/valibot/LICENSE.md +9 -0
  302. package/skills/void/docs/node_modules/void/node_modules/valibot/README.md +94 -0
  303. package/skills/void/docs/node_modules/void/node_modules/vite/LICENSE.md +2230 -0
  304. package/skills/void/docs/node_modules/void/node_modules/vite/README.md +20 -0
  305. package/skills/void/docs/node_modules/void/node_modules/wrangler/README.md +63 -0
  306. package/skills/void/docs/node_modules/void/node_modules/zod/README.md +191 -0
  307. package/skills/void/docs/node_modules/void/skills/migrate-vite-cloudflare-to-void/SKILL.md +175 -0
  308. package/skills/void/docs/node_modules/void/skills/void/SKILL.md +75 -0
  309. package/skills/void/docs/node_modules/void/skills/void/command/void.md +7 -0
  310. package/skills/void/docs/reference/api.md +917 -0
  311. package/skills/void/docs/reference/cli.md +561 -0
  312. package/skills/void/docs/reference/config.md +408 -0
  313. package/skills/void/docs/reference/resource-inference.md +149 -0
  314. package/skills/void/docs/reference/structure.md +176 -0
  315. package/.npmignore +0 -29
  316. package/.travis.yml +0 -9
  317. package/favicon.ico +0 -0
  318. package/index.js +0 -14
  319. package/lib/Job.js +0 -150
  320. package/lib/Void.js +0 -99
  321. package/lib/scan.js +0 -19
  322. package/test/credentials.js +0 -20
  323. package/test/job.js +0 -64
  324. package/test/static/dir1/test6.html +0 -0
  325. package/test/static/dir2/test7.html +0 -0
  326. package/test/static/dir2/test8.html +0 -0
  327. package/test/static/dir2/test9.html +0 -0
  328. package/test/static/test1.html +0 -0
  329. package/test/static/test2.html +0 -0
  330. package/test/static/test3.html +0 -0
  331. package/test/void.js +0 -31
  332. /package/{test/static/dir1/test4.html → skills/void/docs/integrations/auth-providers.md} +0 -0
  333. /package/{test/static/dir1/test5.html → skills/void/docs/integrations/payment-processors.md} +0 -0
@@ -0,0 +1,30 @@
1
+ //#region src/runtime/response.ts
2
+ /**
3
+ * Tracks responses created by convertReturnValue (as opposed to responses
4
+ * explicitly constructed by user code). Used by handlePageGet to decide
5
+ * whether a Response should be passed through or unwrapped as page props.
6
+ */
7
+ const convertedResponses = /* @__PURE__ */ new WeakSet();
8
+ /** Returns true if the value is a Response that was created by convertReturnValue. */
9
+ function isConvertedResponse(value) {
10
+ return value instanceof Response && convertedResponses.has(value);
11
+ }
12
+ /**
13
+ * Convert a handler's return value to a Web Response.
14
+ *
15
+ * - Response → passthrough
16
+ * - null/undefined → 204 No Content
17
+ * - string → text/html
18
+ * - object/array → JSON
19
+ */
20
+ function convertReturnValue(value) {
21
+ if (value instanceof Response) return value;
22
+ let response;
23
+ if (value === null || value === void 0) response = new Response(null, { status: 204 });
24
+ else if (typeof value === "string") response = new Response(value, { headers: { "Content-Type": "text/html; charset=utf-8" } });
25
+ else response = Response.json(value);
26
+ convertedResponses.add(response);
27
+ return response;
28
+ }
29
+ //#endregion
30
+ export { convertReturnValue, isConvertedResponse };
@@ -0,0 +1,17 @@
1
+ /// <reference types="@cloudflare/workers-types" />
2
+ import { Sandbox, SandboxOptions } from "@cloudflare/sandbox";
3
+
4
+ //#region src/runtime/sandbox.d.ts
5
+ declare const DEFAULT_SANDBOX_ID = "default";
6
+ declare const DEFAULT_SANDBOX_BINDING = "SANDBOX";
7
+ type VoidSandbox = Sandbox;
8
+ type VoidSandboxOptions = SandboxOptions & {
9
+ binding?: string;
10
+ };
11
+ declare function __setSandboxBindingName(bindingName: string): void;
12
+ declare function getSandbox<T extends Sandbox = Sandbox>(id?: string, options?: VoidSandboxOptions): T;
13
+ declare const sandbox: {
14
+ get: typeof getSandbox;
15
+ };
16
+ //#endregion
17
+ export { DEFAULT_SANDBOX_BINDING, DEFAULT_SANDBOX_ID, Sandbox, type SandboxOptions, VoidSandbox, VoidSandboxOptions, __setSandboxBindingName, getSandbox, sandbox };
@@ -0,0 +1,19 @@
1
+ import { requireRuntimeBinding } from "./env.mjs";
2
+ import { Sandbox, getSandbox as getSandbox$1 } from "@cloudflare/sandbox";
3
+ //#region src/runtime/sandbox.ts
4
+ const DEFAULT_SANDBOX_ID = "default";
5
+ const DEFAULT_SANDBOX_BINDING = "SANDBOX";
6
+ let sandboxBindingName = DEFAULT_SANDBOX_BINDING;
7
+ function __setSandboxBindingName(bindingName) {
8
+ sandboxBindingName = bindingName;
9
+ }
10
+ function getSandbox(id = DEFAULT_SANDBOX_ID, options) {
11
+ const { binding = sandboxBindingName, ...sandboxOptions } = options ?? {};
12
+ return getSandbox$1(requireRuntimeBinding(binding), id, {
13
+ normalizeId: true,
14
+ ...sandboxOptions
15
+ });
16
+ }
17
+ const sandbox = { get: getSandbox };
18
+ //#endregion
19
+ export { DEFAULT_SANDBOX_BINDING, DEFAULT_SANDBOX_ID, Sandbox, __setSandboxBindingName, getSandbox, sandbox };
@@ -0,0 +1 @@
1
+ export * from "drizzle-orm/sqlite-core";
@@ -0,0 +1,2 @@
1
+ export * from "drizzle-orm/sqlite-core";
2
+ export {};
@@ -0,0 +1 @@
1
+ export * from "drizzle-orm/pg-core";
@@ -0,0 +1,2 @@
1
+ export * from "drizzle-orm/pg-core";
2
+ export {};
@@ -0,0 +1,30 @@
1
+ import { NodePgDatabase } from "drizzle-orm/node-postgres";
2
+ import { BetterSQLite3Database } from "drizzle-orm/better-sqlite3";
3
+
4
+ //#region src/runtime/seed.d.ts
5
+ interface SqliteSeedContext<TSchema extends Record<string, unknown> = Record<string, never>> {
6
+ dialect: "sqlite";
7
+ db: BetterSQLite3Database<TSchema>;
8
+ schema: TSchema;
9
+ }
10
+ interface PostgresSeedContext<TSchema extends Record<string, unknown> = Record<string, never>> {
11
+ dialect: "postgresql";
12
+ db: NodePgDatabase<TSchema>;
13
+ schema: TSchema;
14
+ }
15
+ type DrizzleTableForDialect<TDialect extends string> = {
16
+ readonly _: {
17
+ readonly config: {
18
+ readonly dialect: TDialect;
19
+ };
20
+ };
21
+ };
22
+ type SchemaHasTableDialect<TSchema extends Record<string, unknown>, TDialect extends string> = [Extract<TSchema[keyof TSchema], DrizzleTableForDialect<TDialect>>] extends [never] ? false : true;
23
+ type SchemaHasSqliteTables<TSchema extends Record<string, unknown>> = SchemaHasTableDialect<TSchema, "sqlite">;
24
+ type SchemaHasPostgresTables<TSchema extends Record<string, unknown>> = SchemaHasTableDialect<TSchema, "pg">;
25
+ type FallbackSeedContext<TSchema extends Record<string, unknown>> = SchemaHasSqliteTables<TSchema> extends false ? SchemaHasPostgresTables<TSchema> extends false ? SqliteSeedContext<TSchema> | PostgresSeedContext<TSchema> : never : never;
26
+ type SeedContext<TSchema extends Record<string, unknown> = Record<string, never>> = (SchemaHasSqliteTables<TSchema> extends true ? SqliteSeedContext<TSchema> : never) | (SchemaHasPostgresTables<TSchema> extends true ? PostgresSeedContext<TSchema> : never) | FallbackSeedContext<TSchema>;
27
+ type SeedFn<TSchema extends Record<string, unknown> = Record<string, never>> = (context: SeedContext<TSchema>) => void | Promise<void>;
28
+ declare function defineSeed<TSchema extends Record<string, unknown> = Record<string, never>>(seed: SeedFn<TSchema>): SeedFn<TSchema>;
29
+ //#endregion
30
+ export { PostgresSeedContext, SeedContext, SeedFn, SqliteSeedContext, defineSeed };
@@ -0,0 +1,6 @@
1
+ //#region src/runtime/seed.ts
2
+ function defineSeed(seed) {
3
+ return seed;
4
+ }
5
+ //#endregion
6
+ export { defineSeed };
@@ -0,0 +1,7 @@
1
+ //#region src/runtime/storage.d.ts
2
+ /** Create a storage client for a specific R2Bucket instance. */
3
+ declare function createStorage(bucket: R2Bucket): R2Bucket;
4
+ /** Default storage client — resolves `STORAGE` from the active runtime environment. */
5
+ declare const storage: R2Bucket;
6
+ //#endregion
7
+ export { createStorage, storage };
@@ -0,0 +1,14 @@
1
+ import { requireRuntimeBinding } from "./env.mjs";
2
+ //#region src/runtime/storage.ts
3
+ /** Create a storage client for a specific R2Bucket instance. */
4
+ function createStorage(bucket) {
5
+ return bucket;
6
+ }
7
+ /** Default storage client — resolves `STORAGE` from the active runtime environment. */
8
+ const storage = new Proxy({}, { get(_target, prop) {
9
+ const bucket = requireRuntimeBinding("STORAGE");
10
+ const value = Reflect.get(bucket, prop, bucket);
11
+ return typeof value === "function" ? value.bind(bucket) : value;
12
+ } });
13
+ //#endregion
14
+ export { createStorage, storage };
@@ -0,0 +1,2 @@
1
+ import { C as HandlerInput, T as runValidation, w as ValidatorSlots } from "../handler-B0ds0OHJ.mjs";
2
+ export { HandlerInput, ValidatorSlots, runValidation };
@@ -0,0 +1,72 @@
1
+ //#region src/runtime/validator.ts
2
+ function flattenIssues(issues) {
3
+ return Array.from(issues, (issue) => ({
4
+ message: issue.message,
5
+ path: issue.path?.map((p) => typeof p === "object" ? p.key : p).join(".")
6
+ }));
7
+ }
8
+ async function validateSlot(schema, value) {
9
+ const result = await schema["~standard"].validate(value);
10
+ if (result.issues) return {
11
+ ok: false,
12
+ issues: result.issues
13
+ };
14
+ return {
15
+ ok: true,
16
+ value: result.value
17
+ };
18
+ }
19
+ async function runValidation(validators, c) {
20
+ const input = {};
21
+ const allIssues = [];
22
+ if (validators.params) {
23
+ const raw = c.req.param();
24
+ const result = await validateSlot(validators.params, raw);
25
+ if (result.ok) input.params = result.value;
26
+ else allIssues.push({
27
+ slot: "params",
28
+ issues: flattenIssues(result.issues)
29
+ });
30
+ }
31
+ if (validators.query) {
32
+ const url = new URL(c.req.url);
33
+ const raw = {};
34
+ for (const [key, value] of url.searchParams) raw[key] = value;
35
+ const result = await validateSlot(validators.query, raw);
36
+ if (result.ok) input.query = result.value;
37
+ else allIssues.push({
38
+ slot: "query",
39
+ issues: flattenIssues(result.issues)
40
+ });
41
+ }
42
+ if (validators.body) {
43
+ let raw;
44
+ try {
45
+ raw = await c.req.json();
46
+ } catch {
47
+ return {
48
+ ok: false,
49
+ response: Response.json({ error: "Invalid JSON body" }, { status: 400 })
50
+ };
51
+ }
52
+ const result = await validateSlot(validators.body, raw);
53
+ if (result.ok) input.body = result.value;
54
+ else allIssues.push({
55
+ slot: "body",
56
+ issues: flattenIssues(result.issues)
57
+ });
58
+ }
59
+ if (allIssues.length > 0) return {
60
+ ok: false,
61
+ response: Response.json({
62
+ error: "Validation failed",
63
+ issues: allIssues
64
+ }, { status: 400 })
65
+ };
66
+ return {
67
+ ok: true,
68
+ input
69
+ };
70
+ }
71
+ //#endregion
72
+ export { runValidation };
@@ -0,0 +1,26 @@
1
+ import { n as AuthState } from "../auth-BdsJ0Aff.mjs";
2
+ import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv } from "../better-auth-shared-C9_GHSkR.mjs";
3
+ import { AnyWebSocketDefinition } from "./ws.mjs";
4
+
5
+ //#region src/runtime/ws-server.d.ts
6
+ interface WebSocketRouteMeta {
7
+ pattern: string;
8
+ params: Array<string>;
9
+ className: string;
10
+ bindingName: string;
11
+ }
12
+ interface WebSocketDurableObjectInstance {
13
+ fetch(request: Request): Promise<Response>;
14
+ webSocketMessage(webSocket: WebSocket, message: string | ArrayBuffer | ArrayBufferView): Promise<void>;
15
+ webSocketClose(webSocket: WebSocket, code: number, reason: string, wasClean: boolean): Promise<void>;
16
+ }
17
+ interface WebSocketDurableObjectClass {
18
+ new (state: DurableObjectState, env: Record<string, unknown>): WebSocketDurableObjectInstance;
19
+ }
20
+ type ResolveVoidAuthState = (request: Request, env: VoidAuthEnv, runtime: VoidAuthRuntimeOptions) => Promise<AuthState | null>;
21
+ declare function buildWebSocketInstanceId(route: Pick<WebSocketRouteMeta, "params">, params: Record<string, string>): string;
22
+ declare function createWebSocketDurableObject(definition: AnyWebSocketDefinition, route: WebSocketRouteMeta, authRuntime?: VoidAuthRuntimeOptions, resolveAuthState?: ResolveVoidAuthState): WebSocketDurableObjectClass;
23
+ declare function handleWebSocketUpgrade(request: Request, env: Record<string, unknown>, routes: Array<WebSocketRouteMeta>): Promise<Response | null>;
24
+ declare function forwardWebSocketRequest(request: Request, env: Record<string, unknown>, route: WebSocketRouteMeta): Promise<Response>;
25
+ //#endregion
26
+ export { WebSocketDurableObjectClass, WebSocketDurableObjectInstance, WebSocketRouteMeta, buildWebSocketInstanceId, createWebSocketDurableObject, forwardWebSocketRequest, handleWebSocketUpgrade };
@@ -0,0 +1,296 @@
1
+ import { authContext } from "./auth.mjs";
2
+ //#region src/runtime/ws-server.ts
3
+ function matchRoute(pattern, pathname) {
4
+ const patternSegments = pattern.split("/").filter(Boolean);
5
+ const pathSegments = pathname.split("/").filter(Boolean);
6
+ const params = {};
7
+ let i = 0;
8
+ for (; i < patternSegments.length; i++) {
9
+ const patternSegment = patternSegments[i];
10
+ const pathSegment = pathSegments[i];
11
+ if (patternSegment === "*") return {
12
+ matched: true,
13
+ params
14
+ };
15
+ if (patternSegment.endsWith("{.+}") && patternSegment.startsWith(":")) {
16
+ params[patternSegment.slice(1, -4)] = decodeURIComponent(pathSegments.slice(i).join("/"));
17
+ return {
18
+ matched: true,
19
+ params
20
+ };
21
+ }
22
+ if (pathSegment == null) return {
23
+ matched: false,
24
+ params: {}
25
+ };
26
+ if (patternSegment.startsWith(":")) {
27
+ params[patternSegment.slice(1)] = decodeURIComponent(pathSegment);
28
+ continue;
29
+ }
30
+ if (patternSegment !== pathSegment) return {
31
+ matched: false,
32
+ params: {}
33
+ };
34
+ }
35
+ if (i !== pathSegments.length) return {
36
+ matched: false,
37
+ params: {}
38
+ };
39
+ return {
40
+ matched: true,
41
+ params
42
+ };
43
+ }
44
+ function getRouteMatch(request, route) {
45
+ const { pathname } = new URL(request.url);
46
+ const match = matchRoute(route.pattern, pathname);
47
+ return match.matched ? match.params : null;
48
+ }
49
+ function buildWebSocketInstanceId(route, params) {
50
+ if (route.params.length === 0) return "default";
51
+ return route.params.map((name) => `${name}=${params[name] ?? ""}`).join("&");
52
+ }
53
+ async function validateSchema(schema, value) {
54
+ const result = await schema["~standard"].validate(value);
55
+ if (result.issues) return {
56
+ ok: false,
57
+ issues: result.issues
58
+ };
59
+ return {
60
+ ok: true,
61
+ value: result.value
62
+ };
63
+ }
64
+ async function serializeServerEvent(schema, event) {
65
+ const result = await validateSchema(schema, event);
66
+ if (!result.ok) throw new Error(`ws: Message validation failed: ${result.issues.map((issue) => issue.message).join("; ")}.`);
67
+ return JSON.stringify(result.value);
68
+ }
69
+ function parseIncomingMessage(message) {
70
+ if (typeof message === "string") return message;
71
+ if (message instanceof ArrayBuffer) return new TextDecoder().decode(message);
72
+ return new TextDecoder().decode(message.buffer.slice(message.byteOffset, message.byteOffset + message.byteLength));
73
+ }
74
+ function withAuthState(state, fn) {
75
+ return Promise.resolve(authContext.run({
76
+ user: state?.user ?? null,
77
+ state
78
+ }, fn));
79
+ }
80
+ function getStoredConnection(webSocket) {
81
+ const stored = webSocket.deserializeAttachment?.();
82
+ if (stored) return {
83
+ ...stored,
84
+ authState: stored.authState ?? null
85
+ };
86
+ return {
87
+ id: crypto.randomUUID(),
88
+ params: {},
89
+ roomId: "default",
90
+ user: null,
91
+ authState: null
92
+ };
93
+ }
94
+ function setStoredConnection(webSocket, data) {
95
+ webSocket.serializeAttachment?.(data);
96
+ }
97
+ function createConnection(webSocket, serverSchema) {
98
+ return {
99
+ get id() {
100
+ return getStoredConnection(webSocket).id;
101
+ },
102
+ get state() {
103
+ return getStoredConnection(webSocket).state;
104
+ },
105
+ async send(event) {
106
+ webSocket.send(await serializeServerEvent(serverSchema, event));
107
+ },
108
+ close(code, reason) {
109
+ webSocket.close(code, reason);
110
+ },
111
+ setState(data) {
112
+ setStoredConnection(webSocket, {
113
+ ...getStoredConnection(webSocket),
114
+ state: data
115
+ });
116
+ }
117
+ };
118
+ }
119
+ function createRoomController(state, serverSchema) {
120
+ return {
121
+ async broadcast(event, excludeIds = []) {
122
+ const payload = await serializeServerEvent(serverSchema, event);
123
+ for (const socket of state.getWebSockets()) {
124
+ const stored = getStoredConnection(socket);
125
+ if (excludeIds.includes(stored.id)) continue;
126
+ socket.send(payload);
127
+ }
128
+ },
129
+ getConnections() {
130
+ return state.getWebSockets().map((socket) => createConnection(socket, serverSchema));
131
+ },
132
+ getConnection(id) {
133
+ const socket = state.getWebSockets().find((item) => getStoredConnection(item).id === id);
134
+ return socket ? createConnection(socket, serverSchema) : void 0;
135
+ }
136
+ };
137
+ }
138
+ function createRoomContext(state, env, request, webSocket, stored, serverSchema) {
139
+ return {
140
+ id: stored.roomId,
141
+ params: stored.params,
142
+ user: stored.user,
143
+ request,
144
+ env,
145
+ storage: state.storage,
146
+ room: createRoomController(state, serverSchema),
147
+ connection: createConnection(webSocket, serverSchema)
148
+ };
149
+ }
150
+ function createSocketContext(state, env, request, webSocket, stored, serverSchema) {
151
+ return {
152
+ id: stored.roomId,
153
+ params: stored.params,
154
+ user: stored.user,
155
+ request,
156
+ env,
157
+ storage: state.storage,
158
+ socket: createConnection(webSocket, serverSchema)
159
+ };
160
+ }
161
+ function assertDefinition(definition) {
162
+ if (!definition?.messages?.client || !definition?.messages?.server) throw new Error("ws: WebSocket routes must define both messages.client and messages.server.");
163
+ }
164
+ function createWebSocketDurableObject(definition, route, authRuntime, resolveAuthState) {
165
+ assertDefinition(definition);
166
+ class VoidWebSocketDurableObject {
167
+ constructor(state, env) {
168
+ this.state = state;
169
+ this.env = env;
170
+ }
171
+ async fetch(request) {
172
+ const params = getRouteMatch(request, route) ?? {};
173
+ const roomId = buildWebSocketInstanceId(route, params);
174
+ const authState = authRuntime && resolveAuthState ? await resolveAuthState(request, this.env, authRuntime) : null;
175
+ const user = authState?.user ?? null;
176
+ if (request.headers.get("upgrade")?.toLowerCase() === "websocket") {
177
+ const pair = new WebSocketPair();
178
+ const client = pair[0];
179
+ const server = pair[1];
180
+ const stored = {
181
+ id: crypto.randomUUID(),
182
+ params,
183
+ roomId,
184
+ user,
185
+ authState
186
+ };
187
+ setStoredConnection(server, stored);
188
+ if (definition.__kind === "room") {
189
+ const ctx = createRoomContext(this.state, this.env, request, server, stored, definition.messages.server);
190
+ const decision = await withAuthState(authState, () => definition.onBeforeConnect?.(ctx));
191
+ if (decision instanceof Response) return decision;
192
+ } else {
193
+ const ctx = createSocketContext(this.state, this.env, request, server, stored, definition.messages.server);
194
+ const decision = await withAuthState(authState, () => definition.onBeforeConnect?.(ctx));
195
+ if (decision instanceof Response) return decision;
196
+ }
197
+ this.state.acceptWebSocket(server);
198
+ if (definition.__kind === "room") {
199
+ const ctx = createRoomContext(this.state, this.env, request, server, stored, definition.messages.server);
200
+ await withAuthState(authState, () => definition.onConnect?.(ctx));
201
+ } else {
202
+ const ctx = createSocketContext(this.state, this.env, request, server, stored, definition.messages.server);
203
+ await withAuthState(authState, () => definition.onConnect?.(ctx));
204
+ }
205
+ return new Response(null, {
206
+ status: 101,
207
+ webSocket: client
208
+ });
209
+ }
210
+ if (!definition.onRequest) return new Response("Upgrade Required", { status: 426 });
211
+ const stored = {
212
+ id: crypto.randomUUID(),
213
+ params,
214
+ roomId,
215
+ user,
216
+ authState
217
+ };
218
+ if (definition.__kind === "room") {
219
+ const fakeSocket = new WebSocketPair()[1];
220
+ const ctx = createRoomContext(this.state, this.env, request, fakeSocket, stored, definition.messages.server);
221
+ return withAuthState(authState, () => definition.onRequest(ctx));
222
+ }
223
+ const fakeSocket = new WebSocketPair()[1];
224
+ const ctx = createSocketContext(this.state, this.env, request, fakeSocket, stored, definition.messages.server);
225
+ return withAuthState(authState, () => definition.onRequest(ctx));
226
+ }
227
+ async webSocketMessage(webSocket, message) {
228
+ const stored = getStoredConnection(webSocket);
229
+ const raw = parseIncomingMessage(message);
230
+ let parsed;
231
+ try {
232
+ parsed = JSON.parse(raw);
233
+ } catch {
234
+ webSocket.close(1007, "Invalid JSON");
235
+ return;
236
+ }
237
+ const result = await validateSchema(definition.messages.client, parsed);
238
+ if (!result.ok) {
239
+ webSocket.close(1007, "Invalid message");
240
+ return;
241
+ }
242
+ const request = new Request(`https://void.local${route.pattern}`);
243
+ if (definition.__kind === "room") {
244
+ const ctx = createRoomContext(this.state, this.env, request, webSocket, stored, definition.messages.server);
245
+ await withAuthState(stored.authState ?? null, () => definition.onMessage?.(ctx, result.value));
246
+ } else {
247
+ const ctx = createSocketContext(this.state, this.env, request, webSocket, stored, definition.messages.server);
248
+ await withAuthState(stored.authState ?? null, () => definition.onMessage?.(ctx, result.value));
249
+ }
250
+ }
251
+ async webSocketClose(webSocket, code, reason, wasClean) {
252
+ const stored = getStoredConnection(webSocket);
253
+ const request = new Request(`https://void.local${route.pattern}`);
254
+ if (definition.__kind === "room") {
255
+ const ctx = createRoomContext(this.state, this.env, request, webSocket, stored, definition.messages.server);
256
+ await withAuthState(stored.authState ?? null, () => definition.onClose?.(ctx, {
257
+ code,
258
+ reason,
259
+ wasClean
260
+ }));
261
+ } else {
262
+ const ctx = createSocketContext(this.state, this.env, request, webSocket, stored, definition.messages.server);
263
+ await withAuthState(stored.authState ?? null, () => definition.onClose?.(ctx, {
264
+ code,
265
+ reason,
266
+ wasClean
267
+ }));
268
+ }
269
+ }
270
+ }
271
+ return VoidWebSocketDurableObject;
272
+ }
273
+ function getStub(env, route, params) {
274
+ const binding = env[route.bindingName];
275
+ if (!binding) return null;
276
+ const id = binding.idFromName(buildWebSocketInstanceId(route, params));
277
+ return binding.get(id);
278
+ }
279
+ async function handleWebSocketUpgrade(request, env, routes) {
280
+ if (request.headers.get("upgrade")?.toLowerCase() !== "websocket") return null;
281
+ for (const route of routes) {
282
+ const params = getRouteMatch(request, route);
283
+ if (!params) continue;
284
+ const stub = getStub(env, route, params);
285
+ if (!stub) return new Response(`Missing Durable Object binding "${route.bindingName}"`, { status: 503 });
286
+ return stub.fetch(request);
287
+ }
288
+ return null;
289
+ }
290
+ async function forwardWebSocketRequest(request, env, route) {
291
+ const stub = getStub(env, route, getRouteMatch(request, route) ?? {});
292
+ if (!stub) return new Response(`Missing Durable Object binding "${route.bindingName}"`, { status: 503 });
293
+ return stub.fetch(request);
294
+ }
295
+ //#endregion
296
+ export { buildWebSocketInstanceId, createWebSocketDurableObject, forwardWebSocketRequest, handleWebSocketUpgrade };
@@ -0,0 +1,123 @@
1
+ import { r as AuthUser } from "../auth-BdsJ0Aff.mjs";
2
+ import { t as StandardSchemaV1 } from "../standard-schema-9CRjx-uR.mjs";
3
+ import { i as CloudEnv } from "../handler-B0ds0OHJ.mjs";
4
+ import { WebSocketRouteMap } from "void/routes";
5
+
6
+ //#region src/runtime/ws.d.ts
7
+ type MaybePromise<T> = T | Promise<T>;
8
+ type ParamsRecord = Record<string, string>;
9
+ type WsEntry<P extends keyof WebSocketRouteMap> = WebSocketRouteMap[P];
10
+ type ParamsOf<P extends keyof WebSocketRouteMap> = WsEntry<P> extends {
11
+ params: infer T;
12
+ } ? T : Record<string, never>;
13
+ type ClientEventOf<P extends keyof WebSocketRouteMap> = WsEntry<P> extends {
14
+ client: infer T;
15
+ } ? T : never;
16
+ type ServerEventOf<P extends keyof WebSocketRouteMap> = WsEntry<P> extends {
17
+ server: infer T;
18
+ } ? T : never;
19
+ type HasParams<P extends keyof WebSocketRouteMap> = ParamsOf<P> extends Record<string, never> ? false : [keyof ParamsOf<P>] extends [never] ? false : true;
20
+ interface WebSocketConnection<ServerEvent = unknown> {
21
+ readonly id: string;
22
+ readonly state: unknown;
23
+ send(event: ServerEvent): Promise<void>;
24
+ close(code?: number, reason?: string): void;
25
+ setState(data: unknown): void;
26
+ }
27
+ interface RoomController<ServerEvent = unknown> {
28
+ broadcast(event: ServerEvent, excludeIds?: Array<string>): Promise<void>;
29
+ getConnections(): Iterable<WebSocketConnection<ServerEvent>>;
30
+ getConnection(id: string): WebSocketConnection<ServerEvent> | undefined;
31
+ }
32
+ interface WebSocketBaseContext {
33
+ readonly id: string;
34
+ readonly params: ParamsRecord;
35
+ readonly user: AuthUser | null;
36
+ readonly request: Request;
37
+ readonly env: CloudEnv["Bindings"];
38
+ readonly storage: DurableObjectStorage;
39
+ }
40
+ interface RoomContext<ServerEvent = unknown> extends WebSocketBaseContext {
41
+ readonly room: RoomController<ServerEvent>;
42
+ readonly connection: WebSocketConnection<ServerEvent>;
43
+ }
44
+ interface SocketContext<ServerEvent = unknown> extends WebSocketBaseContext {
45
+ readonly socket: WebSocketConnection<ServerEvent>;
46
+ }
47
+ interface RoomDefinition<ClientSchema extends StandardSchemaV1 = StandardSchemaV1, ServerSchema extends StandardSchemaV1 = StandardSchemaV1> {
48
+ readonly __kind: "room";
49
+ readonly messages: {
50
+ client: ClientSchema;
51
+ server: ServerSchema;
52
+ };
53
+ onBeforeConnect?: (ctx: RoomContext<StandardSchemaV1.InferInput<ServerSchema>>) => MaybePromise<Response | void>;
54
+ onConnect?: (ctx: RoomContext<StandardSchemaV1.InferInput<ServerSchema>>) => MaybePromise<void>;
55
+ onMessage?: (ctx: RoomContext<StandardSchemaV1.InferInput<ServerSchema>>, event: StandardSchemaV1.InferOutput<ClientSchema>) => MaybePromise<void>;
56
+ onClose?: (ctx: RoomContext<StandardSchemaV1.InferInput<ServerSchema>>, details?: {
57
+ code: number;
58
+ reason: string;
59
+ wasClean: boolean;
60
+ }) => MaybePromise<void>;
61
+ onRequest?: (ctx: RoomContext<StandardSchemaV1.InferInput<ServerSchema>>) => MaybePromise<Response>;
62
+ }
63
+ interface SocketDefinition<ClientSchema extends StandardSchemaV1 = StandardSchemaV1, ServerSchema extends StandardSchemaV1 = StandardSchemaV1> {
64
+ readonly __kind: "socket";
65
+ readonly messages: {
66
+ client: ClientSchema;
67
+ server: ServerSchema;
68
+ };
69
+ onBeforeConnect?: (ctx: SocketContext<StandardSchemaV1.InferInput<ServerSchema>>) => MaybePromise<Response | void>;
70
+ onConnect?: (ctx: SocketContext<StandardSchemaV1.InferInput<ServerSchema>>) => MaybePromise<void>;
71
+ onMessage?: (ctx: SocketContext<StandardSchemaV1.InferInput<ServerSchema>>, event: StandardSchemaV1.InferOutput<ClientSchema>) => MaybePromise<void>;
72
+ onClose?: (ctx: SocketContext<StandardSchemaV1.InferInput<ServerSchema>>, details?: {
73
+ code: number;
74
+ reason: string;
75
+ wasClean: boolean;
76
+ }) => MaybePromise<void>;
77
+ onRequest?: (ctx: SocketContext<StandardSchemaV1.InferInput<ServerSchema>>) => MaybePromise<Response>;
78
+ }
79
+ type AnyWebSocketDefinition = RoomDefinition | SocketDefinition;
80
+ declare function defineRoom<ClientSchema extends StandardSchemaV1, ServerSchema extends StandardSchemaV1>(definition: Omit<RoomDefinition<ClientSchema, ServerSchema>, "__kind">): RoomDefinition<ClientSchema, ServerSchema>;
81
+ declare function defineWebSocket<ClientSchema extends StandardSchemaV1, ServerSchema extends StandardSchemaV1>(definition: Omit<SocketDefinition<ClientSchema, ServerSchema>, "__kind">): SocketDefinition<ClientSchema, ServerSchema>;
82
+ interface VoidSocketCloseEvent {
83
+ code?: number;
84
+ reason?: string;
85
+ wasClean?: boolean;
86
+ }
87
+ interface ConnectCommonOptions {
88
+ baseURL?: string;
89
+ reconnect?: boolean;
90
+ reconnectDelayMs?: number;
91
+ maxReconnectAttempts?: number;
92
+ protocols?: string | Array<string>;
93
+ }
94
+ type ConnectOptions<P extends keyof WebSocketRouteMap> = ConnectCommonOptions & (HasParams<P> extends true ? {
95
+ params: ParamsOf<P>;
96
+ } : {
97
+ params?: never;
98
+ });
99
+ type ListenerMap<ServerEvent> = {
100
+ message: (event: ServerEvent) => void;
101
+ open: () => void;
102
+ close: (event: VoidSocketCloseEvent) => void;
103
+ error: (error: unknown) => void;
104
+ };
105
+ declare class VoidSocket<P extends keyof WebSocketRouteMap & string> {
106
+ private readonly url;
107
+ private readonly options;
108
+ private socket;
109
+ private readonly listeners;
110
+ private readonly buffer;
111
+ private reconnectAttempts;
112
+ private closedByUser;
113
+ constructor(url: string, options: ConnectCommonOptions);
114
+ private emit;
115
+ private connect;
116
+ send(event: ClientEventOf<P>): void;
117
+ close(code?: number, reason?: string): void;
118
+ on<K extends keyof ListenerMap<ServerEventOf<P>>>(type: K, handler: ListenerMap<ServerEventOf<P>>[K]): () => void;
119
+ }
120
+ declare function connect<P extends keyof WebSocketRouteMap & string>(path: HasParams<P> extends false ? P : never): VoidSocket<P>;
121
+ declare function connect<P extends keyof WebSocketRouteMap & string>(path: P, options: ConnectOptions<P>): VoidSocket<P>;
122
+ //#endregion
123
+ export { AnyWebSocketDefinition, ConnectCommonOptions, RoomContext, RoomController, RoomDefinition, SocketContext, SocketDefinition, VoidSocket, VoidSocketCloseEvent, WebSocketBaseContext, WebSocketConnection, connect, defineRoom, defineWebSocket };