gorsee 0.2.3 → 0.2.5

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 (532) hide show
  1. package/README.md +261 -213
  2. package/dist-pkg/ai/artifact-lifecycle.d.ts +25 -0
  3. package/dist-pkg/ai/artifact-lifecycle.js +98 -0
  4. package/dist-pkg/ai/bridge.d.ts +26 -0
  5. package/dist-pkg/ai/bridge.js +82 -0
  6. package/dist-pkg/ai/bundle.d.ts +46 -0
  7. package/dist-pkg/ai/bundle.js +247 -0
  8. package/dist-pkg/ai/contracts.d.ts +1 -0
  9. package/dist-pkg/ai/contracts.js +1 -0
  10. package/dist-pkg/ai/ide.d.ts +37 -0
  11. package/dist-pkg/ai/ide.js +56 -0
  12. package/dist-pkg/ai/index.d.ts +85 -0
  13. package/dist-pkg/ai/index.js +267 -0
  14. package/dist-pkg/ai/json.d.ts +6 -0
  15. package/dist-pkg/ai/json.js +14 -0
  16. package/dist-pkg/ai/mcp.d.ts +28 -0
  17. package/dist-pkg/ai/mcp.js +152 -0
  18. package/dist-pkg/ai/session-pack.d.ts +28 -0
  19. package/dist-pkg/ai/session-pack.js +57 -0
  20. package/dist-pkg/ai/store.d.ts +67 -0
  21. package/dist-pkg/ai/store.js +174 -0
  22. package/dist-pkg/ai/summary.d.ts +57 -0
  23. package/dist-pkg/ai/summary.js +148 -0
  24. package/dist-pkg/ai/watch.d.ts +15 -0
  25. package/dist-pkg/ai/watch.js +66 -0
  26. package/dist-pkg/auth/action-tokens.d.ts +50 -0
  27. package/dist-pkg/auth/action-tokens.js +79 -0
  28. package/dist-pkg/auth/index.d.ts +70 -0
  29. package/dist-pkg/auth/index.js +199 -0
  30. package/dist-pkg/auth/redis-session-store.d.ts +7 -0
  31. package/dist-pkg/auth/redis-session-store.js +42 -0
  32. package/dist-pkg/auth/signing.d.ts +4 -0
  33. package/dist-pkg/auth/signing.js +33 -0
  34. package/dist-pkg/auth/sqlite-session-store.d.ts +12 -0
  35. package/dist-pkg/auth/sqlite-session-store.js +83 -0
  36. package/dist-pkg/auth/store-utils.d.ts +2 -0
  37. package/dist-pkg/auth/store-utils.js +20 -0
  38. package/dist-pkg/bin/gorsee.js +2 -0
  39. package/dist-pkg/build/backends/experimental-rolldown.d.ts +6 -0
  40. package/dist-pkg/build/backends/experimental-rolldown.js +9 -0
  41. package/dist-pkg/build/backends/register.d.ts +7 -0
  42. package/dist-pkg/build/backends/register.js +24 -0
  43. package/dist-pkg/build/backends/rolldown.d.ts +16 -0
  44. package/dist-pkg/build/backends/rolldown.js +176 -0
  45. package/dist-pkg/build/client-backend.d.ts +31 -0
  46. package/dist-pkg/build/client-backend.js +97 -0
  47. package/dist-pkg/build/client.d.ts +12 -0
  48. package/dist-pkg/build/client.js +93 -0
  49. package/dist-pkg/build/css-modules.d.ts +10 -0
  50. package/dist-pkg/build/css-modules.js +51 -0
  51. package/dist-pkg/build/devalue-parse.d.ts +1 -0
  52. package/dist-pkg/build/devalue-parse.js +1 -0
  53. package/dist-pkg/build/diagnostics.d.ts +20 -0
  54. package/dist-pkg/build/diagnostics.js +35 -0
  55. package/dist-pkg/build/fixtures.d.ts +7 -0
  56. package/dist-pkg/build/fixtures.js +60 -0
  57. package/dist-pkg/build/framework-imports.d.ts +4 -0
  58. package/dist-pkg/build/framework-imports.js +58 -0
  59. package/dist-pkg/build/init.d.ts +1 -0
  60. package/dist-pkg/build/init.js +6 -0
  61. package/dist-pkg/build/manifest.d.ts +3 -0
  62. package/dist-pkg/build/manifest.js +23 -0
  63. package/dist-pkg/build/parity.d.ts +32 -0
  64. package/dist-pkg/build/parity.js +71 -0
  65. package/dist-pkg/build/plugin.d.ts +11 -0
  66. package/dist-pkg/build/plugin.js +8 -0
  67. package/dist-pkg/build/readiness.d.ts +11 -0
  68. package/dist-pkg/build/readiness.js +18 -0
  69. package/dist-pkg/build/route-client-transform.d.ts +17 -0
  70. package/dist-pkg/build/route-client-transform.js +48 -0
  71. package/dist-pkg/build/route-metadata.d.ts +6 -0
  72. package/dist-pkg/build/route-metadata.js +8 -0
  73. package/dist-pkg/build/rpc-transform.d.ts +1 -0
  74. package/dist-pkg/build/rpc-transform.js +44 -0
  75. package/dist-pkg/build/server-bundle.d.ts +4 -0
  76. package/dist-pkg/build/server-bundle.js +261 -0
  77. package/dist-pkg/build/server-strip.d.ts +2 -0
  78. package/dist-pkg/build/server-strip.js +32 -0
  79. package/dist-pkg/build/ssg.d.ts +12 -0
  80. package/dist-pkg/build/ssg.js +36 -0
  81. package/dist-pkg/cli/bun-plugin.d.ts +2 -0
  82. package/dist-pkg/cli/bun-plugin.js +14 -0
  83. package/dist-pkg/cli/canonical-import-rewrite.d.ts +18 -0
  84. package/dist-pkg/cli/canonical-import-rewrite.js +94 -0
  85. package/dist-pkg/cli/canonical-imports.d.ts +8 -0
  86. package/dist-pkg/cli/canonical-imports.js +131 -0
  87. package/dist-pkg/cli/check-ast.d.ts +20 -0
  88. package/dist-pkg/cli/check-ast.js +126 -0
  89. package/dist-pkg/cli/cmd-ai.d.ts +4 -0
  90. package/dist-pkg/cli/cmd-ai.js +290 -0
  91. package/dist-pkg/cli/cmd-build.d.ts +12 -0
  92. package/dist-pkg/cli/cmd-build.js +198 -0
  93. package/dist-pkg/cli/cmd-check.d.ts +25 -0
  94. package/dist-pkg/cli/cmd-check.js +573 -0
  95. package/dist-pkg/cli/cmd-create.d.ts +6 -0
  96. package/dist-pkg/cli/cmd-create.js +600 -0
  97. package/dist-pkg/cli/cmd-deploy.d.ts +6 -0
  98. package/dist-pkg/cli/cmd-deploy.js +381 -0
  99. package/dist-pkg/cli/cmd-dev.d.ts +5 -0
  100. package/dist-pkg/cli/cmd-dev.js +5 -0
  101. package/dist-pkg/cli/cmd-docs.d.ts +50 -0
  102. package/dist-pkg/cli/cmd-docs.js +122 -0
  103. package/dist-pkg/cli/cmd-generate.d.ts +12 -0
  104. package/dist-pkg/cli/cmd-generate.js +320 -0
  105. package/dist-pkg/cli/cmd-migrate.d.ts +7 -0
  106. package/dist-pkg/cli/cmd-migrate.js +42 -0
  107. package/dist-pkg/cli/cmd-routes.d.ts +6 -0
  108. package/dist-pkg/cli/cmd-routes.js +24 -0
  109. package/dist-pkg/cli/cmd-start.d.ts +13 -0
  110. package/dist-pkg/cli/cmd-start.js +32 -0
  111. package/dist-pkg/cli/cmd-test.d.ts +20 -0
  112. package/dist-pkg/cli/cmd-test.js +103 -0
  113. package/dist-pkg/cli/cmd-typegen.d.ts +7 -0
  114. package/dist-pkg/cli/cmd-typegen.js +66 -0
  115. package/dist-pkg/cli/cmd-upgrade.d.ts +38 -0
  116. package/dist-pkg/cli/cmd-upgrade.js +232 -0
  117. package/dist-pkg/cli/context.d.ts +4 -0
  118. package/dist-pkg/cli/context.js +4 -0
  119. package/dist-pkg/cli/framework-md.d.ts +1 -0
  120. package/dist-pkg/cli/framework-md.js +391 -0
  121. package/dist-pkg/cli/index.d.ts +6 -0
  122. package/dist-pkg/cli/index.js +106 -0
  123. package/dist-pkg/cli/release-version.d.ts +2 -0
  124. package/dist-pkg/cli/release-version.js +33 -0
  125. package/dist-pkg/client.d.ts +16 -0
  126. package/dist-pkg/client.js +71 -0
  127. package/dist-pkg/compat.d.ts +1 -0
  128. package/dist-pkg/compat.js +1 -0
  129. package/dist-pkg/compiler/analysis-backend.d.ts +20 -0
  130. package/dist-pkg/compiler/analysis-backend.js +164 -0
  131. package/dist-pkg/compiler/backends/experimental-oxc.d.ts +6 -0
  132. package/dist-pkg/compiler/backends/experimental-oxc.js +9 -0
  133. package/dist-pkg/compiler/backends/oxc.d.ts +16 -0
  134. package/dist-pkg/compiler/backends/oxc.js +198 -0
  135. package/dist-pkg/compiler/backends/register.d.ts +7 -0
  136. package/dist-pkg/compiler/backends/register.js +22 -0
  137. package/dist-pkg/compiler/fixtures.d.ts +2 -0
  138. package/dist-pkg/compiler/fixtures.js +118 -0
  139. package/dist-pkg/compiler/init.d.ts +1 -0
  140. package/dist-pkg/compiler/init.js +6 -0
  141. package/dist-pkg/compiler/module-analysis.d.ts +13 -0
  142. package/dist-pkg/compiler/module-analysis.js +50 -0
  143. package/dist-pkg/compiler/parity.d.ts +35 -0
  144. package/dist-pkg/compiler/parity.js +89 -0
  145. package/dist-pkg/compiler/readiness.d.ts +11 -0
  146. package/dist-pkg/compiler/readiness.js +18 -0
  147. package/dist-pkg/compiler/route-facts.d.ts +34 -0
  148. package/dist-pkg/compiler/route-facts.js +75 -0
  149. package/dist-pkg/content/index.d.ts +27 -0
  150. package/dist-pkg/content/index.js +287 -0
  151. package/dist-pkg/db/index.d.ts +3 -0
  152. package/dist-pkg/db/index.js +6 -0
  153. package/dist-pkg/db/migrate.d.ts +7 -0
  154. package/dist-pkg/db/migrate.js +53 -0
  155. package/dist-pkg/db/postgres.d.ts +29 -0
  156. package/dist-pkg/db/postgres.js +59 -0
  157. package/dist-pkg/db/sqlite.d.ts +10 -0
  158. package/dist-pkg/db/sqlite.js +22 -0
  159. package/dist-pkg/deploy/cloudflare.d.ts +8 -0
  160. package/{src/deploy/cloudflare.ts → dist-pkg/deploy/cloudflare.js} +24 -26
  161. package/dist-pkg/deploy/conformance.d.ts +21 -0
  162. package/dist-pkg/deploy/conformance.js +98 -0
  163. package/dist-pkg/deploy/dockerfile.d.ts +3 -0
  164. package/{src/deploy/dockerfile.ts → dist-pkg/deploy/dockerfile.js} +8 -10
  165. package/dist-pkg/deploy/fly.d.ts +3 -0
  166. package/{src/deploy/fly.ts → dist-pkg/deploy/fly.js} +11 -12
  167. package/dist-pkg/deploy/index.d.ts +6 -0
  168. package/dist-pkg/deploy/index.js +26 -0
  169. package/dist-pkg/deploy/netlify.d.ts +2 -0
  170. package/{src/deploy/netlify.ts → dist-pkg/deploy/netlify.js} +17 -11
  171. package/dist-pkg/deploy/runtime.d.ts +2 -0
  172. package/dist-pkg/deploy/runtime.js +3 -0
  173. package/dist-pkg/deploy/vercel.d.ts +22 -0
  174. package/dist-pkg/deploy/vercel.js +53 -0
  175. package/dist-pkg/dev/error-overlay.d.ts +1 -0
  176. package/{src/dev/error-overlay.ts → dist-pkg/dev/error-overlay.js} +13 -23
  177. package/dist-pkg/dev/hmr.d.ts +30 -0
  178. package/dist-pkg/dev/hmr.js +86 -0
  179. package/dist-pkg/dev/partial-handler.d.ts +9 -0
  180. package/dist-pkg/dev/partial-handler.js +24 -0
  181. package/dist-pkg/dev/request-handler.d.ts +30 -0
  182. package/dist-pkg/dev/request-handler.js +67 -0
  183. package/dist-pkg/dev/watcher.d.ts +6 -0
  184. package/dist-pkg/dev/watcher.js +34 -0
  185. package/dist-pkg/dev.d.ts +11 -0
  186. package/dist-pkg/dev.js +268 -0
  187. package/dist-pkg/env/index.d.ts +3 -0
  188. package/dist-pkg/env/index.js +57 -0
  189. package/dist-pkg/errors/catalog.d.ts +9 -0
  190. package/{src/errors/catalog.ts → dist-pkg/errors/catalog.js} +8 -24
  191. package/dist-pkg/errors/formatter.d.ts +22 -0
  192. package/dist-pkg/errors/formatter.js +43 -0
  193. package/dist-pkg/errors/index.d.ts +2 -0
  194. package/dist-pkg/errors/index.js +2 -0
  195. package/dist-pkg/forms/action.d.ts +15 -0
  196. package/dist-pkg/forms/action.js +20 -0
  197. package/dist-pkg/forms/index.d.ts +4 -0
  198. package/dist-pkg/forms/index.js +12 -0
  199. package/dist-pkg/i18n/index.d.ts +61 -0
  200. package/dist-pkg/i18n/index.js +147 -0
  201. package/dist-pkg/index-client.d.ts +1 -0
  202. package/dist-pkg/index-client.js +1 -0
  203. package/dist-pkg/index.d.ts +32 -0
  204. package/dist-pkg/index.js +79 -0
  205. package/dist-pkg/jsx-runtime-client.d.ts +8 -0
  206. package/dist-pkg/jsx-runtime-client.js +1 -0
  207. package/dist-pkg/jsx-runtime.d.ts +13 -0
  208. package/dist-pkg/jsx-runtime.js +5 -0
  209. package/dist-pkg/jsx-types-html.d.ts +221 -0
  210. package/dist-pkg/jsx-types-html.js +0 -0
  211. package/dist-pkg/log/index.d.ts +8 -0
  212. package/dist-pkg/log/index.js +55 -0
  213. package/dist-pkg/plugins/drizzle.d.ts +16 -0
  214. package/dist-pkg/plugins/drizzle.js +50 -0
  215. package/dist-pkg/plugins/index.d.ts +62 -0
  216. package/dist-pkg/plugins/index.js +147 -0
  217. package/dist-pkg/plugins/lucia.d.ts +26 -0
  218. package/dist-pkg/plugins/lucia.js +63 -0
  219. package/dist-pkg/plugins/prisma.d.ts +14 -0
  220. package/dist-pkg/plugins/prisma.js +57 -0
  221. package/dist-pkg/plugins/resend.d.ts +21 -0
  222. package/dist-pkg/plugins/resend.js +45 -0
  223. package/dist-pkg/plugins/s3.d.ts +18 -0
  224. package/dist-pkg/plugins/s3.js +63 -0
  225. package/dist-pkg/plugins/stripe.d.ts +32 -0
  226. package/dist-pkg/plugins/stripe.js +69 -0
  227. package/dist-pkg/plugins/tailwind.d.ts +15 -0
  228. package/dist-pkg/plugins/tailwind.js +58 -0
  229. package/dist-pkg/prod.d.ts +21 -0
  230. package/dist-pkg/prod.js +347 -0
  231. package/dist-pkg/reactive/computed.d.ts +3 -0
  232. package/dist-pkg/reactive/computed.js +15 -0
  233. package/dist-pkg/reactive/data.d.ts +25 -0
  234. package/dist-pkg/reactive/data.js +56 -0
  235. package/dist-pkg/reactive/diagnostics.d.ts +100 -0
  236. package/dist-pkg/reactive/diagnostics.js +363 -0
  237. package/dist-pkg/reactive/effect.d.ts +3 -0
  238. package/dist-pkg/reactive/effect.js +6 -0
  239. package/dist-pkg/reactive/index.d.ts +9 -0
  240. package/dist-pkg/reactive/index.js +18 -0
  241. package/dist-pkg/reactive/live.d.ts +15 -0
  242. package/dist-pkg/reactive/live.js +58 -0
  243. package/dist-pkg/reactive/optimistic.d.ts +20 -0
  244. package/dist-pkg/reactive/optimistic.js +54 -0
  245. package/dist-pkg/reactive/resource.d.ts +25 -0
  246. package/dist-pkg/reactive/resource.js +97 -0
  247. package/dist-pkg/reactive/signal.d.ts +4 -0
  248. package/dist-pkg/reactive/signal.js +17 -0
  249. package/dist-pkg/reactive/store.d.ts +6 -0
  250. package/dist-pkg/reactive/store.js +19 -0
  251. package/dist-pkg/router/index.d.ts +2 -0
  252. package/dist-pkg/router/index.js +2 -0
  253. package/dist-pkg/router/matcher.d.ts +7 -0
  254. package/dist-pkg/router/matcher.js +40 -0
  255. package/dist-pkg/router/scanner.d.ts +14 -0
  256. package/dist-pkg/router/scanner.js +141 -0
  257. package/dist-pkg/routes/index.d.ts +1 -0
  258. package/dist-pkg/routes/index.js +10 -0
  259. package/dist-pkg/runtime/app-config.d.ts +26 -0
  260. package/dist-pkg/runtime/app-config.js +69 -0
  261. package/dist-pkg/runtime/client.d.ts +3 -0
  262. package/dist-pkg/runtime/client.js +31 -0
  263. package/dist-pkg/runtime/devtools.d.ts +64 -0
  264. package/dist-pkg/runtime/devtools.js +132 -0
  265. package/dist-pkg/runtime/error-boundary.d.ts +6 -0
  266. package/dist-pkg/runtime/error-boundary.js +17 -0
  267. package/dist-pkg/runtime/event-replay.d.ts +3 -0
  268. package/{src/runtime/event-replay.ts → dist-pkg/runtime/event-replay.js} +7 -22
  269. package/dist-pkg/runtime/event-source.d.ts +7 -0
  270. package/dist-pkg/runtime/event-source.js +24 -0
  271. package/dist-pkg/runtime/form.d.ts +24 -0
  272. package/dist-pkg/runtime/form.js +59 -0
  273. package/dist-pkg/runtime/head.d.ts +7 -0
  274. package/dist-pkg/runtime/head.js +90 -0
  275. package/dist-pkg/runtime/html-escape.d.ts +7 -0
  276. package/dist-pkg/runtime/html-escape.js +39 -0
  277. package/dist-pkg/runtime/hydration.d.ts +15 -0
  278. package/dist-pkg/runtime/hydration.js +103 -0
  279. package/dist-pkg/runtime/image.d.ts +49 -0
  280. package/dist-pkg/runtime/image.js +144 -0
  281. package/dist-pkg/runtime/index.d.ts +17 -0
  282. package/dist-pkg/runtime/index.js +59 -0
  283. package/dist-pkg/runtime/island-hydrator.d.ts +12 -0
  284. package/dist-pkg/runtime/island-hydrator.js +49 -0
  285. package/dist-pkg/runtime/island.d.ts +19 -0
  286. package/dist-pkg/runtime/island.js +36 -0
  287. package/dist-pkg/runtime/jsx-runtime.d.ts +12 -0
  288. package/dist-pkg/runtime/jsx-runtime.js +173 -0
  289. package/dist-pkg/runtime/link.d.ts +16 -0
  290. package/dist-pkg/runtime/link.js +47 -0
  291. package/dist-pkg/runtime/project.d.ts +37 -0
  292. package/dist-pkg/runtime/project.js +36 -0
  293. package/dist-pkg/runtime/renderable.d.ts +6 -0
  294. package/dist-pkg/runtime/renderable.js +0 -0
  295. package/dist-pkg/runtime/router.d.ts +47 -0
  296. package/dist-pkg/runtime/router.js +476 -0
  297. package/dist-pkg/runtime/server.d.ts +8 -0
  298. package/dist-pkg/runtime/server.js +71 -0
  299. package/dist-pkg/runtime/stream.d.ts +29 -0
  300. package/dist-pkg/runtime/stream.js +106 -0
  301. package/dist-pkg/runtime/suspense.d.ts +6 -0
  302. package/dist-pkg/runtime/suspense.js +16 -0
  303. package/dist-pkg/runtime/typed-routes.d.ts +24 -0
  304. package/dist-pkg/runtime/typed-routes.js +77 -0
  305. package/dist-pkg/runtime/validated-form.d.ts +40 -0
  306. package/dist-pkg/runtime/validated-form.js +120 -0
  307. package/dist-pkg/security/cors.d.ts +10 -0
  308. package/dist-pkg/security/cors.js +56 -0
  309. package/dist-pkg/security/csrf.d.ts +9 -0
  310. package/dist-pkg/security/csrf.js +53 -0
  311. package/dist-pkg/security/headers.d.ts +11 -0
  312. package/dist-pkg/security/headers.js +31 -0
  313. package/dist-pkg/security/index.d.ts +5 -0
  314. package/dist-pkg/security/index.js +5 -0
  315. package/dist-pkg/security/rate-limit.d.ts +10 -0
  316. package/dist-pkg/security/rate-limit.js +49 -0
  317. package/dist-pkg/security/redis-rate-limit.d.ts +14 -0
  318. package/dist-pkg/security/redis-rate-limit.js +23 -0
  319. package/dist-pkg/server/action.d.ts +21 -0
  320. package/dist-pkg/server/action.js +64 -0
  321. package/dist-pkg/server/cache-utils.d.ts +2 -0
  322. package/dist-pkg/server/cache-utils.js +26 -0
  323. package/dist-pkg/server/cache.d.ts +33 -0
  324. package/dist-pkg/server/cache.js +236 -0
  325. package/dist-pkg/server/compress.d.ts +2 -0
  326. package/dist-pkg/server/compress.js +49 -0
  327. package/dist-pkg/server/endpoint-execution.d.ts +28 -0
  328. package/dist-pkg/server/endpoint-execution.js +37 -0
  329. package/dist-pkg/server/etag.d.ts +3 -0
  330. package/dist-pkg/server/etag.js +18 -0
  331. package/dist-pkg/server/guard.d.ts +16 -0
  332. package/dist-pkg/server/guard.js +45 -0
  333. package/dist-pkg/server/html-shell.d.ts +12 -0
  334. package/dist-pkg/server/html-shell.js +52 -0
  335. package/dist-pkg/server/index.d.ts +36 -0
  336. package/dist-pkg/server/index.js +170 -0
  337. package/dist-pkg/server/jobs.d.ts +41 -0
  338. package/dist-pkg/server/jobs.js +81 -0
  339. package/dist-pkg/server/manifest.d.ts +19 -0
  340. package/dist-pkg/server/manifest.js +36 -0
  341. package/dist-pkg/server/middleware.d.ts +39 -0
  342. package/dist-pkg/server/middleware.js +122 -0
  343. package/dist-pkg/server/mime.d.ts +1 -0
  344. package/{src/server/mime.ts → dist-pkg/server/mime.js} +6 -17
  345. package/dist-pkg/server/not-found.d.ts +6 -0
  346. package/dist-pkg/server/not-found.js +24 -0
  347. package/dist-pkg/server/page-render.d.ts +29 -0
  348. package/dist-pkg/server/page-render.js +67 -0
  349. package/dist-pkg/server/partial-navigation.d.ts +4 -0
  350. package/dist-pkg/server/partial-navigation.js +16 -0
  351. package/dist-pkg/server/pipe.d.ts +9 -0
  352. package/dist-pkg/server/pipe.js +32 -0
  353. package/dist-pkg/server/redis-cache-store.d.ts +10 -0
  354. package/dist-pkg/server/redis-cache-store.js +73 -0
  355. package/dist-pkg/server/redis-client.d.ts +37 -0
  356. package/dist-pkg/server/redis-client.js +37 -0
  357. package/dist-pkg/server/request-policy.d.ts +55 -0
  358. package/dist-pkg/server/request-policy.js +216 -0
  359. package/dist-pkg/server/request-preflight.d.ts +23 -0
  360. package/dist-pkg/server/request-preflight.js +45 -0
  361. package/dist-pkg/server/request-security-policy.d.ts +17 -0
  362. package/dist-pkg/server/request-security-policy.js +34 -0
  363. package/dist-pkg/server/request-surface.d.ts +8 -0
  364. package/dist-pkg/server/request-surface.js +19 -0
  365. package/dist-pkg/server/route-request.d.ts +31 -0
  366. package/dist-pkg/server/route-request.js +112 -0
  367. package/dist-pkg/server/route-response.d.ts +22 -0
  368. package/dist-pkg/server/route-response.js +58 -0
  369. package/dist-pkg/server/rpc-hash.d.ts +2 -0
  370. package/dist-pkg/server/rpc-hash.js +7 -0
  371. package/dist-pkg/server/rpc-protocol.d.ts +22 -0
  372. package/dist-pkg/server/rpc-protocol.js +28 -0
  373. package/dist-pkg/server/rpc-utils.d.ts +2 -0
  374. package/dist-pkg/server/rpc-utils.js +26 -0
  375. package/dist-pkg/server/rpc.d.ts +20 -0
  376. package/dist-pkg/server/rpc.js +147 -0
  377. package/dist-pkg/server/runtime-dispatch.d.ts +19 -0
  378. package/dist-pkg/server/runtime-dispatch.js +67 -0
  379. package/dist-pkg/server/server-execution.d.ts +22 -0
  380. package/dist-pkg/server/server-execution.js +53 -0
  381. package/dist-pkg/server/sqlite-cache-store.d.ts +13 -0
  382. package/dist-pkg/server/sqlite-cache-store.js +88 -0
  383. package/dist-pkg/server/sse.d.ts +9 -0
  384. package/dist-pkg/server/sse.js +34 -0
  385. package/dist-pkg/server/static-file.d.ts +9 -0
  386. package/dist-pkg/server/static-file.js +43 -0
  387. package/dist-pkg/server/ws.d.ts +18 -0
  388. package/dist-pkg/server/ws.js +40 -0
  389. package/dist-pkg/server-entry.d.ts +19 -0
  390. package/dist-pkg/server-entry.js +93 -0
  391. package/dist-pkg/testing/index.d.ts +98 -0
  392. package/dist-pkg/testing/index.js +254 -0
  393. package/dist-pkg/types/index.d.ts +4 -0
  394. package/dist-pkg/types/index.js +4 -0
  395. package/dist-pkg/types/safe-html.d.ts +7 -0
  396. package/dist-pkg/types/safe-html.js +19 -0
  397. package/dist-pkg/types/safe-sql.d.ts +8 -0
  398. package/dist-pkg/types/safe-sql.js +14 -0
  399. package/dist-pkg/types/safe-url.d.ts +7 -0
  400. package/dist-pkg/types/safe-url.js +20 -0
  401. package/dist-pkg/types/user-input.d.ts +9 -0
  402. package/dist-pkg/types/user-input.js +3 -0
  403. package/dist-pkg/unsafe/index.d.ts +12 -0
  404. package/dist-pkg/unsafe/index.js +6 -0
  405. package/package.json +102 -44
  406. package/bin/gorsee.js +0 -14
  407. package/src/auth/index.ts +0 -178
  408. package/src/auth/redis-session-store.ts +0 -46
  409. package/src/auth/sqlite-session-store.ts +0 -98
  410. package/src/auth/store-utils.ts +0 -21
  411. package/src/build/client.ts +0 -139
  412. package/src/build/css-modules.ts +0 -69
  413. package/src/build/devalue-parse.ts +0 -2
  414. package/src/build/manifest.ts +0 -34
  415. package/src/build/route-metadata.ts +0 -12
  416. package/src/build/rpc-transform.ts +0 -62
  417. package/src/build/server-strip.ts +0 -87
  418. package/src/build/ssg.ts +0 -70
  419. package/src/cli/bun-plugin.ts +0 -58
  420. package/src/cli/cmd-build.ts +0 -153
  421. package/src/cli/cmd-check.ts +0 -239
  422. package/src/cli/cmd-create.ts +0 -328
  423. package/src/cli/cmd-deploy.ts +0 -149
  424. package/src/cli/cmd-dev.ts +0 -13
  425. package/src/cli/cmd-docs.ts +0 -152
  426. package/src/cli/cmd-generate.ts +0 -155
  427. package/src/cli/cmd-migrate.ts +0 -53
  428. package/src/cli/cmd-routes.ts +0 -36
  429. package/src/cli/cmd-start.ts +0 -30
  430. package/src/cli/cmd-test.ts +0 -129
  431. package/src/cli/cmd-typegen.ts +0 -93
  432. package/src/cli/cmd-upgrade.ts +0 -143
  433. package/src/cli/context.ts +0 -12
  434. package/src/cli/framework-md.ts +0 -223
  435. package/src/cli/index.ts +0 -107
  436. package/src/client.ts +0 -26
  437. package/src/db/index.ts +0 -2
  438. package/src/db/migrate.ts +0 -89
  439. package/src/db/sqlite.ts +0 -40
  440. package/src/deploy/index.ts +0 -31
  441. package/src/deploy/vercel.ts +0 -94
  442. package/src/dev/hmr.ts +0 -31
  443. package/src/dev/partial-handler.ts +0 -52
  444. package/src/dev/request-handler.ts +0 -127
  445. package/src/dev/watcher.ts +0 -48
  446. package/src/dev.ts +0 -208
  447. package/src/env/index.ts +0 -74
  448. package/src/errors/formatter.ts +0 -63
  449. package/src/errors/index.ts +0 -2
  450. package/src/i18n/index.ts +0 -72
  451. package/src/index-client.ts +0 -4
  452. package/src/index.ts +0 -43
  453. package/src/jsx-runtime-client.ts +0 -13
  454. package/src/jsx-runtime.ts +0 -20
  455. package/src/jsx-types-html.ts +0 -242
  456. package/src/log/index.ts +0 -44
  457. package/src/plugins/drizzle.ts +0 -84
  458. package/src/plugins/index.ts +0 -86
  459. package/src/plugins/lucia.ts +0 -111
  460. package/src/plugins/prisma.ts +0 -85
  461. package/src/plugins/resend.ts +0 -78
  462. package/src/plugins/s3.ts +0 -102
  463. package/src/plugins/stripe.ts +0 -133
  464. package/src/plugins/tailwind.ts +0 -92
  465. package/src/prod.ts +0 -252
  466. package/src/reactive/computed.ts +0 -7
  467. package/src/reactive/effect.ts +0 -7
  468. package/src/reactive/index.ts +0 -7
  469. package/src/reactive/live.ts +0 -97
  470. package/src/reactive/optimistic.ts +0 -83
  471. package/src/reactive/resource.ts +0 -138
  472. package/src/reactive/signal.ts +0 -20
  473. package/src/reactive/store.ts +0 -36
  474. package/src/router/index.ts +0 -2
  475. package/src/router/matcher.ts +0 -53
  476. package/src/router/scanner.ts +0 -206
  477. package/src/runtime/client.ts +0 -28
  478. package/src/runtime/error-boundary.ts +0 -35
  479. package/src/runtime/form.ts +0 -49
  480. package/src/runtime/head.ts +0 -113
  481. package/src/runtime/html-escape.ts +0 -30
  482. package/src/runtime/hydration.ts +0 -95
  483. package/src/runtime/image.ts +0 -48
  484. package/src/runtime/index.ts +0 -12
  485. package/src/runtime/island-hydrator.ts +0 -84
  486. package/src/runtime/island.ts +0 -88
  487. package/src/runtime/jsx-runtime.ts +0 -167
  488. package/src/runtime/link.ts +0 -45
  489. package/src/runtime/project.ts +0 -73
  490. package/src/runtime/router.ts +0 -224
  491. package/src/runtime/server.ts +0 -102
  492. package/src/runtime/stream.ts +0 -182
  493. package/src/runtime/suspense.ts +0 -37
  494. package/src/runtime/typed-routes.ts +0 -26
  495. package/src/runtime/validated-form.ts +0 -106
  496. package/src/security/cors.ts +0 -80
  497. package/src/security/csrf.ts +0 -85
  498. package/src/security/headers.ts +0 -50
  499. package/src/security/index.ts +0 -4
  500. package/src/security/rate-limit.ts +0 -80
  501. package/src/server/action.ts +0 -48
  502. package/src/server/cache-utils.ts +0 -23
  503. package/src/server/cache.ts +0 -125
  504. package/src/server/compress.ts +0 -60
  505. package/src/server/etag.ts +0 -23
  506. package/src/server/guard.ts +0 -69
  507. package/src/server/html-shell.ts +0 -69
  508. package/src/server/index.ts +0 -57
  509. package/src/server/manifest.ts +0 -36
  510. package/src/server/middleware.ts +0 -159
  511. package/src/server/not-found.ts +0 -35
  512. package/src/server/page-render.ts +0 -123
  513. package/src/server/pipe.ts +0 -46
  514. package/src/server/redis-cache-store.ts +0 -87
  515. package/src/server/redis-client.ts +0 -71
  516. package/src/server/request-preflight.ts +0 -45
  517. package/src/server/route-request.ts +0 -72
  518. package/src/server/rpc-hash.ts +0 -17
  519. package/src/server/rpc-utils.ts +0 -27
  520. package/src/server/rpc.ts +0 -177
  521. package/src/server/sqlite-cache-store.ts +0 -109
  522. package/src/server/sse.ts +0 -96
  523. package/src/server/static-file.ts +0 -63
  524. package/src/server/ws.ts +0 -56
  525. package/src/server-entry.ts +0 -36
  526. package/src/testing/index.ts +0 -74
  527. package/src/types/index.ts +0 -4
  528. package/src/types/safe-html.ts +0 -32
  529. package/src/types/safe-sql.ts +0 -28
  530. package/src/types/safe-url.ts +0 -40
  531. package/src/types/user-input.ts +0 -12
  532. package/src/unsafe/index.ts +0 -18
@@ -0,0 +1,59 @@
1
+ export { Suspense } from "./suspense.js";
2
+ export { render, hydrate } from "./client.js";
3
+ export {
4
+ enterHydration,
5
+ exitHydration,
6
+ isHydrating,
7
+ getHydrationMismatches,
8
+ getHydrationDiagnostics,
9
+ resetHydrationDiagnostics
10
+ } from "./hydration.js";
11
+ export { renderToString, ssrJsx, ssrJsxs } from "./server.js";
12
+ export { renderToStream, StreamSuspense, streamJsx, streamJsxs } from "./stream.js";
13
+ export { EVENT_REPLAY_SCRIPT, replayEvents, stopEventCapture } from "./event-replay.js";
14
+ export { Link } from "./link.js";
15
+ export { Head } from "./head.js";
16
+ export {
17
+ navigate,
18
+ onNavigate,
19
+ beforeNavigate,
20
+ getCurrentPath,
21
+ getRouterNavigationDiagnostics,
22
+ prefetch,
23
+ initRouter,
24
+ setLoadingElement
25
+ } from "./router.js";
26
+ export {
27
+ RUNTIME_DEVTOOLS_SCHEMA_VERSION,
28
+ createRuntimeDevtoolsSnapshot,
29
+ renderRuntimeDevtoolsHTML,
30
+ renderRuntimeDevtoolsOverlay
31
+ } from "./devtools.js";
32
+ export { useFormAction } from "./form.js";
33
+ export {
34
+ Image,
35
+ getImageProps,
36
+ buildImageSrcSet,
37
+ getImageCandidateWidths,
38
+ isAllowedRemoteImage,
39
+ defaultImageLoader
40
+ } from "./image.js";
41
+ export {
42
+ typedLink,
43
+ typedNavigate,
44
+ typedPrefetch,
45
+ buildSearchParams,
46
+ buildTypedPath,
47
+ createTypedRoute,
48
+ extractRouteParamKeys
49
+ } from "./typed-routes.js";
50
+ export {
51
+ defineForm,
52
+ validateForm,
53
+ validateAction,
54
+ toFieldErrors,
55
+ fieldAttrs
56
+ } from "./validated-form.js";
57
+ export { island, isIsland } from "./island.js";
58
+ export { hydrateIslands, registerIsland } from "./island-hydrator.js";
59
+ export { createEventSource } from "./event-source.js";
@@ -0,0 +1,12 @@
1
+ type IslandLoader = () => Promise<{
2
+ default: (props: Record<string, unknown>) => unknown;
3
+ }>;
4
+ /** Register an island component loader by name. */
5
+ export declare function registerIsland(name: string, loader: IslandLoader): void;
6
+ /**
7
+ * Hydrate all island components on the page.
8
+ * Finds all elements with data-island attribute and hydrates each independently.
9
+ * Lazy islands use IntersectionObserver to defer until visible.
10
+ */
11
+ export declare function hydrateIslands(): void;
12
+ export {};
@@ -0,0 +1,49 @@
1
+ import { enterHydration, exitHydration } from "./hydration.js";
2
+ import { replayEvents } from "./event-replay.js";
3
+ const islandRegistry = new Map;
4
+ export function registerIsland(name, loader) {
5
+ islandRegistry.set(name, loader);
6
+ }
7
+ function parseIslandProps(raw) {
8
+ try {
9
+ return JSON.parse(raw);
10
+ } catch {
11
+ console.warn(`[gorsee] Failed to parse island props: ${raw}`);
12
+ return {};
13
+ }
14
+ }
15
+ async function hydrateOne(el) {
16
+ const name = el.getAttribute("data-island");
17
+ if (!name)
18
+ return;
19
+ const loader = islandRegistry.get(name);
20
+ if (!loader) {
21
+ console.warn(`[gorsee] Island "${name}" not found in registry`);
22
+ return;
23
+ }
24
+ const component = (await loader()).default, rawProps = el.getAttribute("data-props") ?? "{}", props = parseIslandProps(rawProps);
25
+ enterHydration(el);
26
+ component(props);
27
+ exitHydration();
28
+ replayEvents(el);
29
+ }
30
+ export function hydrateIslands() {
31
+ const islands = document.querySelectorAll("[data-island]");
32
+ for (let i = 0;i < islands.length; i++) {
33
+ const el = islands[i];
34
+ if (el.hasAttribute("data-island-lazy") && typeof IntersectionObserver < "u")
35
+ observeLazy(el);
36
+ else
37
+ hydrateOne(el);
38
+ }
39
+ }
40
+ function observeLazy(el) {
41
+ const observer = new IntersectionObserver((entries) => {
42
+ for (const entry of entries)
43
+ if (entry.isIntersecting) {
44
+ observer.unobserve(el);
45
+ hydrateOne(el);
46
+ }
47
+ }, { rootMargin: "200px" });
48
+ observer.observe(el);
49
+ }
@@ -0,0 +1,19 @@
1
+ import type { GorseeRenderable } from "./renderable.js";
2
+ export interface IslandOptions {
3
+ lazy?: boolean;
4
+ }
5
+ export declare const ISLAND_MARKER: unique symbol;
6
+ interface IslandWrapper<P extends Record<string, unknown>> {
7
+ (props: P): GorseeRenderable;
8
+ [ISLAND_MARKER]: true;
9
+ componentName: string;
10
+ originalComponent: (props: P) => GorseeRenderable;
11
+ options: IslandOptions;
12
+ }
13
+ /**
14
+ * Wrap a component as an island -- only this component gets hydrated on the client.
15
+ * Static surrounding content stays as server-rendered HTML with zero JS.
16
+ */
17
+ export declare function island<P extends Record<string, unknown>>(component: (props: P) => GorseeRenderable, options?: IslandOptions): IslandWrapper<P>;
18
+ export declare function isIsland(fn: unknown): fn is IslandWrapper<Record<string, unknown>>;
19
+ export {};
@@ -0,0 +1,36 @@
1
+ export const ISLAND_MARKER = Symbol("gorsee-island");
2
+ function escapePropsForAttr(json) {
3
+ return json.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
4
+ }
5
+ export function island(component, options = {}) {
6
+ const name = component.name || "Anonymous", wrapper = function islandWrapper(props) {
7
+ const propsWithoutChildren = extractSerializableProps(props), serialized = escapePropsForAttr(JSON.stringify(propsWithoutChildren)), attrs = {
8
+ "data-island": name,
9
+ "data-props": serialized,
10
+ children: component(props)
11
+ };
12
+ if (options.lazy)
13
+ attrs["data-island-lazy"] = "true";
14
+ return { type: "div", props: attrs };
15
+ };
16
+ wrapper[ISLAND_MARKER] = !0;
17
+ wrapper.componentName = name;
18
+ wrapper.originalComponent = component;
19
+ wrapper.options = options;
20
+ return wrapper;
21
+ }
22
+ function extractSerializableProps(props) {
23
+ const result = {};
24
+ for (const key in props) {
25
+ if (key === "children")
26
+ continue;
27
+ const val = props[key];
28
+ if (typeof val === "function" || typeof val === "symbol")
29
+ continue;
30
+ result[key] = val;
31
+ }
32
+ return result;
33
+ }
34
+ export function isIsland(fn) {
35
+ return typeof fn === "function" && ISLAND_MARKER in fn;
36
+ }
@@ -0,0 +1,12 @@
1
+ import type { GorseeRenderable } from "./renderable.js";
2
+ export type GorseeNode = Node | string | number | boolean | null | undefined | GorseeNode[];
3
+ export type Component = (props: Record<string, unknown>) => GorseeRenderable;
4
+ export declare const Fragment: unique symbol;
5
+ export interface JSXElement {
6
+ type: string | Component | typeof Fragment;
7
+ props: Record<string, unknown>;
8
+ children: unknown[];
9
+ }
10
+ export declare function jsx(type: string | Component | typeof Fragment, props: Record<string, unknown> | null): Node | DocumentFragment;
11
+ export declare const jsxs: typeof jsx;
12
+ export declare const jsxDEV: typeof jsx;
@@ -0,0 +1,173 @@
1
+ import { createEffect } from "../reactive/effect.js";
2
+ import { isHydrating, claimElement, claimText, pushCursor, popCursor } from "./hydration.js";
3
+ import { isRenderableThunk, isSignal } from "./html-escape.js";
4
+ export const Fragment = Symbol("Fragment");
5
+ function isVNodeLike(value) {
6
+ return typeof value === "object" && value !== null && "type" in value && "props" in value;
7
+ }
8
+ function createTextNode(value) {
9
+ return document.createTextNode(String(value ?? ""));
10
+ }
11
+ function bindProperty(el, key, value) {
12
+ if (key === "children" || key === "ref")
13
+ return;
14
+ if (key.startsWith("on:")) {
15
+ el.addEventListener(key.slice(3), value);
16
+ return;
17
+ }
18
+ if (key === "className" || key === "class") {
19
+ if (isSignal(value))
20
+ createEffect(() => {
21
+ el.className = String(value());
22
+ });
23
+ else if (!isHydrating())
24
+ el.className = String(value ?? "");
25
+ return;
26
+ }
27
+ if (key === "style" && typeof value === "object" && value !== null) {
28
+ const styles = value;
29
+ for (const [prop, val] of Object.entries(styles))
30
+ if (isSignal(val)) {
31
+ const p = prop;
32
+ createEffect(() => {
33
+ el.style.setProperty(p, String(val()));
34
+ });
35
+ } else if (!isHydrating())
36
+ el.style.setProperty(prop, String(val));
37
+ return;
38
+ }
39
+ if (isSignal(value))
40
+ createEffect(() => {
41
+ el.setAttribute(key, String(value()));
42
+ });
43
+ else if (!isHydrating()) {
44
+ if (typeof value === "boolean")
45
+ if (value)
46
+ el.setAttribute(key, "");
47
+ else
48
+ el.removeAttribute(key);
49
+ else if (value != null)
50
+ el.setAttribute(key, String(value));
51
+ }
52
+ }
53
+ function hydrateChild(parent, child) {
54
+ if (child == null || typeof child === "boolean")
55
+ return;
56
+ if (Array.isArray(child)) {
57
+ for (const c of child)
58
+ hydrateChild(parent, c);
59
+ return;
60
+ }
61
+ if (isVNodeLike(child)) {
62
+ jsx(child.type, child.props);
63
+ return;
64
+ }
65
+ if (typeof child === "function" && isSignal(child)) {
66
+ const textNode = claimText(String(child() ?? "")) ?? createTextNode(child());
67
+ if (!textNode.parentNode)
68
+ parent.appendChild(textNode);
69
+ createEffect(() => {
70
+ textNode.textContent = String(child() ?? "");
71
+ });
72
+ return;
73
+ }
74
+ if (isRenderableThunk(child)) {
75
+ hydrateChild(parent, child());
76
+ return;
77
+ }
78
+ if (typeof child === "object" && child instanceof Node)
79
+ return;
80
+ const textNode = claimText(String(child ?? "")) ?? createTextNode(child);
81
+ if (!textNode.parentNode)
82
+ parent.appendChild(textNode);
83
+ }
84
+ function insertChild(parent, child) {
85
+ if (child == null || typeof child === "boolean")
86
+ return;
87
+ if (Array.isArray(child)) {
88
+ for (const c of child)
89
+ insertChild(parent, c);
90
+ return;
91
+ }
92
+ if (isVNodeLike(child)) {
93
+ parent.appendChild(jsx(child.type, child.props));
94
+ return;
95
+ }
96
+ if (child instanceof Node) {
97
+ parent.appendChild(child);
98
+ return;
99
+ }
100
+ if (isSignal(child)) {
101
+ const textNode = createTextNode(child());
102
+ parent.appendChild(textNode);
103
+ createEffect(() => {
104
+ textNode.textContent = String(child() ?? "");
105
+ });
106
+ return;
107
+ }
108
+ if (isRenderableThunk(child)) {
109
+ insertChild(parent, child());
110
+ return;
111
+ }
112
+ parent.appendChild(createTextNode(child));
113
+ }
114
+ export function jsx(type, props) {
115
+ const allProps = props ?? {}, children = allProps.children, hydrating = isHydrating();
116
+ if (type === Fragment) {
117
+ if (hydrating) {
118
+ if (children != null)
119
+ hydrateChild(document.createDocumentFragment(), children);
120
+ return document.createDocumentFragment();
121
+ }
122
+ const frag = document.createDocumentFragment();
123
+ if (children != null)
124
+ insertChild(frag, children);
125
+ return frag;
126
+ }
127
+ if (typeof type === "function") {
128
+ const result = type(allProps);
129
+ if (result instanceof Node)
130
+ return result;
131
+ if (isVNodeLike(result))
132
+ return jsx(result.type, result.props);
133
+ if (isRenderableThunk(result)) {
134
+ const resolved = result();
135
+ if (hydrating) {
136
+ hydrateChild(document.createDocumentFragment(), resolved);
137
+ return document.createDocumentFragment();
138
+ }
139
+ const wrapper = document.createDocumentFragment();
140
+ insertChild(wrapper, resolved);
141
+ return wrapper;
142
+ }
143
+ if (hydrating) {
144
+ hydrateChild(document.createDocumentFragment(), result);
145
+ return document.createDocumentFragment();
146
+ }
147
+ const wrapper = document.createDocumentFragment();
148
+ insertChild(wrapper, result);
149
+ return wrapper;
150
+ }
151
+ if (hydrating) {
152
+ const el = claimElement(type);
153
+ if (el) {
154
+ for (const [key, value] of Object.entries(allProps))
155
+ if (key !== "children")
156
+ bindProperty(el, key, value);
157
+ if (children != null) {
158
+ pushCursor(el);
159
+ hydrateChild(el, children);
160
+ popCursor();
161
+ }
162
+ return el;
163
+ }
164
+ }
165
+ const el = document.createElement(type);
166
+ for (const [key, value] of Object.entries(allProps))
167
+ if (key !== "children")
168
+ bindProperty(el, key, value);
169
+ if (children != null)
170
+ insertChild(el, children);
171
+ return el;
172
+ }
173
+ export const jsxs = jsx, jsxDEV = jsx;
@@ -0,0 +1,16 @@
1
+ import { type TypedRouteDefinition, type TypedRouteOptions, type TypedRouteParams } from "./typed-routes.js";
2
+ import type { GorseeRenderable } from "./renderable.js";
3
+ export interface LinkProps {
4
+ href: string | TypedRouteDefinition;
5
+ params?: TypedRouteParams;
6
+ search?: TypedRouteOptions["search"];
7
+ hash?: string;
8
+ children?: unknown;
9
+ class?: string;
10
+ className?: string;
11
+ prefetch?: boolean | "hover" | "viewport";
12
+ replace?: boolean;
13
+ target?: string;
14
+ [key: string]: unknown;
15
+ }
16
+ export declare function Link(props: LinkProps): GorseeRenderable;
@@ -0,0 +1,47 @@
1
+ import { navigate, prefetch } from "./router.js";
2
+ import { resolveTypedRouteTarget } from "./typed-routes.js";
3
+ function composeEventHandlers(first, second) {
4
+ if (!first)
5
+ return second;
6
+ if (!second)
7
+ return first;
8
+ return (event) => {
9
+ first(event);
10
+ second(event);
11
+ };
12
+ }
13
+ export function Link(props) {
14
+ const { href, params, search, hash, prefetch: prefetchMode, replace, children, ...rest } = props, resolvedHref = resolveTypedRouteTarget(href, { params, search, hash }), restProps = { ...rest }, onClick = restProps["on:click"], onMouseOver = restProps["on:mouseover"], onFocus = restProps["on:focus"];
15
+ delete restProps["on:click"];
16
+ delete restProps["on:mouseover"];
17
+ delete restProps["on:focus"];
18
+ delete restProps["data-g-prefetch"];
19
+ if (prefetchMode === !0 && typeof window < "u")
20
+ prefetch(resolvedHref);
21
+ const hoverPrefetchHandler = prefetchMode === "hover" ? () => prefetch(resolvedHref) : void 0;
22
+ return {
23
+ type: "a",
24
+ props: {
25
+ href: resolvedHref,
26
+ ...restProps,
27
+ ...prefetchMode === "viewport" ? { "data-g-prefetch": "viewport" } : {},
28
+ "on:click": (e) => {
29
+ if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.button !== 0)
30
+ return;
31
+ const target = e.currentTarget?.target;
32
+ if (target && target !== "_self")
33
+ return;
34
+ e.preventDefault();
35
+ if (replace)
36
+ history.replaceState({ gorsee: !0 }, "", resolvedHref);
37
+ navigate(resolvedHref, !replace);
38
+ onClick?.(e);
39
+ },
40
+ ...prefetchMode === "hover" ? {
41
+ "on:mouseover": composeEventHandlers(onMouseOver, hoverPrefetchHandler),
42
+ "on:focus": composeEventHandlers(onFocus, hoverPrefetchHandler)
43
+ } : {},
44
+ children
45
+ }
46
+ };
47
+ }
@@ -0,0 +1,37 @@
1
+ export interface ProjectPathOverrides extends Partial<ProjectPaths> {
2
+ }
3
+ export interface RuntimeOptions {
4
+ cwd?: string;
5
+ env?: NodeJS.ProcessEnv;
6
+ pathOverrides?: ProjectPathOverrides;
7
+ }
8
+ export interface ProjectPaths {
9
+ cwd: string;
10
+ routesDir: string;
11
+ publicDir: string;
12
+ distDir: string;
13
+ clientDir: string;
14
+ serverDir: string;
15
+ gorseeDir: string;
16
+ sharedDir: string;
17
+ middlewareDir: string;
18
+ migrationsDir: string;
19
+ docsDir: string;
20
+ dataFile: string;
21
+ appConfigFile: string;
22
+ }
23
+ export interface ProjectContext {
24
+ cwd: string;
25
+ env: NodeJS.ProcessEnv;
26
+ paths: ProjectPaths;
27
+ }
28
+ export interface RuntimeEnvConfig {
29
+ port: number;
30
+ logLevel: "info" | "debug";
31
+ rateLimit: number;
32
+ rateWindow: string;
33
+ isProduction: boolean;
34
+ }
35
+ export declare function resolveProjectPaths(cwd: string, overrides?: ProjectPathOverrides): ProjectPaths;
36
+ export declare function createProjectContext(options?: RuntimeOptions): ProjectContext;
37
+ export declare function resolveRuntimeEnv(env: NodeJS.ProcessEnv): RuntimeEnvConfig;
@@ -0,0 +1,36 @@
1
+ import { join } from "node:path";
2
+ export function resolveProjectPaths(cwd, overrides = {}) {
3
+ const gorseeDir = join(cwd, ".gorsee"), distDir = join(cwd, "dist");
4
+ return { ...{
5
+ cwd,
6
+ routesDir: join(cwd, "routes"),
7
+ publicDir: join(cwd, "public"),
8
+ distDir,
9
+ clientDir: join(distDir, "client"),
10
+ serverDir: join(distDir, "server"),
11
+ gorseeDir,
12
+ sharedDir: join(cwd, "shared"),
13
+ middlewareDir: join(cwd, "middleware"),
14
+ migrationsDir: join(cwd, "migrations"),
15
+ docsDir: join(cwd, "docs"),
16
+ dataFile: join(cwd, "data.sqlite"),
17
+ appConfigFile: join(cwd, "app.config.ts")
18
+ }, ...overrides, cwd };
19
+ }
20
+ export function createProjectContext(options = {}) {
21
+ const cwd = options.cwd ?? process.cwd();
22
+ return {
23
+ cwd,
24
+ env: options.env ?? process.env,
25
+ paths: resolveProjectPaths(cwd, options.pathOverrides)
26
+ };
27
+ }
28
+ export function resolveRuntimeEnv(env) {
29
+ return {
30
+ port: Number(env.PORT || "3000"),
31
+ logLevel: env.LOG_LEVEL === "debug" ? "debug" : "info",
32
+ rateLimit: Number(env.RATE_LIMIT) || 1000,
33
+ rateWindow: env.RATE_WINDOW || "1m",
34
+ isProduction: env.NODE_ENV === "production"
35
+ };
36
+ }
@@ -0,0 +1,6 @@
1
+ export type GorseePrimitive = string | number | boolean | null | undefined;
2
+ export type GorseeVNodeLike = {
3
+ type: string | symbol | ((props: Record<string, unknown>) => GorseeRenderable);
4
+ props: Record<string, unknown>;
5
+ };
6
+ export type GorseeRenderable = Node | DocumentFragment | GorseePrimitive | GorseeVNodeLike | GorseeRenderable[] | (() => unknown);
File without changes
@@ -0,0 +1,47 @@
1
+ type NavigateCallback = (url: string) => void;
2
+ type BeforeNavigateCallback = (url: string) => boolean | void;
3
+ type PreservedControlState = {
4
+ key: string;
5
+ mode: "value" | "checked";
6
+ value: string | boolean;
7
+ };
8
+ type HMRUpdate = {
9
+ kind: "full-reload" | "route-refresh" | "css-update";
10
+ changedPath: string;
11
+ timestamp: number;
12
+ reason?: string;
13
+ routePaths?: string[];
14
+ entryScripts?: string[];
15
+ refreshCurrentRoute?: boolean;
16
+ };
17
+ export interface RouterNavigationDiagnostics {
18
+ currentPath: string;
19
+ navigating: boolean;
20
+ pendingPopScrollY: number | null;
21
+ latestNavigationToken: number;
22
+ activeNavigation: {
23
+ url: string;
24
+ pushState: boolean;
25
+ } | null;
26
+ }
27
+ export interface NavigationSnapshot {
28
+ focusKey?: string;
29
+ controls: PreservedControlState[];
30
+ }
31
+ export declare function createHTMLFragment(html: string): DocumentFragment;
32
+ export declare function replaceHTMLFragment(container: Element, html: string): void;
33
+ export declare function captureNavigationSnapshot(container: Element): NavigationSnapshot;
34
+ export declare function restoreNavigationSnapshot(container: Element, snapshot: NavigationSnapshot): void;
35
+ /** Set a loading indicator element to show during navigation */
36
+ export declare function setLoadingElement(el: HTMLElement): void;
37
+ export declare function onNavigate(fn: NavigateCallback): () => void;
38
+ export declare function beforeNavigate(fn: BeforeNavigateCallback): () => void;
39
+ export declare function getCurrentPath(): string;
40
+ export declare function getRouterNavigationDiagnostics(): RouterNavigationDiagnostics;
41
+ export declare function setCurrentRouteScript(script: string | null | undefined): void;
42
+ export declare function navigate(url: string, pushState?: boolean): Promise<void>;
43
+ export declare function refreshCurrentRoute(): Promise<void>;
44
+ export declare function applyHMRUpdate(update: HMRUpdate): Promise<void>;
45
+ export declare function prefetch(url: string): void;
46
+ export declare function initRouter(): void;
47
+ export {};