@timber-js/app 0.2.0-alpha.61 → 0.2.0-alpha.62

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 (103) hide show
  1. package/dist/_chunks/{als-registry-Ba7URUIn.js → als-registry-BJARkOcu.js} +1 -1
  2. package/dist/_chunks/{als-registry-Ba7URUIn.js.map → als-registry-BJARkOcu.js.map} +1 -1
  3. package/dist/_chunks/{define-CT98cU9c.js → define-Djpqoe1K.js} +1 -1
  4. package/dist/_chunks/{define-CT98cU9c.js.map → define-Djpqoe1K.js.map} +1 -1
  5. package/dist/_chunks/{define-cookie-BWr_52kY.js → define-cookie-B2djY9w0.js} +4 -4
  6. package/dist/_chunks/{define-cookie-BWr_52kY.js.map → define-cookie-B2djY9w0.js.map} +1 -1
  7. package/dist/_chunks/{define-TK8C1M3x.js → define-hdajFTq7.js} +2 -2
  8. package/dist/_chunks/{define-TK8C1M3x.js.map → define-hdajFTq7.js.map} +1 -1
  9. package/dist/_chunks/{error-boundary-DpZJBCqh.js → error-boundary-A_sgyyUP.js} +1 -1
  10. package/dist/_chunks/{error-boundary-DpZJBCqh.js.map → error-boundary-A_sgyyUP.js.map} +1 -1
  11. package/dist/_chunks/{tracing-VYETCQsg.js → handler-store-CaE0ZgVG.js} +54 -3
  12. package/dist/_chunks/handler-store-CaE0ZgVG.js.map +1 -0
  13. package/dist/_chunks/{interception-Cey5DCGr.js → interception-BVm64Jr5.js} +7 -13
  14. package/dist/_chunks/interception-BVm64Jr5.js.map +1 -0
  15. package/dist/_chunks/{metadata-routes-BU684ls2.js → metadata-routes-DS3eKNmf.js} +1 -1
  16. package/dist/_chunks/{metadata-routes-BU684ls2.js.map → metadata-routes-DS3eKNmf.js.map} +1 -1
  17. package/dist/_chunks/{request-context-rju2rbga.js → request-context-B_u9dyhZ.js} +4 -4
  18. package/dist/_chunks/{request-context-rju2rbga.js.map → request-context-B_u9dyhZ.js.map} +1 -1
  19. package/dist/_chunks/segment-classify-BDNn6EzD.js +65 -0
  20. package/dist/_chunks/segment-classify-BDNn6EzD.js.map +1 -0
  21. package/dist/_chunks/{segment-context-CyaM1mrD.js → segment-context-CVRHlkkQ.js} +1 -1
  22. package/dist/_chunks/{segment-context-CyaM1mrD.js.map → segment-context-CVRHlkkQ.js.map} +1 -1
  23. package/dist/_chunks/{stale-reload-BSSym1MJ.js → stale-reload-BeyHXZ5B.js} +1 -1
  24. package/dist/_chunks/{stale-reload-BSSym1MJ.js.map → stale-reload-BeyHXZ5B.js.map} +1 -1
  25. package/dist/_chunks/{use-query-states-wEXY2JQB.js → use-query-states-DAhgj8Gx.js} +1 -1
  26. package/dist/_chunks/{use-query-states-wEXY2JQB.js.map → use-query-states-DAhgj8Gx.js.map} +1 -1
  27. package/dist/_chunks/{wrappers-BaG1bnM3.js → wrappers-CJQ3KwVr.js} +1 -1
  28. package/dist/_chunks/{wrappers-BaG1bnM3.js.map → wrappers-CJQ3KwVr.js.map} +1 -1
  29. package/dist/cache/cache-api.d.ts +24 -0
  30. package/dist/cache/cache-api.d.ts.map +1 -0
  31. package/dist/cache/handler-store.d.ts +31 -0
  32. package/dist/cache/handler-store.d.ts.map +1 -0
  33. package/dist/cache/index.d.ts +2 -1
  34. package/dist/cache/index.d.ts.map +1 -1
  35. package/dist/cache/index.js +33 -2
  36. package/dist/cache/index.js.map +1 -1
  37. package/dist/client/error-boundary.js +1 -1
  38. package/dist/client/index.d.ts +1 -1
  39. package/dist/client/index.d.ts.map +1 -1
  40. package/dist/client/index.js +49 -20
  41. package/dist/client/index.js.map +1 -1
  42. package/dist/client/link.d.ts +6 -0
  43. package/dist/client/link.d.ts.map +1 -1
  44. package/dist/client/transition-root.d.ts +12 -0
  45. package/dist/client/transition-root.d.ts.map +1 -1
  46. package/dist/cookies/index.js +1 -1
  47. package/dist/index.js +52 -2
  48. package/dist/index.js.map +1 -1
  49. package/dist/params/index.js +3 -3
  50. package/dist/plugins/entries.d.ts.map +1 -1
  51. package/dist/routing/index.d.ts +2 -0
  52. package/dist/routing/index.d.ts.map +1 -1
  53. package/dist/routing/index.js +3 -2
  54. package/dist/routing/scanner.d.ts.map +1 -1
  55. package/dist/routing/segment-classify.d.ts +46 -0
  56. package/dist/routing/segment-classify.d.ts.map +1 -0
  57. package/dist/search-params/index.js +3 -3
  58. package/dist/server/actions.d.ts +0 -3
  59. package/dist/server/actions.d.ts.map +1 -1
  60. package/dist/server/deny-renderer.d.ts.map +1 -1
  61. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  62. package/dist/server/fallback-error.d.ts.map +1 -1
  63. package/dist/server/index.js +98 -17
  64. package/dist/server/index.js.map +1 -1
  65. package/dist/server/pipeline-interception.d.ts.map +1 -1
  66. package/dist/server/pipeline.d.ts.map +1 -1
  67. package/dist/server/route-element-builder.d.ts.map +1 -1
  68. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  69. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  70. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  71. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  72. package/dist/server/safe-load.d.ts +46 -0
  73. package/dist/server/safe-load.d.ts.map +1 -0
  74. package/dist/server/slot-resolver.d.ts.map +1 -1
  75. package/dist/server/tracing.d.ts.map +1 -1
  76. package/package.json +1 -1
  77. package/src/cache/cache-api.ts +38 -0
  78. package/src/cache/handler-store.ts +68 -0
  79. package/src/cache/index.ts +2 -1
  80. package/src/client/browser-entry.ts +89 -42
  81. package/src/client/index.ts +1 -1
  82. package/src/client/link.tsx +81 -46
  83. package/src/client/transition-root.tsx +27 -0
  84. package/src/plugins/entries.ts +61 -0
  85. package/src/routing/index.ts +2 -0
  86. package/src/routing/scanner.ts +7 -16
  87. package/src/routing/segment-classify.ts +89 -0
  88. package/src/server/actions.ts +7 -6
  89. package/src/server/deny-renderer.ts +4 -3
  90. package/src/server/error-boundary-wrapper.ts +9 -6
  91. package/src/server/fallback-error.ts +2 -1
  92. package/src/server/pipeline-interception.ts +16 -15
  93. package/src/server/pipeline.ts +11 -2
  94. package/src/server/route-element-builder.ts +5 -4
  95. package/src/server/rsc-entry/api-handler.ts +4 -3
  96. package/src/server/rsc-entry/error-renderer.ts +15 -9
  97. package/src/server/rsc-entry/index.ts +12 -0
  98. package/src/server/rsc-entry/ssr-bridge.ts +13 -4
  99. package/src/server/safe-load.ts +60 -0
  100. package/src/server/slot-resolver.ts +3 -1
  101. package/src/server/tracing.ts +14 -3
  102. package/dist/_chunks/interception-Cey5DCGr.js.map +0 -1
  103. package/dist/_chunks/tracing-VYETCQsg.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { type AnchorHTMLAttributes, type ReactNode } from 'react';
2
2
  import type { SearchParamsDefinition } from '../search-params/define.js';
3
+ import { type UrlSegment } from '../routing/segment-classify.js';
3
4
  export type OnNavigateEvent = {
4
5
  preventDefault: () => void;
5
6
  };
@@ -92,6 +93,11 @@ export declare function isInternalHref(href: string): boolean;
92
93
  * - [...param] → catch-all (joined with /)
93
94
  * - [[...param]] → optional catch-all (omitted if undefined/empty)
94
95
  */
96
+ /**
97
+ * Parse a route pattern's path portion into classified segments.
98
+ * Exported for testing. Uses the shared character-based classifier.
99
+ */
100
+ export declare function parseSegments(pattern: string): UrlSegment[];
95
101
  export declare function interpolateParams(pattern: string, params: Record<string, string | number | string[]>): string;
96
102
  /**
97
103
  * Resolve the final href string from Link props.
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/client/link.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/client/link.tsx"],"names":[],"mappings":"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"}
@@ -71,4 +71,16 @@ export declare function navigateTransition(pendingUrl: string, perform: () => Pr
71
71
  * Used by browser-entry.ts to guard against renders before hydration.
72
72
  */
73
73
  export declare function isTransitionRootReady(): boolean;
74
+ /**
75
+ * Install one-shot deferred callbacks for the no-RSC bootstrap path (TIM-600).
76
+ *
77
+ * When there's no RSC payload, we can't create a React root immediately —
78
+ * `createRoot(document).render(...)` would blank the SSR HTML. Instead,
79
+ * this sets up `_transitionRender` and `_navigateTransition` so that the
80
+ * first client navigation triggers root creation via `createAndMount`.
81
+ *
82
+ * After `createAndMount` runs, TransitionRoot renders and overwrites these
83
+ * callbacks with its real `startTransition`-based implementations.
84
+ */
85
+ export declare function installDeferredNavigation(createAndMount: (initial: ReactNode) => void): void;
74
86
  //# sourceMappingURL=transition-root.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transition-root.d.ts","sourceRoot":"","sources":["../../src/client/transition-root.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzF,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAsBlE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,GAAG,SAAS,CA2DZ;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAIzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}
1
+ {"version":3,"file":"transition-root.d.ts","sourceRoot":"","sources":["../../src/client/transition-root.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzF,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAsBlE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,GAAG,SAAS,CA2DZ;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAIzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI,CAc5F"}
@@ -1,2 +1,2 @@
1
- import { n as defineCookie } from "../_chunks/define-cookie-BWr_52kY.js";
1
+ import { n as defineCookie } from "../_chunks/define-cookie-B2djY9w0.js";
2
2
  export { defineCookie };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { r as __toESM, t as __commonJSMin } from "./_chunks/chunk-DYhsFzuS.js";
2
2
  import { r as setViteServer, t as formatSize } from "./_chunks/format-cX7wzEp2.js";
3
- import { i as scanRoutes, n as generateRouteMap, t as collectInterceptionRewrites } from "./_chunks/interception-Cey5DCGr.js";
3
+ import { i as scanRoutes, n as generateRouteMap, t as collectInterceptionRewrites } from "./_chunks/interception-BVm64Jr5.js";
4
4
  import { existsSync, readFileSync } from "node:fs";
5
5
  import { dirname, extname, join, normalize, resolve } from "node:path";
6
6
  import { createRequire } from "node:module";
@@ -11902,7 +11902,8 @@ var VIRTUAL_IDS = {
11902
11902
  ssrEntry: "virtual:timber-ssr-entry",
11903
11903
  browserEntry: "virtual:timber-browser-entry",
11904
11904
  config: "virtual:timber-config",
11905
- instrumentation: "virtual:timber-instrumentation"
11905
+ instrumentation: "virtual:timber-instrumentation",
11906
+ cacheHandler: "virtual:timber-cache-handler"
11906
11907
  };
11907
11908
  /**
11908
11909
  * Map from virtual module IDs to their resolved file paths.
@@ -11922,6 +11923,8 @@ var ENTRY_FILE_MAP = {
11922
11923
  var RESOLVED_CONFIG_ID = `\0${VIRTUAL_IDS.config}`;
11923
11924
  /** The \0-prefixed resolved ID for virtual:timber-instrumentation */
11924
11925
  var RESOLVED_INSTRUMENTATION_ID = `\0${VIRTUAL_IDS.instrumentation}`;
11926
+ /** The \0-prefixed resolved ID for virtual:timber-cache-handler */
11927
+ var RESOLVED_CACHE_HANDLER_ID = `\0${VIRTUAL_IDS.cacheHandler}`;
11925
11928
  /**
11926
11929
  * Strip the \0 prefix from a module ID.
11927
11930
  *
@@ -12025,6 +12028,51 @@ function generateInstrumentationModule(instrumentationPath) {
12025
12028
  ].join("\n");
12026
12029
  }
12027
12030
  /**
12031
+ * Detect the user's timber.config file at the project root.
12032
+ * Returns the absolute path or null if not found.
12033
+ */
12034
+ function detectConfigFile(root) {
12035
+ for (const name of [
12036
+ "timber.config.ts",
12037
+ "timber.config.js",
12038
+ "timber.config.mjs"
12039
+ ]) {
12040
+ const candidate = resolve(root, name);
12041
+ if (existsSync(candidate)) return candidate;
12042
+ }
12043
+ return null;
12044
+ }
12045
+ /**
12046
+ * Generate the virtual:timber-cache-handler module source.
12047
+ *
12048
+ * When the user's config has a cacheHandler, generates a module that
12049
+ * dynamically imports the config file and extracts the cacheHandler.
12050
+ * The cacheHandler is a class instance (e.g. RedisCacheHandler) that
12051
+ * cannot be JSON-serialized into virtual:timber-config, so it must
12052
+ * be loaded at runtime via dynamic import. See TIM-599.
12053
+ */
12054
+ function generateCacheHandlerModule(configPath, hasCacheHandler) {
12055
+ if (configPath && hasCacheHandler) return [
12056
+ "// Auto-generated cache handler loader — do not edit.",
12057
+ "// Generated by timber-entries plugin.",
12058
+ "",
12059
+ `export default async function loadCacheHandler() {`,
12060
+ ` const mod = await import(${JSON.stringify(configPath)});`,
12061
+ ` const config = mod.default ?? mod;`,
12062
+ ` return config.cacheHandler ?? null;`,
12063
+ `}`
12064
+ ].join("\n");
12065
+ return [
12066
+ "// Auto-generated cache handler loader — do not edit.",
12067
+ "// Generated by timber-entries plugin.",
12068
+ "// No cacheHandler configured in timber.config.",
12069
+ "",
12070
+ `export default async function loadCacheHandler() {`,
12071
+ ` return null;`,
12072
+ `}`
12073
+ ].join("\n");
12074
+ }
12075
+ /**
12028
12076
  * Create the timber-entries Vite plugin.
12029
12077
  *
12030
12078
  * Hooks: resolveId, load
@@ -12038,11 +12086,13 @@ function timberEntries(ctx) {
12038
12086
  if (cleanId in ENTRY_FILE_MAP) return ENTRY_FILE_MAP[cleanId];
12039
12087
  if (cleanId === VIRTUAL_IDS.config) return RESOLVED_CONFIG_ID;
12040
12088
  if (cleanId === VIRTUAL_IDS.instrumentation) return RESOLVED_INSTRUMENTATION_ID;
12089
+ if (cleanId === VIRTUAL_IDS.cacheHandler) return RESOLVED_CACHE_HANDLER_ID;
12041
12090
  return null;
12042
12091
  },
12043
12092
  load(id) {
12044
12093
  if (id === RESOLVED_CONFIG_ID) return generateConfigModule(ctx);
12045
12094
  if (id === RESOLVED_INSTRUMENTATION_ID) return generateInstrumentationModule(detectInstrumentationFile(ctx.root));
12095
+ if (id === RESOLVED_CACHE_HANDLER_ID) return generateCacheHandlerModule(detectConfigFile(ctx.root), ctx.config.cacheHandler != null);
12046
12096
  return null;
12047
12097
  }
12048
12098
  };