@vertz/ui-server 0.2.29 → 0.2.31
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.
- package/dist/bun-dev-server.d.ts +24 -1
- package/dist/bun-dev-server.js +99 -68
- package/dist/bun-plugin/index.d.ts +2 -2
- package/dist/dom-shim/index.js +1 -1
- package/dist/index.d.ts +342 -318
- package/dist/index.js +25 -478
- package/dist/node-handler.d.ts +170 -0
- package/dist/node-handler.js +8 -0
- package/dist/shared/chunk-34fexgex.js +1284 -0
- package/dist/shared/chunk-es0406qq.js +227 -0
- package/dist/shared/chunk-wb5fv233.js +216 -0
- package/dist/shared/{chunk-gcwqkynf.js → chunk-ybftdw1r.js} +1 -1
- package/dist/ssr/index.d.ts +75 -2
- package/dist/ssr/index.js +5 -3
- package/package.json +9 -5
- package/dist/shared/chunk-yr65qdge.js +0 -764
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,308 @@
|
|
|
1
|
+
import { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import { FontFallbackMetrics as FontFallbackMetrics3 } from "@vertz/ui";
|
|
3
|
+
import { CompiledRoute, FontFallbackMetrics, Theme } from "@vertz/ui";
|
|
4
|
+
import { SSRAuth as SSRAuth_jq1nwm } from "@vertz/ui/internals";
|
|
5
|
+
interface SSRModule {
|
|
6
|
+
default?: () => unknown;
|
|
7
|
+
App?: () => unknown;
|
|
8
|
+
theme?: Theme;
|
|
9
|
+
/** Global CSS strings to include in every SSR response (e.g. resets, body styles). */
|
|
10
|
+
styles?: string[];
|
|
11
|
+
/**
|
|
12
|
+
* Return all CSS tracked by the bundled @vertz/ui instance.
|
|
13
|
+
* The Vite SSR build inlines @vertz/ui into the server bundle, creating
|
|
14
|
+
* a separate module instance from @vertz/ui-server's dependency. Without
|
|
15
|
+
* this, component CSS from module-level css() calls is invisible to the
|
|
16
|
+
* SSR renderer. Export `getInjectedCSS` from @vertz/ui in the app entry.
|
|
17
|
+
*/
|
|
18
|
+
getInjectedCSS?: () => string[];
|
|
19
|
+
/** Compiled routes exported from the app for build-time SSG with generateParams. */
|
|
20
|
+
routes?: CompiledRoute[];
|
|
21
|
+
/** Code-generated API client for manifest-driven zero-discovery prefetching. */
|
|
22
|
+
api?: Record<string, Record<string, (...args: unknown[]) => unknown>>;
|
|
23
|
+
}
|
|
24
|
+
interface SSRRenderResult {
|
|
25
|
+
html: string;
|
|
26
|
+
css: string;
|
|
27
|
+
ssrData: Array<{
|
|
28
|
+
key: string;
|
|
29
|
+
data: unknown;
|
|
30
|
+
}>;
|
|
31
|
+
/** Font preload link tags for injection into <head>. */
|
|
32
|
+
headTags: string;
|
|
33
|
+
/** Route patterns discovered by createRouter() during SSR (for build-time pre-rendering). */
|
|
34
|
+
discoveredRoutes?: string[];
|
|
35
|
+
/** Route patterns that matched the current URL (for per-route modulepreload). */
|
|
36
|
+
matchedRoutePatterns?: string[];
|
|
37
|
+
/** Set when ProtectedRoute writes a redirect during SSR. Server should return 302. */
|
|
38
|
+
redirect?: {
|
|
39
|
+
to: string;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
interface SSRDiscoverResult {
|
|
43
|
+
resolved: Array<{
|
|
44
|
+
key: string;
|
|
45
|
+
data: unknown;
|
|
46
|
+
}>;
|
|
47
|
+
pending: string[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Render an SSR module to an HTML string with CSS and pre-fetched query data.
|
|
51
|
+
*
|
|
52
|
+
* Performs a two-pass render:
|
|
53
|
+
* - Pass 1: Discovery — calls the app to trigger query() registrations, awaits them
|
|
54
|
+
* - Pass 2: Render — calls the app again with data populated, renders to HTML
|
|
55
|
+
*/
|
|
56
|
+
declare function ssrRenderToString(module: SSRModule, url: string, options?: {
|
|
57
|
+
ssrTimeout?: number;
|
|
58
|
+
/** Pre-computed font fallback metrics (computed at server startup). */
|
|
59
|
+
fallbackMetrics?: Record<string, FontFallbackMetrics>;
|
|
60
|
+
/** Auth state resolved from session cookie. Passed to SSRRenderContext for AuthProvider. */
|
|
61
|
+
ssrAuth?: SSRAuth_jq1nwm;
|
|
62
|
+
}): Promise<SSRRenderResult>;
|
|
63
|
+
/**
|
|
64
|
+
* Discover queries for a given URL without rendering.
|
|
65
|
+
* Runs only Pass 1 (query registration + resolution), no Pass 2 render.
|
|
66
|
+
* Used by the production handler to pre-fetch query data for client-side navigations.
|
|
67
|
+
*/
|
|
68
|
+
declare function ssrDiscoverQueries(module: SSRModule, url: string, options?: {
|
|
69
|
+
ssrTimeout?: number;
|
|
70
|
+
}): Promise<SSRDiscoverResult>;
|
|
71
|
+
import { FontFallbackMetrics as FontFallbackMetrics2 } from "@vertz/ui";
|
|
72
|
+
import { SSRAuth } from "@vertz/ui/internals";
|
|
73
|
+
import { ExtractedQuery } from "@vertz/ui-compiler";
|
|
74
|
+
/**
|
|
75
|
+
* SSR prefetch access rule evaluator.
|
|
76
|
+
*
|
|
77
|
+
* Evaluates serialized entity access rules against the current session
|
|
78
|
+
* to determine whether a query should be prefetched during SSR.
|
|
79
|
+
*
|
|
80
|
+
* The serialized rules come from the prefetch manifest (generated at build time).
|
|
81
|
+
* The session comes from the JWT decoded at request time.
|
|
82
|
+
*/
|
|
83
|
+
/**
|
|
84
|
+
* Serialized access rule — the JSON-friendly format stored in the manifest.
|
|
85
|
+
* Mirrors SerializedRule from @vertz/server/auth/rules but defined here
|
|
86
|
+
* to avoid importing the server package into the SSR pipeline.
|
|
87
|
+
*/
|
|
88
|
+
type SerializedAccessRule = {
|
|
89
|
+
type: "public";
|
|
90
|
+
} | {
|
|
91
|
+
type: "authenticated";
|
|
92
|
+
} | {
|
|
93
|
+
type: "role";
|
|
94
|
+
roles: string[];
|
|
95
|
+
} | {
|
|
96
|
+
type: "entitlement";
|
|
97
|
+
value: string;
|
|
98
|
+
} | {
|
|
99
|
+
type: "where";
|
|
100
|
+
conditions: Record<string, unknown>;
|
|
101
|
+
} | {
|
|
102
|
+
type: "all";
|
|
103
|
+
rules: SerializedAccessRule[];
|
|
104
|
+
} | {
|
|
105
|
+
type: "any";
|
|
106
|
+
rules: SerializedAccessRule[];
|
|
107
|
+
} | {
|
|
108
|
+
type: "fva";
|
|
109
|
+
maxAge: number;
|
|
110
|
+
} | {
|
|
111
|
+
type: "deny";
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Minimal session shape needed for prefetch access evaluation.
|
|
115
|
+
* Extracted from the JWT at SSR request time.
|
|
116
|
+
*/
|
|
117
|
+
type PrefetchSession = {
|
|
118
|
+
status: "authenticated";
|
|
119
|
+
roles?: string[];
|
|
120
|
+
entitlements?: Record<string, boolean>;
|
|
121
|
+
tenantId?: string;
|
|
122
|
+
} | {
|
|
123
|
+
status: "unauthenticated";
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Minimal shape of an AccessSet for entitlement extraction.
|
|
127
|
+
* Avoids importing @vertz/server types into the SSR pipeline.
|
|
128
|
+
*/
|
|
129
|
+
interface AccessSetLike {
|
|
130
|
+
entitlements: Record<string, {
|
|
131
|
+
allowed: boolean;
|
|
132
|
+
}>;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Convert SSRAuth (from the JWT/session resolver) to PrefetchSession
|
|
136
|
+
* for entity access evaluation during SSR prefetching.
|
|
137
|
+
*
|
|
138
|
+
* @param ssrAuth - Auth state from session resolver
|
|
139
|
+
* @param accessSet - Access set from JWT acl claim (null = overflow, undefined = not configured)
|
|
140
|
+
*/
|
|
141
|
+
declare function toPrefetchSession(ssrAuth: {
|
|
142
|
+
status: string;
|
|
143
|
+
user?: {
|
|
144
|
+
role?: string;
|
|
145
|
+
[key: string]: unknown;
|
|
146
|
+
};
|
|
147
|
+
} | undefined, accessSet?: AccessSetLike | null): PrefetchSession;
|
|
148
|
+
/**
|
|
149
|
+
* Evaluate a serialized access rule against the current session.
|
|
150
|
+
*
|
|
151
|
+
* Returns true if the query is eligible for prefetch (the user
|
|
152
|
+
* likely has access), false if it should be skipped.
|
|
153
|
+
*
|
|
154
|
+
* Design rationale for specific rule types:
|
|
155
|
+
* - `where` → true: row-level filter, not an access gate. The query
|
|
156
|
+
* always executes; it just returns fewer rows for non-owners.
|
|
157
|
+
* - `fva` → optimistic for authenticated users: MFA freshness is
|
|
158
|
+
* enforced on the actual API call. If the check fails server-side,
|
|
159
|
+
* the query returns an error result.
|
|
160
|
+
* - `deny` → false: explicitly denied operations are never prefetched.
|
|
161
|
+
* - Unknown types → false: fail-secure. Don't prefetch if we can't
|
|
162
|
+
* evaluate the rule.
|
|
163
|
+
*/
|
|
164
|
+
declare function evaluateAccessRule(rule: SerializedAccessRule, session: PrefetchSession): boolean;
|
|
165
|
+
/** Serialized entity access rules from the prefetch manifest. */
|
|
166
|
+
type EntityAccessMap = Record<string, Partial<Record<string, SerializedAccessRule>>>;
|
|
167
|
+
interface SSRPrefetchManifest {
|
|
168
|
+
/** Route patterns present in the manifest. */
|
|
169
|
+
routePatterns: string[];
|
|
170
|
+
/** Entity access rules keyed by entity name → operation → serialized rule. */
|
|
171
|
+
entityAccess?: EntityAccessMap;
|
|
172
|
+
/** Route entries with query binding metadata for zero-discovery prefetch. */
|
|
173
|
+
routeEntries?: Record<string, {
|
|
174
|
+
queries: ExtractedQuery[];
|
|
175
|
+
}>;
|
|
176
|
+
}
|
|
177
|
+
interface SSRSinglePassOptions {
|
|
178
|
+
ssrTimeout?: number;
|
|
179
|
+
/** Pre-computed font fallback metrics (computed at server startup). */
|
|
180
|
+
fallbackMetrics?: Record<string, FontFallbackMetrics2>;
|
|
181
|
+
/** Auth state resolved from session cookie. */
|
|
182
|
+
ssrAuth?: SSRAuth;
|
|
183
|
+
/** Set to false to fall back to two-pass rendering. Default: true. */
|
|
184
|
+
prefetch?: boolean;
|
|
185
|
+
/** Prefetch manifest for entity access filtering. */
|
|
186
|
+
manifest?: SSRPrefetchManifest;
|
|
187
|
+
/** Session data for access rule evaluation. */
|
|
188
|
+
prefetchSession?: PrefetchSession;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Render an SSR module in a single pass via discovery-only execution.
|
|
192
|
+
*
|
|
193
|
+
* 1. Discovery: Run the app factory to capture query registrations (no stream render)
|
|
194
|
+
* 2. Prefetch: Await all discovered queries with timeout
|
|
195
|
+
* 3. Render: Create a fresh context with pre-populated cache, render once
|
|
196
|
+
*
|
|
197
|
+
* Falls back to two-pass (`ssrRenderToString`) when:
|
|
198
|
+
* - `prefetch: false` is set
|
|
199
|
+
* - A redirect is detected during discovery
|
|
200
|
+
*/
|
|
201
|
+
declare function ssrRenderSinglePass(module: SSRModule, url: string, options?: SSRSinglePassOptions): Promise<SSRRenderResult>;
|
|
202
|
+
import { AccessSet } from "@vertz/ui/auth";
|
|
203
|
+
interface SessionData {
|
|
204
|
+
user: {
|
|
205
|
+
id: string;
|
|
206
|
+
email: string;
|
|
207
|
+
role: string;
|
|
208
|
+
[key: string]: unknown;
|
|
209
|
+
};
|
|
210
|
+
/** Unix timestamp in milliseconds (JWT exp * 1000). */
|
|
211
|
+
expiresAt: number;
|
|
212
|
+
}
|
|
213
|
+
/** Resolved session data for SSR injection. */
|
|
214
|
+
interface SSRSessionInfo {
|
|
215
|
+
session: SessionData;
|
|
216
|
+
/**
|
|
217
|
+
* Access set from JWT acl claim.
|
|
218
|
+
* - Present (object): inline access set (no overflow)
|
|
219
|
+
* - null: access control is configured but the set overflowed the JWT
|
|
220
|
+
* - undefined: access control is not configured
|
|
221
|
+
*/
|
|
222
|
+
accessSet?: AccessSet | null;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Callback that extracts session data from a request.
|
|
226
|
+
* Returns null when no valid session exists (expired, missing, or invalid cookie).
|
|
227
|
+
*/
|
|
228
|
+
type SessionResolver = (request: Request) => Promise<SSRSessionInfo | null>;
|
|
229
|
+
/**
|
|
230
|
+
* Serialize a session into a `<script>` tag that sets
|
|
231
|
+
* `window.__VERTZ_SESSION__`.
|
|
232
|
+
*
|
|
233
|
+
* @param session - The session data to serialize
|
|
234
|
+
* @param nonce - Optional CSP nonce for the script tag
|
|
235
|
+
*/
|
|
236
|
+
declare function createSessionScript(session: SessionData, nonce?: string): string;
|
|
237
|
+
interface SSRHandlerOptions {
|
|
238
|
+
/** The loaded SSR module (import('./dist/server/index.js')) */
|
|
239
|
+
module: SSRModule;
|
|
240
|
+
/** HTML template string (contents of dist/client/index.html) */
|
|
241
|
+
template: string;
|
|
242
|
+
/** SSR timeout for queries (default: 300ms) */
|
|
243
|
+
ssrTimeout?: number;
|
|
244
|
+
/**
|
|
245
|
+
* Map of CSS asset URLs to their content for inlining.
|
|
246
|
+
* Replaces `<link rel="stylesheet" href="...">` tags with inline `<style>` tags.
|
|
247
|
+
* Eliminates extra network requests, preventing FOUC on slow connections.
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```ts
|
|
251
|
+
* inlineCSS: { '/assets/vertz.css': await Bun.file('./dist/client/assets/vertz.css').text() }
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
254
|
+
inlineCSS?: Record<string, string>;
|
|
255
|
+
/**
|
|
256
|
+
* CSP nonce to inject on all inline `<script>` tags emitted during SSR.
|
|
257
|
+
*
|
|
258
|
+
* When set, the SSR data hydration script will include `nonce="<value>"`
|
|
259
|
+
* so that strict Content-Security-Policy headers do not block it.
|
|
260
|
+
*/
|
|
261
|
+
nonce?: string;
|
|
262
|
+
/** Pre-computed font fallback metrics (computed at server startup). */
|
|
263
|
+
fallbackMetrics?: Record<string, FontFallbackMetrics3>;
|
|
264
|
+
/** Paths to inject as `<link rel="modulepreload">` in `<head>`. */
|
|
265
|
+
modulepreload?: string[];
|
|
266
|
+
/**
|
|
267
|
+
* Route chunk manifest for per-route modulepreload injection.
|
|
268
|
+
* When provided, only chunks for the matched route are preloaded instead of all chunks.
|
|
269
|
+
*/
|
|
270
|
+
routeChunkManifest?: {
|
|
271
|
+
routes: Record<string, string[]>;
|
|
272
|
+
};
|
|
273
|
+
/** Cache-Control header for HTML responses. Omit or undefined = no header (safe default). */
|
|
274
|
+
cacheControl?: string;
|
|
275
|
+
/**
|
|
276
|
+
* Resolves session data from request cookies for SSR injection.
|
|
277
|
+
* When provided, SSR HTML includes `window.__VERTZ_SESSION__` and
|
|
278
|
+
* optionally `window.__VERTZ_ACCESS_SET__` for instant auth hydration.
|
|
279
|
+
*/
|
|
280
|
+
sessionResolver?: SessionResolver;
|
|
281
|
+
/**
|
|
282
|
+
* Prefetch manifest for single-pass SSR optimization.
|
|
283
|
+
*
|
|
284
|
+
* When provided with route entries and an API client export, enables
|
|
285
|
+
* zero-discovery rendering — queries are prefetched from the manifest
|
|
286
|
+
* without executing the component tree, then a single render pass
|
|
287
|
+
* produces the HTML. Without a manifest, SSR still uses the single-pass
|
|
288
|
+
* discovery-then-render approach (cheaper than two-pass).
|
|
289
|
+
*/
|
|
290
|
+
manifest?: SSRPrefetchManifest;
|
|
291
|
+
/**
|
|
292
|
+
* Enable progressive HTML streaming. Default: false.
|
|
293
|
+
*
|
|
294
|
+
* When true, the Response body is a ReadableStream that sends `<head>`
|
|
295
|
+
* content (CSS, preloads, fonts) before `<body>` rendering is complete.
|
|
296
|
+
* This improves TTFB and FCP.
|
|
297
|
+
*
|
|
298
|
+
* Has no effect on zero-discovery routes (manifest with routeEntries),
|
|
299
|
+
* which always use buffered rendering.
|
|
300
|
+
*/
|
|
301
|
+
progressiveHTML?: boolean;
|
|
302
|
+
}
|
|
303
|
+
declare function createSSRHandler(options: SSRHandlerOptions): (request: Request) => Promise<Response>;
|
|
304
|
+
type NodeHandlerOptions = SSRHandlerOptions;
|
|
305
|
+
declare function createNodeHandler(options: NodeHandlerOptions): (req: IncomingMessage, res: ServerResponse) => void;
|
|
1
306
|
import { FallbackFontName as FallbackFontName2, FontFallbackMetrics as FontFallbackMetrics7 } from "@vertz/ui";
|
|
2
307
|
interface AotBuildComponentEntry {
|
|
3
308
|
tier: "static" | "data-driven" | "conditional" | "runtime-fallback";
|
|
@@ -93,7 +398,7 @@ declare function renderAssetTags(assets: AssetDescriptor[]): string;
|
|
|
93
398
|
* Returns an empty string if the CSS is empty.
|
|
94
399
|
*/
|
|
95
400
|
declare function inlineCriticalCss(css: string): string;
|
|
96
|
-
import { FallbackFontName, FontDescriptor, FontFallbackMetrics } from "@vertz/ui";
|
|
401
|
+
import { FallbackFontName, FontDescriptor, FontFallbackMetrics as FontFallbackMetrics4 } from "@vertz/ui";
|
|
97
402
|
/**
|
|
98
403
|
* Auto-detect which system font to use as fallback base.
|
|
99
404
|
*
|
|
@@ -113,7 +418,7 @@ declare function detectFallbackFont(fallback: readonly string[]): FallbackFontNa
|
|
|
113
418
|
* @param rootDir - Project root directory for resolving font file paths.
|
|
114
419
|
* @returns Map of font key → computed fallback metrics.
|
|
115
420
|
*/
|
|
116
|
-
declare function extractFontMetrics(fonts: Record<string, FontDescriptor>, rootDir: string): Promise<Record<string,
|
|
421
|
+
declare function extractFontMetrics(fonts: Record<string, FontDescriptor>, rootDir: string): Promise<Record<string, FontFallbackMetrics4>>;
|
|
117
422
|
/**
|
|
118
423
|
* Collector for `<head>` metadata during SSR.
|
|
119
424
|
*
|
|
@@ -224,14 +529,14 @@ interface PageOptions {
|
|
|
224
529
|
* ```
|
|
225
530
|
*/
|
|
226
531
|
declare function renderPage(vnode: VNode, options?: PageOptions): Response;
|
|
227
|
-
import { FontFallbackMetrics as
|
|
532
|
+
import { FontFallbackMetrics as FontFallbackMetrics5, Theme as Theme2 } from "@vertz/ui";
|
|
228
533
|
interface RenderToHTMLOptions<AppFn extends () => VNode> {
|
|
229
534
|
/** The app component function */
|
|
230
535
|
app: AppFn;
|
|
231
536
|
/** Request URL for SSR */
|
|
232
537
|
url: string;
|
|
233
538
|
/** Theme definition for CSS vars */
|
|
234
|
-
theme?:
|
|
539
|
+
theme?: Theme2;
|
|
235
540
|
/** Global CSS strings to inject */
|
|
236
541
|
styles?: string[];
|
|
237
542
|
/** HTML head configuration */
|
|
@@ -250,7 +555,7 @@ interface RenderToHTMLOptions<AppFn extends () => VNode> {
|
|
|
250
555
|
/** Container selector (default '#app') */
|
|
251
556
|
container?: string;
|
|
252
557
|
/** Pre-computed font fallback metrics (computed at server startup). */
|
|
253
|
-
fallbackMetrics?: Record<string,
|
|
558
|
+
fallbackMetrics?: Record<string, FontFallbackMetrics5>;
|
|
254
559
|
}
|
|
255
560
|
interface RenderToHTMLStreamOptions<AppFn extends () => VNode> extends RenderToHTMLOptions<AppFn> {
|
|
256
561
|
/** CSP nonce for inline scripts */
|
|
@@ -293,134 +598,43 @@ declare function renderToHTMLStream<AppFn extends () => VNode>(options: RenderTo
|
|
|
293
598
|
* theme,
|
|
294
599
|
* styles: ['body { margin: 0; }'],
|
|
295
600
|
* head: { title: 'My App' }
|
|
296
|
-
* });
|
|
297
|
-
* ```
|
|
298
|
-
*/
|
|
299
|
-
declare function renderToHTML<AppFn extends () => VNode>(options: RenderToHTMLOptions<AppFn>): Promise<string>;
|
|
300
|
-
/**
|
|
301
|
-
* @deprecated Use the options-object overload: `renderToHTML({ app, url, ... })`
|
|
302
|
-
*/
|
|
303
|
-
declare function renderToHTML<AppFn extends () => VNode>(app: AppFn, options: RenderToHTMLOptions<AppFn>): Promise<string>;
|
|
304
|
-
/**
|
|
305
|
-
* Render a VNode tree to a `ReadableStream` of HTML chunks.
|
|
306
|
-
*
|
|
307
|
-
* This is the main SSR entry point. It walks the virtual tree, serializing
|
|
308
|
-
* synchronous content immediately and deferring Suspense boundaries.
|
|
309
|
-
*
|
|
310
|
-
* Suspense boundaries emit:
|
|
311
|
-
* 1. A `<div id="v-slot-N">fallback</div>` placeholder inline
|
|
312
|
-
* 2. A `<template id="v-tmpl-N">resolved</template><script>...<\/script>` chunk
|
|
313
|
-
* appended after the main content once the async content resolves
|
|
314
|
-
*
|
|
315
|
-
* This enables out-of-order streaming: the browser can paint the fallback
|
|
316
|
-
* immediately and swap in the resolved content when it arrives.
|
|
317
|
-
*/
|
|
318
|
-
declare function renderToStream(tree: VNode | string | RawHtml, options?: RenderToStreamOptions): ReadableStream<Uint8Array>;
|
|
319
|
-
/** Reset the slot counter (for testing). */
|
|
320
|
-
declare function resetSlotCounter(): void;
|
|
321
|
-
/**
|
|
322
|
-
* Create a Suspense slot placeholder.
|
|
323
|
-
*
|
|
324
|
-
* Wraps fallback content in a `<div id="v-slot-N">` so it can later
|
|
325
|
-
* be replaced by the resolved async content via a template chunk.
|
|
326
|
-
*
|
|
327
|
-
* Returns the placeholder VNode and the assigned slot ID.
|
|
328
|
-
*/
|
|
329
|
-
declare function createSlotPlaceholder(fallback: VNode | string): VNode & {
|
|
330
|
-
_slotId: number;
|
|
331
|
-
};
|
|
332
|
-
/**
|
|
333
|
-
* SSR prefetch access rule evaluator.
|
|
334
|
-
*
|
|
335
|
-
* Evaluates serialized entity access rules against the current session
|
|
336
|
-
* to determine whether a query should be prefetched during SSR.
|
|
337
|
-
*
|
|
338
|
-
* The serialized rules come from the prefetch manifest (generated at build time).
|
|
339
|
-
* The session comes from the JWT decoded at request time.
|
|
340
|
-
*/
|
|
341
|
-
/**
|
|
342
|
-
* Serialized access rule — the JSON-friendly format stored in the manifest.
|
|
343
|
-
* Mirrors SerializedRule from @vertz/server/auth/rules but defined here
|
|
344
|
-
* to avoid importing the server package into the SSR pipeline.
|
|
345
|
-
*/
|
|
346
|
-
type SerializedAccessRule = {
|
|
347
|
-
type: "public";
|
|
348
|
-
} | {
|
|
349
|
-
type: "authenticated";
|
|
350
|
-
} | {
|
|
351
|
-
type: "role";
|
|
352
|
-
roles: string[];
|
|
353
|
-
} | {
|
|
354
|
-
type: "entitlement";
|
|
355
|
-
value: string;
|
|
356
|
-
} | {
|
|
357
|
-
type: "where";
|
|
358
|
-
conditions: Record<string, unknown>;
|
|
359
|
-
} | {
|
|
360
|
-
type: "all";
|
|
361
|
-
rules: SerializedAccessRule[];
|
|
362
|
-
} | {
|
|
363
|
-
type: "any";
|
|
364
|
-
rules: SerializedAccessRule[];
|
|
365
|
-
} | {
|
|
366
|
-
type: "fva";
|
|
367
|
-
maxAge: number;
|
|
368
|
-
} | {
|
|
369
|
-
type: "deny";
|
|
370
|
-
};
|
|
371
|
-
/**
|
|
372
|
-
* Minimal session shape needed for prefetch access evaluation.
|
|
373
|
-
* Extracted from the JWT at SSR request time.
|
|
601
|
+
* });
|
|
602
|
+
* ```
|
|
374
603
|
*/
|
|
375
|
-
|
|
376
|
-
status: "authenticated";
|
|
377
|
-
roles?: string[];
|
|
378
|
-
entitlements?: Record<string, boolean>;
|
|
379
|
-
tenantId?: string;
|
|
380
|
-
} | {
|
|
381
|
-
status: "unauthenticated";
|
|
382
|
-
};
|
|
604
|
+
declare function renderToHTML<AppFn extends () => VNode>(options: RenderToHTMLOptions<AppFn>): Promise<string>;
|
|
383
605
|
/**
|
|
384
|
-
*
|
|
385
|
-
* Avoids importing @vertz/server types into the SSR pipeline.
|
|
606
|
+
* @deprecated Use the options-object overload: `renderToHTML({ app, url, ... })`
|
|
386
607
|
*/
|
|
387
|
-
|
|
388
|
-
entitlements: Record<string, {
|
|
389
|
-
allowed: boolean;
|
|
390
|
-
}>;
|
|
391
|
-
}
|
|
608
|
+
declare function renderToHTML<AppFn extends () => VNode>(app: AppFn, options: RenderToHTMLOptions<AppFn>): Promise<string>;
|
|
392
609
|
/**
|
|
393
|
-
*
|
|
394
|
-
* for entity access evaluation during SSR prefetching.
|
|
610
|
+
* Render a VNode tree to a `ReadableStream` of HTML chunks.
|
|
395
611
|
*
|
|
396
|
-
*
|
|
397
|
-
*
|
|
612
|
+
* This is the main SSR entry point. It walks the virtual tree, serializing
|
|
613
|
+
* synchronous content immediately and deferring Suspense boundaries.
|
|
614
|
+
*
|
|
615
|
+
* Suspense boundaries emit:
|
|
616
|
+
* 1. A `<div id="v-slot-N">fallback</div>` placeholder inline
|
|
617
|
+
* 2. A `<template id="v-tmpl-N">resolved</template><script>...<\/script>` chunk
|
|
618
|
+
* appended after the main content once the async content resolves
|
|
619
|
+
*
|
|
620
|
+
* This enables out-of-order streaming: the browser can paint the fallback
|
|
621
|
+
* immediately and swap in the resolved content when it arrives.
|
|
398
622
|
*/
|
|
399
|
-
declare function
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
role?: string;
|
|
403
|
-
[key: string]: unknown;
|
|
404
|
-
};
|
|
405
|
-
} | undefined, accessSet?: AccessSetLike | null): PrefetchSession;
|
|
623
|
+
declare function renderToStream(tree: VNode | string | RawHtml, options?: RenderToStreamOptions): ReadableStream<Uint8Array>;
|
|
624
|
+
/** Reset the slot counter (for testing). */
|
|
625
|
+
declare function resetSlotCounter(): void;
|
|
406
626
|
/**
|
|
407
|
-
*
|
|
627
|
+
* Create a Suspense slot placeholder.
|
|
408
628
|
*
|
|
409
|
-
*
|
|
410
|
-
*
|
|
629
|
+
* Wraps fallback content in a `<div id="v-slot-N">` so it can later
|
|
630
|
+
* be replaced by the resolved async content via a template chunk.
|
|
411
631
|
*
|
|
412
|
-
*
|
|
413
|
-
* - `where` → true: row-level filter, not an access gate. The query
|
|
414
|
-
* always executes; it just returns fewer rows for non-owners.
|
|
415
|
-
* - `fva` → optimistic for authenticated users: MFA freshness is
|
|
416
|
-
* enforced on the actual API call. If the check fails server-side,
|
|
417
|
-
* the query returns an error result.
|
|
418
|
-
* - `deny` → false: explicitly denied operations are never prefetched.
|
|
419
|
-
* - Unknown types → false: fail-secure. Don't prefetch if we can't
|
|
420
|
-
* evaluate the rule.
|
|
632
|
+
* Returns the placeholder VNode and the assigned slot ID.
|
|
421
633
|
*/
|
|
422
|
-
declare function
|
|
423
|
-
|
|
634
|
+
declare function createSlotPlaceholder(fallback: VNode | string): VNode & {
|
|
635
|
+
_slotId: number;
|
|
636
|
+
};
|
|
637
|
+
import { AccessSet as AccessSet2 } from "@vertz/ui/auth";
|
|
424
638
|
/**
|
|
425
639
|
* Extract an AccessSet from a decoded JWT payload for SSR injection.
|
|
426
640
|
*
|
|
@@ -431,7 +645,7 @@ import { AccessSet } from "@vertz/ui/auth";
|
|
|
431
645
|
* @param jwtPayload - The decoded JWT payload (from verifyJWT)
|
|
432
646
|
* @returns The AccessSet for SSR injection, or null
|
|
433
647
|
*/
|
|
434
|
-
declare function getAccessSetForSSR(jwtPayload: Record<string, unknown> | null):
|
|
648
|
+
declare function getAccessSetForSSR(jwtPayload: Record<string, unknown> | null): AccessSet2 | null;
|
|
435
649
|
/**
|
|
436
650
|
* Serialize an AccessSet into a `<script>` tag that sets
|
|
437
651
|
* `window.__VERTZ_ACCESS_SET__`.
|
|
@@ -439,7 +653,7 @@ declare function getAccessSetForSSR(jwtPayload: Record<string, unknown> | null):
|
|
|
439
653
|
* @param accessSet - The access set to serialize
|
|
440
654
|
* @param nonce - Optional CSP nonce for the script tag
|
|
441
655
|
*/
|
|
442
|
-
declare function createAccessSetScript(accessSet:
|
|
656
|
+
declare function createAccessSetScript(accessSet: AccessSet2, nonce?: string): string;
|
|
443
657
|
import { RenderAdapter } from "@vertz/ui/internals";
|
|
444
658
|
/**
|
|
445
659
|
* Create an SSR adapter that uses in-memory SSR node classes.
|
|
@@ -552,116 +766,8 @@ interface AotManifestManager {
|
|
|
552
766
|
getDiagnostics(): AotDiagnostics;
|
|
553
767
|
}
|
|
554
768
|
declare function createAotManifestManager(options: AotManifestManagerOptions): AotManifestManager;
|
|
555
|
-
import { FontFallbackMetrics as
|
|
769
|
+
import { FontFallbackMetrics as FontFallbackMetrics6 } from "@vertz/ui";
|
|
556
770
|
import { SSRAuth as SSRAuth2 } from "@vertz/ui/internals";
|
|
557
|
-
import { CompiledRoute, FontFallbackMetrics as FontFallbackMetrics3, Theme as Theme2 } from "@vertz/ui";
|
|
558
|
-
import { SSRAuth as SSRAuth_jq1nwm } from "@vertz/ui/internals";
|
|
559
|
-
interface SSRModule {
|
|
560
|
-
default?: () => unknown;
|
|
561
|
-
App?: () => unknown;
|
|
562
|
-
theme?: Theme2;
|
|
563
|
-
/** Global CSS strings to include in every SSR response (e.g. resets, body styles). */
|
|
564
|
-
styles?: string[];
|
|
565
|
-
/**
|
|
566
|
-
* Return all CSS tracked by the bundled @vertz/ui instance.
|
|
567
|
-
* The Vite SSR build inlines @vertz/ui into the server bundle, creating
|
|
568
|
-
* a separate module instance from @vertz/ui-server's dependency. Without
|
|
569
|
-
* this, component CSS from module-level css() calls is invisible to the
|
|
570
|
-
* SSR renderer. Export `getInjectedCSS` from @vertz/ui in the app entry.
|
|
571
|
-
*/
|
|
572
|
-
getInjectedCSS?: () => string[];
|
|
573
|
-
/** Compiled routes exported from the app for build-time SSG with generateParams. */
|
|
574
|
-
routes?: CompiledRoute[];
|
|
575
|
-
/** Code-generated API client for manifest-driven zero-discovery prefetching. */
|
|
576
|
-
api?: Record<string, Record<string, (...args: unknown[]) => unknown>>;
|
|
577
|
-
}
|
|
578
|
-
interface SSRRenderResult {
|
|
579
|
-
html: string;
|
|
580
|
-
css: string;
|
|
581
|
-
ssrData: Array<{
|
|
582
|
-
key: string;
|
|
583
|
-
data: unknown;
|
|
584
|
-
}>;
|
|
585
|
-
/** Font preload link tags for injection into <head>. */
|
|
586
|
-
headTags: string;
|
|
587
|
-
/** Route patterns discovered by createRouter() during SSR (for build-time pre-rendering). */
|
|
588
|
-
discoveredRoutes?: string[];
|
|
589
|
-
/** Route patterns that matched the current URL (for per-route modulepreload). */
|
|
590
|
-
matchedRoutePatterns?: string[];
|
|
591
|
-
/** Set when ProtectedRoute writes a redirect during SSR. Server should return 302. */
|
|
592
|
-
redirect?: {
|
|
593
|
-
to: string;
|
|
594
|
-
};
|
|
595
|
-
}
|
|
596
|
-
interface SSRDiscoverResult {
|
|
597
|
-
resolved: Array<{
|
|
598
|
-
key: string;
|
|
599
|
-
data: unknown;
|
|
600
|
-
}>;
|
|
601
|
-
pending: string[];
|
|
602
|
-
}
|
|
603
|
-
/**
|
|
604
|
-
* Render an SSR module to an HTML string with CSS and pre-fetched query data.
|
|
605
|
-
*
|
|
606
|
-
* Performs a two-pass render:
|
|
607
|
-
* - Pass 1: Discovery — calls the app to trigger query() registrations, awaits them
|
|
608
|
-
* - Pass 2: Render — calls the app again with data populated, renders to HTML
|
|
609
|
-
*/
|
|
610
|
-
declare function ssrRenderToString(module: SSRModule, url: string, options?: {
|
|
611
|
-
ssrTimeout?: number;
|
|
612
|
-
/** Pre-computed font fallback metrics (computed at server startup). */
|
|
613
|
-
fallbackMetrics?: Record<string, FontFallbackMetrics3>;
|
|
614
|
-
/** Auth state resolved from session cookie. Passed to SSRRenderContext for AuthProvider. */
|
|
615
|
-
ssrAuth?: SSRAuth_jq1nwm;
|
|
616
|
-
}): Promise<SSRRenderResult>;
|
|
617
|
-
/**
|
|
618
|
-
* Discover queries for a given URL without rendering.
|
|
619
|
-
* Runs only Pass 1 (query registration + resolution), no Pass 2 render.
|
|
620
|
-
* Used by the production handler to pre-fetch query data for client-side navigations.
|
|
621
|
-
*/
|
|
622
|
-
declare function ssrDiscoverQueries(module: SSRModule, url: string, options?: {
|
|
623
|
-
ssrTimeout?: number;
|
|
624
|
-
}): Promise<SSRDiscoverResult>;
|
|
625
|
-
import { FontFallbackMetrics as FontFallbackMetrics4 } from "@vertz/ui";
|
|
626
|
-
import { SSRAuth } from "@vertz/ui/internals";
|
|
627
|
-
import { ExtractedQuery } from "@vertz/ui-compiler";
|
|
628
|
-
/** Serialized entity access rules from the prefetch manifest. */
|
|
629
|
-
type EntityAccessMap = Record<string, Partial<Record<string, SerializedAccessRule>>>;
|
|
630
|
-
interface SSRPrefetchManifest {
|
|
631
|
-
/** Route patterns present in the manifest. */
|
|
632
|
-
routePatterns: string[];
|
|
633
|
-
/** Entity access rules keyed by entity name → operation → serialized rule. */
|
|
634
|
-
entityAccess?: EntityAccessMap;
|
|
635
|
-
/** Route entries with query binding metadata for zero-discovery prefetch. */
|
|
636
|
-
routeEntries?: Record<string, {
|
|
637
|
-
queries: ExtractedQuery[];
|
|
638
|
-
}>;
|
|
639
|
-
}
|
|
640
|
-
interface SSRSinglePassOptions {
|
|
641
|
-
ssrTimeout?: number;
|
|
642
|
-
/** Pre-computed font fallback metrics (computed at server startup). */
|
|
643
|
-
fallbackMetrics?: Record<string, FontFallbackMetrics4>;
|
|
644
|
-
/** Auth state resolved from session cookie. */
|
|
645
|
-
ssrAuth?: SSRAuth;
|
|
646
|
-
/** Set to false to fall back to two-pass rendering. Default: true. */
|
|
647
|
-
prefetch?: boolean;
|
|
648
|
-
/** Prefetch manifest for entity access filtering. */
|
|
649
|
-
manifest?: SSRPrefetchManifest;
|
|
650
|
-
/** Session data for access rule evaluation. */
|
|
651
|
-
prefetchSession?: PrefetchSession;
|
|
652
|
-
}
|
|
653
|
-
/**
|
|
654
|
-
* Render an SSR module in a single pass via discovery-only execution.
|
|
655
|
-
*
|
|
656
|
-
* 1. Discovery: Run the app factory to capture query registrations (no stream render)
|
|
657
|
-
* 2. Prefetch: Await all discovered queries with timeout
|
|
658
|
-
* 3. Render: Create a fresh context with pre-populated cache, render once
|
|
659
|
-
*
|
|
660
|
-
* Falls back to two-pass (`ssrRenderToString`) when:
|
|
661
|
-
* - `prefetch: false` is set
|
|
662
|
-
* - A redirect is detected during discovery
|
|
663
|
-
*/
|
|
664
|
-
declare function ssrRenderSinglePass(module: SSRModule, url: string, options?: SSRSinglePassOptions): Promise<SSRRenderResult>;
|
|
665
771
|
/** Context passed to AOT render functions for accessing data and runtime holes. */
|
|
666
772
|
interface SSRAotContext {
|
|
667
773
|
/** Pre-generated closures for runtime-rendered components. */
|
|
@@ -702,7 +808,7 @@ interface SSRRenderAotOptions {
|
|
|
702
808
|
/** SSR timeout in ms. */
|
|
703
809
|
ssrTimeout?: number;
|
|
704
810
|
/** Pre-computed font fallback metrics. */
|
|
705
|
-
fallbackMetrics?: Record<string,
|
|
811
|
+
fallbackMetrics?: Record<string, FontFallbackMetrics6>;
|
|
706
812
|
/** Auth state resolved from session cookie. */
|
|
707
813
|
ssrAuth?: SSRAuth2;
|
|
708
814
|
/** Session data for access rule evaluation. */
|
|
@@ -821,88 +927,6 @@ declare function clearGlobalSSRTimeout(): void;
|
|
|
821
927
|
* Returns undefined if not set or outside SSR context.
|
|
822
928
|
*/
|
|
823
929
|
declare function getGlobalSSRTimeout(): number | undefined;
|
|
824
|
-
import { FontFallbackMetrics as FontFallbackMetrics6 } from "@vertz/ui";
|
|
825
|
-
import { AccessSet as AccessSet2 } from "@vertz/ui/auth";
|
|
826
|
-
interface SessionData {
|
|
827
|
-
user: {
|
|
828
|
-
id: string;
|
|
829
|
-
email: string;
|
|
830
|
-
role: string;
|
|
831
|
-
[key: string]: unknown;
|
|
832
|
-
};
|
|
833
|
-
/** Unix timestamp in milliseconds (JWT exp * 1000). */
|
|
834
|
-
expiresAt: number;
|
|
835
|
-
}
|
|
836
|
-
/** Resolved session data for SSR injection. */
|
|
837
|
-
interface SSRSessionInfo {
|
|
838
|
-
session: SessionData;
|
|
839
|
-
/**
|
|
840
|
-
* Access set from JWT acl claim.
|
|
841
|
-
* - Present (object): inline access set (no overflow)
|
|
842
|
-
* - null: access control is configured but the set overflowed the JWT
|
|
843
|
-
* - undefined: access control is not configured
|
|
844
|
-
*/
|
|
845
|
-
accessSet?: AccessSet2 | null;
|
|
846
|
-
}
|
|
847
|
-
/**
|
|
848
|
-
* Callback that extracts session data from a request.
|
|
849
|
-
* Returns null when no valid session exists (expired, missing, or invalid cookie).
|
|
850
|
-
*/
|
|
851
|
-
type SessionResolver = (request: Request) => Promise<SSRSessionInfo | null>;
|
|
852
|
-
/**
|
|
853
|
-
* Serialize a session into a `<script>` tag that sets
|
|
854
|
-
* `window.__VERTZ_SESSION__`.
|
|
855
|
-
*
|
|
856
|
-
* @param session - The session data to serialize
|
|
857
|
-
* @param nonce - Optional CSP nonce for the script tag
|
|
858
|
-
*/
|
|
859
|
-
declare function createSessionScript(session: SessionData, nonce?: string): string;
|
|
860
|
-
interface SSRHandlerOptions {
|
|
861
|
-
/** The loaded SSR module (import('./dist/server/index.js')) */
|
|
862
|
-
module: SSRModule;
|
|
863
|
-
/** HTML template string (contents of dist/client/index.html) */
|
|
864
|
-
template: string;
|
|
865
|
-
/** SSR timeout for queries (default: 300ms) */
|
|
866
|
-
ssrTimeout?: number;
|
|
867
|
-
/**
|
|
868
|
-
* Map of CSS asset URLs to their content for inlining.
|
|
869
|
-
* Replaces `<link rel="stylesheet" href="...">` tags with inline `<style>` tags.
|
|
870
|
-
* Eliminates extra network requests, preventing FOUC on slow connections.
|
|
871
|
-
*
|
|
872
|
-
* @example
|
|
873
|
-
* ```ts
|
|
874
|
-
* inlineCSS: { '/assets/vertz.css': await Bun.file('./dist/client/assets/vertz.css').text() }
|
|
875
|
-
* ```
|
|
876
|
-
*/
|
|
877
|
-
inlineCSS?: Record<string, string>;
|
|
878
|
-
/**
|
|
879
|
-
* CSP nonce to inject on all inline `<script>` tags emitted during SSR.
|
|
880
|
-
*
|
|
881
|
-
* When set, the SSR data hydration script will include `nonce="<value>"`
|
|
882
|
-
* so that strict Content-Security-Policy headers do not block it.
|
|
883
|
-
*/
|
|
884
|
-
nonce?: string;
|
|
885
|
-
/** Pre-computed font fallback metrics (computed at server startup). */
|
|
886
|
-
fallbackMetrics?: Record<string, FontFallbackMetrics6>;
|
|
887
|
-
/** Paths to inject as `<link rel="modulepreload">` in `<head>`. */
|
|
888
|
-
modulepreload?: string[];
|
|
889
|
-
/**
|
|
890
|
-
* Route chunk manifest for per-route modulepreload injection.
|
|
891
|
-
* When provided, only chunks for the matched route are preloaded instead of all chunks.
|
|
892
|
-
*/
|
|
893
|
-
routeChunkManifest?: {
|
|
894
|
-
routes: Record<string, string[]>;
|
|
895
|
-
};
|
|
896
|
-
/** Cache-Control header for HTML responses. Omit or undefined = no header (safe default). */
|
|
897
|
-
cacheControl?: string;
|
|
898
|
-
/**
|
|
899
|
-
* Resolves session data from request cookies for SSR injection.
|
|
900
|
-
* When provided, SSR HTML includes `window.__VERTZ_SESSION__` and
|
|
901
|
-
* optionally `window.__VERTZ_ACCESS_SET__` for instant auth hydration.
|
|
902
|
-
*/
|
|
903
|
-
sessionResolver?: SessionResolver;
|
|
904
|
-
}
|
|
905
|
-
declare function createSSRHandler(options: SSRHandlerOptions): (request: Request) => Promise<Response>;
|
|
906
930
|
interface GenerateSSRHtmlOptions {
|
|
907
931
|
appHtml: string;
|
|
908
932
|
css: string;
|
|
@@ -1034,4 +1058,4 @@ declare function collectStreamChunks(stream: ReadableStream<Uint8Array>): Promis
|
|
|
1034
1058
|
* @param nonce - Optional CSP nonce to add to the inline script tag.
|
|
1035
1059
|
*/
|
|
1036
1060
|
declare function createTemplateChunk(slotId: number, resolvedHtml: string, nonce?: string): string;
|
|
1037
|
-
export { wrapWithHydrationMarkers, toPrefetchSession, streamToString, ssrStorage, ssrRenderToString, ssrRenderSinglePass, ssrRenderAot, ssrDiscoverQueries, setGlobalSSRTimeout, serializeToHtml, safeSerialize, resetSlotCounter, renderToStream, renderToHTMLStream, renderToHTML, renderPage, renderHeadToHtml, renderAssetTags, registerSSRQuery, reconstructDescriptors, rawHtml, matchUrlToPatterns, isInSSR, isAotDebugEnabled, inlineCriticalCss, getStreamingRuntimeScript, getSSRUrl, getSSRQueries, getGlobalSSRTimeout, getAccessSetForSSR, generateSSRHtml, generateAotBuildManifest, extractFontMetrics, evaluateAccessRule, encodeChunk, detectFallbackFont, createTemplateChunk, createSlotPlaceholder, createSessionScript, createSSRHandler, createSSRDataChunk, createSSRAdapter, createPrefetchManifestManager, createHoles, createAotManifestManager, createAccessSetScript, collectStreamChunks, clearGlobalSSRTimeout, __ssr_style_object, __ssr_spread, __esc_attr, __esc, VNode, SessionResolver, SessionData, SerializedAccessRule, SSRSinglePassOptions, SSRSessionInfo, SSRRenderResult, SSRRenderAotOptions, SSRQueryEntry2 as SSRQueryEntry, SSRPrefetchManifest, SSRModule, SSRHandlerOptions, SSRDiscoverResult, SSRAotContext, RenderToStreamOptions, RenderToHTMLStreamOptions, RenderToHTMLOptions, ReconstructedDescriptor, RawHtml, PrefetchSession, PrefetchManifestSnapshot, PrefetchManifestManagerOptions, PrefetchManifestManager, PageOptions, MatchedRoute, HydrationOptions, HeadEntry, HeadCollector, GenerateSSRHtmlOptions, FontFallbackMetrics7 as FontFallbackMetrics, FallbackFontName2 as FallbackFontName, EntityAccessMap, AssetDescriptor, AotTier, AotRouteEntry, AotRenderFn, AotManifestSnapshot, AotManifestManagerOptions, AotManifestManager, AotManifest, AotDivergenceEntry, AotDiagnosticsSnapshot, AotDiagnostics, AotDevManifest, AotDevComponentEntry, AotComponentDiagnostic, AotBuildManifest, AotBuildComponentEntry };
|
|
1061
|
+
export { wrapWithHydrationMarkers, toPrefetchSession, streamToString, ssrStorage, ssrRenderToString, ssrRenderSinglePass, ssrRenderAot, ssrDiscoverQueries, setGlobalSSRTimeout, serializeToHtml, safeSerialize, resetSlotCounter, renderToStream, renderToHTMLStream, renderToHTML, renderPage, renderHeadToHtml, renderAssetTags, registerSSRQuery, reconstructDescriptors, rawHtml, matchUrlToPatterns, isInSSR, isAotDebugEnabled, inlineCriticalCss, getStreamingRuntimeScript, getSSRUrl, getSSRQueries, getGlobalSSRTimeout, getAccessSetForSSR, generateSSRHtml, generateAotBuildManifest, extractFontMetrics, evaluateAccessRule, encodeChunk, detectFallbackFont, createTemplateChunk, createSlotPlaceholder, createSessionScript, createSSRHandler, createSSRDataChunk, createSSRAdapter, createPrefetchManifestManager, createNodeHandler, createHoles, createAotManifestManager, createAccessSetScript, collectStreamChunks, clearGlobalSSRTimeout, __ssr_style_object, __ssr_spread, __esc_attr, __esc, VNode, SessionResolver, SessionData, SerializedAccessRule, SSRSinglePassOptions, SSRSessionInfo, SSRRenderResult, SSRRenderAotOptions, SSRQueryEntry2 as SSRQueryEntry, SSRPrefetchManifest, SSRModule, SSRHandlerOptions, SSRDiscoverResult, SSRAotContext, RenderToStreamOptions, RenderToHTMLStreamOptions, RenderToHTMLOptions, ReconstructedDescriptor, RawHtml, PrefetchSession, PrefetchManifestSnapshot, PrefetchManifestManagerOptions, PrefetchManifestManager, PageOptions, NodeHandlerOptions, MatchedRoute, HydrationOptions, HeadEntry, HeadCollector, GenerateSSRHtmlOptions, FontFallbackMetrics7 as FontFallbackMetrics, FallbackFontName2 as FallbackFontName, EntityAccessMap, AssetDescriptor, AotTier, AotRouteEntry, AotRenderFn, AotManifestSnapshot, AotManifestManagerOptions, AotManifestManager, AotManifest, AotDivergenceEntry, AotDiagnosticsSnapshot, AotDiagnostics, AotDevManifest, AotDevComponentEntry, AotComponentDiagnostic, AotBuildManifest, AotBuildComponentEntry };
|