@rebask/core 0.2.1 → 0.3.0

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 (84) hide show
  1. package/dist/__type_probe__.d.ts +2 -0
  2. package/dist/__type_probe__.d.ts.map +1 -0
  3. package/dist/__type_probe__.js +4 -0
  4. package/dist/components/head.d.ts +2 -11
  5. package/dist/components/head.d.ts.map +1 -1
  6. package/dist/components/head.js +12 -24
  7. package/dist/entry.browser.js +2 -2
  8. package/dist/entry.ssr.d.ts.map +1 -1
  9. package/dist/entry.ssr.js +12 -7
  10. package/dist/handlers/rsc/background-render.js +2 -2
  11. package/dist/handlers/rsc/render-request.js +2 -2
  12. package/dist/handlers/rsc/render-to-response.js +2 -2
  13. package/dist/handlers/rsc/state.d.ts.map +1 -1
  14. package/dist/handlers/rsc/state.js +11 -5
  15. package/dist/lib/client-route-prediction.d.ts +1 -1
  16. package/dist/lib/client-route-prediction.d.ts.map +1 -1
  17. package/dist/lib/client-route-prediction.js +2 -7
  18. package/dist/lib/head/head-manager.d.ts +9 -0
  19. package/dist/lib/head/head-manager.d.ts.map +1 -0
  20. package/dist/lib/head/head-manager.js +98 -0
  21. package/dist/lib/head/head-script.js +8 -13
  22. package/dist/lib/image-optimization/image-plugin.d.ts +2 -0
  23. package/dist/lib/image-optimization/image-plugin.d.ts.map +1 -1
  24. package/dist/lib/image-optimization/image-plugin.js +10 -3
  25. package/dist/lib/plugin-names.d.ts +3 -0
  26. package/dist/lib/plugin-names.d.ts.map +1 -0
  27. package/dist/lib/plugin-names.js +2 -0
  28. package/dist/lib/proxy/build-proxy.d.ts +1 -1
  29. package/dist/lib/proxy/build-proxy.d.ts.map +1 -1
  30. package/dist/lib/proxy/build-proxy.js +4 -11
  31. package/dist/lib/proxy/pattern.d.ts +7 -0
  32. package/dist/lib/proxy/pattern.d.ts.map +1 -0
  33. package/dist/lib/proxy/pattern.js +18 -0
  34. package/dist/lib/proxy/types.d.ts +3 -1
  35. package/dist/lib/proxy/types.d.ts.map +1 -1
  36. package/dist/lib/route-prediction.d.ts.map +1 -1
  37. package/dist/lib/rsc-request.d.ts.map +1 -1
  38. package/dist/lib/rsc-request.js +6 -4
  39. package/dist/lib/server-router/build-entries.d.ts +76 -0
  40. package/dist/lib/server-router/build-entries.d.ts.map +1 -0
  41. package/dist/lib/server-router/build-entries.js +74 -0
  42. package/dist/lib/server-router/get-router.d.ts.map +1 -1
  43. package/dist/lib/server-router/get-router.js +55 -105
  44. package/dist/lib/server-router/rou3.d.ts +20 -0
  45. package/dist/lib/server-router/rou3.d.ts.map +1 -0
  46. package/dist/lib/server-router/rou3.js +55 -0
  47. package/dist/lib/server-router/route-entries.d.ts +16 -0
  48. package/dist/lib/server-router/route-entries.d.ts.map +1 -0
  49. package/dist/lib/server-router/route-entries.js +67 -0
  50. package/dist/lib/server-router/types.d.ts +24 -33
  51. package/dist/lib/server-router/types.d.ts.map +1 -1
  52. package/dist/lib/server-router/types.js +1 -6
  53. package/dist/lib/types.d.ts +2 -2
  54. package/dist/lib/types.d.ts.map +1 -1
  55. package/dist/plugins/prerender.d.ts +3 -4
  56. package/dist/plugins/prerender.d.ts.map +1 -1
  57. package/dist/plugins/prerender.js +31 -0
  58. package/dist/plugins/proxy.d.ts.map +1 -1
  59. package/dist/plugins/proxy.js +7 -1
  60. package/dist/plugins/router/rou3-compiled.d.ts +9 -0
  61. package/dist/plugins/router/rou3-compiled.d.ts.map +1 -0
  62. package/dist/plugins/router/rou3-compiled.js +14 -0
  63. package/dist/plugins/router/rou3-router.d.ts +3 -0
  64. package/dist/plugins/router/rou3-router.d.ts.map +1 -0
  65. package/dist/plugins/router/rou3-router.js +16 -0
  66. package/dist/plugins/router/router-plugin.d.ts +6 -16
  67. package/dist/plugins/router/router-plugin.d.ts.map +1 -1
  68. package/dist/plugins/router/router-plugin.js +43 -22
  69. package/dist/proxy.d.ts +1 -0
  70. package/dist/proxy.d.ts.map +1 -1
  71. package/dist/proxy.js +1 -0
  72. package/dist/request-context.d.ts +0 -2
  73. package/dist/request-context.d.ts.map +1 -1
  74. package/dist/request-context.js +0 -4
  75. package/dist/router.d.ts +1 -1
  76. package/dist/router.d.ts.map +1 -1
  77. package/dist/router.js +4 -4
  78. package/dist/server-router.d.ts +3 -3
  79. package/dist/server-router.d.ts.map +1 -1
  80. package/dist/server-router.js +2 -2
  81. package/dist/vite.d.ts +8 -3
  82. package/dist/vite.d.ts.map +1 -1
  83. package/dist/vite.js +60 -29
  84. package/package.json +5 -4
@@ -1,48 +1,39 @@
1
- import type { ProxyHandler } from "../proxy/types.js";
2
1
  import type { HttpMethod, LayoutRoute, Route, RouteHandlerRoute, RouteParams } from "../route-matcher.js";
3
- export declare enum RouteType {
4
- APP = 0,
5
- PROXY = 1,
6
- IMAGE = 2
7
- }
8
- type Handler = (request: Request, params: RouteParams) => Promise<Response>;
9
- type AppEntry<T> = {
10
- methods: HttpMethod[];
11
- type: RouteType.APP;
12
- route: T;
13
- handler: Handler;
2
+ import type { EntryParams } from "./rou3.js";
3
+ export type AppHandler = (request: Request, params: RouteParams) => Promise<Response>;
4
+ type AppHandlerVariant = {
5
+ handler: AppHandler;
6
+ route: Route | RouteHandlerRoute | LayoutRoute;
7
+ params: EntryParams;
14
8
  };
15
- type PageRouteEntry = AppEntry<Route>;
16
- type RouteHandlerEntry = AppEntry<RouteHandlerRoute>;
17
- type LayoutRSCEntry = AppEntry<LayoutRoute>;
18
- export type ProxyEntry = {
19
- type: RouteType.PROXY;
9
+ export type MatcherEntry = {
20
10
  methods: HttpMethod[];
21
11
  pattern: string;
22
- handler: ProxyHandler;
23
12
  };
24
- type ImageEntry = {
25
- type: RouteType.IMAGE;
26
- methods: HttpMethod[];
27
- pattern: string;
28
- handler: Handler;
13
+ type AppRouteEntry = MatcherEntry & {
14
+ type: "app";
15
+ app?: AppHandlerVariant;
16
+ markdown?: AppHandlerVariant;
17
+ layout?: AppHandlerVariant;
29
18
  };
30
- export type RouteEntry = PageRouteEntry | RouteHandlerEntry | LayoutRSCEntry | ProxyEntry | ImageEntry;
31
- type FindHandler<E extends RouteEntry> = ProxyEntry extends E ? (request: Request) => ReturnType<ProxyHandler> : (request: Request) => Promise<Response>;
32
- export type MatchedHandler<E extends RouteEntry = RouteEntry> = FindHandler<E> & {
33
- route?: Route | RouteHandlerRoute | LayoutRoute;
19
+ type ImageRouteEntry = MatcherEntry & {
20
+ type: "image";
21
+ app: AppHandler;
22
+ layout?: AppHandlerVariant;
34
23
  };
35
- /** A compiled route matcher that finds the best matching route for a given method + URL. */
36
- export interface RouteMatcher<E extends RouteEntry = RouteEntry> {
37
- find(method: string, url: string): MatchedHandler<E> | null;
24
+ export type AppEntry = AppRouteEntry | ImageRouteEntry;
25
+ /** A route matcher that finds the best matching route for a given method + URL. */
26
+ export interface RouteMatcher<T> {
27
+ find(method: string, url: string): {
28
+ entry: T;
29
+ params?: Record<string, string>;
30
+ } | null;
38
31
  }
39
32
  /**
40
33
  * A router plugin provides an implementation of this function via the
41
34
  * `virtual:rebask/server-router` virtual module.
42
- *
43
- * Matched handlers must receive decoded params, splitting catch-all components before decoding.
44
35
  */
45
- export type CreateMatcherFn = <E extends RouteEntry>(entries: E[]) => RouteMatcher<E>;
36
+ export type CreateMatcherFn = <T extends MatcherEntry>(entries: T[]) => RouteMatcher<T>;
46
37
  export interface RebaskRouter {
47
38
  /** Handles a request through the full router: proxy routes first, then app routes. */
48
39
  handle: (request: Request) => Promise<Response>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/server-router/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EACX,UAAU,EACV,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,MAAM,qBAAqB,CAAA;AAE5B,oBAAY,SAAS;IACpB,GAAG,IAAA;IACH,KAAK,IAAA;IACL,KAAK,IAAA;CACL;AAED,KAAK,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE3E,KAAK,QAAQ,CAAC,CAAC,IAAI;IAClB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAA;IACnB,KAAK,EAAE,CAAC,CAAA;IACR,OAAO,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,KAAK,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;AACrC,KAAK,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAA;AACpD,KAAK,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;AAE3C,MAAM,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC,KAAK,CAAA;IACrB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;CACrB,CAAA;AAED,KAAK,UAAU,GAAG;IACjB,IAAI,EAAE,SAAS,CAAC,KAAK,CAAA;IACrB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,UAAU,GACnB,cAAc,GACd,iBAAiB,GACjB,cAAc,GACd,UAAU,GACV,UAAU,CAAA;AAEb,KAAK,WAAW,CAAC,CAAC,SAAS,UAAU,IAAI,UAAU,SAAS,CAAC,GAC1D,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC,YAAY,CAAC,GAC9C,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE1C,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG;IAChF,KAAK,CAAC,EAAE,KAAK,GAAG,iBAAiB,GAAG,WAAW,CAAA;CAC/C,CAAA;AAED,4FAA4F;AAC5F,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAC9D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;CAC3D;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,CAAA;AAErF,MAAM,WAAW,YAAY;IAC5B,sFAAsF;IACtF,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC/C,uEAAuE;IACvE,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC5C,qFAAqF;IACrF,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;CACrD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/server-router/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE5C,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAErF,KAAK,iBAAiB,GAAG;IACxB,OAAO,EAAE,UAAU,CAAA;IACnB,KAAK,EAAE,KAAK,GAAG,iBAAiB,GAAG,WAAW,CAAA;IAC9C,MAAM,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;CACf,CAAA;AAED,KAAK,aAAa,GAAG,YAAY,GAAG;IACnC,IAAI,EAAE,KAAK,CAAA;IACX,GAAG,CAAC,EAAE,iBAAiB,CAAA;IACvB,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IAC5B,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAED,KAAK,eAAe,GAAG,YAAY,GAAG;IACrC,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,UAAU,CAAA;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,eAAe,CAAA;AAEtD,mFAAmF;AACnF,MAAM,WAAW,YAAY,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CAAA;CACvF;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,CAAA;AAEvF,MAAM,WAAW,YAAY;IAC5B,sFAAsF;IACtF,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC/C,uEAAuE;IACvE,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC5C,qFAAqF;IACrF,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;CACrD"}
@@ -1,6 +1 @@
1
- export var RouteType;
2
- (function (RouteType) {
3
- RouteType[RouteType["APP"] = 0] = "APP";
4
- RouteType[RouteType["PROXY"] = 1] = "PROXY";
5
- RouteType[RouteType["IMAGE"] = 2] = "IMAGE";
6
- })(RouteType || (RouteType = {}));
1
+ export {};
@@ -48,8 +48,8 @@ export type SegmentRscPayload = PageRscPayload | LayoutRscPayload;
48
48
  export type RouteRscPayload = PageRscPayload & {
49
49
  /** Form state in case of a document form submission. */
50
50
  formState?: ReactFormState;
51
- /** Proxy route patterns, read once at bootstrap to gate route prediction. */
52
- proxyPatterns?: string[];
51
+ /** Regex sources the browser tests to skip route prediction for paths a proxy may answer. */
52
+ proxyRegexps?: string[];
53
53
  /**
54
54
  * Set when this document is the built-in error route rendered after a failed shell. The
55
55
  * browser hydrates it as-is and then refreshes the URL to render the real route content.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElE,MAAM,WAAW,YAAY;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,iDAAiD;IACjD,eAAe,CAAC,EAAE,qBAAqB,CAAA;CACvC;AAED,MAAM,WAAW,qBAAqB;IACrC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC,CAAA;AAEnF,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,cAAc,CAAA;IACxB,eAAe,CAAC,EAAE,eAAe,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,cAAc,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,gBAAgB,CAAA;AAEjE,6DAA6D;AAC7D,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC9C,wDAAwD;IACxD,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAEzD,MAAM,MAAM,gBAAgB,GACzB;IAAE,WAAW,EAAE,YAAY,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAChD;IAAE,WAAW,CAAC,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,CAAA;AAErD,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElE,MAAM,WAAW,YAAY;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,iDAAiD;IACjD,eAAe,CAAC,EAAE,qBAAqB,CAAA;CACvC;AAED,MAAM,WAAW,qBAAqB;IACrC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC,CAAA;AAEnF,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,cAAc,CAAA;IACxB,eAAe,CAAC,EAAE,eAAe,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,cAAc,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,gBAAgB,CAAA;AAEjE,6DAA6D;AAC7D,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC9C,wDAAwD;IACxD,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,6FAA6F;IAC7F,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAEzD,MAAM,MAAM,gBAAgB,GACzB;IAAE,WAAW,EAAE,YAAY,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAChD;IAAE,WAAW,CAAC,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,CAAA;AAErD,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,CAAA"}
@@ -4,10 +4,7 @@ import { type HasDynamicIO } from "../lib/route-prediction.js";
4
4
  import type { RebaskPluginApi } from "../vite.js";
5
5
  type CacheControl = NonNullable<BuildPrerenderMeta["cacheLife"]>;
6
6
  type PrerenderManifestPaths = {
7
- /**
8
- * Concrete pathnames of a file with `allowExtraParams: false`. The field's presence is the
9
- * static-only signal.
10
- */
7
+ /** Concrete pathnames of a file with `allowExtraParams = false`, used for static-only 404s. */
11
8
  static?: string[];
12
9
  /** Ordered `predictPaths` pathnames with their request-IO bits. */
13
10
  predict?: Array<[pathname: string, hasDynamicIO: HasDynamicIO]>;
@@ -41,5 +38,7 @@ interface PrerenderPluginOptions {
41
38
  failOnDynamic?: boolean;
42
39
  }
43
40
  export declare function prerenderPlugin(api: RebaskPluginApi, options?: PrerenderPluginOptions): Plugin;
41
+ /** Collects the route metadata needed at runtime when prerendering is disabled. */
42
+ export declare function routeMetadataPlugin(api: RebaskPluginApi): Plugin;
44
43
  export {};
45
44
  //# sourceMappingURL=prerender.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../src/plugins/prerender.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAQlC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AASlE,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,KAAK,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAA;AAEhE,KAAK,sBAAsB,GAAG;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,mEAAmE;IACnE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAA;IAC/D,2DAA2D;IAC3D,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;CACb,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;IAC9C,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAClG;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC,CAAA;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAChD,CAAA;AA2CD,UAAU,sBAAsB;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,eAAe,CAC9B,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE,sBAA2B,GAClC,MAAM,CA2ZR"}
1
+ {"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../src/plugins/prerender.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAQlC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AASlE,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,KAAK,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAA;AAEhE,KAAK,sBAAsB,GAAG;IAC7B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,mEAAmE;IACnE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAA;IAC/D,2DAA2D;IAC3D,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;CACb,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;IAC9C,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAClG;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC,CAAA;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAChD,CAAA;AA2CD,UAAU,sBAAsB;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,eAAe,CAC9B,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE,sBAA2B,GAClC,MAAM,CA4ZR;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAoChE"}
@@ -70,6 +70,9 @@ export function prerenderPlugin(api, options = {}) {
70
70
  const resolvedParams = paramsResult && paramsResult.params.length > 0 ? paramsResult.params : null;
71
71
  const allowExtraParams = isDynamic ? (paramsResult?.allowExtraParams ?? true) : true;
72
72
  const { filePath, shellParams } = route;
73
+ if (allowExtraParams === false) {
74
+ staticRoutePaths[filePath] ??= [];
75
+ }
73
76
  if (allowExtraParams !== false &&
74
77
  typeof paramsResult?.predictPaths === "number" &&
75
78
  paramsResult.predictPaths > 0) {
@@ -358,3 +361,31 @@ export function prerenderPlugin(api, options = {}) {
358
361
  },
359
362
  };
360
363
  }
364
+ /** Collects the route metadata needed at runtime when prerendering is disabled. */
365
+ export function routeMetadataPlugin(api) {
366
+ return {
367
+ name: "rebask:route-metadata",
368
+ buildApp: {
369
+ async handler() {
370
+ const pageRoutes = api
371
+ .getRoutes()
372
+ .filter((route) => route.type === "page");
373
+ const entryModule = (await import(`file://${api.getRscEntry()}`));
374
+ const paths = {};
375
+ await Promise.all(pageRoutes.map(async (route) => {
376
+ if (!route.segments.some(isDynamicSegment))
377
+ return;
378
+ const result = await entryModule.getPrerenderParams(route);
379
+ if (result?.allowExtraParams !== false)
380
+ return;
381
+ paths[route.filePath] = {
382
+ static: result.params.map((params) => getRouteParamsPathname(route, params)),
383
+ };
384
+ }));
385
+ const dir = join(process.cwd(), "dist", ".rebask");
386
+ await mkdir(dir, { recursive: true });
387
+ await writeFile(join(dir, "prerendered-paths.json"), JSON.stringify({ noShellRoutes: [], paths }));
388
+ },
389
+ },
390
+ };
391
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/plugins/proxy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAIX,MAAM,EAEN,MAAM,MAAM,CAAA;AAQb,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,qCAAqC;AACrC,eAAO,MAAM,wBAAwB,iBAAiB,CAAA;AAEtD,MAAM,WAAW,oBAAoB;IACpC;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,kGAAkG;IAClG,WAAW,EAAE,MAAM,MAAM,EAAE,GAAG,IAAI,CAAA;CAClC;AAyDD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA8J5D"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/plugins/proxy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAIX,MAAM,EAEN,MAAM,MAAM,CAAA;AAQb,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,qCAAqC;AACrC,eAAO,MAAM,wBAAwB,iBAAiB,CAAA;AAEtD,MAAM,WAAW,oBAAoB;IACpC;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,kGAAkG;IAClG,WAAW,EAAE,MAAM,MAAM,EAAE,GAAG,IAAI,CAAA;CAClC;AAyDD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAoK5D"}
@@ -60,6 +60,7 @@ export function proxyPlugin(coreApi) {
60
60
  let takenOver = false;
61
61
  let projectRoot = process.cwd();
62
62
  let takenOverPatterns = null;
63
+ let takenOverRegexps = null;
63
64
  const api = {
64
65
  takeover() {
65
66
  takenOver = true;
@@ -145,6 +146,7 @@ export function proxyPlugin(coreApi) {
145
146
  return;
146
147
  const bundle = (await import(pathToFileURL(join(projectRoot, REBASK_PROXY_BUNDLE_PATH)).href));
147
148
  takenOverPatterns = bundle.proxyPatterns;
149
+ takenOverRegexps = bundle.proxyRegexps;
148
150
  },
149
151
  },
150
152
  async hotUpdate({ file, server }) {
@@ -171,14 +173,18 @@ export function proxyPlugin(coreApi) {
171
173
  // proxy file, both are `null`.
172
174
  if (!resolvedProxyPath || (takenOver && this.environment?.name !== "proxy")) {
173
175
  const patterns = resolvedProxyPath ? JSON.stringify(takenOverPatterns) : "null";
174
- return `export const proxyPatterns = ${patterns};\nexport const proxyRouter = null;`;
176
+ const regexps = resolvedProxyPath ? JSON.stringify(takenOverRegexps) : "null";
177
+ return `export const proxyPatterns = ${patterns};\nexport const proxyRegexps = ${regexps};\nexport const proxyRouter = null;`;
175
178
  }
176
179
  const buildProxyPath = new URL("../lib/proxy/build-proxy.js", import.meta.url).pathname;
180
+ const patternPath = new URL("../lib/proxy/pattern.js", import.meta.url).pathname;
177
181
  return [
178
182
  `import proxy from ${JSON.stringify(resolvedProxyPath)};`,
179
183
  `import { buildProxy } from ${JSON.stringify(buildProxyPath)};`,
184
+ `import { proxyPatternToClientSource } from ${JSON.stringify(patternPath)};`,
180
185
  `const routes = proxy.default || proxy;`,
181
186
  `export const proxyPatterns = Object.keys(routes);`,
187
+ `export const proxyRegexps = proxyPatterns.map(proxyPatternToClientSource);`,
182
188
  `export const proxyRouter = buildProxy(routes);`,
183
189
  ].join("\n");
184
190
  },
@@ -0,0 +1,9 @@
1
+ import type { MatcherEntry, RouteMatcher } from "../../lib/server-router/types.js";
2
+ /** A compiled `find` function returning an index into the matcher entries. */
3
+ export type CompiledFind = (method: string, path: string) => {
4
+ data: number;
5
+ params?: Record<string, string>;
6
+ } | undefined;
7
+ /** Wraps a compiled `find` function and resolves its entry indexes. */
8
+ export declare function createCompiledMatcher<T extends MatcherEntry>(find: CompiledFind, entries: T[]): RouteMatcher<T>;
9
+ //# sourceMappingURL=rou3-compiled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rou3-compiled.d.ts","sourceRoot":"","sources":["../../../src/plugins/router/rou3-compiled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAElF,8EAA8E;AAC9E,MAAM,MAAM,YAAY,GAAG,CAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,KACR;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,SAAS,CAAA;AAElE,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,YAAY,EAC3D,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,CAAC,EAAE,GACV,YAAY,CAAC,CAAC,CAAC,CAYjB"}
@@ -0,0 +1,14 @@
1
+ /** Wraps a compiled `find` function and resolves its entry indexes. */
2
+ export function createCompiledMatcher(find, entries) {
3
+ return {
4
+ find(method, url) {
5
+ const match = find(method, new URL(url, "http://localhost").pathname);
6
+ if (!match)
7
+ return null;
8
+ const entry = entries[match.data];
9
+ if (!entry)
10
+ return null;
11
+ return { entry, params: match.params };
12
+ },
13
+ };
14
+ }
@@ -0,0 +1,3 @@
1
+ import type { MatcherEntry, RouteMatcher } from "../../lib/server-router/types.js";
2
+ export declare function createMatcher<T extends MatcherEntry>(entries: T[]): RouteMatcher<T>;
3
+ //# sourceMappingURL=rou3-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rou3-router.d.ts","sourceRoot":"","sources":["../../../src/plugins/router/rou3-router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAElF,wBAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAgBnF"}
@@ -0,0 +1,16 @@
1
+ import { addRoute, createRouter, findRoute } from "rou3";
2
+ export function createMatcher(entries) {
3
+ const router = createRouter();
4
+ for (const entry of entries) {
5
+ for (const method of entry.methods)
6
+ addRoute(router, method, entry.pattern, entry);
7
+ }
8
+ return {
9
+ find(method, url) {
10
+ const match = findRoute(router, method, new URL(url, "http://localhost").pathname);
11
+ if (!match)
12
+ return null;
13
+ return { entry: match.data, params: match.params };
14
+ },
15
+ };
16
+ }
@@ -1,15 +1,18 @@
1
1
  import type { Plugin } from "vite";
2
+ import type { MatcherEntry } from "../../lib/server-router/types.js";
2
3
  export interface RouterPluginOptions {
3
4
  /** Plugin name. */
4
5
  name: string;
5
6
  /** Absolute path to the module that exports `createMatcher`. */
6
7
  matcherModule: string;
8
+ /** Compiles the matcher entries into the source of a `find` function for production builds. */
9
+ compile?: (entries: readonly MatcherEntry[]) => string;
7
10
  }
8
11
  /**
9
12
  * Create a Vite plugin that provides a custom server router for Rebask.
10
13
  *
11
- * The plugin resolves `virtual:rebask/server-router` to the given `matcherModule`, which must
12
- * export a `createMatcher` function.
14
+ * `matcherModule` provides `createMatcher` in development, and in production unless `compile` is
15
+ * provided. `compile` replaces it in production builds.
13
16
  *
14
17
  * @example
15
18
  * ```ts
@@ -24,18 +27,5 @@ export interface RouterPluginOptions {
24
27
  * ```
25
28
  */
26
29
  export declare function createRouterPlugin(options: RouterPluginOptions): Plugin;
27
- /**
28
- * Default router of Rebask. Adding it manually is optional.
29
- *
30
- * @example
31
- * ```ts
32
- * import { rebask } from "@rebask/core/vite"
33
- * import { rebaskRouter } from "@rebask/core/server-router"
34
- *
35
- * export default defineConfig({
36
- * plugins: [rsc(), react(), rebask(), rebaskRouter()],
37
- * })
38
- * ```
39
- */
40
- export declare function rebaskRouter(): Plugin;
30
+ export declare function defaultRouterPlugin(): Plugin;
41
31
  //# sourceMappingURL=router-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/router/router-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAKlC,MAAM,WAAW,mBAAmB;IACnC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAYvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAKrC"}
1
+ {"version":3,"file":"router-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/router/router-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAGlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAMpE,MAAM,WAAW,mBAAmB;IACnC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAA;IACrB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,KAAK,MAAM,CAAA;CACtD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAkCvE;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAiB5C"}
@@ -1,10 +1,14 @@
1
+ import { addRoute, createRouter } from "rou3";
2
+ import { compileRouterToString } from "rou3/compiler";
3
+ import { REBASK_PLUGIN_NAME } from "../../lib/plugin-names.js";
4
+ import { getPluginApi } from "../../lib/plugin-utils.js";
1
5
  const VIRTUAL_MODULE_ID = "virtual:rebask/server-router";
2
6
  const RESOLVED_MODULE_ID = "\0virtual:rebask/server-router";
3
7
  /**
4
8
  * Create a Vite plugin that provides a custom server router for Rebask.
5
9
  *
6
- * The plugin resolves `virtual:rebask/server-router` to the given `matcherModule`, which must
7
- * export a `createMatcher` function.
10
+ * `matcherModule` provides `createMatcher` in development, and in production unless `compile` is
11
+ * provided. `compile` replaces it in production builds.
8
12
  *
9
13
  * @example
10
14
  * ```ts
@@ -19,36 +23,53 @@ const RESOLVED_MODULE_ID = "\0virtual:rebask/server-router";
19
23
  * ```
20
24
  */
21
25
  export function createRouterPlugin(options) {
26
+ let isBuild = false;
27
+ let api;
22
28
  return {
23
29
  name: options.name,
24
30
  enforce: "pre",
31
+ configResolved(config) {
32
+ isBuild = config.command === "build";
33
+ if (options.compile) {
34
+ api = getPluginApi(config.plugins, REBASK_PLUGIN_NAME);
35
+ }
36
+ },
25
37
  resolveId(id) {
26
38
  if (id === VIRTUAL_MODULE_ID)
27
39
  return RESOLVED_MODULE_ID;
28
40
  },
29
- load(id) {
41
+ async load(id) {
30
42
  if (id !== RESOLVED_MODULE_ID)
31
43
  return;
32
- return `export { createMatcher } from ${JSON.stringify(options.matcherModule)};`;
44
+ if (!options.compile || !isBuild) {
45
+ return `export { createMatcher } from ${JSON.stringify(options.matcherModule)};`;
46
+ }
47
+ if (!api) {
48
+ throw new Error('createRouterPlugin with "compile" requires the Rebask Vite plugin.');
49
+ }
50
+ const entries = await api.getMatcherEntries();
51
+ return [
52
+ `import { createCompiledMatcher } from "@rebask/core/server-router";`,
53
+ `const find = ${options.compile(entries)};`,
54
+ `export function createMatcher(entries) { return createCompiledMatcher(find, entries); }`,
55
+ ].join("\n");
33
56
  },
34
57
  };
35
58
  }
36
- /**
37
- * Default router of Rebask. Adding it manually is optional.
38
- *
39
- * @example
40
- * ```ts
41
- * import { rebask } from "@rebask/core/vite"
42
- * import { rebaskRouter } from "@rebask/core/server-router"
43
- *
44
- * export default defineConfig({
45
- * plugins: [rsc(), react(), rebask(), rebaskRouter()],
46
- * })
47
- * ```
48
- */
49
- export function rebaskRouter() {
50
- return createRouterPlugin({
51
- name: "rebask:router",
52
- matcherModule: new URL("./wint-router.js", import.meta.url).pathname,
53
- });
59
+ export function defaultRouterPlugin() {
60
+ return {
61
+ ...createRouterPlugin({
62
+ name: "rebask:server-router",
63
+ matcherModule: new URL("./rou3-router.js", import.meta.url).pathname,
64
+ compile: (entries) => {
65
+ const router = createRouter();
66
+ for (const [index, entry] of entries.entries()) {
67
+ for (const method of entry.methods)
68
+ addRoute(router, method, entry.pattern, index);
69
+ }
70
+ return compileRouterToString(router);
71
+ },
72
+ }),
73
+ enforce: "post",
74
+ };
54
75
  }
package/dist/proxy.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { rewrite } from "./lib/proxy/rewrite.js";
2
2
  export { REBASK_PROXY_BUNDLE_PATH } from "./lib/proxy/types.js";
3
3
  export type { ProxyBundle, ProxyHandler, ProxyRoutes, ProxyRouter } from "./lib/proxy/types.js";
4
+ export { proxyPatternToRegExpSource } from "./lib/proxy/pattern.js";
4
5
  //# sourceMappingURL=proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA"}
package/dist/proxy.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export { rewrite } from "./lib/proxy/rewrite.js";
2
2
  export { REBASK_PROXY_BUNDLE_PATH } from "./lib/proxy/types.js";
3
+ export { proxyPatternToRegExpSource } from "./lib/proxy/pattern.js";
@@ -96,8 +96,6 @@ export declare function trackRequestIO(): void;
96
96
  export declare function hasRequestIO(): boolean;
97
97
  /** Record that the render read `key` and the value `get` returned for it. */
98
98
  export declare function trackSearchParam(key: string, value: SearchParamValue): void;
99
- /** The search params a render read, or `undefined` when it read none. */
100
- export declare function getUsedSearch(): UsedSearch | undefined;
101
99
  /** Whether the render read dynamic data (`routeParams()`, `headers()`, `cookies()`). */
102
100
  export declare function hasDynamicIO(): boolean;
103
101
  /** Marks that the render failed. */
@@ -1 +1 @@
1
- {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../src/request-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../src/request-context.ts"],"names":[],"mappings":"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"}
@@ -51,10 +51,6 @@ export function trackSearchParam(key, value) {
51
51
  state.usedSearch ??= new Map();
52
52
  state.usedSearch.set(key, value);
53
53
  }
54
- /** The search params a render read, or `undefined` when it read none. */
55
- export function getUsedSearch() {
56
- return getRequiredRequestState("getUsedSearch()").usedSearch;
57
- }
58
54
  /** Whether the render read dynamic data (`routeParams()`, `headers()`, `cookies()`). */
59
55
  export function hasDynamicIO() {
60
56
  return getRequiredRequestState("hasDynamicIO()").dynamicIO ?? false;
package/dist/router.d.ts CHANGED
@@ -22,7 +22,7 @@ export type NavigateOptions = {
22
22
  /** Control window scrolling after navigation. Defaults to `true`. */
23
23
  scroll?: boolean;
24
24
  };
25
- export declare const proxyPatternsAtom: import("@lfades/atom").Atom<string[] | undefined>;
25
+ export declare const proxyRegexpsAtom: import("@lfades/atom").Atom<string[] | undefined>;
26
26
  /** The tags and segment paths a cache invalidation affected. */
27
27
  type CacheInvalidation = {
28
28
  tags: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.tsx"],"names":[],"mappings":"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"}
package/dist/router.js CHANGED
@@ -28,7 +28,7 @@ const inflightTreeCache = new Map();
28
28
  const inflightRouteTreeByParent = new Map();
29
29
  const inflightSegmentCache = new Map();
30
30
  const inflightShellCache = new Map();
31
- export const proxyPatternsAtom = atom(undefined);
31
+ export const proxyRegexpsAtom = atom(undefined);
32
32
  /** Latest cache invalidation, or `null` before the first one. */
33
33
  const cacheInvalidationAtom = atom(null);
34
34
  /**
@@ -593,8 +593,8 @@ class Router {
593
593
  const parentPathname = `/${segments.slice(0, -1).join("/")}`;
594
594
  const inflightSiblingTree = inflightRouteTreeByParent.get(parentPathname);
595
595
  if (cache) {
596
- const proxyPatterns = proxyPatternsAtom.get();
597
- const predicted = predictRouteTree(target.href, proxyPatterns);
596
+ const proxyRegexps = proxyRegexpsAtom.get();
597
+ const predicted = predictRouteTree(target.href, proxyRegexps);
598
598
  if (predicted) {
599
599
  this.cache.registerRouteTree(predicted);
600
600
  return predicted;
@@ -667,7 +667,7 @@ class Router {
667
667
  return;
668
668
  const target = getUrl(url);
669
669
  const routeTreeResponse = this.cache.getRouteTreeResponse(target.href) ??
670
- predictRouteTree(target.href, proxyPatternsAtom.get()) ??
670
+ predictRouteTree(target.href, proxyRegexpsAtom.get()) ??
671
671
  (await this.prefetchRouteTree(url));
672
672
  const expectedRoutePrediction = routeTreeResponse.routePrediction;
673
673
  const missing = this.cache.findMissingSegmentLocations(routeTreeResponse);
@@ -1,5 +1,5 @@
1
- export { RouteType } from "./lib/server-router/types.js";
2
- export type { CreateMatcherFn, MatchedHandler, RouteEntry, RouteMatcher, } from "./lib/server-router/types.js";
1
+ export type { CreateMatcherFn, MatcherEntry, RouteMatcher } from "./lib/server-router/types.js";
3
2
  export type { LayoutRoute, NotFoundRoute, Route, RouteSegment, RouteHandlerRoute, } from "./lib/route-matcher.js";
4
- export { createRouterPlugin, rebaskRouter, type RouterPluginOptions, } from "./plugins/router/router-plugin.js";
3
+ export { createCompiledMatcher, type CompiledFind } from "./plugins/router/rou3-compiled.js";
4
+ export { createRouterPlugin, type RouterPluginOptions } from "./plugins/router/router-plugin.js";
5
5
  //# sourceMappingURL=server-router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-router.d.ts","sourceRoot":"","sources":["../src/server-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,YAAY,EACX,eAAe,EACf,cAAc,EACd,UAAU,EACV,YAAY,GACZ,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACX,WAAW,EACX,aAAa,EACb,KAAK,EACL,YAAY,EACZ,iBAAiB,GACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,kBAAkB,EAClB,YAAY,EACZ,KAAK,mBAAmB,GACxB,MAAM,mCAAmC,CAAA"}
1
+ {"version":3,"file":"server-router.d.ts","sourceRoot":"","sources":["../src/server-router.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC/F,YAAY,EACX,WAAW,EACX,aAAa,EACb,KAAK,EACL,YAAY,EACZ,iBAAiB,GACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAC5F,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mCAAmC,CAAA"}
@@ -1,2 +1,2 @@
1
- export { RouteType } from "./lib/server-router/types.js";
2
- export { createRouterPlugin, rebaskRouter, } from "./plugins/router/router-plugin.js";
1
+ export { createCompiledMatcher } from "./plugins/router/rou3-compiled.js";
2
+ export { createRouterPlugin } from "./plugins/router/router-plugin.js";
package/dist/vite.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { type Plugin } from "vite";
2
+ import { REBASK_PLUGIN_NAME } from "./lib/plugin-names.js";
2
3
  import type { LayoutRoute, Route, RouteHandlerRoute } from "./lib/route-matcher.js";
3
- /** The `name` of the Vite plugin. */
4
- export declare const REBASK_PLUGIN_NAME = "rebask:app-config";
4
+ import type { MatcherEntry } from "./lib/server-router/types.js";
5
+ export { REBASK_PLUGIN_NAME };
5
6
  type ShellPrerenderBase = {
6
7
  filePath: string;
7
8
  postponedState: string;
@@ -58,6 +59,11 @@ export interface RebaskPluginApi {
58
59
  getLayoutRoutes: () => LayoutRoute[];
59
60
  /** Get route handler routes (available after RSC build) */
60
61
  getRouteHandlerRoutes: () => RouteHandlerRoute[];
62
+ /**
63
+ * Get the entries used to build a compiled router. Their order matches the entries passed to
64
+ * `createMatcher` at runtime, so compiled indexes resolve correctly. Scans routes on first use.
65
+ */
66
+ getMatcherEntries: () => Promise<MatcherEntry[]>;
61
67
  /** Whether routes with a Markdown representation are also served at `.md` URLs. */
62
68
  hasMarkdownUrls: () => boolean;
63
69
  /** Get the built RSC entry, which a platform can move out of `dist` (available after config resolution) */
@@ -138,5 +144,4 @@ export interface RebaskPluginOptions {
138
144
  shellPrerenderTimeout?: number;
139
145
  }
140
146
  export declare function rebask(options?: RebaskPluginOptions): Plugin[];
141
- export {};
142
147
  //# sourceMappingURL=vite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}