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,98 @@
1
+ export function validateDeployArtifactConformance(input) {
2
+ const missing = input.requiredTokens.filter((token) => !input.content.includes(token)), forbidden = (input.forbiddenTokens ?? []).filter((token) => input.content.includes(token)), structured = parseStructuredArtifact(input), missingPaths = structured ? (input.requiredPaths ?? []).filter((path) => getStructuredValue(structured, path) === void 0) : [], mismatchedValues = structured ? (input.requiredValues ?? []).flatMap((expectation) => {
3
+ const actual = getStructuredValue(structured, expectation.path);
4
+ return actual === expectation.value ? [] : [`${expectation.path}: expected ${String(expectation.value)}, received ${String(actual)}`];
5
+ }) : [];
6
+ return {
7
+ ok: missing.length === 0 && forbidden.length === 0 && missingPaths.length === 0 && mismatchedValues.length === 0,
8
+ missing,
9
+ forbidden,
10
+ missingPaths,
11
+ mismatchedValues
12
+ };
13
+ }
14
+ export function assertDeployArtifactConformance(input) {
15
+ const result = validateDeployArtifactConformance(input);
16
+ if (result.ok)
17
+ return;
18
+ const problems = [
19
+ ...result.missing.map((token) => `missing token: ${token}`),
20
+ ...result.forbidden.map((token) => `forbidden token present: ${token}`),
21
+ ...result.missingPaths.map((path) => `missing path: ${path}`),
22
+ ...result.mismatchedValues.map((entry) => `mismatched value: ${entry}`)
23
+ ].join("; ");
24
+ throw Error(`${input.name} failed deploy conformance: ${problems}`);
25
+ }
26
+ function parseStructuredArtifact(input) {
27
+ if (input.format === "json")
28
+ return JSON.parse(input.content);
29
+ if (input.format === "toml")
30
+ return parseToml(input.content);
31
+ return null;
32
+ }
33
+ function getStructuredValue(record, path) {
34
+ let current = record;
35
+ for (const segment of path.split(".")) {
36
+ if (!current || typeof current !== "object" || !(segment in current))
37
+ return;
38
+ current = current[segment];
39
+ }
40
+ return current;
41
+ }
42
+ function parseToml(content) {
43
+ const root = {};
44
+ let current = root;
45
+ for (const rawLine of content.split(/\r?\n/)) {
46
+ const line = rawLine.trim();
47
+ if (!line || line.startsWith("#"))
48
+ continue;
49
+ if (line.startsWith("[[") && line.endsWith("]]")) {
50
+ const segments = line.slice(2, -2).trim().split("."), key = segments.pop(), parent = ensureTomlContainer(root, segments);
51
+ if (!key)
52
+ continue;
53
+ const list = Array.isArray(parent[key]) ? parent[key] : [], next = {};
54
+ list.push(next);
55
+ parent[key] = list;
56
+ current = next;
57
+ continue;
58
+ }
59
+ if (line.startsWith("[") && line.endsWith("]")) {
60
+ const path = line.slice(1, -1).trim().split(".");
61
+ current = ensureTomlContainer(root, path);
62
+ continue;
63
+ }
64
+ const separator = line.indexOf("=");
65
+ if (separator === -1)
66
+ continue;
67
+ const key = line.slice(0, separator).trim(), value = line.slice(separator + 1).trim();
68
+ current[key] = parseTomlValue(value);
69
+ }
70
+ return root;
71
+ }
72
+ function ensureTomlContainer(root, segments) {
73
+ let current = root;
74
+ for (const segment of segments) {
75
+ const existing = current[segment];
76
+ if (!existing || typeof existing !== "object" || Array.isArray(existing))
77
+ current[segment] = {};
78
+ current = current[segment];
79
+ }
80
+ return current;
81
+ }
82
+ function parseTomlValue(value) {
83
+ if (value.startsWith('"') && value.endsWith('"'))
84
+ return value.slice(1, -1);
85
+ if (value === "true")
86
+ return !0;
87
+ if (value === "false")
88
+ return !1;
89
+ if (/^-?\d+$/.test(value))
90
+ return Number(value);
91
+ if (value.startsWith("[") && value.endsWith("]")) {
92
+ const inner = value.slice(1, -1).trim();
93
+ if (!inner)
94
+ return [];
95
+ return inner.split(",").map((part) => parseTomlValue(part.trim()));
96
+ }
97
+ return value;
98
+ }
@@ -0,0 +1,3 @@
1
+ import type { ProcessDeployRuntime } from "./runtime.js";
2
+ export declare function generateDockerfile(runtime?: ProcessDeployRuntime): string;
3
+ export declare function generateDockerignore(): string;
@@ -1,7 +1,6 @@
1
- // Generate Dockerfile for production deployment
2
-
3
- export function generateDockerfile(): string {
1
+ export function generateDockerfile(runtime = "bun") {
4
2
  return `# Gorsee.js Production Dockerfile
3
+ # Runtime profile: ${runtime}
5
4
  FROM oven/bun:1 AS builder
6
5
  WORKDIR /app
7
6
  COPY package.json bun.lock* ./
@@ -9,24 +8,23 @@ RUN bun install --frozen-lockfile
9
8
  COPY . .
10
9
  RUN bun run build
11
10
 
12
- FROM oven/bun:1-slim
11
+ FROM ${runtime === "node" ? "node:20-bookworm-slim" : "oven/bun:1-slim"}
13
12
  WORKDIR /app
14
13
  COPY --from=builder /app/package.json ./
15
14
  COPY --from=builder /app/node_modules ./node_modules
16
15
  COPY --from=builder /app/dist ./dist
17
- COPY --from=builder /app/routes ./routes
18
16
  COPY --from=builder /app/public ./public
19
17
  COPY --from=builder /app/.env* ./
20
18
 
21
19
  ENV NODE_ENV=production
22
20
  ENV PORT=3000
21
+ ENV APP_ORIGIN=REPLACE_WITH_APP_ORIGIN
23
22
  EXPOSE 3000
24
23
 
25
- CMD ["bun", "run", "start"]
26
- `
24
+ ${runtime === "node" ? 'CMD ["node", "dist/prod-node.js"]' : 'CMD ["bun", "run", "start"]'}
25
+ `;
27
26
  }
28
-
29
- export function generateDockerignore(): string {
27
+ export function generateDockerignore() {
30
28
  return `node_modules
31
29
  .gorsee
32
30
  .git
@@ -34,5 +32,5 @@ export function generateDockerignore(): string {
34
32
  *.sqlite
35
33
  *.db
36
34
  .env.local
37
- `
35
+ `;
38
36
  }
@@ -0,0 +1,3 @@
1
+ import type { ProcessDeployRuntime } from "./runtime.js";
2
+ export declare function generateFlyConfig(appName: string): string;
3
+ export declare function generateFlyDockerfile(runtime?: ProcessDeployRuntime): string;
@@ -1,7 +1,5 @@
1
- // Gorsee.js Fly.io deploy adapter
2
-
3
- export function generateFlyConfig(appName: string): string {
4
- return `# Gorsee.js — Fly.io configuration
1
+ export function generateFlyConfig(appName) {
2
+ return `# Gorsee.js \u2014 Fly.io configuration
5
3
  # Auto-generated by \`gorsee deploy fly\`
6
4
 
7
5
  app = "${appName}"
@@ -13,6 +11,7 @@ primary_region = "iad"
13
11
  [env]
14
12
  NODE_ENV = "production"
15
13
  PORT = "3000"
14
+ APP_ORIGIN = "REPLACE_WITH_APP_ORIGIN"
16
15
 
17
16
  [http_service]
18
17
  internal_port = 3000
@@ -39,12 +38,12 @@ primary_region = "iad"
39
38
  processes = ["app"]
40
39
  count_min = 1
41
40
  count_max = 3
42
- `
41
+ `;
43
42
  }
44
-
45
- export function generateFlyDockerfile(): string {
46
- return `# Gorsee.js — Fly.io optimized Dockerfile
43
+ export function generateFlyDockerfile(runtime = "bun") {
44
+ return `# Gorsee.js \u2014 Fly.io optimized Dockerfile
47
45
  # Auto-generated by \`gorsee deploy fly\`
46
+ # Runtime profile: ${runtime}
48
47
 
49
48
  FROM oven/bun:1 AS builder
50
49
  WORKDIR /app
@@ -53,18 +52,18 @@ RUN bun install --frozen-lockfile
53
52
  COPY . .
54
53
  RUN bun run build
55
54
 
56
- FROM oven/bun:1-slim
55
+ FROM ${runtime === "node" ? "node:20-bookworm-slim" : "oven/bun:1-slim"}
57
56
  WORKDIR /app
58
57
 
59
58
  COPY --from=builder /app/package.json ./
60
59
  COPY --from=builder /app/node_modules ./node_modules
61
60
  COPY --from=builder /app/dist ./dist
62
- COPY --from=builder /app/routes ./routes
63
61
  COPY --from=builder /app/public ./public
64
62
  COPY --from=builder /app/.env* ./
65
63
 
66
64
  ENV NODE_ENV=production
67
65
  ENV PORT=3000
66
+ ENV APP_ORIGIN=REPLACE_WITH_APP_ORIGIN
68
67
 
69
68
  # Fly.io runtime env vars are injected automatically:
70
69
  # FLY_ALLOC_ID, FLY_APP_NAME, FLY_REGION, FLY_MACHINE_ID
@@ -74,6 +73,6 @@ EXPOSE 3000
74
73
  HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \\
75
74
  CMD curl -f http://localhost:3000/api/health || exit 1
76
75
 
77
- CMD ["bun", "run", "start"]
78
- `
76
+ ${runtime === "node" ? 'CMD ["node", "dist/prod-node.js"]' : 'CMD ["bun", "run", "start"]'}
77
+ `;
79
78
  }
@@ -0,0 +1,6 @@
1
+ export { generateDockerfile, generateDockerignore, } from "./dockerfile.js";
2
+ export { generateVercelConfig, generateVercelServerlessEntry, generateVercelBuildOutput, type VercelConfig, type VercelOutputConfig, } from "./vercel.js";
3
+ export { generateFlyConfig, generateFlyDockerfile, } from "./fly.js";
4
+ export { generateWranglerConfig, generateCloudflareEntry, generateCloudflareStaticAssets, type CloudflareRoutesConfig, } from "./cloudflare.js";
5
+ export { generateNetlifyConfig, generateNetlifyFunction, } from "./netlify.js";
6
+ export { validateDeployArtifactConformance, assertDeployArtifactConformance, type DeployArtifactConformanceInput, type DeployArtifactConformanceResult, } from "./conformance.js";
@@ -0,0 +1,26 @@
1
+ export {
2
+ generateDockerfile,
3
+ generateDockerignore
4
+ } from "./dockerfile.js";
5
+ export {
6
+ generateVercelConfig,
7
+ generateVercelServerlessEntry,
8
+ generateVercelBuildOutput
9
+ } from "./vercel.js";
10
+ export {
11
+ generateFlyConfig,
12
+ generateFlyDockerfile
13
+ } from "./fly.js";
14
+ export {
15
+ generateWranglerConfig,
16
+ generateCloudflareEntry,
17
+ generateCloudflareStaticAssets
18
+ } from "./cloudflare.js";
19
+ export {
20
+ generateNetlifyConfig,
21
+ generateNetlifyFunction
22
+ } from "./netlify.js";
23
+ export {
24
+ validateDeployArtifactConformance,
25
+ assertDeployArtifactConformance
26
+ } from "./conformance.js";
@@ -0,0 +1,2 @@
1
+ export declare function generateNetlifyConfig(): string;
2
+ export declare function generateNetlifyFunction(): string;
@@ -1,7 +1,5 @@
1
- // Gorsee.js Netlify deploy adapter
2
-
3
- export function generateNetlifyConfig(): string {
4
- return `# Gorsee.js — Netlify configuration
1
+ export function generateNetlifyConfig() {
2
+ return `# Gorsee.js \u2014 Netlify configuration
5
3
  # Auto-generated by \`gorsee deploy netlify\`
6
4
 
7
5
  [build]
@@ -10,6 +8,7 @@ export function generateNetlifyConfig(): string {
10
8
 
11
9
  [build.environment]
12
10
  NODE_VERSION = "20"
11
+ APP_ORIGIN = "REPLACE_WITH_APP_ORIGIN"
13
12
 
14
13
  [[edge_functions]]
15
14
  function = "gorsee-handler"
@@ -36,11 +35,10 @@ export function generateNetlifyConfig(): string {
36
35
  for = "/_gorsee/*"
37
36
  [headers.values]
38
37
  Cache-Control = "public, max-age=31536000, immutable"
39
- `
38
+ `;
40
39
  }
41
-
42
- export function generateNetlifyFunction(): string {
43
- return `// Gorsee.js — Netlify Edge Function
40
+ export function generateNetlifyFunction() {
41
+ return `// Gorsee.js \u2014 Netlify Edge Function
44
42
  // Auto-generated by \`gorsee deploy netlify\`
45
43
  // Place in: netlify/edge-functions/gorsee-handler.ts
46
44
 
@@ -51,8 +49,9 @@ export default async function handler(
51
49
  context: Context,
52
50
  ): Promise<Response> {
53
51
  const url = new URL(request.url)
52
+ const appOrigin = Netlify.env.get("APP_ORIGIN") ?? url.origin
54
53
 
55
- // Skip static assets handled by Netlify CDN
54
+ // Skip static assets \u2014 handled by Netlify CDN
56
55
  if (url.pathname.startsWith("/_gorsee/")) {
57
56
  return context.next()
58
57
  }
@@ -64,8 +63,15 @@ export default async function handler(
64
63
 
65
64
  // Forward to Gorsee server handler
66
65
  try {
66
+ const rpcPolicy = {
67
+ // Wire auth/CSRF middleware here for privileged server() calls.
68
+ // The server handler should prefer app.config.ts security.rpc.middlewares
69
+ // when no explicit runtime policy is provided.
70
+ middlewares: [],
71
+ }
67
72
  const { handleRequest } = await import("../../dist/server-handler.js")
68
- return await handleRequest(request, { netlifyContext: context })
73
+ void appOrigin
74
+ return await handleRequest(request, { netlifyContext: context }, { rpcPolicy })
69
75
  } catch (err) {
70
76
  console.error("Gorsee handler error:", err)
71
77
  return new Response("Internal Server Error", { status: 500 })
@@ -73,5 +79,5 @@ export default async function handler(
73
79
  }
74
80
 
75
81
  export const config = { path: "/*" }
76
- `
82
+ `;
77
83
  }
@@ -0,0 +1,2 @@
1
+ export type ProcessDeployRuntime = "bun" | "node";
2
+ export declare function isProcessDeployRuntime(value: string | undefined): value is ProcessDeployRuntime;
@@ -0,0 +1,3 @@
1
+ export function isProcessDeployRuntime(value) {
2
+ return value === "bun" || value === "node";
3
+ }
@@ -0,0 +1,22 @@
1
+ export interface VercelConfig {
2
+ version: number;
3
+ framework: null;
4
+ buildCommand: string;
5
+ outputDirectory: string;
6
+ routes: Array<{
7
+ src: string;
8
+ dest?: string;
9
+ headers?: Record<string, string>;
10
+ }>;
11
+ }
12
+ export declare function generateVercelConfig(): VercelConfig;
13
+ export declare function generateVercelServerlessEntry(): string;
14
+ export interface VercelOutputConfig {
15
+ version: number;
16
+ routes: Array<{
17
+ src: string;
18
+ dest?: string;
19
+ headers?: Record<string, string>;
20
+ }>;
21
+ }
22
+ export declare function generateVercelBuildOutput(routes: string[]): VercelOutputConfig;
@@ -0,0 +1,53 @@
1
+ export function generateVercelConfig() {
2
+ return {
3
+ version: 2,
4
+ framework: null,
5
+ buildCommand: "bun run build",
6
+ outputDirectory: ".vercel/output",
7
+ routes: [
8
+ {
9
+ src: "/_gorsee/(.*)",
10
+ headers: { "Cache-Control": "public, max-age=31536000, immutable" }
11
+ },
12
+ { src: "/(.*)", dest: "/api/index" }
13
+ ]
14
+ };
15
+ }
16
+ export function generateVercelServerlessEntry() {
17
+ return `// Gorsee.js \u2014 Vercel serverless entry
18
+ // Auto-generated by \`gorsee deploy vercel\`
19
+
20
+ import { handleRequest } from "../dist/server-handler-node.js"
21
+
22
+ export default async function handler(request: Request): Promise<Response> {
23
+ const url = new URL(request.url)
24
+ // Set APP_ORIGIN in your Vercel project environment before production traffic.
25
+ const appOrigin = process.env.APP_ORIGIN ?? url.origin
26
+ void appOrigin
27
+
28
+ const rpcPolicy = {
29
+ // Wire auth/CSRF middleware here for privileged server() calls.
30
+ middlewares: [],
31
+ }
32
+
33
+ return handleRequest(request, { vercel: true }, { rpcPolicy })
34
+ }
35
+ `;
36
+ }
37
+ export function generateVercelBuildOutput(routes) {
38
+ const outputRoutes = [
39
+ {
40
+ src: "/_gorsee/(.*)",
41
+ dest: "/static/_gorsee/$1",
42
+ headers: { "Cache-Control": "public, max-age=31536000, immutable" }
43
+ },
44
+ {
45
+ src: "/favicon\\.ico|/robots\\.txt|/styles\\.css",
46
+ dest: "/static/$0"
47
+ }
48
+ ];
49
+ for (const route of routes)
50
+ outputRoutes.push({ src: route, dest: "/functions/index" });
51
+ outputRoutes.push({ src: "/(.*)", dest: "/functions/index" });
52
+ return { version: 3, routes: outputRoutes };
53
+ }
@@ -0,0 +1 @@
1
+ export declare function renderErrorOverlay(error: Error | string, nonce: string): string;
@@ -1,25 +1,15 @@
1
- // Dev error overlay -- styled error page with source context
2
-
3
- import { escapeHTML } from "../runtime/html-escape.ts"
4
-
5
- export function renderErrorOverlay(error: Error | string, nonce: string): string {
6
- const message = typeof error === "string" ? error : error.message
7
- const stack = typeof error === "string" ? "" : error.stack ?? ""
8
-
9
- // Parse stack to extract file:line
10
- const stackLines = stack.split("\n").slice(1)
11
- const frames = stackLines.map((line) => {
12
- const match = line.match(/at\s+(.+?)\s+\((.+):(\d+):(\d+)\)/)
13
- if (match) return { fn: match[1], file: match[2], line: match[3], col: match[4] }
14
- const match2 = line.match(/at\s+(.+):(\d+):(\d+)/)
15
- if (match2) return { fn: "(anonymous)", file: match2[1], line: match2[2], col: match2[3] }
16
- return null
17
- }).filter(Boolean)
18
-
19
- const framesHTML = frames.map((f) =>
20
- `<div class="g-frame"><span class="g-fn">${escapeHTML(f!.fn!)}</span> <span class="g-loc">${escapeHTML(f!.file!)}:${f!.line}</span></div>`
21
- ).join("")
22
-
1
+ import { escapeHTML } from "../runtime/html-escape.js";
2
+ export function renderErrorOverlay(error, nonce) {
3
+ const message = typeof error === "string" ? error : error.message, frames = (typeof error === "string" ? "" : error.stack ?? "").split(`
4
+ `).slice(1).map((line) => {
5
+ const match = line.match(/at\s+(.+?)\s+\((.+):(\d+):(\d+)\)/);
6
+ if (match)
7
+ return { fn: match[1], file: match[2], line: match[3], col: match[4] };
8
+ const match2 = line.match(/at\s+(.+):(\d+):(\d+)/);
9
+ if (match2)
10
+ return { fn: "(anonymous)", file: match2[1], line: match2[2], col: match2[3] };
11
+ return null;
12
+ }).filter(Boolean), framesHTML = frames.map((f) => `<div class="g-frame"><span class="g-fn">${escapeHTML(f.fn)}</span> <span class="g-loc">${escapeHTML(f.file)}:${f.line}</span></div>`).join("");
23
13
  return `<!DOCTYPE html>
24
14
  <html>
25
15
  <head><meta charset="UTF-8" /><title>Error - Gorsee Dev</title>
@@ -50,5 +40,5 @@ body{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#1a1a2e;
50
40
  </div>
51
41
  </div>
52
42
  </body>
53
- </html>`
43
+ </html>`;
54
44
  }
@@ -0,0 +1,30 @@
1
+ import type { BuildResult } from "../build/client.js";
2
+ import type { Route } from "../router/index.js";
3
+ export type HMRUpdateKind = "full-reload" | "route-refresh" | "css-update";
4
+ export interface HMRUpdate {
5
+ kind: HMRUpdateKind;
6
+ changedPath: string;
7
+ timestamp: number;
8
+ reason?: string;
9
+ routePaths?: string[];
10
+ entryScripts?: string[];
11
+ refreshCurrentRoute?: boolean;
12
+ }
13
+ export interface HMRUpdateContext {
14
+ changedPath: string;
15
+ routesDir: string;
16
+ sharedDir: string;
17
+ middlewareDir: string;
18
+ routes: Route[];
19
+ clientBuild: BuildResult;
20
+ }
21
+ export declare const HMR_CLIENT_SCRIPT = "<script data-g-hmr>\n(function(){\n function reload() {\n location.reload();\n }\n function handleMessage(raw) {\n if (raw === \"reload\") {\n reload();\n return;\n }\n try {\n var payload = JSON.parse(raw);\n if (!payload || typeof payload !== \"object\") {\n reload();\n return;\n }\n if (typeof window.__gorseeHandleHMR === \"function\") {\n window.__gorseeHandleHMR(payload);\n return;\n }\n } catch {}\n reload();\n }\n var ws = new WebSocket((location.protocol===\"https:\"?\"wss://\":\"ws://\") + location.host + \"/__gorsee_hmr\");\n ws.onmessage = function(e) {\n handleMessage(String(e.data || \"\"));\n };\n ws.onclose = function() {\n setTimeout(function(){ reload(); }, 1000);\n };\n})();\n</script>";
22
+ export declare function addHMRClient(ws: {
23
+ send(data: string): void;
24
+ }): void;
25
+ export declare function removeHMRClient(ws: {
26
+ send(data: string): void;
27
+ }): void;
28
+ export declare function serializeHMRUpdate(update: HMRUpdate): string;
29
+ export declare function notifyHMRUpdate(update: HMRUpdate): void;
30
+ export declare function createHMRUpdate(context: HMRUpdateContext): HMRUpdate;
@@ -0,0 +1,86 @@
1
+ import { relative } from "node:path";
2
+ export const HMR_CLIENT_SCRIPT = `<script data-g-hmr>
3
+ (function(){
4
+ function reload() {
5
+ location.reload();
6
+ }
7
+ function handleMessage(raw) {
8
+ if (raw === "reload") {
9
+ reload();
10
+ return;
11
+ }
12
+ try {
13
+ var payload = JSON.parse(raw);
14
+ if (!payload || typeof payload !== "object") {
15
+ reload();
16
+ return;
17
+ }
18
+ if (typeof window.__gorseeHandleHMR === "function") {
19
+ window.__gorseeHandleHMR(payload);
20
+ return;
21
+ }
22
+ } catch {}
23
+ reload();
24
+ }
25
+ var ws = new WebSocket((location.protocol==="https:"?"wss://":"ws://") + location.host + "/__gorsee_hmr");
26
+ ws.onmessage = function(e) {
27
+ handleMessage(String(e.data || ""));
28
+ };
29
+ ws.onclose = function() {
30
+ setTimeout(function(){ reload(); }, 1000);
31
+ };
32
+ })();
33
+ </script>`;
34
+ const clients = new Set;
35
+ export function addHMRClient(ws) {
36
+ clients.add(ws);
37
+ }
38
+ export function removeHMRClient(ws) {
39
+ clients.delete(ws);
40
+ }
41
+ export function serializeHMRUpdate(update) {
42
+ return JSON.stringify(update);
43
+ }
44
+ export function notifyHMRUpdate(update) {
45
+ const payload = serializeHMRUpdate(update);
46
+ for (const ws of clients)
47
+ try {
48
+ ws.send(payload);
49
+ } catch {}
50
+ }
51
+ export function createHMRUpdate(context) {
52
+ const normalizedChangedPath = context.changedPath.replace(/\\/g, "/"), timestamp = Date.now(), isCSS = normalizedChangedPath.endsWith(".css"), routePaths = context.routes.filter((route) => route.filePath.replace(/\\/g, "/") === normalizedChangedPath || route.layoutPaths.some((layoutPath) => layoutPath.replace(/\\/g, "/") === normalizedChangedPath) || route.middlewarePaths.some((middlewarePath) => middlewarePath.replace(/\\/g, "/") === normalizedChangedPath) || route.errorPath?.replace(/\\/g, "/") === normalizedChangedPath || route.loadingPath?.replace(/\\/g, "/") === normalizedChangedPath).map((route) => route.path), entryScripts = routePaths.map((routePath) => context.clientBuild.entryMap.get(routePath)).filter((entry) => typeof entry === "string").map((entry) => `/_gorsee/${entry}`);
53
+ if (normalizedChangedPath.startsWith(context.routesDir.replace(/\\/g, "/"))) {
54
+ if (routePaths.length === 0 && entryScripts.length === 0)
55
+ return {
56
+ kind: "full-reload",
57
+ changedPath: normalizedChangedPath,
58
+ timestamp,
59
+ reason: "route change could not be mapped to a stable entry",
60
+ refreshCurrentRoute: !0
61
+ };
62
+ return {
63
+ kind: isCSS ? "css-update" : "route-refresh",
64
+ changedPath: normalizedChangedPath,
65
+ timestamp,
66
+ routePaths,
67
+ entryScripts,
68
+ refreshCurrentRoute: !0
69
+ };
70
+ }
71
+ if (normalizedChangedPath.startsWith(context.sharedDir.replace(/\\/g, "/")) || normalizedChangedPath.startsWith(context.middlewareDir.replace(/\\/g, "/")))
72
+ return {
73
+ kind: isCSS ? "css-update" : "route-refresh",
74
+ changedPath: normalizedChangedPath,
75
+ timestamp,
76
+ reason: normalizedChangedPath.startsWith(context.sharedDir.replace(/\\/g, "/")) ? "shared dependency changed" : "middleware changed",
77
+ refreshCurrentRoute: !0
78
+ };
79
+ return {
80
+ kind: "full-reload",
81
+ changedPath: normalizedChangedPath,
82
+ timestamp,
83
+ reason: `unclassified dev update: ${relative(process.cwd(), normalizedChangedPath)}`,
84
+ refreshCurrentRoute: !0
85
+ };
86
+ }
@@ -0,0 +1,9 @@
1
+ import type { MatchResult } from "../router/matcher.js";
2
+ import type { BuildResult } from "../build/client.js";
3
+ interface PartialRenderOptions {
4
+ match: MatchResult;
5
+ request: Request;
6
+ clientBuild: BuildResult;
7
+ }
8
+ export declare function handlePartialNavigation(opts: PartialRenderOptions): Promise<Response>;
9
+ export {};
@@ -0,0 +1,24 @@
1
+ import { createContext } from "../server/middleware.js";
2
+ import {
3
+ createClientScriptPath,
4
+ resolvePageRoute
5
+ } from "../server/page-render.js";
6
+ import { renderRoutePartialResponse } from "../server/route-response.js";
7
+ export async function handlePartialNavigation(opts) {
8
+ const { match, request, clientBuild } = opts, mod = await import(match.route.filePath), ctx = createContext(request, match.params);
9
+ if (typeof mod.GET === "function" || typeof mod.POST === "function")
10
+ return new Response("Not a page route", { status: 400 });
11
+ const resolved = await resolvePageRoute(mod, match, ctx);
12
+ if (!resolved)
13
+ return new Response(JSON.stringify({ error: "Route has no default export" }), {
14
+ status: 500,
15
+ headers: { "Content-Type": "application/json" }
16
+ });
17
+ const clientScript = createClientScriptPath(clientBuild.entryMap.get(match.route.path));
18
+ return renderRoutePartialResponse({
19
+ match,
20
+ ctx,
21
+ resolved,
22
+ clientScript
23
+ });
24
+ }
@@ -0,0 +1,30 @@
1
+ import type { RequestSecurityPolicy } from "../server/request-security-policy.js";
2
+ import type { MatchResult } from "../router/matcher.js";
3
+ import type { BuildResult } from "../build/client.js";
4
+ interface RenderOptions {
5
+ match: MatchResult;
6
+ request: Request;
7
+ nonce: string;
8
+ start: number;
9
+ trace?: {
10
+ requestId?: string;
11
+ traceId?: string;
12
+ spanId?: string;
13
+ parentSpanId?: string;
14
+ };
15
+ trustedOrigin?: string;
16
+ trustForwardedHeaders?: boolean;
17
+ securityPolicy?: RequestSecurityPolicy;
18
+ clientBuild: BuildResult;
19
+ secHeaders: Record<string, string>;
20
+ wrapHTML: (body: string, nonce: string | undefined, opts?: {
21
+ title?: string;
22
+ clientScript?: string;
23
+ loaderData?: unknown;
24
+ params?: Record<string, string>;
25
+ cssFiles?: string[];
26
+ headElements?: string[];
27
+ }) => string;
28
+ }
29
+ export declare function handlePageRequest(opts: RenderOptions): Promise<Response>;
30
+ export {};