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,625 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ <script setup>
6
+ function mdFileItems(ext) {
7
+ return [
8
+ {
9
+ name: "pages/",
10
+ children: [
11
+ { name: `layout.island${ext}` },
12
+ { name: `index.island${ext}` },
13
+ {
14
+ name: "docs/",
15
+ children: [
16
+ { name: `layout.island${ext}`, description: "docs layout (sidebar, TOC)" },
17
+ { name: "getting-started.md" },
18
+ { name: "configuration.md" },
19
+ {
20
+ name: "guides/",
21
+ children: [
22
+ { name: "deployment.md" },
23
+ ],
24
+ },
25
+ ],
26
+ },
27
+ ],
28
+ },
29
+ ]
30
+ }
31
+
32
+ </script>
33
+
34
+ # Markdown
35
+
36
+ Markdown pages let you use `.md` files as first-class pages in Void's file-based routing. They compile to static HTML at build time with zero client JavaScript, integrate with the layout chain, and can embed interactive framework components as [islands](./islands).
37
+
38
+ The `@void/md` package is opt-in as it contains markdown processing and syntax highlighting dependencies that are not necessarily needed in every app.
39
+
40
+ ## Setup
41
+
42
+ Install `@void/md` alongside your framework adapter:
43
+
44
+ ::: code-group
45
+
46
+ ```sh [React]
47
+ npm install @void/md @void/react
48
+ ```
49
+
50
+ ```sh [Vue]
51
+ npm install @void/md @void/vue
52
+ ```
53
+
54
+ ```sh [Svelte]
55
+ npm install @void/md @void/svelte
56
+ ```
57
+
58
+ ```sh [Solid]
59
+ npm install @void/md @void/solid
60
+ ```
61
+
62
+ :::
63
+
64
+ Add the plugin to your Vite config **after** the framework adapter:
65
+
66
+ ::: code-group
67
+
68
+ ```ts [React]
69
+ // vite.config.ts
70
+ import { defineConfig } from 'vite';
71
+ import { voidPlugin } from 'void';
72
+ import { voidReact } from '@void/react/plugin';
73
+ import { voidMarkdown } from '@void/md/plugin';
74
+
75
+ export default defineConfig({
76
+ plugins: [voidPlugin(), voidReact(), voidMarkdown()],
77
+ });
78
+ ```
79
+
80
+ ```ts [Vue]
81
+ // vite.config.ts
82
+ import { defineConfig } from 'vite';
83
+ import { voidPlugin } from 'void';
84
+ import { voidVue } from '@void/vue/plugin';
85
+ import { voidMarkdown } from '@void/md/plugin';
86
+
87
+ export default defineConfig({
88
+ plugins: [voidPlugin(), voidVue(), voidMarkdown()],
89
+ });
90
+ ```
91
+
92
+ ```ts [Svelte]
93
+ // vite.config.ts
94
+ import { defineConfig } from 'vite';
95
+ import { voidPlugin } from 'void';
96
+ import { voidSvelte } from '@void/svelte/plugin';
97
+ import { voidMarkdown } from '@void/md/plugin';
98
+
99
+ export default defineConfig({
100
+ plugins: [voidPlugin(), voidSvelte(), voidMarkdown()],
101
+ });
102
+ ```
103
+
104
+ ```ts [Solid]
105
+ // vite.config.ts
106
+ import { defineConfig } from 'vite';
107
+ import { voidPlugin } from 'void';
108
+ import { voidSolid } from '@void/solid/plugin';
109
+ import { voidMarkdown } from '@void/md/plugin';
110
+
111
+ export default defineConfig({
112
+ plugins: [voidPlugin(), voidSolid(), voidMarkdown()],
113
+ });
114
+ ```
115
+
116
+ :::
117
+
118
+ That's it. Any `.md` file in `pages/` is now a routable page.
119
+
120
+ ## Page Anatomy
121
+
122
+ A markdown page has three optional parts: a script block, frontmatter, and the body.
123
+
124
+ ```md
125
+ <script>
126
+ import Counter from "../components/Counter.vue" with { island: "visible" }
127
+ </script>
128
+
129
+ ---
130
+
131
+ title: Getting Started
132
+ description: Learn how to use Void
133
+
134
+ ---
135
+
136
+ # Getting Started
137
+
138
+ Welcome to Void. Here's an interactive demo:
139
+
140
+ <Counter />
141
+ ```
142
+
143
+ - **`<script>` block:** extracted before markdown compilation. Island imports use `with { island: "..." }` syntax (see [islands](./islands)). Any other code in the block becomes a [client script](#client-scripts) that runs in the browser.
144
+ - **Frontmatter:** YAML metadata between `---` fences. Layouts can read it through [`useFrontmatter()`](#frontmatter-access).
145
+ - **Body:** standard markdown plus GFM. Uppercase tags such as `<Counter />` reference imported components and render as islands.
146
+
147
+ ## Client Scripts
148
+
149
+ The `<script>` block can contain both island imports and regular JavaScript. Island imports (with `{ island }`) go through the SSR + hydration pipeline as usual. Everything else is bundled as a client module and executed when the page loads.
150
+
151
+ ```md
152
+ <script>
153
+ import Counter from "./Counter.vue" with { island: "visible" }
154
+ import { format } from "date-fns"
155
+
156
+ document.querySelector('.date').textContent = format(new Date(), 'PPP')
157
+ </script>
158
+
159
+ # My Post
160
+
161
+ <Counter />
162
+
163
+ Published: <span class="date"></span>
164
+ ```
165
+
166
+ In this example:
167
+
168
+ - `Counter` is an island, so it is SSR'd and hydrated on the client
169
+ - `date-fns` and the `querySelector` call are client code, so they are bundled and run on page load
170
+
171
+ Each page's client script is code-split into its own chunk via dynamic import, so only the current page's script is loaded. Pages without client code ship zero extra JS.
172
+
173
+ Client scripts work in both dev (served on-demand, HMR support) and production builds.
174
+
175
+ ## File Structure
176
+
177
+ Markdown pages live in `pages/` alongside regular pages and route the same way:
178
+
179
+ <FileTree :items="mdFileItems" adapter-tabs default-expanded />
180
+
181
+ A `.md` file inherits layouts, supports companion `.server.ts` files for dynamic data, and [auto-prerenders](/guide/edge/prerendering) when static. The rules are the same as any other page.
182
+
183
+ ## Frontmatter Access
184
+
185
+ Use `useFrontmatter()` in layout components to read the current page's frontmatter:
186
+
187
+ ::: code-group
188
+
189
+ ```tsx [React]
190
+ import { useFrontmatter } from '@void/md';
191
+
192
+ export default function DocsLayout({ children }) {
193
+ const fm = useFrontmatter();
194
+ return (
195
+ <div>
196
+ <h1>{fm.title}</h1>
197
+ {children}
198
+ </div>
199
+ );
200
+ }
201
+ ```
202
+
203
+ ```vue [Vue]
204
+ <script setup>
205
+ import { useFrontmatter } from '@void/md';
206
+
207
+ const fm = useFrontmatter();
208
+ // fm.title, fm.description, etc.
209
+ </script>
210
+
211
+ <template>
212
+ <h1>{{ fm.title }}</h1>
213
+ <slot />
214
+ </template>
215
+ ```
216
+
217
+ ```svelte [Svelte]
218
+ <script>
219
+ import { useFrontmatter } from "@void/md";
220
+
221
+ const fm = useFrontmatter();
222
+ </script>
223
+
224
+ <h1>{fm.title}</h1>
225
+ <slot />
226
+ ```
227
+
228
+ ```tsx [Solid]
229
+ import { useFrontmatter } from '@void/md';
230
+
231
+ export default function DocsLayout(props) {
232
+ const fm = useFrontmatter();
233
+ return (
234
+ <div>
235
+ <h1>{fm.title}</h1>
236
+ {props.children}
237
+ </div>
238
+ );
239
+ }
240
+ ```
241
+
242
+ :::
243
+
244
+ ## Pages Virtual Module
245
+
246
+ Import `@void/md/pages` to get metadata for all markdown pages at build time. Use it to build sidebars, navigation, or search indexes:
247
+
248
+ ```ts
249
+ import pages from '@void/md/pages';
250
+ // [{ path: "/docs/getting-started", title: "Getting Started", frontmatter: {...}, headings: [...] }, ...]
251
+ ```
252
+
253
+ Each entry has this shape:
254
+
255
+ ```ts
256
+ interface MdPage {
257
+ path: string; // route path
258
+ title: string; // from frontmatter.title or first h1
259
+ frontmatter: Record<string, unknown>; // full parsed frontmatter
260
+ headings: { depth: number; slug: string; text: string }[]; // extracted headings
261
+ }
262
+ ```
263
+
264
+ The array is sorted by path and updates on HMR in dev when `.md` files are added, removed, or changed.
265
+
266
+ ## Default CSS Theme
267
+
268
+ The markdown plugin provides a minimal default theme. Unlike Vitepress, this theme is CSS only - it is designed to be built on top of. The theme ships two entry points depending on your needs:
269
+
270
+ ### Full theme (reset + baseline + content)
271
+
272
+ For standalone markdown sites that need a complete stylesheet, use this package. It includes a modern CSS reset, baseline body styles, and all markdown content styles:
273
+
274
+ ```css
275
+ @import '@void/md/theme.css';
276
+ ```
277
+
278
+ ### Content only (scoped to `.void-md`)
279
+
280
+ For embedding markdown in an existing app that already has its own reset and global styles, use this one. It only includes the `.void-md`-scoped content styles:
281
+
282
+ ```css
283
+ @import '@void/md/theme-content.css';
284
+ ```
285
+
286
+ ### Usage
287
+
288
+ Wrap your markdown content in a `.void-md` element to scope the styles:
289
+
290
+ ```html
291
+ <main class="void-md">
292
+ <slot />
293
+ </main>
294
+ ```
295
+
296
+ The theme covers:
297
+
298
+ - **Prose:** headings, paragraphs, lists, blockquotes, tables, inline code, links, horizontal rules, task lists, `<kbd>`, `<mark>`, definition lists, and footnotes. Dark mode works through `prefers-color-scheme` and the `data-theme` attribute.
299
+ - **Code blocks:** Shiki dual-theme highlighting with CSS-driven switching and zero JS.
300
+ - **Containers:** styles for `:::tip`, `:::warning`, `:::danger`, `:::info`, and `:::details`.
301
+ - **GitHub alerts:** support for `> [!NOTE]`, `> [!TIP]`, `> [!WARNING]`, and similar syntax.
302
+
303
+ ### CSS Variables
304
+
305
+ All styles are customizable via CSS variables set on `.void-md`. Override them to match your brand:
306
+
307
+ ```css
308
+ .void-md {
309
+ --vmd-link: #8b5cf6;
310
+ --vmd-link-hover: #7c3aed;
311
+ }
312
+ ```
313
+
314
+ | Variable | Light default | Dark default | Description |
315
+ | ------------------- | ------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------------- |
316
+ | `--vmd-font-body` | `system-ui, -apple-system, "Segoe UI", Roboto, sans-serif` | default | Body font stack |
317
+ | `--vmd-font-mono` | `ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace` | default | Monospace font stack |
318
+ | `--vmd-text` | `#1a1a2e` | `#e2e8f0` | Primary text color |
319
+ | `--vmd-text-muted` | `#64748b` | `#94a3b8` | Secondary/muted text (blockquotes, line numbers, footnotes) |
320
+ | `--vmd-link` | `#2563eb` | `#60a5fa` | Link color |
321
+ | `--vmd-link-hover` | `#1d4ed8` | `#93bbfd` | Link hover color |
322
+ | `--vmd-border` | `#e2e8f0` | `#334155` | Borders (h2 underline, tables, inline code, `<kbd>`, horizontal rules) |
323
+ | `--vmd-bg-soft` | `#f8fafc` | `#1e293b` | Soft background (table headers, inline code, code blocks, `<kbd>`) |
324
+ | `--vmd-line-height` | `1.75` | default | Body line height |
325
+
326
+ Dark mode values apply automatically via `prefers-color-scheme: dark` (auto mode) and `[data-theme="dark"]` (explicit toggle). To force light mode on a dark-preference system, set `data-theme="light"` on `<html>`.
327
+
328
+ Users who want full control can skip the import and write their own CSS.
329
+
330
+ ## Markdown Features
331
+
332
+ All features produce static HTML at build time with zero client JS (except the copy button).
333
+
334
+ ### Containers
335
+
336
+ ```md
337
+ ::: tip
338
+ Helpful advice here.
339
+ :::
340
+
341
+ ::: warning
342
+ Watch out for this.
343
+ :::
344
+
345
+ ::: danger
346
+ This will break things.
347
+ :::
348
+
349
+ ::: info
350
+ Some context.
351
+ :::
352
+
353
+ ::: details Click to expand
354
+ Hidden content here.
355
+ :::
356
+ ```
357
+
358
+ Custom titles work too: `::: tip Pro Tip`.
359
+
360
+ ### GitHub Alerts
361
+
362
+ ```md
363
+ > [!NOTE]
364
+ > Useful information.
365
+
366
+ > [!TIP]
367
+ > Helpful advice.
368
+
369
+ > [!IMPORTANT]
370
+ > Key information.
371
+
372
+ > [!WARNING]
373
+ > Potential issues.
374
+
375
+ > [!CAUTION]
376
+ > Dangerous actions.
377
+ ```
378
+
379
+ ### Syntax Highlighting
380
+
381
+ Code blocks are highlighted at build time with [Shiki](https://shiki.style) using dual light and dark themes by default: `github-light` and `github-dark`. No client-side JavaScript is needed because theme switching is pure CSS.
382
+
383
+ ### Line Highlighting
384
+
385
+ Highlight specific lines with `{lines}` in the code fence meta:
386
+
387
+ ````md
388
+ ```ts {1,3-5}
389
+ const a = 1; // highlighted
390
+ const b = 2;
391
+ const c = 3; // highlighted
392
+ const d = 4; // highlighted
393
+ const e = 5; // highlighted
394
+ ```
395
+ ````
396
+
397
+ ### Diff, Focus, and Error Levels
398
+
399
+ Use inline comments to annotate lines:
400
+
401
+ ```ts
402
+ export function hello() {
403
+ console.log('old'); // [!code --]
404
+ console.log('new'); // [!code ++]
405
+ console.log('look here'); // [!code focus]
406
+ console.log('problem'); // [!code error]
407
+ console.log('careful'); // [!code warning]
408
+ }
409
+ ```
410
+
411
+ ### Copy Button
412
+
413
+ Code blocks include a copy button. That is the only feature here that needs client-side JS, and it only adds a roughly 200 byte inline script for the clipboard API. The script is injected only when code blocks are present.
414
+
415
+ ### Line Numbers
416
+
417
+ Enable per code block with `:line-numbers` or disable with `:no-line-numbers`:
418
+
419
+ ````md
420
+ ```ts :line-numbers
421
+ const a = 1;
422
+ const b = 2;
423
+ ```
424
+ ````
425
+
426
+ Start from a specific number with `:line-numbers=5`.
427
+
428
+ ### Snippet Imports
429
+
430
+ Import code from external files:
431
+
432
+ ```md
433
+ <<< ./path/to/file.ts
434
+ ```
435
+
436
+ ### Emoji
437
+
438
+ Shortcodes convert to unicode: `:tada:` becomes :tada:, `:rocket:` becomes :rocket:.
439
+
440
+ ### Attributes
441
+
442
+ Add classes, IDs, or attributes to any element:
443
+
444
+ ```md
445
+ # Heading {.custom-class #my-id}
446
+
447
+ Paragraph with attributes. {.note}
448
+ ```
449
+
450
+ ### Heading Anchors
451
+
452
+ All headings get permalink anchors automatically, enabling direct linking to any section.
453
+
454
+ ### Table of Contents
455
+
456
+ Use the `[[toc]]` directive to render an inline table of contents from the page's headings.
457
+
458
+ ### Images
459
+
460
+ Image paths are normalized automatically. Images are lazy-loaded by default.
461
+
462
+ ### Links
463
+
464
+ External links automatically get `target="_blank" rel="noreferrer"`. Internal `.md` references resolve to their route paths.
465
+
466
+ ## Plugin Options
467
+
468
+ ```ts
469
+ voidMarkdown({
470
+ shiki: {
471
+ themes: { light: 'github-light', dark: 'github-dark' }, // Shiki themes
472
+ langs: ['sql', 'graphql'], // additional languages
473
+ },
474
+ });
475
+ ```
476
+
477
+ | Option | Type | Default | Description |
478
+ | -------------- | -------------------------------- | ------------------------------------------------ | ---------------------------- |
479
+ | `shiki.themes` | `{ light: string; dark: string}` | `{ light: "github-light", dark: "github-dark" }` | Shiki color themes |
480
+ | `shiki.langs` | `string[]` | Common web languages | Additional languages to load |
481
+
482
+ ## Example: Docs Layout with Sidebar
483
+
484
+ Here's a full example of a docs layout using `useFrontmatter()` and `@void/md/pages` to build a sidebar:
485
+
486
+ ::: code-group
487
+
488
+ ```tsx [React]
489
+ // pages/docs/layout.island.tsx
490
+ import '@void/md/theme-content.css';
491
+ import { useFrontmatter } from '@void/md';
492
+ import pages from '@void/md/pages';
493
+ import { useRouter } from '@void/react';
494
+
495
+ const docPages = pages.filter((p) => p.path.startsWith('/docs/'));
496
+
497
+ export default function DocsLayout({ children }) {
498
+ const fm = useFrontmatter();
499
+ const { path } = useRouter();
500
+
501
+ return (
502
+ <div className="docs-layout">
503
+ <aside>
504
+ <nav>
505
+ {docPages.map((page) => (
506
+ <a key={page.path} href={page.path} className={page.path === path ? 'active' : ''}>
507
+ {page.title}
508
+ </a>
509
+ ))}
510
+ </nav>
511
+ </aside>
512
+ <main className="void-md">
513
+ <h1>{fm.title}</h1>
514
+ {children}
515
+ </main>
516
+ </div>
517
+ );
518
+ }
519
+ ```
520
+
521
+ ```vue [Vue]
522
+ <!-- pages/docs/layout.island.vue -->
523
+ <script setup>
524
+ import { useFrontmatter } from '@void/md';
525
+ import pages from '@void/md/pages';
526
+ import { useRouter } from '@void/vue';
527
+
528
+ const fm = useFrontmatter();
529
+ const { path } = useRouter();
530
+ const docPages = pages.filter((p) => p.path.startsWith('/docs/'));
531
+ </script>
532
+
533
+ <style>
534
+ @import '@void/md/theme-content.css';
535
+ </style>
536
+
537
+ <template>
538
+ <div class="docs-layout">
539
+ <aside>
540
+ <nav>
541
+ <a
542
+ v-for="page in docPages"
543
+ :key="page.path"
544
+ :href="page.path"
545
+ :class="{ active: page.path === path }"
546
+ >
547
+ {{ page.title }}
548
+ </a>
549
+ </nav>
550
+ </aside>
551
+ <main class="void-md">
552
+ <h1>{{ fm.title }}</h1>
553
+ <slot />
554
+ </main>
555
+ </div>
556
+ </template>
557
+ ```
558
+
559
+ ```svelte [Svelte]
560
+ <!-- pages/docs/layout.island.svelte -->
561
+ <script>
562
+ import "@void/md/theme-content.css";
563
+ import { useFrontmatter } from "@void/md";
564
+ import pages from "@void/md/pages";
565
+ import { useRouter } from "@void/svelte";
566
+
567
+ const fm = useFrontmatter();
568
+ const { path } = useRouter();
569
+ const docPages = pages.filter((p) => p.path.startsWith("/docs/"));
570
+ </script>
571
+
572
+ <div class="docs-layout">
573
+ <aside>
574
+ <nav>
575
+ {#each docPages as page}
576
+ <a href={page.path} class:active={page.path === path}>
577
+ {page.title}
578
+ </a>
579
+ {/each}
580
+ </nav>
581
+ </aside>
582
+ <main class="void-md">
583
+ <h1>{fm.title}</h1>
584
+ <slot />
585
+ </main>
586
+ </div>
587
+ ```
588
+
589
+ ```tsx [Solid]
590
+ // pages/docs/layout.island.tsx
591
+ import '@void/md/theme-content.css';
592
+ import { useFrontmatter } from '@void/md';
593
+ import pages from '@void/md/pages';
594
+ import { useRouter } from '@void/solid';
595
+ import { For } from 'solid-js';
596
+
597
+ const docPages = pages.filter((p) => p.path.startsWith('/docs/'));
598
+
599
+ export default function DocsLayout(props) {
600
+ const fm = useFrontmatter();
601
+ const { path } = useRouter();
602
+
603
+ return (
604
+ <div class="docs-layout">
605
+ <aside>
606
+ <nav>
607
+ <For each={docPages}>
608
+ {(page) => (
609
+ <a href={page.path} classList={{ active: page.path === path() }}>
610
+ {page.title}
611
+ </a>
612
+ )}
613
+ </For>
614
+ </nav>
615
+ </aside>
616
+ <main class="void-md">
617
+ <h1>{fm.title}</h1>
618
+ {props.children}
619
+ </main>
620
+ </div>
621
+ );
622
+ }
623
+ ```
624
+
625
+ :::