gorsee 0.2.4 → 0.2.6

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 +283 -212
  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 +173 -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} +44 -28
  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 +53 -0
  215. package/dist-pkg/plugins/index.d.ts +62 -0
  216. package/dist-pkg/plugins/index.js +159 -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 +60 -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 +70 -0
  243. package/dist-pkg/reactive/optimistic.d.ts +20 -0
  244. package/dist-pkg/reactive/optimistic.js +67 -0
  245. package/dist-pkg/reactive/resource.d.ts +25 -0
  246. package/dist-pkg/reactive/resource.js +153 -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 +42 -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} +20 -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 +65 -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 +74 -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 +176 -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 +487 -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 +77 -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 +83 -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 +127 -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 +27 -0
  347. package/dist-pkg/server/page-render.d.ts +29 -0
  348. package/dist-pkg/server/page-render.js +70 -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 +46 -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 +61 -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 +257 -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 +110 -45
  406. package/bin/gorsee.js +0 -2
  407. package/src/auth/index.ts +0 -178
  408. package/src/auth/redis-session-store.ts +0 -46
  409. package/src/auth/sqlite-session-store.ts +0 -98
  410. package/src/auth/store-utils.ts +0 -21
  411. package/src/build/client.ts +0 -139
  412. package/src/build/css-modules.ts +0 -69
  413. package/src/build/devalue-parse.ts +0 -2
  414. package/src/build/manifest.ts +0 -34
  415. package/src/build/route-metadata.ts +0 -12
  416. package/src/build/rpc-transform.ts +0 -62
  417. package/src/build/server-strip.ts +0 -87
  418. package/src/build/ssg.ts +0 -70
  419. package/src/cli/bun-plugin.ts +0 -58
  420. package/src/cli/cmd-build.ts +0 -153
  421. package/src/cli/cmd-check.ts +0 -239
  422. package/src/cli/cmd-create.ts +0 -328
  423. package/src/cli/cmd-deploy.ts +0 -149
  424. package/src/cli/cmd-dev.ts +0 -13
  425. package/src/cli/cmd-docs.ts +0 -152
  426. package/src/cli/cmd-generate.ts +0 -155
  427. package/src/cli/cmd-migrate.ts +0 -53
  428. package/src/cli/cmd-routes.ts +0 -36
  429. package/src/cli/cmd-start.ts +0 -30
  430. package/src/cli/cmd-test.ts +0 -129
  431. package/src/cli/cmd-typegen.ts +0 -93
  432. package/src/cli/cmd-upgrade.ts +0 -143
  433. package/src/cli/context.ts +0 -12
  434. package/src/cli/framework-md.ts +0 -223
  435. package/src/cli/index.ts +0 -107
  436. package/src/client.ts +0 -26
  437. package/src/db/index.ts +0 -2
  438. package/src/db/migrate.ts +0 -89
  439. package/src/db/sqlite.ts +0 -40
  440. package/src/deploy/index.ts +0 -31
  441. package/src/deploy/vercel.ts +0 -94
  442. package/src/dev/hmr.ts +0 -31
  443. package/src/dev/partial-handler.ts +0 -52
  444. package/src/dev/request-handler.ts +0 -127
  445. package/src/dev/watcher.ts +0 -48
  446. package/src/dev.ts +0 -208
  447. package/src/env/index.ts +0 -74
  448. package/src/errors/formatter.ts +0 -63
  449. package/src/errors/index.ts +0 -2
  450. package/src/i18n/index.ts +0 -72
  451. package/src/index-client.ts +0 -4
  452. package/src/index.ts +0 -43
  453. package/src/jsx-runtime-client.ts +0 -13
  454. package/src/jsx-runtime.ts +0 -20
  455. package/src/jsx-types-html.ts +0 -242
  456. package/src/log/index.ts +0 -44
  457. package/src/plugins/drizzle.ts +0 -84
  458. package/src/plugins/index.ts +0 -86
  459. package/src/plugins/lucia.ts +0 -111
  460. package/src/plugins/prisma.ts +0 -85
  461. package/src/plugins/resend.ts +0 -78
  462. package/src/plugins/s3.ts +0 -102
  463. package/src/plugins/stripe.ts +0 -133
  464. package/src/plugins/tailwind.ts +0 -92
  465. package/src/prod.ts +0 -252
  466. package/src/reactive/computed.ts +0 -7
  467. package/src/reactive/effect.ts +0 -7
  468. package/src/reactive/index.ts +0 -7
  469. package/src/reactive/live.ts +0 -97
  470. package/src/reactive/optimistic.ts +0 -83
  471. package/src/reactive/resource.ts +0 -138
  472. package/src/reactive/signal.ts +0 -20
  473. package/src/reactive/store.ts +0 -36
  474. package/src/router/index.ts +0 -2
  475. package/src/router/matcher.ts +0 -53
  476. package/src/router/scanner.ts +0 -206
  477. package/src/runtime/client.ts +0 -28
  478. package/src/runtime/error-boundary.ts +0 -35
  479. package/src/runtime/form.ts +0 -49
  480. package/src/runtime/head.ts +0 -113
  481. package/src/runtime/html-escape.ts +0 -30
  482. package/src/runtime/hydration.ts +0 -95
  483. package/src/runtime/image.ts +0 -48
  484. package/src/runtime/index.ts +0 -12
  485. package/src/runtime/island-hydrator.ts +0 -84
  486. package/src/runtime/island.ts +0 -88
  487. package/src/runtime/jsx-runtime.ts +0 -167
  488. package/src/runtime/link.ts +0 -45
  489. package/src/runtime/project.ts +0 -73
  490. package/src/runtime/router.ts +0 -224
  491. package/src/runtime/server.ts +0 -102
  492. package/src/runtime/stream.ts +0 -182
  493. package/src/runtime/suspense.ts +0 -37
  494. package/src/runtime/typed-routes.ts +0 -26
  495. package/src/runtime/validated-form.ts +0 -106
  496. package/src/security/cors.ts +0 -80
  497. package/src/security/csrf.ts +0 -85
  498. package/src/security/headers.ts +0 -50
  499. package/src/security/index.ts +0 -4
  500. package/src/security/rate-limit.ts +0 -80
  501. package/src/server/action.ts +0 -48
  502. package/src/server/cache-utils.ts +0 -23
  503. package/src/server/cache.ts +0 -125
  504. package/src/server/compress.ts +0 -60
  505. package/src/server/etag.ts +0 -23
  506. package/src/server/guard.ts +0 -69
  507. package/src/server/html-shell.ts +0 -69
  508. package/src/server/index.ts +0 -57
  509. package/src/server/manifest.ts +0 -36
  510. package/src/server/middleware.ts +0 -159
  511. package/src/server/not-found.ts +0 -35
  512. package/src/server/page-render.ts +0 -123
  513. package/src/server/pipe.ts +0 -46
  514. package/src/server/redis-cache-store.ts +0 -87
  515. package/src/server/redis-client.ts +0 -71
  516. package/src/server/request-preflight.ts +0 -45
  517. package/src/server/route-request.ts +0 -72
  518. package/src/server/rpc-hash.ts +0 -17
  519. package/src/server/rpc-utils.ts +0 -27
  520. package/src/server/rpc.ts +0 -177
  521. package/src/server/sqlite-cache-store.ts +0 -109
  522. package/src/server/sse.ts +0 -96
  523. package/src/server/static-file.ts +0 -63
  524. package/src/server/ws.ts +0 -56
  525. package/src/server-entry.ts +0 -36
  526. package/src/testing/index.ts +0 -74
  527. package/src/types/index.ts +0 -4
  528. package/src/types/safe-html.ts +0 -32
  529. package/src/types/safe-sql.ts +0 -28
  530. package/src/types/safe-url.ts +0 -40
  531. package/src/types/user-input.ts +0 -12
  532. package/src/unsafe/index.ts +0 -18
@@ -1,155 +0,0 @@
1
- // gorsee generate <entity> -- scaffold CRUD routes + migration
2
- // Example: gorsee generate posts -> routes/posts/index.tsx, routes/posts/[id].tsx, etc.
3
-
4
- import { join } from "node:path"
5
- import { mkdir, writeFile } from "node:fs/promises"
6
- import { createMigration } from "../db/migrate.ts"
7
- import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
8
-
9
- function capitalize(s: string): string {
10
- return s.charAt(0).toUpperCase() + s.slice(1)
11
- }
12
-
13
- function singularize(s: string): string {
14
- if (s.endsWith("ies")) return s.slice(0, -3) + "y"
15
- if (s.endsWith("ses") || s.endsWith("xes") || s.endsWith("zes")) return s.slice(0, -2)
16
- if (s.endsWith("s") && !s.endsWith("ss")) return s.slice(0, -1)
17
- return s
18
- }
19
-
20
- function listRoute(entity: string, singular: string): string {
21
- const cap = capitalize(singular)
22
- return `import { Head, Link } from "gorsee/client"
23
- import { SafeSQL } from "gorsee/types"
24
- import type { Context } from "gorsee/server"
25
-
26
- export async function loader(ctx: Context) {
27
- const db = ctx.locals.db
28
- // TODO: Replace with your DB query
29
- return { ${entity}: [] as { id: number; title: string }[] }
30
- }
31
-
32
- export default function ${capitalize(entity)}ListPage(props: { data: { ${entity}: { id: number; title: string }[] } }) {
33
- return (
34
- <div>
35
- <Head><title>${capitalize(entity)}</title></Head>
36
- <h1>${capitalize(entity)}</h1>
37
- <Link href="/${entity}/new">Create New ${cap}</Link>
38
- <ul>
39
- {props.data.${entity}.map((item) => (
40
- <li>
41
- <Link href={\`/${entity}/\${item.id}\`}>{item.title}</Link>
42
- </li>
43
- ))}
44
- </ul>
45
- </div>
46
- )
47
- }
48
- `
49
- }
50
-
51
- function detailRoute(entity: string, singular: string): string {
52
- const cap = capitalize(singular)
53
- return `import { Head, Link } from "gorsee/client"
54
- import type { Context } from "gorsee/server"
55
-
56
- export async function loader(ctx: Context) {
57
- const id = ctx.params.id
58
- // TODO: Replace with your DB query
59
- return { ${singular}: { id: Number(id), title: "${cap} " + id } }
60
- }
61
-
62
- export default function ${cap}DetailPage(props: { data: { ${singular}: { id: number; title: string } }; params: { id: string } }) {
63
- const item = props.data.${singular}
64
- return (
65
- <div>
66
- <Head><title>{item.title}</title></Head>
67
- <h1>{item.title}</h1>
68
- <Link href="/${entity}">Back to ${capitalize(entity)}</Link>
69
- </div>
70
- )
71
- }
72
- `
73
- }
74
-
75
- function newRoute(entity: string, singular: string): string {
76
- const cap = capitalize(singular)
77
- return `import { Head, Link } from "gorsee/client"
78
- import { defineAction, parseFormData } from "gorsee/server"
79
-
80
- export const action = defineAction(async (ctx) => {
81
- const data = await parseFormData(ctx.request)
82
- // TODO: Insert into database
83
- return ctx.redirect("/${entity}")
84
- })
85
-
86
- export default function New${cap}Page() {
87
- return (
88
- <div>
89
- <Head><title>New ${cap}</title></Head>
90
- <h1>New ${cap}</h1>
91
- <form method="POST">
92
- <label>Title: <input name="title" required /></label>
93
- <button type="submit">Create</button>
94
- </form>
95
- <Link href="/${entity}">Cancel</Link>
96
- </div>
97
- )
98
- }
99
- `
100
- }
101
-
102
- function migrationSQL(entity: string): string {
103
- return `-- Create ${entity} table
104
- CREATE TABLE IF NOT EXISTS ${entity} (
105
- id INTEGER PRIMARY KEY AUTOINCREMENT,
106
- title TEXT NOT NULL,
107
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
108
- updated_at TEXT NOT NULL DEFAULT (datetime('now'))
109
- );
110
- `
111
- }
112
-
113
- export interface GenerateCommandOptions extends RuntimeOptions {}
114
-
115
- export async function generateCrudScaffold(args: string[], options: GenerateCommandOptions = {}) {
116
- const entity = args[0]
117
- if (!entity) {
118
- console.error("Usage: gorsee generate <entity-name>")
119
- console.error("Example: gorsee generate posts")
120
- process.exit(1)
121
- }
122
-
123
- const { cwd, paths } = createProjectContext(options)
124
- const singular = singularize(entity)
125
- const routeDir = join(paths.routesDir, entity)
126
-
127
- console.log(`\n Generating CRUD for: ${entity}\n`)
128
-
129
- await mkdir(routeDir, { recursive: true })
130
-
131
- await writeFile(join(routeDir, "index.tsx"), listRoute(entity, singular))
132
- await writeFile(join(routeDir, "[id].tsx"), detailRoute(entity, singular))
133
- await writeFile(join(routeDir, "new.tsx"), newRoute(entity, singular))
134
-
135
- // Create migration
136
- const migrationDir = paths.migrationsDir
137
- await mkdir(migrationDir, { recursive: true })
138
- const migrationFile = await createMigration(migrationDir, `create_${entity}`)
139
- const migrationPath = join(migrationDir, migrationFile)
140
- await writeFile(migrationPath, migrationSQL(entity))
141
-
142
- console.log(" Created:")
143
- console.log(` routes/${entity}/index.tsx -- list page`)
144
- console.log(` routes/${entity}/[id].tsx -- detail page`)
145
- console.log(` routes/${entity}/new.tsx -- create form`)
146
- console.log(` migrations/${migrationFile}`)
147
- console.log()
148
- console.log(" Next: run `gorsee migrate` to apply the migration")
149
- console.log()
150
- }
151
-
152
- /** @deprecated Use generateCrudScaffold() for programmatic access. */
153
- export async function runGenerate(args: string[], options: GenerateCommandOptions = {}) {
154
- return generateCrudScaffold(args, options)
155
- }
@@ -1,53 +0,0 @@
1
- // gorsee migrate -- run database migrations
2
- // gorsee migrate create <name> -- create new migration file
3
-
4
- import { runMigrations, createMigration } from "../db/migrate.ts"
5
- import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
6
-
7
- export interface MigrateCommandOptions extends RuntimeOptions {
8
- dbPath?: string
9
- }
10
-
11
- export async function runProjectMigrations(args: string[], options: MigrateCommandOptions = {}) {
12
- const { env, paths } = createProjectContext(options)
13
- const subcommand = args[0]
14
-
15
- if (subcommand === "create") {
16
- const name = args[1]
17
- if (!name) {
18
- console.error("Usage: gorsee migrate create <migration-name>")
19
- process.exit(1)
20
- }
21
- const filename = await createMigration(paths.migrationsDir, name)
22
- console.log(`\n Created: migrations/${filename}\n`)
23
- return
24
- }
25
-
26
- // Default: run pending migrations
27
- const dbPath = options.dbPath ?? env.DATABASE_URL ?? paths.dataFile
28
- console.log("\n Running migrations...\n")
29
-
30
- const result = await runMigrations(dbPath, paths.migrationsDir)
31
-
32
- if (result.applied.length > 0) {
33
- console.log(" Applied:")
34
- for (const m of result.applied) console.log(` + ${m}`)
35
- }
36
-
37
- if (result.skipped.length > 0) {
38
- console.log(` Skipped: ${result.skipped.length} (already applied)`)
39
- }
40
-
41
- if (result.errors.length > 0) {
42
- console.log("\n Errors:")
43
- for (const e of result.errors) console.error(` ! ${e}`)
44
- process.exit(1)
45
- }
46
-
47
- console.log(`\n Done: ${result.applied.length} migration(s) applied\n`)
48
- }
49
-
50
- /** @deprecated Use runProjectMigrations() for programmatic access. */
51
- export async function runMigrate(args: string[], options: MigrateCommandOptions = {}) {
52
- return runProjectMigrations(args, options)
53
- }
@@ -1,36 +0,0 @@
1
- // gorsee routes -- list all routes
2
-
3
- import { createRouter } from "../router/scanner.ts"
4
- import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
5
-
6
- export interface RoutesCommandOptions extends RuntimeOptions {}
7
-
8
- export async function listRoutes(options: RoutesCommandOptions = {}) {
9
- const { cwd, paths } = createProjectContext(options)
10
- const routes = await createRouter(paths.routesDir)
11
-
12
- if (routes.length === 0) {
13
- console.log("\n No routes found in routes/\n")
14
- return
15
- }
16
-
17
- console.log("\n Routes:\n")
18
- console.log(" " + "Path".padEnd(25) + "File".padEnd(40) + "Params")
19
- console.log(" " + "-".repeat(70))
20
-
21
- for (const route of routes) {
22
- const params = route.params.length > 0 ? route.params.join(", ") : "-"
23
- console.log(
24
- " " +
25
- route.path.padEnd(25) +
26
- route.filePath.replace(cwd + "/", "").padEnd(40) +
27
- params
28
- )
29
- }
30
- console.log()
31
- }
32
-
33
- /** @deprecated Use listRoutes() for programmatic access. */
34
- export async function runRoutes(_args: string[], options: RoutesCommandOptions = {}) {
35
- return listRoutes(options)
36
- }
@@ -1,30 +0,0 @@
1
- // gorsee start -- starts production server from dist/
2
-
3
- import { join } from "node:path"
4
- import { stat } from "node:fs/promises"
5
- import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
6
-
7
- export interface StartCommandOptions extends RuntimeOptions {
8
- port?: number
9
- }
10
-
11
- export async function startBuiltProject(options: StartCommandOptions = {}) {
12
- const { paths } = createProjectContext(options)
13
-
14
- // Verify build exists
15
- try {
16
- await stat(join(paths.distDir, "manifest.json"))
17
- } catch {
18
- console.error("\n Error: No production build found.")
19
- console.error(" Run `gorsee build` first.\n")
20
- process.exit(1)
21
- }
22
-
23
- const { startProductionServer } = await import("../prod.ts")
24
- await startProductionServer({ cwd: paths.cwd, port: options.port })
25
- }
26
-
27
- /** @deprecated Use startBuiltProject() for programmatic access. */
28
- export async function runStart(_args: string[], options: StartCommandOptions = {}) {
29
- return startBuiltProject(options)
30
- }
@@ -1,129 +0,0 @@
1
- // gorsee test -- smart test runner wrapping bun test
2
-
3
- import { readdir, stat } from "node:fs/promises"
4
- import { join } from "node:path"
5
- import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
6
-
7
- interface TestFlags {
8
- watch: boolean
9
- coverage: boolean
10
- filter: string | null
11
- e2e: boolean
12
- unit: boolean
13
- integration: boolean
14
- }
15
-
16
- function parseFlags(args: string[]): TestFlags {
17
- const flags: TestFlags = {
18
- watch: false,
19
- coverage: false,
20
- filter: null,
21
- e2e: false,
22
- unit: false,
23
- integration: false,
24
- }
25
-
26
- for (let i = 0; i < args.length; i++) {
27
- const arg = args[i]!
28
- if (arg === "--watch") flags.watch = true
29
- else if (arg === "--coverage") flags.coverage = true
30
- else if (arg === "--filter" && args[i + 1]) flags.filter = args[++i]!
31
- else if (arg === "--e2e") flags.e2e = true
32
- else if (arg === "--unit") flags.unit = true
33
- else if (arg === "--integration") flags.integration = true
34
- }
35
-
36
- return flags
37
- }
38
-
39
- async function findTestFiles(dir: string, pattern: RegExp): Promise<string[]> {
40
- const results: string[] = []
41
- let entries: string[]
42
- try {
43
- entries = await readdir(dir)
44
- } catch {
45
- return results
46
- }
47
-
48
- for (const entry of entries) {
49
- if (entry === "node_modules" || entry === "dist") continue
50
- const fullPath = join(dir, entry)
51
- const s = await stat(fullPath)
52
- if (s.isDirectory()) {
53
- results.push(...(await findTestFiles(fullPath, pattern)))
54
- } else if (pattern.test(fullPath)) {
55
- results.push(fullPath)
56
- }
57
- }
58
- return results
59
- }
60
-
61
- function getTestPattern(flags: TestFlags): RegExp {
62
- if (flags.e2e) return /(?:\.e2e\.test\.ts$|e2e\/.*\.test\.ts$)/
63
- if (flags.integration) return /(?:\.integration\.test\.ts$|tests\/integration\/.*\.test\.ts$)/
64
- if (flags.unit) return /(?:\.unit\.test\.ts$|tests\/unit\/.*\.test\.ts$)/
65
- return /\.test\.ts$/
66
- }
67
-
68
- /** Build bun test args from parsed flags */
69
- export function buildTestArgs(flags: TestFlags, files: string[]): string[] {
70
- const bunArgs = ["test"]
71
-
72
- if (flags.watch) bunArgs.push("--watch")
73
- if (flags.coverage) bunArgs.push("--coverage")
74
- if (flags.filter) {
75
- bunArgs.push("--bail", "--filter", flags.filter)
76
- }
77
-
78
- bunArgs.push(...files)
79
- return bunArgs
80
- }
81
-
82
- export interface TestCommandOptions extends RuntimeOptions {}
83
-
84
- export async function runTests(args: string[], options: TestCommandOptions = {}) {
85
- const { cwd, env } = createProjectContext(options)
86
- const flags = parseFlags(args)
87
- const pattern = getTestPattern(flags)
88
-
89
- const files = await findTestFiles(cwd, pattern)
90
-
91
- if (files.length === 0) {
92
- const kind = flags.e2e ? "e2e" : flags.integration ? "integration" : flags.unit ? "unit" : "any"
93
- console.log(`\n No ${kind} test files found.\n`)
94
- return
95
- }
96
-
97
- console.log(`\n Running ${files.length} test file(s)...\n`)
98
-
99
- const bunArgs = buildTestArgs(flags, files)
100
-
101
- const proc = Bun.spawn(["bun", ...bunArgs], {
102
- cwd,
103
- stdout: "inherit",
104
- stderr: "inherit",
105
- env: {
106
- ...env,
107
- NODE_ENV: "test",
108
- GORSEE_TEST: "1",
109
- },
110
- })
111
-
112
- const exitCode = await proc.exited
113
-
114
- console.log()
115
- if (exitCode === 0) {
116
- console.log(` Tests passed (${files.length} file(s))`)
117
- } else {
118
- console.log(` Tests failed (exit code ${exitCode})`)
119
- process.exit(exitCode)
120
- }
121
- }
122
-
123
- /** @deprecated Use runTests() for programmatic access. */
124
- export async function runTest(args: string[], options: TestCommandOptions = {}) {
125
- return runTests(args, options)
126
- }
127
-
128
- // Re-export for testing
129
- export { parseFlags, findTestFiles, getTestPattern }
@@ -1,93 +0,0 @@
1
- // CLI command: gorsee typegen
2
- // Generates TypeScript route types from file-based routes
3
-
4
- import { join } from "node:path"
5
- import { mkdir, writeFile } from "node:fs/promises"
6
- import { createRouter, type Route } from "../router/index.ts"
7
- import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
8
-
9
- const OUTPUT_DIR = ".gorsee"
10
- const TYPES_FILE = "routes.d.ts"
11
-
12
- function extractParams(route: Route): Record<string, "string"> {
13
- const params: Record<string, "string"> = {}
14
- for (const p of route.params) {
15
- params[p] = "string"
16
- }
17
- return params
18
- }
19
-
20
- function formatParamsType(params: Record<string, "string">): string {
21
- const entries = Object.entries(params)
22
- if (entries.length === 0) return "{}"
23
- const fields = entries.map(([key, type]) => `${key}: ${type}`)
24
- return `{ ${fields.join("; ")} }`
25
- }
26
-
27
- function generateDeclaration(routes: Route[]): string {
28
- const lines: string[] = [
29
- "// Auto-generated by gorsee typegen",
30
- "// Do not edit manually — re-run `gorsee typegen` after adding routes",
31
- "",
32
- 'declare module "gorsee/routes" {',
33
- " interface RouteParams {",
34
- ]
35
-
36
- for (const route of routes) {
37
- const params = extractParams(route)
38
- const paramsType = formatParamsType(params)
39
- lines.push(` "${route.path}": ${paramsType}`)
40
- }
41
-
42
- lines.push(" }")
43
- lines.push("")
44
- lines.push(" type RoutePath = keyof RouteParams")
45
- lines.push("")
46
- lines.push(
47
- " function typedLink<P extends RoutePath>(path: P, params: RouteParams[P]): string",
48
- )
49
- lines.push(
50
- " function typedNavigate<P extends RoutePath>(path: P, params: RouteParams[P]): Promise<void>",
51
- )
52
- lines.push("}")
53
- lines.push("")
54
-
55
- return lines.join("\n")
56
- }
57
-
58
- export interface TypegenCommandOptions extends RuntimeOptions {
59
- routesDir?: string
60
- }
61
-
62
- export async function generateRouteTypes(args: string[], options: TypegenCommandOptions = {}): Promise<void> {
63
- const { cwd, paths } = createProjectContext(options)
64
- const routesDir = options.routesDir ?? args[0] ?? paths.routesDir
65
-
66
- console.log(`Scanning routes in: ${routesDir}`)
67
-
68
- const routes = await createRouter(routesDir)
69
-
70
- if (routes.length === 0) {
71
- console.warn("No routes found. Make sure your routes/ directory exists.")
72
- return
73
- }
74
-
75
- const outputDir = join(cwd, OUTPUT_DIR)
76
- await mkdir(outputDir, { recursive: true })
77
-
78
- const declaration = generateDeclaration(routes)
79
- const typesPath = join(outputDir, TYPES_FILE)
80
- await writeFile(typesPath, declaration, "utf-8")
81
-
82
- console.log(`Generated ${typesPath}`)
83
- console.log(` ${routes.length} route(s):`)
84
- for (const route of routes) {
85
- const params = route.params.length > 0 ? ` [${route.params.join(", ")}]` : ""
86
- console.log(` ${route.path}${params}`)
87
- }
88
- }
89
-
90
- /** @deprecated Use generateRouteTypes() for programmatic access. */
91
- export async function runTypegen(args: string[], options: TypegenCommandOptions = {}): Promise<void> {
92
- return generateRouteTypes(args, options)
93
- }
@@ -1,143 +0,0 @@
1
- // gorsee upgrade -- upgrade framework version with migration guidance
2
-
3
- import { readFile } from "node:fs/promises"
4
- import { join } from "node:path"
5
- import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
6
-
7
- interface UpgradeFlags {
8
- check: boolean
9
- force: boolean
10
- }
11
-
12
- export function parseUpgradeFlags(args: string[]): UpgradeFlags {
13
- const flags: UpgradeFlags = { check: false, force: false }
14
- for (const arg of args) {
15
- if (arg === "--check") flags.check = true
16
- else if (arg === "--force") flags.force = true
17
- }
18
- return flags
19
- }
20
-
21
- /** Compare semver strings: -1 (a < b), 0 (equal), 1 (a > b) */
22
- export function compareVersions(a: string, b: string): number {
23
- const pa = a.replace(/^v/, "").split(".").map(Number)
24
- const pb = b.replace(/^v/, "").split(".").map(Number)
25
- for (let i = 0; i < 3; i++) {
26
- const va = pa[i] ?? 0
27
- const vb = pb[i] ?? 0
28
- if (va < vb) return -1
29
- if (va > vb) return 1
30
- }
31
- return 0
32
- }
33
-
34
- async function getCurrentVersion(cwd: string): Promise<string | null> {
35
- try {
36
- const pkg = await readFile(join(cwd, "node_modules/gorsee/package.json"), "utf-8")
37
- return JSON.parse(pkg).version ?? null
38
- } catch {
39
- return null
40
- }
41
- }
42
-
43
- export const NPM_REGISTRY_URL = "https://registry.npmjs.org/gorsee/latest"
44
-
45
- async function fetchLatestVersion(): Promise<string | null> {
46
- try {
47
- const res = await fetch(NPM_REGISTRY_URL)
48
- if (!res.ok) return null
49
- const data = (await res.json()) as { version?: string }
50
- return data.version ?? null
51
- } catch {
52
- return null
53
- }
54
- }
55
-
56
- async function checkMigrationHints(cwd: string): Promise<string[]> {
57
- const hints: string[] = []
58
-
59
- // Check tsconfig.json jsx setting
60
- try {
61
- const tsconfig = await readFile(join(cwd, "tsconfig.json"), "utf-8")
62
- const parsed = JSON.parse(tsconfig)
63
- if (parsed.compilerOptions?.jsx !== "react-jsx") {
64
- hints.push("tsconfig.json: set compilerOptions.jsx to \"react-jsx\"")
65
- }
66
- } catch { /* no tsconfig */ }
67
-
68
- // Check for deprecated app.config.ts keys
69
- try {
70
- const config = await readFile(join(cwd, "app.config.ts"), "utf-8")
71
- if (config.includes("ssr:")) {
72
- hints.push("app.config.ts: 'ssr' key is deprecated, use 'rendering' instead")
73
- }
74
- } catch { /* no config */ }
75
-
76
- return hints
77
- }
78
-
79
- export interface UpgradeCommandOptions extends RuntimeOptions {}
80
-
81
- export async function upgradeFramework(args: string[], options: UpgradeCommandOptions = {}) {
82
- const { cwd } = createProjectContext(options)
83
- const flags = parseUpgradeFlags(args)
84
-
85
- const current = await getCurrentVersion(cwd)
86
- if (!current) {
87
- console.log("\n Gorsee.js not found in node_modules. Run: bun add gorsee\n")
88
- return
89
- }
90
-
91
- console.log(`\n Current version: v${current}`)
92
-
93
- const latest = await fetchLatestVersion()
94
- if (!latest) {
95
- console.log(" Could not fetch latest version from npm registry.\n")
96
- return
97
- }
98
-
99
- if (compareVersions(current, latest) >= 0) {
100
- console.log(` Already up to date (v${current})\n`)
101
- return
102
- }
103
-
104
- console.log(` Latest version: v${latest}`)
105
- console.log(` Upgrade: v${current} -> v${latest}`)
106
-
107
- if (flags.check) {
108
- console.log()
109
- return
110
- }
111
-
112
- if (!flags.force) {
113
- console.log("\n Run with --force to install, or confirm interactively.")
114
- }
115
-
116
- console.log("\n Installing gorsee@latest...")
117
- const proc = Bun.spawn(["bun", "add", "gorsee@latest"], {
118
- cwd,
119
- stdout: "inherit",
120
- stderr: "inherit",
121
- })
122
- const exitCode = await proc.exited
123
-
124
- if (exitCode !== 0) {
125
- console.log(`\n Install failed (exit code ${exitCode})\n`)
126
- process.exit(exitCode)
127
- }
128
-
129
- const hints = await checkMigrationHints(cwd)
130
- if (hints.length > 0) {
131
- console.log("\n Migration hints:")
132
- for (const hint of hints) {
133
- console.log(` - ${hint}`)
134
- }
135
- }
136
-
137
- console.log(`\n Upgraded successfully to v${latest}\n`)
138
- }
139
-
140
- /** @deprecated Use upgradeFramework() for programmatic access. */
141
- export async function runUpgrade(args: string[], options: UpgradeCommandOptions = {}) {
142
- return upgradeFramework(args, options)
143
- }
@@ -1,12 +0,0 @@
1
- /** @deprecated Import shared project context from "../runtime/project" in new code. */
2
- export {
3
- createProjectContext as createCommandContext,
4
- resolveProjectPaths,
5
- } from "../runtime/project.ts"
6
-
7
- /** @deprecated Import shared runtime types from "../runtime/project" in new code. */
8
- export type {
9
- RuntimeOptions as CommandRuntimeOptions,
10
- ProjectContext as CommandContext,
11
- ProjectPaths,
12
- } from "../runtime/project.ts"