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
@@ -0,0 +1,287 @@
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import { extname, join, relative } from "node:path";
3
+ export function parseFrontmatter(source) {
4
+ if (!source.startsWith(`---
5
+ `))
6
+ return { frontmatter: {}, body: source };
7
+ const end = source.indexOf(`
8
+ ---
9
+ `, 4);
10
+ if (end === -1)
11
+ return { frontmatter: {}, body: source };
12
+ const rawFrontmatter = source.slice(4, end), body = source.slice(end + 5), lines = rawFrontmatter.split(`
13
+ `), { value } = parseObjectBlock(lines, 0, 0);
14
+ return { frontmatter: value, body };
15
+ }
16
+ export function extractExcerpt(body, maxLength = 180) {
17
+ const clean = body.replace(/^#+\s+/gm, "").replace(/\[(.*?)\]\((.*?)\)/g, "$1").replace(/[*_`>#-]/g, "").replace(/\s+/g, " ").trim();
18
+ if (clean.length <= maxLength)
19
+ return clean;
20
+ return `${clean.slice(0, maxLength).trimEnd()}...`;
21
+ }
22
+ function inferSlug(filePath) {
23
+ return filePath.replace(/\.[^.]+$/, "").replace(/\.([a-z]{2}(?:-[A-Z]{2})?)$/, "").replace(/\/index$/, "").replace(/\\/g, "/");
24
+ }
25
+ function inferLocale(frontmatter, slug, defaultLocale) {
26
+ if (typeof frontmatter.locale === "string")
27
+ return frontmatter.locale;
28
+ const firstSegment = slug.split("/")[0] ?? "";
29
+ if (/^[a-z]{2}(-[A-Z]{2})?$/.test(firstSegment))
30
+ return firstSegment;
31
+ return defaultLocale ? defaultLocale : null;
32
+ }
33
+ async function collectFiles(root, dir = root) {
34
+ const entries = await readdir(dir, { withFileTypes: !0 }).catch(() => []), files = [];
35
+ for (const entry of entries) {
36
+ const fullPath = join(dir, entry.name);
37
+ if (entry.isDirectory()) {
38
+ files.push(...await collectFiles(root, fullPath));
39
+ continue;
40
+ }
41
+ files.push(fullPath);
42
+ }
43
+ return files;
44
+ }
45
+ export async function loadContentCollection(options) {
46
+ const includeExtensions = options.includeExtensions ?? [".md", ".mdx"], defaultLocale = options.defaultLocale ?? "en", files = (await collectFiles(options.dir)).filter((file) => includeExtensions.includes(extname(file))), entries = [];
47
+ for (const file of files) {
48
+ const source = await readFile(file, "utf-8"), parsed = parseFrontmatter(source), id = relative(options.dir, file).replace(/\\/g, "/"), slug = inferSlug(id), locale = inferLocale(parsed.frontmatter, slug, defaultLocale), baseEntry = {
49
+ id,
50
+ slug,
51
+ locale,
52
+ body: parsed.body,
53
+ excerpt: extractExcerpt(parsed.body),
54
+ sourcePath: file
55
+ }, frontmatter = options.validate ? options.validate(parsed.frontmatter, baseEntry) : parsed.frontmatter;
56
+ entries.push({ ...baseEntry, frontmatter });
57
+ }
58
+ return entries;
59
+ }
60
+ export function queryContent(entries, options = {}) {
61
+ const sorted = [...options.locale ? entries.filter((entry) => entry.locale === options.locale) : [...entries]];
62
+ switch (options.sortBy) {
63
+ case "date-asc":
64
+ sorted.sort((a, b) => String(a.frontmatter.date ?? "").localeCompare(String(b.frontmatter.date ?? "")));
65
+ break;
66
+ case "date-desc":
67
+ sorted.sort((a, b) => String(b.frontmatter.date ?? "").localeCompare(String(a.frontmatter.date ?? "")));
68
+ break;
69
+ case "title-asc":
70
+ sorted.sort((a, b) => String(a.frontmatter.title ?? "").localeCompare(String(b.frontmatter.title ?? "")));
71
+ break;
72
+ case "title-desc":
73
+ sorted.sort((a, b) => String(b.frontmatter.title ?? "").localeCompare(String(a.frontmatter.title ?? "")));
74
+ break;
75
+ }
76
+ return sorted;
77
+ }
78
+ export function getContentEntryBySlug(entries, slug, locale) {
79
+ return entries.find((entry) => entry.slug === slug && (locale ? entry.locale === locale : !0)) ?? null;
80
+ }
81
+ function parseObjectBlock(lines, startIndex, indent) {
82
+ const result = {};
83
+ let index = startIndex;
84
+ while (index < lines.length) {
85
+ const line = lines[index] ?? "";
86
+ if (!line.trim() || line.trimStart().startsWith("#")) {
87
+ index += 1;
88
+ continue;
89
+ }
90
+ const lineIndent = countIndent(line);
91
+ if (lineIndent < indent)
92
+ break;
93
+ if (lineIndent > indent) {
94
+ index += 1;
95
+ continue;
96
+ }
97
+ const content = line.slice(indent);
98
+ if (content.startsWith("- "))
99
+ break;
100
+ const separator = content.indexOf(":");
101
+ if (separator === -1) {
102
+ index += 1;
103
+ continue;
104
+ }
105
+ const key = content.slice(0, separator).trim(), rawValue = content.slice(separator + 1).trim();
106
+ if (!key) {
107
+ index += 1;
108
+ continue;
109
+ }
110
+ if (rawValue === "|" || rawValue === ">") {
111
+ const block = parseBlockScalar(lines, index + 1, indent, rawValue);
112
+ result[key] = block.value;
113
+ index = block.nextIndex;
114
+ continue;
115
+ }
116
+ if (rawValue) {
117
+ result[key] = parseScalar(rawValue);
118
+ index += 1;
119
+ continue;
120
+ }
121
+ const next = findNextMeaningfulLine(lines, index + 1);
122
+ if (!next || next.indent <= indent) {
123
+ result[key] = null;
124
+ index += 1;
125
+ continue;
126
+ }
127
+ if (next.content.startsWith("- ")) {
128
+ const sequence = parseArrayBlock(lines, next.index, next.indent);
129
+ result[key] = sequence.value;
130
+ index = sequence.nextIndex;
131
+ continue;
132
+ }
133
+ const object = parseObjectBlock(lines, next.index, next.indent);
134
+ result[key] = object.value;
135
+ index = object.nextIndex;
136
+ }
137
+ return { value: result, nextIndex: index };
138
+ }
139
+ function parseArrayBlock(lines, startIndex, indent) {
140
+ const result = [];
141
+ let index = startIndex;
142
+ while (index < lines.length) {
143
+ const line = lines[index] ?? "";
144
+ if (!line.trim() || line.trimStart().startsWith("#")) {
145
+ index += 1;
146
+ continue;
147
+ }
148
+ const lineIndent = countIndent(line);
149
+ if (lineIndent < indent)
150
+ break;
151
+ if (lineIndent !== indent) {
152
+ index += 1;
153
+ continue;
154
+ }
155
+ const content = line.slice(indent);
156
+ if (!content.startsWith("- "))
157
+ break;
158
+ const itemContent = content.slice(2).trim();
159
+ if (!itemContent) {
160
+ const next = findNextMeaningfulLine(lines, index + 1);
161
+ if (!next || next.indent <= indent) {
162
+ result.push(null);
163
+ index += 1;
164
+ continue;
165
+ }
166
+ if (next.content.startsWith("- ")) {
167
+ const nestedArray = parseArrayBlock(lines, next.index, next.indent);
168
+ result.push(nestedArray.value);
169
+ index = nestedArray.nextIndex;
170
+ continue;
171
+ }
172
+ const nestedObject = parseObjectBlock(lines, next.index, next.indent);
173
+ result.push(nestedObject.value);
174
+ index = nestedObject.nextIndex;
175
+ continue;
176
+ }
177
+ if (itemContent === "|" || itemContent === ">") {
178
+ const block = parseBlockScalar(lines, index + 1, indent, itemContent);
179
+ result.push(block.value);
180
+ index = block.nextIndex;
181
+ continue;
182
+ }
183
+ if (looksLikeInlineMapping(itemContent)) {
184
+ const separator = itemContent.indexOf(":"), key = itemContent.slice(0, separator).trim(), rawValue = itemContent.slice(separator + 1).trim(), item = {
185
+ [key]: rawValue ? parseScalar(rawValue) : null
186
+ }, next = findNextMeaningfulLine(lines, index + 1);
187
+ if (next && next.indent > indent && !next.content.startsWith("- ")) {
188
+ const nested = parseObjectBlock(lines, next.index, next.indent);
189
+ Object.assign(item, nested.value);
190
+ result.push(item);
191
+ index = nested.nextIndex;
192
+ continue;
193
+ }
194
+ result.push(item);
195
+ index += 1;
196
+ continue;
197
+ }
198
+ result.push(parseScalar(itemContent));
199
+ index += 1;
200
+ }
201
+ return { value: result, nextIndex: index };
202
+ }
203
+ function parseBlockScalar(lines, startIndex, parentIndent, mode) {
204
+ const first = findNextMeaningfulLine(lines, startIndex);
205
+ if (!first || first.indent <= parentIndent)
206
+ return { value: "", nextIndex: startIndex };
207
+ const blockIndent = first.indent, values = [];
208
+ let index = startIndex;
209
+ while (index < lines.length) {
210
+ const line = lines[index] ?? "";
211
+ if (!line.trim()) {
212
+ values.push("");
213
+ index += 1;
214
+ continue;
215
+ }
216
+ if (countIndent(line) < blockIndent)
217
+ break;
218
+ values.push(line.slice(blockIndent));
219
+ index += 1;
220
+ }
221
+ return {
222
+ value: mode === "|" ? values.join(`
223
+ `).trimEnd() : foldBlockScalar(values),
224
+ nextIndex: index
225
+ };
226
+ }
227
+ function foldBlockScalar(lines) {
228
+ const paragraphs = [];
229
+ let current = "";
230
+ for (const line of lines) {
231
+ if (!line.trim()) {
232
+ if (current) {
233
+ paragraphs.push(current.trim());
234
+ current = "";
235
+ }
236
+ continue;
237
+ }
238
+ current = current ? `${current} ${line.trim()}` : line.trim();
239
+ }
240
+ if (current)
241
+ paragraphs.push(current.trim());
242
+ return paragraphs.join(`
243
+
244
+ `);
245
+ }
246
+ function parseScalar(rawValue) {
247
+ const value = rawValue.trim();
248
+ if (!value)
249
+ return "";
250
+ if (value.startsWith('"') && value.endsWith('"') || value.startsWith("'") && value.endsWith("'"))
251
+ return value.slice(1, -1);
252
+ if (value === "true")
253
+ return !0;
254
+ if (value === "false")
255
+ return !1;
256
+ if (value === "null")
257
+ return null;
258
+ if (/^-?\d+(\.\d+)?$/.test(value))
259
+ return Number(value);
260
+ if (value.startsWith("[") && value.endsWith("]")) {
261
+ const inner = value.slice(1, -1).trim();
262
+ if (!inner)
263
+ return [];
264
+ return inner.split(",").map((item) => parseScalar(item)).filter((item) => item !== "");
265
+ }
266
+ return value;
267
+ }
268
+ function countIndent(line) {
269
+ return line.length - line.trimStart().length;
270
+ }
271
+ function findNextMeaningfulLine(lines, startIndex) {
272
+ for (let index = startIndex;index < lines.length; index += 1) {
273
+ const line = lines[index] ?? "";
274
+ if (!line.trim() || line.trimStart().startsWith("#"))
275
+ continue;
276
+ const indent = countIndent(line);
277
+ return {
278
+ index,
279
+ indent,
280
+ content: line.slice(indent)
281
+ };
282
+ }
283
+ return null;
284
+ }
285
+ function looksLikeInlineMapping(value) {
286
+ return value.indexOf(":") > 0 && !value.startsWith("http://") && !value.startsWith("https://");
287
+ }
@@ -0,0 +1,3 @@
1
+ export { createDB, type DB } from "./sqlite.js";
2
+ export { createPostgresDB, toPostgresSQL, type PostgresDB, type PostgresClientLike, type PostgresConnectionLike, type PostgresPoolLike, type PostgresQueryResult, } from "./postgres.js";
3
+ export { runMigrations, createMigration, type MigrationResult } from "./migrate.js";
@@ -0,0 +1,6 @@
1
+ export { createDB } from "./sqlite.js";
2
+ export {
3
+ createPostgresDB,
4
+ toPostgresSQL
5
+ } from "./postgres.js";
6
+ export { runMigrations, createMigration } from "./migrate.js";
@@ -0,0 +1,7 @@
1
+ export interface MigrationResult {
2
+ applied: string[];
3
+ skipped: string[];
4
+ errors: string[];
5
+ }
6
+ export declare function runMigrations(dbPath: string, migrationsDir: string): Promise<MigrationResult>;
7
+ export declare function createMigration(migrationsDir: string, name: string): Promise<string>;
@@ -0,0 +1,53 @@
1
+ import { Database } from "bun:sqlite";
2
+ import { readdir, readFile } from "node:fs/promises";
3
+ import { join, extname } from "node:path";
4
+ export async function runMigrations(dbPath, migrationsDir) {
5
+ const db = new Database(dbPath);
6
+ db.run("PRAGMA journal_mode=WAL;");
7
+ db.run(`CREATE TABLE IF NOT EXISTS _migrations (
8
+ name TEXT PRIMARY KEY,
9
+ applied_at TEXT NOT NULL DEFAULT (datetime('now'))
10
+ )`);
11
+ const applied = new Set(db.query("SELECT name FROM _migrations ORDER BY name").all().map((r) => r.name));
12
+ let files;
13
+ try {
14
+ files = await readdir(migrationsDir);
15
+ } catch {
16
+ db.close();
17
+ return { applied: [], skipped: [], errors: ["migrations/ directory not found"] };
18
+ }
19
+ const sqlFiles = files.filter((f) => extname(f) === ".sql").sort(), result = { applied: [], skipped: [], errors: [] };
20
+ for (const file of sqlFiles) {
21
+ if (applied.has(file)) {
22
+ result.skipped.push(file);
23
+ continue;
24
+ }
25
+ try {
26
+ const sql = await readFile(join(migrationsDir, file), "utf-8");
27
+ db.run("BEGIN");
28
+ try {
29
+ db.run(sql);
30
+ db.run("INSERT INTO _migrations (name) VALUES (?)", [file]);
31
+ db.run("COMMIT");
32
+ result.applied.push(file);
33
+ } catch (err) {
34
+ db.run("ROLLBACK");
35
+ throw err;
36
+ }
37
+ } catch (err) {
38
+ result.errors.push(`${file}: ${err instanceof Error ? err.message : String(err)}`);
39
+ }
40
+ }
41
+ db.close();
42
+ return result;
43
+ }
44
+ export async function createMigration(migrationsDir, name) {
45
+ const { mkdir, writeFile } = await import("node:fs/promises");
46
+ await mkdir(migrationsDir, { recursive: !0 });
47
+ const timestamp = new Date().toISOString().replace(/[-:T]/g, "").slice(0, 14), safeName = name.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase(), filename = `${timestamp}_${safeName}.sql`, filepath = join(migrationsDir, filename);
48
+ await writeFile(filepath, `-- Migration: ${name}
49
+ -- Created: ${new Date().toISOString()}
50
+
51
+ `);
52
+ return filename;
53
+ }
@@ -0,0 +1,29 @@
1
+ import type { SafeSQLValue } from "../types/safe-sql.js";
2
+ type Awaitable<T> = T | Promise<T>;
3
+ export interface PostgresQueryResult<Row = unknown> {
4
+ rows: Row[];
5
+ rowCount?: number | null;
6
+ }
7
+ export interface PostgresClientLike {
8
+ query<Row = unknown>(text: string, params?: readonly unknown[]): Awaitable<PostgresQueryResult<Row>>;
9
+ }
10
+ export interface PostgresConnectionLike extends PostgresClientLike {
11
+ release?(): Awaitable<void>;
12
+ }
13
+ export interface PostgresPoolLike extends PostgresClientLike {
14
+ connect?(): Promise<PostgresConnectionLike>;
15
+ }
16
+ export interface PostgresDB {
17
+ get<T>(query: SafeSQLValue): Promise<T | null>;
18
+ all<T>(query: SafeSQLValue): Promise<T[]>;
19
+ run(query: SafeSQLValue): Promise<{
20
+ changes: number;
21
+ }>;
22
+ transaction<T>(handler: (db: PostgresDB) => Promise<T>): Promise<T>;
23
+ }
24
+ export declare function toPostgresSQL(query: SafeSQLValue): {
25
+ text: string;
26
+ params: readonly unknown[];
27
+ };
28
+ export declare function createPostgresDB(client: PostgresPoolLike): PostgresDB;
29
+ export {};
@@ -0,0 +1,59 @@
1
+ export function toPostgresSQL(query) {
2
+ let index = 0;
3
+ return {
4
+ text: query.text.replace(/\?/g, () => `$${++index}`),
5
+ params: query.params
6
+ };
7
+ }
8
+ function createBoundPostgresDB(client, beginTransaction) {
9
+ return {
10
+ async get(query) {
11
+ const { text, params } = toPostgresSQL(query);
12
+ return (await client.query(text, params)).rows[0] ?? null;
13
+ },
14
+ async all(query) {
15
+ const { text, params } = toPostgresSQL(query);
16
+ return (await client.query(text, params)).rows;
17
+ },
18
+ async run(query) {
19
+ const { text, params } = toPostgresSQL(query);
20
+ return { changes: (await client.query(text, params)).rowCount ?? 0 };
21
+ },
22
+ async transaction(handler) {
23
+ if (!beginTransaction)
24
+ return handler(createBoundPostgresDB(client, !1));
25
+ await client.query("BEGIN");
26
+ try {
27
+ const result = await handler(createBoundPostgresDB(client, !1));
28
+ await client.query("COMMIT");
29
+ return result;
30
+ } catch (error) {
31
+ await client.query("ROLLBACK");
32
+ throw error;
33
+ }
34
+ }
35
+ };
36
+ }
37
+ export function createPostgresDB(client) {
38
+ return {
39
+ async get(query) {
40
+ return createBoundPostgresDB(client, !0).get(query);
41
+ },
42
+ async all(query) {
43
+ return createBoundPostgresDB(client, !0).all(query);
44
+ },
45
+ async run(query) {
46
+ return createBoundPostgresDB(client, !0).run(query);
47
+ },
48
+ async transaction(handler) {
49
+ if (!client.connect)
50
+ return createBoundPostgresDB(client, !0).transaction(handler);
51
+ const connection = await client.connect();
52
+ try {
53
+ return await createBoundPostgresDB(connection, !0).transaction(handler);
54
+ } finally {
55
+ await connection.release?.();
56
+ }
57
+ }
58
+ };
59
+ }
@@ -0,0 +1,10 @@
1
+ import type { SafeSQLValue } from "../types/safe-sql.js";
2
+ export interface DB {
3
+ get<T>(query: SafeSQLValue): T | null;
4
+ all<T>(query: SafeSQLValue): T[];
5
+ run(query: SafeSQLValue): {
6
+ changes: number;
7
+ };
8
+ close(): void;
9
+ }
10
+ export declare function createDB(path?: string): DB;
@@ -0,0 +1,22 @@
1
+ import { Database } from "bun:sqlite";
2
+ function toBindings(params) {
3
+ return params;
4
+ }
5
+ export function createDB(path = ":memory:") {
6
+ const sqlite = new Database(path);
7
+ sqlite.run("PRAGMA journal_mode=WAL;");
8
+ return {
9
+ get(query) {
10
+ return sqlite.prepare(query.text).get(...toBindings(query.params));
11
+ },
12
+ all(query) {
13
+ return sqlite.prepare(query.text).all(...toBindings(query.params));
14
+ },
15
+ run(query) {
16
+ return { changes: sqlite.prepare(query.text).run(...toBindings(query.params)).changes ?? 0 };
17
+ },
18
+ close() {
19
+ sqlite.close();
20
+ }
21
+ };
22
+ }
@@ -0,0 +1,8 @@
1
+ export declare function generateWranglerConfig(name: string): string;
2
+ export declare function generateCloudflareEntry(): string;
3
+ export interface CloudflareRoutesConfig {
4
+ version: number;
5
+ include: string[];
6
+ exclude: string[];
7
+ }
8
+ export declare function generateCloudflareStaticAssets(): CloudflareRoutesConfig;
@@ -1,9 +1,12 @@
1
- // Gorsee.js — Cloudflare Workers/Pages deploy adapter
2
-
3
- export function generateWranglerConfig(name: string): string {
4
- const today = new Date().toISOString().split("T")[0]
5
-
6
- return `# Gorsee.js — Cloudflare Workers configuration
1
+ function getStaticContent(env) {
2
+ const value = env.__STATIC_CONTENT;
3
+ if (typeof value !== "object" || value === null || !("get" in value) || typeof value.get !== "function")
4
+ return;
5
+ return value;
6
+ }
7
+ export function generateWranglerConfig(name) {
8
+ const today = new Date().toISOString().split("T")[0];
9
+ return `# Gorsee.js \u2014 Cloudflare Workers configuration
7
10
  # Auto-generated by \`gorsee deploy cloudflare\`
8
11
 
9
12
  name = "${name}"
@@ -25,18 +28,30 @@ command = "bun run build"
25
28
  # Environment variables
26
29
  [vars]
27
30
  NODE_ENV = "production"
31
+ APP_ORIGIN = "REPLACE_WITH_APP_ORIGIN"
28
32
 
29
33
  # Production overrides
30
34
  [env.production]
31
35
  name = "${name}"
32
36
  route = { pattern = "*", zone_name = "" }
33
- `
37
+ `;
34
38
  }
35
-
36
- export function generateCloudflareEntry(): string {
37
- return `// Gorsee.js — Cloudflare Worker entry
39
+ export function generateCloudflareEntry() {
40
+ return `// Gorsee.js \u2014 Cloudflare Worker entry
38
41
  // Auto-generated by \`gorsee deploy cloudflare\`
39
42
 
43
+ interface CloudflareStaticContent {
44
+ get(path: string): Promise<BodyInit | null | undefined>
45
+ }
46
+
47
+ function getStaticContent(env: Record<string, unknown>): CloudflareStaticContent | undefined {
48
+ const value = env.__STATIC_CONTENT
49
+ if (typeof value !== "object" || value === null || !("get" in value) || typeof value.get !== "function") {
50
+ return undefined
51
+ }
52
+ return value as CloudflareStaticContent
53
+ }
54
+
40
55
  export default {
41
56
  async fetch(
42
57
  request: Request,
@@ -44,12 +59,14 @@ export default {
44
59
  ctx: ExecutionContext,
45
60
  ): Promise<Response> {
46
61
  const url = new URL(request.url)
62
+ const appOrigin = (env.APP_ORIGIN as string | undefined) ?? url.origin
63
+ // __STATIC_CONTENT is injected by Cloudflare for static asset access.
64
+ const staticContent = getStaticContent(env)
47
65
 
48
66
  // Serve static client assets from KV/site
49
67
  if (url.pathname.startsWith("/_gorsee/")) {
50
68
  const assetPath = url.pathname.slice("/_gorsee/".length)
51
- // @ts-expect-error __STATIC_CONTENT is injected by Cloudflare
52
- const asset = await (env.__STATIC_CONTENT as any)?.get(assetPath)
69
+ const asset = await staticContent?.get(assetPath)
53
70
  if (asset) {
54
71
  return new Response(asset, {
55
72
  headers: {
@@ -63,8 +80,7 @@ export default {
63
80
  // Serve public static files
64
81
  const staticExts = [".css", ".ico", ".svg", ".png", ".jpg", ".woff2", ".txt"]
65
82
  if (staticExts.some((ext) => url.pathname.endsWith(ext))) {
66
- // @ts-expect-error __STATIC_CONTENT is injected by Cloudflare
67
- const asset = await (env.__STATIC_CONTENT as any)?.get(url.pathname.slice(1))
83
+ const asset = await staticContent?.get(url.pathname.slice(1))
68
84
  if (asset) {
69
85
  return new Response(asset, {
70
86
  headers: { "Cache-Control": "public, max-age=3600" },
@@ -75,23 +91,23 @@ export default {
75
91
  // Forward all other requests to Gorsee server handler
76
92
  // In production, this imports the built server bundle
77
93
  try {
78
- const { handleRequest } = await import("./server-handler.js")
79
- return await handleRequest(request, env)
94
+ const rpcPolicy = {
95
+ // Wire auth/CSRF middleware here for privileged server() calls.
96
+ // The server handler should prefer app.config.ts security.rpc.middlewares
97
+ // when no explicit runtime policy is provided.
98
+ middlewares: [],
99
+ }
100
+ const { handleRequest } = await import("./dist/server-handler.js")
101
+ void appOrigin
102
+ return await handleRequest(request, env, { rpcPolicy })
80
103
  } catch {
81
104
  return new Response("Internal Server Error", { status: 500 })
82
105
  }
83
106
  },
84
107
  }
85
- `
108
+ `;
86
109
  }
87
-
88
- export interface CloudflareRoutesConfig {
89
- version: number
90
- include: string[]
91
- exclude: string[]
92
- }
93
-
94
- export function generateCloudflareStaticAssets(): CloudflareRoutesConfig {
110
+ export function generateCloudflareStaticAssets() {
95
111
  return {
96
112
  version: 1,
97
113
  include: ["/*"],
@@ -103,7 +119,7 @@ export function generateCloudflareStaticAssets(): CloudflareRoutesConfig {
103
119
  "/*.png",
104
120
  "/*.jpg",
105
121
  "/*.svg",
106
- "/*.woff2",
107
- ],
108
- }
122
+ "/*.woff2"
123
+ ]
124
+ };
109
125
  }
@@ -0,0 +1,21 @@
1
+ export interface DeployArtifactConformanceInput {
2
+ name: string;
3
+ content: string;
4
+ requiredTokens: string[];
5
+ forbiddenTokens?: string[];
6
+ format?: "text" | "json" | "toml";
7
+ requiredPaths?: string[];
8
+ requiredValues?: Array<{
9
+ path: string;
10
+ value: string | number | boolean;
11
+ }>;
12
+ }
13
+ export interface DeployArtifactConformanceResult {
14
+ ok: boolean;
15
+ missing: string[];
16
+ forbidden: string[];
17
+ missingPaths: string[];
18
+ mismatchedValues: string[];
19
+ }
20
+ export declare function validateDeployArtifactConformance(input: DeployArtifactConformanceInput): DeployArtifactConformanceResult;
21
+ export declare function assertDeployArtifactConformance(input: DeployArtifactConformanceInput): void;