gorsee 0.2.4 → 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 +101 -45
  406. package/bin/gorsee.js +0 -2
  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
@@ -1,127 +0,0 @@
1
- // Page route request handler — SSR + streaming + layouts + loaders
2
-
3
- import { createContext } from "../server/middleware.ts"
4
- import { renderToString, ssrJsx } from "../runtime/server.ts"
5
- import { renderToStream, streamJsx } from "../runtime/stream.ts"
6
- import { resetServerHead, getServerHead } from "../runtime/head.ts"
7
- import { handleAction } from "../server/action.ts"
8
- import { log } from "../log/index.ts"
9
- import { createClientScriptPath, renderPageDocument, resolvePageRoute } from "../server/page-render.ts"
10
- import { handleRouteRequest } from "../server/route-request.ts"
11
- import type { MatchResult } from "../router/matcher.ts"
12
- import type { BuildResult } from "../build/client.ts"
13
-
14
- interface RenderOptions {
15
- match: MatchResult
16
- request: Request
17
- nonce: string
18
- start: number
19
- clientBuild: BuildResult
20
- secHeaders: Record<string, string>
21
- wrapHTML: (body: string, nonce: string, opts?: { title?: string; clientScript?: string; loaderData?: unknown; params?: Record<string, string>; cssFiles?: string[]; headElements?: string[] }) => string
22
- }
23
-
24
- async function renderPageRoute(mod: Record<string, unknown>, opts: RenderOptions): Promise<Response> {
25
- const { match, request, nonce, start, clientBuild, secHeaders, wrapHTML } = opts
26
- const ctx = createContext(request, match.params)
27
-
28
- // API route
29
- if (typeof mod.GET === "function" && request.method === "GET") return (mod.GET as Function)(ctx)
30
- if (typeof mod.POST === "function" && request.method === "POST") return (mod.POST as Function)(ctx)
31
-
32
- // Server Action (POST with action export)
33
- if (request.method === "POST" && typeof mod.action === "function") {
34
- const result = await handleAction(mod.action as (ctx: import("../server/middleware.ts").Context) => Promise<unknown>, ctx)
35
- if (request.headers.get("Accept")?.includes("application/json")) {
36
- return new Response(JSON.stringify(result), {
37
- status: result.status,
38
- headers: { "Content-Type": "application/json" },
39
- })
40
- }
41
- // Progressive enhancement: redirect back to the page after action
42
- return new Response(null, {
43
- status: 303,
44
- headers: { Location: request.url },
45
- })
46
- }
47
-
48
- const component = mod.default as Function | undefined
49
- if (typeof component !== "function") {
50
- return new Response("Route has no default export", { status: 500 })
51
- }
52
-
53
- const resolved = await resolvePageRoute(mod, match, ctx)
54
- if (!resolved) {
55
- return new Response("Route has no default export", { status: 500 })
56
- }
57
-
58
- const { pageComponent, loaderData, cssFiles, renderMode } = resolved
59
- const pageProps = { params: match.params, ctx, data: loaderData }
60
- const clientScript = createClientScriptPath(clientBuild.entryMap.get(match.route.path))
61
- const htmlOpts = { clientScript, loaderData, params: match.params, cssFiles }
62
-
63
- if (renderMode === "stream") {
64
- resetServerHead()
65
- const vnode = streamJsx(pageComponent as any, pageProps)
66
- const stream = renderToStream(vnode, {
67
- shell: (body: string) => wrapHTML(body, nonce, {
68
- ...htmlOpts,
69
- headElements: getServerHead(),
70
- }),
71
- })
72
- const elapsed = (performance.now() - start).toFixed(1)
73
- log.info("request", { method: request.method, path: match.route.path, status: 200, ms: elapsed, mode: "stream" })
74
- return new Response(stream, {
75
- headers: { "Content-Type": "text/html", ...secHeaders },
76
- })
77
- }
78
-
79
- // Default: async SSR
80
- const rendered = renderPageDocument(pageComponent, ctx, match.params, loaderData)
81
- const html = wrapHTML(rendered.html, nonce, {
82
- ...htmlOpts,
83
- headElements: rendered.headElements,
84
- })
85
- const elapsed = (performance.now() - start).toFixed(1)
86
- log.info("request", { method: request.method, path: match.route.path, status: 200, ms: elapsed })
87
-
88
- return new Response(html, {
89
- headers: { "Content-Type": "text/html", ...secHeaders },
90
- })
91
- }
92
-
93
- export async function handlePageRequest(opts: RenderOptions): Promise<Response> {
94
- const { match, request } = opts
95
- return handleRouteRequest({
96
- match,
97
- request,
98
- onPartialRequest: async () => {
99
- const { handlePartialNavigation } = await import("./partial-handler.ts")
100
- return handlePartialNavigation({ match, request, clientBuild: opts.clientBuild })
101
- },
102
- onPageRequest: async ({ mod }) => renderPageRoute(mod, opts),
103
- onRouteError: async (err) => {
104
- if (match.route.errorPath) {
105
- const errObj = err instanceof Error ? err : new Error(String(err))
106
- return renderErrorBoundary(match.route.errorPath, errObj, opts)
107
- }
108
- throw err
109
- },
110
- })
111
- }
112
-
113
- async function renderErrorBoundary(errorPath: string, error: Error, opts: RenderOptions): Promise<Response> {
114
- const { nonce, secHeaders, wrapHTML, match } = opts
115
- const errorMod = await import(errorPath)
116
- const ErrorComponent = errorMod.default
117
- if (typeof ErrorComponent !== "function") throw error
118
-
119
- const vnode = ssrJsx(ErrorComponent as any, { error, params: match.params })
120
- const body = renderToString(vnode)
121
- const html = wrapHTML(body, nonce, { title: "Error" })
122
-
123
- return new Response(html, {
124
- status: 500,
125
- headers: { "Content-Type": "text/html", ...secHeaders },
126
- })
127
- }
@@ -1,48 +0,0 @@
1
- // File watcher for dev mode -- triggers rebuild on changes
2
-
3
- import { watch, type FSWatcher } from "node:fs"
4
- import { join } from "node:path"
5
- import { log } from "../log/index.ts"
6
-
7
- export interface WatcherOptions {
8
- dirs: string[]
9
- onChange: (path: string) => void
10
- debounceMs?: number
11
- }
12
-
13
- export function startWatcher(options: WatcherOptions): () => void {
14
- const { dirs, onChange, debounceMs = 100 } = options
15
- const watchers: FSWatcher[] = []
16
- let timer: ReturnType<typeof setTimeout> | null = null
17
- let pendingPath = ""
18
-
19
- function handle(filename: string | null, dir: string) {
20
- if (!filename) return
21
- if (!filename.match(/\.(tsx?|jsx?|css)$/)) return
22
-
23
- pendingPath = join(dir, filename)
24
-
25
- if (timer) clearTimeout(timer)
26
- timer = setTimeout(() => {
27
- log.info("file changed", { file: pendingPath })
28
- onChange(pendingPath)
29
- timer = null
30
- }, debounceMs)
31
- }
32
-
33
- for (const dir of dirs) {
34
- try {
35
- const w = watch(dir, { recursive: true }, (_event, filename) => {
36
- handle(filename as string | null, dir)
37
- })
38
- watchers.push(w)
39
- } catch {
40
- // directory may not exist
41
- }
42
- }
43
-
44
- return () => {
45
- for (const w of watchers) w.close()
46
- if (timer) clearTimeout(timer)
47
- }
48
- }
package/src/dev.ts DELETED
@@ -1,208 +0,0 @@
1
- // Gorsee.js Dev Server
2
- // Orchestrator: routing + security + HMR + static serving
3
-
4
- import { createRouter, matchRoute, buildStaticMap } from "./router/index.ts"
5
- import { __resetRPCState } from "./server/rpc.ts"
6
- import { securityHeaders } from "./security/headers.ts"
7
- import { createRateLimiter } from "./security/rate-limit.ts"
8
- import { EVENT_REPLAY_SCRIPT } from "./runtime/event-replay.ts"
9
- import { log, setLogLevel } from "./log/index.ts"
10
- import { buildClientBundles, type BuildResult } from "./build/client.ts"
11
- import { HMR_CLIENT_SCRIPT, addHMRClient, removeHMRClient, notifyReload } from "./dev/hmr.ts"
12
- import { startWatcher } from "./dev/watcher.ts"
13
- import { renderErrorOverlay } from "./dev/error-overlay.ts"
14
- import { handlePageRequest } from "./dev/request-handler.ts"
15
- import { handlePartialNavigation } from "./dev/partial-handler.ts"
16
- import { loadEnv } from "./env/index.ts"
17
- import { generateNonce, wrapHTML } from "./server/html-shell.ts"
18
- import { renderNotFoundPage } from "./server/not-found.ts"
19
- import { createRateLimitResponse, handleRPCWithHeaders } from "./server/request-preflight.ts"
20
- import { servePrefixedStaticFile, serveStaticFile } from "./server/static-file.ts"
21
- import { join } from "node:path"
22
- import type { Route } from "./router/index.ts"
23
- import { createProjectContext, resolveRuntimeEnv, type RuntimeOptions } from "./runtime/project.ts"
24
-
25
- interface StartDevServerOptions extends RuntimeOptions {
26
- port?: number
27
- }
28
-
29
- interface DevRuntimeState {
30
- cwd: string
31
- routesDir: string
32
- publicDir: string
33
- clientDir: string
34
- rateLimiter: ReturnType<typeof createRateLimiter>
35
- routes: Route[]
36
- staticMap: Map<string, Route>
37
- clientBuild: BuildResult
38
- }
39
-
40
- // --- Static file serving ---
41
-
42
- async function tryServeStatic(publicDir: string, pathname: string): Promise<Response | null> {
43
- if (pathname === "/") return null
44
- return serveStaticFile(publicDir, pathname.slice(1))
45
- }
46
-
47
- async function tryServeClientBundle(clientDir: string, pathname: string): Promise<Response | null> {
48
- return servePrefixedStaticFile(pathname, "/_gorsee/", clientDir, {
49
- contentType: "application/javascript",
50
- })
51
- }
52
-
53
- // --- 404 page ---
54
-
55
- async function render404Page(routesDir: string, nonce: string): Promise<string> {
56
- return renderNotFoundPage(routesDir, nonce, {
57
- bodyPrefix: [EVENT_REPLAY_SCRIPT.replace("<script", `<script nonce="${nonce}"`)],
58
- bodySuffix: [HMR_CLIENT_SCRIPT.replace("<script", `<script nonce="${nonce}"`)],
59
- })
60
- }
61
-
62
- // --- Build & watch ---
63
-
64
- async function createDevRuntimeState(cwd: string): Promise<DevRuntimeState> {
65
- const { paths } = createProjectContext({ cwd })
66
- return {
67
- cwd,
68
- routesDir: paths.routesDir,
69
- publicDir: paths.publicDir,
70
- clientDir: join(paths.gorseeDir, "client"),
71
- rateLimiter: createRateLimiter(200, "1m"),
72
- routes: [],
73
- staticMap: new Map(),
74
- clientBuild: { entryMap: new Map() },
75
- }
76
- }
77
-
78
- async function rebuildClient(state: DevRuntimeState, buildState: { inProgress: boolean, queued: boolean }) {
79
- if (buildState.inProgress) {
80
- buildState.queued = true
81
- return
82
- }
83
- buildState.inProgress = true
84
- try {
85
- __resetRPCState()
86
- state.routes = await createRouter(state.routesDir)
87
- state.staticMap = buildStaticMap(state.routes)
88
- state.clientBuild = await buildClientBundles(state.routes, state.cwd)
89
- log.info("client build complete", { routes: state.clientBuild.entryMap.size })
90
- } catch (err) {
91
- log.error("client build failed", { error: String(err) })
92
- } finally {
93
- buildState.inProgress = false
94
- if (buildState.queued) {
95
- buildState.queued = false
96
- await rebuildClient(state, buildState)
97
- }
98
- }
99
- }
100
-
101
- // --- Server ---
102
-
103
- export async function startDevServer(options: StartDevServerOptions = {}) {
104
- const runtime = createProjectContext(options)
105
- const cwd = runtime.cwd
106
- const state = await createDevRuntimeState(cwd)
107
- const buildState = { inProgress: false, queued: false }
108
-
109
- await loadEnv(cwd)
110
- const envConfig = resolveRuntimeEnv(process.env)
111
- const port = options.port ?? envConfig.port
112
- setLogLevel(envConfig.logLevel)
113
- log.info("scanning routes", { dir: state.routesDir })
114
-
115
- state.routes = await createRouter(state.routesDir)
116
- state.staticMap = buildStaticMap(state.routes)
117
- for (const route of state.routes) {
118
- log.info("route registered", { path: route.path, file: route.filePath })
119
- }
120
-
121
- await rebuildClient(state, buildState)
122
-
123
- startWatcher({
124
- dirs: [state.routesDir, runtime.paths.sharedDir, runtime.paths.middlewareDir],
125
- onChange: async () => {
126
- await rebuildClient(state, buildState)
127
- notifyReload()
128
- },
129
- })
130
-
131
- const server = Bun.serve({
132
- port,
133
- async fetch(request, server) {
134
- const url = new URL(request.url)
135
- const pathname = url.pathname
136
-
137
- // WebSocket upgrade for HMR
138
- if (pathname === "/__gorsee_hmr") {
139
- if (server.upgrade(request)) return new Response(null, { status: 101 })
140
- return new Response("WebSocket upgrade failed", { status: 400 })
141
- }
142
-
143
- // Rate limiting by IP
144
- const ip = server.requestIP(request)?.address ?? "unknown"
145
- const rateLimitResponse = createRateLimitResponse(state.rateLimiter, ip)
146
- if (rateLimitResponse) return rateLimitResponse
147
-
148
- const start = performance.now()
149
- const nonce = generateNonce()
150
- const secHeaders = securityHeaders({}, nonce)
151
-
152
- // 1. RPC
153
- const rpcResponse = await handleRPCWithHeaders(request, secHeaders)
154
- if (rpcResponse) return rpcResponse
155
-
156
- // 2. Client bundles
157
- const bundleResponse = await tryServeClientBundle(state.clientDir, pathname)
158
- if (bundleResponse) return bundleResponse
159
-
160
- // 3. Static files
161
- const staticResponse = await tryServeStatic(state.publicDir, pathname)
162
- if (staticResponse) return staticResponse
163
-
164
- // 4. Route matching
165
- const match = matchRoute(state.routes, pathname, state.staticMap)
166
- if (!match) {
167
- const notFoundHtml = await render404Page(state.routesDir, nonce)
168
- return new Response(notFoundHtml, {
169
- status: 404,
170
- headers: { "Content-Type": "text/html", ...secHeaders },
171
- })
172
- }
173
-
174
- try {
175
- // Partial navigation (SPA client-side routing)
176
- if (request.headers.get("X-Gorsee-Navigate") === "partial") {
177
- return await handlePartialNavigation({ match, request, clientBuild: state.clientBuild })
178
- }
179
-
180
- return await handlePageRequest({
181
- match, request, nonce, start, clientBuild: state.clientBuild, secHeaders, wrapHTML,
182
- })
183
- } catch (err) {
184
- const errObj = err instanceof Error ? err : new Error(String(err))
185
- log.error("request error", { path: pathname, error: errObj.message })
186
- return new Response(renderErrorOverlay(errObj, nonce), {
187
- status: 500,
188
- headers: { "Content-Type": "text/html", ...secHeaders },
189
- })
190
- }
191
- },
192
- websocket: {
193
- open(ws) { addHMRClient(ws) },
194
- close(ws) { removeHMRClient(ws) },
195
- message() {},
196
- },
197
- })
198
-
199
- log.info("dev server started", { url: `http://localhost:${server.port}` })
200
- return server
201
- }
202
-
203
- if (import.meta.main) {
204
- startDevServer().catch((err) => {
205
- console.error("Failed to start dev server:", err)
206
- process.exit(1)
207
- })
208
- }
package/src/env/index.ts DELETED
@@ -1,74 +0,0 @@
1
- // Environment variable loading from .env files
2
- // Priority: .env.local > .env.{NODE_ENV} > .env
3
- // Only PUBLIC_ prefixed vars are exposed to client bundles
4
-
5
- import { readFile } from "node:fs/promises"
6
- import { join } from "node:path"
7
-
8
- function parseEnvFile(content: string): Record<string, string> {
9
- const result: Record<string, string> = {}
10
- for (const line of content.split("\n")) {
11
- const trimmed = line.trim()
12
- if (!trimmed || trimmed.startsWith("#")) continue
13
- const eqIndex = trimmed.indexOf("=")
14
- if (eqIndex < 0) continue
15
- const key = trimmed.slice(0, eqIndex).trim()
16
- let value = trimmed.slice(eqIndex + 1).trim()
17
- // Remove quotes
18
- if ((value.startsWith('"') && value.endsWith('"')) ||
19
- (value.startsWith("'") && value.endsWith("'"))) {
20
- value = value.slice(1, -1)
21
- }
22
- result[key] = value
23
- }
24
- return result
25
- }
26
-
27
- async function loadFile(path: string): Promise<Record<string, string>> {
28
- try {
29
- const content = await readFile(path, "utf-8")
30
- return parseEnvFile(content)
31
- } catch {
32
- return {}
33
- }
34
- }
35
-
36
- export async function loadEnv(cwd: string): Promise<void> {
37
- const mode = process.env.NODE_ENV ?? "development"
38
-
39
- // Load in priority order (lower priority first, higher overwrites)
40
- const files = [
41
- join(cwd, ".env"),
42
- join(cwd, `.env.${mode}`),
43
- join(cwd, ".env.local"),
44
- ]
45
-
46
- for (const file of files) {
47
- const vars = await loadFile(file)
48
- for (const [key, value] of Object.entries(vars)) {
49
- // Don't overwrite existing env vars (process env takes precedence)
50
- if (process.env[key] === undefined) {
51
- process.env[key] = value
52
- }
53
- }
54
- }
55
- }
56
-
57
- export function getPublicEnv(): Record<string, string> {
58
- const result: Record<string, string> = {}
59
- for (const [key, value] of Object.entries(process.env)) {
60
- if (key.startsWith("PUBLIC_") && value !== undefined) {
61
- result[key] = value
62
- }
63
- }
64
- return result
65
- }
66
-
67
- export function env(key: string, defaultValue?: string): string {
68
- const value = process.env[key]
69
- if (value === undefined) {
70
- if (defaultValue !== undefined) return defaultValue
71
- throw new Error(`[GORSEE] Missing required environment variable: ${key}`)
72
- }
73
- return value
74
- }
@@ -1,63 +0,0 @@
1
- import { ERROR_CATALOG, type ErrorCode } from "./catalog.ts"
2
-
3
- export class GorseeError extends Error {
4
- readonly code: ErrorCode
5
- readonly filePath?: string
6
- readonly line?: number
7
-
8
- constructor(code: ErrorCode, details?: { filePath?: string; line?: number; extra?: string }) {
9
- const entry = ERROR_CATALOG[code]
10
- const title = entry?.title ?? "Unknown error"
11
- super(`[GORSEE ${code}] ${title}${details?.extra ? `: ${details.extra}` : ""}`)
12
-
13
- this.code = code
14
- this.filePath = details?.filePath
15
- this.line = details?.line
16
- }
17
- }
18
-
19
- export interface FormattedError {
20
- human: string
21
- json: {
22
- code: ErrorCode
23
- title: string
24
- file?: string
25
- line?: number
26
- fix: string
27
- }
28
- }
29
-
30
- export function formatError(err: GorseeError): FormattedError {
31
- const entry = ERROR_CATALOG[err.code]
32
-
33
- const location = err.filePath
34
- ? `\n ${err.filePath}${err.line ? `:${err.line}` : ""}`
35
- : ""
36
-
37
- const human = [
38
- `GORSEE ${err.code}: ${entry?.title ?? "Unknown"}`,
39
- location,
40
- `\n What: ${entry?.description ?? err.message}`,
41
- ` Fix: ${entry?.fix ?? "See documentation"}`,
42
- `\n AI context (copy entire block):`,
43
- ` +${"─".repeat(45)}`,
44
- ` | Framework: Gorsee.js`,
45
- ` | Error: ${err.code} - ${entry?.title}`,
46
- err.filePath ? ` | File: ${err.filePath}${err.line ? `:${err.line}` : ""}` : null,
47
- ` | Fix: ${entry?.fix}`,
48
- ` +${"─".repeat(45)}`,
49
- ]
50
- .filter(Boolean)
51
- .join("\n")
52
-
53
- return {
54
- human,
55
- json: {
56
- code: err.code,
57
- title: entry?.title ?? "Unknown",
58
- file: err.filePath,
59
- line: err.line,
60
- fix: entry?.fix ?? "See documentation",
61
- },
62
- }
63
- }
@@ -1,2 +0,0 @@
1
- export { GorseeError, formatError } from "./formatter.ts"
2
- export { ERROR_CATALOG, type ErrorCode } from "./catalog.ts"
package/src/i18n/index.ts DELETED
@@ -1,72 +0,0 @@
1
- // Basic i18n support
2
- // Dictionary-based translations with locale detection
3
-
4
- import { createSignal, type SignalGetter } from "../reactive/signal.ts"
5
-
6
- type Translations = Record<string, string | Record<string, string>>
7
- type LocaleDict = Record<string, Translations>
8
-
9
- let dictionaries: LocaleDict = {}
10
- let defaultLocale = "en"
11
-
12
- const [currentLocale, setCurrentLocale] = createSignal(defaultLocale)
13
-
14
- export function setupI18n(config: {
15
- locales: LocaleDict
16
- defaultLocale?: string
17
- detectLocale?: boolean
18
- }): void {
19
- dictionaries = config.locales
20
- defaultLocale = config.defaultLocale ?? "en"
21
-
22
- if (config.detectLocale && typeof navigator !== "undefined") {
23
- const browserLang = navigator.language.split("-")[0] ?? defaultLocale
24
- if (dictionaries[browserLang]) {
25
- setCurrentLocale(browserLang)
26
- return
27
- }
28
- }
29
-
30
- setCurrentLocale(defaultLocale)
31
- }
32
-
33
- export function getLocale(): SignalGetter<string> {
34
- return currentLocale
35
- }
36
-
37
- export function setLocale(locale: string): void {
38
- if (!dictionaries[locale]) {
39
- console.warn(`[gorsee/i18n] Locale "${locale}" not found, available: ${Object.keys(dictionaries).join(", ")}`)
40
- return
41
- }
42
- setCurrentLocale(locale)
43
- }
44
-
45
- export function t(key: string, params?: Record<string, string | number>): string {
46
- const locale = currentLocale()
47
- const dict = dictionaries[locale] ?? dictionaries[defaultLocale] ?? {}
48
-
49
- // Support nested keys: "nav.home"
50
- const parts = key.split(".")
51
- let value: unknown = dict
52
- for (const part of parts) {
53
- if (typeof value !== "object" || value === null) { value = undefined; break }
54
- value = (value as Record<string, unknown>)[part]
55
- }
56
-
57
- if (typeof value !== "string") return key
58
-
59
- // Replace {{param}} placeholders
60
- if (params) {
61
- return value.replace(/\{\{(\w+)\}\}/g, (_, name) => {
62
- return params[name] !== undefined ? String(params[name]) : `{{${name}}}`
63
- })
64
- }
65
-
66
- return value
67
- }
68
-
69
- export function plural(key: string, count: number, params?: Record<string, string | number>): string {
70
- const suffix = count === 1 ? "one" : "other"
71
- return t(`${key}.${suffix}`, { count, ...params })
72
- }
@@ -1,4 +0,0 @@
1
- // Browser-safe root entry used by client bundling.
2
- // Mirrors the explicit public `gorsee/client` entrypoint.
3
-
4
- export * from "./client.ts"
package/src/index.ts DELETED
@@ -1,43 +0,0 @@
1
- // Gorsee.js -- compatibility entry point.
2
- // Prefer "gorsee/client" for browser-safe APIs, "gorsee/server" for server-only APIs,
3
- // or "gorsee/compat" when you need an explicit legacy migration path.
4
-
5
- /** @deprecated Import from "gorsee/client" instead. */
6
- export {
7
- createSignal,
8
- createComputed,
9
- createEffect,
10
- createResource,
11
- createStore,
12
- createLive,
13
- invalidateResource,
14
- invalidateAll,
15
- createMutation,
16
- } from "./reactive/index.ts"
17
-
18
- /** @deprecated Import from "gorsee/client" instead. */
19
- export { Suspense } from "./runtime/suspense.ts"
20
- /** @deprecated Import from "gorsee/client" instead. */
21
- export { Link } from "./runtime/link.ts"
22
- /** @deprecated Import from "gorsee/client" instead. */
23
- export { Head } from "./runtime/head.ts"
24
- /** @deprecated Import from "gorsee/client" instead. */
25
- export { navigate, onNavigate, beforeNavigate, getCurrentPath } from "./runtime/router.ts"
26
- /** @deprecated Import from "gorsee/client" instead. */
27
- export { useFormAction } from "./runtime/form.ts"
28
- /** @deprecated Import from "gorsee/client" instead. */
29
- export { Image } from "./runtime/image.ts"
30
- /** @deprecated Import from "gorsee/client" instead. */
31
- export { ErrorBoundary } from "./runtime/error-boundary.ts"
32
- /** @deprecated Import from "gorsee/client" instead. */
33
- export { island } from "./runtime/island.ts"
34
- /** @deprecated Import from "gorsee/client" instead. */
35
- export { createEventSource } from "./server/sse.ts"
36
- /** @deprecated Import from "gorsee/server" instead. */
37
- export { createAuth } from "./auth/index.ts"
38
- /** @deprecated Import from "gorsee/client" instead. */
39
- export { typedLink, typedNavigate } from "./runtime/typed-routes.ts"
40
- /** @deprecated Import from "gorsee/client" instead. */
41
- export { defineForm, validateForm, fieldAttrs } from "./runtime/validated-form.ts"
42
- /** @deprecated Import from "gorsee/server" instead. */
43
- export { definePlugin, createPluginRunner, type GorseePlugin, type PluginContext } from "./plugins/index.ts"
@@ -1,13 +0,0 @@
1
- // Client-side JSX runtime -- creates real DOM nodes with reactive bindings
2
- // Used by client bundles (browser target)
3
-
4
- export { jsx, jsxs, jsxDEV, Fragment } from "./runtime/jsx-runtime.ts"
5
-
6
- export namespace JSX {
7
- export type Element = Node | DocumentFragment
8
- export type IntrinsicElements = import("./jsx-types-html.ts").GorseeIntrinsicElements
9
-
10
- export interface ElementChildrenAttribute {
11
- children: unknown
12
- }
13
- }
@@ -1,20 +0,0 @@
1
- // JSX automatic runtime entry point
2
- // jsxImportSource: "gorsee" resolves to gorsee/jsx-runtime
3
- // In dev/SSR mode this uses ssrJsx; client build would swap to DOM jsx
4
-
5
- import { ssrJsx, ssrJsxs } from "./runtime/server.ts"
6
- import { Fragment } from "./runtime/jsx-runtime.ts"
7
-
8
- export { Fragment }
9
- export const jsx = ssrJsx
10
- export const jsxs = ssrJsxs
11
- export const jsxDEV = ssrJsx
12
-
13
- export namespace JSX {
14
- export type Element = import("./runtime/server.ts").VNode | Node | DocumentFragment
15
- export type IntrinsicElements = import("./jsx-types-html.ts").GorseeIntrinsicElements
16
-
17
- export interface ElementChildrenAttribute {
18
- children: unknown
19
- }
20
- }