@timber-js/app 0.2.0-alpha.110 → 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 (156) hide show
  1. package/dist/_chunks/{actions-D6gyxlGQ.js → actions-ILhDUzES.js} +46 -10
  2. package/dist/_chunks/actions-ILhDUzES.js.map +1 -0
  3. package/dist/_chunks/{build-output-helper-5TK2Emwp.js → build-output-helper-DhxiT18k.js} +1 -1
  4. package/dist/_chunks/{build-output-helper-5TK2Emwp.js.map → build-output-helper-DhxiT18k.js.map} +1 -1
  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-Dn98bPbb.js → define-8zQ8Vm7x.js} +3 -3
  11. package/dist/_chunks/{define-Dn98bPbb.js.map → define-8zQ8Vm7x.js.map} +1 -1
  12. package/dist/_chunks/{define-BflNsrwD.js → define-a0CCE6Nx.js} +3 -3
  13. package/dist/_chunks/{define-BflNsrwD.js.map → define-a0CCE6Nx.js.map} +1 -1
  14. package/dist/_chunks/{format-CYBGxKtc.js → format-CR6v1pWE.js} +1 -1
  15. package/dist/_chunks/{format-CYBGxKtc.js.map → format-CR6v1pWE.js.map} +1 -1
  16. package/dist/_chunks/{handler-store-B_df5Npe.js → handler-store-iqnt2ghN.js} +1 -1
  17. package/dist/_chunks/{handler-store-B_df5Npe.js.map → handler-store-iqnt2ghN.js.map} +1 -1
  18. package/dist/_chunks/{merge-search-params-Cm_KIWDX.js → merge-search-params-CwxJzBLS.js} +1 -1
  19. package/dist/_chunks/{merge-search-params-Cm_KIWDX.js.map → merge-search-params-CwxJzBLS.js.map} +1 -1
  20. package/dist/_chunks/{navigation-root-2ypaZQDx.js → navigation-root-CY3pRMxF.js} +2 -2
  21. package/dist/_chunks/{navigation-root-2ypaZQDx.js.map → navigation-root-CY3pRMxF.js.map} +1 -1
  22. package/dist/_chunks/{registry-DB93kT5c.js → registry-Dp_hJL4s.js} +1 -1
  23. package/dist/_chunks/{registry-DB93kT5c.js.map → registry-Dp_hJL4s.js.map} +1 -1
  24. package/dist/_chunks/resolve-schema-DO8B0mO9.js +65 -0
  25. package/dist/_chunks/resolve-schema-DO8B0mO9.js.map +1 -0
  26. package/dist/_chunks/{router-ref-TkUdmqtM.js → router-ref-sektkr-t.js} +2 -2
  27. package/dist/_chunks/{router-ref-TkUdmqtM.js.map → router-ref-sektkr-t.js.map} +1 -1
  28. package/dist/_chunks/scanner-DmfoB7iK.js +336 -0
  29. package/dist/_chunks/scanner-DmfoB7iK.js.map +1 -0
  30. package/dist/_chunks/{schema-bridge-C3xl_vfb.js → schema-bridge-eL5vQDSA.js} +1 -1
  31. package/dist/_chunks/{schema-bridge-C3xl_vfb.js.map → schema-bridge-eL5vQDSA.js.map} +1 -1
  32. package/dist/_chunks/{segment-context-Dc-GbSTe.js → segment-context-EsfQpS--.js} +1 -1
  33. package/dist/_chunks/{segment-context-Dc-GbSTe.js.map → segment-context-EsfQpS--.js.map} +1 -1
  34. package/dist/_chunks/{ssr-data-DzuI0bIV.js → ssr-data-BO5OvEvg.js} +1 -1
  35. package/dist/_chunks/{ssr-data-DzuI0bIV.js.map → ssr-data-BO5OvEvg.js.map} +1 -1
  36. package/dist/_chunks/{stale-reload-D6FlD3xn.js → stale-reload-BCPRG0Cv.js} +1 -1
  37. package/dist/_chunks/{stale-reload-D6FlD3xn.js.map → stale-reload-BCPRG0Cv.js.map} +1 -1
  38. package/dist/_chunks/tracing-DvKLzCFa.js.map +1 -1
  39. package/dist/_chunks/{use-query-states-B-cLl8mx.js → use-query-states-D9SBlAfp.js} +2 -2
  40. package/dist/_chunks/{use-query-states-B-cLl8mx.js.map → use-query-states-D9SBlAfp.js.map} +1 -1
  41. package/dist/_chunks/{use-segment-params-07V1TIxL.js → use-segment-params-BSt_O2cb.js} +2 -2
  42. package/dist/_chunks/{use-segment-params-07V1TIxL.js.map → use-segment-params-BSt_O2cb.js.map} +1 -1
  43. package/dist/_chunks/{validation-DfyuMoK2.js → validation-Bm3Je-09.js} +1 -1
  44. package/dist/_chunks/{validation-DfyuMoK2.js.map → validation-Bm3Je-09.js.map} +1 -1
  45. package/dist/_chunks/{walkers-DQn5NNrf.js → walkers-DGTmJT0f.js} +109 -353
  46. package/dist/_chunks/walkers-DGTmJT0f.js.map +1 -0
  47. package/dist/adapters/cloudflare.js +1 -1
  48. package/dist/adapters/nitro.js +1 -1
  49. package/dist/cache/index.js +3 -2
  50. package/dist/cache/index.js.map +1 -1
  51. package/dist/cache/sizeof.d.ts.map +1 -1
  52. package/dist/cli-schema-sync.d.ts +37 -0
  53. package/dist/cli-schema-sync.d.ts.map +1 -0
  54. package/dist/cli.d.ts +8 -1
  55. package/dist/cli.d.ts.map +1 -1
  56. package/dist/cli.js +34 -3
  57. package/dist/cli.js.map +1 -1
  58. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -1
  59. package/dist/client/error-boundary.js +5 -3
  60. package/dist/client/error-boundary.js.map +1 -1
  61. package/dist/client/index.js +27 -9
  62. package/dist/client/index.js.map +1 -1
  63. package/dist/client/internal.js +7 -7
  64. package/dist/client/link.d.ts.map +1 -1
  65. package/dist/codec.js +1 -1
  66. package/dist/cookies/index.js +3 -3
  67. package/dist/dev-tools/browser-logs.d.ts.map +1 -1
  68. package/dist/dev-tools/error-page.d.ts.map +1 -1
  69. package/dist/dev-tools/logs.d.ts.map +1 -1
  70. package/dist/dev-tools/overlay.d.ts +1 -1
  71. package/dist/dev-tools/overlay.d.ts.map +1 -1
  72. package/dist/index.d.ts +1 -0
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +98 -16
  75. package/dist/index.js.map +1 -1
  76. package/dist/params/codec-registry.d.ts +26 -0
  77. package/dist/params/codec-registry.d.ts.map +1 -0
  78. package/dist/params/define-schema.d.ts +52 -0
  79. package/dist/params/define-schema.d.ts.map +1 -0
  80. package/dist/params/index.d.ts +5 -0
  81. package/dist/params/index.d.ts.map +1 -0
  82. package/dist/params/index.js +33 -0
  83. package/dist/params/index.js.map +1 -0
  84. package/dist/params/resolve-schema.d.ts +34 -0
  85. package/dist/params/resolve-schema.d.ts.map +1 -0
  86. package/dist/plugins/mdx.d.ts.map +1 -1
  87. package/dist/plugins/routing.d.ts.map +1 -1
  88. package/dist/routing/codegen-shared.d.ts +8 -0
  89. package/dist/routing/codegen-shared.d.ts.map +1 -1
  90. package/dist/routing/codegen-types.d.ts +5 -0
  91. package/dist/routing/codegen-types.d.ts.map +1 -1
  92. package/dist/routing/codegen.d.ts +5 -0
  93. package/dist/routing/codegen.d.ts.map +1 -1
  94. package/dist/routing/index.js +2 -1
  95. package/dist/routing/link-codegen.d.ts +2 -2
  96. package/dist/routing/link-codegen.d.ts.map +1 -1
  97. package/dist/search-params/index.js +3 -3
  98. package/dist/segment-params/index.js +1 -1
  99. package/dist/server/als-registry.d.ts +7 -0
  100. package/dist/server/als-registry.d.ts.map +1 -1
  101. package/dist/server/coalesce-tick.d.ts +40 -0
  102. package/dist/server/coalesce-tick.d.ts.map +1 -0
  103. package/dist/server/fallback-error.d.ts.map +1 -1
  104. package/dist/server/html-injectors.d.ts.map +1 -1
  105. package/dist/server/index.js +2 -2
  106. package/dist/server/internal.js +30 -4
  107. package/dist/server/internal.js.map +1 -1
  108. package/dist/server/node-stream-transforms.d.ts.map +1 -1
  109. package/dist/server/param-coercion.d.ts +12 -2
  110. package/dist/server/param-coercion.d.ts.map +1 -1
  111. package/dist/server/pipeline-phases.d.ts.map +1 -1
  112. package/dist/server/pipeline.d.ts +18 -0
  113. package/dist/server/pipeline.d.ts.map +1 -1
  114. package/dist/server/request-context.d.ts +17 -3
  115. package/dist/server/request-context.d.ts.map +1 -1
  116. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  117. package/dist/server/rsc-entry/index.d.ts +8 -14
  118. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  119. package/package.json +11 -6
  120. package/src/cache/sizeof.ts +3 -1
  121. package/src/cli-schema-sync.ts +209 -0
  122. package/src/cli.ts +49 -2
  123. package/src/client/browser-entry/action-dispatch.ts +15 -5
  124. package/src/client/browser-entry/index.ts +6 -0
  125. package/src/client/error-boundary.tsx +2 -2
  126. package/src/client/link.tsx +25 -1
  127. package/src/dev-tools/browser-logs.ts +5 -2
  128. package/src/dev-tools/error-page.ts +3 -6
  129. package/src/dev-tools/logs.ts +6 -2
  130. package/src/dev-tools/overlay.ts +18 -5
  131. package/src/index.ts +5 -0
  132. package/src/params/codec-registry.ts +34 -0
  133. package/src/params/define-schema.ts +72 -0
  134. package/src/params/index.ts +11 -0
  135. package/src/params/resolve-schema.ts +88 -0
  136. package/src/plugins/dev-server.ts +24 -16
  137. package/src/plugins/mdx.ts +5 -1
  138. package/src/plugins/routing.ts +107 -2
  139. package/src/routing/codegen-shared.ts +11 -0
  140. package/src/routing/codegen-types.ts +5 -0
  141. package/src/routing/codegen.ts +129 -21
  142. package/src/routing/link-codegen.ts +19 -5
  143. package/src/server/als-registry.ts +7 -0
  144. package/src/server/coalesce-tick.ts +75 -0
  145. package/src/server/fallback-error.ts +3 -3
  146. package/src/server/html-injectors.ts +11 -22
  147. package/src/server/node-stream-transforms.ts +6 -16
  148. package/src/server/param-coercion.ts +55 -2
  149. package/src/server/pipeline-phases.ts +8 -0
  150. package/src/server/pipeline.ts +19 -0
  151. package/src/server/request-context.ts +58 -3
  152. package/src/server/rsc-entry/helpers.ts +3 -2
  153. package/src/server/rsc-entry/index.ts +28 -35
  154. package/LICENSE +0 -8
  155. package/dist/_chunks/actions-D6gyxlGQ.js.map +0 -1
  156. package/dist/_chunks/walkers-DQn5NNrf.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/dev-tools/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,iDAAiD;AACjD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAIzE,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AA2ID;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAsBnD;AAoDD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAiBzD"}
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/dev-tools/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,iDAAiD;AACjD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAIzE,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AA2ID;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAsBnD;AAwDD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAiBzD"}
@@ -19,7 +19,7 @@ import type { ViteDevServer } from 'vite';
19
19
  export type ErrorPhase = 'module-transform' | 'proxy' | 'middleware' | 'access' | 'render' | 'handler';
20
20
  /** Labels for terminal output. */
21
21
  export declare const PHASE_LABELS: Record<ErrorPhase, string>;
22
- export { classifyFrame, classifyStack, type FrameType, type ClassifiedFrame } from './stack-classifier.js';
22
+ export { classifyFrame, classifyStack, type FrameType, type ClassifiedFrame, } from './stack-classifier.js';
23
23
  /**
24
24
  * Extract the React component stack from an error, if present.
25
25
  * React attaches this as `componentStack` during renderToReadableStream errors.
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/dev-tools/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,MAAM,CAAC;AAqC1D,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAClB,kBAAkB,GAClB,OAAO,GACP,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,SAAS,CAAC;AAEd,kCAAkC;AAClC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAOnD,CAAC;AAIF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI3G;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAUnE;AAID,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAqB5F;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAehF;AAOD,OAAO,EAAE,mBAAmB,IAAI,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,eAAO,MAAM,mBAAmB,6BAAuB,CAAC;AAIxD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAiCjF;AAkBD,wBAAgB,2BAA2B,IAAI,MAAM,CAyBpD;AAmHD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAMhG;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,GAC3C,IAAI,CA0CN"}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/dev-tools/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,MAAM,CAAC;AAqC1D,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAClB,kBAAkB,GAClB,OAAO,GACP,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,SAAS,CAAC;AAEd,kCAAkC;AAClC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAOnD,CAAC;AAIF,OAAO,EACL,aAAa,EACb,aAAa,EACb,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAI/B;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAUnE;AAID,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAqB5F;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAehF;AAOD,OAAO,EAAE,mBAAmB,IAAI,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,eAAO,MAAM,mBAAmB,6BAAuB,CAAC;AAIxD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAiCjF;AAkBD,wBAAgB,2BAA2B,IAAI,MAAM,CA6BpD;AAuHD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAMhG;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,GAC3C,IAAI,CA0CN"}
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@
12
12
  import type { PluginOption } from 'vite';
13
13
  import type { TimberUserConfig } from './config-types.js';
14
14
  export type { TimberUserConfig } from './config-types.js';
15
+ export type { InferCodecType, SchemaConfig } from './params/define-schema.js';
15
16
  export type { Metadata, MetadataRoute, MetadataHandler, MetadataResult } from './server/types.js';
16
17
  /**
17
18
  * Route map interface — augmented by the generated timber-routes.d.ts.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,MAAM,CAAC;AAyBjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAc1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQ1D,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAElG;;;;;;;;;GASG;AAEH,MAAM,WAAW,MAAM;CAAG;AAE1B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAgGD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CA+UhE;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,MAAM,CAAC;AAyBjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAc1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAQ9E,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAElG;;;;;;;;;GASG;AAEH,MAAM,WAAW,MAAM;CAAG;AAE1B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAgGD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CA+UhE;AAED,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { n as setViteServer } from "./_chunks/warnings-B30wpfaS.js";
2
2
  import { h as swallow } from "./_chunks/logger-DDmK5skc.js";
3
- import { i as scanRoutes, n as collectInterceptionRewrites, r as generateRouteMap, t as collectLeafRoutes } from "./_chunks/walkers-DQn5NNrf.js";
4
- import { t as formatSize } from "./_chunks/format-CYBGxKtc.js";
3
+ import { t as scanRoutes } from "./_chunks/scanner-DmfoB7iK.js";
4
+ import { n as collectInterceptionRewrites, r as generateRouteMap, t as collectLeafRoutes } from "./_chunks/walkers-DGTmJT0f.js";
5
+ import { n as findSchemaFile, r as parseExistingSchemaKeys, t as collectDynamicSegments } from "./_chunks/cli-schema-sync-BvvuK8Rp.js";
6
+ import { t as formatSize } from "./_chunks/format-CR6v1pWE.js";
5
7
  import { dirname, extname, join, normalize, resolve } from "node:path";
6
8
  import { createRequire } from "node:module";
7
9
  import react, { reactCompilerPreset } from "@vitejs/plugin-react";
@@ -425,7 +427,8 @@ function calculateModuleRunnerOffset() {
425
427
  return _cachedOffset;
426
428
  }
427
429
  _cachedOffset = (src.slice(0, bodyIndex).match(/\n/g) || []).length;
428
- } catch {
430
+ } catch (e) {
431
+ console.debug("[timber] overlay offset calculation failed:", e instanceof Error ? e.message : e);
429
432
  _cachedOffset = 2;
430
433
  }
431
434
  return _cachedOffset;
@@ -501,7 +504,8 @@ function rewriteStacktrace(stack, moduleGraph) {
501
504
  line: origLine,
502
505
  column: origCol
503
506
  });
504
- } catch {
507
+ } catch (e) {
508
+ console.debug("[timber] source map tracing failed:", e instanceof Error ? e.message : e);
505
509
  return input;
506
510
  }
507
511
  if (!pos.source || pos.line == null) return input;
@@ -566,7 +570,9 @@ function sendErrorToOverlay(server, error, phase, projectRoot, rscDebugComponent
566
570
  } : void 0
567
571
  }
568
572
  });
569
- } catch {}
573
+ } catch (e) {
574
+ console.debug("[timber] overlay error send failed:", e instanceof Error ? e.message : e);
575
+ }
570
576
  }
571
577
  //#endregion
572
578
  //#region src/server/utils/escape-html.ts
@@ -636,7 +642,8 @@ function readSourceContext(filePath, line, contextLines = 3) {
636
642
  highlight: start + 1 + i === line
637
643
  }))
638
644
  };
639
- } catch {
645
+ } catch (e) {
646
+ console.debug("[timber] source context extraction failed:", e instanceof Error ? e.message : e);
640
647
  return null;
641
648
  }
642
649
  }
@@ -1417,10 +1424,10 @@ function createTimberMiddleware(server, projectRoot) {
1417
1424
  if (!rscEnv?.runner?.import) throw new Error("[timber] RSC environment is not runnable");
1418
1425
  const rscModule = await rscEnv.runner.import(RSC_ENTRY_ID);
1419
1426
  handler = rscModule.default;
1420
- const setHandler = rscModule.setDevPipelineErrorHandler;
1421
- if (typeof setHandler === "function") setHandler((error, _phase, debugComponents) => {
1427
+ const config = rscModule.pipelineConfig;
1428
+ if (config) config.devPipelineErrorHandler = (error, _phase, debugComponents) => {
1422
1429
  sendErrorToOverlay(server, error, classifyErrorPhase(error, projectRoot), projectRoot, debugComponents);
1423
- });
1430
+ };
1424
1431
  const setSourceMap = rscModule.setDevSourceMapHandler;
1425
1432
  if (typeof setSourceMap === "function") setSourceMap((error) => {
1426
1433
  fixErrorStacktrace(server, error);
@@ -1470,7 +1477,9 @@ function respond500(res, error, phase, projectRoot, hmrOptions) {
1470
1477
  res.setHeader("content-type", "text/html; charset=utf-8");
1471
1478
  res.end(html);
1472
1479
  return;
1473
- } catch {}
1480
+ } catch (e) {
1481
+ console.debug("[timber] dev error page generation failed, falling back to text/plain:", e instanceof Error ? e.message : e);
1482
+ }
1474
1483
  res.statusCode = 500;
1475
1484
  res.setHeader("content-type", "text/plain");
1476
1485
  res.end(`[timber] Internal server error\n\n${error instanceof Error ? error.stack ?? error.message : String(error)}`);
@@ -1604,7 +1613,9 @@ function listenForClientErrors(server, projectRoot) {
1604
1613
  } : void 0
1605
1614
  }
1606
1615
  });
1607
- } catch {}
1616
+ } catch (e) {
1617
+ console.debug("[timber] overlay send failed:", e instanceof Error ? e.message : e);
1618
+ }
1608
1619
  });
1609
1620
  }
1610
1621
  //#endregion
@@ -1891,7 +1902,8 @@ async function tryImport(name, projectRoot) {
1891
1902
  try {
1892
1903
  const mod = await import(name);
1893
1904
  return mod.default ?? mod;
1894
- } catch {
1905
+ } catch (e) {
1906
+ console.debug(`[timber] optional MDX dependency '${name}' not available:`, e instanceof Error ? e.message : e);
1895
1907
  return;
1896
1908
  }
1897
1909
  }
@@ -2204,10 +2216,12 @@ var VIRTUAL_MODULE_ID$1 = "virtual:timber-route-manifest";
2204
2216
  var RESOLVED_VIRTUAL_ID$1 = `\0${VIRTUAL_MODULE_ID$1}`;
2205
2217
  var SEARCH_PARAMS_REGISTRY_ID = "virtual:timber-search-params-registry";
2206
2218
  var RESOLVED_SEARCH_PARAMS_REGISTRY_ID = `\0${SEARCH_PARAMS_REGISTRY_ID}`;
2219
+ var SCHEMA_ID = "virtual:timber-schema";
2220
+ var RESOLVED_SCHEMA_ID = `\0${SCHEMA_ID}`;
2207
2221
  /**
2208
2222
  * File convention names we track for changes that require manifest regeneration.
2209
2223
  */
2210
- var ROUTE_FILE_PATTERNS = /\/(page|layout|middleware|access|route|error|global-error|default|denied|params|\d{3}|[45]xx|not-found|forbidden|unauthorized|sitemap|robots|manifest|favicon|icon|opengraph-image|twitter-image|apple-icon)\./;
2224
+ var ROUTE_FILE_PATTERNS = /\/(page|layout|middleware|access|route|error|global-error|default|denied|params|schema|\d{3}|[45]xx|not-found|forbidden|unauthorized|sitemap|robots|manifest|favicon|icon|opengraph-image|twitter-image|apple-icon)\./;
2211
2225
  /**
2212
2226
  * Create the timber-routing Vite plugin.
2213
2227
  *
@@ -2269,6 +2283,7 @@ function timberRouting(ctx) {
2269
2283
  ctx.routeTree = scanRoutes(ctx.appDir, { pageExtensions: ctx.config.pageExtensions });
2270
2284
  ctx.timer.end("route-scan");
2271
2285
  writeCodegen(ctx);
2286
+ warnUnregisteredSegments(ctx);
2272
2287
  const newConventionWarnings = lintConventions(ctx.routeTree, ctx.appDir).filter((w) => !warnedFiles.has(w.id));
2273
2288
  if (newConventionWarnings.length > 0) {
2274
2289
  for (const w of newConventionWarnings) warnedFiles.add(w.id);
@@ -2283,6 +2298,7 @@ function timberRouting(ctx) {
2283
2298
  if (cleanId === VIRTUAL_MODULE_ID$1) return RESOLVED_VIRTUAL_ID$1;
2284
2299
  if (cleanId.endsWith(`/${VIRTUAL_MODULE_ID$1}`)) return RESOLVED_VIRTUAL_ID$1;
2285
2300
  if (cleanId === SEARCH_PARAMS_REGISTRY_ID || cleanId.endsWith(`/${SEARCH_PARAMS_REGISTRY_ID}`)) return RESOLVED_SEARCH_PARAMS_REGISTRY_ID;
2301
+ if (cleanId === SCHEMA_ID || cleanId.endsWith(`/${SCHEMA_ID}`)) return RESOLVED_SCHEMA_ID;
2286
2302
  return null;
2287
2303
  },
2288
2304
  load(id) {
@@ -2294,6 +2310,7 @@ function timberRouting(ctx) {
2294
2310
  if (!ctx.routeTree) rescan();
2295
2311
  return generateSearchParamsRegistryModule(ctx.routeTree);
2296
2312
  }
2313
+ if (id === RESOLVED_SCHEMA_ID) return generateSchemaModule(ctx.appDir);
2297
2314
  return null;
2298
2315
  },
2299
2316
  buildStart() {
@@ -2346,11 +2363,32 @@ function timberRouting(ctx) {
2346
2363
  * When the route tree changes, any environment that has imported the manifest
2347
2364
  * needs to be invalidated so the next request/transform picks up the new tree.
2348
2365
  */
2366
+ /** Set of segments we've already warned about — avoid repeating on every rescan. */
2367
+ var _warnedSegments = /* @__PURE__ */ new Set();
2368
+ /**
2369
+ * Warn about dynamic segments not registered in app/schema.ts.
2370
+ * Only fires when a schema file exists. Logs once per segment per session.
2371
+ */
2372
+ function warnUnregisteredSegments(ctx) {
2373
+ const schemaPath = findSchemaFile(ctx.appDir);
2374
+ if (!schemaPath) return;
2375
+ const filesystemSegments = collectDynamicSegments(ctx.appDir);
2376
+ if (filesystemSegments.length === 0) return;
2377
+ const existingKeys = parseExistingSchemaKeys(readFileSync(schemaPath, "utf-8"));
2378
+ const missing = filesystemSegments.filter((seg) => !existingKeys.includes(seg) && !_warnedSegments.has(seg));
2379
+ if (missing.length === 0) return;
2380
+ for (const seg of missing) _warnedSegments.add(seg);
2381
+ console.warn(`[timber] New segment${missing.length > 1 ? "s" : ""} not in schema: ${missing.join(", ")}\n Run: timber schema sync`);
2382
+ }
2349
2383
  function invalidateManifest(server) {
2350
2384
  for (const envName of Object.keys(server.environments)) {
2351
2385
  const env = server.environments[envName];
2352
2386
  if (!env?.moduleGraph) continue;
2353
- for (const virtualId of [RESOLVED_VIRTUAL_ID$1, RESOLVED_SEARCH_PARAMS_REGISTRY_ID]) {
2387
+ for (const virtualId of [
2388
+ RESOLVED_VIRTUAL_ID$1,
2389
+ RESOLVED_SEARCH_PARAMS_REGISTRY_ID,
2390
+ RESOLVED_SCHEMA_ID
2391
+ ]) {
2354
2392
  const mod = env.moduleGraph.getModuleById(virtualId);
2355
2393
  if (mod) env.moduleGraph.invalidateModule(mod);
2356
2394
  }
@@ -2366,6 +2404,46 @@ function invalidateManifest(server) {
2366
2404
  * <Link> can look up the definition from the original `href` prop before
2367
2405
  * segmentParams are interpolated.
2368
2406
  */
2407
+ /** Schema file extensions to check, in priority order. */
2408
+ var SCHEMA_EXTENSIONS = [
2409
+ ".ts",
2410
+ ".tsx",
2411
+ ".js",
2412
+ ".jsx"
2413
+ ];
2414
+ /**
2415
+ * TIM-931: Generate the virtual:timber-schema module.
2416
+ *
2417
+ * When app/schema.{ts,tsx,js,jsx} exists, generates a module that
2418
+ * imports the schema and resolves its segmentParams codecs into a
2419
+ * bare-name codec map for runtime coercion.
2420
+ *
2421
+ * When no schema exists, exports null.
2422
+ */
2423
+ function generateSchemaModule(appDir) {
2424
+ let schemaPath = null;
2425
+ for (const ext of SCHEMA_EXTENSIONS) {
2426
+ const candidate = join(appDir, `schema${ext}`);
2427
+ if (existsSync(candidate)) {
2428
+ schemaPath = candidate;
2429
+ break;
2430
+ }
2431
+ }
2432
+ if (!schemaPath) return ["// Auto-generated schema loader — no app/schema.ts found.", "export default null;"].join("\n");
2433
+ return [
2434
+ "// Auto-generated schema loader — do not edit.",
2435
+ "// Generated by timber-routing plugin (TIM-931).",
2436
+ "",
2437
+ `import schema from ${JSON.stringify(schemaPath)};`,
2438
+ `import { resolveSchemaCodecs } from '@timber-js/app/params';`,
2439
+ "",
2440
+ "const globalCodecs = schema?.segmentParams",
2441
+ " ? resolveSchemaCodecs(schema.segmentParams)",
2442
+ " : null;",
2443
+ "",
2444
+ "export default globalCodecs;"
2445
+ ].join("\n");
2446
+ }
2369
2447
  function generateSearchParamsRegistryModule(tree) {
2370
2448
  const entries = [];
2371
2449
  function walk(node) {
@@ -5739,7 +5817,9 @@ function patchConsole(server, projectRoot) {
5739
5817
  timestamp: Date.now()
5740
5818
  };
5741
5819
  server.hot.send("timber:server-log", payload);
5742
- } catch {}
5820
+ } catch (e) {
5821
+ originals.get("debug")("[timber] server log forwarding failed:", e instanceof Error ? e.message : e);
5822
+ }
5743
5823
  };
5744
5824
  }
5745
5825
  return () => {
@@ -5927,7 +6007,9 @@ function timberDevBrowserLogs(ctx) {
5927
6007
  const formatted = formatBrowserLog(payload);
5928
6008
  if (payload.level === "error") process.stderr.write(formatted + "\n");
5929
6009
  else process.stdout.write(formatted + "\n");
5930
- } catch {}
6010
+ } catch (e) {
6011
+ process.stderr.write(`[timber] log forwarding failed: ${e instanceof Error ? e.message : e}\n`);
6012
+ }
5931
6013
  });
5932
6014
  },
5933
6015
  transformIndexHtml() {