@nifrajs/web 2.2.0 → 2.4.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 (179) hide show
  1. package/README.md +3 -3
  2. package/dist/build-vite.d.ts +4 -4
  3. package/dist/build-vite.d.ts.map +1 -1
  4. package/dist/build-vite.js +20 -74
  5. package/dist/build-vite.js.map +1 -1
  6. package/dist/build.d.ts +64 -42
  7. package/dist/build.d.ts.map +1 -1
  8. package/dist/build.js +100 -78
  9. package/dist/build.js.map +1 -1
  10. package/dist/bun-dev-entry.d.ts +1 -1
  11. package/dist/bun-dev-entry.js +1 -1
  12. package/dist/chunk-names.js +1 -1
  13. package/dist/client.d.ts +3 -9
  14. package/dist/client.d.ts.map +1 -1
  15. package/dist/client.js +201 -29
  16. package/dist/client.js.map +1 -1
  17. package/dist/conformance.d.ts +2 -2
  18. package/dist/conformance.js +3 -3
  19. package/dist/deferred.d.ts +11 -11
  20. package/dist/deferred.d.ts.map +1 -1
  21. package/dist/deferred.js +16 -16
  22. package/dist/dev-diagnostics.d.ts +20 -0
  23. package/dist/dev-diagnostics.d.ts.map +1 -0
  24. package/dist/dev-diagnostics.js +34 -0
  25. package/dist/dev-diagnostics.js.map +1 -0
  26. package/dist/dev-error.d.ts +10 -13
  27. package/dist/dev-error.d.ts.map +1 -1
  28. package/dist/dev-error.js +51 -37
  29. package/dist/dev-error.js.map +1 -1
  30. package/dist/dev-port.d.ts +3 -3
  31. package/dist/dev-port.d.ts.map +1 -1
  32. package/dist/dev-port.js +10 -4
  33. package/dist/dev-port.js.map +1 -1
  34. package/dist/dev.d.ts +4 -4
  35. package/dist/dev.d.ts.map +1 -1
  36. package/dist/dev.js +28 -12
  37. package/dist/dev.js.map +1 -1
  38. package/dist/diagnostic.d.ts +93 -0
  39. package/dist/diagnostic.d.ts.map +1 -0
  40. package/dist/diagnostic.js +205 -0
  41. package/dist/diagnostic.js.map +1 -0
  42. package/dist/draft.d.ts +12 -12
  43. package/dist/draft.js +11 -11
  44. package/dist/fn-state.d.ts +56 -0
  45. package/dist/fn-state.d.ts.map +1 -0
  46. package/dist/fn-state.js +77 -0
  47. package/dist/fn-state.js.map +1 -0
  48. package/dist/fn.d.ts +111 -0
  49. package/dist/fn.d.ts.map +1 -0
  50. package/dist/fn.js +125 -0
  51. package/dist/fn.js.map +1 -0
  52. package/dist/fonts-google.d.ts +9 -9
  53. package/dist/fonts-google.js +10 -10
  54. package/dist/fonts.d.ts +7 -7
  55. package/dist/fonts.js +1 -1
  56. package/dist/forms.d.ts +8 -8
  57. package/dist/fs.d.ts +1 -1
  58. package/dist/fs.js +1 -1
  59. package/dist/index.d.ts +151 -70
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +317 -139
  62. package/dist/index.js.map +1 -1
  63. package/dist/internal/head-attributes.d.ts +15 -0
  64. package/dist/internal/head-attributes.d.ts.map +1 -0
  65. package/dist/internal/head-attributes.js +99 -0
  66. package/dist/internal/head-attributes.js.map +1 -0
  67. package/dist/internal/script-types.d.ts +14 -0
  68. package/dist/internal/script-types.d.ts.map +1 -0
  69. package/dist/internal/script-types.js +17 -0
  70. package/dist/internal/script-types.js.map +1 -0
  71. package/dist/internal/server-boundary.d.ts +60 -0
  72. package/dist/internal/server-boundary.d.ts.map +1 -0
  73. package/dist/internal/server-boundary.js +174 -0
  74. package/dist/internal/server-boundary.js.map +1 -0
  75. package/dist/internal/timing-safe-equal.d.ts +1 -1
  76. package/dist/internal/timing-safe-equal.js +1 -1
  77. package/dist/internal/vite-import.d.ts +63 -0
  78. package/dist/internal/vite-import.d.ts.map +1 -0
  79. package/dist/internal/vite-import.js +94 -0
  80. package/dist/internal/vite-import.js.map +1 -0
  81. package/dist/islands.d.ts +5 -5
  82. package/dist/islands.js +5 -5
  83. package/dist/isr.d.ts +15 -15
  84. package/dist/isr.js +7 -7
  85. package/dist/manifest.d.ts +73 -35
  86. package/dist/manifest.d.ts.map +1 -1
  87. package/dist/manifest.js +10 -16
  88. package/dist/manifest.js.map +1 -1
  89. package/dist/module-graph.d.ts +5 -5
  90. package/dist/module-graph.js +4 -4
  91. package/dist/navigation.d.ts +120 -5
  92. package/dist/navigation.d.ts.map +1 -1
  93. package/dist/navigation.js +37 -5
  94. package/dist/navigation.js.map +1 -1
  95. package/dist/plugins/css-modules.d.ts +3 -3
  96. package/dist/plugins/css-modules.js +0 -0
  97. package/dist/plugins/kit.d.ts +8 -8
  98. package/dist/plugins/kit.js +9 -9
  99. package/dist/plugins/scss.js +3 -3
  100. package/dist/plugins/vite-leak-guard.d.ts +1 -1
  101. package/dist/plugins/vite-leak-guard.js +1 -1
  102. package/dist/plugins/vite-server-fn.d.ts +23 -0
  103. package/dist/plugins/vite-server-fn.d.ts.map +1 -0
  104. package/dist/plugins/vite-server-fn.js +51 -0
  105. package/dist/plugins/vite-server-fn.js.map +1 -0
  106. package/dist/plugins/vite-server-only.d.ts +49 -0
  107. package/dist/plugins/vite-server-only.d.ts.map +1 -0
  108. package/dist/plugins/vite-server-only.js +57 -0
  109. package/dist/plugins/vite-server-only.js.map +1 -0
  110. package/dist/prerender.d.ts +5 -5
  111. package/dist/prerender.js +7 -7
  112. package/dist/query.d.ts +10 -10
  113. package/dist/query.js +15 -15
  114. package/dist/route-manifest.d.ts +1 -1
  115. package/dist/route-manifest.js +2 -2
  116. package/dist/router.d.ts +30 -21
  117. package/dist/router.d.ts.map +1 -1
  118. package/dist/router.js +62 -32
  119. package/dist/router.js.map +1 -1
  120. package/dist/search.d.ts +94 -0
  121. package/dist/search.d.ts.map +1 -0
  122. package/dist/search.js +232 -0
  123. package/dist/search.js.map +1 -0
  124. package/dist/server-only.d.ts +6 -6
  125. package/dist/server-only.js +7 -7
  126. package/dist/service-worker.d.ts +56 -0
  127. package/dist/service-worker.d.ts.map +1 -0
  128. package/dist/service-worker.js +127 -0
  129. package/dist/service-worker.js.map +1 -0
  130. package/dist/vite.d.ts +16 -14
  131. package/dist/vite.d.ts.map +1 -1
  132. package/dist/vite.js +51 -24
  133. package/dist/vite.js.map +1 -1
  134. package/package.json +38 -4
  135. package/server-manifest.d.ts +31 -0
  136. package/src/build-vite.ts +24 -77
  137. package/src/build.ts +137 -105
  138. package/src/bun-dev-entry.ts +1 -1
  139. package/src/chunk-names.ts +1 -1
  140. package/src/client.ts +215 -32
  141. package/src/conformance.ts +3 -3
  142. package/src/deferred.ts +17 -17
  143. package/src/dev-diagnostics.ts +47 -0
  144. package/src/dev-error.ts +64 -33
  145. package/src/dev-port.ts +17 -5
  146. package/src/dev.ts +36 -20
  147. package/src/diagnostic.ts +284 -0
  148. package/src/draft.ts +15 -15
  149. package/src/fn-state.ts +107 -0
  150. package/src/fn.ts +199 -0
  151. package/src/fonts-google.ts +13 -13
  152. package/src/fonts.ts +7 -7
  153. package/src/forms.ts +8 -8
  154. package/src/fs.ts +2 -2
  155. package/src/index.ts +460 -181
  156. package/src/internal/head-attributes.ts +109 -0
  157. package/src/internal/script-types.ts +18 -0
  158. package/src/internal/server-boundary.ts +187 -0
  159. package/src/internal/timing-safe-equal.ts +1 -1
  160. package/src/internal/vite-import.ts +92 -0
  161. package/src/islands.ts +7 -7
  162. package/src/isr.ts +17 -17
  163. package/src/manifest.ts +83 -42
  164. package/src/module-graph.ts +6 -6
  165. package/src/navigation.ts +151 -5
  166. package/src/plugins/css-modules.ts +0 -0
  167. package/src/plugins/kit.ts +11 -11
  168. package/src/plugins/scss.ts +3 -3
  169. package/src/plugins/vite-leak-guard.ts +2 -2
  170. package/src/plugins/vite-server-fn.ts +67 -0
  171. package/src/plugins/vite-server-only.ts +75 -0
  172. package/src/prerender.ts +10 -10
  173. package/src/query.ts +22 -22
  174. package/src/route-manifest.ts +3 -3
  175. package/src/router.ts +98 -45
  176. package/src/search.ts +297 -0
  177. package/src/server-only.ts +7 -7
  178. package/src/service-worker.ts +165 -0
  179. package/src/vite.ts +61 -32
package/dist/index.d.ts CHANGED
@@ -1,21 +1,21 @@
1
1
  /**
2
- * @nifrajs/web — the framework-agnostic SSR core. It owns the render *seam* and the HTML
2
+ * @nifrajs/web - the framework-agnostic SSR core. It owns the render *seam* and the HTML
3
3
  * document orchestration, and knows nothing about any specific UI framework: a render
4
4
  * adapter (@nifrajs/web-solid, @nifrajs/web-react, …) supplies the actual render + hydrate.
5
5
  *
6
- * The core treats a "component" and a hydration "container" as opaque `unknown` — only
6
+ * The core treats a "component" and a hydration "container" as opaque `unknown` - only
7
7
  * the adapter interprets them. That keeps this package both framework-agnostic and free
8
8
  * of DOM types: it is pure server orchestration + string building.
9
9
  */
10
10
  import { server } from "@nifrajs/core/server";
11
11
  import { type Deferred, defer } from "./deferred.js";
12
- import type { LinkDescriptor, Manifest, Meta, MetaArgs, MetaInput, ScriptDescriptor } from "./manifest.js";
12
+ import type { LinkDescriptor, Manifest, Meta, MetaArgs, MetaDescriptor, MetaInput, ScriptDescriptor, UnsafeScriptDescriptor } from "./manifest.js";
13
13
  import { type Submission } from "./router.js";
14
14
  export { DRAFT_COOKIE, type DraftCookieControls, disableDraft, type EnableDraftOptions, enableDraft, isDraftEnabled, type PreviewEndpointOptions, previewEndpoint, } from "./draft.js";
15
15
  export { type FontDisplay, type FontFace, type FontPreloadInput, type FontSource, fontFace, fontPreload, } from "./fonts.js";
16
16
  export { type CachedResponse, type CacheStore, ISR_REVALIDATE_HEADER, ISR_STATUS_HEADER, type ISRApp, type ISROptions, type ISRPlatform, KVCacheStore, type KVCacheStoreOptions, type KVNamespaceLike, MemoryCacheStore, type MemoryCacheStoreOptions, type RevalidateEndpointOptions, revalidateEndpoint, withISR, } from "./isr.js";
17
- export { type Action, buildManifest, enumerateStaticRoutes, filePathToPattern, filePathToPatterns, type GetStaticPaths, type LayoutEntry, type LinkDescriptor, type Loader, type LoaderContext, type Manifest, type Meta, type MetaArgs, type MetaInput, type RouteEntry, type RouteModule, type ScriptDescriptor, type StaticPath, type StaticPaths, type StaticRoutes, } from "./manifest.js";
18
- export { type BrowserNavigate, getBrowserNavigate, type NavigateOptions, setBrowserNavigate, } from "./navigation.js";
17
+ export { type Action, buildManifest, enumerateStaticRoutes, filePathToPattern, filePathToPatterns, type GetStaticPaths, type InertScriptType, type LayoutEntry, type LinkDescriptor, type Loader, type LoaderContext, type Manifest, type Meta, type MetaArgs, type MetaInput, type RouteEntry, type RouteModule, type ScriptDescriptor, type StaticPath, type StaticPaths, type StaticRoutes, type UnsafeScriptDescriptor, } from "./manifest.js";
18
+ export { type Blocker, type BlockerController, type BlockerFunction, type BlockerLocation, type BlockerState, type BrowserNavigate, getBrowserNavigate, IDLE_BLOCKER, type NavigateFunction, type NavigateOptions, type NavigateSearchOf, type NavigateTargetInput, type RouteSearch, registerBlocker, resolveNavigate, setBlockerController, setBrowserNavigate, } from "./navigation.js";
19
19
  export { type PublicDirCache, resolvePublicPath, type ServePublicDirOptions, servePublicDir, } from "./public-dir.js";
20
20
  export { createMutation, createQueryClient, type DehydratedState, hashQueryKey, type InfiniteData, type InfiniteQueryHandle, type InfiniteQueryOptions, type MutationCallbacks, type MutationHandle, type MutationState, type MutationStatus, type QueryClient, type QueryClientOptions, type QueryHandle, type QueryOptions, type QueryState, type QueryStatus, } from "./query.js";
21
21
  export { type ClientRouter, type ClientRouterOptions, createClientRouter, createMatcher, DATA_HEADER, type Fetcher, type FetcherState, type FetchRouteData, type MountRouterOptions, NAV_FROM_HEADER, REDIRECT_HEADER, RETAIN_HEADER, REVALIDATE_HEADER, type RouteMatch, type RoutePattern, type RouterState, STATUS_HEADER, type Submission, type SubmitOptions, } from "./router.js";
@@ -23,20 +23,20 @@ export { type Deferred, defer };
23
23
  /** Phantom brand key for {@link ServerOnly}. A unique symbol so the brand can't be forged by a plain
24
24
  * object literal; `unique symbol` keys never appear in the emitted JS, so the brand is purely
25
25
  * type-level (zero runtime cost). The property is optional + `never`-typed, so a `ServerOnly<T>`
26
- * stays assignment-compatible with `T` — it documents intent without obstructing real use. */
26
+ * stays assignment-compatible with `T` - it documents intent without obstructing real use. */
27
27
  declare const SERVER_ONLY_BRAND: unique symbol;
28
28
  /**
29
- * Type-level intent marker for a value that must only exist on the server — a secret, a DB handle, a
29
+ * Type-level intent marker for a value that must only exist on the server - a secret, a DB handle, a
30
30
  * server-only client. `ServerOnly<T>` is structurally `T` (the brand is an optional phantom field, so
31
31
  * existing code keeps type-checking), but it advertises to readers + the compiler that the value is
32
- * not meant to cross to the browser. It is **purely type-level** and erases at build — it does NOT,
32
+ * not meant to cross to the browser. It is **purely type-level** and erases at build - it does NOT,
33
33
  * by itself, keep the value out of the client bundle.
34
34
  *
35
35
  * The enforcement is two runtime conventions:
36
- * - add the side-effect import `import "@nifrajs/web/server-only"` at the top of the module — the
36
+ * - add the side-effect import `import "@nifrajs/web/server-only"` at the top of the module - the
37
37
  * client build ({@link buildClient}) fails loud, with the import chain, if it reaches a browser
38
38
  * chunk (the poison-import marker);
39
- * - or name the file `*.server.ts` — the `.server` convention empties it in the client build.
39
+ * - or name the file `*.server.ts` - the `.server` convention empties it in the client build.
40
40
  *
41
41
  * Use this brand to express the intent in the types; pair it with one of those runtime markers so a
42
42
  * leak is caught at build time rather than shipping a secret to the client.
@@ -50,9 +50,10 @@ export type ServerOnly<T> = T & {
50
50
  readonly [SERVER_ONLY_BRAND]?: never;
51
51
  };
52
52
  export { assertRenderAdapterConformance, RenderAdapterConformanceError, type RenderAdapterConformanceFixture, } from "./conformance.js";
53
+ export { type SearchOf, searchOf, searchOfChain, serializeSearch } from "./search.js";
53
54
  /** The data handed to a route component. Opaque to the core. `actionData` is the return of a
54
55
  * route `action` after a POST (absent on plain GETs). `pending` + `submission` are client-only
55
- * (absent on SSR): they drive **optimistic UI** — render from `submission.formData` while `pending`. */
56
+ * (absent on SSR): they drive **optimistic UI** - render from `submission.formData` while `pending`. */
56
57
  export interface RenderProps {
57
58
  readonly data: unknown;
58
59
  /**
@@ -75,10 +76,15 @@ export interface RenderProps {
75
76
  * SSR (from the request match) and on client navigation (from router state) so an adapter's
76
77
  * `useParams` reads the same value on both, with no hydration mismatch. Absent ⇒ no params (`{}`). */
77
78
  readonly params?: Readonly<Record<string, string>>;
78
- /** The current URL's `pathname + search` (no hash — the hash never reaches the server). Threaded on
79
+ /** The current URL's `pathname + search` (no hash - the hash never reaches the server). Threaded on
79
80
  * SSR and client alike so an adapter's `useLocation`/`useSearchParams` hydrate consistently. Absent
80
81
  * on adapters/callers that don't supply it (treated as `""`). */
81
82
  readonly path?: string;
83
+ /** The route's typed, validated search params (the value the loader also gets as `ctx.search`),
84
+ * threaded to the adapter's `useSearch`. Derived identically on SSR (from the request) and on client
85
+ * navigation (adapter mount) via the shared `searchOf`, so a component reading it hydrates with no
86
+ * drift. Absent ⇒ no search context (`{}`). */
87
+ readonly search?: Record<string, unknown>;
82
88
  }
83
89
  /**
84
90
  * The seam every render adapter implements. New adapters should prove these invariants with
@@ -91,17 +97,17 @@ export interface RenderAdapter {
91
97
  * (the loader data); each layout wraps the child via its `children`. Returns (or resolves to)
92
98
  * a Web `ReadableStream<Uint8Array>`: a streaming renderer flushes the shell first and streams
93
99
  * Suspense boundaries as they resolve; a non-streaming renderer may return a one-chunk stream.
94
- * May be async — e.g. React resolves once the shell is renderable, so a shell-render throw can
100
+ * May be async - e.g. React resolves once the shell is renderable, so a shell-render throw can
95
101
  * still map to an error status before any byte is sent.
96
102
  */
97
103
  renderToStream(chain: readonly unknown[], props: RenderProps): ReadableStream<Uint8Array> | Promise<ReadableStream<Uint8Array>>;
98
104
  /**
99
105
  * Server (optional): render the chain to a complete HTML **string** in one pass, with the same
100
106
  * hydration markers `renderToStream` produces. When provided, `renderPage` uses it for any page
101
- * that does **not** `defer()` — buffering the document is faster than the streaming pipeline there,
107
+ * that does **not** `defer()` - buffering the document is faster than the streaming pipeline there,
102
108
  * because the framework's synchronous renderer (React `renderToString`, Solid `renderToString`,
103
109
  * Preact `render`, Vue `renderToString`, Svelte `render`) is markedly cheaper than its streaming
104
- * renderer — most visibly on Bun, where React Fizz / Solid `renderToStream` are the heaviest. Pages
110
+ * renderer - most visibly on Bun, where React Fizz / Solid `renderToStream` are the heaviest. Pages
105
111
  * that `defer()` keep the streaming path (progressive `<Await>` needs it). Markup MUST be
106
112
  * hydration-equivalent to `renderToStream`; a throw surfaces like the streaming shell-readiness
107
113
  * await (the `_error` boundary maps it to a status). Omit it to always stream.
@@ -111,7 +117,7 @@ export interface RenderAdapter {
111
117
  * Server: per-document bootstrap markup injected into `<head>` that the client
112
118
  * `hydrate` requires (Solid: `generateHydrationScript()`). Empty string if none.
113
119
  */
114
- hydrationHead(): string;
120
+ hydrationHead(nonce?: string): string;
115
121
  }
116
122
  /** Global the server serializes loader data into; the client reads it to hydrate. */
117
123
  export declare const DATA_GLOBAL = "__NIFRA_DATA__";
@@ -124,12 +130,24 @@ export declare const ROUTE_GLOBAL = "__NIFRA_ROUTE__";
124
130
  * reads it so hydration after a native form POST matches the server-rendered markup. */
125
131
  export declare const ACTION_GLOBAL = "__NIFRA_ACTION__";
126
132
  /**
127
- * Pre-hydration form guard — a tiny inline script flushed in `<head>` (it runs in the window between
133
+ * Marker attribute on the app container, emitted ONLY when `rootId` is not the default.
134
+ *
135
+ * `rootId` is a per-RENDER option; the client entry is a per-BUILD artifact, so it cannot be
136
+ * generated knowing which id a given render will use. The container therefore announces itself, and
137
+ * the entry finds it by this attribute before falling back to `#root`. It has to be the DOM rather
138
+ * than another `window.__NIFRA_*` global: a second copy of the id can drift from the markup, while
139
+ * this is written by the same expression that writes the id and cannot.
140
+ *
141
+ * Absent on a default render, so an app that never sets `rootId` emits the same bytes it always has.
142
+ */
143
+ export declare const ROOT_ATTRIBUTE = "data-nifra-root";
144
+ /**
145
+ * Pre-hydration form guard - a tiny inline script flushed in `<head>` (it runs in the window between
128
146
  * first paint and the island bundle taking over). It neutralizes the one real hydration footgun: a
129
147
  * JS-only form (a hand-wired `onSubmit` with no native fallback) submitting *natively* before its
130
148
  * handler is attached, which navigates the browser to a broken `?field=…` GET of the current page.
131
149
  *
132
- * It blocks ONLY that shape — an effective-GET form whose action targets the current document — and
150
+ * It blocks ONLY that shape - an effective-GET form whose action targets the current document - and
133
151
  * only until hydration commits (`data-nifra-hydrated`, set by the client entry). Method-`post` forms
134
152
  * (progressive enhancement: the native POST hits the route `action`) and GET forms with a real action
135
153
  * (a search box → `/search`) pass through untouched. Opt out per-form with `data-native`. Static text
@@ -139,7 +157,7 @@ export declare const PRE_HYDRATION_GUARD: string;
139
157
  /**
140
158
  * The single default port for the dev server (`@nifrajs/web/dev`, `@nifrajs/web/vite`) **and**
141
159
  * `nifra start`. Deliberately uncommon: `3000`/`5173`/`8080` collide with whatever else is running
142
- * (Next, Vite, a stray Node API). `4321` rarely is — and being the *same* constant across `nifra dev`
160
+ * (Next, Vite, a stray Node API). `4321` rarely is - and being the *same* constant across `nifra dev`
143
161
  * and `nifra start` means a project's URL doesn't change between commands. Override per-run with
144
162
  * `--port <n>` or the `PORT` env var. */
145
163
  export declare const DEFAULT_DEV_PORT = 4321;
@@ -156,21 +174,27 @@ export interface RenderedPage {
156
174
  }
157
175
  export interface RenderPageOptions {
158
176
  readonly adapter: RenderAdapter;
159
- /** The layout chain to render — outermost layout → page (opaque; the adapter renders it). */
177
+ /** The layout chain to render - outermost layout → page (opaque; the adapter renders it). */
160
178
  readonly chain: readonly unknown[];
161
179
  /** The loader output for this request. */
162
180
  readonly data: unknown;
163
- /** An action's data return (POST only) — surfaced to the page as `actionData` + serialized
181
+ /** An action's data return (POST only) - surfaced to the page as `actionData` + serialized
164
182
  * for the client so post-POST hydration matches. Omit on GETs. */
165
183
  readonly actionData?: unknown;
166
- /** URL of the built client entry (loaded as a module script). */
167
- readonly clientEntry: string;
184
+ /**
185
+ * URL of the built client entry (loaded as a module script).
186
+ *
187
+ * Optional ONLY on a `hydrate: false` page, where there is no client takeover to feed and this value
188
+ * reaches no output at all. The union below is what enforces that: omitting it on a hydrating page
189
+ * stays a compile error rather than rendering `src=""`.
190
+ */
191
+ readonly clientEntry?: string;
168
192
  /** Chunk URLs for the **matched** route (its layout chain + own chunk) to `modulepreload` in the
169
- * shell — so the route code downloads in parallel with the entry instead of after it
193
+ * shell - so the route code downloads in parallel with the entry instead of after it
170
194
  * (`buildClient`'s per-route map). Empty/omitted ⇒ only the entry is preloaded (unchanged). */
171
195
  readonly preload?: readonly string[];
172
196
  /** Stylesheet URLs for the **matched** route (its layout chain + own CSS, from `buildClient`'s
173
- * `BuildManifest.css`) — injected as `<link rel="stylesheet">` in `<head>` so styles arrive with the
197
+ * `BuildManifest.css`) - injected as `<link rel="stylesheet">` in `<head>` so styles arrive with the
174
198
  * first paint (no FOUC). Rendered even on non-hydrated pages. Empty/omitted ⇒ none (unchanged). */
175
199
  readonly styles?: readonly string[];
176
200
  /** SSG: the prerendered-path set, serialized to `window.__NIFRA_PRERENDERED__` so the client fetches
@@ -181,14 +205,18 @@ export interface RenderPageOptions {
181
205
  readonly revalidate?: number;
182
206
  /** Matched route id; written to `window.__NIFRA_ROUTE__` so the client hydrates this chain. */
183
207
  readonly routeId?: string;
184
- /** The matched route's decoded path params — surfaced to the page as `params` (via {@link RenderProps})
208
+ /** The matched route's decoded path params - surfaced to the page as `params` (via {@link RenderProps})
185
209
  * so an adapter's `useParams` is SSR-correct. Omit ⇒ `{}` (a route with no dynamic segments, or an
186
210
  * error/404 render). */
187
211
  readonly params?: Readonly<Record<string, string>>;
188
- /** The request's `pathname + search` — surfaced as `path` (via {@link RenderProps}) so an adapter's
212
+ /** The request's `pathname + search` - surfaced as `path` (via {@link RenderProps}) so an adapter's
189
213
  * `useLocation`/`useSearchParams` render the right URL server-side and hydrate without drift. Omit ⇒
190
214
  * `""`. */
191
215
  readonly path?: string;
216
+ /** The route's validated search (`searchOf(mod.searchSchema, url.search)`, the same value handed to
217
+ * the loader as `ctx.search`), surfaced as `search` (via {@link RenderProps}) so an adapter's
218
+ * `useSearch` is SSR-correct. Omit ⇒ `{}` (a render with no search context). */
219
+ readonly search?: Record<string, unknown>;
192
220
  /** Per-layout loader data, forwarded to the adapter as `RenderProps.layoutData`. Aligned with the
193
221
  * chain's layout prefix; omitted when no layout in the chain has a loader. */
194
222
  readonly layoutData?: readonly unknown[];
@@ -200,40 +228,55 @@ export interface RenderPageOptions {
200
228
  readonly headers?: HeadersLike;
201
229
  /** Document title (fallback when `head.title` is unset). */
202
230
  readonly title?: string;
203
- /** Resolved route head — `title` overrides `title` above; `meta`/`link` render as managed
231
+ /** Resolved route head - `title` overrides `title` above; `meta`/`link` render as managed
204
232
  * (`data-nifra`) tags the client updates on navigation.
205
233
  *
206
234
  * **Head contract (the layout chain contributes).** `createWebApp` resolves this via
207
235
  * {@link mergeHeads}: a route's head is its **layout chain's** `meta`/`head` exports merged with the
208
- * page's. A `_layout.tsx` may `export const meta` (or `export function meta(args)`) — its tags land
236
+ * page's. A `_layout.tsx` may `export const meta` (or `export function meta(args)`) - its tags land
209
237
  * on every page below it (the home for `hreflang`, `preconnect`, a section-default `<title>`). The
210
238
  * merge is **nearest-wins for scalars** (the page's `title` overrides an inner layout's, which
211
239
  * overrides an outer one; an undefined page title keeps the layout's) and **concatenated for the
212
- * `meta`/`link` arrays** (outermost layout first, page last). `<link>` attributes are name-validated
213
- * (any letter/digit/hyphen name — covers `rel`/`href`/`hreflang`/`crossorigin`/`media`/`sizes`/`as`/
214
- * `integrity`/`fetchpriority`/…) and value-escaped against XSS. */
240
+ * `meta`/`link` arrays** (outermost layout first, page last). `<meta>`/`<link>` attributes pass a
241
+ * shared tag-specific allowlist (including inert `data-*` metadata) and values are escaped. */
215
242
  readonly head?: Meta;
216
- /** Id of the container wrapping the app markup (default `"root"`). */
243
+ /** Id of the container wrapping the app markup (default `"root"`). A non-default id also gets
244
+ * {@link ROOT_ATTRIBUTE}, which is how the generated client entry finds the container to hydrate -
245
+ * the entry is built once and cannot know what a given render chose. */
217
246
  readonly rootId?: string;
218
- /** When `false`, emit a complete but **non-hydrated** document — no client entry script, data
247
+ /** When `false`, emit a complete but **non-hydrated** document - no client entry script, data
219
248
  * globals, or modulepreloads. Used for server-rendered `_error` pages: a terminal state that needs no
220
249
  * client takeover, and it sidesteps an SSR/hydrate mismatch (the server rendered the boundary, not
221
250
  * the page the client manifest maps this route id to). Default `true`. */
222
251
  readonly hydrate?: boolean;
223
252
  /** Island client bundles (`@nifrajs/web/islands`) to load as `<script type="module">` in the document
224
- * tail — emitted **regardless of `hydrate`**, so a static (`hydrate: false`) page can still mount
253
+ * tail - emitted **regardless of `hydrate`**, so a static (`hydrate: false`) page can still mount
225
254
  * no-framework islands. URLs are attribute-escaped. Empty/omitted ⇒ none (unchanged output). */
226
255
  readonly islandScripts?: readonly string[];
256
+ /** CSP nonce applied to every framework-owned executable script in this document. */
257
+ readonly nonce?: string;
227
258
  }
228
259
  /**
229
- * Server: render a full HTML document for a page — the adapter's hydration head + the SSR
230
- * markup (**streamed**) + the serialized loader data + the client module — as a `Response`.
260
+ * `renderPage` input. A hydrating page (the default) must supply `clientEntry`, because the document
261
+ * loads it as a module script; a `hydrate: false` page may omit it, because nothing in the emitted
262
+ * document references it. Expressed as a union so the compiler enforces the pairing rather than the
263
+ * renderer discovering an empty `src` at runtime.
264
+ */
265
+ export type RenderPageInput = RenderPageOptions & ({
266
+ readonly hydrate?: true;
267
+ readonly clientEntry: string;
268
+ } | {
269
+ readonly hydrate: false;
270
+ });
271
+ /**
272
+ * Server: render a full HTML document for a page - the adapter's hydration head + the SSR
273
+ * markup (**streamed**) + the serialized loader data + the client module - as a `Response`.
231
274
  * The shell (`<head>` + the open container) flushes first, the adapter's app stream follows,
232
275
  * then the tail (data globals + client entry). Pure Web Standards, so it returns straight from
233
276
  * a nifra route handler and streams on any fetch runtime (Bun/Node/Deno/Workers).
234
277
  */
235
- export declare function renderPage(options: RenderPageOptions): MaybePromise<Response>;
236
- export declare function renderPageResult(options: RenderPageOptions): MaybePromise<RenderedPage>;
278
+ export declare function renderPage(options: RenderPageInput): MaybePromise<Response>;
279
+ export declare function renderPageResult(options: RenderPageInput): MaybePromise<RenderedPage>;
237
280
  /** Options for {@link redirect}. */
238
281
  export interface RedirectOptions {
239
282
  /** HTTP status (default 303 See Other; pass 307/308 to preserve the method). */
@@ -244,12 +287,12 @@ export interface RedirectOptions {
244
287
  readonly external?: boolean;
245
288
  }
246
289
  /**
247
- * Build a redirect `Response` — return it from a route `action` for the Post/Redirect/Get
290
+ * Build a redirect `Response` - return it from a route `action` for the Post/Redirect/Get
248
291
  * pattern (POST mutates, 303 sends the browser to a fresh GET, so a reload doesn't re-submit).
249
292
  * Defaults to 303 (See Other); pass `{ status: 307 }` or `{ status: 308 }` to preserve the method.
250
293
  *
251
294
  * **Secure by default:** `location` must be a same-origin path (begins with `/`, not `//`). An
252
- * off-origin/absolute destination throws unless you pass `{ external: true }` — this closes the
295
+ * off-origin/absolute destination throws unless you pass `{ external: true }` - this closes the
253
296
  * open-redirect footgun of `return redirect(formData.get("next"))` on the no-JS (native-form) path,
254
297
  * which returns the action's `Response` verbatim.
255
298
  *
@@ -313,7 +356,7 @@ export declare function gone(options?: StatusPageOptions): never;
313
356
  export declare function statusPage(status: number, options?: StatusPageOptions): never;
314
357
  /** The wrapper `revalidate()` returns: the action's `data` plus the paths it changed. A plain tagged
315
358
  * shape (not a class) so `@nifrajs/client`'s `ActionData` can unwrap it structurally without importing
316
- * from `@nifrajs/web`. `createWebApp` strips the wrapper — the client receives `data` as the body and
359
+ * from `@nifrajs/web`. `createWebApp` strips the wrapper - the client receives `data` as the body and
317
360
  * the paths via the `X-Nifra-Revalidate` header. */
318
361
  export interface RevalidateResult<T> {
319
362
  readonly __nifraRevalidate: readonly string[];
@@ -322,7 +365,7 @@ export interface RevalidateResult<T> {
322
365
  /**
323
366
  * Return this from an action to declare which routes the mutation changed (alongside the action's
324
367
  * `data`). `createWebApp` sets the `X-Nifra-Revalidate` response header; after the submit the client
325
- * marks those cached routes stale — refetching the active one and any mounted fetcher showing them —
368
+ * marks those cached routes stale - refetching the active one and any mounted fetcher showing them -
326
369
  * so a mutation can refresh views beyond the one that was submitted. `data` is still surfaced to the
327
370
  * component as `actionData` (the wrapper is transparent to `ActionData<typeof action>`).
328
371
  */
@@ -345,7 +388,7 @@ export declare function resolveMeta(meta: MetaInput | undefined, args: MetaArgs)
345
388
  * ```
346
389
  */
347
390
  export declare function canonical(href: string): LinkDescriptor;
348
- /** Inputs for {@link openGraph} — the common Open Graph properties. All optional; only the provided
391
+ /** Inputs for {@link openGraph} - the common Open Graph properties. All optional; only the provided
349
392
  * ones become tags. `type` defaults to `"website"`. */
350
393
  export interface OpenGraphInput {
351
394
  readonly title?: string;
@@ -354,7 +397,7 @@ export interface OpenGraphInput {
354
397
  readonly image?: string;
355
398
  /** Canonical URL of the page (`og:url`). */
356
399
  readonly url?: string;
357
- /** Object type (`og:type`) — `"website"`, `"article"`, … Default `"website"`. */
400
+ /** Object type (`og:type`) - `"website"`, `"article"`, … Default `"website"`. */
358
401
  readonly type?: string;
359
402
  }
360
403
  /**
@@ -365,7 +408,7 @@ export interface OpenGraphInput {
365
408
  * export const meta = { meta: [...openGraph({ title: "Nifra", image: "https://site.com/og.png" })] }
366
409
  * ```
367
410
  */
368
- export declare function openGraph(input: OpenGraphInput): Array<Record<string, string>>;
411
+ export declare function openGraph(input: OpenGraphInput): MetaDescriptor[];
369
412
  /**
370
413
  * Build a JSON-LD `<script type="application/ld+json">` entry for a route's `meta.script` from a plain
371
414
  * object. `JSON.stringify` produces the body; the head renderer breakout-escapes it (see
@@ -378,6 +421,14 @@ export declare function openGraph(input: OpenGraphInput): Array<Record<string, s
378
421
  * ```
379
422
  */
380
423
  export declare function jsonLd(data: Record<string, unknown>): ScriptDescriptor;
424
+ /**
425
+ * Deliberately unsafe escape hatch for executable inline code. The required nonce keeps the result
426
+ * compatible with a strict CSP and makes the security-sensitive choice visible at the call site.
427
+ */
428
+ export declare function unsafeInlineScript(content: string, options: {
429
+ readonly nonce: string;
430
+ readonly type?: "module" | "text/javascript";
431
+ }): UnsafeScriptDescriptor;
381
432
  /**
382
433
  * Merge a route's `<head>` contributions from its layout chain + the page into one {@link Meta}.
383
434
  *
@@ -385,15 +436,15 @@ export declare function jsonLd(data: Record<string, unknown>): ScriptDescriptor;
385
436
  * `meta` to put sitewide tags (`hreflang`, `preconnect`, a default `<title>`, …) on every page below
386
437
  * it. `heads` is passed **outermost layout → … → innermost layout → page** (the same order as the
387
438
  * render chain), and merges:
388
- * - **`title`** — *nearest-wins*: the last defined value across the list, so the page overrides an
439
+ * - **`title`** - *nearest-wins*: the last defined value across the list, so the page overrides an
389
440
  * inner layout, which overrides an outer one. A layout `title` is the section default; an undefined
390
441
  * page `title` keeps it.
391
- * - **`meta` / `link`** — *concatenated* in list order (outermost first, page last). Duplicate-tag
442
+ * - **`meta` / `link`** - *concatenated* in list order (outermost first, page last). Duplicate-tag
392
443
  * de-duplication is the caller's concern; the framework emits exactly what's declared so a layout
393
444
  * can ship N `<link rel="alternate" hreflang>` tags and a page can add its own canonical.
394
445
  *
395
446
  * Returns a fresh object whose identity is stable per `heads` *content* only when every entry is a
396
- * static (by-reference) `Meta` and there is exactly one — otherwise a new object each call. That is
447
+ * static (by-reference) `Meta` and there is exactly one - otherwise a new object each call. That is
397
448
  * fine: {@link headTags}'s memo is keyed on identity, so a per-request merge simply recomputes (its
398
449
  * content can vary with loader data anyway).
399
450
  */
@@ -405,7 +456,7 @@ export interface CreateWebAppOptions {
405
456
  readonly clientEntry: string;
406
457
  /** Default document title for all pages. */
407
458
  readonly title?: string;
408
- /** Injected into each loader's `ctx.api` — typically an `inProcessClient(app)` (typed
459
+ /** Injected into each loader's `ctx.api` - typically an `inProcessClient(app)` (typed
409
460
  * per-route via `@nifrajs/client`'s `createRoutes`). Opaque to the core.
410
461
  *
411
462
  * **Auto-mount.** Every `inProcessClient(backend)` exposes the symbol-keyed platform-aware backend
@@ -454,15 +505,15 @@ export interface CreateWebAppOptions {
454
505
  * signed `__nifra_draft` cookie gets `ctx.draft === true` in loaders/actions (else always `false`).
455
506
  * Pair with `withISR({ draftSecret })` so editors bypass the cache. Omit to disable draft mode. */
456
507
  readonly draftSecret?: string;
457
- /** Per-route chunk URLs (`buildClient`'s `BuildManifest.routes`) — `routeId → [layout chunks…, own
508
+ /** Per-route chunk URLs (`buildClient`'s `BuildManifest.routes`) - `routeId → [layout chunks…, own
458
509
  * chunk]`. When present, each page `modulepreload`s its matched route's chunks alongside the entry,
459
510
  * so the route code downloads in parallel (no entry→route-chunk waterfall). Omit ⇒ entry-only. */
460
511
  readonly routePreload?: Readonly<Record<string, readonly string[]>>;
461
- /** The app's bundled stylesheet URLs (`buildClient`'s `BuildManifest.css`) — the aggregate, injected
512
+ /** The app's bundled stylesheet URLs (`buildClient`'s `BuildManifest.css`) - the aggregate, injected
462
513
  * as `<link rel="stylesheet">` in a page's `<head>`. Used as the fallback for any route absent from
463
514
  * {@link routeStyles}. Omit ⇒ no links (dev, where Vite injects CSS, or a CSS-free app). */
464
515
  readonly styles?: readonly string[];
465
- /** Per-route stylesheet URLs (`buildClient`'s `BuildManifest.routeStyles`) — `routeId → [chain CSS]`.
516
+ /** Per-route stylesheet URLs (`buildClient`'s `BuildManifest.routeStyles`) - `routeId → [chain CSS]`.
466
517
  * When a matched route has an entry here, only those (its layout chain + own CSS) are linked instead
467
518
  * of the aggregate `styles`, so a page ships only the CSS it uses. An empty array ⇒ no `<link>` (the
468
519
  * page imports no CSS). Routes absent here fall back to `styles`. Omit ⇒ always use `styles`. */
@@ -473,14 +524,14 @@ export interface CreateWebAppOptions {
473
524
  readonly prerenderedPaths?: readonly string[];
474
525
  /** SSG: per dynamic route pattern, its `getStaticPaths` `fallback` (from `enumerateStaticRoutes` or
475
526
  * the build's `prerendered.json`). A route mapped to `"404"` rejects any path NOT in
476
- * `prerenderedPaths` with the 404 page — the unlisted path simply doesn't exist. `"ssr"` (the
527
+ * `prerenderedPaths` with the 404 page - the unlisted path simply doesn't exist. `"ssr"` (the
477
528
  * default for unmapped routes) renders unlisted paths on-demand. */
478
529
  readonly staticFallbacks?: Readonly<Record<string, "ssr" | "404">>;
479
- /** Observe every loader/action failure — for error-reporting plugins (Sentry-style). Called for
530
+ /** Observe every loader/action failure - for error-reporting plugins (Sentry-style). Called for
480
531
  * real throws (not control-flow `Response`s like `redirect`), **before** the nearest `_error`
481
- * boundary renders / a soft-nav 500 / a rethrow — so it sees errors that the boundary would
532
+ * boundary renders / a soft-nav 500 / a rethrow - so it sees errors that the boundary would
482
533
  * otherwise hide. Observation only; its own throws are swallowed so a faulty reporter can't break
483
- * rendering. (`beforeLoader` is intentionally omitted — the core HTTP hooks already cover
534
+ * rendering. (`beforeLoader` is intentionally omitted - the core HTTP hooks already cover
484
535
  * pre-request work.) */
485
536
  readonly onLoaderError?: (error: unknown, ctx: {
486
537
  readonly request: Request;
@@ -491,15 +542,15 @@ export interface CreateWebAppOptions {
491
542
  /**
492
543
  * Build a nifra app from a route manifest: every route SSRs its layout chain via `renderPage`,
493
544
  * and a wildcard catch-all renders `_404` (or a plain 404). Reuses @nifrajs/core's router +
494
- * lifecycle, so matching, params, and precedence are battle-tested. fs-free — feed it a
545
+ * lifecycle, so matching, params, and precedence are battle-tested. fs-free - feed it a
495
546
  * manifest from `discoverRoutes` (`@nifrajs/web/fs`) at startup, so the served app stays portable.
496
547
  *
497
- * **Typed platform bindings.** Pass `Env` — `createWebApp<Env>({ … })` — to declare the app's Workers
548
+ * **Typed platform bindings.** Pass `Env` - `createWebApp<Env>({ … })` - to declare the app's Workers
498
549
  * bindings ONCE. It seeds the returned `Server`'s context with `{ env: Env }` (exactly as the backend's
499
550
  * `server<Env>()` does), so `app.fetch(req, { env })` / `toFetchHandler(app)` type-check the `env`
500
- * argument against the declared shape — no per-binding cast at the edge entry. Per-route loaders/actions
551
+ * argument against the declared shape - no per-binding cast at the edge entry. Per-route loaders/actions
501
552
  * stay typed independently of this call: annotate them with `@nifrajs/client`'s `LoaderArgs<Api, Env>`
502
- * (same `Env`) so `ctx.env.MY_KV` is typed there too. Omit the parameter and `Env` is `unknown` — the
553
+ * (same `Env`) so `ctx.env.MY_KV` is typed there too. Omit the parameter and `Env` is `unknown` - the
503
554
  * secure default; validate at the trust boundary before use.
504
555
  */
505
556
  export declare function createWebApp<Env = unknown>(options: CreateWebAppOptions): ReturnType<typeof server<Env>>;
@@ -508,7 +559,7 @@ export interface GenerateClientEntryOptions {
508
559
  * Module specifier for the adapter's client runtime, e.g. `"@nifrajs/web-solid/client"`.
509
560
  *
510
561
  * **Contract:** the module MUST export `mountRouter({ router, routes, container })`. The generated
511
- * bootstrap imports the specifier and calls it — so a self-executing entry that mounts on import
562
+ * bootstrap imports the specifier and calls it - so a self-executing entry that mounts on import
512
563
  * builds cleanly and then does nothing, which is the trap this contract exists to name. The type is
513
564
  * a bare `string` because a specifier is resolved by the bundler, not the type system, so the
514
565
  * requirement is enforced by the bootstrap instead: it throws immediately, naming this module and
@@ -529,36 +580,66 @@ export interface GenerateClientEntryOptions {
529
580
  * bundle it with `buildClient` / `Bun.build` (+ the adapter's transform).
530
581
  */
531
582
  export declare function generateClientEntry(manifest: Manifest, options: GenerateClientEntryOptions): string;
583
+ export interface GenerateRouteSearchTypesOptions {
584
+ /** Turn a route source file into a module specifier for a `typeof import(...)` type - the same contract
585
+ * as `generateClientEntry`'s `resolve`, but WITHOUT a file extension (a `.d.ts` imports a module, not a
586
+ * path). Relative to wherever the emitted `.d.ts` is written. */
587
+ readonly resolve: (file: string) => string;
588
+ /** The module whose `RouteSearch` interface is augmented (default `"@nifrajs/web"`). Every adapter's
589
+ * `NavigateTarget` reads `@nifrajs/web`'s `RouteSearch`, so the default types `navigate` on all of them. */
590
+ readonly module?: string;
591
+ }
592
+ /**
593
+ * Codegen: emit a `.d.ts` that types cross-route `navigate({ to, search })` against each route's
594
+ * `searchSchema`. It augments the {@link RouteSearch} map with `"<pattern>": SearchOf<typeof import(...)>`
595
+ * for every **static** route (one with no `:param`/`*` segment - a concrete `to` a caller can pass; a
596
+ * dynamic route's concrete path can't match its pattern key, so those keep the loose object form). Written
597
+ * by `nifra sync-routes` next to the route tree and included in the app's `tsconfig`; because it is
598
+ * regenerated from the route files, a `navigate` whose `search` no longer matches the route's schema
599
+ * becomes a `tsc` error - the same drift guarantee as nifra's typed client, no hand-maintained map.
600
+ */
601
+ export declare function generateRouteSearchTypes(manifest: Manifest, options: GenerateRouteSearchTypesOptions): string;
532
602
  export interface GenerateServerManifestOptions {
533
- /** Turn a route/layout source file (relative to the routes dir) into an import specifier —
603
+ /** Turn a route/layout source file (relative to the routes dir) into an import specifier -
534
604
  * same contract as `generateClientEntry`'s `resolve`. */
535
605
  readonly resolve: (file: string) => string;
536
606
  /** The content-hashed client entry URL (from `buildClient`'s manifest), **baked** into the emitted
537
- * module — a disk-less worker can't read `manifest.json` at runtime. */
607
+ * module - a disk-less worker can't read `manifest.json` at runtime. */
538
608
  readonly clientEntry: string;
539
- /** The app's aggregate stylesheet URLs (`buildClient`'s `BuildManifest.css`) — baked as
609
+ /** The app's aggregate stylesheet URLs (`buildClient`'s `BuildManifest.css`) - baked as
540
610
  * `export const styles` so the server entry can hand them to `createWebApp` (→ `<link rel="stylesheet">`
541
611
  * in `<head>`). Without this the built SSR page ships no CSS link and renders unstyled. */
542
612
  readonly styles?: readonly string[] | undefined;
543
- /** Per-route stylesheet URLs (`buildClient`'s `BuildManifest.routeStyles`) — baked as
613
+ /** Per-route stylesheet URLs (`buildClient`'s `BuildManifest.routeStyles`) - baked as
544
614
  * `export const routeStyles` so a page links only the CSS its route chain uses. */
545
615
  readonly routeStyles?: Readonly<Record<string, readonly string[]>> | undefined;
546
616
  /** Emit **lazy** per-route loaders (`() => import("./routes/x")`, a static specifier) instead of
547
- * eager `import * as`, so a bundler with code-splitting emits one chunk per route — loaded on the
617
+ * eager `import * as`, so a bundler with code-splitting emits one chunk per route - loaded on the
548
618
  * first request to it, not all at boot (smaller cold-start parse). Default `false` (eager). Both
549
619
  * modes are fs-free with statically-analyzable specifiers; only the *when* differs. */
550
620
  readonly lazy?: boolean;
551
621
  }
552
622
  /**
553
623
  * Codegen: emit a **server manifest** module (as source) for disk-less edge runtimes (Cloudflare
554
- * Workers, …) — and, with a `target`, any portable server bundle. `discoverRoutes` scans `node:fs`
555
- * and dynamic-imports each route by a *runtime* path — neither exists on workerd. This instead emits
624
+ * Workers, …) - and, with a `target`, any portable server bundle. `discoverRoutes` scans `node:fs`
625
+ * and dynamic-imports each route by a *runtime* path - neither exists on workerd. This instead emits
556
626
  * **statically-analyzable** imports of every route/layout/`_error`/terminal status page (so the bundler includes them) and
557
- * rebuilds the manifest with `buildManifest` — the SAME pure logic `discoverRoutes` feeds, so patterns
627
+ * rebuilds the manifest with `buildManifest` - the SAME pure logic `discoverRoutes` feeds, so patterns
558
628
  * + layout chains are identical. Eager (`import * as`) by default; `lazy` emits `() => import(...)` so
559
629
  * a code-splitting bundler chunks per route. The emitted module exports `manifest` (consumed by
560
630
  * `createWebApp`, unchanged) + `clientEntry` (baked). Write it to a file and bundle it into the worker
561
631
  * entry (see `buildServer` in `@nifrajs/web/build`).
562
632
  */
563
633
  export declare function generateServerManifest(manifest: Manifest, options: GenerateServerManifestOptions): string;
634
+ /**
635
+ * The two file-name conventions that decide what never reaches a browser: a `*.server` module is
636
+ * EMPTIED in the client build, a `*.fn` module is REPLACED with client stubs.
637
+ *
638
+ * Exported because more than the bundlers need them. `nifra dev --bun` cannot transform (Bun's dev
639
+ * bundler takes no plugins) so it must REFUSE instead, and a refusal driven by its own hand-written
640
+ * glob drifts from the transform - which is how `.fn.mts` came to be stubbed by both build pipelines
641
+ * and waved through by the guard that exists to stop it leaking. Anything deciding "is this module
642
+ * server-only" should import the matcher rather than re-encode it.
643
+ */
644
+ export { SERVER_FN_MODULE, SERVER_ONLY_MODULE } from "./internal/server-boundary.js";
564
645
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}