@timber-js/app 0.2.0-alpha.13 → 0.2.0-alpha.131

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 (785) hide show
  1. package/LICENSE +8 -0
  2. package/dist/_chunks/actions-BNhpxrnV.js +1104 -0
  3. package/dist/_chunks/actions-BNhpxrnV.js.map +1 -0
  4. package/dist/_chunks/build-output-helper-K7oUCRqU.js +102 -0
  5. package/dist/_chunks/build-output-helper-K7oUCRqU.js.map +1 -0
  6. package/dist/_chunks/cli-schema-sync-CObqjGWF.js +2 -0
  7. package/dist/_chunks/cli-schema-sync-q-Ce6-iG.js +785 -0
  8. package/dist/_chunks/cli-schema-sync-q-Ce6-iG.js.map +1 -0
  9. package/dist/_chunks/codec-registry-DqkeAydt.js +21 -0
  10. package/dist/_chunks/codec-registry-DqkeAydt.js.map +1 -0
  11. package/dist/_chunks/define-DMq-Yjp7.js +112 -0
  12. package/dist/_chunks/define-DMq-Yjp7.js.map +1 -0
  13. package/dist/_chunks/define-jeHDXZGq.js +195 -0
  14. package/dist/_chunks/define-jeHDXZGq.js.map +1 -0
  15. package/dist/_chunks/format-BjN9HLu9.js +14 -0
  16. package/dist/_chunks/format-BjN9HLu9.js.map +1 -0
  17. package/dist/_chunks/handler-store-bIAstrxQ.js +54 -0
  18. package/dist/_chunks/handler-store-bIAstrxQ.js.map +1 -0
  19. package/dist/_chunks/logger-CMd9P1xQ.js +291 -0
  20. package/dist/_chunks/logger-CMd9P1xQ.js.map +1 -0
  21. package/dist/_chunks/merge-search-params-Cm1j99HC.js +41 -0
  22. package/dist/_chunks/merge-search-params-Cm1j99HC.js.map +1 -0
  23. package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js → metadata-routes-DESG8uk5.js} +32 -19
  24. package/dist/_chunks/metadata-routes-DESG8uk5.js.map +1 -0
  25. package/dist/_chunks/navigation-root-B5-RmsPi.js +103 -0
  26. package/dist/_chunks/navigation-root-B5-RmsPi.js.map +1 -0
  27. package/dist/_chunks/registry-BI9cgCt7.js +20 -0
  28. package/dist/_chunks/registry-BI9cgCt7.js.map +1 -0
  29. package/dist/_chunks/resolve-schema-DU2nbVOi.js +77 -0
  30. package/dist/_chunks/resolve-schema-DU2nbVOi.js.map +1 -0
  31. package/dist/_chunks/router-ref-B2-2kIIC.js +28 -0
  32. package/dist/_chunks/router-ref-B2-2kIIC.js.map +1 -0
  33. package/dist/_chunks/schema-bridge-o0SwFtXW.js +86 -0
  34. package/dist/_chunks/schema-bridge-o0SwFtXW.js.map +1 -0
  35. package/dist/_chunks/segment-classify-BjfuctV2.js +137 -0
  36. package/dist/_chunks/segment-classify-BjfuctV2.js.map +1 -0
  37. package/dist/_chunks/segment-context-Bg0pFbLT.js +34 -0
  38. package/dist/_chunks/segment-context-Bg0pFbLT.js.map +1 -0
  39. package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-DVX8S7vj.js} +1 -1
  40. package/dist/_chunks/ssr-data-DVX8S7vj.js.map +1 -0
  41. package/dist/_chunks/stale-reload-CCqb62Z3.js +84 -0
  42. package/dist/_chunks/stale-reload-CCqb62Z3.js.map +1 -0
  43. package/dist/_chunks/tracing-DP5djRq5.js +358 -0
  44. package/dist/_chunks/tracing-DP5djRq5.js.map +1 -0
  45. package/dist/_chunks/{use-query-states-D5KaffOK.js → use-query-states-C9G6LP0F.js} +7 -20
  46. package/dist/_chunks/use-query-states-C9G6LP0F.js.map +1 -0
  47. package/dist/_chunks/use-segment-params-CIeinIx2.js +151 -0
  48. package/dist/_chunks/use-segment-params-CIeinIx2.js.map +1 -0
  49. package/dist/_chunks/validation-AfEFM5ze.js +84 -0
  50. package/dist/_chunks/validation-AfEFM5ze.js.map +1 -0
  51. package/dist/_chunks/walkers-BbEu2_Pp.js +724 -0
  52. package/dist/_chunks/walkers-BbEu2_Pp.js.map +1 -0
  53. package/dist/_chunks/{format-DviM89f0.js → warnings-CAzunaGo.js} +6 -45
  54. package/dist/_chunks/warnings-CAzunaGo.js.map +1 -0
  55. package/dist/adapters/build-output-helper.d.ts +28 -0
  56. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  57. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  58. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  59. package/dist/adapters/cloudflare-dev.js +73 -0
  60. package/dist/adapters/cloudflare-dev.js.map +1 -0
  61. package/dist/adapters/cloudflare-kv-cache.d.ts +64 -0
  62. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  63. package/dist/adapters/cloudflare-kv-cache.js +95 -0
  64. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  65. package/dist/adapters/cloudflare.d.ts +148 -12
  66. package/dist/adapters/cloudflare.d.ts.map +1 -1
  67. package/dist/adapters/cloudflare.js +142 -38
  68. package/dist/adapters/cloudflare.js.map +1 -1
  69. package/dist/adapters/compress-module.d.ts.map +1 -1
  70. package/dist/adapters/nitro.d.ts +17 -1
  71. package/dist/adapters/nitro.d.ts.map +1 -1
  72. package/dist/adapters/nitro.js +143 -45
  73. package/dist/adapters/nitro.js.map +1 -1
  74. package/dist/adapters/shared.d.ts +16 -0
  75. package/dist/adapters/shared.d.ts.map +1 -0
  76. package/dist/cache/cache-api.d.ts +24 -0
  77. package/dist/cache/cache-api.d.ts.map +1 -0
  78. package/dist/cache/handler-store.d.ts +31 -0
  79. package/dist/cache/handler-store.d.ts.map +1 -0
  80. package/dist/cache/index.d.ts +23 -7
  81. package/dist/cache/index.d.ts.map +1 -1
  82. package/dist/cache/index.js +151 -81
  83. package/dist/cache/index.js.map +1 -1
  84. package/dist/cache/singleflight.d.ts +18 -1
  85. package/dist/cache/singleflight.d.ts.map +1 -1
  86. package/dist/cache/sizeof.d.ts +22 -0
  87. package/dist/cache/sizeof.d.ts.map +1 -0
  88. package/dist/cache/timber-cache.d.ts +1 -1
  89. package/dist/cache/timber-cache.d.ts.map +1 -1
  90. package/dist/cli-schema-sync.d.ts +39 -0
  91. package/dist/cli-schema-sync.d.ts.map +1 -0
  92. package/dist/cli.d.ts +14 -2
  93. package/dist/cli.d.ts.map +1 -1
  94. package/dist/cli.js +48 -6
  95. package/dist/cli.js.map +1 -1
  96. package/dist/client/browser-dev.d.ts +34 -1
  97. package/dist/client/browser-dev.d.ts.map +1 -1
  98. package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
  99. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  100. package/dist/client/browser-entry/hmr.d.ts +21 -0
  101. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  102. package/dist/client/browser-entry/hydrate.d.ts +46 -0
  103. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  104. package/dist/client/browser-entry/index.d.ts +30 -0
  105. package/dist/client/browser-entry/index.d.ts.map +1 -0
  106. package/dist/client/browser-entry/post-hydration.d.ts +26 -0
  107. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  108. package/dist/client/browser-entry/router-init.d.ts +26 -0
  109. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  110. package/dist/client/browser-entry/rsc-stream.d.ts +24 -0
  111. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  112. package/dist/client/browser-entry/scroll.d.ts +19 -0
  113. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  114. package/dist/client/error-boundary.d.ts +12 -5
  115. package/dist/client/error-boundary.d.ts.map +1 -1
  116. package/dist/client/error-boundary.js +29 -6
  117. package/dist/client/error-boundary.js.map +1 -1
  118. package/dist/client/error-reconstituter.d.ts +54 -0
  119. package/dist/client/error-reconstituter.d.ts.map +1 -0
  120. package/dist/client/form.d.ts +16 -27
  121. package/dist/client/form.d.ts.map +1 -1
  122. package/dist/client/history.d.ts +19 -4
  123. package/dist/client/history.d.ts.map +1 -1
  124. package/dist/client/index.d.ts +10 -24
  125. package/dist/client/index.d.ts.map +1 -1
  126. package/dist/client/index.js +180 -1119
  127. package/dist/client/index.js.map +1 -1
  128. package/dist/client/internal.d.ts +19 -0
  129. package/dist/client/internal.d.ts.map +1 -0
  130. package/dist/client/internal.js +845 -0
  131. package/dist/client/internal.js.map +1 -0
  132. package/dist/client/link-pending-store.d.ts +65 -0
  133. package/dist/client/link-pending-store.d.ts.map +1 -0
  134. package/dist/client/link.d.ts +67 -56
  135. package/dist/client/link.d.ts.map +1 -1
  136. package/dist/client/nav-link-store.d.ts +27 -0
  137. package/dist/client/nav-link-store.d.ts.map +1 -0
  138. package/dist/client/navigation-api-types.d.ts +90 -0
  139. package/dist/client/navigation-api-types.d.ts.map +1 -0
  140. package/dist/client/navigation-api.d.ts +115 -0
  141. package/dist/client/navigation-api.d.ts.map +1 -0
  142. package/dist/client/navigation-context.d.ts +14 -2
  143. package/dist/client/navigation-context.d.ts.map +1 -1
  144. package/dist/client/{transition-root.d.ts → navigation-root.d.ts} +46 -9
  145. package/dist/client/navigation-root.d.ts.map +1 -0
  146. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  147. package/dist/client/router-ref.d.ts +1 -1
  148. package/dist/client/router.d.ts +79 -10
  149. package/dist/client/router.d.ts.map +1 -1
  150. package/dist/client/rsc-fetch.d.ts +46 -3
  151. package/dist/client/rsc-fetch.d.ts.map +1 -1
  152. package/dist/client/segment-cache.d.ts +3 -1
  153. package/dist/client/segment-cache.d.ts.map +1 -1
  154. package/dist/client/segment-outlet.d.ts +49 -0
  155. package/dist/client/segment-outlet.d.ts.map +1 -0
  156. package/dist/client/segment-update-context.d.ts +21 -0
  157. package/dist/client/segment-update-context.d.ts.map +1 -0
  158. package/dist/client/shallow-url.d.ts +10 -0
  159. package/dist/client/shallow-url.d.ts.map +1 -0
  160. package/dist/client/ssr-data.d.ts +13 -4
  161. package/dist/client/ssr-data.d.ts.map +1 -1
  162. package/dist/client/stale-reload.d.ts +15 -0
  163. package/dist/client/stale-reload.d.ts.map +1 -1
  164. package/dist/client/state.d.ts +1 -1
  165. package/dist/client/top-loader.d.ts +5 -5
  166. package/dist/client/top-loader.d.ts.map +1 -1
  167. package/dist/client/use-cookie.d.ts +12 -0
  168. package/dist/client/use-cookie.d.ts.map +1 -1
  169. package/dist/client/use-link-status.d.ts +5 -5
  170. package/dist/client/use-link-status.d.ts.map +1 -1
  171. package/dist/client/use-pending-navigation.d.ts +23 -0
  172. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  173. package/dist/client/use-query-states.d.ts +1 -1
  174. package/dist/client/use-query-states.d.ts.map +1 -1
  175. package/dist/client/use-router.d.ts +1 -1
  176. package/dist/client/use-search-params.d.ts +7 -5
  177. package/dist/client/use-search-params.d.ts.map +1 -1
  178. package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +8 -6
  179. package/dist/client/use-segment-params.d.ts.map +1 -0
  180. package/dist/codec.d.ts +69 -0
  181. package/dist/codec.d.ts.map +1 -0
  182. package/dist/codec.js +75 -0
  183. package/dist/codec.js.map +1 -0
  184. package/dist/config-types.d.ts +294 -0
  185. package/dist/config-types.d.ts.map +1 -0
  186. package/dist/config-validation.d.ts +51 -0
  187. package/dist/config-validation.d.ts.map +1 -0
  188. package/dist/content/index.d.ts +1 -10
  189. package/dist/content/index.d.ts.map +1 -1
  190. package/dist/content/index.js +0 -2
  191. package/dist/cookies/define-cookie.d.ts +58 -25
  192. package/dist/cookies/define-cookie.d.ts.map +1 -1
  193. package/dist/cookies/index.d.ts +2 -1
  194. package/dist/cookies/index.d.ts.map +1 -1
  195. package/dist/cookies/index.js +251 -36
  196. package/dist/cookies/index.js.map +1 -1
  197. package/dist/cookies/json-cookie.d.ts +64 -0
  198. package/dist/cookies/json-cookie.d.ts.map +1 -0
  199. package/dist/cookies/validation.d.ts +46 -0
  200. package/dist/cookies/validation.d.ts.map +1 -0
  201. package/dist/dev-tools/404-page.d.ts +46 -0
  202. package/dist/dev-tools/404-page.d.ts.map +1 -0
  203. package/dist/dev-tools/browser-logs.d.ts +84 -0
  204. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  205. package/dist/dev-tools/error-page.d.ts +58 -0
  206. package/dist/dev-tools/error-page.d.ts.map +1 -0
  207. package/dist/dev-tools/holding-server.d.ts +54 -0
  208. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  209. package/dist/dev-tools/index.d.ts +31 -0
  210. package/dist/dev-tools/index.d.ts.map +1 -0
  211. package/dist/{server/dev-span-processor.d.ts → dev-tools/instrumentation.d.ts} +26 -6
  212. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  213. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  214. package/dist/dev-tools/logger.d.ts.map +1 -0
  215. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +2 -2
  216. package/dist/dev-tools/logs.d.ts.map +1 -0
  217. package/dist/dev-tools/overlay.d.ts +91 -0
  218. package/dist/dev-tools/overlay.d.ts.map +1 -0
  219. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  220. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  221. package/dist/dev-tools/terminal.d.ts +28 -0
  222. package/dist/dev-tools/terminal.d.ts.map +1 -0
  223. package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +2 -22
  224. package/dist/dev-tools/warnings.d.ts.map +1 -0
  225. package/dist/fonts/ast.d.ts +98 -6
  226. package/dist/fonts/ast.d.ts.map +1 -1
  227. package/dist/fonts/bundle.d.ts +48 -0
  228. package/dist/fonts/bundle.d.ts.map +1 -0
  229. package/dist/fonts/dev-middleware.d.ts +22 -0
  230. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  231. package/dist/fonts/local.d.ts +1 -1
  232. package/dist/fonts/pipeline.d.ts +167 -0
  233. package/dist/fonts/pipeline.d.ts.map +1 -0
  234. package/dist/fonts/transform.d.ts +78 -0
  235. package/dist/fonts/transform.d.ts.map +1 -0
  236. package/dist/fonts/types.d.ts +45 -1
  237. package/dist/fonts/types.d.ts.map +1 -1
  238. package/dist/fonts/virtual-modules.d.ts +94 -0
  239. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  240. package/dist/index.d.ts +46 -164
  241. package/dist/index.d.ts.map +1 -1
  242. package/dist/index.js +5584 -13386
  243. package/dist/index.js.map +1 -1
  244. package/dist/params/codec-registry.d.ts +26 -0
  245. package/dist/params/codec-registry.d.ts.map +1 -0
  246. package/dist/params/define-schema.d.ts +81 -0
  247. package/dist/params/define-schema.d.ts.map +1 -0
  248. package/dist/params/index.d.ts +5 -0
  249. package/dist/params/index.d.ts.map +1 -0
  250. package/dist/params/index.js +34 -0
  251. package/dist/params/index.js.map +1 -0
  252. package/dist/params/resolve-schema.d.ts +34 -0
  253. package/dist/params/resolve-schema.d.ts.map +1 -0
  254. package/dist/plugin-context.d.ts +107 -0
  255. package/dist/plugin-context.d.ts.map +1 -0
  256. package/dist/plugins/adapter-build.d.ts +1 -1
  257. package/dist/plugins/adapter-build.d.ts.map +1 -1
  258. package/dist/plugins/build-manifest.d.ts +2 -2
  259. package/dist/plugins/build-manifest.d.ts.map +1 -1
  260. package/dist/plugins/build-report.d.ts +9 -7
  261. package/dist/plugins/build-report.d.ts.map +1 -1
  262. package/dist/plugins/client-chunks.d.ts +32 -0
  263. package/dist/plugins/client-chunks.d.ts.map +1 -0
  264. package/dist/plugins/cloudflare-wasm.d.ts +18 -0
  265. package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
  266. package/dist/plugins/content.d.ts +1 -1
  267. package/dist/plugins/content.d.ts.map +1 -1
  268. package/dist/plugins/dev-server.d.ts +1 -1
  269. package/dist/plugins/dev-server.d.ts.map +1 -1
  270. package/dist/plugins/entries.d.ts +1 -1
  271. package/dist/plugins/entries.d.ts.map +1 -1
  272. package/dist/plugins/fonts.d.ts +17 -73
  273. package/dist/plugins/fonts.d.ts.map +1 -1
  274. package/dist/plugins/mdx.d.ts +1 -1
  275. package/dist/plugins/mdx.d.ts.map +1 -1
  276. package/dist/plugins/routing.d.ts +1 -1
  277. package/dist/plugins/routing.d.ts.map +1 -1
  278. package/dist/plugins/server-bundle.d.ts.map +1 -1
  279. package/dist/plugins/shims.d.ts +6 -5
  280. package/dist/plugins/shims.d.ts.map +1 -1
  281. package/dist/plugins/static-build.d.ts +5 -26
  282. package/dist/plugins/static-build.d.ts.map +1 -1
  283. package/dist/routing/codegen-shared.d.ts +67 -0
  284. package/dist/routing/codegen-shared.d.ts.map +1 -0
  285. package/dist/routing/codegen-types.d.ts +60 -0
  286. package/dist/routing/codegen-types.d.ts.map +1 -0
  287. package/dist/routing/codegen.d.ts +7 -2
  288. package/dist/routing/codegen.d.ts.map +1 -1
  289. package/dist/routing/convention-lint.d.ts +41 -0
  290. package/dist/routing/convention-lint.d.ts.map +1 -0
  291. package/dist/routing/index.d.ts +7 -1
  292. package/dist/routing/index.d.ts.map +1 -1
  293. package/dist/routing/index.js +4 -2
  294. package/dist/routing/link-codegen.d.ts +90 -0
  295. package/dist/routing/link-codegen.d.ts.map +1 -0
  296. package/dist/routing/scanner.d.ts +1 -10
  297. package/dist/routing/scanner.d.ts.map +1 -1
  298. package/dist/routing/schema-validation.d.ts +35 -0
  299. package/dist/routing/schema-validation.d.ts.map +1 -0
  300. package/dist/routing/segment-classify.d.ts +75 -0
  301. package/dist/routing/segment-classify.d.ts.map +1 -0
  302. package/dist/routing/segment-codegen.d.ts +38 -0
  303. package/dist/routing/segment-codegen.d.ts.map +1 -0
  304. package/dist/routing/types.d.ts +77 -25
  305. package/dist/routing/types.d.ts.map +1 -1
  306. package/dist/routing/walkers.d.ts +51 -0
  307. package/dist/routing/walkers.d.ts.map +1 -0
  308. package/dist/rsc-runtime/rsc.d.ts +1 -1
  309. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  310. package/dist/rsc-runtime/ssr.d.ts +12 -0
  311. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  312. package/dist/schema-bridge.d.ts +76 -0
  313. package/dist/schema-bridge.d.ts.map +1 -0
  314. package/dist/search-params/define.d.ts +157 -0
  315. package/dist/search-params/define.d.ts.map +1 -0
  316. package/dist/search-params/index.d.ts +4 -7
  317. package/dist/search-params/index.d.ts.map +1 -1
  318. package/dist/search-params/index.js +34 -441
  319. package/dist/search-params/index.js.map +1 -1
  320. package/dist/search-params/registry.d.ts +2 -2
  321. package/dist/search-params/registry.d.ts.map +1 -1
  322. package/dist/search-params/wrappers.d.ts +53 -0
  323. package/dist/search-params/wrappers.d.ts.map +1 -0
  324. package/dist/segment-params/define.d.ts +89 -0
  325. package/dist/segment-params/define.d.ts.map +1 -0
  326. package/dist/segment-params/index.d.ts +3 -0
  327. package/dist/segment-params/index.d.ts.map +1 -0
  328. package/dist/segment-params/index.js +2 -0
  329. package/dist/server/access-gate.d.ts +8 -3
  330. package/dist/server/access-gate.d.ts.map +1 -1
  331. package/dist/server/action-client.d.ts +41 -6
  332. package/dist/server/action-client.d.ts.map +1 -1
  333. package/dist/server/action-encryption.d.ts +76 -0
  334. package/dist/server/action-encryption.d.ts.map +1 -0
  335. package/dist/server/action-handler.d.ts +35 -1
  336. package/dist/server/action-handler.d.ts.map +1 -1
  337. package/dist/server/actions.d.ts +6 -14
  338. package/dist/server/actions.d.ts.map +1 -1
  339. package/dist/server/als-registry.d.ts +70 -11
  340. package/dist/server/als-registry.d.ts.map +1 -1
  341. package/dist/server/asset-headers.d.ts +1 -15
  342. package/dist/server/asset-headers.d.ts.map +1 -1
  343. package/dist/server/build-manifest.d.ts +8 -2
  344. package/dist/server/build-manifest.d.ts.map +1 -1
  345. package/dist/server/coalesce-tick.d.ts +40 -0
  346. package/dist/server/coalesce-tick.d.ts.map +1 -0
  347. package/dist/server/cookie-context.d.ts +170 -0
  348. package/dist/server/cookie-context.d.ts.map +1 -0
  349. package/dist/server/cookie-parsing.d.ts +51 -0
  350. package/dist/server/cookie-parsing.d.ts.map +1 -0
  351. package/dist/server/debug.d.ts +1 -1
  352. package/dist/server/default-logger.d.ts +22 -0
  353. package/dist/server/default-logger.d.ts.map +1 -0
  354. package/dist/server/deny-boundary.d.ts +90 -0
  355. package/dist/server/deny-boundary.d.ts.map +1 -0
  356. package/dist/server/deny-renderer.d.ts +1 -1
  357. package/dist/server/deny-renderer.d.ts.map +1 -1
  358. package/dist/server/dev-source-map.d.ts +22 -0
  359. package/dist/server/dev-source-map.d.ts.map +1 -0
  360. package/dist/server/early-hints-sender.d.ts.map +1 -1
  361. package/dist/server/early-hints.d.ts +13 -5
  362. package/dist/server/early-hints.d.ts.map +1 -1
  363. package/dist/server/error-boundary-wrapper.d.ts +7 -1
  364. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  365. package/dist/server/fallback-error.d.ts +12 -7
  366. package/dist/server/fallback-error.d.ts.map +1 -1
  367. package/dist/server/flight-injection-state.d.ts +66 -0
  368. package/dist/server/flight-injection-state.d.ts.map +1 -0
  369. package/dist/server/flight-scripts.d.ts +42 -0
  370. package/dist/server/flight-scripts.d.ts.map +1 -0
  371. package/dist/server/flush.d.ts.map +1 -1
  372. package/dist/server/form-data.d.ts +29 -0
  373. package/dist/server/form-data.d.ts.map +1 -1
  374. package/dist/server/html-injector-core.d.ts +213 -0
  375. package/dist/server/html-injector-core.d.ts.map +1 -0
  376. package/dist/server/html-injectors.d.ts +81 -41
  377. package/dist/server/html-injectors.d.ts.map +1 -1
  378. package/dist/server/index.d.ts +10 -46
  379. package/dist/server/index.d.ts.map +1 -1
  380. package/dist/server/index.js +155 -2905
  381. package/dist/server/index.js.map +1 -1
  382. package/dist/server/internal.d.ts +48 -0
  383. package/dist/server/internal.d.ts.map +1 -0
  384. package/dist/server/internal.js +3027 -0
  385. package/dist/server/internal.js.map +1 -0
  386. package/dist/server/logger.d.ts +39 -7
  387. package/dist/server/logger.d.ts.map +1 -1
  388. package/dist/server/metadata-routes.d.ts +23 -7
  389. package/dist/server/metadata-routes.d.ts.map +1 -1
  390. package/dist/server/middleware-runner.d.ts +36 -4
  391. package/dist/server/middleware-runner.d.ts.map +1 -1
  392. package/dist/server/node-stream-transforms.d.ts +112 -0
  393. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  394. package/dist/server/param-coercion.d.ts +54 -0
  395. package/dist/server/param-coercion.d.ts.map +1 -0
  396. package/dist/server/pipeline-helpers.d.ts +95 -0
  397. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  398. package/dist/server/pipeline-interception.d.ts +1 -1
  399. package/dist/server/pipeline-interception.d.ts.map +1 -1
  400. package/dist/server/pipeline-metadata.d.ts +6 -0
  401. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  402. package/dist/server/pipeline-outcome.d.ts +49 -0
  403. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  404. package/dist/server/pipeline-phases.d.ts +52 -0
  405. package/dist/server/pipeline-phases.d.ts.map +1 -0
  406. package/dist/server/pipeline.d.ts +118 -23
  407. package/dist/server/pipeline.d.ts.map +1 -1
  408. package/dist/server/port-resolution.d.ts +117 -0
  409. package/dist/server/port-resolution.d.ts.map +1 -0
  410. package/dist/server/primitives.d.ts +69 -18
  411. package/dist/server/primitives.d.ts.map +1 -1
  412. package/dist/server/render-timeout.d.ts +51 -0
  413. package/dist/server/render-timeout.d.ts.map +1 -0
  414. package/dist/server/request-context.d.ts +62 -107
  415. package/dist/server/request-context.d.ts.map +1 -1
  416. package/dist/server/route-element-builder.d.ts +28 -2
  417. package/dist/server/route-element-builder.d.ts.map +1 -1
  418. package/dist/server/route-handler.d.ts.map +1 -1
  419. package/dist/server/route-matcher.d.ts +25 -36
  420. package/dist/server/route-matcher.d.ts.map +1 -1
  421. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  422. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  423. package/dist/server/rsc-entry/api-handler.d.ts +2 -2
  424. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  425. package/dist/server/rsc-entry/error-renderer.d.ts +26 -13
  426. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  427. package/dist/server/rsc-entry/helpers.d.ts +50 -6
  428. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  429. package/dist/server/rsc-entry/index.d.ts +19 -8
  430. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  431. package/dist/server/rsc-entry/render-route.d.ts +50 -0
  432. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  433. package/dist/server/rsc-entry/rsc-payload.d.ts +3 -3
  434. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  435. package/dist/server/rsc-entry/rsc-stream.d.ts +17 -1
  436. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  437. package/dist/server/rsc-entry/ssr-bridge.d.ts +5 -1
  438. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  439. package/dist/server/rsc-entry/ssr-renderer.d.ts +19 -4
  440. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  441. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +119 -0
  442. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  443. package/dist/server/safe-load.d.ts +46 -0
  444. package/dist/server/safe-load.d.ts.map +1 -0
  445. package/dist/server/sensitive-fields.d.ts +74 -0
  446. package/dist/server/sensitive-fields.d.ts.map +1 -0
  447. package/dist/server/sitemap-generator.d.ts +129 -0
  448. package/dist/server/sitemap-generator.d.ts.map +1 -0
  449. package/dist/server/sitemap-handler.d.ts +22 -0
  450. package/dist/server/sitemap-handler.d.ts.map +1 -0
  451. package/dist/server/slot-resolver.d.ts +1 -1
  452. package/dist/server/slot-resolver.d.ts.map +1 -1
  453. package/dist/server/ssr-bridge-types.d.ts +121 -0
  454. package/dist/server/ssr-bridge-types.d.ts.map +1 -0
  455. package/dist/server/ssr-entry.d.ts +2 -43
  456. package/dist/server/ssr-entry.d.ts.map +1 -1
  457. package/dist/server/ssr-render.d.ts +64 -21
  458. package/dist/server/ssr-render.d.ts.map +1 -1
  459. package/dist/server/ssr-wrappers.d.ts +50 -0
  460. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  461. package/dist/server/state-tree-diff.d.ts +12 -5
  462. package/dist/server/state-tree-diff.d.ts.map +1 -1
  463. package/dist/server/status-code-resolver.d.ts +16 -11
  464. package/dist/server/status-code-resolver.d.ts.map +1 -1
  465. package/dist/server/stream-utils.d.ts +36 -0
  466. package/dist/server/stream-utils.d.ts.map +1 -0
  467. package/dist/server/tracing.d.ts +5 -5
  468. package/dist/server/tracing.d.ts.map +1 -1
  469. package/dist/server/tree-builder.d.ts +62 -30
  470. package/dist/server/tree-builder.d.ts.map +1 -1
  471. package/dist/server/tree-match.d.ts +49 -0
  472. package/dist/server/tree-match.d.ts.map +1 -0
  473. package/dist/server/types.d.ts +49 -4
  474. package/dist/server/types.d.ts.map +1 -1
  475. package/dist/server/utils/escape-html.d.ts +14 -0
  476. package/dist/server/utils/escape-html.d.ts.map +1 -0
  477. package/dist/server/version-skew.d.ts +61 -0
  478. package/dist/server/version-skew.d.ts.map +1 -0
  479. package/dist/shared/merge-search-params.d.ts +22 -0
  480. package/dist/shared/merge-search-params.d.ts.map +1 -0
  481. package/dist/shims/font-google.d.ts +1 -1
  482. package/dist/shims/font-google.d.ts.map +1 -1
  483. package/dist/shims/font-google.js +42 -0
  484. package/dist/shims/font-google.js.map +1 -0
  485. package/dist/shims/font-local.d.ts +26 -0
  486. package/dist/shims/font-local.d.ts.map +1 -0
  487. package/dist/shims/font-local.js +20 -0
  488. package/dist/shims/font-local.js.map +1 -0
  489. package/dist/shims/headers.d.ts +2 -1
  490. package/dist/shims/headers.d.ts.map +1 -1
  491. package/dist/shims/navigation-client.d.ts +3 -1
  492. package/dist/shims/navigation-client.d.ts.map +1 -1
  493. package/dist/shims/navigation.d.ts +11 -5
  494. package/dist/shims/navigation.d.ts.map +1 -1
  495. package/dist/utils/state-machine.d.ts +80 -0
  496. package/dist/utils/state-machine.d.ts.map +1 -0
  497. package/package.json +61 -22
  498. package/src/adapters/build-output-helper.ts +139 -0
  499. package/src/adapters/cloudflare-dev.ts +177 -0
  500. package/src/adapters/cloudflare-kv-cache.ts +142 -0
  501. package/src/adapters/cloudflare.ts +350 -76
  502. package/src/adapters/compress-module.ts +24 -4
  503. package/src/adapters/nitro.ts +142 -59
  504. package/src/adapters/shared.ts +40 -0
  505. package/src/adapters/wrangler.d.ts +7 -0
  506. package/src/cache/cache-api.ts +38 -0
  507. package/src/cache/handler-store.ts +68 -0
  508. package/src/cache/index.ts +81 -18
  509. package/src/cache/singleflight.ts +62 -4
  510. package/src/cache/sizeof.ts +33 -0
  511. package/src/cache/timber-cache.ts +25 -20
  512. package/src/cli-schema-sync.ts +295 -0
  513. package/src/cli.ts +76 -8
  514. package/src/client/browser-dev.ts +153 -1
  515. package/src/client/browser-entry/action-dispatch.ts +125 -0
  516. package/src/client/browser-entry/hmr.ts +81 -0
  517. package/src/client/browser-entry/hydrate.ts +153 -0
  518. package/src/client/browser-entry/index.ts +151 -0
  519. package/src/client/browser-entry/post-hydration.ts +113 -0
  520. package/src/client/browser-entry/router-init.ts +219 -0
  521. package/src/client/browser-entry/rsc-stream.ts +157 -0
  522. package/src/client/browser-entry/scroll.ts +27 -0
  523. package/src/client/error-boundary.tsx +99 -22
  524. package/src/client/error-reconstituter.tsx +65 -0
  525. package/src/client/form.tsx +31 -32
  526. package/src/client/history.ts +26 -4
  527. package/src/client/index.ts +66 -45
  528. package/src/client/internal.ts +58 -0
  529. package/src/client/link-pending-store.ts +116 -0
  530. package/src/client/link.tsx +336 -119
  531. package/src/client/nav-link-store.ts +37 -0
  532. package/src/client/navigation-api-types.ts +112 -0
  533. package/src/client/navigation-api.ts +332 -0
  534. package/src/client/navigation-context.ts +33 -7
  535. package/src/client/navigation-root.tsx +347 -0
  536. package/src/client/nuqs-adapter.tsx +16 -3
  537. package/src/client/router-ref.ts +1 -1
  538. package/src/client/router.ts +418 -128
  539. package/src/client/rsc-fetch.ts +208 -10
  540. package/src/client/segment-cache.ts +6 -3
  541. package/src/client/segment-outlet.tsx +77 -0
  542. package/src/client/segment-update-context.ts +42 -0
  543. package/src/client/shallow-url.ts +22 -0
  544. package/src/client/ssr-data.ts +13 -5
  545. package/src/client/stale-reload.ts +72 -3
  546. package/src/client/state.ts +2 -2
  547. package/src/client/top-loader.tsx +11 -9
  548. package/src/client/use-cookie.ts +31 -2
  549. package/src/client/use-link-status.ts +7 -7
  550. package/src/client/use-pending-navigation.ts +40 -0
  551. package/src/client/use-query-states.ts +9 -3
  552. package/src/client/use-router.ts +1 -1
  553. package/src/client/use-search-params.ts +25 -44
  554. package/src/client/{use-params.ts → use-segment-params.ts} +8 -6
  555. package/src/codec.ts +147 -0
  556. package/src/config-types.ts +292 -0
  557. package/src/config-validation.ts +303 -0
  558. package/src/content/index.ts +5 -13
  559. package/src/cookies/define-cookie.ts +233 -53
  560. package/src/cookies/index.ts +12 -1
  561. package/src/cookies/json-cookie.ts +105 -0
  562. package/src/cookies/validation.ts +134 -0
  563. package/src/dev-tools/404-page.ts +387 -0
  564. package/src/dev-tools/browser-logs.ts +291 -0
  565. package/src/dev-tools/error-page.ts +506 -0
  566. package/src/dev-tools/holding-server.ts +187 -0
  567. package/src/dev-tools/index.ts +90 -0
  568. package/src/dev-tools/instrumentation.ts +176 -0
  569. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +9 -5
  570. package/src/dev-tools/overlay.ts +469 -0
  571. package/src/dev-tools/stack-classifier.ts +75 -0
  572. package/src/dev-tools/terminal.ts +183 -0
  573. package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +5 -50
  574. package/src/fonts/ast.ts +525 -16
  575. package/src/fonts/bundle.ts +142 -0
  576. package/src/fonts/dev-middleware.ts +74 -0
  577. package/src/fonts/local.ts +1 -1
  578. package/src/fonts/pipeline.ts +314 -0
  579. package/src/fonts/transform.ts +317 -0
  580. package/src/fonts/types.ts +50 -1
  581. package/src/fonts/virtual-modules.ts +233 -0
  582. package/src/index.ts +411 -329
  583. package/src/params/codec-registry.ts +34 -0
  584. package/src/params/define-schema.ts +114 -0
  585. package/src/params/index.ts +17 -0
  586. package/src/params/resolve-schema.ts +116 -0
  587. package/src/plugin-context.ts +240 -0
  588. package/src/plugins/adapter-build.ts +12 -4
  589. package/src/plugins/build-manifest.ts +69 -6
  590. package/src/plugins/build-report.ts +16 -25
  591. package/src/plugins/client-chunks.ts +65 -0
  592. package/src/plugins/cloudflare-wasm.ts +103 -0
  593. package/src/plugins/content.ts +1 -1
  594. package/src/plugins/dev-server.ts +179 -37
  595. package/src/plugins/entries.ts +111 -8
  596. package/src/plugins/fonts.ts +165 -654
  597. package/src/plugins/mdx.ts +47 -10
  598. package/src/plugins/routing.ts +386 -47
  599. package/src/plugins/server-bundle.ts +59 -3
  600. package/src/plugins/shims.ts +136 -35
  601. package/src/plugins/static-build.ts +15 -89
  602. package/src/routing/codegen-shared.ts +115 -0
  603. package/src/routing/codegen-types.ts +61 -0
  604. package/src/routing/codegen.ts +321 -177
  605. package/src/routing/convention-lint.ts +357 -0
  606. package/src/routing/index.ts +10 -1
  607. package/src/routing/interception.ts +1 -1
  608. package/src/routing/link-codegen.ts +308 -0
  609. package/src/routing/scanner.ts +165 -110
  610. package/src/routing/schema-validation.ts +149 -0
  611. package/src/routing/segment-classify.ts +188 -0
  612. package/src/routing/segment-codegen.ts +98 -0
  613. package/src/routing/types.ts +78 -25
  614. package/src/routing/walkers.ts +90 -0
  615. package/src/rsc-runtime/rsc.ts +2 -0
  616. package/src/rsc-runtime/ssr.ts +50 -0
  617. package/src/rsc-runtime/vendor-types.d.ts +7 -0
  618. package/src/{search-params/codecs.ts → schema-bridge.ts} +57 -20
  619. package/src/search-params/define.ts +538 -0
  620. package/src/search-params/index.ts +14 -20
  621. package/src/search-params/registry.ts +2 -2
  622. package/src/search-params/wrappers.ts +92 -0
  623. package/src/segment-params/define.ts +309 -0
  624. package/src/segment-params/index.ts +9 -0
  625. package/src/server/access-gate.tsx +76 -34
  626. package/src/server/action-client.ts +88 -15
  627. package/src/server/action-encryption.ts +144 -0
  628. package/src/server/action-handler.ts +112 -14
  629. package/src/server/actions.ts +14 -23
  630. package/src/server/als-registry.ts +108 -20
  631. package/src/server/asset-headers.ts +8 -34
  632. package/src/server/build-manifest.ts +17 -4
  633. package/src/server/coalesce-tick.ts +75 -0
  634. package/src/server/compress.ts +25 -7
  635. package/src/server/cookie-context.ts +468 -0
  636. package/src/server/cookie-parsing.ts +135 -0
  637. package/src/server/debug.ts +1 -1
  638. package/src/server/default-logger.ts +99 -0
  639. package/src/server/deny-boundary.ts +218 -0
  640. package/src/server/deny-renderer.ts +32 -51
  641. package/src/server/dev-source-map.ts +31 -0
  642. package/src/server/early-hints-sender.ts +3 -2
  643. package/src/server/early-hints.ts +36 -15
  644. package/src/server/error-boundary-wrapper.ts +74 -22
  645. package/src/server/fallback-error.ts +74 -102
  646. package/src/server/flight-injection-state.ts +113 -0
  647. package/src/server/flight-scripts.ts +62 -0
  648. package/src/server/flush.ts +2 -1
  649. package/src/server/form-data.ts +101 -5
  650. package/src/server/html-injector-core.ts +417 -0
  651. package/src/server/html-injectors.ts +235 -223
  652. package/src/server/index.ts +29 -183
  653. package/src/server/internal.ts +182 -0
  654. package/src/server/logger.ts +67 -36
  655. package/src/server/metadata-routes.ts +44 -19
  656. package/src/server/middleware-runner.ts +75 -4
  657. package/src/server/node-stream-transforms.ts +361 -0
  658. package/src/server/param-coercion.ts +206 -0
  659. package/src/server/pipeline-helpers.ts +204 -0
  660. package/src/server/pipeline-interception.ts +17 -16
  661. package/src/server/pipeline-metadata.ts +13 -0
  662. package/src/server/pipeline-outcome.ts +197 -0
  663. package/src/server/pipeline-phases.ts +468 -0
  664. package/src/server/pipeline.ts +154 -394
  665. package/src/server/port-resolution.ts +215 -0
  666. package/src/server/primitives.ts +111 -28
  667. package/src/server/render-timeout.ts +108 -0
  668. package/src/server/request-context.ts +168 -337
  669. package/src/server/route-element-builder.ts +435 -208
  670. package/src/server/route-handler.ts +24 -4
  671. package/src/server/route-matcher.ts +128 -277
  672. package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
  673. package/src/server/rsc-entry/api-handler.ts +16 -17
  674. package/src/server/rsc-entry/error-renderer.ts +315 -89
  675. package/src/server/rsc-entry/helpers.ts +155 -26
  676. package/src/server/rsc-entry/index.ts +316 -327
  677. package/src/server/rsc-entry/render-route.ts +313 -0
  678. package/src/server/rsc-entry/rsc-payload.ts +65 -18
  679. package/src/server/rsc-entry/rsc-stream.ts +85 -13
  680. package/src/server/rsc-entry/ssr-bridge.ts +18 -5
  681. package/src/server/rsc-entry/ssr-renderer.ts +193 -40
  682. package/src/server/rsc-entry/wrap-action-dispatch.ts +449 -0
  683. package/src/server/safe-load.ts +60 -0
  684. package/src/server/sensitive-fields.ts +230 -0
  685. package/src/server/sitemap-generator.ts +338 -0
  686. package/src/server/sitemap-handler.ts +126 -0
  687. package/src/server/slot-resolver.ts +228 -246
  688. package/src/server/ssr-bridge-types.ts +124 -0
  689. package/src/server/ssr-entry.ts +217 -78
  690. package/src/server/ssr-render.ts +344 -71
  691. package/src/server/ssr-wrappers.tsx +139 -0
  692. package/src/server/state-tree-diff.ts +30 -23
  693. package/src/server/status-code-resolver.ts +112 -128
  694. package/src/server/stream-utils.ts +213 -0
  695. package/src/server/tracing.ts +21 -10
  696. package/src/server/tree-builder.ts +202 -90
  697. package/src/server/tree-match.ts +210 -0
  698. package/src/server/types.ts +55 -6
  699. package/src/server/utils/escape-html.ts +20 -0
  700. package/src/server/version-skew.ts +104 -0
  701. package/src/shared/merge-search-params.ts +55 -0
  702. package/src/shims/font-google.ts +1 -1
  703. package/src/shims/font-local.ts +34 -0
  704. package/src/shims/headers.ts +5 -1
  705. package/src/shims/navigation-client.ts +4 -3
  706. package/src/shims/navigation.ts +14 -7
  707. package/src/utils/state-machine.ts +111 -0
  708. package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
  709. package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
  710. package/dist/_chunks/debug-gwlJkDuf.js +0 -108
  711. package/dist/_chunks/debug-gwlJkDuf.js.map +0 -1
  712. package/dist/_chunks/format-DviM89f0.js.map +0 -1
  713. package/dist/_chunks/interception-BOoWmLUA.js +0 -676
  714. package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
  715. package/dist/_chunks/metadata-routes-Cjmvi3rQ.js.map +0 -1
  716. package/dist/_chunks/request-context-DIkVh_jG.js +0 -330
  717. package/dist/_chunks/request-context-DIkVh_jG.js.map +0 -1
  718. package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
  719. package/dist/_chunks/tracing-CemImE6h.js +0 -187
  720. package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
  721. package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
  722. package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
  723. package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
  724. package/dist/cache/register-cached-function.d.ts +0 -17
  725. package/dist/cache/register-cached-function.d.ts.map +0 -1
  726. package/dist/client/browser-entry.d.ts +0 -21
  727. package/dist/client/browser-entry.d.ts.map +0 -1
  728. package/dist/client/link-status-provider.d.ts +0 -11
  729. package/dist/client/link-status-provider.d.ts.map +0 -1
  730. package/dist/client/segment-merger.d.ts +0 -119
  731. package/dist/client/segment-merger.d.ts.map +0 -1
  732. package/dist/client/transition-root.d.ts.map +0 -1
  733. package/dist/client/use-navigation-pending.d.ts +0 -26
  734. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  735. package/dist/client/use-params.d.ts.map +0 -1
  736. package/dist/plugins/cache-transform.d.ts +0 -36
  737. package/dist/plugins/cache-transform.d.ts.map +0 -1
  738. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  739. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  740. package/dist/plugins/dev-logs.d.ts.map +0 -1
  741. package/dist/plugins/dynamic-transform.d.ts +0 -72
  742. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  743. package/dist/plugins/server-action-exports.d.ts +0 -26
  744. package/dist/plugins/server-action-exports.d.ts.map +0 -1
  745. package/dist/routing/status-file-lint.d.ts +0 -33
  746. package/dist/routing/status-file-lint.d.ts.map +0 -1
  747. package/dist/search-params/analyze.d.ts +0 -54
  748. package/dist/search-params/analyze.d.ts.map +0 -1
  749. package/dist/search-params/builtin-codecs.d.ts +0 -105
  750. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  751. package/dist/search-params/codecs.d.ts +0 -53
  752. package/dist/search-params/codecs.d.ts.map +0 -1
  753. package/dist/search-params/create.d.ts +0 -106
  754. package/dist/search-params/create.d.ts.map +0 -1
  755. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  756. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  757. package/dist/server/dev-logger.d.ts.map +0 -1
  758. package/dist/server/dev-span-processor.d.ts.map +0 -1
  759. package/dist/server/dev-warnings.d.ts.map +0 -1
  760. package/dist/server/manifest-status-resolver.d.ts +0 -58
  761. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  762. package/dist/server/prerender.d.ts +0 -77
  763. package/dist/server/prerender.d.ts.map +0 -1
  764. package/dist/utils/directive-parser.d.ts +0 -70
  765. package/dist/utils/directive-parser.d.ts.map +0 -1
  766. package/src/cache/register-cached-function.ts +0 -103
  767. package/src/client/browser-entry.ts +0 -678
  768. package/src/client/link-status-provider.tsx +0 -30
  769. package/src/client/segment-merger.ts +0 -339
  770. package/src/client/transition-root.tsx +0 -166
  771. package/src/client/use-navigation-pending.ts +0 -38
  772. package/src/plugins/cache-transform.ts +0 -199
  773. package/src/plugins/dev-error-overlay.ts +0 -230
  774. package/src/plugins/dynamic-transform.ts +0 -161
  775. package/src/plugins/server-action-exports.ts +0 -220
  776. package/src/routing/status-file-lint.ts +0 -112
  777. package/src/search-params/analyze.ts +0 -192
  778. package/src/search-params/builtin-codecs.ts +0 -228
  779. package/src/search-params/create.ts +0 -321
  780. package/src/server/dev-fetch-instrumentation.ts +0 -96
  781. package/src/server/dev-span-processor.ts +0 -78
  782. package/src/server/manifest-status-resolver.ts +0 -215
  783. package/src/server/prerender.ts +0 -139
  784. package/src/utils/directive-parser.ts +0 -529
  785. /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Lightweight byte-size estimation for cache entries.
3
+ *
4
+ * Estimates the in-memory byte cost of a JavaScript value using
5
+ * JSON.stringify().length * 2 (UTF-16 char width). This is a rough
6
+ * approximation — it doesn't account for V8 object overhead, Map
7
+ * metadata, or non-serializable values — but it's fast and good
8
+ * enough for cache budget enforcement.
9
+ *
10
+ * Values that fail JSON serialization (circular references, BigInt,
11
+ * etc.) return 0, allowing the entry to be cached without counting
12
+ * toward the byte budget. This is a conservative choice: it's better
13
+ * to cache and undercount than to reject the entry.
14
+ */
15
+ /**
16
+ * Estimate the byte size of a value.
17
+ *
18
+ * Uses `JSON.stringify(value).length * 2` to approximate UTF-16
19
+ * in-memory size. Returns 0 if the value is not serializable.
20
+ */
21
+ export declare function estimateByteSize(value: unknown): number;
22
+ //# sourceMappingURL=sizeof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sizeof.d.ts","sourceRoot":"","sources":["../../src/cache/sizeof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAWvD"}
@@ -11,7 +11,7 @@ import type { CacheHandler, CacheOptions } from './index';
11
11
  * Cache hits/misses are recorded as OTEL span events on the enclosing
12
12
  * span (not child spans). The DevSpanProcessor reads these for dev log output.
13
13
  */
14
- export declare function createCache<Fn extends (...args: any[]) => Promise<any>>(fn: Fn, opts: CacheOptions<Fn>, handler: CacheHandler): (...args: Parameters<Fn>) => Promise<Awaited<ReturnType<Fn>>>;
14
+ export declare function createCache<Fn extends (...args: any[]) => Promise<any>>(fn: Fn, opts: CacheOptions<Fn>, handler: CacheHandler): Fn;
15
15
  export declare namespace createCache {
16
16
  var invalidate: (handler: CacheHandler, opts: {
17
17
  key?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"timber-cache.d.ts","sourceRoot":"","sources":["../../src/cache/timber-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAsC1D;;;;;;;;;;;GAWG;AAEH,wBAAgB,WAAW,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACrE,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,EACtB,OAAO,EAAE,YAAY,GACpB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAyD/D;yBA7De,WAAW;8BAmEhB,YAAY,QACf;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,KACnC,OAAO,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"timber-cache.d.ts","sourceRoot":"","sources":["../../src/cache/timber-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAuC1D;;;;;;;;;;;GAWG;AAEH,wBAAgB,WAAW,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACrE,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,EACtB,OAAO,EAAE,YAAY,GACpB,EAAE,CA6DJ;yBAjEe,WAAW;8BAuEhB,YAAY,QACf;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,KACnC,OAAO,CAAC,IAAI,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * `timber schema sync` — scan filesystem for dynamic segments, append
3
+ * missing entries with `codec.string` defaults, and remove stale entries
4
+ * whose segments no longer exist in the filesystem.
5
+ *
6
+ * Design doc: design/41-global-params.md §Auto-Scaffolding
7
+ */
8
+ /**
9
+ * Collect all unique bracket-keyed dynamic segment names from the route tree.
10
+ * Returns entries like '[artistSlug]', '[...slug]', '[[...topic]]'.
11
+ */
12
+ export declare function collectDynamicSegments(appDir: string): string[];
13
+ /**
14
+ * Parse existing bracket keys from an app/schema.ts file.
15
+ * Uses regex to find keys in segmentParams: { '[key]': ... } blocks.
16
+ */
17
+ export declare function parseExistingSchemaKeys(content: string): string[];
18
+ /**
19
+ * Find the schema file path if it exists.
20
+ */
21
+ export declare function findSchemaFile(appDir: string): string | undefined;
22
+ export declare function defaultCodecForSegment(seg: string): string;
23
+ export interface SchemaSyncResult {
24
+ /** Segments found in the filesystem. */
25
+ filesystemSegments: string[];
26
+ /** Segments already defined in app/schema.ts. */
27
+ existingSegments: string[];
28
+ /** Segments that were added. */
29
+ addedSegments: string[];
30
+ /** Segments that were removed (no longer in filesystem). */
31
+ removedSegments: string[];
32
+ /** Whether a new schema file was created. */
33
+ created: boolean;
34
+ }
35
+ /**
36
+ * Run the schema sync: scan filesystem, diff against schema, append missing.
37
+ */
38
+ export declare function runSchemaSync(projectRoot: string): SchemaSyncResult;
39
+ //# sourceMappingURL=cli-schema-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-schema-sync.d.ts","sourceRoot":"","sources":["../src/cli-schema-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAK/D;AAeD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CASjE;AAKD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMjE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI1D;AAiJD,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,iDAAiD;IACjD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gCAAgC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CA8DnE"}
package/dist/cli.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- declare const COMMANDS: readonly ["dev", "build", "preview", "check"];
2
+ declare const COMMANDS: readonly ["dev", "build", "preview", "check", "schema"];
3
3
  type Command = (typeof COMMANDS)[number];
4
4
  export interface ParsedArgs {
5
5
  command: Command;
@@ -21,7 +21,12 @@ export interface ViteDeps {
21
21
  }
22
22
  /**
23
23
  * Start the Vite dev server.
24
- * Middleware re-runs on file change via HMR wiring in timber-routing.
24
+ *
25
+ * The timber plugin binds the port immediately with a holding page
26
+ * (in rootSync's config hook) so browsers see a "starting..." page
27
+ * instead of ERR_CONNECTION_REFUSED during initialization.
28
+ *
29
+ * See design/21-dev-server.md, TIM-665.
25
30
  */
26
31
  export declare function runDev(options: CommandOptions, _deps?: ViteDeps): Promise<void>;
27
32
  /**
@@ -46,5 +51,12 @@ export declare function runPreview(options: CommandOptions, _deps?: ViteDeps): P
46
51
  * Runs tsgo --noEmit for type checking.
47
52
  */
48
53
  export declare function runCheck(options: CommandOptions): Promise<void>;
54
+ /**
55
+ * `timber schema sync` — scan filesystem for dynamic segments, diff against
56
+ * app/schema.ts, and append missing entries with type-appropriate codec defaults.
57
+ *
58
+ * See design/41-global-params.md §Auto-Scaffolding
59
+ */
60
+ export declare function runSchema(args: string[]): Promise<void>;
49
61
  export {};
50
62
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAaA,QAAA,MAAM,QAAQ,+CAAgD,CAAC;AAC/D,KAAK,OAAO,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAuBpD;AAID,kDAAkD;AAClD,MAAM,WAAW,QAAQ;IACvB,YAAY,CAAC,EAAE,cAAc,MAAM,EAAE,YAAY,CAAC;IAClD,aAAa,CAAC,EAAE,cAAc,MAAM,EAAE,aAAa,CAAC;IACpD,OAAO,CAAC,EAAE,cAAc,MAAM,EAAE,OAAO,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrF;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,kBAAkB,EAAE,qBAAqB,GAAG,SAAS,GACpE,SAAS,GAAG,MAAM,CAKpB;AA2BD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBzF;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAerE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAaA,QAAA,MAAM,QAAQ,yDAA0D,CAAC;AACzE,KAAK,OAAO,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAuBpD;AAID,kDAAkD;AAClD,MAAM,WAAW,QAAQ;IACvB,YAAY,CAAC,EAAE,cAAc,MAAM,EAAE,YAAY,CAAC;IAClD,aAAa,CAAC,EAAE,cAAc,MAAM,EAAE,aAAa,CAAC;IACpD,OAAO,CAAC,EAAE,cAAc,MAAM,EAAE,OAAO,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrF;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,kBAAkB,EAAE,qBAAqB,GAAG,SAAS,GACpE,SAAS,GAAG,MAAM,CAKpB;AA6BD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBzF;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAerE;AAID;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C7D"}
package/dist/cli.js CHANGED
@@ -4,14 +4,15 @@ var COMMANDS = [
4
4
  "dev",
5
5
  "build",
6
6
  "preview",
7
- "check"
7
+ "check",
8
+ "schema"
8
9
  ];
9
10
  /**
10
11
  * Parse CLI arguments into a structured command + options.
11
12
  * Accepts: timber <command> [--config|-c <path>]
12
13
  */
13
14
  function parseArgs(args) {
14
- if (args.length === 0) throw new Error("No command provided. Usage: timber <dev|build|preview|check> [--config <path>]");
15
+ if (args.length === 0) throw new Error("No command provided. Usage: timber <dev|build|preview|check|schema> [--config <path>]");
15
16
  const command = args[0];
16
17
  if (!COMMANDS.includes(command)) throw new Error(`Unknown command: ${command}. Available commands: ${COMMANDS.join(", ")}`);
17
18
  let config;
@@ -26,7 +27,12 @@ function parseArgs(args) {
26
27
  }
27
28
  /**
28
29
  * Start the Vite dev server.
29
- * Middleware re-runs on file change via HMR wiring in timber-routing.
30
+ *
31
+ * The timber plugin binds the port immediately with a holding page
32
+ * (in rootSync's config hook) so browsers see a "starting..." page
33
+ * instead of ERR_CONNECTION_REFUSED during initialization.
34
+ *
35
+ * See design/21-dev-server.md, TIM-665.
30
36
  */
31
37
  async function runDev(options, _deps) {
32
38
  const server = await (_deps?.createServer ?? (await import("vite")).createServer)({ configFile: options.config });
@@ -77,12 +83,12 @@ async function loadTimberConfig(root) {
77
83
  * Otherwise falls back to Vite's built-in preview server.
78
84
  */
79
85
  async function runPreview(options, _deps) {
80
- const { join } = await import("node:path");
86
+ const { join, resolve } = await import("node:path");
81
87
  const root = process.cwd();
82
88
  const config = await loadTimberConfig(root).catch(() => null);
83
89
  const adapter = config?.adapter;
84
90
  if (resolvePreviewStrategy(adapter) === "adapter") {
85
- const buildDir = join(root, "dist");
91
+ const buildDir = config?.buildDir ? resolve(root, config.buildDir) : join(root, ".timber", "dist");
86
92
  const timberConfig = { output: config?.output ?? "server" };
87
93
  await adapter.preview(timberConfig, buildDir);
88
94
  return;
@@ -104,6 +110,39 @@ async function runCheck(options) {
104
110
  });
105
111
  });
106
112
  }
113
+ /**
114
+ * `timber schema sync` — scan filesystem for dynamic segments, diff against
115
+ * app/schema.ts, and append missing entries with type-appropriate codec defaults.
116
+ *
117
+ * See design/41-global-params.md §Auto-Scaffolding
118
+ */
119
+ async function runSchema(args) {
120
+ const subcommand = args[0];
121
+ if (subcommand !== "sync") throw new Error(`Unknown schema subcommand: ${subcommand ?? "(none)"}. Usage: timber schema sync`);
122
+ const { runSchemaSync, defaultCodecForSegment } = await import("./_chunks/cli-schema-sync-CObqjGWF.js");
123
+ const result = runSchemaSync(process.cwd());
124
+ if (result.filesystemSegments.length === 0) {
125
+ console.log("[timber] No dynamic segments found in app/.");
126
+ return;
127
+ }
128
+ if (result.created) {
129
+ console.log(`[timber] Created app/schema.ts with ${result.addedSegments.length} segment(s):`);
130
+ for (const seg of result.addedSegments) console.log(` + ${seg}: ${defaultCodecForSegment(seg)}`);
131
+ return;
132
+ }
133
+ if (result.addedSegments.length === 0 && result.removedSegments.length === 0) {
134
+ console.log("[timber] Schema is up to date — all segments are registered.");
135
+ return;
136
+ }
137
+ if (result.addedSegments.length > 0) {
138
+ console.log(`[timber] Added ${result.addedSegments.length} segment(s) to app/schema.ts:`);
139
+ for (const seg of result.addedSegments) console.log(` + ${seg}: ${defaultCodecForSegment(seg)}`);
140
+ }
141
+ if (result.removedSegments.length > 0) {
142
+ console.log(`[timber] Removed ${result.removedSegments.length} stale segment(s) from app/schema.ts:`);
143
+ for (const seg of result.removedSegments) console.log(` - ${seg}`);
144
+ }
145
+ }
107
146
  async function main() {
108
147
  const parsed = parseArgs(process.argv.slice(2));
109
148
  const options = { config: parsed.config };
@@ -120,6 +159,9 @@ async function main() {
120
159
  case "check":
121
160
  await runCheck(options);
122
161
  break;
162
+ case "schema":
163
+ await runSchema(process.argv.slice(3));
164
+ break;
123
165
  }
124
166
  }
125
167
  if (typeof process !== "undefined" && process.argv[1] && (import.meta.url.endsWith(process.argv[1]) || process.argv[1].endsWith("bin/timber.mjs") || process.argv[1].endsWith("bin/timber"))) main().catch((err) => {
@@ -127,6 +169,6 @@ if (typeof process !== "undefined" && process.argv[1] && (import.meta.url.endsWi
127
169
  process.exit(1);
128
170
  });
129
171
  //#endregion
130
- export { parseArgs, resolvePreviewStrategy, runBuild, runCheck, runDev, runPreview };
172
+ export { parseArgs, resolvePreviewStrategy, runBuild, runCheck, runDev, runPreview, runSchema };
131
173
 
132
174
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","names":[],"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\n// timber.js CLI\n//\n// Wraps Vite commands with timber-specific behavior.\n// See design/18-build-system.md §\"CLI\".\n//\n// Commands:\n// timber dev — Start Vite dev server with HMR\n// timber build — Run multi-environment build via createBuilder/buildApp\n// timber preview — Serve the production build\n// timber check — Validate types + routes without building\n\nconst COMMANDS = ['dev', 'build', 'preview', 'check'] as const;\ntype Command = (typeof COMMANDS)[number];\n\nexport interface ParsedArgs {\n command: Command;\n config: string | undefined;\n}\n\nexport interface CommandOptions {\n config?: string;\n}\n\n/**\n * Parse CLI arguments into a structured command + options.\n * Accepts: timber <command> [--config|-c <path>]\n */\nexport function parseArgs(args: string[]): ParsedArgs {\n if (args.length === 0) {\n throw new Error(\n 'No command provided. Usage: timber <dev|build|preview|check> [--config <path>]'\n );\n }\n\n const command = args[0];\n if (!COMMANDS.includes(command as Command)) {\n throw new Error(`Unknown command: ${command}. Available commands: ${COMMANDS.join(', ')}`);\n }\n\n let config: string | undefined;\n for (let i = 1; i < args.length; i++) {\n if (args[i] === '--config' || args[i] === '-c') {\n config = args[++i];\n if (!config) {\n throw new Error('--config requires a path argument');\n }\n }\n }\n\n return { command: command as Command, config };\n}\n\n// ─── Command Implementations ─────────────────────────────────────────────────\n\n/** @internal Dependency injection for testing. */\nexport interface ViteDeps {\n createServer?: typeof import('vite').createServer;\n createBuilder?: typeof import('vite').createBuilder;\n preview?: typeof import('vite').preview;\n}\n\n/**\n * Start the Vite dev server.\n * Middleware re-runs on file change via HMR wiring in timber-routing.\n */\nexport async function runDev(options: CommandOptions, _deps?: ViteDeps): Promise<void> {\n const createServer = _deps?.createServer ?? (await import('vite')).createServer;\n const server = await createServer({\n configFile: options.config,\n });\n await server.listen();\n server.printUrls();\n}\n\n/**\n * Run the production build using createBuilder + buildApp.\n * Direct build() calls do NOT trigger the RSC plugin's multi-environment\n * pipeline — createBuilder/buildApp is required.\n */\nexport async function runBuild(options: CommandOptions, _deps?: ViteDeps): Promise<void> {\n const createBuilder = _deps?.createBuilder ?? (await import('vite')).createBuilder;\n const builder = await createBuilder({\n configFile: options.config,\n });\n await builder.buildApp();\n}\n\n/**\n * Determine whether to use the adapter's preview or Vite's built-in preview.\n * Exported for testing — the actual runPreview function uses this internally.\n */\nexport function resolvePreviewStrategy(\n adapter: import('./adapters/types').TimberPlatformAdapter | undefined\n): 'adapter' | 'vite' {\n if (adapter && typeof adapter.preview === 'function') {\n return 'adapter';\n }\n return 'vite';\n}\n\n/**\n * Load timber.config.ts from the project root.\n * Returns the config object with adapter, output, etc.\n * Returns null if no config file is found.\n */\nasync function loadTimberConfig(\n root: string\n): Promise<{ adapter?: import('./adapters/types').TimberPlatformAdapter; output?: string } | null> {\n const { existsSync } = await import('node:fs');\n const { join } = await import('node:path');\n const { pathToFileURL } = await import('node:url');\n\n const configNames = ['timber.config.ts', 'timber.config.js', 'timber.config.mjs'];\n\n for (const name of configNames) {\n const configPath = join(root, name);\n if (existsSync(configPath)) {\n // Use Vite's built-in config loading to handle TypeScript\n const mod = await import(pathToFileURL(configPath).href);\n return mod.default ?? mod;\n }\n }\n return null;\n}\n\n/**\n * Serve the production build for local testing.\n * If the adapter provides a preview() method, it takes priority.\n * Otherwise falls back to Vite's built-in preview server.\n */\nexport async function runPreview(options: CommandOptions, _deps?: ViteDeps): Promise<void> {\n const { join } = await import('node:path');\n\n // Try to load timber config for adapter-specific preview\n const root = process.cwd();\n const config = await loadTimberConfig(root).catch(() => null);\n const adapter = config?.adapter as import('./adapters/types').TimberPlatformAdapter | undefined;\n\n if (resolvePreviewStrategy(adapter) === 'adapter') {\n const buildDir = join(root, 'dist');\n const timberConfig = { output: (config?.output ?? 'server') as 'server' | 'static' };\n await adapter!.preview!(timberConfig, buildDir);\n return;\n }\n\n // Fallback: Vite's built-in preview server\n const preview = _deps?.preview ?? (await import('vite')).preview;\n const server = await preview({\n configFile: options.config,\n });\n server.printUrls();\n}\n\n/**\n * Validate types and routes without producing build output.\n * Runs tsgo --noEmit for type checking.\n */\nexport async function runCheck(options: CommandOptions): Promise<void> {\n const { execFile } = await import('node:child_process');\n\n await new Promise<void>((resolve, reject) => {\n const configArgs = options.config ? ['--project', options.config] : [];\n execFile('tsgo', ['--noEmit', ...configArgs], (err, stdout, stderr) => {\n if (stdout) process.stdout.write(stdout);\n if (stderr) process.stderr.write(stderr);\n if (err) {\n reject(new Error(`Type check failed with exit code ${err.code}`));\n } else {\n resolve();\n }\n });\n });\n}\n\n// ─── Main Entry Point ────────────────────────────────────────────────────────\n\nasync function main(): Promise<void> {\n const parsed = parseArgs(process.argv.slice(2));\n const options: CommandOptions = { config: parsed.config };\n\n switch (parsed.command) {\n case 'dev':\n await runDev(options);\n break;\n case 'build':\n await runBuild(options);\n break;\n case 'preview':\n await runPreview(options);\n break;\n case 'check':\n await runCheck(options);\n break;\n }\n}\n\n// Run main when executed as a CLI (not imported in tests).\n// The bin shim (bin/timber.mjs) does `import '../dist/cli.js'`, so\n// process.argv[1] points to the shim, not this file. We check both:\n// direct execution AND being imported by the timber bin shim.\nconst isDirectExecution =\n typeof process !== 'undefined' &&\n process.argv[1] &&\n (import.meta.url.endsWith(process.argv[1]) ||\n process.argv[1].endsWith('bin/timber.mjs') ||\n process.argv[1].endsWith('bin/timber'));\n\nif (isDirectExecution) {\n main().catch((err) => {\n console.error(err.message);\n process.exit(1);\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","names":[],"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\n// timber.js CLI\n//\n// Wraps Vite commands with timber-specific behavior.\n// See design/18-build-system.md §\"CLI\".\n//\n// Commands:\n// timber dev — Start Vite dev server with HMR\n// timber build — Run multi-environment build via createBuilder/buildApp\n// timber preview — Serve the production build\n// timber check — Validate types + routes without building\n\nconst COMMANDS = ['dev', 'build', 'preview', 'check', 'schema'] as const;\ntype Command = (typeof COMMANDS)[number];\n\nexport interface ParsedArgs {\n command: Command;\n config: string | undefined;\n}\n\nexport interface CommandOptions {\n config?: string;\n}\n\n/**\n * Parse CLI arguments into a structured command + options.\n * Accepts: timber <command> [--config|-c <path>]\n */\nexport function parseArgs(args: string[]): ParsedArgs {\n if (args.length === 0) {\n throw new Error(\n 'No command provided. Usage: timber <dev|build|preview|check|schema> [--config <path>]'\n );\n }\n\n const command = args[0];\n if (!COMMANDS.includes(command as Command)) {\n throw new Error(`Unknown command: ${command}. Available commands: ${COMMANDS.join(', ')}`);\n }\n\n let config: string | undefined;\n for (let i = 1; i < args.length; i++) {\n if (args[i] === '--config' || args[i] === '-c') {\n config = args[++i];\n if (!config) {\n throw new Error('--config requires a path argument');\n }\n }\n }\n\n return { command: command as Command, config };\n}\n\n// ─── Command Implementations ─────────────────────────────────────────────────\n\n/** @internal Dependency injection for testing. */\nexport interface ViteDeps {\n createServer?: typeof import('vite').createServer;\n createBuilder?: typeof import('vite').createBuilder;\n preview?: typeof import('vite').preview;\n}\n\n/**\n * Start the Vite dev server.\n *\n * The timber plugin binds the port immediately with a holding page\n * (in rootSync's config hook) so browsers see a \"starting...\" page\n * instead of ERR_CONNECTION_REFUSED during initialization.\n *\n * See design/21-dev-server.md, TIM-665.\n */\nexport async function runDev(options: CommandOptions, _deps?: ViteDeps): Promise<void> {\n const createServer = _deps?.createServer ?? (await import('vite')).createServer;\n const server = await createServer({\n configFile: options.config,\n });\n await server.listen();\n server.printUrls();\n}\n\n/**\n * Run the production build using createBuilder + buildApp.\n * Direct build() calls do NOT trigger the RSC plugin's multi-environment\n * pipeline — createBuilder/buildApp is required.\n */\nexport async function runBuild(options: CommandOptions, _deps?: ViteDeps): Promise<void> {\n const createBuilder = _deps?.createBuilder ?? (await import('vite')).createBuilder;\n const builder = await createBuilder({\n configFile: options.config,\n });\n await builder.buildApp();\n}\n\n/**\n * Determine whether to use the adapter's preview or Vite's built-in preview.\n * Exported for testing — the actual runPreview function uses this internally.\n */\nexport function resolvePreviewStrategy(\n adapter: import('./adapters/types').TimberPlatformAdapter | undefined\n): 'adapter' | 'vite' {\n if (adapter && typeof adapter.preview === 'function') {\n return 'adapter';\n }\n return 'vite';\n}\n\n/**\n * Load timber.config.ts from the project root.\n * Returns the config object with adapter, output, etc.\n * Returns null if no config file is found.\n */\nasync function loadTimberConfig(root: string): Promise<{\n adapter?: import('./adapters/types').TimberPlatformAdapter;\n output?: string;\n buildDir?: string;\n} | null> {\n const { existsSync } = await import('node:fs');\n const { join } = await import('node:path');\n const { pathToFileURL } = await import('node:url');\n\n const configNames = ['timber.config.ts', 'timber.config.js', 'timber.config.mjs'];\n\n for (const name of configNames) {\n const configPath = join(root, name);\n if (existsSync(configPath)) {\n // Use Vite's built-in config loading to handle TypeScript\n const mod = await import(pathToFileURL(configPath).href);\n return mod.default ?? mod;\n }\n }\n return null;\n}\n\n/**\n * Serve the production build for local testing.\n * If the adapter provides a preview() method, it takes priority.\n * Otherwise falls back to Vite's built-in preview server.\n */\nexport async function runPreview(options: CommandOptions, _deps?: ViteDeps): Promise<void> {\n const { join, resolve } = await import('node:path');\n\n // Try to load timber config for adapter-specific preview\n const root = process.cwd();\n const config = await loadTimberConfig(root).catch(() => null);\n const adapter = config?.adapter as import('./adapters/types').TimberPlatformAdapter | undefined;\n\n if (resolvePreviewStrategy(adapter) === 'adapter') {\n // Resolve build directory: timber config > default .timber/dist\n const buildDir = config?.buildDir\n ? resolve(root, config.buildDir)\n : join(root, '.timber', 'dist');\n const timberConfig = { output: (config?.output ?? 'server') as 'server' | 'static' };\n await adapter!.preview!(timberConfig, buildDir);\n return;\n }\n\n // Fallback: Vite's built-in preview server\n const preview = _deps?.preview ?? (await import('vite')).preview;\n const server = await preview({\n configFile: options.config,\n });\n server.printUrls();\n}\n\n/**\n * Validate types and routes without producing build output.\n * Runs tsgo --noEmit for type checking.\n */\nexport async function runCheck(options: CommandOptions): Promise<void> {\n const { execFile } = await import('node:child_process');\n\n await new Promise<void>((resolve, reject) => {\n const configArgs = options.config ? ['--project', options.config] : [];\n execFile('tsgo', ['--noEmit', ...configArgs], (err, stdout, stderr) => {\n if (stdout) process.stdout.write(stdout);\n if (stderr) process.stderr.write(stderr);\n if (err) {\n reject(new Error(`Type check failed with exit code ${err.code}`));\n } else {\n resolve();\n }\n });\n });\n}\n\n// ─── Schema Subcommand ───────────────────────────────────────────────────────\n\n/**\n * `timber schema sync` — scan filesystem for dynamic segments, diff against\n * app/schema.ts, and append missing entries with type-appropriate codec defaults.\n *\n * See design/41-global-params.md §Auto-Scaffolding\n */\nexport async function runSchema(args: string[]): Promise<void> {\n const subcommand = args[0];\n\n if (subcommand !== 'sync') {\n throw new Error(\n `Unknown schema subcommand: ${subcommand ?? '(none)'}. Usage: timber schema sync`\n );\n }\n\n const { runSchemaSync, defaultCodecForSegment } = await import('./cli-schema-sync.js');\n const result = runSchemaSync(process.cwd());\n\n if (result.filesystemSegments.length === 0) {\n console.log('[timber] No dynamic segments found in app/.');\n return;\n }\n\n if (result.created) {\n console.log(`[timber] Created app/schema.ts with ${result.addedSegments.length} segment(s):`);\n for (const seg of result.addedSegments) {\n console.log(` + ${seg}: ${defaultCodecForSegment(seg)}`);\n }\n return;\n }\n\n if (result.addedSegments.length === 0 && result.removedSegments.length === 0) {\n console.log('[timber] Schema is up to date — all segments are registered.');\n return;\n }\n\n if (result.addedSegments.length > 0) {\n console.log(`[timber] Added ${result.addedSegments.length} segment(s) to app/schema.ts:`);\n for (const seg of result.addedSegments) {\n console.log(` + ${seg}: ${defaultCodecForSegment(seg)}`);\n }\n }\n\n if (result.removedSegments.length > 0) {\n console.log(\n `[timber] Removed ${result.removedSegments.length} stale segment(s) from app/schema.ts:`\n );\n for (const seg of result.removedSegments) {\n console.log(` - ${seg}`);\n }\n }\n}\n\n// ─── Main Entry Point ────────────────────────────────────────────────────────\n\nasync function main(): Promise<void> {\n const parsed = parseArgs(process.argv.slice(2));\n const options: CommandOptions = { config: parsed.config };\n\n switch (parsed.command) {\n case 'dev':\n await runDev(options);\n break;\n case 'build':\n await runBuild(options);\n break;\n case 'preview':\n await runPreview(options);\n break;\n case 'check':\n await runCheck(options);\n break;\n case 'schema':\n await runSchema(process.argv.slice(3));\n break;\n }\n}\n\n// Run main when executed as a CLI (not imported in tests).\n// The bin shim (bin/timber.mjs) does `import '../dist/cli.js'`, so\n// process.argv[1] points to the shim, not this file. We check both:\n// direct execution AND being imported by the timber bin shim.\nconst isDirectExecution =\n typeof process !== 'undefined' &&\n process.argv[1] &&\n (import.meta.url.endsWith(process.argv[1]) ||\n process.argv[1].endsWith('bin/timber.mjs') ||\n process.argv[1].endsWith('bin/timber'));\n\nif (isDirectExecution) {\n main().catch((err) => {\n console.error(err.message);\n process.exit(1);\n });\n}\n"],"mappings":";;AAaA,IAAM,WAAW;CAAC;CAAO;CAAS;CAAW;CAAS;CAAS;;;;;AAgB/D,SAAgB,UAAU,MAA4B;AACpD,KAAI,KAAK,WAAW,EAClB,OAAM,IAAI,MACR,wFACD;CAGH,MAAM,UAAU,KAAK;AACrB,KAAI,CAAC,SAAS,SAAS,QAAmB,CACxC,OAAM,IAAI,MAAM,oBAAoB,QAAQ,wBAAwB,SAAS,KAAK,KAAK,GAAG;CAG5F,IAAI;AACJ,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,KAAI,KAAK,OAAO,cAAc,KAAK,OAAO,MAAM;AAC9C,WAAS,KAAK,EAAE;AAChB,MAAI,CAAC,OACH,OAAM,IAAI,MAAM,oCAAoC;;AAK1D,QAAO;EAAW;EAAoB;EAAQ;;;;;;;;;;;AAqBhD,eAAsB,OAAO,SAAyB,OAAiC;CAErF,MAAM,SAAS,OADM,OAAO,iBAAiB,MAAM,OAAO,SAAS,cACjC,EAChC,YAAY,QAAQ,QACrB,CAAC;AACF,OAAM,OAAO,QAAQ;AACrB,QAAO,WAAW;;;;;;;AAQpB,eAAsB,SAAS,SAAyB,OAAiC;AAKvF,QAHgB,OADM,OAAO,kBAAkB,MAAM,OAAO,SAAS,eACjC,EAClC,YAAY,QAAQ,QACrB,CAAC,EACY,UAAU;;;;;;AAO1B,SAAgB,uBACd,SACoB;AACpB,KAAI,WAAW,OAAO,QAAQ,YAAY,WACxC,QAAO;AAET,QAAO;;;;;;;AAQT,eAAe,iBAAiB,MAItB;CACR,MAAM,EAAE,eAAe,MAAM,OAAO;CACpC,MAAM,EAAE,SAAS,MAAM,OAAO;CAC9B,MAAM,EAAE,kBAAkB,MAAM,OAAO;AAIvC,MAAK,MAAM,QAFS;EAAC;EAAoB;EAAoB;EAAoB,EAEjD;EAC9B,MAAM,aAAa,KAAK,MAAM,KAAK;AACnC,MAAI,WAAW,WAAW,EAAE;GAE1B,MAAM,MAAM,MAAM,OAAO,cAAc,WAAW,CAAC;AACnD,UAAO,IAAI,WAAW;;;AAG1B,QAAO;;;;;;;AAQT,eAAsB,WAAW,SAAyB,OAAiC;CACzF,MAAM,EAAE,MAAM,YAAY,MAAM,OAAO;CAGvC,MAAM,OAAO,QAAQ,KAAK;CAC1B,MAAM,SAAS,MAAM,iBAAiB,KAAK,CAAC,YAAY,KAAK;CAC7D,MAAM,UAAU,QAAQ;AAExB,KAAI,uBAAuB,QAAQ,KAAK,WAAW;EAEjD,MAAM,WAAW,QAAQ,WACrB,QAAQ,MAAM,OAAO,SAAS,GAC9B,KAAK,MAAM,WAAW,OAAO;EACjC,MAAM,eAAe,EAAE,QAAS,QAAQ,UAAU,UAAkC;AACpF,QAAM,QAAS,QAAS,cAAc,SAAS;AAC/C;;AAQF,EAHe,OADC,OAAO,YAAY,MAAM,OAAO,SAAS,SAC5B,EAC3B,YAAY,QAAQ,QACrB,CAAC,EACK,WAAW;;;;;;AAOpB,eAAsB,SAAS,SAAwC;CACrE,MAAM,EAAE,aAAa,MAAM,OAAO;AAElC,OAAM,IAAI,SAAe,SAAS,WAAW;AAE3C,WAAS,QAAQ,CAAC,YAAY,GADX,QAAQ,SAAS,CAAC,aAAa,QAAQ,OAAO,GAAG,EAAE,CAC1B,GAAG,KAAK,QAAQ,WAAW;AACrE,OAAI,OAAQ,SAAQ,OAAO,MAAM,OAAO;AACxC,OAAI,OAAQ,SAAQ,OAAO,MAAM,OAAO;AACxC,OAAI,IACF,wBAAO,IAAI,MAAM,oCAAoC,IAAI,OAAO,CAAC;OAEjE,UAAS;IAEX;GACF;;;;;;;;AAWJ,eAAsB,UAAU,MAA+B;CAC7D,MAAM,aAAa,KAAK;AAExB,KAAI,eAAe,OACjB,OAAM,IAAI,MACR,8BAA8B,cAAc,SAAS,6BACtD;CAGH,MAAM,EAAE,eAAe,2BAA2B,MAAM,OAAO;CAC/D,MAAM,SAAS,cAAc,QAAQ,KAAK,CAAC;AAE3C,KAAI,OAAO,mBAAmB,WAAW,GAAG;AAC1C,UAAQ,IAAI,8CAA8C;AAC1D;;AAGF,KAAI,OAAO,SAAS;AAClB,UAAQ,IAAI,uCAAuC,OAAO,cAAc,OAAO,cAAc;AAC7F,OAAK,MAAM,OAAO,OAAO,cACvB,SAAQ,IAAI,OAAO,IAAI,IAAI,uBAAuB,IAAI,GAAG;AAE3D;;AAGF,KAAI,OAAO,cAAc,WAAW,KAAK,OAAO,gBAAgB,WAAW,GAAG;AAC5E,UAAQ,IAAI,+DAA+D;AAC3E;;AAGF,KAAI,OAAO,cAAc,SAAS,GAAG;AACnC,UAAQ,IAAI,kBAAkB,OAAO,cAAc,OAAO,+BAA+B;AACzF,OAAK,MAAM,OAAO,OAAO,cACvB,SAAQ,IAAI,OAAO,IAAI,IAAI,uBAAuB,IAAI,GAAG;;AAI7D,KAAI,OAAO,gBAAgB,SAAS,GAAG;AACrC,UAAQ,IACN,oBAAoB,OAAO,gBAAgB,OAAO,uCACnD;AACD,OAAK,MAAM,OAAO,OAAO,gBACvB,SAAQ,IAAI,OAAO,MAAM;;;AAO/B,eAAe,OAAsB;CACnC,MAAM,SAAS,UAAU,QAAQ,KAAK,MAAM,EAAE,CAAC;CAC/C,MAAM,UAA0B,EAAE,QAAQ,OAAO,QAAQ;AAEzD,SAAQ,OAAO,SAAf;EACE,KAAK;AACH,SAAM,OAAO,QAAQ;AACrB;EACF,KAAK;AACH,SAAM,SAAS,QAAQ;AACvB;EACF,KAAK;AACH,SAAM,WAAW,QAAQ;AACzB;EACF,KAAK;AACH,SAAM,SAAS,QAAQ;AACvB;EACF,KAAK;AACH,SAAM,UAAU,QAAQ,KAAK,MAAM,EAAE,CAAC;AACtC;;;AAeN,IANE,OAAO,YAAY,eACnB,QAAQ,KAAK,OACZ,OAAO,KAAK,IAAI,SAAS,QAAQ,KAAK,GAAG,IACxC,QAAQ,KAAK,GAAG,SAAS,iBAAiB,IAC1C,QAAQ,KAAK,GAAG,SAAS,aAAa,EAGxC,OAAM,CAAC,OAAO,QAAQ;AACpB,SAAQ,MAAM,IAAI,QAAQ;AAC1B,SAAQ,KAAK,EAAE;EACf"}
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Dev-only browser helpers — server log replay and client error forwarding.
2
+ * Dev-only browser helpers — server log replay, client error forwarding,
3
+ * and compiling overlay.
3
4
  *
4
5
  * These are only active when import.meta.hot is available (Vite dev mode).
5
6
  * Extracted from browser-entry.ts to keep files under 500 lines.
@@ -18,6 +19,31 @@ export interface HotInterface {
18
19
  * a styled "[SERVER]" badge and call the matching console method.
19
20
  */
20
21
  export declare function setupServerLogReplay(hot: Pick<HotInterface, 'on'>): void;
22
+ /**
23
+ * Signal that an HMR/module update has started.
24
+ *
25
+ * If an update is already tracked, this increments the counter.
26
+ * The overlay is shown after SHOW_DELAY_MS to avoid flashing
27
+ * for fast updates.
28
+ *
29
+ * When the delay is 0 (E2E test override), the overlay is shown
30
+ * synchronously to eliminate the race where hideCompilingOverlay()
31
+ * clears the show timeout before it fires.
32
+ */
33
+ export declare function showCompilingOverlay(): void;
34
+ /**
35
+ * Signal that an HMR/module update has completed.
36
+ *
37
+ * When all pending updates are resolved, the overlay is hidden.
38
+ * If the overlay was never shown (update completed within the
39
+ * debounce window), the timeout is cleared — no visual flash.
40
+ *
41
+ * Test hook: if `window.__timber_hold_compiling_overlay` is true,
42
+ * the overlay stays visible. E2E tests use this to avoid a race
43
+ * where the RSC refresh completes between polling intervals,
44
+ * making the overlay impossible to observe.
45
+ */
46
+ export declare function hideCompilingOverlay(): void;
21
47
  /**
22
48
  * Set up global error handlers that forward uncaught client-side
23
49
  * errors to the dev server via Vite's HMR channel.
@@ -26,4 +52,11 @@ export declare function setupServerLogReplay(hot: Pick<HotInterface, 'on'>): voi
26
52
  * back as Vite '{ type: "error" }' payloads to trigger the overlay.
27
53
  */
28
54
  export declare function setupClientErrorForwarding(hot: Pick<HotInterface, 'send'>): void;
55
+ /**
56
+ * Detect errors whose `digest` marks them as a framework control-flow signal
57
+ * (RedirectSignal, DenySignal). These must never surface as dev overlays —
58
+ * they are expected during navigation and are handled by the error boundary
59
+ * and router. Exported for tests.
60
+ */
61
+ export declare function isFrameworkSignalError(error: unknown): boolean;
29
62
  //# sourceMappingURL=browser-dev.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-dev.d.ts","sourceRoot":"","sources":["../../src/client/browser-dev.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1C;AAqDD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,IAAI,CAwBxE;AAID;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,IAAI,CA8BhF"}
1
+ {"version":3,"file":"browser-dev.d.ts","sourceRoot":"","sources":["../../src/client/browser-dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1C;AAqDD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,IAAI,CAwBxE;AAoED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAmB3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAc3C;AAID;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,IAAI,CAoChF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAW9D"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Server Action Dispatch — registers the callServer callback.
3
+ *
4
+ * When React encounters a server reference (from `'use server'` modules),
5
+ * it calls `callServer(id, args)` to dispatch the action to the server.
6
+ * The RSC plugin delegates to `globalThis.__viteRscCallServer` which is
7
+ * set by `setServerCallback`.
8
+ *
9
+ * The callback:
10
+ * 1. Serializes args via `encodeReply` (RSC wire format)
11
+ * 2. POSTs to the current URL with `Accept: text/x-component`
12
+ * 3. Decodes the RSC response stream
13
+ *
14
+ * See design/08-forms-and-actions.md §"Client-Side Form Mechanics"
15
+ */
16
+ export declare function setupServerActions(): void;
17
+ //# sourceMappingURL=action-dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-dispatch.d.ts","sourceRoot":"","sources":["../../../src/client/browser-entry/action-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,wBAAgB,kBAAkB,IAAI,IAAI,CAsGzC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * HMR & Dev Tooling — dev-only wiring for hot module replacement.
3
+ *
4
+ * Handles:
5
+ * - RSC module invalidation (rsc:update → router.refresh())
6
+ * - Dev warnings forwarded from server via WebSocket
7
+ * - Server console log replay in browser
8
+ * - Client error forwarding to Vite error overlay
9
+ *
10
+ * See design/21-dev-server.md §"HMR Wiring"
11
+ */
12
+ import type { RouterInstance } from '#client-internal';
13
+ /**
14
+ * Set up HMR and dev tool integration.
15
+ *
16
+ * Reads `import.meta.hot` to register dev-only event listeners.
17
+ * In production builds, `import.meta.hot` is undefined and this
18
+ * function is a no-op.
19
+ */
20
+ export declare function setupHmr(router: RouterInstance): void;
21
+ //# sourceMappingURL=hmr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmr.d.ts","sourceRoot":"","sources":["../../../src/client/browser-entry/hmr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAavD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAgDrD"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Hydration — pre-hydration sequence and React root creation.
3
+ *
4
+ * Handles two paths:
5
+ * 1. RSC payload available: hydrateRoot with NavigationProvider wrapping
6
+ * 2. No RSC payload: deferred root creation via installDeferredNavigation
7
+ *
8
+ * Pre-hydration ordering contract (MUST execute in this order):
9
+ * 1. initRouter() — creates the global router so useRouter()
10
+ * works during render
11
+ * 2. setCurrentParams() — populates params snapshot so
12
+ * + setNavigationState() useSegmentParams() and usePathname()
13
+ * return correct values during hydration
14
+ * 3. hydrateRoot() — synchronously executes component render
15
+ * functions that depend on steps 1-2
16
+ *
17
+ * See design/19-client-navigation.md §"NavigationContext"
18
+ */
19
+ import type { TopLoaderConfig } from '../top-loader.js';
20
+ import type { RscStreamResult } from './rsc-stream.js';
21
+ interface HydrateOptions {
22
+ /** RSC stream result (null if no inlined payload) */
23
+ rscResult: RscStreamResult | null;
24
+ /** Runtime config from virtual:timber-config */
25
+ config: {
26
+ topLoader?: TopLoaderConfig;
27
+ };
28
+ }
29
+ /**
30
+ * Run the pre-hydration sequence: read server-embedded params and
31
+ * set navigation state. Must be called AFTER initRouter().
32
+ */
33
+ export declare function runPreHydration(): void;
34
+ /**
35
+ * Hydrate the React tree or set up deferred root creation.
36
+ *
37
+ * When an RSC payload is available, wraps it with NavigationProvider +
38
+ * TimberNuqsAdapter + NavigationRoot and calls hydrateRoot on the
39
+ * document.
40
+ *
41
+ * When no RSC payload is available (JS-only client), sets up deferred
42
+ * navigation so the first client navigation creates the React root.
43
+ */
44
+ export declare function hydrateApp({ rscResult, config }: HydrateOptions): void;
45
+ export {};
46
+ //# sourceMappingURL=hydrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../../../src/client/browser-entry/hydrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAcH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,UAAU,cAAc;IACtB,qDAAqD;IACrD,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,gDAAgD;IAChD,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,eAAe,CAAA;KAAE,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAiBtC;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,cAAc,GAAG,IAAI,CA6EtE"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Browser Entry — Client-side hydration and navigation bootstrap.
3
+ *
4
+ * This is the thin orchestrator that coordinates the bootstrap sequence.
5
+ * Each responsibility is extracted into a focused module:
6
+ *
7
+ * action-dispatch.ts — server action callServer callback
8
+ * rsc-stream.ts — __timber_f chunk handling + ReadableStream
9
+ * router-init.ts — createRouter + Navigation API setup
10
+ * hydrate.ts — pre-hydration sequence + hydrateRoot/createRoot
11
+ * post-hydration.ts — history stack, segment cache, popstate, scroll
12
+ * hmr.ts — dev-only HMR + error forwarding
13
+ * scroll.ts — getScrollY helper
14
+ *
15
+ * Bootstrap call order contract:
16
+ *
17
+ * 1. setupServerActions() — register callServer (independent)
18
+ * 2. createRscPayloadStream() — decode inlined RSC payload
19
+ * 3. createTimberRouter() — create router + Navigation API
20
+ * 4. runPreHydration() — set params + navigation state
21
+ * 5. hydrateApp() — hydrateRoot or deferred createRoot
22
+ * 6. setupPostHydration() — history stack, popstate, scroll
23
+ * 7. setupHmr() — dev-only HMR wiring
24
+ * 8. stale reload handlers — global error listeners
25
+ * 9. timber-ready signal — E2E test readiness indicator
26
+ *
27
+ * Design docs: 18-build-system.md §"Entry Files", 19-client-navigation.md
28
+ */
29
+ import 'virtual:timber-search-params-registry';
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/browser-entry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAQH,OAAO,uCAAuC,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Post-Hydration Wiring — history stack, segment cache, popstate, scroll.
3
+ *
4
+ * Sets up everything that needs to happen after the React root exists:
5
+ * - Stores initial page in history stack for instant back navigation
6
+ * - Initializes scroll state for the initial entry
7
+ * - Populates segment cache from server-embedded metadata
8
+ * - Registers popstate handler for back/forward navigation
9
+ * - Sets up debounced scroll position saving
10
+ *
11
+ * See design/19-client-navigation.md §"History Stack"
12
+ */
13
+ import type { RouterInstance } from '#client-internal';
14
+ import type { NavigationApiController } from '../navigation-api.js';
15
+ interface PostHydrationOptions {
16
+ router: RouterInstance;
17
+ navApiController: NavigationApiController | null;
18
+ /** Decoded RSC element from initial SSR (null if no RSC payload) */
19
+ initialElement: unknown;
20
+ }
21
+ /**
22
+ * Wire up post-hydration event handlers and state.
23
+ */
24
+ export declare function setupPostHydration({ router, navApiController, initialElement, }: PostHydrationOptions): void;
25
+ export {};
26
+ //# sourceMappingURL=post-hydration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-hydration.d.ts","sourceRoot":"","sources":["../../../src/client/browser-entry/post-hydration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAGpE,UAAU,oBAAoB;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjD,oEAAoE;IACpE,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,gBAAgB,EAChB,cAAc,GACf,EAAE,oBAAoB,GAAG,IAAI,CA+E7B"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Router Initialization — creates the timber router with all dependencies.
3
+ *
4
+ * Wires up RouterDeps (fetch, history, scroll, RSC decoding, render
5
+ * callbacks) and optionally sets up Navigation API integration.
6
+ *
7
+ * See design/19-client-navigation.md §"Navigation API Integration"
8
+ */
9
+ import type { RouterInstance } from '#client-internal';
10
+ import { type NavigationApiController } from '../navigation-api.js';
11
+ export interface RouterInitOptions {
12
+ initialElement?: unknown;
13
+ }
14
+ export interface RouterInitResult {
15
+ router: RouterInstance;
16
+ navApiController: NavigationApiController | null;
17
+ }
18
+ /**
19
+ * Create and register the global timber router.
20
+ *
21
+ * Must be called before hydrateRoot so `useRouter()` works during
22
+ * the initial render (methods lazily resolve the router at invocation,
23
+ * not render time, but initRouter must still run first).
24
+ */
25
+ export declare function createTimberRouter(options?: RouterInitOptions): RouterInitResult;
26
+ //# sourceMappingURL=router-init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-init.d.ts","sourceRoot":"","sources":["../../../src/client/browser-entry/router-init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQnE,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,cAAc,CAAC;IACvB,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,CA+KhF"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * RSC Stream Bootstrap — decodes the server-inlined RSC payload.
3
+ *
4
+ * The RSC payload is embedded in the HTML as progressive inline script
5
+ * tags that call `self.__timber_f.push([type, data])` as RSC chunks arrive.
6
+ * Typed tuples: [0] = bootstrap signal, [1, string] = Flight data chunk.
7
+ *
8
+ * This module sets up a ReadableStream fed by those push() calls so
9
+ * `createFromReadableStream` can decode the Flight protocol progressively.
10
+ *
11
+ * See design/18-build-system.md §"Entry Files"
12
+ */
13
+ export interface RscStreamResult {
14
+ /** The decoded RSC element (thenable/lazy — resolved by React during render) */
15
+ element: unknown;
16
+ }
17
+ /**
18
+ * Create the RSC payload stream from server-inlined `__timber_f` chunks.
19
+ *
20
+ * Returns null if no RSC payload was inlined (e.g., JS-only client).
21
+ * When a payload exists, returns the decoded element for hydration.
22
+ */
23
+ export declare function createRscPayloadStream(): RscStreamResult | null;
24
+ //# sourceMappingURL=rsc-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsc-stream.d.ts","sourceRoot":"","sources":["../../../src/client/browser-entry/rsc-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,GAAG,IAAI,CA+H/D"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Scroll position helpers for the browser entry.
3
+ *
4
+ * Reads scroll position from the document viewport or explicitly marked
5
+ * `data-timber-scroll-restoration` containers.
6
+ *
7
+ * See design/19-client-navigation.md §"Overflow Scroll Containers".
8
+ */
9
+ /**
10
+ * Read the current scroll position.
11
+ *
12
+ * Checks window scroll first, then explicit `data-timber-scroll-restoration`
13
+ * containers. With segment tree merging, shared layouts are reconciled in
14
+ * place via `cloneElement` — React preserves their DOM and scroll state
15
+ * naturally. We don't need to auto-detect overflow containers; only
16
+ * explicitly marked containers are tracked.
17
+ */
18
+ export declare function getScrollY(): number;
19
+ //# sourceMappingURL=scroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../src/client/browser-entry/scroll.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAQnC"}
@@ -18,17 +18,24 @@
18
18
  import { Component, type ReactNode } from 'react';
19
19
  export interface TimberErrorBoundaryProps {
20
20
  /** The component to render when an error is caught. */
21
- fallbackComponent: (...args: unknown[]) => ReactNode;
21
+ fallbackComponent?: (...args: unknown[]) => ReactNode;
22
+ /**
23
+ * Pre-rendered fallback element. Used for MDX status files which are server
24
+ * components and cannot be passed as function props across the RSC→client
25
+ * boundary. When set, rendered directly instead of calling fallbackComponent.
26
+ *
27
+ * See design/10-error-handling.md §"Status-Code File Variants" — MDX status
28
+ * files are server components by default (zero client JS).
29
+ */
30
+ fallbackElement?: ReactNode;
22
31
  /**
23
32
  * Status code filter. If set, only catches errors matching this status.
24
33
  * 400 = any 4xx, 500 = any 5xx, specific number = exact match.
25
34
  */
26
35
  status?: number;
27
36
  /**
28
- * When true, catching a DenySignal sets _denyHandledByBoundary on the
29
- * nav context to prevent page-level deny promotion. Only slot catch-all
30
- * boundaries should set this — segment boundaries (403.tsx, 4xx.tsx,
31
- * error.tsx) must NOT, otherwise normal page denies get swallowed.
37
+ * When true, this boundary wraps a parallel slot. Slot denials are
38
+ * graceful degradation — they must NOT change the HTTP status code.
32
39
  */
33
40
  isSlotBoundary?: boolean;
34
41
  children: ReactNode;