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,11 @@
1
+ import { GORSEE_BUILD_BACKEND_ENV } from "./client-backend.js";
2
+ export interface BuildBackendReadiness {
3
+ envVar: typeof GORSEE_BUILD_BACKEND_ENV;
4
+ stableDefault: "rolldown";
5
+ preferredCanary: "experimental-rolldown";
6
+ selected: string;
7
+ resolvedFromEnv: string;
8
+ registered: string[];
9
+ experimental: string[];
10
+ }
11
+ export declare function getBuildBackendReadiness(env?: NodeJS.ProcessEnv): BuildBackendReadiness;
@@ -0,0 +1,18 @@
1
+ import {
2
+ GORSEE_BUILD_BACKEND_ENV,
3
+ getClientBuildBackend,
4
+ listClientBuildBackends,
5
+ resolveClientBuildBackendName
6
+ } from "./client-backend.js";
7
+ export function getBuildBackendReadiness(env = process.env) {
8
+ const registered = listClientBuildBackends();
9
+ return {
10
+ envVar: GORSEE_BUILD_BACKEND_ENV,
11
+ stableDefault: "rolldown",
12
+ preferredCanary: "experimental-rolldown",
13
+ selected: getClientBuildBackend().name,
14
+ resolvedFromEnv: resolveClientBuildBackendName(env),
15
+ registered,
16
+ experimental: registered.filter((name) => name.startsWith("experimental-"))
17
+ };
18
+ }
@@ -0,0 +1,17 @@
1
+ export declare const SERVER_ONLY_MODULES: readonly ["gorsee/db", "gorsee/log"];
2
+ export declare const SERVER_STUB_MODULES: Record<string, string>;
3
+ export interface RouteClientTransformResult {
4
+ source: string;
5
+ removedLoader: boolean;
6
+ removedServerImports: number;
7
+ transformedServerCalls: boolean;
8
+ }
9
+ export declare function stripRouteLoader(source: string): {
10
+ source: string;
11
+ removed: boolean;
12
+ };
13
+ export declare function stripServerOnlyImports(source: string): {
14
+ source: string;
15
+ removedCount: number;
16
+ };
17
+ export declare function applyRouteClientTransforms(source: string, filePath: string): RouteClientTransformResult;
@@ -0,0 +1,48 @@
1
+ import { transformServerCalls } from "./rpc-transform.js";
2
+ export const SERVER_ONLY_MODULES = ["gorsee/db", "gorsee/log"], SERVER_STUB_MODULES = {
3
+ "gorsee/server": `export function server(fn) { return fn; }
4
+ export function middleware(fn) { return fn; }`
5
+ };
6
+ const SERVER_IMPORT_REGEXES = SERVER_ONLY_MODULES.map((mod) => new RegExp(`import\\s+.*?from\\s+["']${mod.replace("/", "\\/")}["'];?\\n?`, "g"));
7
+ export function stripRouteLoader(source) {
8
+ for (const hookName of ["load", "loader"]) {
9
+ const loaderRe = new RegExp(`export\\s+(async\\s+)?function\\s+${hookName}\\s*\\([^)]*\\)\\s*(\\{)`, "g"), match = loaderRe.exec(source);
10
+ if (!match)
11
+ continue;
12
+ const start = match.index;
13
+ let braces = 1, index = loaderRe.lastIndex;
14
+ while (index < source.length && braces > 0) {
15
+ if (source[index] === "{")
16
+ braces++;
17
+ else if (source[index] === "}")
18
+ braces--;
19
+ index++;
20
+ }
21
+ return {
22
+ source: source.slice(0, start) + source.slice(index),
23
+ removed: !0
24
+ };
25
+ }
26
+ return { source, removed: !1 };
27
+ }
28
+ export function stripServerOnlyImports(source) {
29
+ let next = source, removedCount = 0;
30
+ for (const re of SERVER_IMPORT_REGEXES) {
31
+ re.lastIndex = 0;
32
+ const matches = [...next.matchAll(re)];
33
+ if (matches.length === 0)
34
+ continue;
35
+ removedCount += matches.length;
36
+ next = next.replace(re, "");
37
+ }
38
+ return { source: next, removedCount };
39
+ }
40
+ export function applyRouteClientTransforms(source, filePath) {
41
+ const loaderResult = stripRouteLoader(source), importResult = stripServerOnlyImports(loaderResult.source), rpcSource = transformServerCalls(importResult.source, filePath);
42
+ return {
43
+ source: rpcSource,
44
+ removedLoader: loaderResult.removed,
45
+ removedServerImports: importResult.removedCount,
46
+ transformedServerCalls: rpcSource !== importResult.source
47
+ };
48
+ }
@@ -0,0 +1,6 @@
1
+ import type { Route } from "../router/scanner.js";
2
+ export interface RouteBuildMetadata {
3
+ hasLoader: boolean;
4
+ declaresPrerender: boolean;
5
+ }
6
+ export declare function inspectRouteBuildMetadata(route: Route): Promise<RouteBuildMetadata>;
@@ -0,0 +1,8 @@
1
+ import { inspectRouteFacts } from "../compiler/route-facts.js";
2
+ export async function inspectRouteBuildMetadata(route) {
3
+ const facts = await inspectRouteFacts(route);
4
+ return {
5
+ hasLoader: facts.hasLoader,
6
+ declaresPrerender: facts.declaresPrerender
7
+ };
8
+ }
@@ -0,0 +1 @@
1
+ export declare function transformServerCalls(source: string, filePath: string): string;
@@ -0,0 +1,44 @@
1
+ import { hashRPC } from "../server/rpc-hash.js";
2
+ import { RPC_CONTENT_TYPE, RPC_PROTOCOL_VERSION } from "../server/rpc-protocol.js";
3
+ const DEVALUE_PARSE_MODULE = new URL("./devalue-parse.js", import.meta.url).pathname;
4
+ function stripTypeAnnotations(args) {
5
+ return args.split(",").map((arg) => {
6
+ return arg.trim().replace(/\s*:\s*[^,=]+$/, "").replace(/\s*:\s*[^,=]+(?=\s*=)/, "");
7
+ }).join(", ");
8
+ }
9
+ export function transformServerCalls(source, filePath) {
10
+ const matches = [...source.matchAll(/\bserver\s*\(\s*(?=async\s|function\s)/g)];
11
+ if (matches.length === 0)
12
+ return source;
13
+ let result = source;
14
+ for (let i = matches.length - 1;i >= 0; i--) {
15
+ const match = matches[i], start = match.index, id = hashRPC(filePath, i);
16
+ let depth = 0, end = start;
17
+ for (let j = start;j < source.length; j++)
18
+ if (source[j] === "(")
19
+ depth++;
20
+ else if (source[j] === ")") {
21
+ depth--;
22
+ if (depth === 0) {
23
+ end = j + 1;
24
+ break;
25
+ }
26
+ }
27
+ const argsMatch = source.slice(start + match[0].length, end - 1).match(/^(async\s+)?(?:\(([^)]*)\)|(\w+))\s*=>/), rawArgs = argsMatch ? argsMatch[2] ?? argsMatch[3] ?? "" : "", args = rawArgs ? stripTypeAnnotations(rawArgs) : "...args", stub = `(async (${args}) => {
28
+ const res = await fetch("/api/_rpc/${id}", {
29
+ method: "POST",
30
+ headers: { "Content-Type": "${RPC_CONTENT_TYPE}", "Accept": "${RPC_CONTENT_TYPE}" },
31
+ body: JSON.stringify({ v: ${RPC_PROTOCOL_VERSION}, args: [${args}] })
32
+ });
33
+ if (!res.ok) throw new Error("RPC failed: " + res.status);
34
+ const payload = await res.json();
35
+ if (!payload || payload.ok !== true || payload.v !== ${RPC_PROTOCOL_VERSION} || payload.encoding !== "devalue") {
36
+ throw new Error("RPC protocol mismatch");
37
+ }
38
+ return __gorseeDevalParse(payload.data);
39
+ })`;
40
+ result = result.slice(0, start) + stub + result.slice(end);
41
+ }
42
+ return `import { parse as __gorseeDevalParse } from "${DEVALUE_PARSE_MODULE}";
43
+ ` + result;
44
+ }
@@ -0,0 +1,4 @@
1
+ export interface ServerBundleSurface {
2
+ serverEntries: string[];
3
+ }
4
+ export declare function buildServerArtifacts(cwd: string, distDir: string): Promise<ServerBundleSurface>;
@@ -0,0 +1,261 @@
1
+ import { existsSync } from "node:fs";
2
+ import { basename, join, relative, resolve } from "node:path";
3
+ import { mkdir, readFile, readdir, rename, rm, writeFile } from "node:fs/promises";
4
+ import ts from "typescript";
5
+ const FRAMEWORK_ROOT = resolve(import.meta.dir, "..");
6
+ function resolveFrameworkModule(stem) {
7
+ const tsPath = join(FRAMEWORK_ROOT, `${stem}.ts`);
8
+ if (existsSync(tsPath))
9
+ return tsPath;
10
+ const jsPath = join(FRAMEWORK_ROOT, `${stem}.js`);
11
+ if (existsSync(jsPath))
12
+ return jsPath;
13
+ return tsPath;
14
+ }
15
+ export async function buildServerArtifacts(cwd, distDir) {
16
+ const entryDir = join(cwd, ".gorsee", "server"), compiledAppDir = join(distDir, "server", "app"), runtimePathOverrides = {
17
+ routesDir: join(compiledAppDir, "routes"),
18
+ sharedDir: join(compiledAppDir, "shared"),
19
+ middlewareDir: join(compiledAppDir, "middleware"),
20
+ appConfigFile: join(compiledAppDir, "app.config.js")
21
+ };
22
+ await rm(entryDir, { recursive: !0, force: !0 });
23
+ await mkdir(entryDir, { recursive: !0 });
24
+ await compileServerAppForNode(cwd, compiledAppDir);
25
+ const prodEntry = join(entryDir, "prod-entry.ts"), prodNodeEntry = join(entryDir, "prod-node-entry.ts"), serverHandlerEntry = join(entryDir, "server-handler-entry.ts"), serverHandlerNodeEntry = join(entryDir, "server-handler-node-entry.ts"), workerEntry = join(entryDir, "worker-entry.ts");
26
+ await writeFile(prodEntry, createProdEntrySource(cwd, runtimePathOverrides), "utf-8");
27
+ await writeFile(prodNodeEntry, createProdNodeEntrySource(cwd, runtimePathOverrides), "utf-8");
28
+ await writeFile(serverHandlerEntry, createServerHandlerEntrySource(cwd, runtimePathOverrides), "utf-8");
29
+ await writeFile(serverHandlerNodeEntry, createServerHandlerNodeEntrySource(cwd, runtimePathOverrides), "utf-8");
30
+ await writeFile(workerEntry, createWorkerEntrySource(serverHandlerEntry), "utf-8");
31
+ await bundleServerEntry(prodEntry, join(distDir, "prod.js"));
32
+ await bundleServerEntry(prodNodeEntry, join(distDir, "prod-node.js"), "node");
33
+ await bundleServerEntry(serverHandlerEntry, join(distDir, "server-handler.js"));
34
+ await bundleServerEntry(serverHandlerNodeEntry, join(distDir, "server-handler-node.js"), "node");
35
+ await bundleServerEntry(workerEntry, join(distDir, "worker.js"));
36
+ return {
37
+ serverEntries: ["prod.js", "prod-node.js", "server-handler.js", "server-handler-node.js", "worker.js"]
38
+ };
39
+ }
40
+ async function bundleServerEntry(entrypoint, outfile, target = "bun") {
41
+ const outdir = join(dirnameOf(outfile), ".server-bundle");
42
+ await rm(outdir, { recursive: !0, force: !0 });
43
+ await mkdir(outdir, { recursive: !0 });
44
+ const result = await Bun.build({
45
+ entrypoints: [entrypoint],
46
+ outdir,
47
+ target,
48
+ format: "esm",
49
+ minify: !1,
50
+ sourcemap: "none",
51
+ naming: "[name].js"
52
+ });
53
+ if (!result.success) {
54
+ const message = result.logs.map((log) => log.message).join(`
55
+ `);
56
+ throw Error(message || `Server build failed for ${outfile}`);
57
+ }
58
+ const expectedName = `${basename(entrypoint).replace(/\.[^.]+$/, "")}.js`;
59
+ await rename(join(outdir, expectedName), outfile);
60
+ await rm(outdir, { recursive: !0, force: !0 });
61
+ }
62
+ function createProdEntrySource(cwd, pathOverrides) {
63
+ const prodModule = JSON.stringify(resolveFrameworkModule("prod")), projectCwd = JSON.stringify(cwd), serializedOverrides = JSON.stringify(pathOverrides, null, 2);
64
+ return `import {
65
+ createProductionFetchHandler as createBundledProductionFetchHandler,
66
+ startProductionServer as startBundledProductionServer,
67
+ } from ${prodModule}
68
+
69
+ const PROJECT_CWD = ${projectCwd}
70
+ const PATH_OVERRIDES = ${serializedOverrides}
71
+
72
+ export function createProductionFetchHandler(options = {}) {
73
+ return createBundledProductionFetchHandler({
74
+ cwd: PROJECT_CWD,
75
+ pathOverrides: PATH_OVERRIDES,
76
+ ...options,
77
+ })
78
+ }
79
+
80
+ export function startProductionServer(options = {}) {
81
+ return startBundledProductionServer({
82
+ cwd: PROJECT_CWD,
83
+ pathOverrides: PATH_OVERRIDES,
84
+ ...options,
85
+ })
86
+ }
87
+ `;
88
+ }
89
+ function createProdNodeEntrySource(cwd, pathOverrides) {
90
+ const prodModule = JSON.stringify(resolveFrameworkModule("prod")), projectCwd = JSON.stringify(cwd), serializedOverrides = JSON.stringify(pathOverrides, null, 2);
91
+ return `import {
92
+ createProductionFetchHandler as createBundledProductionFetchHandler,
93
+ startNodeProductionServer as startBundledNodeProductionServer,
94
+ } from ${prodModule}
95
+
96
+ const PROJECT_CWD = ${projectCwd}
97
+ const PATH_OVERRIDES = ${serializedOverrides}
98
+
99
+ export function createProductionFetchHandler(options = {}) {
100
+ return createBundledProductionFetchHandler({
101
+ cwd: PROJECT_CWD,
102
+ pathOverrides: PATH_OVERRIDES,
103
+ ...options,
104
+ })
105
+ }
106
+
107
+ export function startNodeProductionServer(options = {}) {
108
+ return startBundledNodeProductionServer({
109
+ cwd: PROJECT_CWD,
110
+ pathOverrides: PATH_OVERRIDES,
111
+ ...options,
112
+ })
113
+ }
114
+ `;
115
+ }
116
+ function createServerHandlerEntrySource(cwd, pathOverrides) {
117
+ const prodModule = JSON.stringify(resolveFrameworkModule("prod")), projectCwd = JSON.stringify(cwd), serializedOverrides = JSON.stringify(pathOverrides, null, 2);
118
+ return `import { createProductionFetchHandler } from ${prodModule}
119
+
120
+ const PROJECT_CWD = ${projectCwd}
121
+ const PATH_OVERRIDES = ${serializedOverrides}
122
+
123
+ let cachedFetchHandlerPromise
124
+
125
+ async function getFetchHandler(options = {}) {
126
+ if (!cachedFetchHandlerPromise) {
127
+ cachedFetchHandlerPromise = createProductionFetchHandler({
128
+ cwd: PROJECT_CWD,
129
+ pathOverrides: PATH_OVERRIDES,
130
+ ...options,
131
+ })
132
+ }
133
+
134
+ return cachedFetchHandlerPromise
135
+ }
136
+
137
+ export async function handleRequest(request, runtimeContext = {}, options = {}) {
138
+ const handler = await getFetchHandler(options)
139
+ const server = typeof runtimeContext?.requestIP === "function"
140
+ ? { requestIP: (input) => runtimeContext.requestIP(input) }
141
+ : undefined
142
+ return handler(request, server)
143
+ }
144
+ `;
145
+ }
146
+ function createServerHandlerNodeEntrySource(cwd, pathOverrides) {
147
+ const prodModule = JSON.stringify(resolveFrameworkModule("prod")), projectCwd = JSON.stringify(cwd), serializedOverrides = JSON.stringify(pathOverrides, null, 2);
148
+ return `import { createProductionFetchHandler } from ${prodModule}
149
+
150
+ const PROJECT_CWD = ${projectCwd}
151
+ const PATH_OVERRIDES = ${serializedOverrides}
152
+
153
+ let cachedFetchHandlerPromise
154
+
155
+ async function getFetchHandler(options = {}) {
156
+ if (!cachedFetchHandlerPromise) {
157
+ cachedFetchHandlerPromise = createProductionFetchHandler({
158
+ cwd: PROJECT_CWD,
159
+ pathOverrides: PATH_OVERRIDES,
160
+ ...options,
161
+ })
162
+ }
163
+
164
+ return cachedFetchHandlerPromise
165
+ }
166
+
167
+ export async function handleRequest(request, runtimeContext = {}, options = {}) {
168
+ const handler = await getFetchHandler(options)
169
+ const server = typeof runtimeContext?.requestIP === "function"
170
+ ? { requestIP: (input) => runtimeContext.requestIP(input) }
171
+ : undefined
172
+ return handler(request, server)
173
+ }
174
+ `;
175
+ }
176
+ function createWorkerEntrySource(serverHandlerEntry) {
177
+ return `import { handleRequest } from ${JSON.stringify(serverHandlerEntry)}
178
+
179
+ export default {
180
+ async fetch(request, env, ctx) {
181
+ void ctx
182
+ return handleRequest(request, env)
183
+ },
184
+ }
185
+ `;
186
+ }
187
+ function dirnameOf(path) {
188
+ const index = Math.max(path.lastIndexOf("/"), path.lastIndexOf("\\"));
189
+ return index >= 0 ? path.slice(0, index) : ".";
190
+ }
191
+ function replaceExtension(path, extension) {
192
+ return path.replace(/\.[^.]+$/, extension);
193
+ }
194
+ const SERVER_APP_EXTENSIONS = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs"]), SERVER_APP_IGNORED_DIRS = new Set([".git", ".gorsee", "dist", "node_modules", "public"]);
195
+ async function compileServerAppForNode(cwd, outdir) {
196
+ await rm(outdir, { recursive: !0, force: !0 });
197
+ await mkdir(outdir, { recursive: !0 });
198
+ const entrypoints = await collectServerAppEntrypoints(cwd);
199
+ if (entrypoints.length === 0)
200
+ return;
201
+ for (const entrypoint of entrypoints) {
202
+ const rel = relative(cwd, entrypoint), source = await readFile(entrypoint, "utf-8"), rewritten = rewriteServerRuntimeSpecifiers(source, entrypoint), targetPath = join(outdir, replaceExtension(rel, ".js"));
203
+ await mkdir(dirnameOf(targetPath), { recursive: !0 });
204
+ await writeFile(targetPath, transpileServerRuntimeSource(entrypoint, rewritten), "utf-8");
205
+ }
206
+ }
207
+ async function collectServerAppEntrypoints(root, dir = root) {
208
+ const entries = await readdir(dir, { withFileTypes: !0 }).catch(() => []), files = [];
209
+ for (const entry of entries) {
210
+ if (SERVER_APP_IGNORED_DIRS.has(entry.name))
211
+ continue;
212
+ const fullPath = join(dir, entry.name);
213
+ if (entry.isDirectory()) {
214
+ files.push(...await collectServerAppEntrypoints(root, fullPath));
215
+ continue;
216
+ }
217
+ const extIndex = entry.name.lastIndexOf("."), ext = extIndex >= 0 ? entry.name.slice(extIndex) : "";
218
+ if (!SERVER_APP_EXTENSIONS.has(ext))
219
+ continue;
220
+ const rel = relative(root, fullPath);
221
+ if (rel.startsWith("tests/") || rel.startsWith("examples/") || rel.startsWith("benchmarks/"))
222
+ continue;
223
+ files.push(fullPath);
224
+ }
225
+ return files.sort((left, right) => left.localeCompare(right));
226
+ }
227
+ function transpileServerRuntimeSource(path, source) {
228
+ if (path.endsWith(".tsx") || path.endsWith(".ts"))
229
+ return ts.transpileModule(source, {
230
+ fileName: path,
231
+ compilerOptions: {
232
+ module: ts.ModuleKind.ESNext,
233
+ target: ts.ScriptTarget.ES2022,
234
+ jsx: path.endsWith(".tsx") ? ts.JsxEmit.ReactJSX : void 0,
235
+ jsxImportSource: path.endsWith(".tsx") ? "gorsee" : void 0
236
+ }
237
+ }).outputText;
238
+ return source;
239
+ }
240
+ function rewriteServerRuntimeSpecifiers(source, filePath) {
241
+ return source.replace(/((?:from\s*|import\s*\()\s*["'])(\.\.?\/[^"']+?)(["'])/g, (full, prefix, specifier, suffix) => {
242
+ const rewritten = resolveServerRuntimeSpecifier(filePath, specifier);
243
+ return `${prefix}${rewritten}${suffix}`;
244
+ });
245
+ }
246
+ function resolveServerRuntimeSpecifier(filePath, specifier) {
247
+ if (!specifier.startsWith("."))
248
+ return specifier;
249
+ if (/\.(?:css|json|svg|png|jpg|jpeg|gif|webp|woff2?)$/.test(specifier))
250
+ return specifier;
251
+ if (/\.(?:[cm]?js|jsx|[cm]?ts|tsx)$/.test(specifier))
252
+ return specifier.replace(/\.(?:[cm]?js|jsx|[cm]?ts|tsx)$/, ".js");
253
+ const resolvedBase = resolve(dirnameOf(filePath), specifier);
254
+ for (const ext of [".ts", ".tsx", ".js", ".jsx", ".mjs"])
255
+ if (existsSync(`${resolvedBase}${ext}`))
256
+ return `${specifier}.js`;
257
+ for (const ext of [".ts", ".tsx", ".js", ".jsx", ".mjs"])
258
+ if (existsSync(join(resolvedBase, `index${ext}`)))
259
+ return `${specifier}/index.js`;
260
+ return specifier;
261
+ }
@@ -0,0 +1,2 @@
1
+ import type { BunPlugin } from "bun";
2
+ export declare const serverStripPlugin: BunPlugin;
@@ -0,0 +1,32 @@
1
+ import {
2
+ SERVER_ONLY_MODULES,
3
+ SERVER_STUB_MODULES,
4
+ applyRouteClientTransforms
5
+ } from "./route-client-transform.js";
6
+ export const serverStripPlugin = {
7
+ name: "gorsee-server-strip",
8
+ setup(build) {
9
+ for (const mod of SERVER_ONLY_MODULES)
10
+ build.onResolve({ filter: new RegExp(`^${mod.replace("/", "\\/")}$`) }, () => ({
11
+ path: mod,
12
+ namespace: "gorsee-empty"
13
+ }));
14
+ build.onLoad({ filter: /.*/, namespace: "gorsee-empty" }, () => ({
15
+ contents: "export default {}",
16
+ loader: "js"
17
+ }));
18
+ for (const mod of Object.keys(SERVER_STUB_MODULES))
19
+ build.onResolve({ filter: new RegExp(`^${mod.replace("/", "\\/")}$`) }, () => ({
20
+ path: mod,
21
+ namespace: "gorsee-stub"
22
+ }));
23
+ build.onLoad({ filter: /.*/, namespace: "gorsee-stub" }, (args) => ({
24
+ contents: SERVER_STUB_MODULES[args.path] ?? "export default {}",
25
+ loader: "js"
26
+ }));
27
+ build.onLoad({ filter: /routes\/.*\.tsx?$/ }, async (args) => {
28
+ const source = await Bun.file(args.path).text();
29
+ return { contents: applyRouteClientTransforms(source, args.path).source, loader: args.path.endsWith(".tsx") ? "tsx" : "ts" };
30
+ });
31
+ }
32
+ };
@@ -0,0 +1,12 @@
1
+ import { type HTMLWrapOptions } from "../server/html-shell.js";
2
+ export interface SSGResult {
3
+ pages: Map<string, string>;
4
+ errors: string[];
5
+ }
6
+ interface SSGOptions {
7
+ routesDir: string;
8
+ outDir: string;
9
+ wrapHTML?: (body: string, options?: HTMLWrapOptions) => string;
10
+ }
11
+ export declare function generateStaticPages(options: SSGOptions): Promise<SSGResult>;
12
+ export {};
@@ -0,0 +1,36 @@
1
+ import { createRouter } from "../router/scanner.js";
2
+ import { createContext } from "../server/middleware.js";
3
+ import { renderPageDocument, resolvePageRoute } from "../server/page-render.js";
4
+ import { wrapHTML } from "../server/html-shell.js";
5
+ import { join } from "node:path";
6
+ import { mkdir, writeFile } from "node:fs/promises";
7
+ export async function generateStaticPages(options) {
8
+ const { routesDir, outDir, wrapHTML } = options, routes = await createRouter(routesDir), pages = new Map, errors = [];
9
+ for (const route of routes) {
10
+ if (route.isDynamic)
11
+ continue;
12
+ try {
13
+ const mod = await import(route.filePath);
14
+ if (!mod.prerender)
15
+ continue;
16
+ const fakeRequest = new Request(`http://localhost${route.path}`), ctx = createContext(fakeRequest, {}), resolved = await resolvePageRoute(mod, { route, params: {} }, ctx);
17
+ if (!resolved)
18
+ continue;
19
+ const rendered = renderPageDocument(resolved.pageComponent, ctx, {}, resolved.loaderData), html = (wrapHTML ?? defaultWrapHTML)(rendered.html, {
20
+ title: rendered.title,
21
+ loaderData: resolved.loaderData,
22
+ headElements: rendered.headElements,
23
+ cssFiles: resolved.cssFiles
24
+ }), outPath = route.path === "/" ? join(outDir, "index.html") : join(outDir, route.path, "index.html");
25
+ await mkdir(join(outPath, ".."), { recursive: !0 });
26
+ await writeFile(outPath, html);
27
+ pages.set(route.path, outPath);
28
+ } catch (err) {
29
+ errors.push(`${route.path}: ${err instanceof Error ? err.message : String(err)}`);
30
+ }
31
+ }
32
+ return { pages, errors };
33
+ }
34
+ function defaultWrapHTML(body, options = {}) {
35
+ return wrapHTML(body, void 0, options);
36
+ }
@@ -0,0 +1,2 @@
1
+ import { resolveFrameworkImport as resolveFrameworkImportImpl } from "../build/framework-imports.js";
2
+ export declare const resolveFrameworkImport: typeof resolveFrameworkImportImpl;
@@ -0,0 +1,14 @@
1
+ import { plugin } from "bun";
2
+ import { resolveFrameworkImport as resolveFrameworkImportImpl } from "../build/framework-imports.js";
3
+ export const resolveFrameworkImport = resolveFrameworkImportImpl;
4
+ plugin({
5
+ name: "gorsee-resolve",
6
+ setup(build) {
7
+ build.onResolve({ filter: /^gorsee(\/.*)?$/ }, (args) => {
8
+ const mapped = resolveFrameworkImport(args.path);
9
+ if (mapped)
10
+ return { path: mapped };
11
+ return;
12
+ });
13
+ }
14
+ });
@@ -0,0 +1,18 @@
1
+ export interface CanonicalRewriteResult {
2
+ changed: boolean;
3
+ source: string;
4
+ }
5
+ export interface CanonicalRewriteReport {
6
+ changedFiles: string[];
7
+ }
8
+ export interface LoaderRewriteResult {
9
+ changed: boolean;
10
+ source: string;
11
+ }
12
+ export interface LoaderRewriteReport {
13
+ changedFiles: string[];
14
+ }
15
+ export declare function rewriteCanonicalImports(source: string): CanonicalRewriteResult;
16
+ export declare function rewriteCanonicalImportsInProject(cwd: string): Promise<CanonicalRewriteReport>;
17
+ export declare function rewriteLegacyLoaders(source: string): LoaderRewriteResult;
18
+ export declare function rewriteLegacyLoadersInProject(cwd: string): Promise<LoaderRewriteReport>;
@@ -0,0 +1,94 @@
1
+ import { readFile, readdir, stat, writeFile } from "node:fs/promises";
2
+ import { join, relative } from "node:path";
3
+ import { CLIENT_SCOPED_IMPORTS, SERVER_SCOPED_IMPORTS } from "./canonical-imports.js";
4
+ const IMPORT_RE = /import\s*\{([\s\S]*?)\}\s*from\s*(["'])(gorsee\/(?:server|client))\2/g;
5
+ export function rewriteCanonicalImports(source) {
6
+ let changed = !1;
7
+ const rewritten = source.replace(IMPORT_RE, (statement, bindings, _quote, specifier) => {
8
+ const scopedMap = specifier === "gorsee/server" ? SERVER_SCOPED_IMPORTS : CLIENT_SCOPED_IMPORTS, parsed = parseBindings(bindings), kept = [], moved = new Map;
9
+ for (const binding of parsed) {
10
+ const target = scopedMap.get(binding.importedName);
11
+ if (!target) {
12
+ kept.push(binding.raw);
13
+ continue;
14
+ }
15
+ const bucket = moved.get(target) ?? [];
16
+ bucket.push(binding.raw);
17
+ moved.set(target, bucket);
18
+ }
19
+ if (moved.size === 0)
20
+ return statement;
21
+ changed = !0;
22
+ const rewrittenImports = [];
23
+ if (kept.length > 0)
24
+ rewrittenImports.push(renderImport(specifier, kept));
25
+ for (const target of [...moved.keys()].sort())
26
+ rewrittenImports.push(renderImport(target, moved.get(target) ?? []));
27
+ return rewrittenImports.join(`
28
+ `);
29
+ });
30
+ return { changed, source: rewritten };
31
+ }
32
+ export async function rewriteCanonicalImportsInProject(cwd) {
33
+ const sourceFiles = [
34
+ ...await getAllSourceFiles(cwd, "routes"),
35
+ ...await getAllSourceFiles(cwd, "shared"),
36
+ ...await getAllSourceFiles(cwd, "middleware")
37
+ ], changedFiles = [];
38
+ for (const file of sourceFiles) {
39
+ const source = await readFile(file, "utf-8"), rewritten = rewriteCanonicalImports(source);
40
+ if (!rewritten.changed || rewritten.source === source)
41
+ continue;
42
+ await writeFile(file, rewritten.source, "utf-8");
43
+ changedFiles.push(relative(cwd, file));
44
+ }
45
+ changedFiles.sort();
46
+ return { changedFiles };
47
+ }
48
+ export function rewriteLegacyLoaders(source) {
49
+ const rewritten = source.replace(/\bexport\s+async\s+function\s+loader\b/g, "export async function load").replace(/\bexport\s+function\s+loader\b/g, "export function load").replace(/\bexport\s+const\s+loader\b/g, "export const load");
50
+ return { changed: rewritten !== source, source: rewritten };
51
+ }
52
+ export async function rewriteLegacyLoadersInProject(cwd) {
53
+ const sourceFiles = [
54
+ ...await getAllSourceFiles(cwd, "routes"),
55
+ ...await getAllSourceFiles(cwd, "shared"),
56
+ ...await getAllSourceFiles(cwd, "middleware")
57
+ ], changedFiles = [];
58
+ for (const file of sourceFiles) {
59
+ const source = await readFile(file, "utf-8"), rewritten = rewriteLegacyLoaders(source);
60
+ if (!rewritten.changed || rewritten.source === source)
61
+ continue;
62
+ await writeFile(file, rewritten.source, "utf-8");
63
+ changedFiles.push(relative(cwd, file));
64
+ }
65
+ changedFiles.sort();
66
+ return { changedFiles };
67
+ }
68
+ async function getAllSourceFiles(cwd, dir) {
69
+ const path = join(cwd, dir);
70
+ try {
71
+ const entries = await readdir(path), files = [];
72
+ for (const entry of entries) {
73
+ if (entry === "node_modules" || entry === "dist" || entry === ".git")
74
+ continue;
75
+ const fullPath = join(path, entry);
76
+ if ((await stat(fullPath)).isDirectory())
77
+ files.push(...await getAllSourceFiles(cwd, relative(cwd, fullPath)));
78
+ else if (entry.endsWith(".ts") || entry.endsWith(".tsx"))
79
+ files.push(fullPath);
80
+ }
81
+ return files;
82
+ } catch {
83
+ return [];
84
+ }
85
+ }
86
+ function renderImport(specifier, bindings) {
87
+ return `import { ${bindings.join(", ")} } from "${specifier}"`;
88
+ }
89
+ function parseBindings(bindings) {
90
+ return bindings.split(",").map((entry) => entry.trim()).filter(Boolean).map((raw) => {
91
+ const importedName = (raw.startsWith("type ") ? raw.slice(5).trim() : raw).split(/\s+as\s+/)[0].trim();
92
+ return { raw, importedName };
93
+ });
94
+ }
@@ -0,0 +1,8 @@
1
+ import type { ModuleImportFact } from "../compiler/module-analysis.js";
2
+ export declare const SERVER_SCOPED_IMPORTS: Map<string, string>;
3
+ export declare const CLIENT_SCOPED_IMPORTS: Map<string, string>;
4
+ export interface CanonicalImportDrift {
5
+ source: "gorsee/server" | "gorsee/client";
6
+ replacements: Map<string, string>;
7
+ }
8
+ export declare function collectCanonicalImportDrift(imports: ModuleImportFact[]): CanonicalImportDrift[];