@timber-js/app 0.2.0-alpha.11 → 0.2.0-alpha.111

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 (755) hide show
  1. package/dist/_chunks/actions-ILhDUzES.js +1094 -0
  2. package/dist/_chunks/actions-ILhDUzES.js.map +1 -0
  3. package/dist/_chunks/build-output-helper-DhxiT18k.js +61 -0
  4. package/dist/_chunks/build-output-helper-DhxiT18k.js.map +1 -0
  5. package/dist/_chunks/cli-schema-sync-BvvuK8Rp.js +137 -0
  6. package/dist/_chunks/cli-schema-sync-BvvuK8Rp.js.map +1 -0
  7. package/dist/_chunks/cli-schema-sync-i2OEL2-p.js +2 -0
  8. package/dist/_chunks/codec-registry-V7ARyeLN.js +21 -0
  9. package/dist/_chunks/codec-registry-V7ARyeLN.js.map +1 -0
  10. package/dist/_chunks/define-8zQ8Vm7x.js +195 -0
  11. package/dist/_chunks/define-8zQ8Vm7x.js.map +1 -0
  12. package/dist/_chunks/define-a0CCE6Nx.js +124 -0
  13. package/dist/_chunks/define-a0CCE6Nx.js.map +1 -0
  14. package/dist/_chunks/format-CR6v1pWE.js +14 -0
  15. package/dist/_chunks/format-CR6v1pWE.js.map +1 -0
  16. package/dist/_chunks/handler-store-iqnt2ghN.js +54 -0
  17. package/dist/_chunks/handler-store-iqnt2ghN.js.map +1 -0
  18. package/dist/_chunks/logger-DDmK5skc.js +291 -0
  19. package/dist/_chunks/logger-DDmK5skc.js.map +1 -0
  20. package/dist/_chunks/merge-search-params-CwxJzBLS.js +41 -0
  21. package/dist/_chunks/merge-search-params-CwxJzBLS.js.map +1 -0
  22. package/dist/_chunks/navigation-root-CY3pRMxF.js +96 -0
  23. package/dist/_chunks/navigation-root-CY3pRMxF.js.map +1 -0
  24. package/dist/_chunks/registry-Dp_hJL4s.js +20 -0
  25. package/dist/_chunks/registry-Dp_hJL4s.js.map +1 -0
  26. package/dist/_chunks/resolve-schema-DO8B0mO9.js +65 -0
  27. package/dist/_chunks/resolve-schema-DO8B0mO9.js.map +1 -0
  28. package/dist/_chunks/router-ref-sektkr-t.js +28 -0
  29. package/dist/_chunks/router-ref-sektkr-t.js.map +1 -0
  30. package/dist/_chunks/scanner-DmfoB7iK.js +336 -0
  31. package/dist/_chunks/scanner-DmfoB7iK.js.map +1 -0
  32. package/dist/_chunks/schema-bridge-eL5vQDSA.js +86 -0
  33. package/dist/_chunks/schema-bridge-eL5vQDSA.js.map +1 -0
  34. package/dist/_chunks/segment-classify-CnfLLvir.js +137 -0
  35. package/dist/_chunks/segment-classify-CnfLLvir.js.map +1 -0
  36. package/dist/_chunks/segment-context-EsfQpS--.js +34 -0
  37. package/dist/_chunks/segment-context-EsfQpS--.js.map +1 -0
  38. package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-BO5OvEvg.js} +1 -1
  39. package/dist/_chunks/ssr-data-BO5OvEvg.js.map +1 -0
  40. package/dist/_chunks/stale-reload-BCPRG0Cv.js +64 -0
  41. package/dist/_chunks/stale-reload-BCPRG0Cv.js.map +1 -0
  42. package/dist/_chunks/tracing-DvKLzCFa.js +329 -0
  43. package/dist/_chunks/tracing-DvKLzCFa.js.map +1 -0
  44. package/dist/_chunks/{use-query-states-D5KaffOK.js → use-query-states-D9SBlAfp.js} +7 -20
  45. package/dist/_chunks/use-query-states-D9SBlAfp.js.map +1 -0
  46. package/dist/_chunks/use-segment-params-BSt_O2cb.js +185 -0
  47. package/dist/_chunks/use-segment-params-BSt_O2cb.js.map +1 -0
  48. package/dist/_chunks/validation-Bm3Je-09.js +84 -0
  49. package/dist/_chunks/validation-Bm3Je-09.js.map +1 -0
  50. package/dist/_chunks/walkers-DGTmJT0f.js +606 -0
  51. package/dist/_chunks/walkers-DGTmJT0f.js.map +1 -0
  52. package/dist/_chunks/{format-DviM89f0.js → warnings-B30wpfaS.js} +6 -45
  53. package/dist/_chunks/warnings-B30wpfaS.js.map +1 -0
  54. package/dist/adapters/build-output-helper.d.ts +28 -0
  55. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  56. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  57. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  58. package/dist/adapters/cloudflare-dev.js +73 -0
  59. package/dist/adapters/cloudflare-dev.js.map +1 -0
  60. package/dist/adapters/cloudflare-kv-cache.d.ts +64 -0
  61. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  62. package/dist/adapters/cloudflare-kv-cache.js +95 -0
  63. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  64. package/dist/adapters/cloudflare.d.ts +148 -12
  65. package/dist/adapters/cloudflare.d.ts.map +1 -1
  66. package/dist/adapters/cloudflare.js +142 -38
  67. package/dist/adapters/cloudflare.js.map +1 -1
  68. package/dist/adapters/compress-module.d.ts.map +1 -1
  69. package/dist/adapters/nitro.d.ts +17 -1
  70. package/dist/adapters/nitro.d.ts.map +1 -1
  71. package/dist/adapters/nitro.js +143 -45
  72. package/dist/adapters/nitro.js.map +1 -1
  73. package/dist/adapters/shared.d.ts +16 -0
  74. package/dist/adapters/shared.d.ts.map +1 -0
  75. package/dist/cache/cache-api.d.ts +24 -0
  76. package/dist/cache/cache-api.d.ts.map +1 -0
  77. package/dist/cache/handler-store.d.ts +31 -0
  78. package/dist/cache/handler-store.d.ts.map +1 -0
  79. package/dist/cache/index.d.ts +23 -7
  80. package/dist/cache/index.d.ts.map +1 -1
  81. package/dist/cache/index.js +151 -81
  82. package/dist/cache/index.js.map +1 -1
  83. package/dist/cache/singleflight.d.ts +18 -1
  84. package/dist/cache/singleflight.d.ts.map +1 -1
  85. package/dist/cache/sizeof.d.ts +22 -0
  86. package/dist/cache/sizeof.d.ts.map +1 -0
  87. package/dist/cache/timber-cache.d.ts +1 -1
  88. package/dist/cache/timber-cache.d.ts.map +1 -1
  89. package/dist/cli-schema-sync.d.ts +37 -0
  90. package/dist/cli-schema-sync.d.ts.map +1 -0
  91. package/dist/cli.d.ts +14 -2
  92. package/dist/cli.d.ts.map +1 -1
  93. package/dist/cli.js +42 -6
  94. package/dist/cli.js.map +1 -1
  95. package/dist/client/browser-dev.d.ts +34 -1
  96. package/dist/client/browser-dev.d.ts.map +1 -1
  97. package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
  98. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  99. package/dist/client/browser-entry/hmr.d.ts +21 -0
  100. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  101. package/dist/client/browser-entry/hydrate.d.ts +46 -0
  102. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  103. package/dist/client/browser-entry/index.d.ts +30 -0
  104. package/dist/client/browser-entry/index.d.ts.map +1 -0
  105. package/dist/client/browser-entry/post-hydration.d.ts +26 -0
  106. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  107. package/dist/client/browser-entry/router-init.d.ts +23 -0
  108. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  109. package/dist/client/browser-entry/rsc-stream.d.ts +24 -0
  110. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  111. package/dist/client/browser-entry/scroll.d.ts +19 -0
  112. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  113. package/dist/client/error-boundary.d.ts +12 -5
  114. package/dist/client/error-boundary.d.ts.map +1 -1
  115. package/dist/client/error-boundary.js +29 -6
  116. package/dist/client/error-boundary.js.map +1 -1
  117. package/dist/client/error-reconstituter.d.ts +54 -0
  118. package/dist/client/error-reconstituter.d.ts.map +1 -0
  119. package/dist/client/form.d.ts +16 -27
  120. package/dist/client/form.d.ts.map +1 -1
  121. package/dist/client/history.d.ts +19 -4
  122. package/dist/client/history.d.ts.map +1 -1
  123. package/dist/client/index.d.ts +9 -24
  124. package/dist/client/index.d.ts.map +1 -1
  125. package/dist/client/index.js +172 -1100
  126. package/dist/client/index.js.map +1 -1
  127. package/dist/client/internal.d.ts +19 -0
  128. package/dist/client/internal.d.ts.map +1 -0
  129. package/dist/client/internal.js +964 -0
  130. package/dist/client/internal.js.map +1 -0
  131. package/dist/client/link-pending-store.d.ts +63 -0
  132. package/dist/client/link-pending-store.d.ts.map +1 -0
  133. package/dist/client/link.d.ts +62 -55
  134. package/dist/client/link.d.ts.map +1 -1
  135. package/dist/client/nav-link-store.d.ts +36 -0
  136. package/dist/client/nav-link-store.d.ts.map +1 -0
  137. package/dist/client/navigation-api-types.d.ts +90 -0
  138. package/dist/client/navigation-api-types.d.ts.map +1 -0
  139. package/dist/client/navigation-api.d.ts +115 -0
  140. package/dist/client/navigation-api.d.ts.map +1 -0
  141. package/dist/client/navigation-context.d.ts +13 -2
  142. package/dist/client/navigation-context.d.ts.map +1 -1
  143. package/dist/client/{transition-root.d.ts → navigation-root.d.ts} +42 -8
  144. package/dist/client/navigation-root.d.ts.map +1 -0
  145. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  146. package/dist/client/router-ref.d.ts +1 -1
  147. package/dist/client/router.d.ts +70 -4
  148. package/dist/client/router.d.ts.map +1 -1
  149. package/dist/client/rsc-fetch.d.ts +38 -3
  150. package/dist/client/rsc-fetch.d.ts.map +1 -1
  151. package/dist/client/segment-cache.d.ts +1 -1
  152. package/dist/client/segment-cache.d.ts.map +1 -1
  153. package/dist/client/segment-outlet.d.ts +63 -0
  154. package/dist/client/segment-outlet.d.ts.map +1 -0
  155. package/dist/client/ssr-data.d.ts +13 -4
  156. package/dist/client/ssr-data.d.ts.map +1 -1
  157. package/dist/client/stale-reload.d.ts +15 -0
  158. package/dist/client/stale-reload.d.ts.map +1 -1
  159. package/dist/client/state.d.ts +1 -1
  160. package/dist/client/top-loader.d.ts +5 -5
  161. package/dist/client/top-loader.d.ts.map +1 -1
  162. package/dist/client/use-cookie.d.ts +12 -0
  163. package/dist/client/use-cookie.d.ts.map +1 -1
  164. package/dist/client/use-link-status.d.ts +5 -5
  165. package/dist/client/use-link-status.d.ts.map +1 -1
  166. package/dist/client/{use-navigation-pending.d.ts → use-pending-navigation.d.ts} +4 -4
  167. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  168. package/dist/client/use-query-states.d.ts +1 -1
  169. package/dist/client/use-query-states.d.ts.map +1 -1
  170. package/dist/client/use-router.d.ts +1 -1
  171. package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +7 -5
  172. package/dist/client/use-segment-params.d.ts.map +1 -0
  173. package/dist/codec.d.ts +33 -0
  174. package/dist/codec.d.ts.map +1 -0
  175. package/dist/codec.js +2 -0
  176. package/dist/config-types.d.ts +294 -0
  177. package/dist/config-types.d.ts.map +1 -0
  178. package/dist/config-validation.d.ts +51 -0
  179. package/dist/config-validation.d.ts.map +1 -0
  180. package/dist/content/index.d.ts +1 -10
  181. package/dist/content/index.d.ts.map +1 -1
  182. package/dist/content/index.js +0 -2
  183. package/dist/cookies/define-cookie.d.ts +58 -25
  184. package/dist/cookies/define-cookie.d.ts.map +1 -1
  185. package/dist/cookies/index.d.ts +2 -1
  186. package/dist/cookies/index.d.ts.map +1 -1
  187. package/dist/cookies/index.js +251 -36
  188. package/dist/cookies/index.js.map +1 -1
  189. package/dist/cookies/json-cookie.d.ts +64 -0
  190. package/dist/cookies/json-cookie.d.ts.map +1 -0
  191. package/dist/cookies/validation.d.ts +46 -0
  192. package/dist/cookies/validation.d.ts.map +1 -0
  193. package/dist/dev-tools/404-page.d.ts +46 -0
  194. package/dist/dev-tools/404-page.d.ts.map +1 -0
  195. package/dist/dev-tools/browser-logs.d.ts +84 -0
  196. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  197. package/dist/dev-tools/error-page.d.ts +58 -0
  198. package/dist/dev-tools/error-page.d.ts.map +1 -0
  199. package/dist/dev-tools/holding-server.d.ts +54 -0
  200. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  201. package/dist/dev-tools/index.d.ts +31 -0
  202. package/dist/dev-tools/index.d.ts.map +1 -0
  203. package/dist/{server/dev-span-processor.d.ts → dev-tools/instrumentation.d.ts} +26 -6
  204. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  205. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  206. package/dist/dev-tools/logger.d.ts.map +1 -0
  207. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +2 -2
  208. package/dist/dev-tools/logs.d.ts.map +1 -0
  209. package/dist/dev-tools/overlay.d.ts +91 -0
  210. package/dist/dev-tools/overlay.d.ts.map +1 -0
  211. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  212. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  213. package/dist/dev-tools/terminal.d.ts +28 -0
  214. package/dist/dev-tools/terminal.d.ts.map +1 -0
  215. package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +2 -22
  216. package/dist/dev-tools/warnings.d.ts.map +1 -0
  217. package/dist/fonts/ast.d.ts +98 -6
  218. package/dist/fonts/ast.d.ts.map +1 -1
  219. package/dist/fonts/bundle.d.ts +48 -0
  220. package/dist/fonts/bundle.d.ts.map +1 -0
  221. package/dist/fonts/css.d.ts +1 -0
  222. package/dist/fonts/css.d.ts.map +1 -1
  223. package/dist/fonts/dev-middleware.d.ts +22 -0
  224. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  225. package/dist/fonts/local.d.ts +1 -1
  226. package/dist/fonts/pipeline.d.ts +167 -0
  227. package/dist/fonts/pipeline.d.ts.map +1 -0
  228. package/dist/fonts/transform.d.ts +78 -0
  229. package/dist/fonts/transform.d.ts.map +1 -0
  230. package/dist/fonts/types.d.ts +45 -1
  231. package/dist/fonts/types.d.ts.map +1 -1
  232. package/dist/fonts/virtual-modules.d.ts +103 -0
  233. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  234. package/dist/index.d.ts +47 -190
  235. package/dist/index.d.ts.map +1 -1
  236. package/dist/index.js +4796 -12595
  237. package/dist/index.js.map +1 -1
  238. package/dist/params/codec-registry.d.ts +26 -0
  239. package/dist/params/codec-registry.d.ts.map +1 -0
  240. package/dist/params/define-schema.d.ts +52 -0
  241. package/dist/params/define-schema.d.ts.map +1 -0
  242. package/dist/params/index.d.ts +5 -0
  243. package/dist/params/index.d.ts.map +1 -0
  244. package/dist/params/index.js +33 -0
  245. package/dist/params/index.js.map +1 -0
  246. package/dist/params/resolve-schema.d.ts +34 -0
  247. package/dist/params/resolve-schema.d.ts.map +1 -0
  248. package/dist/plugin-context.d.ts +107 -0
  249. package/dist/plugin-context.d.ts.map +1 -0
  250. package/dist/plugins/adapter-build.d.ts +1 -1
  251. package/dist/plugins/adapter-build.d.ts.map +1 -1
  252. package/dist/plugins/build-manifest.d.ts +2 -2
  253. package/dist/plugins/build-manifest.d.ts.map +1 -1
  254. package/dist/plugins/build-report.d.ts +9 -7
  255. package/dist/plugins/build-report.d.ts.map +1 -1
  256. package/dist/plugins/client-chunks.d.ts +32 -0
  257. package/dist/plugins/client-chunks.d.ts.map +1 -0
  258. package/dist/plugins/content.d.ts +1 -1
  259. package/dist/plugins/content.d.ts.map +1 -1
  260. package/dist/plugins/dev-server.d.ts +1 -1
  261. package/dist/plugins/dev-server.d.ts.map +1 -1
  262. package/dist/plugins/entries.d.ts +1 -1
  263. package/dist/plugins/entries.d.ts.map +1 -1
  264. package/dist/plugins/fonts.d.ts +17 -73
  265. package/dist/plugins/fonts.d.ts.map +1 -1
  266. package/dist/plugins/mdx.d.ts +1 -1
  267. package/dist/plugins/mdx.d.ts.map +1 -1
  268. package/dist/plugins/routing.d.ts +1 -1
  269. package/dist/plugins/routing.d.ts.map +1 -1
  270. package/dist/plugins/server-bundle.d.ts.map +1 -1
  271. package/dist/plugins/shims.d.ts +6 -5
  272. package/dist/plugins/shims.d.ts.map +1 -1
  273. package/dist/plugins/static-build.d.ts +5 -26
  274. package/dist/plugins/static-build.d.ts.map +1 -1
  275. package/dist/routing/codegen-shared.d.ts +63 -0
  276. package/dist/routing/codegen-shared.d.ts.map +1 -0
  277. package/dist/routing/codegen-types.d.ts +57 -0
  278. package/dist/routing/codegen-types.d.ts.map +1 -0
  279. package/dist/routing/codegen.d.ts +7 -2
  280. package/dist/routing/codegen.d.ts.map +1 -1
  281. package/dist/routing/convention-lint.d.ts +41 -0
  282. package/dist/routing/convention-lint.d.ts.map +1 -0
  283. package/dist/routing/index.d.ts +5 -1
  284. package/dist/routing/index.d.ts.map +1 -1
  285. package/dist/routing/index.js +4 -2
  286. package/dist/routing/link-codegen.d.ts +90 -0
  287. package/dist/routing/link-codegen.d.ts.map +1 -0
  288. package/dist/routing/scanner.d.ts +1 -10
  289. package/dist/routing/scanner.d.ts.map +1 -1
  290. package/dist/routing/segment-classify.d.ts +75 -0
  291. package/dist/routing/segment-classify.d.ts.map +1 -0
  292. package/dist/routing/types.d.ts +77 -25
  293. package/dist/routing/types.d.ts.map +1 -1
  294. package/dist/routing/walkers.d.ts +51 -0
  295. package/dist/routing/walkers.d.ts.map +1 -0
  296. package/dist/rsc-runtime/rsc.d.ts +1 -1
  297. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  298. package/dist/rsc-runtime/ssr.d.ts +12 -0
  299. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  300. package/dist/schema-bridge.d.ts +76 -0
  301. package/dist/schema-bridge.d.ts.map +1 -0
  302. package/dist/search-params/define.d.ts +157 -0
  303. package/dist/search-params/define.d.ts.map +1 -0
  304. package/dist/search-params/index.d.ts +4 -7
  305. package/dist/search-params/index.d.ts.map +1 -1
  306. package/dist/search-params/index.js +34 -441
  307. package/dist/search-params/index.js.map +1 -1
  308. package/dist/search-params/registry.d.ts +2 -2
  309. package/dist/search-params/registry.d.ts.map +1 -1
  310. package/dist/search-params/wrappers.d.ts +53 -0
  311. package/dist/search-params/wrappers.d.ts.map +1 -0
  312. package/dist/segment-params/define.d.ts +95 -0
  313. package/dist/segment-params/define.d.ts.map +1 -0
  314. package/dist/segment-params/index.d.ts +3 -0
  315. package/dist/segment-params/index.d.ts.map +1 -0
  316. package/dist/segment-params/index.js +2 -0
  317. package/dist/server/access-gate.d.ts +8 -3
  318. package/dist/server/access-gate.d.ts.map +1 -1
  319. package/dist/server/action-client.d.ts +41 -6
  320. package/dist/server/action-client.d.ts.map +1 -1
  321. package/dist/server/action-encryption.d.ts +76 -0
  322. package/dist/server/action-encryption.d.ts.map +1 -0
  323. package/dist/server/action-handler.d.ts +35 -1
  324. package/dist/server/action-handler.d.ts.map +1 -1
  325. package/dist/server/actions.d.ts +3 -6
  326. package/dist/server/actions.d.ts.map +1 -1
  327. package/dist/server/als-registry.d.ts +40 -5
  328. package/dist/server/als-registry.d.ts.map +1 -1
  329. package/dist/server/asset-headers.d.ts +1 -15
  330. package/dist/server/asset-headers.d.ts.map +1 -1
  331. package/dist/server/build-manifest.d.ts +2 -2
  332. package/dist/server/build-manifest.d.ts.map +1 -1
  333. package/dist/server/coalesce-tick.d.ts +40 -0
  334. package/dist/server/coalesce-tick.d.ts.map +1 -0
  335. package/dist/server/cookie-context.d.ts +170 -0
  336. package/dist/server/cookie-context.d.ts.map +1 -0
  337. package/dist/server/cookie-parsing.d.ts +51 -0
  338. package/dist/server/cookie-parsing.d.ts.map +1 -0
  339. package/dist/server/debug.d.ts +1 -1
  340. package/dist/server/default-logger.d.ts +22 -0
  341. package/dist/server/default-logger.d.ts.map +1 -0
  342. package/dist/server/deny-boundary.d.ts +90 -0
  343. package/dist/server/deny-boundary.d.ts.map +1 -0
  344. package/dist/server/deny-renderer.d.ts.map +1 -1
  345. package/dist/server/dev-source-map.d.ts +22 -0
  346. package/dist/server/dev-source-map.d.ts.map +1 -0
  347. package/dist/server/early-hints-sender.d.ts.map +1 -1
  348. package/dist/server/early-hints.d.ts +13 -5
  349. package/dist/server/early-hints.d.ts.map +1 -1
  350. package/dist/server/error-boundary-wrapper.d.ts +7 -1
  351. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  352. package/dist/server/fallback-error.d.ts +12 -7
  353. package/dist/server/fallback-error.d.ts.map +1 -1
  354. package/dist/server/flight-injection-state.d.ts +66 -0
  355. package/dist/server/flight-injection-state.d.ts.map +1 -0
  356. package/dist/server/flight-scripts.d.ts +42 -0
  357. package/dist/server/flight-scripts.d.ts.map +1 -0
  358. package/dist/server/flush.d.ts.map +1 -1
  359. package/dist/server/form-data.d.ts +29 -0
  360. package/dist/server/form-data.d.ts.map +1 -1
  361. package/dist/server/html-injector-core.d.ts +212 -0
  362. package/dist/server/html-injector-core.d.ts.map +1 -0
  363. package/dist/server/html-injectors.d.ts +81 -41
  364. package/dist/server/html-injectors.d.ts.map +1 -1
  365. package/dist/server/index.d.ts +9 -46
  366. package/dist/server/index.d.ts.map +1 -1
  367. package/dist/server/index.js +155 -2905
  368. package/dist/server/index.js.map +1 -1
  369. package/dist/server/internal.d.ts +48 -0
  370. package/dist/server/internal.d.ts.map +1 -0
  371. package/dist/server/internal.js +2946 -0
  372. package/dist/server/internal.js.map +1 -0
  373. package/dist/server/logger.d.ts +39 -7
  374. package/dist/server/logger.d.ts.map +1 -1
  375. package/dist/server/middleware-runner.d.ts +36 -4
  376. package/dist/server/middleware-runner.d.ts.map +1 -1
  377. package/dist/server/node-stream-transforms.d.ts +110 -0
  378. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  379. package/dist/server/param-coercion.d.ts +36 -0
  380. package/dist/server/param-coercion.d.ts.map +1 -0
  381. package/dist/server/pipeline-helpers.d.ts +95 -0
  382. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  383. package/dist/server/pipeline-interception.d.ts +1 -1
  384. package/dist/server/pipeline-interception.d.ts.map +1 -1
  385. package/dist/server/pipeline-metadata.d.ts +6 -0
  386. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  387. package/dist/server/pipeline-outcome.d.ts +49 -0
  388. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  389. package/dist/server/pipeline-phases.d.ts +52 -0
  390. package/dist/server/pipeline-phases.d.ts.map +1 -0
  391. package/dist/server/pipeline.d.ts +111 -23
  392. package/dist/server/pipeline.d.ts.map +1 -1
  393. package/dist/server/port-resolution.d.ts +117 -0
  394. package/dist/server/port-resolution.d.ts.map +1 -0
  395. package/dist/server/primitives.d.ts +69 -18
  396. package/dist/server/primitives.d.ts.map +1 -1
  397. package/dist/server/render-timeout.d.ts +51 -0
  398. package/dist/server/render-timeout.d.ts.map +1 -0
  399. package/dist/server/request-context.d.ts +54 -108
  400. package/dist/server/request-context.d.ts.map +1 -1
  401. package/dist/server/route-element-builder.d.ts +27 -1
  402. package/dist/server/route-element-builder.d.ts.map +1 -1
  403. package/dist/server/route-handler.d.ts.map +1 -1
  404. package/dist/server/route-matcher.d.ts +21 -34
  405. package/dist/server/route-matcher.d.ts.map +1 -1
  406. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  407. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  408. package/dist/server/rsc-entry/api-handler.d.ts +2 -2
  409. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  410. package/dist/server/rsc-entry/error-renderer.d.ts +26 -13
  411. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  412. package/dist/server/rsc-entry/helpers.d.ts +49 -6
  413. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  414. package/dist/server/rsc-entry/index.d.ts +19 -8
  415. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  416. package/dist/server/rsc-entry/render-route.d.ts +50 -0
  417. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  418. package/dist/server/rsc-entry/rsc-payload.d.ts +3 -3
  419. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  420. package/dist/server/rsc-entry/rsc-stream.d.ts +14 -1
  421. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  422. package/dist/server/rsc-entry/ssr-bridge.d.ts +1 -1
  423. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  424. package/dist/server/rsc-entry/ssr-renderer.d.ts +19 -4
  425. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  426. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +119 -0
  427. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  428. package/dist/server/safe-load.d.ts +46 -0
  429. package/dist/server/safe-load.d.ts.map +1 -0
  430. package/dist/server/sensitive-fields.d.ts +74 -0
  431. package/dist/server/sensitive-fields.d.ts.map +1 -0
  432. package/dist/server/sitemap-generator.d.ts +129 -0
  433. package/dist/server/sitemap-generator.d.ts.map +1 -0
  434. package/dist/server/sitemap-handler.d.ts +22 -0
  435. package/dist/server/sitemap-handler.d.ts.map +1 -0
  436. package/dist/server/slot-resolver.d.ts +1 -1
  437. package/dist/server/slot-resolver.d.ts.map +1 -1
  438. package/dist/server/ssr-entry.d.ts +23 -0
  439. package/dist/server/ssr-entry.d.ts.map +1 -1
  440. package/dist/server/ssr-render.d.ts +39 -21
  441. package/dist/server/ssr-render.d.ts.map +1 -1
  442. package/dist/server/ssr-wrappers.d.ts +50 -0
  443. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  444. package/dist/server/state-tree-diff.d.ts.map +1 -1
  445. package/dist/server/status-code-resolver.d.ts +16 -11
  446. package/dist/server/status-code-resolver.d.ts.map +1 -1
  447. package/dist/server/stream-utils.d.ts +36 -0
  448. package/dist/server/stream-utils.d.ts.map +1 -0
  449. package/dist/server/tracing.d.ts +5 -5
  450. package/dist/server/tracing.d.ts.map +1 -1
  451. package/dist/server/tree-builder.d.ts +62 -30
  452. package/dist/server/tree-builder.d.ts.map +1 -1
  453. package/dist/server/types.d.ts +49 -4
  454. package/dist/server/types.d.ts.map +1 -1
  455. package/dist/server/utils/escape-html.d.ts +14 -0
  456. package/dist/server/utils/escape-html.d.ts.map +1 -0
  457. package/dist/server/version-skew.d.ts +61 -0
  458. package/dist/server/version-skew.d.ts.map +1 -0
  459. package/dist/shared/merge-search-params.d.ts +22 -0
  460. package/dist/shared/merge-search-params.d.ts.map +1 -0
  461. package/dist/shims/font-google.d.ts +1 -1
  462. package/dist/shims/font-google.d.ts.map +1 -1
  463. package/dist/shims/font-google.js +42 -0
  464. package/dist/shims/font-google.js.map +1 -0
  465. package/dist/shims/font-local.d.ts +26 -0
  466. package/dist/shims/font-local.d.ts.map +1 -0
  467. package/dist/shims/font-local.js +20 -0
  468. package/dist/shims/font-local.js.map +1 -0
  469. package/dist/shims/headers.d.ts +2 -1
  470. package/dist/shims/headers.d.ts.map +1 -1
  471. package/dist/shims/navigation-client.d.ts +3 -1
  472. package/dist/shims/navigation-client.d.ts.map +1 -1
  473. package/dist/shims/navigation.d.ts +11 -5
  474. package/dist/shims/navigation.d.ts.map +1 -1
  475. package/dist/utils/state-machine.d.ts +80 -0
  476. package/dist/utils/state-machine.d.ts.map +1 -0
  477. package/package.json +62 -21
  478. package/src/adapters/build-output-helper.ts +77 -0
  479. package/src/adapters/cloudflare-dev.ts +177 -0
  480. package/src/adapters/cloudflare-kv-cache.ts +142 -0
  481. package/src/adapters/cloudflare.ts +350 -76
  482. package/src/adapters/compress-module.ts +24 -4
  483. package/src/adapters/nitro.ts +142 -59
  484. package/src/adapters/shared.ts +40 -0
  485. package/src/adapters/wrangler.d.ts +7 -0
  486. package/src/cache/cache-api.ts +38 -0
  487. package/src/cache/handler-store.ts +68 -0
  488. package/src/cache/index.ts +81 -18
  489. package/src/cache/singleflight.ts +62 -4
  490. package/src/cache/sizeof.ts +33 -0
  491. package/src/cache/timber-cache.ts +25 -20
  492. package/src/cli-schema-sync.ts +209 -0
  493. package/src/cli.ts +65 -8
  494. package/src/client/browser-dev.ts +153 -1
  495. package/src/client/browser-entry/action-dispatch.ts +126 -0
  496. package/src/client/browser-entry/hmr.ts +81 -0
  497. package/src/client/browser-entry/hydrate.ts +145 -0
  498. package/src/client/browser-entry/index.ts +149 -0
  499. package/src/client/browser-entry/post-hydration.ts +119 -0
  500. package/src/client/browser-entry/router-init.ts +193 -0
  501. package/src/client/browser-entry/rsc-stream.ts +157 -0
  502. package/src/client/browser-entry/scroll.ts +27 -0
  503. package/src/client/error-boundary.tsx +99 -22
  504. package/src/client/error-reconstituter.tsx +65 -0
  505. package/src/client/form.tsx +31 -32
  506. package/src/client/history.ts +26 -4
  507. package/src/client/index.ts +69 -44
  508. package/src/client/internal.ts +58 -0
  509. package/src/client/link-pending-store.ts +111 -0
  510. package/src/client/link.tsx +366 -113
  511. package/src/client/nav-link-store.ts +47 -0
  512. package/src/client/navigation-api-types.ts +112 -0
  513. package/src/client/navigation-api.ts +332 -0
  514. package/src/client/navigation-context.ts +31 -6
  515. package/src/client/navigation-root.tsx +342 -0
  516. package/src/client/nuqs-adapter.tsx +16 -3
  517. package/src/client/router-ref.ts +1 -1
  518. package/src/client/router.ts +300 -73
  519. package/src/client/rsc-fetch.ts +112 -8
  520. package/src/client/segment-cache.ts +1 -1
  521. package/src/client/segment-outlet.tsx +86 -0
  522. package/src/client/ssr-data.ts +13 -5
  523. package/src/client/stale-reload.ts +72 -3
  524. package/src/client/state.ts +2 -2
  525. package/src/client/top-loader.tsx +18 -6
  526. package/src/client/use-cookie.ts +31 -2
  527. package/src/client/use-link-status.ts +7 -7
  528. package/src/client/{use-navigation-pending.ts → use-pending-navigation.ts} +6 -6
  529. package/src/client/use-query-states.ts +9 -3
  530. package/src/client/use-router.ts +1 -1
  531. package/src/client/{use-params.ts → use-segment-params.ts} +7 -5
  532. package/src/codec.ts +45 -0
  533. package/src/config-types.ts +292 -0
  534. package/src/config-validation.ts +303 -0
  535. package/src/content/index.ts +5 -13
  536. package/src/cookies/define-cookie.ts +233 -53
  537. package/src/cookies/index.ts +12 -1
  538. package/src/cookies/json-cookie.ts +105 -0
  539. package/src/cookies/validation.ts +134 -0
  540. package/src/dev-tools/404-page.ts +387 -0
  541. package/src/dev-tools/browser-logs.ts +291 -0
  542. package/src/dev-tools/error-page.ts +506 -0
  543. package/src/dev-tools/holding-server.ts +187 -0
  544. package/src/dev-tools/index.ts +90 -0
  545. package/src/dev-tools/instrumentation.ts +176 -0
  546. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +9 -5
  547. package/src/dev-tools/overlay.ts +469 -0
  548. package/src/dev-tools/stack-classifier.ts +75 -0
  549. package/src/dev-tools/terminal.ts +183 -0
  550. package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +5 -50
  551. package/src/fonts/ast.ts +525 -16
  552. package/src/fonts/bundle.ts +142 -0
  553. package/src/fonts/css.ts +2 -1
  554. package/src/fonts/dev-middleware.ts +74 -0
  555. package/src/fonts/local.ts +1 -1
  556. package/src/fonts/pipeline.ts +314 -0
  557. package/src/fonts/transform.ts +317 -0
  558. package/src/fonts/types.ts +50 -1
  559. package/src/fonts/virtual-modules.ts +227 -0
  560. package/src/index.ts +413 -356
  561. package/src/params/codec-registry.ts +34 -0
  562. package/src/params/define-schema.ts +72 -0
  563. package/src/params/index.ts +11 -0
  564. package/src/params/resolve-schema.ts +88 -0
  565. package/src/plugin-context.ts +240 -0
  566. package/src/plugins/adapter-build.ts +12 -4
  567. package/src/plugins/build-manifest.ts +13 -2
  568. package/src/plugins/build-report.ts +16 -25
  569. package/src/plugins/client-chunks.ts +65 -0
  570. package/src/plugins/content.ts +1 -1
  571. package/src/plugins/dev-server.ts +175 -35
  572. package/src/plugins/entries.ts +111 -9
  573. package/src/plugins/fonts.ts +155 -654
  574. package/src/plugins/mdx.ts +47 -10
  575. package/src/plugins/routing.ts +322 -44
  576. package/src/plugins/server-bundle.ts +32 -1
  577. package/src/plugins/shims.ts +136 -35
  578. package/src/plugins/static-build.ts +15 -89
  579. package/src/routing/codegen-shared.ts +109 -0
  580. package/src/routing/codegen-types.ts +58 -0
  581. package/src/routing/codegen.ts +253 -178
  582. package/src/routing/convention-lint.ts +357 -0
  583. package/src/routing/index.ts +5 -1
  584. package/src/routing/interception.ts +1 -1
  585. package/src/routing/link-codegen.ts +308 -0
  586. package/src/routing/scanner.ts +107 -110
  587. package/src/routing/segment-classify.ts +188 -0
  588. package/src/routing/types.ts +78 -25
  589. package/src/routing/walkers.ts +90 -0
  590. package/src/rsc-runtime/rsc.ts +2 -0
  591. package/src/rsc-runtime/ssr.ts +50 -0
  592. package/src/rsc-runtime/vendor-types.d.ts +7 -0
  593. package/src/{search-params/codecs.ts → schema-bridge.ts} +57 -20
  594. package/src/search-params/define.ts +538 -0
  595. package/src/search-params/index.ts +14 -20
  596. package/src/search-params/registry.ts +2 -2
  597. package/src/search-params/wrappers.ts +92 -0
  598. package/src/segment-params/define.ts +336 -0
  599. package/src/segment-params/index.ts +9 -0
  600. package/src/server/access-gate.tsx +76 -34
  601. package/src/server/action-client.ts +88 -15
  602. package/src/server/action-encryption.ts +144 -0
  603. package/src/server/action-handler.ts +112 -14
  604. package/src/server/actions.ts +10 -9
  605. package/src/server/als-registry.ts +42 -7
  606. package/src/server/asset-headers.ts +8 -34
  607. package/src/server/build-manifest.ts +10 -4
  608. package/src/server/coalesce-tick.ts +75 -0
  609. package/src/server/compress.ts +25 -7
  610. package/src/server/cookie-context.ts +468 -0
  611. package/src/server/cookie-parsing.ts +135 -0
  612. package/src/server/debug.ts +1 -1
  613. package/src/server/default-logger.ts +99 -0
  614. package/src/server/deny-boundary.ts +218 -0
  615. package/src/server/deny-renderer.ts +31 -50
  616. package/src/server/dev-source-map.ts +31 -0
  617. package/src/server/early-hints-sender.ts +3 -2
  618. package/src/server/early-hints.ts +36 -15
  619. package/src/server/error-boundary-wrapper.ts +74 -22
  620. package/src/server/fallback-error.ts +74 -102
  621. package/src/server/flight-injection-state.ts +113 -0
  622. package/src/server/flight-scripts.ts +62 -0
  623. package/src/server/flush.ts +2 -1
  624. package/src/server/form-data.ts +76 -0
  625. package/src/server/html-injector-core.ts +403 -0
  626. package/src/server/html-injectors.ts +233 -223
  627. package/src/server/index.ts +31 -184
  628. package/src/server/internal.ts +176 -0
  629. package/src/server/logger.ts +67 -36
  630. package/src/server/middleware-runner.ts +75 -4
  631. package/src/server/node-stream-transforms.ts +359 -0
  632. package/src/server/param-coercion.ts +148 -0
  633. package/src/server/pipeline-helpers.ts +204 -0
  634. package/src/server/pipeline-interception.ts +17 -16
  635. package/src/server/pipeline-metadata.ts +13 -0
  636. package/src/server/pipeline-outcome.ts +176 -0
  637. package/src/server/pipeline-phases.ts +453 -0
  638. package/src/server/pipeline.ts +147 -394
  639. package/src/server/port-resolution.ts +215 -0
  640. package/src/server/primitives.ts +111 -28
  641. package/src/server/render-timeout.ts +108 -0
  642. package/src/server/request-context.ts +138 -334
  643. package/src/server/route-element-builder.ts +297 -193
  644. package/src/server/route-handler.ts +24 -4
  645. package/src/server/route-matcher.ts +44 -65
  646. package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
  647. package/src/server/rsc-entry/api-handler.ts +16 -17
  648. package/src/server/rsc-entry/error-renderer.ts +305 -89
  649. package/src/server/rsc-entry/helpers.ts +137 -12
  650. package/src/server/rsc-entry/index.ts +316 -352
  651. package/src/server/rsc-entry/render-route.ts +307 -0
  652. package/src/server/rsc-entry/rsc-payload.ts +65 -18
  653. package/src/server/rsc-entry/rsc-stream.ts +81 -13
  654. package/src/server/rsc-entry/ssr-bridge.ts +14 -5
  655. package/src/server/rsc-entry/ssr-renderer.ts +171 -38
  656. package/src/server/rsc-entry/wrap-action-dispatch.ts +449 -0
  657. package/src/server/safe-load.ts +60 -0
  658. package/src/server/sensitive-fields.ts +230 -0
  659. package/src/server/sitemap-generator.ts +338 -0
  660. package/src/server/sitemap-handler.ts +126 -0
  661. package/src/server/slot-resolver.ts +245 -230
  662. package/src/server/ssr-entry.ts +215 -32
  663. package/src/server/ssr-render.ts +289 -67
  664. package/src/server/ssr-wrappers.tsx +139 -0
  665. package/src/server/state-tree-diff.ts +4 -1
  666. package/src/server/status-code-resolver.ts +112 -128
  667. package/src/server/stream-utils.ts +213 -0
  668. package/src/server/tracing.ts +21 -10
  669. package/src/server/tree-builder.ts +202 -90
  670. package/src/server/types.ts +55 -6
  671. package/src/server/utils/escape-html.ts +20 -0
  672. package/src/server/version-skew.ts +104 -0
  673. package/src/shared/merge-search-params.ts +55 -0
  674. package/src/shims/font-google.ts +1 -1
  675. package/src/shims/font-local.ts +34 -0
  676. package/src/shims/headers.ts +5 -1
  677. package/src/shims/navigation-client.ts +4 -3
  678. package/src/shims/navigation.ts +14 -7
  679. package/src/utils/state-machine.ts +111 -0
  680. package/LICENSE +0 -8
  681. package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
  682. package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
  683. package/dist/_chunks/debug-gwlJkDuf.js +0 -108
  684. package/dist/_chunks/debug-gwlJkDuf.js.map +0 -1
  685. package/dist/_chunks/format-DviM89f0.js.map +0 -1
  686. package/dist/_chunks/interception-BOoWmLUA.js +0 -676
  687. package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
  688. package/dist/_chunks/request-context-DIkVh_jG.js +0 -330
  689. package/dist/_chunks/request-context-DIkVh_jG.js.map +0 -1
  690. package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
  691. package/dist/_chunks/tracing-CemImE6h.js +0 -187
  692. package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
  693. package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
  694. package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
  695. package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
  696. package/dist/cache/register-cached-function.d.ts +0 -17
  697. package/dist/cache/register-cached-function.d.ts.map +0 -1
  698. package/dist/client/browser-entry.d.ts +0 -21
  699. package/dist/client/browser-entry.d.ts.map +0 -1
  700. package/dist/client/link-status-provider.d.ts +0 -11
  701. package/dist/client/link-status-provider.d.ts.map +0 -1
  702. package/dist/client/transition-root.d.ts.map +0 -1
  703. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  704. package/dist/client/use-params.d.ts.map +0 -1
  705. package/dist/plugins/cache-transform.d.ts +0 -36
  706. package/dist/plugins/cache-transform.d.ts.map +0 -1
  707. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  708. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  709. package/dist/plugins/dev-logs.d.ts.map +0 -1
  710. package/dist/plugins/dynamic-transform.d.ts +0 -72
  711. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  712. package/dist/plugins/server-action-exports.d.ts +0 -26
  713. package/dist/plugins/server-action-exports.d.ts.map +0 -1
  714. package/dist/routing/status-file-lint.d.ts +0 -33
  715. package/dist/routing/status-file-lint.d.ts.map +0 -1
  716. package/dist/search-params/analyze.d.ts +0 -54
  717. package/dist/search-params/analyze.d.ts.map +0 -1
  718. package/dist/search-params/builtin-codecs.d.ts +0 -105
  719. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  720. package/dist/search-params/codecs.d.ts +0 -53
  721. package/dist/search-params/codecs.d.ts.map +0 -1
  722. package/dist/search-params/create.d.ts +0 -106
  723. package/dist/search-params/create.d.ts.map +0 -1
  724. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  725. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  726. package/dist/server/dev-logger.d.ts.map +0 -1
  727. package/dist/server/dev-span-processor.d.ts.map +0 -1
  728. package/dist/server/dev-warnings.d.ts.map +0 -1
  729. package/dist/server/manifest-status-resolver.d.ts +0 -58
  730. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  731. package/dist/server/prerender.d.ts +0 -77
  732. package/dist/server/prerender.d.ts.map +0 -1
  733. package/dist/server/response-cache.d.ts +0 -54
  734. package/dist/server/response-cache.d.ts.map +0 -1
  735. package/dist/utils/directive-parser.d.ts +0 -70
  736. package/dist/utils/directive-parser.d.ts.map +0 -1
  737. package/src/cache/register-cached-function.ts +0 -103
  738. package/src/client/browser-entry.ts +0 -678
  739. package/src/client/link-status-provider.tsx +0 -30
  740. package/src/client/transition-root.tsx +0 -166
  741. package/src/plugins/cache-transform.ts +0 -199
  742. package/src/plugins/dev-error-overlay.ts +0 -230
  743. package/src/plugins/dynamic-transform.ts +0 -161
  744. package/src/plugins/server-action-exports.ts +0 -220
  745. package/src/routing/status-file-lint.ts +0 -112
  746. package/src/search-params/analyze.ts +0 -192
  747. package/src/search-params/builtin-codecs.ts +0 -228
  748. package/src/search-params/create.ts +0 -321
  749. package/src/server/dev-fetch-instrumentation.ts +0 -96
  750. package/src/server/dev-span-processor.ts +0 -78
  751. package/src/server/manifest-status-resolver.ts +0 -215
  752. package/src/server/prerender.ts +0 -139
  753. package/src/server/response-cache.ts +0 -410
  754. package/src/utils/directive-parser.ts +0 -529
  755. /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
@@ -1,18 +1,23 @@
1
1
  /**
2
- * Request Context — per-request ALS store for headers() and cookies().
2
+ * Request Context — per-request ALS store for headers, search params,
3
+ * segment params, and request scope lifecycle.
3
4
  *
4
5
  * Follows the same pattern as tracing.ts: a module-level AsyncLocalStorage
5
6
  * instance, public accessor functions that throw outside request scope,
6
7
  * and a framework-internal `runWithRequestContext()` to establish scope.
7
8
  *
9
+ * Cookie state lives in `cookie-context.ts` (split out in TIM-853). The
10
+ * scope set up here owns the cookie jar / parsedCookies fields on the
11
+ * store, but the cookie API and helpers are in the cookie module.
12
+ *
8
13
  * See design/04-authorization.md §"AccessContext does not include cookies or headers"
9
14
  * and design/11-platform.md §"AsyncLocalStorage".
10
- * See design/29-cookies.md for cookie mutation semantics.
11
15
  */
12
16
 
13
- import { createHmac, timingSafeEqual } from 'node:crypto';
14
- import type { Routes } from '#/index.js';
15
- import { requestContextAls, type RequestContextStore, type CookieEntry } from './als-registry.js';
17
+ import { requestContextAls, type RequestContextStore } from './als-registry.js';
18
+ import { _setGetSearchParamsFn } from '../search-params/define.js';
19
+ import { _setGetSegmentParamsFn } from '../segment-params/define.js';
20
+ import { consumeSeededCookies } from './cookie-context.js';
16
21
  import { isDebug } from './debug.js';
17
22
 
18
23
  // Re-export the ALS for framework-internal consumers that need direct access.
@@ -22,209 +27,167 @@ export { requestContextAls };
22
27
  // the ALS context persists for the entire request lifecycle including
23
28
  // async stream consumption by React's renderToReadableStream.
24
29
 
25
- // ─── Cookie Signing Secrets ──────────────────────────────────────────────
30
+ // ─── Public API ───────────────────────────────────────────────────────────
26
31
 
27
32
  /**
28
- * Module-level cookie signing secrets. Index 0 is the newest (used for signing).
29
- * All entries are tried for verification (key rotation support).
33
+ * Returns a read-only view of the current request's headers.
30
34
  *
31
- * Set by the framework at startup via `setCookieSecrets()`.
32
- * See design/29-cookies.md §"Signed Cookies"
35
+ * Available in middleware, access checks, server components, and server actions.
36
+ * Throws if called outside a request context (security principle #2: no global fallback).
33
37
  */
34
- let _cookieSecrets: string[] = [];
38
+ export function getHeaders(): ReadonlyHeaders {
39
+ const store = requestContextAls.getStore();
40
+ if (!store) {
41
+ throw new Error(
42
+ '[timber] getHeaders() called outside of a request context. ' +
43
+ 'It can only be used in middleware, access checks, server components, and server actions.'
44
+ );
45
+ }
46
+ return store.headers;
47
+ }
35
48
 
36
49
  /**
37
- * Configure the cookie signing secrets.
50
+ * Returns the value of a single request header, or undefined if absent.
38
51
  *
39
- * Called by the framework during server initialization with values from
40
- * `cookies.secret` or `cookies.secrets` in timber.config.ts.
52
+ * Thin wrapper over `getHeaders().get(name)` for the common case where
53
+ * you need exactly one header.
41
54
  *
42
- * The first secret (index 0) is used for signing new cookies.
43
- * All secrets are tried for verification (supports key rotation).
55
+ * @internal — not part of the public API. Use `getHeaders().get(name)` instead.
44
56
  */
45
- export function setCookieSecrets(secrets: string[]): void {
46
- _cookieSecrets = secrets.filter(Boolean);
57
+ export function getHeader(name: string): string | undefined {
58
+ const headers = getHeaders();
59
+ return headers.get(name) ?? undefined;
47
60
  }
48
61
 
49
- // ─── Public API ───────────────────────────────────────────────────────────
50
-
51
62
  /**
52
- * Returns a read-only view of the current request's headers.
63
+ * Returns the current request's raw URLSearchParams.
53
64
  *
54
- * Available in middleware, access checks, server components, and server actions.
55
- * Throws if called outside a request context (security principle #2: no global fallback).
65
+ * @internal — not part of the public API. Use `defineSearchParams().get()` instead.
56
66
  */
57
- export function headers(): ReadonlyHeaders {
67
+ export function getSearchParams(): URLSearchParams {
58
68
  const store = requestContextAls.getStore();
59
69
  if (!store) {
60
70
  throw new Error(
61
- '[timber] headers() called outside of a request context. ' +
71
+ '[timber] getSearchParams() called outside of a request context. ' +
62
72
  'It can only be used in middleware, access checks, server components, and server actions.'
63
73
  );
64
74
  }
65
- return store.headers;
75
+ return store.searchParams;
66
76
  }
67
77
 
78
+ // Eagerly register getSearchParams with the search-params module so
79
+ // searchParams.get() can call it without a dynamic import.
80
+ // Dynamic imports lose ALS context in React's RSC Flight renderer,
81
+ // breaking getSearchParams() in parallel slot pages. See TIM-523.
82
+ _setGetSearchParamsFn(getSearchParams);
83
+
84
+ // Eagerly register getSegmentParams with the segment-params module so
85
+ // segmentParams.get() can call it without a dynamic import.
86
+ // Same pattern as search params — dynamic imports lose ALS context. See TIM-523.
87
+ _setGetSegmentParamsFn(getSegmentParams);
88
+
68
89
  /**
69
- * Returns a cookie accessor for the current request.
90
+ * Returns the current request's coerced segment params.
70
91
  *
71
- * Available in middleware, access checks, server components, and server actions.
72
- * Throws if called outside a request context (security principle #2: no global fallback).
92
+ * The optional `_route` argument exists only for TypeScript narrowing —
93
+ * it does not affect the runtime return value. Pass a route pattern
94
+ * (e.g. `'/[artistSlug]/[year]'`) to narrow the return type to the
95
+ * exact params shape for that route.
73
96
  *
74
- * Read methods (.get, .has, .getAll) are always available and reflect
75
- * read-your-own-writes from .set() calls in the same request.
97
+ * Without a route argument, returns all coerced params with optional types.
76
98
  *
77
- * Mutation methods (.set, .delete, .clear) are only available in mutable
78
- * contexts (middleware.ts, server actions, route.ts handlers). Calling them
79
- * in read-only contexts (access.ts, server components) throws.
80
- *
81
- * See design/29-cookies.md
99
+ * See design/41-global-params.md §Function Signatures
82
100
  */
83
- export function cookies(): RequestCookies {
101
+ export function getSegmentParams(route?: string): Record<string, string | string[]> {
84
102
  const store = requestContextAls.getStore();
85
103
  if (!store) {
86
104
  throw new Error(
87
- '[timber] cookies() called outside of a request context. ' +
105
+ '[timber] getSegmentParams() called outside of a request context. ' +
88
106
  'It can only be used in middleware, access checks, server components, and server actions.'
89
107
  );
90
108
  }
91
-
92
- // Parse cookies lazily on first access
93
- if (!store.parsedCookies) {
94
- store.parsedCookies = parseCookieHeader(store.cookieHeader);
109
+ if (!store.segmentParams) {
110
+ throw new Error(
111
+ '[timber] getSegmentParams() called before route matching completed. ' +
112
+ 'Segment params are not available until after the route is matched.'
113
+ );
95
114
  }
96
115
 
97
- const map = store.parsedCookies;
98
- return {
99
- get(name: string): string | undefined {
100
- return map.get(name);
101
- },
102
- has(name: string): boolean {
103
- return map.has(name);
104
- },
105
- getAll(): Array<{ name: string; value: string }> {
106
- return Array.from(map.entries()).map(([name, value]) => ({ name, value }));
107
- },
108
- get size(): number {
109
- return map.size;
110
- },
111
-
112
- getSigned(name: string): string | undefined {
113
- const raw = map.get(name);
114
- if (!raw || _cookieSecrets.length === 0) return undefined;
115
- return verifySignedCookie(raw, _cookieSecrets);
116
- },
117
-
118
- set(name: string, value: string, options?: CookieOptions): void {
119
- assertMutable(store, 'set');
120
- if (store.flushed) {
121
- if (isDebug()) {
122
- console.warn(
123
- `[timber] warn: cookies().set('${name}') called after response headers were committed.\n` +
124
- ` The cookie will NOT be sent. Move cookie mutations to middleware.ts, a server action,\n` +
125
- ` or a route.ts handler.`
126
- );
127
- }
128
- return;
129
- }
130
- let storedValue = value;
131
- if (options?.signed) {
132
- if (_cookieSecrets.length === 0) {
133
- throw new Error(
134
- `[timber] cookies().set('${name}', ..., { signed: true }) requires ` +
135
- `cookies.secret or cookies.secrets in timber.config.ts.`
136
- );
137
- }
138
- storedValue = signCookieValue(value, _cookieSecrets[0]);
139
- }
140
- const opts = { ...DEFAULT_COOKIE_OPTIONS, ...options };
141
- store.cookieJar.set(name, { name, value: storedValue, options: opts });
142
- // Read-your-own-writes: update the parsed cookies map with the signed value
143
- // so getSigned() can verify it in the same request
144
- map.set(name, storedValue);
145
- },
146
-
147
- delete(name: string, options?: Pick<CookieOptions, 'path' | 'domain'>): void {
148
- assertMutable(store, 'delete');
149
- if (store.flushed) {
150
- if (isDebug()) {
151
- console.warn(
152
- `[timber] warn: cookies().delete('${name}') called after response headers were committed.\n` +
153
- ` The cookie will NOT be deleted. Move cookie mutations to middleware.ts, a server action,\n` +
154
- ` or a route.ts handler.`
155
- );
156
- }
157
- return;
158
- }
159
- const opts: CookieOptions = {
160
- ...DEFAULT_COOKIE_OPTIONS,
161
- ...options,
162
- maxAge: 0,
163
- expires: new Date(0),
164
- };
165
- store.cookieJar.set(name, { name, value: '', options: opts });
166
- // Remove from read view
167
- map.delete(name);
168
- },
169
-
170
- clear(): void {
171
- assertMutable(store, 'clear');
172
- if (store.flushed) return;
173
- // Delete every incoming cookie
174
- for (const name of Array.from(map.keys())) {
175
- store.cookieJar.set(name, {
176
- name,
177
- value: '',
178
- options: { ...DEFAULT_COOKIE_OPTIONS, maxAge: 0, expires: new Date(0) },
179
- });
180
- }
181
- map.clear();
182
- },
116
+ // Dev-mode validation: warn when the route argument expects dynamic
117
+ // segments that don't exist on the actual matched route. This catches
118
+ // bugs like passing a child route's _segment to a parent layout.
119
+ // See design/41-global-params.md §Runtime Validation
120
+ if (route && isDebug() && store.matchedRoutePattern) {
121
+ const expected = extractDynamicSegments(route);
122
+ const actual = extractDynamicSegments(store.matchedRoutePattern);
123
+ const missing = expected.filter((s) => !actual.includes(s));
124
+
125
+ if (missing.length > 0) {
126
+ console.warn(
127
+ `[timber] getSegmentParams('${route}') called but current route is '${store.matchedRoutePattern}'\n` +
128
+ ` Missing params: ${missing.join(', ')}\n` +
129
+ ` These will be undefined at runtime despite the type annotation.`
130
+ );
131
+ }
132
+ }
183
133
 
184
- toString(): string {
185
- return Array.from(map.entries())
186
- .map(([name, value]) => `${name}=${value}`)
187
- .join('; ');
188
- },
189
- };
134
+ return store.segmentParams;
190
135
  }
191
136
 
192
137
  /**
193
- * Returns a Promise resolving to the current request's search params.
194
- *
195
- * In `page.tsx`, `middleware.ts`, and `access.ts` the framework pre-parses the
196
- * route's `search-params.ts` definition and the Promise resolves to the typed
197
- * object. In all other server component contexts it resolves to raw
198
- * `URLSearchParams`.
199
- *
200
- * Returned as a Promise to match the `params` prop convention and to allow
201
- * future partial pre-rendering support where param resolution may be deferred.
138
+ * Set the segment params on the current request context.
139
+ * Called by the pipeline after route matching and param coercion.
202
140
  *
203
- * Throws if called outside a request context.
141
+ * @internal — framework use only
204
142
  */
205
- export function searchParams<R extends keyof Routes>(): Promise<Routes[R]['searchParams']>;
206
- export function searchParams(): Promise<URLSearchParams | Record<string, unknown>>;
207
- export function searchParams(): Promise<URLSearchParams | Record<string, unknown>> {
143
+ export function setSegmentParams(params: Record<string, string | string[]>): void {
208
144
  const store = requestContextAls.getStore();
209
145
  if (!store) {
210
- throw new Error(
211
- '[timber] searchParams() called outside of a request context. ' +
212
- 'It can only be used in middleware, access checks, server components, and server actions.'
213
- );
146
+ throw new Error('[timber] setSegmentParams() called outside of a request context.');
214
147
  }
215
- return store.searchParamsPromise;
148
+ store.segmentParams = params;
216
149
  }
217
150
 
218
151
  /**
219
- * Replace the search params Promise for the current request with one that
220
- * resolves to the typed parsed result from the route's search-params.ts.
221
- * Called by the framework before rendering the page — not for app code.
152
+ * Store the matched route pattern (e.g. '/[artistSlug]/[year]') for
153
+ * dev-mode route mismatch validation in getSegmentParams().
154
+ *
155
+ * @internal — framework use only
222
156
  */
223
- export function setParsedSearchParams(parsed: Record<string, unknown>): void {
157
+ export function setMatchedRoutePattern(pattern: string): void {
224
158
  const store = requestContextAls.getStore();
225
- if (store) {
226
- store.searchParamsPromise = Promise.resolve(parsed);
159
+ if (!store) return; // non-throwing — optional diagnostic
160
+ store.matchedRoutePattern = pattern;
161
+ }
162
+
163
+ /**
164
+ * Extract dynamic segment names from a route pattern.
165
+ * '/[artistSlug]/[year]' → ['artistSlug', 'year']
166
+ * '/docs/[...slug]' → ['slug']
167
+ */
168
+ function extractDynamicSegments(route: string): string[] {
169
+ const segments: string[] = [];
170
+ // Match [paramName], [...paramName], [[...paramName]]
171
+ const re = /\[{1,2}\.{0,3}(\w+)\]{1,2}/g;
172
+ let m: RegExpExecArray | null;
173
+ while ((m = re.exec(route)) !== null) {
174
+ segments.push(m[1]);
227
175
  }
176
+ return segments;
177
+ }
178
+
179
+ /**
180
+ * Returns the raw search string from the current request URL (e.g. "?foo=bar").
181
+ * Synchronous — safe for use in `redirect()` which throws synchronously.
182
+ *
183
+ * Returns empty string if called outside a request context (non-throwing for
184
+ * use in redirect's optional preserveSearchParams path).
185
+ *
186
+ * @internal — used by redirect() for preserveSearchParams support.
187
+ */
188
+ export function getRequestSearchString(): string {
189
+ const store = requestContextAls.getStore();
190
+ return store?.searchString ?? '';
228
191
  }
229
192
 
230
193
  // ─── Types ────────────────────────────────────────────────────────────────
@@ -239,88 +202,34 @@ export type ReadonlyHeaders = Pick<
239
202
  'get' | 'has' | 'entries' | 'keys' | 'values' | 'forEach' | typeof Symbol.iterator
240
203
  >;
241
204
 
242
- /** Options for setting a cookie. See design/29-cookies.md. */
243
- export interface CookieOptions {
244
- /** Domain scope. Default: omitted (current domain only). */
245
- domain?: string;
246
- /** URL path scope. Default: '/'. */
247
- path?: string;
248
- /** Expiration date. Mutually exclusive with maxAge. */
249
- expires?: Date;
250
- /** Max age in seconds. Mutually exclusive with expires. */
251
- maxAge?: number;
252
- /** Prevent client-side JS access. Default: true. */
253
- httpOnly?: boolean;
254
- /** Only send over HTTPS. Default: true. */
255
- secure?: boolean;
256
- /** Cross-site request policy. Default: 'lax'. */
257
- sameSite?: 'strict' | 'lax' | 'none';
258
- /** Partitioned (CHIPS) — isolate cookie per top-level site. Default: false. */
259
- partitioned?: boolean;
260
- /**
261
- * Sign the cookie value with HMAC-SHA256 for integrity verification.
262
- * Requires `cookies.secret` or `cookies.secrets` in timber.config.ts.
263
- * See design/29-cookies.md §"Signed Cookies".
264
- */
265
- signed?: boolean;
266
- }
267
-
268
- const DEFAULT_COOKIE_OPTIONS: CookieOptions = {
269
- path: '/',
270
- httpOnly: true,
271
- secure: true,
272
- sameSite: 'lax',
273
- };
274
-
275
- /**
276
- * Cookie accessor returned by `cookies()`.
277
- *
278
- * Read methods are always available. Mutation methods throw in read-only
279
- * contexts (access.ts, server components).
280
- */
281
- export interface RequestCookies {
282
- /** Get a cookie value by name. Returns undefined if not present. */
283
- get(name: string): string | undefined;
284
- /** Check if a cookie exists. */
285
- has(name: string): boolean;
286
- /** Get all cookies as an array of { name, value } pairs. */
287
- getAll(): Array<{ name: string; value: string }>;
288
- /** Number of cookies. */
289
- readonly size: number;
290
- /**
291
- * Get a signed cookie value, verifying its HMAC-SHA256 signature.
292
- * Returns undefined if the cookie is missing, the signature is invalid,
293
- * or no secrets are configured. Never throws.
294
- *
295
- * See design/29-cookies.md §"Signed Cookies"
296
- */
297
- getSigned(name: string): string | undefined;
298
- /** Set a cookie. Only available in mutable contexts (middleware, actions, route handlers). */
299
- set(name: string, value: string, options?: CookieOptions): void;
300
- /** Delete a cookie. Only available in mutable contexts. */
301
- delete(name: string, options?: Pick<CookieOptions, 'path' | 'domain'>): void;
302
- /** Delete all cookies. Only available in mutable contexts. */
303
- clear(): void;
304
- /** Serialize cookies as a Cookie header string. */
305
- toString(): string;
306
- }
307
-
308
205
  // ─── Framework-Internal Helpers ───────────────────────────────────────────
309
206
 
310
207
  /**
311
208
  * Run a callback within a request context. Used by the pipeline to establish
312
- * per-request ALS scope so that `headers()` and `cookies()` work.
209
+ * per-request ALS scope so that `getHeaders()` and `getCookies()` work.
210
+ *
211
+ * If the request was previously registered via `seedRequestCookies`, the
212
+ * resulting context's `parsedCookies` map is initialized from the seed and
213
+ * the raw `cookieHeader` is left empty — `parseCookieHeader` is never called
214
+ * for that request. This is the no-JS form-rerender path. See TIM-868.
313
215
  *
314
216
  * @param req - The incoming Request object.
315
217
  * @param fn - The function to run within the request context.
316
218
  */
317
219
  export function runWithRequestContext<T>(req: Request, fn: () => T): T {
318
220
  const originalCopy = new Headers(req.headers);
221
+ const parsedUrl = new URL(req.url);
222
+ const seed = consumeSeededCookies(req);
319
223
  const store: RequestContextStore = {
320
224
  headers: freezeHeaders(req.headers),
321
225
  originalHeaders: originalCopy,
322
- cookieHeader: req.headers.get('cookie') ?? '',
323
- searchParamsPromise: Promise.resolve(new URL(req.url).searchParams),
226
+ // When seeded, leave the raw header empty — parseCookieHeader is the
227
+ // exact code path the smuggling primitive abused, and lazy parsing is
228
+ // gated on `parsedCookies` being undefined.
229
+ cookieHeader: seed ? '' : (req.headers.get('cookie') ?? ''),
230
+ parsedCookies: seed,
231
+ searchParams: parsedUrl.searchParams,
232
+ searchString: parsedUrl.search,
324
233
  cookieJar: new Map(),
325
234
  flushed: false,
326
235
  mutableContext: false,
@@ -354,24 +263,12 @@ export function markResponseFlushed(): void {
354
263
  }
355
264
  }
356
265
 
357
- /**
358
- * Collect all Set-Cookie headers from the cookie jar.
359
- * Called by the framework at flush time to apply cookies to the response.
360
- *
361
- * Returns an array of serialized Set-Cookie header values.
362
- */
363
- export function getSetCookieHeaders(): string[] {
364
- const store = requestContextAls.getStore();
365
- if (!store) return [];
366
- return Array.from(store.cookieJar.values()).map(serializeCookieEntry);
367
- }
368
-
369
266
  /**
370
267
  * Apply middleware-injected request headers to the current request context.
371
268
  *
372
269
  * Called by the pipeline after middleware.ts runs. Merges overlay headers
373
270
  * on top of the original request headers so downstream code (access.ts,
374
- * server components, server actions) sees them via `headers()`.
271
+ * server components, server actions) sees them via `getHeaders()`.
375
272
  *
376
273
  * The original request headers are never mutated — a new frozen Headers
377
274
  * object is created with the overlay applied on top.
@@ -418,7 +315,7 @@ function freezeHeaders(source: Headers): Headers {
418
315
  if (typeof prop === 'string' && MUTATING_METHODS.has(prop)) {
419
316
  return () => {
420
317
  throw new Error(
421
- `[timber] headers() returns a read-only Headers object. ` +
318
+ `[timber] getHeaders() returns a read-only Headers object. ` +
422
319
  `Calling .${prop}() is not allowed. ` +
423
320
  `Use ctx.requestHeaders in middleware to inject headers for downstream components.`
424
321
  );
@@ -433,96 +330,3 @@ function freezeHeaders(source: Headers): Headers {
433
330
  },
434
331
  });
435
332
  }
436
-
437
- // ─── Cookie Helpers ───────────────────────────────────────────────────────
438
-
439
- /** Throw if cookie mutation is attempted in a read-only context. */
440
- function assertMutable(store: RequestContextStore, method: string): void {
441
- if (!store.mutableContext) {
442
- throw new Error(
443
- `[timber] cookies().${method}() cannot be called in this context.\n` +
444
- ` Set cookies in middleware.ts, server actions, or route.ts handlers.`
445
- );
446
- }
447
- }
448
-
449
- /**
450
- * Parse a Cookie header string into a Map of name → value pairs.
451
- * Follows RFC 6265 §4.2.1: cookies are semicolon-separated key=value pairs.
452
- */
453
- function parseCookieHeader(header: string): Map<string, string> {
454
- const map = new Map<string, string>();
455
- if (!header) return map;
456
-
457
- for (const pair of header.split(';')) {
458
- const eqIndex = pair.indexOf('=');
459
- if (eqIndex === -1) continue;
460
- const name = pair.slice(0, eqIndex).trim();
461
- const value = pair.slice(eqIndex + 1).trim();
462
- if (name) {
463
- map.set(name, value);
464
- }
465
- }
466
-
467
- return map;
468
- }
469
-
470
- // ─── Cookie Signing ──────────────────────────────────────────────────────
471
-
472
- /**
473
- * Sign a cookie value with HMAC-SHA256.
474
- * Returns `value.hex_signature`.
475
- */
476
- function signCookieValue(value: string, secret: string): string {
477
- const signature = createHmac('sha256', secret).update(value).digest('hex');
478
- return `${value}.${signature}`;
479
- }
480
-
481
- /**
482
- * Verify a signed cookie value against an array of secrets.
483
- * Returns the original value if any secret produces a matching signature,
484
- * or undefined if none match. Uses timing-safe comparison.
485
- *
486
- * The signed format is `value.hex_signature` — split at the last `.`.
487
- */
488
- function verifySignedCookie(raw: string, secrets: string[]): string | undefined {
489
- const lastDot = raw.lastIndexOf('.');
490
- if (lastDot <= 0 || lastDot === raw.length - 1) return undefined;
491
-
492
- const value = raw.slice(0, lastDot);
493
- const signature = raw.slice(lastDot + 1);
494
-
495
- // Hex-encoded SHA-256 is always 64 chars
496
- if (signature.length !== 64) return undefined;
497
-
498
- const signatureBuffer = Buffer.from(signature, 'hex');
499
- // If the hex decode produced fewer bytes, the signature was not valid hex
500
- if (signatureBuffer.length !== 32) return undefined;
501
-
502
- for (const secret of secrets) {
503
- const expected = createHmac('sha256', secret).update(value).digest();
504
- if (timingSafeEqual(expected, signatureBuffer)) {
505
- return value;
506
- }
507
- }
508
- return undefined;
509
- }
510
-
511
- /** Serialize a CookieEntry into a Set-Cookie header value. */
512
- function serializeCookieEntry(entry: CookieEntry): string {
513
- const parts = [`${entry.name}=${entry.value}`];
514
- const opts = entry.options;
515
-
516
- if (opts.domain) parts.push(`Domain=${opts.domain}`);
517
- if (opts.path) parts.push(`Path=${opts.path}`);
518
- if (opts.expires) parts.push(`Expires=${opts.expires.toUTCString()}`);
519
- if (opts.maxAge !== undefined) parts.push(`Max-Age=${opts.maxAge}`);
520
- if (opts.httpOnly) parts.push('HttpOnly');
521
- if (opts.secure) parts.push('Secure');
522
- if (opts.sameSite) {
523
- parts.push(`SameSite=${opts.sameSite.charAt(0).toUpperCase()}${opts.sameSite.slice(1)}`);
524
- }
525
- if (opts.partitioned) parts.push('Partitioned');
526
-
527
- return parts.join('; ');
528
- }