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,176 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ <script setup>
6
+ const items = [
7
+ { name: "routes/", description: "API endpoints (file-based routing)", link: "#routes" },
8
+ { name: "pages/", description: "Full-stack server-rendered pages", link: "#pages" },
9
+ { name: "middleware/", description: "Global request middleware", link: "#middleware" },
10
+ { name: "db/", description: "Drizzle schema and SQL migrations", link: "#db" },
11
+ { name: "crons/", description: "Scheduled cron jobs", link: "#crons" },
12
+ { name: "queues/", description: "Async queue consumers", link: "#queues" },
13
+ { name: "src/", description: "Shared app code", link: "#src" },
14
+ { name: "public/", description: "Static assets (served as-is)", link: "#public" },
15
+ { name: ".void/", description: "Auto-generated (gitignored)", link: "#void" },
16
+ { name: "vite.config.ts", description: "Vite config with voidPlugin()", link: "#config-files" },
17
+ { name: "void.json", description: "Void project config (optional)", link: "#config-files" },
18
+ { name: ".env", description: "Environment variables", link: "#config-files" },
19
+ { name: "package.json" },
20
+ { name: "tsconfig.json" },
21
+ ];
22
+
23
+ const middlewareItems = [
24
+ {
25
+ name: "middleware/",
26
+ children: [
27
+ { name: "01.logger.ts", description: "Runs first" },
28
+ { name: "02.auth.ts", description: "Runs second" },
29
+ ],
30
+ },
31
+ ];
32
+
33
+ const dbItems = [
34
+ {
35
+ name: "db/",
36
+ children: [
37
+ { name: "schema.ts", description: "Drizzle schema (source of truth)" },
38
+ { name: "schema/", description: "Optional: split into multiple files" },
39
+ {
40
+ name: "migrations/",
41
+ children: [
42
+ { name: "20260410161500_*.sql" },
43
+ { name: "20260410161501_*.sql" },
44
+ ],
45
+ },
46
+ ],
47
+ },
48
+ ];
49
+
50
+ const voidItems = [
51
+ {
52
+ name: ".void/",
53
+ children: [
54
+ { name: "db.d.ts", description: "Drizzle DB instance types" },
55
+ { name: "routes.d.ts", description: "Typed fetch client types" },
56
+ { name: "queues.d.ts", description: "Queue consumer types" },
57
+ { name: "tsconfig.json", description: "TypeScript config fragment" },
58
+ { name: "v3/", description: "Local dev state (D1, KV, R2)" },
59
+ ],
60
+ },
61
+ ];
62
+ </script>
63
+
64
+ # Project Structure
65
+
66
+ ## Overview
67
+
68
+ A Void app uses file-based conventions to define routes, pages, middleware, and more. All directories are optional, so you only need the pieces your app actually uses.
69
+
70
+ <FileTree :items="items" />
71
+
72
+ ## `routes/`
73
+
74
+ File-based HTTP API endpoints built on [Hono](https://hono.dev). Each file exports named HTTP method handlers.
75
+
76
+ <RoutesFileTree />
77
+
78
+ - **Named exports**: `export const GET = defineHandler(...)`, `export const POST = ...`
79
+ - **Dynamic segments**: `[id]` becomes `:id` route parameter
80
+ - **Catch-all**: `[...slug]` matches the remaining path
81
+ - **Route groups**: `(admin)/` organizes files without affecting URL paths
82
+ - **Files starting with `_`** are ignored
83
+
84
+ See [Server Routing](/guide/server-routing) for the full guide.
85
+
86
+ ## `pages/`
87
+
88
+ Full-stack server-rendered pages with co-located data loading. Available with Vue, React, Svelte, and Solid adapters.
89
+
90
+ <PagesFileTree />
91
+
92
+ - **`.server.ts` files** export `loader` for `GET` data and `action` for mutations, paired with the page component of the same name
93
+ - **Layouts** nest automatically and persist across navigations
94
+ - **Markdown** pages are supported with frontmatter
95
+
96
+ See [Pages Routing](/guide/pages-routing/overview) for the full guide.
97
+
98
+ ## `middleware/`
99
+
100
+ Global middleware that runs on every request. Numeric prefixes control execution order.
101
+
102
+ <FileTree :items="middlewareItems" default-expanded />
103
+
104
+ Each file exports a `defineMiddleware()` handler. Use middleware to set shared context (auth, logging, rate limiting) available to all routes.
105
+
106
+ ## `db/`
107
+
108
+ [Drizzle schema](/guide/database#schema-definition) and SQL migration files for the [D1 database](/guide/database).
109
+
110
+ <FileTree :items="dbItems" default-expanded />
111
+
112
+ - `db/schema.ts`: your Drizzle table definitions and the source of truth for DB types
113
+ - `db/schema/`: optional. Split tables into separate files and re-export them from `db/schema.ts`
114
+ - `db/migrations/`: generated SQL migration files, applied in order on deploy
115
+
116
+ Generate schema with `void gen model` or write it by hand. Generate migrations with `void db generate`.
117
+
118
+ ## `crons/`
119
+
120
+ [Scheduled jobs](/guide/jobs) that run on a cron schedule.
121
+
122
+ ```ts
123
+ // crons/heartbeat.ts
124
+ import { defineScheduled } from 'void';
125
+
126
+ export const cron = '*/5 * * * *';
127
+
128
+ export default defineScheduled(async (controller, env) => {
129
+ // runs every 5 minutes
130
+ });
131
+ ```
132
+
133
+ ## `queues/`
134
+
135
+ [Async queue consumers](/guide/queues) for background job processing.
136
+
137
+ ```ts
138
+ // queues/email.ts
139
+ import { defineQueue } from 'void';
140
+
141
+ export default defineQueue(async (batch, env) => {
142
+ for (const msg of batch.messages) {
143
+ // process message
144
+ }
145
+ });
146
+ ```
147
+
148
+ ## `src/`
149
+
150
+ Shared application code such as components, utilities, and types. This directory has no special convention, so organize it however you like.
151
+
152
+ ## `public/`
153
+
154
+ Static assets served as-is at the root path. Files here are not processed by Vite.
155
+
156
+ ## `.void/`
157
+
158
+ Auto-generated directory (gitignored). Contains:
159
+
160
+ Generate or refresh it with `void prepare`, or let `vite dev` / `vite build` populate it during normal app workflows.
161
+
162
+ <FileTree :items="voidItems" default-expanded />
163
+
164
+ ## Config Files
165
+
166
+ | File | Purpose |
167
+ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
168
+ | `vite.config.ts` | Vite configuration. Must include `voidPlugin()`. |
169
+ | `void.json` | Optional Void config for [routing](/reference/config#routing), [inference](/reference/config#inference), and [worker settings](/reference/config#worker) |
170
+ | `tsconfig.json` | TypeScript config. Extend `.void/tsconfig.json` for auto-generated types; run `void init --tsconfig` when an existing config already uses `extends`. |
171
+ | `.env` | Public environment variables (committed) |
172
+ | `.env.local` | Secret variables for local dev (gitignored) |
173
+ | `.env.production` | Public production variables (committed) |
174
+ | `.env.production.local` | Production secrets for local testing (gitignored) |
175
+
176
+ See [Environment Variables](/guide/env-vars) for the full env file loading order.
package/.npmignore DELETED
@@ -1,29 +0,0 @@
1
- # Logs
2
- logs
3
- *.log
4
-
5
- # Runtime data
6
- pids
7
- *.pid
8
- *.seed
9
-
10
- # Directory for instrumented libs generated by jscoverage/JSCover
11
- lib-cov
12
-
13
- # Coverage directory used by tools like istanbul
14
- coverage
15
-
16
- # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
17
- .grunt
18
-
19
- # Compiled binary addons (http://nodejs.org/api/addons.html)
20
- build/Release
21
-
22
- # Dependency directory
23
- # Deployed apps should consider commenting this line out:
24
- # see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git
25
- node_modules
26
-
27
- .DS_Store
28
-
29
- .env
package/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- language: node_js
2
- node_js:
3
- - '0.11'
4
- - '0.10'
5
- env:
6
- global:
7
- - secure: xGFuq3RAytMDckBZg+U+sX7ewyKdrDMEhAXoVZovhXdygmAmT9kEQksQHYPHUwYNpsCYQPNHa9aFOZ6JUgWlcFU3l425YEP8QTlkcchIlbWSCbpa2GTfqUR+e2kPbnvYhbcT0cX0D6WAa1+QUn9rQNXOXHlLwCF1vzlu4XO+n7Y=
8
- - secure: olCdl0Ykg77MN/SXDqe31C34LcbjWrQD73AUuMs7syEFg0ixsoJJSSNKw81X3cF8geS3RwensrirNHsZFpwp1VAy+yPelvaaXhyXUn0aCj2ObRE544Yj5rLSw2MS+vLBtxPwbizLsD0fe90K4geOhZyj2fFbcz1olUWzVWfnyHI=
9
- - secure: t/d2ATp/6Xgx0Js081HdDpiHn7+g7699lrLhljFEZRxBDK2FQOmr3U3ejdsGfut2hA24+8ub/RZgVmuCfbqbpeMZHSqmaBFRz7SEdd3syfCqYBeAQnZe+XwEKsKmsZxUvgOex3sXmrkGi4xZSIfrANabojjEP/msg/p/ZLeEfus=
package/favicon.ico DELETED
Binary file
package/index.js DELETED
@@ -1,14 +0,0 @@
1
- var AWS = require('aws-sdk'),
2
- Void = require('./lib/Void.js');
3
- Job = require('./lib/Job.js');
4
-
5
- var v = new Void({
6
- paths : [
7
- '/index.html',
8
- '/index2.html',
9
- '/foo/bar.html',
10
- '/foo2/bar2.html'
11
- ],
12
- maxPaths : 1,
13
- maxJobs : 3
14
- });
package/lib/Job.js DELETED
@@ -1,150 +0,0 @@
1
- // External dependencies
2
- var AWS = require('aws-sdk'),
3
- extend = require('jquery-extend');
4
-
5
-
6
- // Constructor
7
- var Job = function( options ) {
8
-
9
- // Defaults
10
- var defaults = {
11
- name : Math.random().toString(36).substr(2, 5).toUpperCase(), // Random name for logging, can be overridden
12
- prefix : '', // Optional prefix for logging
13
- id : '', // Assigned by CloudFront
14
- paths : [], // Array of paths
15
- status : 'paused', // Status string, one of 'paused', 'running', 'complete'
16
- cloudfront : new AWS.CloudFront(), // Credentialed AWS-SDK object
17
- distribution : process.env.DISTRIBUTION_ID,
18
- running : null, // Timestamp when the job started running
19
- checking : null, // Timestamp when the invalidation was created
20
- createInterval : 2, // Minutes to wait before retrying to create an `Invalidation`
21
- createTimeout : 30, // Minutes to wait after 'running' status to quit trying to create an invalidation
22
- checkDelay : 10, // Minutes to wait before the first status check
23
- checkInterval : 2, // Minutes to wait between 2nd-Nth status checks
24
- checkTimeout : 20, // Minutes to wait after the invalidation is created to quit and stop checking for progress
25
- complete : null, // Optional callback to fire when invalidation completes
26
- timeout : null // Optional callback to fire when invalidation completes
27
- };
28
-
29
- // Extend `this` by our `defaults` and `options`
30
- extend(true, this, defaults, options);
31
-
32
- // Return this for chaining
33
- return this;
34
- }
35
-
36
-
37
- // Run the job
38
- Job.prototype.run = function() {
39
- this.status = 'running';
40
- this.running = +new Date;
41
- this.create();
42
- }
43
-
44
-
45
- // Attempt to create the invalidation
46
- Job.prototype.create = function() {
47
-
48
- // See if we've timed out
49
- if( (+new Date-this.running) > this.createTimeout * 60000 ) {
50
- var message = 'Timeout: could not create invalidation after ' + this.createTimeout + ' minutes';
51
- this.log(message);
52
- if(typeof this.timeout == 'function') this.timeout(null, message, this);
53
- return;
54
- }
55
-
56
- // Setup some data for the API
57
- var params = {
58
- DistributionId: this.distribution,
59
- InvalidationBatch: {
60
- CallerReference: this.name,
61
- Paths: {
62
- Quantity: this.paths.length,
63
- Items: this.paths
64
- }
65
- }
66
- };
67
-
68
- // Send the request to AWS CloudFront
69
- this.cloudfront.createInvalidation(params, function(err, data) {
70
- if(err) {
71
- if(err.code == 'TooManyInvalidationsInProgress') {
72
- this.log('Too many invalidations, retrying in ' + this.createInterval + ' minute(s)');
73
- setTimeout(this.create.bind(this), this.createInterval*60000);
74
- } else {
75
- this.log('Failed: ' + err.message);
76
- }
77
- } else {
78
- this.id = data.Id;
79
- this.log('Invalidation "' + this.id + '" created. Checking in ' + this.checkDelay + ' minute(s)...');
80
- this.checking = +new Date;
81
- setTimeout(this.check.bind(this), this.checkDelay*60000);
82
- }
83
- }.bind(this));
84
- }
85
-
86
-
87
- // Get the invalidation status from the API
88
- Job.prototype.check = function() {
89
-
90
- // See if we've timed out
91
- if( (+new Date-this.checking) > this.checkTimeout * 60000 ) {
92
- var message = 'Timeout: stopped checking invalidation after ' + this.checkTimeout + ' minutes';
93
- this.log(message);
94
- if(typeof this.timeout == 'function') this.timeout(null, message, this);
95
- return;
96
- }
97
-
98
- // Setup some data for the API
99
- var params = {
100
- DistributionId: this.distribution,
101
- Id: this.id
102
- };
103
-
104
- // Send the request to AWS CloudFront
105
- this.cloudfront.getInvalidation(params, function(err, data) {
106
- if (err) {
107
- this.log(err, err.stack);
108
- this.complete(err);
109
- return;
110
- }
111
-
112
- // Handle the status we get back
113
- switch( data.Status ) {
114
- case 'InProgress':
115
- this.log('In progress, re-checking in ' + this.checkInterval + ' minute(s)...');
116
- setTimeout(this.check.bind(this), this.checkInterval*60000);
117
- return;
118
- case 'Completed':
119
- this.status = 'complete';
120
- var message = 'Invalidation "' + this.id + '" completed!';
121
- this.log(message);
122
- if(typeof this.complete == 'function') this.complete(null, message, this);
123
- return;
124
- default:
125
- console.log(data); // something unexpected happened
126
- return;
127
- }
128
-
129
- }.bind(this));
130
- }
131
-
132
-
133
- // Log labeled messages
134
- Job.prototype.log = function( message ) {
135
- message = '[Job:' + this.name + '] ' + message;
136
- if( this.prefix ) message = this.prefix + message;
137
- console.log(message);
138
- }
139
-
140
-
141
- // Throw labeled errors
142
- Job.prototype.err = function( message ) {
143
- message = '[Job:' + this.name + '] ' + message;
144
- if( this.prefix ) message = this.prefix + message;
145
- throw new Error(message);
146
- }
147
-
148
-
149
- // Export the constructor
150
- module.exports = Job;
package/lib/Void.js DELETED
@@ -1,99 +0,0 @@
1
- // External dependancies
2
- var AWS = require('aws-sdk'),
3
- extend = require('jquery-extend'),
4
- Job = require('./Job.js'),
5
- scan = require('./scan.js');
6
-
7
- // Constructor
8
- var Void = function( options ) {
9
-
10
- // Defaults
11
- var defaults = {
12
- name : Math.random().toString(36).substr(2, 5).toUpperCase(), // Random name for logging, can be overridden
13
- distribution : process.env.DISTRIBUTION_ID, // AWS distribution id
14
- paths : [], // Paths to be cleared
15
- dirs : [], // Dirs to be scanned and added to `paths`
16
- poison : [], // Paths to be removed from `paths`
17
- queue : [], // Queue of invalidations
18
- maxPaths : 2, // Max number of paths per invalidation
19
- maxJobs : 3, // Max number of simultaneous `Job` objects
20
- cloudfront : new AWS.CloudFront() // Credentialed AWS-SDK object
21
- };
22
-
23
- // Extend `this` by our `defaults` and `options`
24
- extend(true, this, defaults, options);
25
-
26
- // Recurse `dirs` and add to `paths`
27
- this.dirs.forEach(function(dir) {
28
- var paths = scan(dir);
29
- this.paths = this.paths.concat(paths)
30
- }, this);
31
-
32
- // Remove `poison` items from `paths`
33
- this.poison.forEach(function(path) {
34
- var i = this.paths.indexOf(path);
35
- if( i > -1 ) this.paths.splice(i, 1);
36
- }, this);
37
-
38
- // Batch up paths into jobs and place them in the queue
39
- this.populateQueue();
40
-
41
- // Run the max number of jobs (or all jobs if fewer than max)
42
- var max = ( this.queue.length < this.maxJobs ) ? this.queue.length : this.maxJobs;
43
- for(i=0; i<max; i++) this.queue[i].run();
44
-
45
- };
46
-
47
-
48
- // Callback to loop over the queue and activate a job or notify when complete
49
- Void.prototype.runNextJob = function(err, data) {
50
- if(err) this.err(err);
51
-
52
- var counter = 0;
53
- for(i=0; i<this.queue.length; i++) {
54
- var job = this.queue[i];
55
- if(job.status == 'paused') {
56
- job.run();
57
- return;
58
- } else if(job.status == 'complete') {
59
- counter++;
60
- }
61
- }
62
- if( counter == this.queue.length ) this.log('All jobs complete!');
63
- };
64
-
65
-
66
- // Batch up our raw data into jobs and place them in the queue
67
- Void.prototype.populateQueue = function() {
68
- var counter = 0;
69
-
70
- for(i=0, j=this.paths.length; i<j; i+=this.maxPaths) {
71
- var subset = this.paths.slice(i, i+this.maxPaths);
72
-
73
- this.queue.push( new Job({
74
- prefix : '[Void:' + this.name + ']',
75
- paths : subset,
76
- complete : this.runNextJob.bind(this)
77
- }) );
78
-
79
- counter++;
80
- }
81
-
82
- this.log('Created ' + counter + ' item(s) in the queue');
83
- }
84
-
85
-
86
- // Log labeled messages
87
- Void.prototype.log = function( message ) {
88
- console.log('[Void:' + this.name + '] ' + message);
89
- }
90
-
91
-
92
- // Throw labeled errors
93
- Void.prototype.err = function( message ) {
94
- throw new Error('[Void:' + this.name + '] ' + message);
95
- }
96
-
97
-
98
- // Export the constructor
99
- module.exports = Void;
package/lib/scan.js DELETED
@@ -1,19 +0,0 @@
1
- // External dependancies
2
- var file = require('file');
3
-
4
- // Our helper function
5
- var scan = function( dir ) {
6
-
7
- var path = process.cwd() + dir;
8
- var arr = [];
9
-
10
- file.walkSync(dir, function(dirPath, dirs, files) {
11
- files.forEach(function(file) {
12
- arr.push(dirPath.replace(dir, '') + '/' + file);
13
- });
14
- });
15
-
16
- return arr;
17
- }
18
-
19
- module.exports = scan;
@@ -1,20 +0,0 @@
1
- // External dependancies
2
- var assert = require('assert'),
3
- should = require('should');
4
-
5
-
6
- describe('AWS credentials', function() {
7
-
8
- it('should throw an error if AWS_ACCESS_KEY_ID is undefined in the environment', function() {
9
- assert.notEqual(process.env.AWS_ACCESS_KEY_ID, undefined);
10
- });
11
-
12
- it('should throw an error if AWS_SECRET_ACCESS_KEY is undefined in the environment', function() {
13
- assert.notEqual(process.env.AWS_SECRET_ACCESS_KEY, undefined );
14
- });
15
-
16
- it('should throw an error if DISTRIBUTION_ID is undefined in the environment', function() {
17
- assert.notEqual(process.env.DISTRIBUTION_ID, undefined );
18
- });
19
-
20
- });
package/test/job.js DELETED
@@ -1,64 +0,0 @@
1
- // External dependancies
2
- var assert = require('assert'),
3
- should = require('should'),
4
- Job = require('../lib/Job.js'),
5
- AWS = require('aws-sdk');
6
-
7
-
8
- // Constructor
9
- describe('Job', function() {
10
-
11
- /* *
12
- * Validation
13
- */
14
-
15
- it('should have a 5 character name property', function() {
16
- var job = new Job;
17
- assert.equal(job.name.length, 5);
18
- });
19
-
20
- it('should have at least one path item', function() {
21
- var job = new Job({
22
- paths : ['/index.html'],
23
- });
24
- assert.notEqual(job.paths.length, 0);
25
- });
26
-
27
-
28
- /* *
29
- * Timeouts
30
- */
31
-
32
- /*it('should timeout while creating the invalidation', function(done) {
33
- this.timeout(60000 * 20);
34
- var job = new Job({
35
- paths : [
36
- '/index1.html',
37
- '/index2.html',
38
- '/index3.html',
39
- '/index4.html'
40
- ],
41
- createTimeout : 0.1,
42
- createInterval : 0.1,
43
- maxPaths : 1,
44
- maxJobs : 4,
45
- timeout : done
46
- }).run();
47
- });*/
48
-
49
- /*it('should timeout while checking the invalidation', function(done) {
50
- this.timeout(60000 * 20);
51
- var job = new Job({
52
- paths : ['/foo/bar.html'],
53
- createInterval : 0.1,
54
- checkTimeout : 0.1,
55
- checkDelay : 0.1,
56
- checkInterval : 0.1,
57
- timeout : function() {
58
- done();
59
- }
60
- });
61
- job.run();
62
- });*/
63
-
64
- });
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/test/void.js DELETED
@@ -1,31 +0,0 @@
1
- // External dependancies
2
- var assert = require('assert'),
3
- should = require('should'),
4
- Void = require('../lib/Void.js');
5
-
6
-
7
- // Constructor
8
- describe('Void', function() {
9
-
10
- /* *
11
- * Queue building
12
- */
13
-
14
- it('should have a queue of length 6', function() {
15
- var v = new Void({
16
- paths : ['/css/custom.css', '/index.html'],
17
- dirs : ['test/static']
18
- });
19
- assert.equal(v.queue.length, 6);
20
- });
21
-
22
- it('should have a queue of length 5 because of the poison list', function() {
23
- var v = new Void({
24
- paths : ['/css/custom.css', '/index.html'],
25
- dirs : ['test/static'],
26
- poison : ['/test1.html', '/test2.html']
27
- });
28
- assert.equal(v.queue.length, 5);
29
- });
30
-
31
- });