gorsee 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. package/README.md +261 -213
  2. package/dist-pkg/ai/artifact-lifecycle.d.ts +25 -0
  3. package/dist-pkg/ai/artifact-lifecycle.js +98 -0
  4. package/dist-pkg/ai/bridge.d.ts +26 -0
  5. package/dist-pkg/ai/bridge.js +82 -0
  6. package/dist-pkg/ai/bundle.d.ts +46 -0
  7. package/dist-pkg/ai/bundle.js +247 -0
  8. package/dist-pkg/ai/contracts.d.ts +1 -0
  9. package/dist-pkg/ai/contracts.js +1 -0
  10. package/dist-pkg/ai/ide.d.ts +37 -0
  11. package/dist-pkg/ai/ide.js +56 -0
  12. package/dist-pkg/ai/index.d.ts +85 -0
  13. package/dist-pkg/ai/index.js +267 -0
  14. package/dist-pkg/ai/json.d.ts +6 -0
  15. package/dist-pkg/ai/json.js +14 -0
  16. package/dist-pkg/ai/mcp.d.ts +28 -0
  17. package/dist-pkg/ai/mcp.js +152 -0
  18. package/dist-pkg/ai/session-pack.d.ts +28 -0
  19. package/dist-pkg/ai/session-pack.js +57 -0
  20. package/dist-pkg/ai/store.d.ts +67 -0
  21. package/dist-pkg/ai/store.js +174 -0
  22. package/dist-pkg/ai/summary.d.ts +57 -0
  23. package/dist-pkg/ai/summary.js +148 -0
  24. package/dist-pkg/ai/watch.d.ts +15 -0
  25. package/dist-pkg/ai/watch.js +66 -0
  26. package/dist-pkg/auth/action-tokens.d.ts +50 -0
  27. package/dist-pkg/auth/action-tokens.js +79 -0
  28. package/dist-pkg/auth/index.d.ts +70 -0
  29. package/dist-pkg/auth/index.js +199 -0
  30. package/dist-pkg/auth/redis-session-store.d.ts +7 -0
  31. package/dist-pkg/auth/redis-session-store.js +42 -0
  32. package/dist-pkg/auth/signing.d.ts +4 -0
  33. package/dist-pkg/auth/signing.js +33 -0
  34. package/dist-pkg/auth/sqlite-session-store.d.ts +12 -0
  35. package/dist-pkg/auth/sqlite-session-store.js +83 -0
  36. package/dist-pkg/auth/store-utils.d.ts +2 -0
  37. package/dist-pkg/auth/store-utils.js +20 -0
  38. package/dist-pkg/bin/gorsee.js +2 -0
  39. package/dist-pkg/build/backends/experimental-rolldown.d.ts +6 -0
  40. package/dist-pkg/build/backends/experimental-rolldown.js +9 -0
  41. package/dist-pkg/build/backends/register.d.ts +7 -0
  42. package/dist-pkg/build/backends/register.js +24 -0
  43. package/dist-pkg/build/backends/rolldown.d.ts +16 -0
  44. package/dist-pkg/build/backends/rolldown.js +176 -0
  45. package/dist-pkg/build/client-backend.d.ts +31 -0
  46. package/dist-pkg/build/client-backend.js +97 -0
  47. package/dist-pkg/build/client.d.ts +12 -0
  48. package/dist-pkg/build/client.js +93 -0
  49. package/dist-pkg/build/css-modules.d.ts +10 -0
  50. package/dist-pkg/build/css-modules.js +51 -0
  51. package/dist-pkg/build/devalue-parse.d.ts +1 -0
  52. package/dist-pkg/build/devalue-parse.js +1 -0
  53. package/dist-pkg/build/diagnostics.d.ts +20 -0
  54. package/dist-pkg/build/diagnostics.js +35 -0
  55. package/dist-pkg/build/fixtures.d.ts +7 -0
  56. package/dist-pkg/build/fixtures.js +60 -0
  57. package/dist-pkg/build/framework-imports.d.ts +4 -0
  58. package/dist-pkg/build/framework-imports.js +58 -0
  59. package/dist-pkg/build/init.d.ts +1 -0
  60. package/dist-pkg/build/init.js +6 -0
  61. package/dist-pkg/build/manifest.d.ts +3 -0
  62. package/dist-pkg/build/manifest.js +23 -0
  63. package/dist-pkg/build/parity.d.ts +32 -0
  64. package/dist-pkg/build/parity.js +71 -0
  65. package/dist-pkg/build/plugin.d.ts +11 -0
  66. package/dist-pkg/build/plugin.js +8 -0
  67. package/dist-pkg/build/readiness.d.ts +11 -0
  68. package/dist-pkg/build/readiness.js +18 -0
  69. package/dist-pkg/build/route-client-transform.d.ts +17 -0
  70. package/dist-pkg/build/route-client-transform.js +48 -0
  71. package/dist-pkg/build/route-metadata.d.ts +6 -0
  72. package/dist-pkg/build/route-metadata.js +8 -0
  73. package/dist-pkg/build/rpc-transform.d.ts +1 -0
  74. package/dist-pkg/build/rpc-transform.js +44 -0
  75. package/dist-pkg/build/server-bundle.d.ts +4 -0
  76. package/dist-pkg/build/server-bundle.js +261 -0
  77. package/dist-pkg/build/server-strip.d.ts +2 -0
  78. package/dist-pkg/build/server-strip.js +32 -0
  79. package/dist-pkg/build/ssg.d.ts +12 -0
  80. package/dist-pkg/build/ssg.js +36 -0
  81. package/dist-pkg/cli/bun-plugin.d.ts +2 -0
  82. package/dist-pkg/cli/bun-plugin.js +14 -0
  83. package/dist-pkg/cli/canonical-import-rewrite.d.ts +18 -0
  84. package/dist-pkg/cli/canonical-import-rewrite.js +94 -0
  85. package/dist-pkg/cli/canonical-imports.d.ts +8 -0
  86. package/dist-pkg/cli/canonical-imports.js +131 -0
  87. package/dist-pkg/cli/check-ast.d.ts +20 -0
  88. package/dist-pkg/cli/check-ast.js +126 -0
  89. package/dist-pkg/cli/cmd-ai.d.ts +4 -0
  90. package/dist-pkg/cli/cmd-ai.js +290 -0
  91. package/dist-pkg/cli/cmd-build.d.ts +12 -0
  92. package/dist-pkg/cli/cmd-build.js +198 -0
  93. package/dist-pkg/cli/cmd-check.d.ts +25 -0
  94. package/dist-pkg/cli/cmd-check.js +573 -0
  95. package/dist-pkg/cli/cmd-create.d.ts +6 -0
  96. package/dist-pkg/cli/cmd-create.js +600 -0
  97. package/dist-pkg/cli/cmd-deploy.d.ts +6 -0
  98. package/dist-pkg/cli/cmd-deploy.js +381 -0
  99. package/dist-pkg/cli/cmd-dev.d.ts +5 -0
  100. package/dist-pkg/cli/cmd-dev.js +5 -0
  101. package/dist-pkg/cli/cmd-docs.d.ts +50 -0
  102. package/dist-pkg/cli/cmd-docs.js +122 -0
  103. package/dist-pkg/cli/cmd-generate.d.ts +12 -0
  104. package/dist-pkg/cli/cmd-generate.js +320 -0
  105. package/dist-pkg/cli/cmd-migrate.d.ts +7 -0
  106. package/dist-pkg/cli/cmd-migrate.js +42 -0
  107. package/dist-pkg/cli/cmd-routes.d.ts +6 -0
  108. package/dist-pkg/cli/cmd-routes.js +24 -0
  109. package/dist-pkg/cli/cmd-start.d.ts +13 -0
  110. package/dist-pkg/cli/cmd-start.js +32 -0
  111. package/dist-pkg/cli/cmd-test.d.ts +20 -0
  112. package/dist-pkg/cli/cmd-test.js +103 -0
  113. package/dist-pkg/cli/cmd-typegen.d.ts +7 -0
  114. package/dist-pkg/cli/cmd-typegen.js +66 -0
  115. package/dist-pkg/cli/cmd-upgrade.d.ts +38 -0
  116. package/dist-pkg/cli/cmd-upgrade.js +232 -0
  117. package/dist-pkg/cli/context.d.ts +4 -0
  118. package/dist-pkg/cli/context.js +4 -0
  119. package/dist-pkg/cli/framework-md.d.ts +1 -0
  120. package/dist-pkg/cli/framework-md.js +391 -0
  121. package/dist-pkg/cli/index.d.ts +6 -0
  122. package/dist-pkg/cli/index.js +106 -0
  123. package/dist-pkg/cli/release-version.d.ts +2 -0
  124. package/dist-pkg/cli/release-version.js +33 -0
  125. package/dist-pkg/client.d.ts +16 -0
  126. package/dist-pkg/client.js +71 -0
  127. package/dist-pkg/compat.d.ts +1 -0
  128. package/dist-pkg/compat.js +1 -0
  129. package/dist-pkg/compiler/analysis-backend.d.ts +20 -0
  130. package/dist-pkg/compiler/analysis-backend.js +164 -0
  131. package/dist-pkg/compiler/backends/experimental-oxc.d.ts +6 -0
  132. package/dist-pkg/compiler/backends/experimental-oxc.js +9 -0
  133. package/dist-pkg/compiler/backends/oxc.d.ts +16 -0
  134. package/dist-pkg/compiler/backends/oxc.js +198 -0
  135. package/dist-pkg/compiler/backends/register.d.ts +7 -0
  136. package/dist-pkg/compiler/backends/register.js +22 -0
  137. package/dist-pkg/compiler/fixtures.d.ts +2 -0
  138. package/dist-pkg/compiler/fixtures.js +118 -0
  139. package/dist-pkg/compiler/init.d.ts +1 -0
  140. package/dist-pkg/compiler/init.js +6 -0
  141. package/dist-pkg/compiler/module-analysis.d.ts +13 -0
  142. package/dist-pkg/compiler/module-analysis.js +50 -0
  143. package/dist-pkg/compiler/parity.d.ts +35 -0
  144. package/dist-pkg/compiler/parity.js +89 -0
  145. package/dist-pkg/compiler/readiness.d.ts +11 -0
  146. package/dist-pkg/compiler/readiness.js +18 -0
  147. package/dist-pkg/compiler/route-facts.d.ts +34 -0
  148. package/dist-pkg/compiler/route-facts.js +75 -0
  149. package/dist-pkg/content/index.d.ts +27 -0
  150. package/dist-pkg/content/index.js +287 -0
  151. package/dist-pkg/db/index.d.ts +3 -0
  152. package/dist-pkg/db/index.js +6 -0
  153. package/dist-pkg/db/migrate.d.ts +7 -0
  154. package/dist-pkg/db/migrate.js +53 -0
  155. package/dist-pkg/db/postgres.d.ts +29 -0
  156. package/dist-pkg/db/postgres.js +59 -0
  157. package/dist-pkg/db/sqlite.d.ts +10 -0
  158. package/dist-pkg/db/sqlite.js +22 -0
  159. package/dist-pkg/deploy/cloudflare.d.ts +8 -0
  160. package/{src/deploy/cloudflare.ts → dist-pkg/deploy/cloudflare.js} +24 -26
  161. package/dist-pkg/deploy/conformance.d.ts +21 -0
  162. package/dist-pkg/deploy/conformance.js +98 -0
  163. package/dist-pkg/deploy/dockerfile.d.ts +3 -0
  164. package/{src/deploy/dockerfile.ts → dist-pkg/deploy/dockerfile.js} +8 -10
  165. package/dist-pkg/deploy/fly.d.ts +3 -0
  166. package/{src/deploy/fly.ts → dist-pkg/deploy/fly.js} +11 -12
  167. package/dist-pkg/deploy/index.d.ts +6 -0
  168. package/dist-pkg/deploy/index.js +26 -0
  169. package/dist-pkg/deploy/netlify.d.ts +2 -0
  170. package/{src/deploy/netlify.ts → dist-pkg/deploy/netlify.js} +17 -11
  171. package/dist-pkg/deploy/runtime.d.ts +2 -0
  172. package/dist-pkg/deploy/runtime.js +3 -0
  173. package/dist-pkg/deploy/vercel.d.ts +22 -0
  174. package/dist-pkg/deploy/vercel.js +53 -0
  175. package/dist-pkg/dev/error-overlay.d.ts +1 -0
  176. package/{src/dev/error-overlay.ts → dist-pkg/dev/error-overlay.js} +13 -23
  177. package/dist-pkg/dev/hmr.d.ts +30 -0
  178. package/dist-pkg/dev/hmr.js +86 -0
  179. package/dist-pkg/dev/partial-handler.d.ts +9 -0
  180. package/dist-pkg/dev/partial-handler.js +24 -0
  181. package/dist-pkg/dev/request-handler.d.ts +30 -0
  182. package/dist-pkg/dev/request-handler.js +67 -0
  183. package/dist-pkg/dev/watcher.d.ts +6 -0
  184. package/dist-pkg/dev/watcher.js +34 -0
  185. package/dist-pkg/dev.d.ts +11 -0
  186. package/dist-pkg/dev.js +268 -0
  187. package/dist-pkg/env/index.d.ts +3 -0
  188. package/dist-pkg/env/index.js +57 -0
  189. package/dist-pkg/errors/catalog.d.ts +9 -0
  190. package/{src/errors/catalog.ts → dist-pkg/errors/catalog.js} +8 -24
  191. package/dist-pkg/errors/formatter.d.ts +22 -0
  192. package/dist-pkg/errors/formatter.js +43 -0
  193. package/dist-pkg/errors/index.d.ts +2 -0
  194. package/dist-pkg/errors/index.js +2 -0
  195. package/dist-pkg/forms/action.d.ts +15 -0
  196. package/dist-pkg/forms/action.js +20 -0
  197. package/dist-pkg/forms/index.d.ts +4 -0
  198. package/dist-pkg/forms/index.js +12 -0
  199. package/dist-pkg/i18n/index.d.ts +61 -0
  200. package/dist-pkg/i18n/index.js +147 -0
  201. package/dist-pkg/index-client.d.ts +1 -0
  202. package/dist-pkg/index-client.js +1 -0
  203. package/dist-pkg/index.d.ts +32 -0
  204. package/dist-pkg/index.js +79 -0
  205. package/dist-pkg/jsx-runtime-client.d.ts +8 -0
  206. package/dist-pkg/jsx-runtime-client.js +1 -0
  207. package/dist-pkg/jsx-runtime.d.ts +13 -0
  208. package/dist-pkg/jsx-runtime.js +5 -0
  209. package/dist-pkg/jsx-types-html.d.ts +221 -0
  210. package/dist-pkg/jsx-types-html.js +0 -0
  211. package/dist-pkg/log/index.d.ts +8 -0
  212. package/dist-pkg/log/index.js +55 -0
  213. package/dist-pkg/plugins/drizzle.d.ts +16 -0
  214. package/dist-pkg/plugins/drizzle.js +50 -0
  215. package/dist-pkg/plugins/index.d.ts +62 -0
  216. package/dist-pkg/plugins/index.js +147 -0
  217. package/dist-pkg/plugins/lucia.d.ts +26 -0
  218. package/dist-pkg/plugins/lucia.js +63 -0
  219. package/dist-pkg/plugins/prisma.d.ts +14 -0
  220. package/dist-pkg/plugins/prisma.js +57 -0
  221. package/dist-pkg/plugins/resend.d.ts +21 -0
  222. package/dist-pkg/plugins/resend.js +45 -0
  223. package/dist-pkg/plugins/s3.d.ts +18 -0
  224. package/dist-pkg/plugins/s3.js +63 -0
  225. package/dist-pkg/plugins/stripe.d.ts +32 -0
  226. package/dist-pkg/plugins/stripe.js +69 -0
  227. package/dist-pkg/plugins/tailwind.d.ts +15 -0
  228. package/dist-pkg/plugins/tailwind.js +58 -0
  229. package/dist-pkg/prod.d.ts +21 -0
  230. package/dist-pkg/prod.js +347 -0
  231. package/dist-pkg/reactive/computed.d.ts +3 -0
  232. package/dist-pkg/reactive/computed.js +15 -0
  233. package/dist-pkg/reactive/data.d.ts +25 -0
  234. package/dist-pkg/reactive/data.js +56 -0
  235. package/dist-pkg/reactive/diagnostics.d.ts +100 -0
  236. package/dist-pkg/reactive/diagnostics.js +363 -0
  237. package/dist-pkg/reactive/effect.d.ts +3 -0
  238. package/dist-pkg/reactive/effect.js +6 -0
  239. package/dist-pkg/reactive/index.d.ts +9 -0
  240. package/dist-pkg/reactive/index.js +18 -0
  241. package/dist-pkg/reactive/live.d.ts +15 -0
  242. package/dist-pkg/reactive/live.js +58 -0
  243. package/dist-pkg/reactive/optimistic.d.ts +20 -0
  244. package/dist-pkg/reactive/optimistic.js +54 -0
  245. package/dist-pkg/reactive/resource.d.ts +25 -0
  246. package/dist-pkg/reactive/resource.js +97 -0
  247. package/dist-pkg/reactive/signal.d.ts +4 -0
  248. package/dist-pkg/reactive/signal.js +17 -0
  249. package/dist-pkg/reactive/store.d.ts +6 -0
  250. package/dist-pkg/reactive/store.js +19 -0
  251. package/dist-pkg/router/index.d.ts +2 -0
  252. package/dist-pkg/router/index.js +2 -0
  253. package/dist-pkg/router/matcher.d.ts +7 -0
  254. package/dist-pkg/router/matcher.js +40 -0
  255. package/dist-pkg/router/scanner.d.ts +14 -0
  256. package/dist-pkg/router/scanner.js +141 -0
  257. package/dist-pkg/routes/index.d.ts +1 -0
  258. package/dist-pkg/routes/index.js +10 -0
  259. package/dist-pkg/runtime/app-config.d.ts +26 -0
  260. package/dist-pkg/runtime/app-config.js +69 -0
  261. package/dist-pkg/runtime/client.d.ts +3 -0
  262. package/dist-pkg/runtime/client.js +31 -0
  263. package/dist-pkg/runtime/devtools.d.ts +64 -0
  264. package/dist-pkg/runtime/devtools.js +132 -0
  265. package/dist-pkg/runtime/error-boundary.d.ts +6 -0
  266. package/dist-pkg/runtime/error-boundary.js +17 -0
  267. package/dist-pkg/runtime/event-replay.d.ts +3 -0
  268. package/{src/runtime/event-replay.ts → dist-pkg/runtime/event-replay.js} +7 -22
  269. package/dist-pkg/runtime/event-source.d.ts +7 -0
  270. package/dist-pkg/runtime/event-source.js +24 -0
  271. package/dist-pkg/runtime/form.d.ts +24 -0
  272. package/dist-pkg/runtime/form.js +59 -0
  273. package/dist-pkg/runtime/head.d.ts +7 -0
  274. package/dist-pkg/runtime/head.js +90 -0
  275. package/dist-pkg/runtime/html-escape.d.ts +7 -0
  276. package/dist-pkg/runtime/html-escape.js +39 -0
  277. package/dist-pkg/runtime/hydration.d.ts +15 -0
  278. package/dist-pkg/runtime/hydration.js +103 -0
  279. package/dist-pkg/runtime/image.d.ts +49 -0
  280. package/dist-pkg/runtime/image.js +144 -0
  281. package/dist-pkg/runtime/index.d.ts +17 -0
  282. package/dist-pkg/runtime/index.js +59 -0
  283. package/dist-pkg/runtime/island-hydrator.d.ts +12 -0
  284. package/dist-pkg/runtime/island-hydrator.js +49 -0
  285. package/dist-pkg/runtime/island.d.ts +19 -0
  286. package/dist-pkg/runtime/island.js +36 -0
  287. package/dist-pkg/runtime/jsx-runtime.d.ts +12 -0
  288. package/dist-pkg/runtime/jsx-runtime.js +173 -0
  289. package/dist-pkg/runtime/link.d.ts +16 -0
  290. package/dist-pkg/runtime/link.js +47 -0
  291. package/dist-pkg/runtime/project.d.ts +37 -0
  292. package/dist-pkg/runtime/project.js +36 -0
  293. package/dist-pkg/runtime/renderable.d.ts +6 -0
  294. package/dist-pkg/runtime/renderable.js +0 -0
  295. package/dist-pkg/runtime/router.d.ts +47 -0
  296. package/dist-pkg/runtime/router.js +476 -0
  297. package/dist-pkg/runtime/server.d.ts +8 -0
  298. package/dist-pkg/runtime/server.js +71 -0
  299. package/dist-pkg/runtime/stream.d.ts +29 -0
  300. package/dist-pkg/runtime/stream.js +106 -0
  301. package/dist-pkg/runtime/suspense.d.ts +6 -0
  302. package/dist-pkg/runtime/suspense.js +16 -0
  303. package/dist-pkg/runtime/typed-routes.d.ts +24 -0
  304. package/dist-pkg/runtime/typed-routes.js +77 -0
  305. package/dist-pkg/runtime/validated-form.d.ts +40 -0
  306. package/dist-pkg/runtime/validated-form.js +120 -0
  307. package/dist-pkg/security/cors.d.ts +10 -0
  308. package/dist-pkg/security/cors.js +56 -0
  309. package/dist-pkg/security/csrf.d.ts +9 -0
  310. package/dist-pkg/security/csrf.js +53 -0
  311. package/dist-pkg/security/headers.d.ts +11 -0
  312. package/dist-pkg/security/headers.js +31 -0
  313. package/dist-pkg/security/index.d.ts +5 -0
  314. package/dist-pkg/security/index.js +5 -0
  315. package/dist-pkg/security/rate-limit.d.ts +10 -0
  316. package/dist-pkg/security/rate-limit.js +49 -0
  317. package/dist-pkg/security/redis-rate-limit.d.ts +14 -0
  318. package/dist-pkg/security/redis-rate-limit.js +23 -0
  319. package/dist-pkg/server/action.d.ts +21 -0
  320. package/dist-pkg/server/action.js +64 -0
  321. package/dist-pkg/server/cache-utils.d.ts +2 -0
  322. package/dist-pkg/server/cache-utils.js +26 -0
  323. package/dist-pkg/server/cache.d.ts +33 -0
  324. package/dist-pkg/server/cache.js +236 -0
  325. package/dist-pkg/server/compress.d.ts +2 -0
  326. package/dist-pkg/server/compress.js +49 -0
  327. package/dist-pkg/server/endpoint-execution.d.ts +28 -0
  328. package/dist-pkg/server/endpoint-execution.js +37 -0
  329. package/dist-pkg/server/etag.d.ts +3 -0
  330. package/dist-pkg/server/etag.js +18 -0
  331. package/dist-pkg/server/guard.d.ts +16 -0
  332. package/dist-pkg/server/guard.js +45 -0
  333. package/dist-pkg/server/html-shell.d.ts +12 -0
  334. package/dist-pkg/server/html-shell.js +52 -0
  335. package/dist-pkg/server/index.d.ts +36 -0
  336. package/dist-pkg/server/index.js +170 -0
  337. package/dist-pkg/server/jobs.d.ts +41 -0
  338. package/dist-pkg/server/jobs.js +81 -0
  339. package/dist-pkg/server/manifest.d.ts +19 -0
  340. package/dist-pkg/server/manifest.js +36 -0
  341. package/dist-pkg/server/middleware.d.ts +39 -0
  342. package/dist-pkg/server/middleware.js +122 -0
  343. package/dist-pkg/server/mime.d.ts +1 -0
  344. package/{src/server/mime.ts → dist-pkg/server/mime.js} +6 -17
  345. package/dist-pkg/server/not-found.d.ts +6 -0
  346. package/dist-pkg/server/not-found.js +24 -0
  347. package/dist-pkg/server/page-render.d.ts +29 -0
  348. package/dist-pkg/server/page-render.js +67 -0
  349. package/dist-pkg/server/partial-navigation.d.ts +4 -0
  350. package/dist-pkg/server/partial-navigation.js +16 -0
  351. package/dist-pkg/server/pipe.d.ts +9 -0
  352. package/dist-pkg/server/pipe.js +32 -0
  353. package/dist-pkg/server/redis-cache-store.d.ts +10 -0
  354. package/dist-pkg/server/redis-cache-store.js +73 -0
  355. package/dist-pkg/server/redis-client.d.ts +37 -0
  356. package/dist-pkg/server/redis-client.js +37 -0
  357. package/dist-pkg/server/request-policy.d.ts +55 -0
  358. package/dist-pkg/server/request-policy.js +216 -0
  359. package/dist-pkg/server/request-preflight.d.ts +23 -0
  360. package/dist-pkg/server/request-preflight.js +45 -0
  361. package/dist-pkg/server/request-security-policy.d.ts +17 -0
  362. package/dist-pkg/server/request-security-policy.js +34 -0
  363. package/dist-pkg/server/request-surface.d.ts +8 -0
  364. package/dist-pkg/server/request-surface.js +19 -0
  365. package/dist-pkg/server/route-request.d.ts +31 -0
  366. package/dist-pkg/server/route-request.js +112 -0
  367. package/dist-pkg/server/route-response.d.ts +22 -0
  368. package/dist-pkg/server/route-response.js +58 -0
  369. package/dist-pkg/server/rpc-hash.d.ts +2 -0
  370. package/dist-pkg/server/rpc-hash.js +7 -0
  371. package/dist-pkg/server/rpc-protocol.d.ts +22 -0
  372. package/dist-pkg/server/rpc-protocol.js +28 -0
  373. package/dist-pkg/server/rpc-utils.d.ts +2 -0
  374. package/dist-pkg/server/rpc-utils.js +26 -0
  375. package/dist-pkg/server/rpc.d.ts +20 -0
  376. package/dist-pkg/server/rpc.js +147 -0
  377. package/dist-pkg/server/runtime-dispatch.d.ts +19 -0
  378. package/dist-pkg/server/runtime-dispatch.js +67 -0
  379. package/dist-pkg/server/server-execution.d.ts +22 -0
  380. package/dist-pkg/server/server-execution.js +53 -0
  381. package/dist-pkg/server/sqlite-cache-store.d.ts +13 -0
  382. package/dist-pkg/server/sqlite-cache-store.js +88 -0
  383. package/dist-pkg/server/sse.d.ts +9 -0
  384. package/dist-pkg/server/sse.js +34 -0
  385. package/dist-pkg/server/static-file.d.ts +9 -0
  386. package/dist-pkg/server/static-file.js +43 -0
  387. package/dist-pkg/server/ws.d.ts +18 -0
  388. package/dist-pkg/server/ws.js +40 -0
  389. package/dist-pkg/server-entry.d.ts +19 -0
  390. package/dist-pkg/server-entry.js +93 -0
  391. package/dist-pkg/testing/index.d.ts +98 -0
  392. package/dist-pkg/testing/index.js +254 -0
  393. package/dist-pkg/types/index.d.ts +4 -0
  394. package/dist-pkg/types/index.js +4 -0
  395. package/dist-pkg/types/safe-html.d.ts +7 -0
  396. package/dist-pkg/types/safe-html.js +19 -0
  397. package/dist-pkg/types/safe-sql.d.ts +8 -0
  398. package/dist-pkg/types/safe-sql.js +14 -0
  399. package/dist-pkg/types/safe-url.d.ts +7 -0
  400. package/dist-pkg/types/safe-url.js +20 -0
  401. package/dist-pkg/types/user-input.d.ts +9 -0
  402. package/dist-pkg/types/user-input.js +3 -0
  403. package/dist-pkg/unsafe/index.d.ts +12 -0
  404. package/dist-pkg/unsafe/index.js +6 -0
  405. package/package.json +102 -44
  406. package/bin/gorsee.js +0 -14
  407. package/src/auth/index.ts +0 -178
  408. package/src/auth/redis-session-store.ts +0 -46
  409. package/src/auth/sqlite-session-store.ts +0 -98
  410. package/src/auth/store-utils.ts +0 -21
  411. package/src/build/client.ts +0 -139
  412. package/src/build/css-modules.ts +0 -69
  413. package/src/build/devalue-parse.ts +0 -2
  414. package/src/build/manifest.ts +0 -34
  415. package/src/build/route-metadata.ts +0 -12
  416. package/src/build/rpc-transform.ts +0 -62
  417. package/src/build/server-strip.ts +0 -87
  418. package/src/build/ssg.ts +0 -70
  419. package/src/cli/bun-plugin.ts +0 -58
  420. package/src/cli/cmd-build.ts +0 -153
  421. package/src/cli/cmd-check.ts +0 -239
  422. package/src/cli/cmd-create.ts +0 -328
  423. package/src/cli/cmd-deploy.ts +0 -149
  424. package/src/cli/cmd-dev.ts +0 -13
  425. package/src/cli/cmd-docs.ts +0 -152
  426. package/src/cli/cmd-generate.ts +0 -155
  427. package/src/cli/cmd-migrate.ts +0 -53
  428. package/src/cli/cmd-routes.ts +0 -36
  429. package/src/cli/cmd-start.ts +0 -30
  430. package/src/cli/cmd-test.ts +0 -129
  431. package/src/cli/cmd-typegen.ts +0 -93
  432. package/src/cli/cmd-upgrade.ts +0 -143
  433. package/src/cli/context.ts +0 -12
  434. package/src/cli/framework-md.ts +0 -223
  435. package/src/cli/index.ts +0 -107
  436. package/src/client.ts +0 -26
  437. package/src/db/index.ts +0 -2
  438. package/src/db/migrate.ts +0 -89
  439. package/src/db/sqlite.ts +0 -40
  440. package/src/deploy/index.ts +0 -31
  441. package/src/deploy/vercel.ts +0 -94
  442. package/src/dev/hmr.ts +0 -31
  443. package/src/dev/partial-handler.ts +0 -52
  444. package/src/dev/request-handler.ts +0 -127
  445. package/src/dev/watcher.ts +0 -48
  446. package/src/dev.ts +0 -208
  447. package/src/env/index.ts +0 -74
  448. package/src/errors/formatter.ts +0 -63
  449. package/src/errors/index.ts +0 -2
  450. package/src/i18n/index.ts +0 -72
  451. package/src/index-client.ts +0 -4
  452. package/src/index.ts +0 -43
  453. package/src/jsx-runtime-client.ts +0 -13
  454. package/src/jsx-runtime.ts +0 -20
  455. package/src/jsx-types-html.ts +0 -242
  456. package/src/log/index.ts +0 -44
  457. package/src/plugins/drizzle.ts +0 -84
  458. package/src/plugins/index.ts +0 -86
  459. package/src/plugins/lucia.ts +0 -111
  460. package/src/plugins/prisma.ts +0 -85
  461. package/src/plugins/resend.ts +0 -78
  462. package/src/plugins/s3.ts +0 -102
  463. package/src/plugins/stripe.ts +0 -133
  464. package/src/plugins/tailwind.ts +0 -92
  465. package/src/prod.ts +0 -252
  466. package/src/reactive/computed.ts +0 -7
  467. package/src/reactive/effect.ts +0 -7
  468. package/src/reactive/index.ts +0 -7
  469. package/src/reactive/live.ts +0 -97
  470. package/src/reactive/optimistic.ts +0 -83
  471. package/src/reactive/resource.ts +0 -138
  472. package/src/reactive/signal.ts +0 -20
  473. package/src/reactive/store.ts +0 -36
  474. package/src/router/index.ts +0 -2
  475. package/src/router/matcher.ts +0 -53
  476. package/src/router/scanner.ts +0 -206
  477. package/src/runtime/client.ts +0 -28
  478. package/src/runtime/error-boundary.ts +0 -35
  479. package/src/runtime/form.ts +0 -49
  480. package/src/runtime/head.ts +0 -113
  481. package/src/runtime/html-escape.ts +0 -30
  482. package/src/runtime/hydration.ts +0 -95
  483. package/src/runtime/image.ts +0 -48
  484. package/src/runtime/index.ts +0 -12
  485. package/src/runtime/island-hydrator.ts +0 -84
  486. package/src/runtime/island.ts +0 -88
  487. package/src/runtime/jsx-runtime.ts +0 -167
  488. package/src/runtime/link.ts +0 -45
  489. package/src/runtime/project.ts +0 -73
  490. package/src/runtime/router.ts +0 -224
  491. package/src/runtime/server.ts +0 -102
  492. package/src/runtime/stream.ts +0 -182
  493. package/src/runtime/suspense.ts +0 -37
  494. package/src/runtime/typed-routes.ts +0 -26
  495. package/src/runtime/validated-form.ts +0 -106
  496. package/src/security/cors.ts +0 -80
  497. package/src/security/csrf.ts +0 -85
  498. package/src/security/headers.ts +0 -50
  499. package/src/security/index.ts +0 -4
  500. package/src/security/rate-limit.ts +0 -80
  501. package/src/server/action.ts +0 -48
  502. package/src/server/cache-utils.ts +0 -23
  503. package/src/server/cache.ts +0 -125
  504. package/src/server/compress.ts +0 -60
  505. package/src/server/etag.ts +0 -23
  506. package/src/server/guard.ts +0 -69
  507. package/src/server/html-shell.ts +0 -69
  508. package/src/server/index.ts +0 -57
  509. package/src/server/manifest.ts +0 -36
  510. package/src/server/middleware.ts +0 -159
  511. package/src/server/not-found.ts +0 -35
  512. package/src/server/page-render.ts +0 -123
  513. package/src/server/pipe.ts +0 -46
  514. package/src/server/redis-cache-store.ts +0 -87
  515. package/src/server/redis-client.ts +0 -71
  516. package/src/server/request-preflight.ts +0 -45
  517. package/src/server/route-request.ts +0 -72
  518. package/src/server/rpc-hash.ts +0 -17
  519. package/src/server/rpc-utils.ts +0 -27
  520. package/src/server/rpc.ts +0 -177
  521. package/src/server/sqlite-cache-store.ts +0 -109
  522. package/src/server/sse.ts +0 -96
  523. package/src/server/static-file.ts +0 -63
  524. package/src/server/ws.ts +0 -56
  525. package/src/server-entry.ts +0 -36
  526. package/src/testing/index.ts +0 -74
  527. package/src/types/index.ts +0 -4
  528. package/src/types/safe-html.ts +0 -32
  529. package/src/types/safe-sql.ts +0 -28
  530. package/src/types/safe-url.ts +0 -40
  531. package/src/types/user-input.ts +0 -12
  532. package/src/unsafe/index.ts +0 -18
@@ -0,0 +1,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,6 @@
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
+ export function generateWranglerConfig(name) {
2
+ const today = new Date().toISOString().split("T")[0];
3
+ return `# Gorsee.js \u2014 Cloudflare Workers configuration
7
4
  # Auto-generated by \`gorsee deploy cloudflare\`
8
5
 
9
6
  name = "${name}"
@@ -25,16 +22,16 @@ command = "bun run build"
25
22
  # Environment variables
26
23
  [vars]
27
24
  NODE_ENV = "production"
25
+ APP_ORIGIN = "REPLACE_WITH_APP_ORIGIN"
28
26
 
29
27
  # Production overrides
30
28
  [env.production]
31
29
  name = "${name}"
32
30
  route = { pattern = "*", zone_name = "" }
33
- `
31
+ `;
34
32
  }
35
-
36
- export function generateCloudflareEntry(): string {
37
- return `// Gorsee.js — Cloudflare Worker entry
33
+ export function generateCloudflareEntry() {
34
+ return `// Gorsee.js \u2014 Cloudflare Worker entry
38
35
  // Auto-generated by \`gorsee deploy cloudflare\`
39
36
 
40
37
  export default {
@@ -44,11 +41,12 @@ export default {
44
41
  ctx: ExecutionContext,
45
42
  ): Promise<Response> {
46
43
  const url = new URL(request.url)
44
+ const appOrigin = (env.APP_ORIGIN as string | undefined) ?? url.origin
47
45
 
48
46
  // Serve static client assets from KV/site
49
47
  if (url.pathname.startsWith("/_gorsee/")) {
50
48
  const assetPath = url.pathname.slice("/_gorsee/".length)
51
- // @ts-expect-error __STATIC_CONTENT is injected by Cloudflare
49
+ // @ts-expect-error \u2014 __STATIC_CONTENT is injected by Cloudflare
52
50
  const asset = await (env.__STATIC_CONTENT as any)?.get(assetPath)
53
51
  if (asset) {
54
52
  return new Response(asset, {
@@ -63,7 +61,7 @@ export default {
63
61
  // Serve public static files
64
62
  const staticExts = [".css", ".ico", ".svg", ".png", ".jpg", ".woff2", ".txt"]
65
63
  if (staticExts.some((ext) => url.pathname.endsWith(ext))) {
66
- // @ts-expect-error __STATIC_CONTENT is injected by Cloudflare
64
+ // @ts-expect-error \u2014 __STATIC_CONTENT is injected by Cloudflare
67
65
  const asset = await (env.__STATIC_CONTENT as any)?.get(url.pathname.slice(1))
68
66
  if (asset) {
69
67
  return new Response(asset, {
@@ -75,23 +73,23 @@ export default {
75
73
  // Forward all other requests to Gorsee server handler
76
74
  // In production, this imports the built server bundle
77
75
  try {
78
- const { handleRequest } = await import("./server-handler.js")
79
- return await handleRequest(request, env)
76
+ const rpcPolicy = {
77
+ // Wire auth/CSRF middleware here for privileged server() calls.
78
+ // The server handler should prefer app.config.ts security.rpc.middlewares
79
+ // when no explicit runtime policy is provided.
80
+ middlewares: [],
81
+ }
82
+ const { handleRequest } = await import("./dist/server-handler.js")
83
+ void appOrigin
84
+ return await handleRequest(request, env, { rpcPolicy })
80
85
  } catch {
81
86
  return new Response("Internal Server Error", { status: 500 })
82
87
  }
83
88
  },
84
89
  }
85
- `
90
+ `;
86
91
  }
87
-
88
- export interface CloudflareRoutesConfig {
89
- version: number
90
- include: string[]
91
- exclude: string[]
92
- }
93
-
94
- export function generateCloudflareStaticAssets(): CloudflareRoutesConfig {
92
+ export function generateCloudflareStaticAssets() {
95
93
  return {
96
94
  version: 1,
97
95
  include: ["/*"],
@@ -103,7 +101,7 @@ export function generateCloudflareStaticAssets(): CloudflareRoutesConfig {
103
101
  "/*.png",
104
102
  "/*.jpg",
105
103
  "/*.svg",
106
- "/*.woff2",
107
- ],
108
- }
104
+ "/*.woff2"
105
+ ]
106
+ };
109
107
  }
@@ -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;