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,100 @@
1
+ export declare const REACTIVE_TRACE_SCHEMA_VERSION = 1;
2
+ type ReactiveNodeKind = "signal" | "computed" | "effect" | "resource" | "mutation";
3
+ type ReactiveInvalidationReason = "write" | "resource.invalidate" | "resource.invalidateAll";
4
+ export interface ReactiveDiagnosticsSnapshot {
5
+ signalsCreated: number;
6
+ signalReads: number;
7
+ signalWrites: number;
8
+ computedCreated: number;
9
+ computedReads: number;
10
+ computedRuns: number;
11
+ effectCreated: number;
12
+ effectRuns: number;
13
+ resourcesCreated: number;
14
+ resourceLoadsStarted: number;
15
+ resourceLoadsSucceeded: number;
16
+ resourceLoadsFailed: number;
17
+ resourceInvalidations: number;
18
+ resourceMutations: number;
19
+ mutationsCreated: number;
20
+ mutationRuns: number;
21
+ mutationSuccesses: number;
22
+ mutationFailures: number;
23
+ mutationRollbacks: number;
24
+ mutationResets: number;
25
+ }
26
+ export interface ReactiveDiagnosticsConfig {
27
+ enabled?: boolean;
28
+ captureEvents?: boolean;
29
+ maxEvents?: number;
30
+ }
31
+ export interface ReactiveDiagnosticOptions {
32
+ label?: string;
33
+ }
34
+ export interface ReactiveGraphNode {
35
+ id: number;
36
+ kind: ReactiveNodeKind;
37
+ label?: string;
38
+ reads: number;
39
+ writes: number;
40
+ runs: number;
41
+ invalidations: number;
42
+ }
43
+ export interface ReactiveDependencyEdge {
44
+ sourceNodeId: number;
45
+ targetNodeId: number;
46
+ sourceKind: ReactiveNodeKind;
47
+ targetKind: ReactiveNodeKind;
48
+ sourceLabel?: string;
49
+ targetLabel?: string;
50
+ reads: number;
51
+ }
52
+ export interface ReactiveDiagnosticEvent {
53
+ seq: number;
54
+ kind: "signal:create" | "signal:read" | "signal:write" | "computed:create" | "computed:read" | "computed:run" | "effect:create" | "effect:run" | "resource:create" | "resource:load.start" | "resource:load.success" | "resource:load.error" | "resource:refetch" | "resource:mutate" | "resource:invalidate" | "mutation:create" | "mutation:start" | "mutation:success" | "mutation:error" | "mutation:settled" | "mutation:rollback" | "mutation:reset" | "invalidation";
55
+ nodeId: number;
56
+ label?: string;
57
+ relatedNodeId?: number;
58
+ relatedLabel?: string;
59
+ reason?: ReactiveInvalidationReason;
60
+ causeNodeIds?: number[];
61
+ causeLabels?: string[];
62
+ cacheKey?: string;
63
+ detail?: string;
64
+ }
65
+ export interface ReactiveTraceArtifact {
66
+ schemaVersion: typeof REACTIVE_TRACE_SCHEMA_VERSION;
67
+ snapshot: ReactiveDiagnosticsSnapshot;
68
+ nodes: ReactiveGraphNode[];
69
+ edges: ReactiveDependencyEdge[];
70
+ events: ReactiveDiagnosticEvent[];
71
+ }
72
+ export declare function configureReactiveDiagnostics(config?: ReactiveDiagnosticsConfig): void;
73
+ export declare function resetReactiveDiagnostics(): void;
74
+ export declare function getReactiveDiagnosticsSnapshot(): ReactiveDiagnosticsSnapshot;
75
+ export declare function getReactiveGraphNodes(): ReactiveGraphNode[];
76
+ export declare function getReactiveDependencyEdges(): ReactiveDependencyEdge[];
77
+ export declare function getReactiveDiagnosticsEvents(): ReactiveDiagnosticEvent[];
78
+ export declare function getReactiveTraceArtifact(): ReactiveTraceArtifact;
79
+ export declare function trackSignalCreated(label?: string): number | null;
80
+ export declare function trackSignalRead(nodeId?: number | null, label?: string): void;
81
+ export declare function trackSignalWrite(nodeId?: number | null, label?: string): void;
82
+ export declare function trackComputedCreated(label?: string): number | null;
83
+ export declare function trackComputedRead(nodeId?: number | null, label?: string): void;
84
+ export declare function trackEffectCreated(label?: string): number | null;
85
+ export declare function trackResourceCreated(label?: string, cacheKey?: string): number | null;
86
+ export declare function trackResourceLoadStart(nodeId?: number | null, label?: string, cacheKey?: string, detail?: string): void;
87
+ export declare function trackResourceLoadSuccess(nodeId?: number | null, label?: string, cacheKey?: string): void;
88
+ export declare function trackResourceLoadError(nodeId?: number | null, label?: string, cacheKey?: string, detail?: string): void;
89
+ export declare function trackResourceRefetch(nodeId?: number | null, label?: string, cacheKey?: string): void;
90
+ export declare function trackResourceMutate(nodeId?: number | null, label?: string, cacheKey?: string): void;
91
+ export declare function trackResourceInvalidation(cacheKey: string, reason: ReactiveInvalidationReason): void;
92
+ export declare function trackMutationCreated(label?: string): number | null;
93
+ export declare function trackMutationStart(nodeId?: number | null, label?: string): void;
94
+ export declare function trackMutationSuccess(nodeId?: number | null, label?: string): void;
95
+ export declare function trackMutationError(nodeId?: number | null, label?: string, detail?: string): void;
96
+ export declare function trackMutationSettled(nodeId?: number | null, label?: string): void;
97
+ export declare function trackMutationRollback(nodeId?: number | null, label?: string): void;
98
+ export declare function trackMutationReset(nodeId?: number | null, label?: string): void;
99
+ export declare function runTrackedComputation<T>(nodeId: number | null | undefined, kind: "computed" | "effect", label: string | undefined, fn: () => T): T;
100
+ export {};
@@ -0,0 +1,363 @@
1
+ export const REACTIVE_TRACE_SCHEMA_VERSION = 1;
2
+ let diagnosticsEnabled = !1, captureEvents = !1, maxEvents = 200, nextNodeId = 1, nextEventSeq = 1;
3
+ const snapshot = {
4
+ signalsCreated: 0,
5
+ signalReads: 0,
6
+ signalWrites: 0,
7
+ computedCreated: 0,
8
+ computedReads: 0,
9
+ computedRuns: 0,
10
+ effectCreated: 0,
11
+ effectRuns: 0,
12
+ resourcesCreated: 0,
13
+ resourceLoadsStarted: 0,
14
+ resourceLoadsSucceeded: 0,
15
+ resourceLoadsFailed: 0,
16
+ resourceInvalidations: 0,
17
+ resourceMutations: 0,
18
+ mutationsCreated: 0,
19
+ mutationRuns: 0,
20
+ mutationSuccesses: 0,
21
+ mutationFailures: 0,
22
+ mutationRollbacks: 0,
23
+ mutationResets: 0
24
+ }, nodes = new Map, edges = new Map, events = [], activeComputations = [], pendingInvalidations = new Map, resourceNodeIdsByKey = new Map;
25
+ export function configureReactiveDiagnostics(config = {}) {
26
+ diagnosticsEnabled = config.enabled === !0;
27
+ captureEvents = config.captureEvents === !0;
28
+ maxEvents = Math.max(1, config.maxEvents ?? 200);
29
+ }
30
+ export function resetReactiveDiagnostics() {
31
+ snapshot.signalsCreated = 0;
32
+ snapshot.signalReads = 0;
33
+ snapshot.signalWrites = 0;
34
+ snapshot.computedCreated = 0;
35
+ snapshot.computedReads = 0;
36
+ snapshot.computedRuns = 0;
37
+ snapshot.effectCreated = 0;
38
+ snapshot.effectRuns = 0;
39
+ snapshot.resourcesCreated = 0;
40
+ snapshot.resourceLoadsStarted = 0;
41
+ snapshot.resourceLoadsSucceeded = 0;
42
+ snapshot.resourceLoadsFailed = 0;
43
+ snapshot.resourceInvalidations = 0;
44
+ snapshot.resourceMutations = 0;
45
+ snapshot.mutationsCreated = 0;
46
+ snapshot.mutationRuns = 0;
47
+ snapshot.mutationSuccesses = 0;
48
+ snapshot.mutationFailures = 0;
49
+ snapshot.mutationRollbacks = 0;
50
+ snapshot.mutationResets = 0;
51
+ nextNodeId = 1;
52
+ nextEventSeq = 1;
53
+ nodes.clear();
54
+ edges.clear();
55
+ events.length = 0;
56
+ activeComputations.length = 0;
57
+ pendingInvalidations.clear();
58
+ resourceNodeIdsByKey.clear();
59
+ }
60
+ export function getReactiveDiagnosticsSnapshot() {
61
+ return { ...snapshot };
62
+ }
63
+ export function getReactiveGraphNodes() {
64
+ return Array.from(nodes.values()).map((node) => ({ ...node }));
65
+ }
66
+ export function getReactiveDependencyEdges() {
67
+ return Array.from(edges.values()).map((edge) => ({ ...edge }));
68
+ }
69
+ export function getReactiveDiagnosticsEvents() {
70
+ return events.map((event) => ({
71
+ ...event,
72
+ causeNodeIds: event.causeNodeIds ? [...event.causeNodeIds] : void 0,
73
+ causeLabels: event.causeLabels ? [...event.causeLabels] : void 0
74
+ }));
75
+ }
76
+ export function getReactiveTraceArtifact() {
77
+ return {
78
+ schemaVersion: REACTIVE_TRACE_SCHEMA_VERSION,
79
+ snapshot: getReactiveDiagnosticsSnapshot(),
80
+ nodes: getReactiveGraphNodes(),
81
+ edges: getReactiveDependencyEdges(),
82
+ events: getReactiveDiagnosticsEvents()
83
+ };
84
+ }
85
+ export function trackSignalCreated(label) {
86
+ if (!diagnosticsEnabled)
87
+ return null;
88
+ snapshot.signalsCreated++;
89
+ const nodeId = registerNode("signal", label);
90
+ pushEvent({ kind: "signal:create", nodeId, label });
91
+ return nodeId;
92
+ }
93
+ export function trackSignalRead(nodeId, label) {
94
+ if (!diagnosticsEnabled)
95
+ return;
96
+ snapshot.signalReads++;
97
+ updateNode(nodeId, (node) => {
98
+ node.reads++;
99
+ });
100
+ if (nodeId != null) {
101
+ registerDependency(nodeId, label);
102
+ pushEvent({ kind: "signal:read", nodeId, label });
103
+ }
104
+ }
105
+ export function trackSignalWrite(nodeId, label) {
106
+ if (!diagnosticsEnabled)
107
+ return;
108
+ snapshot.signalWrites++;
109
+ updateNode(nodeId, (node) => {
110
+ node.writes++;
111
+ });
112
+ if (nodeId != null) {
113
+ pushEvent({ kind: "signal:write", nodeId, label });
114
+ propagateInvalidation(nodeId, label, "write");
115
+ }
116
+ }
117
+ export function trackComputedCreated(label) {
118
+ if (!diagnosticsEnabled)
119
+ return null;
120
+ snapshot.computedCreated++;
121
+ const nodeId = registerNode("computed", label);
122
+ pushEvent({ kind: "computed:create", nodeId, label });
123
+ return nodeId;
124
+ }
125
+ export function trackComputedRead(nodeId, label) {
126
+ if (!diagnosticsEnabled)
127
+ return;
128
+ snapshot.computedReads++;
129
+ updateNode(nodeId, (node) => {
130
+ node.reads++;
131
+ });
132
+ if (nodeId != null) {
133
+ registerDependency(nodeId, label);
134
+ pushEvent({ kind: "computed:read", nodeId, label });
135
+ }
136
+ }
137
+ export function trackEffectCreated(label) {
138
+ if (!diagnosticsEnabled)
139
+ return null;
140
+ snapshot.effectCreated++;
141
+ const nodeId = registerNode("effect", label);
142
+ pushEvent({ kind: "effect:create", nodeId, label });
143
+ return nodeId;
144
+ }
145
+ export function trackResourceCreated(label, cacheKey) {
146
+ if (!diagnosticsEnabled)
147
+ return null;
148
+ snapshot.resourcesCreated++;
149
+ const nodeId = registerNode("resource", label);
150
+ if (cacheKey) {
151
+ const existing = resourceNodeIdsByKey.get(cacheKey) ?? new Set;
152
+ existing.add(nodeId);
153
+ resourceNodeIdsByKey.set(cacheKey, existing);
154
+ }
155
+ pushEvent({ kind: "resource:create", nodeId, label, cacheKey });
156
+ return nodeId;
157
+ }
158
+ export function trackResourceLoadStart(nodeId, label, cacheKey, detail) {
159
+ if (!diagnosticsEnabled || nodeId == null)
160
+ return;
161
+ snapshot.resourceLoadsStarted++;
162
+ updateNode(nodeId, (node) => {
163
+ node.runs++;
164
+ });
165
+ pushEvent({ kind: "resource:load.start", nodeId, label, cacheKey, detail });
166
+ }
167
+ export function trackResourceLoadSuccess(nodeId, label, cacheKey) {
168
+ if (!diagnosticsEnabled || nodeId == null)
169
+ return;
170
+ snapshot.resourceLoadsSucceeded++;
171
+ pushEvent({ kind: "resource:load.success", nodeId, label, cacheKey });
172
+ }
173
+ export function trackResourceLoadError(nodeId, label, cacheKey, detail) {
174
+ if (!diagnosticsEnabled || nodeId == null)
175
+ return;
176
+ snapshot.resourceLoadsFailed++;
177
+ pushEvent({ kind: "resource:load.error", nodeId, label, cacheKey, detail });
178
+ }
179
+ export function trackResourceRefetch(nodeId, label, cacheKey) {
180
+ if (!diagnosticsEnabled || nodeId == null)
181
+ return;
182
+ pushEvent({ kind: "resource:refetch", nodeId, label, cacheKey });
183
+ }
184
+ export function trackResourceMutate(nodeId, label, cacheKey) {
185
+ if (!diagnosticsEnabled || nodeId == null)
186
+ return;
187
+ snapshot.resourceMutations++;
188
+ updateNode(nodeId, (node) => {
189
+ node.writes++;
190
+ });
191
+ pushEvent({ kind: "resource:mutate", nodeId, label, cacheKey });
192
+ }
193
+ export function trackResourceInvalidation(cacheKey, reason) {
194
+ if (!diagnosticsEnabled)
195
+ return;
196
+ const nodeIds = resourceNodeIdsByKey.get(cacheKey);
197
+ if (!nodeIds || nodeIds.size === 0)
198
+ return;
199
+ for (const nodeId of nodeIds) {
200
+ snapshot.resourceInvalidations++;
201
+ updateNode(nodeId, (node) => {
202
+ node.invalidations++;
203
+ });
204
+ const label = nodes.get(nodeId)?.label;
205
+ pushEvent({ kind: "resource:invalidate", nodeId, label, cacheKey, reason });
206
+ propagateInvalidation(nodeId, label, reason);
207
+ }
208
+ }
209
+ export function trackMutationCreated(label) {
210
+ if (!diagnosticsEnabled)
211
+ return null;
212
+ snapshot.mutationsCreated++;
213
+ const nodeId = registerNode("mutation", label);
214
+ pushEvent({ kind: "mutation:create", nodeId, label });
215
+ return nodeId;
216
+ }
217
+ export function trackMutationStart(nodeId, label) {
218
+ if (!diagnosticsEnabled || nodeId == null)
219
+ return;
220
+ snapshot.mutationRuns++;
221
+ updateNode(nodeId, (node) => {
222
+ node.runs++;
223
+ });
224
+ pushEvent({ kind: "mutation:start", nodeId, label });
225
+ }
226
+ export function trackMutationSuccess(nodeId, label) {
227
+ if (!diagnosticsEnabled || nodeId == null)
228
+ return;
229
+ snapshot.mutationSuccesses++;
230
+ pushEvent({ kind: "mutation:success", nodeId, label });
231
+ }
232
+ export function trackMutationError(nodeId, label, detail) {
233
+ if (!diagnosticsEnabled || nodeId == null)
234
+ return;
235
+ snapshot.mutationFailures++;
236
+ pushEvent({ kind: "mutation:error", nodeId, label, detail });
237
+ }
238
+ export function trackMutationSettled(nodeId, label) {
239
+ if (!diagnosticsEnabled || nodeId == null)
240
+ return;
241
+ pushEvent({ kind: "mutation:settled", nodeId, label });
242
+ }
243
+ export function trackMutationRollback(nodeId, label) {
244
+ if (!diagnosticsEnabled || nodeId == null)
245
+ return;
246
+ snapshot.mutationRollbacks++;
247
+ pushEvent({ kind: "mutation:rollback", nodeId, label });
248
+ }
249
+ export function trackMutationReset(nodeId, label) {
250
+ if (!diagnosticsEnabled || nodeId == null)
251
+ return;
252
+ snapshot.mutationResets++;
253
+ pushEvent({ kind: "mutation:reset", nodeId, label });
254
+ }
255
+ export function runTrackedComputation(nodeId, kind, label, fn) {
256
+ if (!diagnosticsEnabled || nodeId == null)
257
+ return fn();
258
+ const causes = consumeInvalidationCauses(nodeId);
259
+ if (kind === "computed")
260
+ snapshot.computedRuns++;
261
+ if (kind === "effect")
262
+ snapshot.effectRuns++;
263
+ updateNode(nodeId, (node) => {
264
+ node.runs++;
265
+ });
266
+ pushEvent({
267
+ kind: kind === "computed" ? "computed:run" : "effect:run",
268
+ nodeId,
269
+ label,
270
+ causeNodeIds: causes.map((cause) => cause.sourceNodeId),
271
+ causeLabels: causes.map((cause) => cause.sourceLabel).filter((value) => Boolean(value))
272
+ });
273
+ activeComputations.push({ nodeId, kind, label });
274
+ try {
275
+ return fn();
276
+ } finally {
277
+ activeComputations.pop();
278
+ }
279
+ }
280
+ function registerNode(kind, label) {
281
+ const id = nextNodeId++;
282
+ nodes.set(id, {
283
+ id,
284
+ kind,
285
+ label,
286
+ reads: 0,
287
+ writes: 0,
288
+ runs: 0,
289
+ invalidations: 0
290
+ });
291
+ return id;
292
+ }
293
+ function updateNode(nodeId, update) {
294
+ if (nodeId == null)
295
+ return;
296
+ const node = nodes.get(nodeId);
297
+ if (!node)
298
+ return;
299
+ update(node);
300
+ }
301
+ function registerDependency(sourceNodeId, sourceLabel) {
302
+ const active = activeComputations[activeComputations.length - 1];
303
+ if (!active)
304
+ return;
305
+ if (active.nodeId === sourceNodeId)
306
+ return;
307
+ const sourceNode = nodes.get(sourceNodeId), targetNode = nodes.get(active.nodeId);
308
+ if (!sourceNode || !targetNode)
309
+ return;
310
+ const key = `${sourceNodeId}->${active.nodeId}`, existing = edges.get(key);
311
+ if (existing) {
312
+ existing.reads++;
313
+ return;
314
+ }
315
+ edges.set(key, {
316
+ sourceNodeId,
317
+ targetNodeId: active.nodeId,
318
+ sourceKind: sourceNode.kind,
319
+ targetKind: targetNode.kind,
320
+ sourceLabel: sourceNode.label ?? sourceLabel,
321
+ targetLabel: targetNode.label ?? active.label,
322
+ reads: 1
323
+ });
324
+ }
325
+ function propagateInvalidation(sourceNodeId, sourceLabel, reason) {
326
+ for (const edge of edges.values()) {
327
+ if (edge.sourceNodeId !== sourceNodeId)
328
+ continue;
329
+ updateNode(edge.targetNodeId, (node) => {
330
+ node.invalidations++;
331
+ });
332
+ const pending = pendingInvalidations.get(edge.targetNodeId) ?? [];
333
+ if (!pending.some((cause) => cause.sourceNodeId === sourceNodeId && cause.reason === reason)) {
334
+ pending.push({ sourceNodeId, sourceLabel, reason });
335
+ pendingInvalidations.set(edge.targetNodeId, pending);
336
+ }
337
+ pushEvent({
338
+ kind: "invalidation",
339
+ nodeId: edge.targetNodeId,
340
+ label: edge.targetLabel,
341
+ relatedNodeId: sourceNodeId,
342
+ relatedLabel: sourceLabel,
343
+ reason,
344
+ causeNodeIds: [sourceNodeId],
345
+ causeLabels: sourceLabel ? [sourceLabel] : void 0
346
+ });
347
+ }
348
+ }
349
+ function consumeInvalidationCauses(nodeId) {
350
+ const causes = pendingInvalidations.get(nodeId) ?? [];
351
+ pendingInvalidations.delete(nodeId);
352
+ return causes;
353
+ }
354
+ function pushEvent(event) {
355
+ if (!captureEvents)
356
+ return;
357
+ events.push({
358
+ ...event,
359
+ seq: nextEventSeq++
360
+ });
361
+ if (events.length > maxEvents)
362
+ events.splice(0, events.length - maxEvents);
363
+ }
@@ -0,0 +1,3 @@
1
+ import { type ReactiveDiagnosticOptions } from "./diagnostics.js";
2
+ export type CleanupFn = () => void;
3
+ export declare function createEffect(fn: () => void, options?: ReactiveDiagnosticOptions): CleanupFn;
@@ -0,0 +1,6 @@
1
+ import { effect as alienEffect } from "alien-signals";
2
+ import { runTrackedComputation, trackEffectCreated } from "./diagnostics.js";
3
+ export function createEffect(fn, options = {}) {
4
+ const nodeId = trackEffectCreated(options.label);
5
+ return alienEffect(() => runTrackedComputation(nodeId, "effect", options.label, fn));
6
+ }
@@ -0,0 +1,9 @@
1
+ export { createSignal } from "./signal.js";
2
+ export { createComputed } from "./computed.js";
3
+ export { createEffect } from "./effect.js";
4
+ export { configureReactiveDiagnostics, getReactiveDependencyEdges, getReactiveDiagnosticsEvents, getReactiveDiagnosticsSnapshot, getReactiveGraphNodes, getReactiveTraceArtifact, REACTIVE_TRACE_SCHEMA_VERSION, resetReactiveDiagnostics, type ReactiveDiagnosticsConfig, type ReactiveDiagnosticEvent, type ReactiveDiagnosticOptions, type ReactiveDependencyEdge, type ReactiveDiagnosticsSnapshot, type ReactiveGraphNode, type ReactiveTraceArtifact, } from "./diagnostics.js";
5
+ export { createResource, invalidateResource, invalidateAll } from "./resource.js";
6
+ export { createDataQuery, createDataMutation, type DataQuery, type DataQueryOptions, type DataMutation, type DataMutationOptions } from "./data.js";
7
+ export { createStore } from "./store.js";
8
+ export { createLive, type LiveOptions, type LiveSignal } from "./live.js";
9
+ export { createMutation, type Mutation, type MutationState, type MutationOptions } from "./optimistic.js";
@@ -0,0 +1,18 @@
1
+ export { createSignal } from "./signal.js";
2
+ export { createComputed } from "./computed.js";
3
+ export { createEffect } from "./effect.js";
4
+ export {
5
+ configureReactiveDiagnostics,
6
+ getReactiveDependencyEdges,
7
+ getReactiveDiagnosticsEvents,
8
+ getReactiveDiagnosticsSnapshot,
9
+ getReactiveGraphNodes,
10
+ getReactiveTraceArtifact,
11
+ REACTIVE_TRACE_SCHEMA_VERSION,
12
+ resetReactiveDiagnostics
13
+ } from "./diagnostics.js";
14
+ export { createResource, invalidateResource, invalidateAll } from "./resource.js";
15
+ export { createDataQuery, createDataMutation } from "./data.js";
16
+ export { createStore } from "./store.js";
17
+ export { createLive } from "./live.js";
18
+ export { createMutation } from "./optimistic.js";
@@ -0,0 +1,15 @@
1
+ import { type SignalGetter } from "./signal.js";
2
+ export interface LiveOptions<T> {
3
+ url: string;
4
+ initialValue: T;
5
+ transform?: (data: unknown) => T;
6
+ reconnect?: boolean;
7
+ reconnectDelay?: number;
8
+ }
9
+ export interface LiveSignal<T> {
10
+ readonly value: SignalGetter<T>;
11
+ readonly connected: SignalGetter<boolean>;
12
+ send: (data: unknown) => void;
13
+ close: () => void;
14
+ }
15
+ export declare function createLive<T>(options: LiveOptions<T>): LiveSignal<T>;
@@ -0,0 +1,70 @@
1
+ import { createSignal } from "./signal.js";
2
+ export function createLive(options) {
3
+ const {
4
+ url,
5
+ initialValue,
6
+ transform,
7
+ reconnect = !0,
8
+ reconnectDelay = 1000
9
+ } = options, [value, setValue] = createSignal(initialValue), [connected, setConnected] = createSignal(!1);
10
+ let ws = null, closed = !1, retryCount = 0, reconnectScheduled = !1, reconnectToken = 0;
11
+ function handleMessage(event) {
12
+ try {
13
+ const parsed = JSON.parse(String(event.data)), result = transform ? transform(parsed) : parsed;
14
+ setValue(result);
15
+ } catch {}
16
+ }
17
+ function handleOpen() {
18
+ retryCount = 0;
19
+ reconnectScheduled = !1;
20
+ reconnectToken++;
21
+ setConnected(!0);
22
+ }
23
+ function handleClose() {
24
+ setConnected(!1);
25
+ ws = null;
26
+ if (!closed && reconnect)
27
+ scheduleReconnect();
28
+ }
29
+ function scheduleReconnect() {
30
+ if (reconnectScheduled || closed)
31
+ return;
32
+ reconnectScheduled = !0;
33
+ const token = ++reconnectToken, delay = Math.min(reconnectDelay * 2 ** retryCount, 30000);
34
+ retryCount++;
35
+ setTimeout(() => {
36
+ if (closed || !reconnectScheduled || token !== reconnectToken)
37
+ return;
38
+ reconnectScheduled = !1;
39
+ connect();
40
+ }, delay);
41
+ }
42
+ function connect() {
43
+ if (closed)
44
+ return;
45
+ if (typeof globalThis.WebSocket > "u")
46
+ return;
47
+ ws = new WebSocket(url);
48
+ ws.addEventListener("open", handleOpen);
49
+ ws.addEventListener("message", handleMessage);
50
+ ws.addEventListener("close", handleClose);
51
+ ws.addEventListener("error", () => {});
52
+ }
53
+ function send(data) {
54
+ if (ws && ws.readyState === WebSocket.OPEN)
55
+ ws.send(JSON.stringify(data));
56
+ }
57
+ function close() {
58
+ closed = !0;
59
+ reconnectScheduled = !1;
60
+ reconnectToken++;
61
+ if (ws) {
62
+ ws.close();
63
+ ws = null;
64
+ }
65
+ setConnected(!1);
66
+ }
67
+ if (typeof globalThis.WebSocket < "u")
68
+ connect();
69
+ return { value, connected, send, close };
70
+ }
@@ -0,0 +1,20 @@
1
+ import { type SignalGetter } from "./signal.js";
2
+ export interface MutationOptions<T, V> {
3
+ mutationFn: (variables: V) => Promise<T>;
4
+ onSuccess?: (data: T, variables: V) => void;
5
+ onError?: (error: Error, variables: V) => void;
6
+ onSettled?: (data: T | undefined, error: Error | undefined) => void;
7
+ label?: string;
8
+ }
9
+ export interface MutationState<T> {
10
+ readonly data: SignalGetter<T | undefined>;
11
+ readonly error: SignalGetter<Error | undefined>;
12
+ readonly isPending: SignalGetter<boolean>;
13
+ }
14
+ export interface Mutation<T, V> extends MutationState<T> {
15
+ mutate: (variables: V) => Promise<T>;
16
+ /** Optimistic: update signal immediately, rollback if server fails */
17
+ optimistic: <S>(signal: SignalGetter<S>, setter: (current: S) => void, update: (current: S, variables: V) => S, variables: V) => Promise<T>;
18
+ reset: () => void;
19
+ }
20
+ export declare function createMutation<T, V = void>(options: MutationOptions<T, V>): Mutation<T, V>;
@@ -0,0 +1,67 @@
1
+ import { createSignal } from "./signal.js";
2
+ import {
3
+ trackMutationCreated,
4
+ trackMutationError,
5
+ trackMutationReset,
6
+ trackMutationRollback,
7
+ trackMutationSettled,
8
+ trackMutationStart,
9
+ trackMutationSuccess
10
+ } from "./diagnostics.js";
11
+ export function createMutation(options) {
12
+ const mutationNodeId = trackMutationCreated(options.label), [data, setData] = createSignal(void 0), [error, setError] = createSignal(void 0), [isPending, setIsPending] = createSignal(!1);
13
+ let pendingCount = 0, mutationEpoch = 0;
14
+ async function mutate(variables) {
15
+ const epoch = mutationEpoch;
16
+ trackMutationStart(mutationNodeId, options.label);
17
+ pendingCount++;
18
+ setIsPending(!0);
19
+ setError(void 0);
20
+ try {
21
+ const result = await options.mutationFn(variables);
22
+ if (epoch !== mutationEpoch)
23
+ return result;
24
+ setData(result);
25
+ trackMutationSuccess(mutationNodeId, options.label);
26
+ options.onSuccess?.(result, variables);
27
+ options.onSettled?.(result, void 0);
28
+ return result;
29
+ } catch (err) {
30
+ const e = err instanceof Error ? err : Error(String(err));
31
+ if (epoch !== mutationEpoch)
32
+ throw e;
33
+ setError(e);
34
+ trackMutationError(mutationNodeId, options.label, e.message);
35
+ options.onError?.(e, variables);
36
+ options.onSettled?.(void 0, e);
37
+ throw e;
38
+ } finally {
39
+ trackMutationSettled(mutationNodeId, options.label);
40
+ if (epoch === mutationEpoch) {
41
+ pendingCount = Math.max(0, pendingCount - 1);
42
+ setIsPending(pendingCount > 0);
43
+ }
44
+ }
45
+ }
46
+ async function optimistic(signal, setter, update, variables) {
47
+ const previous = signal(), optimisticValue = update(previous, variables);
48
+ setter(optimisticValue);
49
+ try {
50
+ return await mutate(variables);
51
+ } catch (err) {
52
+ if (Object.is(signal(), optimisticValue))
53
+ setter(previous);
54
+ trackMutationRollback(mutationNodeId, options.label);
55
+ throw err;
56
+ }
57
+ }
58
+ function reset() {
59
+ trackMutationReset(mutationNodeId, options.label);
60
+ mutationEpoch++;
61
+ pendingCount = 0;
62
+ setData(void 0);
63
+ setError(void 0);
64
+ setIsPending(!1);
65
+ }
66
+ return { data, error, isPending, mutate, optimistic, reset };
67
+ }