payload-live-preview 2.2.2 → 2.3.1

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 (100) hide show
  1. package/README.md +35 -30
  2. package/dist/adapters/astro/PreviewBoundary.astro +17 -4
  3. package/dist/adapters/astro/RichText.astro +13 -2
  4. package/dist/adapters/astro/index.d.ts +7 -7
  5. package/dist/adapters/astro/index.js +1 -1
  6. package/dist/adapters/astro/index.js.map +1 -1
  7. package/dist/adapters/astro/middleware-entry.d.ts +3 -3
  8. package/dist/adapters/astro/middleware-entry.js +1 -1
  9. package/dist/adapters/astro/middleware-entry.js.map +1 -1
  10. package/dist/adapters/nextjs/index.d.ts +2 -2
  11. package/dist/adapters/nextjs/index.js +1 -1
  12. package/dist/adapters/nextjs/index.js.map +1 -1
  13. package/dist/adapters/nuxt/index.d.ts +4 -4
  14. package/dist/adapters/nuxt/index.js +1 -1
  15. package/dist/adapters/nuxt/index.js.map +1 -1
  16. package/dist/adapters/nuxt/module.d.ts +1 -1
  17. package/dist/adapters/react/index.d.ts +2 -2
  18. package/dist/adapters/react/index.js +1 -1
  19. package/dist/adapters/react/index.js.map +1 -1
  20. package/dist/adapters/sveltekit/index.d.ts +5 -5
  21. package/dist/adapters/sveltekit/index.js +1 -1
  22. package/dist/adapters/sveltekit/index.js.map +1 -1
  23. package/dist/adapters/vue/index.d.ts +2 -2
  24. package/dist/adapters/vue/index.js +1 -1
  25. package/dist/adapters/vue/index.js.map +1 -1
  26. package/dist/client.cjs +1 -1
  27. package/dist/client.cjs.map +1 -1
  28. package/dist/client.d.cts +15 -3
  29. package/dist/client.d.ts +15 -3
  30. package/dist/client.js +1 -1
  31. package/dist/client.js.map +1 -1
  32. package/dist/codegen-astro.js +1 -1
  33. package/dist/codegen-astro.js.map +1 -1
  34. package/dist/codegen-cli.js +1 -1
  35. package/dist/codegen-cli.js.map +1 -1
  36. package/dist/codegen.cjs +1 -1
  37. package/dist/codegen.cjs.map +1 -1
  38. package/dist/codegen.js +1 -1
  39. package/dist/codegen.js.map +1 -1
  40. package/dist/core.cjs +1 -1
  41. package/dist/core.cjs.map +1 -1
  42. package/dist/core.d.cts +139 -4
  43. package/dist/core.d.ts +139 -4
  44. package/dist/core.js +1 -1
  45. package/dist/core.js.map +1 -1
  46. package/dist/doctor-cli.d.ts +1 -1
  47. package/dist/doctor-cli.js +1 -1
  48. package/dist/doctor-cli.js.map +1 -1
  49. package/dist/doctor.d.ts +2 -2
  50. package/dist/doctor.js +1 -1
  51. package/dist/doctor.js.map +1 -1
  52. package/dist/{document-session-Bkd181PV.d.ts → document-session-BuYuO3ae.d.ts} +27 -2
  53. package/dist/{fragment-endpoint-CLRpNQ3n.d.ts → fragment-endpoint-CQE_7MKi.d.ts} +1 -1
  54. package/dist/fragment.cjs +1 -1
  55. package/dist/fragment.cjs.map +1 -1
  56. package/dist/fragment.d.cts +6 -2
  57. package/dist/fragment.d.ts +6 -2
  58. package/dist/fragment.js +1 -1
  59. package/dist/fragment.js.map +1 -1
  60. package/dist/index.cjs +1 -1
  61. package/dist/index.cjs.map +1 -1
  62. package/dist/index.d.cts +73 -12
  63. package/dist/index.d.ts +73 -12
  64. package/dist/index.js +1 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/lean.cjs +1 -1
  67. package/dist/lean.cjs.map +1 -1
  68. package/dist/lean.js +1 -1
  69. package/dist/lean.js.map +1 -1
  70. package/dist/lexical.cjs +1 -1
  71. package/dist/lexical.cjs.map +1 -1
  72. package/dist/lexical.d.cts +16 -4
  73. package/dist/lexical.d.ts +16 -4
  74. package/dist/lexical.js +1 -1
  75. package/dist/lexical.js.map +1 -1
  76. package/dist/{locals-zz2gi9dj.d.ts → locals-CyzDKfKU.d.ts} +7 -1
  77. package/dist/{middleware-CI-UTf6R.d.ts → middleware-Dnt6u4nF.d.ts} +2 -2
  78. package/dist/{options-CnYybG51.d.ts → options-DTzhFVJ4.d.ts} +13 -1
  79. package/dist/plugin.cjs +1 -1
  80. package/dist/plugin.cjs.map +1 -1
  81. package/dist/plugin.d.cts +15 -9
  82. package/dist/plugin.d.ts +15 -9
  83. package/dist/plugin.js +1 -1
  84. package/dist/plugin.js.map +1 -1
  85. package/dist/plugins.cjs +1 -1
  86. package/dist/plugins.cjs.map +1 -1
  87. package/dist/plugins.d.cts +8 -2
  88. package/dist/plugins.d.ts +8 -2
  89. package/dist/plugins.js +1 -1
  90. package/dist/plugins.js.map +1 -1
  91. package/dist/{probe-D-IHg9dF.d.ts → probe-afwdYebU.d.ts} +6 -2
  92. package/dist/server.cjs +1 -1
  93. package/dist/server.cjs.map +1 -1
  94. package/dist/server.d.cts +19 -1
  95. package/dist/server.d.ts +19 -1
  96. package/dist/server.js +1 -1
  97. package/dist/server.js.map +1 -1
  98. package/dist/structural.d.cts +2 -0
  99. package/dist/structural.d.ts +2 -0
  100. package/package.json +2 -1
package/dist/index.d.cts CHANGED
@@ -37,6 +37,8 @@ declare const DIAGNOSTIC_CODES: Readonly<{
37
37
  readonly UnattributableUpdate: "LP0202";
38
38
  /** An update carried a value for a field the page binds nowhere; editing it changes nothing on this page. */
39
39
  readonly UnboundField: "LP0203";
40
+ /** In development: a bound path covers its group under the `descendant` default, which 3.0 changes. */
41
+ readonly CoverageDefaultChanges: "LP0204";
40
42
  /** The visibility gate held offscreen writes back until they scroll into view. */
41
43
  readonly VisibilityGateDeferred: "LP0301";
42
44
  /** A value was refused because the attribute or the value itself is unsafe. */
@@ -61,7 +63,7 @@ declare const DIAGNOSTIC_CODES: Readonly<{
61
63
  readonly UnrenderedBlockKept: "LP0410";
62
64
  /** A patch cannot reach what the server would have drawn; `onUnfaithfulPatch` decided what happens next. */
63
65
  readonly UnfaithfulPatch: "LP0411";
64
- /** The first write to a date, number or checkbox binding replaced a different reading of the same value. */
66
+ /** The first write to a date, number, checkbox, select or radio binding replaced a different reading of the same value. */
65
67
  readonly ServerFormatReplaced: "LP0412";
66
68
  /** A Lexical block has no renderer, and the write could not keep the markup the server rendered for it; it is gone. */
67
69
  readonly UnrenderedBlockLost: "LP0413";
@@ -81,7 +83,7 @@ declare const DIAGNOSTIC_CODES: Readonly<{
81
83
  readonly StartupFailed: "LP0605";
82
84
  /** Sending the ready handshake failed. */
83
85
  readonly ReadyFailed: "LP0606";
84
- /** The page declared hydration, but no React commit, Vue mount or SvelteKit mount came within the cap; the runtime started without waiting. */
86
+ /** The page declared hydration, but no React commit, Vue mount, SvelteKit mount or `markHydrated()` call came within the cap; the runtime started without waiting. */
85
87
  readonly HydrationWaitTimedOut: "LP0607";
86
88
  /** The audit found no runtime in a response that carried preview intent. */
87
89
  readonly AuditRuntimeMissing: "LP0701";
@@ -123,6 +125,8 @@ declare const DIAGNOSTIC_CODES: Readonly<{
123
125
  readonly V2ReadinessGap: "LP0709";
124
126
  /** The preview runtime is served to anonymous visitors, not only inside the admin frame. */
125
127
  readonly RuntimeOnPublicPage: "LP0710";
128
+ /** An element carries attributes that only mean something beside `data-payload-field`, and has none. */
129
+ readonly AuditModifierWithoutField: "LP0711";
126
130
  }>;
127
131
  /** A diagnostic code, as it appears in log output and on the `error` event. */
128
132
  type DiagnosticCode = (typeof DIAGNOSTIC_CODES)[keyof typeof DIAGNOSTIC_CODES];
@@ -350,6 +354,8 @@ interface RenderContext {
350
354
  * completes the sentence 'field "x" …' in LP0411.
351
355
  */
352
356
  readonly reportUnfaithful?: (target: CachedElement, reason: string) => void;
357
+ /** The route of a Lexical internal link, as `internalLinkPattern` gives it. */
358
+ readonly internalLinkPattern?: string;
353
359
  }
354
360
  /**
355
361
  * A renderer writes one value into its element. It must not throw: one bad
@@ -856,7 +862,7 @@ interface LivePreviewInspection {
856
862
  * SvelteKit page is not connected yet; `timed-out` is LP0607.
857
863
  */
858
864
  readonly hydration: {
859
- readonly mode: 'off' | 'react' | 'vue' | 'sveltekit';
865
+ readonly mode: 'off' | 'react' | 'vue' | 'sveltekit' | 'manual';
860
866
  readonly state: 'idle' | 'waiting' | 'committed' | 'timed-out';
861
867
  };
862
868
  }
@@ -1009,6 +1015,12 @@ interface LivePreviewClientConfig {
1009
1015
  readonly apiRoute?: string;
1010
1016
  /** Population depth used with `serverURL`. Required with it; `defaults: 'v1'` falls back to `1`. */
1011
1017
  readonly mergeDepth?: number;
1018
+ /** Milliseconds the `serverURL` merge may wait before the update shows its raw values. Off by default. */
1019
+ readonly mergeTimeoutMs?: number;
1020
+ /** The route of a Lexical internal link with no `url` of its own, as `/{locale}/{slug}/`. */
1021
+ readonly internalLinkPattern?: string;
1022
+ /** Hold a route render until Payload reports the save: the route shows what is saved. */
1023
+ readonly routeAfterSave?: boolean;
1012
1024
  /** Custom fetch for the `serverURL` merge request: attach auth headers or route through a proxy. */
1013
1025
  readonly mergeFetch?: typeof fetch;
1014
1026
  /** Verbose console output. Defaults to dev-mode detection. */
@@ -1209,6 +1221,22 @@ type RouteRefresh = () => void | Promise<void>;
1209
1221
  */
1210
1222
  declare function registerRouteRefresh(refresh: RouteRefresh): () => void;
1211
1223
 
1224
+ /**
1225
+ * Waiting for a page that says when it has hydrated (ADR 0015, addendum of
1226
+ * 2026-10-31). The React, Vue and SvelteKit waits each read a trace their
1227
+ * framework leaves; a page on any other host, or whose host left none, calls
1228
+ * `markHydrated()` instead. The page's bundle and the runtime are separate
1229
+ * scripts and either may run first, so the slot holds a state a late runtime
1230
+ * can still read rather than an event it could miss.
1231
+ */
1232
+
1233
+ /**
1234
+ * Tell a runtime started with `hydration: 'manual'` that this page has hydrated, so its
1235
+ * first write lands on markup the framework keeps. Call it once your framework has
1236
+ * taken the page over; a later call changes nothing, and on a server it does nothing.
1237
+ */
1238
+ declare function markHydrated(): void;
1239
+
1212
1240
  interface RuntimeBuildInfo {
1213
1241
  readonly generatedAt: string;
1214
1242
  readonly size: number;
@@ -1263,8 +1291,10 @@ interface InlineScriptConfig {
1263
1291
  * Carry the route strategy, so a binding in `<head>` or one marked
1264
1292
  * `data-payload-strategy="route"` refreshes the route. `fragmentEndpoint`
1265
1293
  * implies it — the fragment prelude already contains it. Default `false`.
1294
+ * `'after-save'` renders the route only once Payload reports a save: before it, a
1295
+ * GET shows nothing the editor typed and costs a server render.
1266
1296
  */
1267
- readonly routeStrategy?: boolean;
1297
+ readonly routeStrategy?: boolean | 'after-save';
1268
1298
  /**
1269
1299
  * The 2.0 name for `onUnfaithfulPatch`, kept until 3.0. `'route'` means
1270
1300
  * `'escalate'`, `'ignore'` means `'ignore'`.
@@ -1297,10 +1327,11 @@ interface InlineScriptConfig {
1297
1327
  * mounted, on a page SvelteKit's client runs on — otherwise Svelte's
1298
1328
  * hydration sets its own text back over it, as quietly. The Next.js, Nuxt
1299
1329
  * and SvelteKit adapters set it on every script they emit; a page built by
1300
- * hand with `generateInlineScript()` may. Omitted: the runtime starts on
1301
- * `DOMContentLoaded`, as on a static page.
1330
+ * hand with `generateInlineScript()` may. Under `'manual'` it holds the write
1331
+ * until the page calls `markHydrated()`, for a framework this package cannot
1332
+ * observe. Omitted: the runtime starts on `DOMContentLoaded`, as on a static page.
1302
1333
  */
1303
- readonly hydration?: 'react' | 'vue' | 'sveltekit';
1334
+ readonly hydration?: 'react' | 'vue' | 'sveltekit' | 'manual';
1304
1335
  /**
1305
1336
  * Which defaults the omitted options fall back to, resolved by the generator
1306
1337
  * rather than the runtime, whose own fallbacks are the 2.0 rows: `'v1'`
@@ -1327,6 +1358,10 @@ interface InlineScriptConfig {
1327
1358
  * declaration; an uncovered one is an unbound change.
1328
1359
  */
1329
1360
  readonly subfieldCoverage?: 'descendant' | 'declared';
1361
+ /** Milliseconds the `serverURL` merge may wait before the update shows its raw values. Off by default. */
1362
+ readonly mergeTimeoutMs?: number;
1363
+ /** The route of a Lexical internal link with no `url` of its own, as `/{locale}/{slug}/`. */
1364
+ readonly internalLinkPattern?: string;
1330
1365
  /**
1331
1366
  * A runtime artifact to embed instead of the full one — today only
1332
1367
  * `LEAN_RUNTIME` from `payload-live-preview/lean`, which leaves out the
@@ -1794,12 +1829,20 @@ interface LexicalRenderOptions {
1794
1829
  readonly requireDocument?: boolean;
1795
1830
  /**
1796
1831
  * Called for every `block` or `inlineBlock` the registry has no renderer
1797
- * for, with the block's slug as Payload sent it and the class its empty
1798
- * placeholder carries. The `richText` write listens: it is the one caller
1832
+ * for, with the block's slug as Payload sent it, the class its empty
1833
+ * placeholder carries and the block's fields. The `richText` write listens: it is the one caller
1799
1834
  * that later knows whether the server's markup for the block survived, so
1800
1835
  * the diagnostic is spoken there (LP0410, LP0413), not here.
1801
1836
  */
1802
- readonly onUnrenderedBlock?: (blockType: string, placeholderClass: string) => void;
1837
+ readonly onUnrenderedBlock?: (blockType: string, placeholderClass: string, fields: unknown) => void;
1838
+ /**
1839
+ * The route of an internal link whose document has no `url` of its own, such
1840
+ * as `/{locale}/{slug}/`. `{slug}`, `{id}`, `{collection}` and `{locale}` are
1841
+ * filled in and encoded; with one of them empty the link falls back to `/<slug>`.
1842
+ */
1843
+ readonly internalLinkPattern?: string | undefined;
1844
+ /** What `{locale}` reads in `internalLinkPattern`. */
1845
+ readonly locale?: string | undefined;
1803
1846
  }
1804
1847
  /** @internal */
1805
1848
  declare function isLexicalContent(value: unknown): value is LexicalRoot;
@@ -2048,6 +2091,11 @@ interface FieldBindingAttributes {
2048
2091
  readonly 'data-payload-alt'?: string;
2049
2092
  readonly 'data-payload-href'?: string;
2050
2093
  readonly 'data-payload-array-template'?: string;
2094
+ readonly 'data-payload-format'?: string;
2095
+ readonly 'data-payload-text'?: string;
2096
+ readonly 'data-payload-strategy'?: string;
2097
+ readonly 'data-payload-depends'?: string;
2098
+ readonly 'data-payload-boundary'?: string;
2051
2099
  }
2052
2100
  interface BindOptions {
2053
2101
  /** Attribute to write instead of the text content, e.g. `'src'` for `<img>`. */
@@ -2066,6 +2114,19 @@ interface BindOptions {
2066
2114
  readonly href?: string;
2067
2115
  /** Markup per array item with `{{value}}` placeholders. */
2068
2116
  readonly arrayTemplate?: string;
2117
+ /** How a date or number is written, from `data-payload-format`'s vocabulary. */
2118
+ readonly format?: string;
2119
+ /** Let a text write replace the element's children. */
2120
+ readonly text?: boolean;
2121
+ /** Who shows this field: the patch (default), a server-rendered fragment, or the route. */
2122
+ readonly strategy?: 'patch' | 'fragment' | 'route';
2123
+ /** Fields whose change re-applies this binding under `skipUnchanged`. */
2124
+ readonly dependsOn?: readonly string[];
2125
+ /**
2126
+ * An anchor for a field that may be empty, so an edit that fills it has somewhere to
2127
+ * land. Set `hidden` yourself while the value is empty; the runtime keeps it right after that.
2128
+ */
2129
+ readonly anchor?: boolean;
2069
2130
  }
2070
2131
  /** `bind<Homepage>('heroTitle')`; without `T` any string is accepted. */
2071
2132
  declare function bind<T = Record<string, unknown>>(field: FieldName<T>, options?: BindOptions): FieldBindingAttributes;
@@ -2140,7 +2201,7 @@ declare function createPreviewBindings(options: PreviewBindingsOptions): Preview
2140
2201
  * `App.Locals` declaration in the project it writes into. The verdict is
2141
2202
  * checked, not trusted — only a context `authorizePreviewRequest()` produced
2142
2203
  * emits anything (ADR 0006).
2143
- * @internal
2204
+ * @public
2144
2205
  */
2145
2206
  declare function previewBindingsFromLocals(locals: unknown, options?: {
2146
2207
  readonly owner?: string;
@@ -2171,4 +2232,4 @@ interface IslandUpdateDetail {
2171
2232
  /** Whether `element` (or an ancestor) is an island that did not opt into patching. @internal */
2172
2233
  declare function isInsideIsland(element: Element): boolean;
2173
2234
 
2174
- export { AUTHORIZED_PREVIEW_BRAND_KEY, type AnalyticsSnapshot, type AuthorizedPreviewContext, type AuthorizedPreviewDocument, type AuthorizedPreviewPayloadScope, type AuthorizedPreviewScope, type BindOptions, type BlockRenderContext, type BlockRenderer, CAPABILITY_DECLARATIONS, CAPABILITY_DOCUMENTATION, type CachedElement, type CapabilityDeclaration, type CapabilityDocumentation, type CapabilitySource, type ConnectionStatus, type CspDirectiveMerge, type CustomRendererKey, DIAGNOSTIC_CODES, type DefaultsProfile, type DiagnosticCode, type DocumentSaveHandler, type DocumentSavePluginOptions, type DocumentSaveStrategy, EventEmitter, type EventHandler, type EventSourcePolicy, type FetchLike, type FieldBindingAttributes, type FieldName, type FieldPath, type FieldRenderer, type FieldTransform, type FieldType, type FocusReportTarget, type FragmentBoundaryAttributes, type FragmentBoundaryOptions, type FragmentContext, type FragmentReport, type FragmentStrategy, type FrameAncestorsOptions, ISLAND_EVENT, type InlineScriptConfig, type InspectionBindings, type InspectionFidelity, type InspectionFragments, type InspectionOrigins, type InspectionProtocol, type InspectionRevisions, type InspectionRoute, type InspectionScheduler, type IslandUpdateDetail, type IssuePreviewTokenOptions, LIBRARY_PROTOCOL_VERSION, type LexicalNode, type LexicalRoot, LivePreviewClient, type LivePreviewClientConfig, type LivePreviewEventMap, type LivePreviewInspection, type LivePreviewPlugin, type NavigationLifecycleOptions, type NavigationLifecycleTarget, OriginDetector, type OwnerBindingAttributes, PROTOCOL_CAPABILITIES, type PayloadDocumentEventDetail, type PayloadFieldCondition, type PayloadFieldSchema, type PayloadFieldType, type PayloadLivePreviewData, type PayloadLivePreviewMessage, type PayloadMedia, type PayloadRelationship, type PayloadSessionStrategy, type PluginCompatibility, type PluginContext, type PluginDisposer, type PluginEvents, type PluginInspection, type PreviewAuthorization, type PreviewAuthorizationOutcome, type PreviewAuthorizationRequest, type PreviewAuthorizationStrategy, type PreviewAuthorizationStrategyName, type PreviewBindings, type PreviewBindingsOptions, type PreviewFocusMessage, type PreviewRequestLike, type PreviewRequestOptions, type PreviewTokenClaims, type PreviewTokenReplayChecks, type PreviewTokenReplayStore, type PreviewTokenTransport, type PreviewVerifierClaims, type ProtocolCapability, type ProtocolNegotiation, type ProtocolProfile, type ProtocolProfileName, type RenderContext, type RendererKey, type RevisionDisplay, type RevisionDisplayState, type RevisionShortfall, type RichTextRenderer, type RouteContext, type RouteOutcome, type RoutePlanContext, type RouteRefresh, type RouteStrategy, type RuntimeArtifact, type SanitizerDocument, type SanitizerPolicyMode, type SignedTokenStrategy, type StrategyHandlers, type SubtleCryptoLike, type SuppressedBinding, TRUSTED_TYPES_POLICY_NAME, type TrustedHtmlPolicyLike, type Unsubscribe, type UpdateSource, VERSION, type ValueAt, type VerifierStrategy, authorizePreviewRequest, bind, bindByPath, bindNavigationLifecycle, buildBuiltinRenderers, buildFrameAncestors, buildScriptSrcWithNonce, createAnalyticsPlugin, createPreviewBindings, createPreviewFocusReporter, debugPlugin, detectInitialLocale, detectProtocolProfile, documentSavePlugin, escapeHtml, escapeHtmlAttribute, generateCspNonce, generateInlineScript, hasCapability, hasPreviewIntent, highlightPlugin, initLivePreview, isAuthorizedPreviewContext, isDevMode, isExternalHttpUrl, isInIframe, isInPopup, isInPreviewContext, isInsideIsland, isLexicalContent, isPreviewRequest, isSafeUrl, issuePreviewToken, lexicalToHtml, lexicalToPlainText, mergeCspHeader, negotiateProtocol, previewBindingsFromLocals, registerBlockRenderer, registerBuiltinRenderer, registerRouteRefresh, reportPreviewFocus, runtimeBuildInfo, sanitizeHtml, setCspCrypto, setSanitizerDocument, setSanitizerPolicy, setTrustedTypesPolicy, trustedHtml, wrapWithScriptTag };
2235
+ export { AUTHORIZED_PREVIEW_BRAND_KEY, type AnalyticsSnapshot, type AuthorizedPreviewContext, type AuthorizedPreviewDocument, type AuthorizedPreviewPayloadScope, type AuthorizedPreviewScope, type BindOptions, type BlockRenderContext, type BlockRenderer, CAPABILITY_DECLARATIONS, CAPABILITY_DOCUMENTATION, type CachedElement, type CapabilityDeclaration, type CapabilityDocumentation, type CapabilitySource, type ConnectionStatus, type CspDirectiveMerge, type CustomRendererKey, DIAGNOSTIC_CODES, type DefaultsProfile, type DiagnosticCode, type DocumentSaveHandler, type DocumentSavePluginOptions, type DocumentSaveStrategy, EventEmitter, type EventHandler, type EventSourcePolicy, type FetchLike, type FieldBindingAttributes, type FieldName, type FieldPath, type FieldRenderer, type FieldTransform, type FieldType, type FocusReportTarget, type FragmentBoundaryAttributes, type FragmentBoundaryOptions, type FragmentContext, type FragmentReport, type FragmentStrategy, type FrameAncestorsOptions, ISLAND_EVENT, type InlineScriptConfig, type InspectionBindings, type InspectionFidelity, type InspectionFragments, type InspectionOrigins, type InspectionProtocol, type InspectionRevisions, type InspectionRoute, type InspectionScheduler, type IslandUpdateDetail, type IssuePreviewTokenOptions, LIBRARY_PROTOCOL_VERSION, type LexicalNode, type LexicalRoot, LivePreviewClient, type LivePreviewClientConfig, type LivePreviewEventMap, type LivePreviewInspection, type LivePreviewPlugin, type NavigationLifecycleOptions, type NavigationLifecycleTarget, OriginDetector, type OwnerBindingAttributes, PROTOCOL_CAPABILITIES, type PayloadDocumentEventDetail, type PayloadFieldCondition, type PayloadFieldSchema, type PayloadFieldType, type PayloadLivePreviewData, type PayloadLivePreviewMessage, type PayloadMedia, type PayloadRelationship, type PayloadSessionStrategy, type PluginCompatibility, type PluginContext, type PluginDisposer, type PluginEvents, type PluginInspection, type PreviewAuthorization, type PreviewAuthorizationOutcome, type PreviewAuthorizationRequest, type PreviewAuthorizationStrategy, type PreviewAuthorizationStrategyName, type PreviewBindings, type PreviewBindingsOptions, type PreviewFocusMessage, type PreviewRequestLike, type PreviewRequestOptions, type PreviewTokenClaims, type PreviewTokenReplayChecks, type PreviewTokenReplayStore, type PreviewTokenTransport, type PreviewVerifierClaims, type ProtocolCapability, type ProtocolNegotiation, type ProtocolProfile, type ProtocolProfileName, type RenderContext, type RendererKey, type RevisionDisplay, type RevisionDisplayState, type RevisionShortfall, type RichTextRenderer, type RouteContext, type RouteOutcome, type RoutePlanContext, type RouteRefresh, type RouteStrategy, type RuntimeArtifact, type SanitizerDocument, type SanitizerPolicyMode, type SignedTokenStrategy, type StrategyHandlers, type SubtleCryptoLike, type SuppressedBinding, TRUSTED_TYPES_POLICY_NAME, type TrustedHtmlPolicyLike, type Unsubscribe, type UpdateSource, VERSION, type ValueAt, type VerifierStrategy, authorizePreviewRequest, bind, bindByPath, bindNavigationLifecycle, buildBuiltinRenderers, buildFrameAncestors, buildScriptSrcWithNonce, createAnalyticsPlugin, createPreviewBindings, createPreviewFocusReporter, debugPlugin, detectInitialLocale, detectProtocolProfile, documentSavePlugin, escapeHtml, escapeHtmlAttribute, generateCspNonce, generateInlineScript, hasCapability, hasPreviewIntent, highlightPlugin, initLivePreview, isAuthorizedPreviewContext, isDevMode, isExternalHttpUrl, isInIframe, isInPopup, isInPreviewContext, isInsideIsland, isLexicalContent, isPreviewRequest, isSafeUrl, issuePreviewToken, lexicalToHtml, lexicalToPlainText, markHydrated, mergeCspHeader, negotiateProtocol, previewBindingsFromLocals, registerBlockRenderer, registerBuiltinRenderer, registerRouteRefresh, reportPreviewFocus, runtimeBuildInfo, sanitizeHtml, setCspCrypto, setSanitizerDocument, setSanitizerPolicy, setTrustedTypesPolicy, trustedHtml, wrapWithScriptTag };
package/dist/index.d.ts CHANGED
@@ -37,6 +37,8 @@ declare const DIAGNOSTIC_CODES: Readonly<{
37
37
  readonly UnattributableUpdate: "LP0202";
38
38
  /** An update carried a value for a field the page binds nowhere; editing it changes nothing on this page. */
39
39
  readonly UnboundField: "LP0203";
40
+ /** In development: a bound path covers its group under the `descendant` default, which 3.0 changes. */
41
+ readonly CoverageDefaultChanges: "LP0204";
40
42
  /** The visibility gate held offscreen writes back until they scroll into view. */
41
43
  readonly VisibilityGateDeferred: "LP0301";
42
44
  /** A value was refused because the attribute or the value itself is unsafe. */
@@ -61,7 +63,7 @@ declare const DIAGNOSTIC_CODES: Readonly<{
61
63
  readonly UnrenderedBlockKept: "LP0410";
62
64
  /** A patch cannot reach what the server would have drawn; `onUnfaithfulPatch` decided what happens next. */
63
65
  readonly UnfaithfulPatch: "LP0411";
64
- /** The first write to a date, number or checkbox binding replaced a different reading of the same value. */
66
+ /** The first write to a date, number, checkbox, select or radio binding replaced a different reading of the same value. */
65
67
  readonly ServerFormatReplaced: "LP0412";
66
68
  /** A Lexical block has no renderer, and the write could not keep the markup the server rendered for it; it is gone. */
67
69
  readonly UnrenderedBlockLost: "LP0413";
@@ -81,7 +83,7 @@ declare const DIAGNOSTIC_CODES: Readonly<{
81
83
  readonly StartupFailed: "LP0605";
82
84
  /** Sending the ready handshake failed. */
83
85
  readonly ReadyFailed: "LP0606";
84
- /** The page declared hydration, but no React commit, Vue mount or SvelteKit mount came within the cap; the runtime started without waiting. */
86
+ /** The page declared hydration, but no React commit, Vue mount, SvelteKit mount or `markHydrated()` call came within the cap; the runtime started without waiting. */
85
87
  readonly HydrationWaitTimedOut: "LP0607";
86
88
  /** The audit found no runtime in a response that carried preview intent. */
87
89
  readonly AuditRuntimeMissing: "LP0701";
@@ -123,6 +125,8 @@ declare const DIAGNOSTIC_CODES: Readonly<{
123
125
  readonly V2ReadinessGap: "LP0709";
124
126
  /** The preview runtime is served to anonymous visitors, not only inside the admin frame. */
125
127
  readonly RuntimeOnPublicPage: "LP0710";
128
+ /** An element carries attributes that only mean something beside `data-payload-field`, and has none. */
129
+ readonly AuditModifierWithoutField: "LP0711";
126
130
  }>;
127
131
  /** A diagnostic code, as it appears in log output and on the `error` event. */
128
132
  type DiagnosticCode = (typeof DIAGNOSTIC_CODES)[keyof typeof DIAGNOSTIC_CODES];
@@ -350,6 +354,8 @@ interface RenderContext {
350
354
  * completes the sentence 'field "x" …' in LP0411.
351
355
  */
352
356
  readonly reportUnfaithful?: (target: CachedElement, reason: string) => void;
357
+ /** The route of a Lexical internal link, as `internalLinkPattern` gives it. */
358
+ readonly internalLinkPattern?: string;
353
359
  }
354
360
  /**
355
361
  * A renderer writes one value into its element. It must not throw: one bad
@@ -856,7 +862,7 @@ interface LivePreviewInspection {
856
862
  * SvelteKit page is not connected yet; `timed-out` is LP0607.
857
863
  */
858
864
  readonly hydration: {
859
- readonly mode: 'off' | 'react' | 'vue' | 'sveltekit';
865
+ readonly mode: 'off' | 'react' | 'vue' | 'sveltekit' | 'manual';
860
866
  readonly state: 'idle' | 'waiting' | 'committed' | 'timed-out';
861
867
  };
862
868
  }
@@ -1009,6 +1015,12 @@ interface LivePreviewClientConfig {
1009
1015
  readonly apiRoute?: string;
1010
1016
  /** Population depth used with `serverURL`. Required with it; `defaults: 'v1'` falls back to `1`. */
1011
1017
  readonly mergeDepth?: number;
1018
+ /** Milliseconds the `serverURL` merge may wait before the update shows its raw values. Off by default. */
1019
+ readonly mergeTimeoutMs?: number;
1020
+ /** The route of a Lexical internal link with no `url` of its own, as `/{locale}/{slug}/`. */
1021
+ readonly internalLinkPattern?: string;
1022
+ /** Hold a route render until Payload reports the save: the route shows what is saved. */
1023
+ readonly routeAfterSave?: boolean;
1012
1024
  /** Custom fetch for the `serverURL` merge request: attach auth headers or route through a proxy. */
1013
1025
  readonly mergeFetch?: typeof fetch;
1014
1026
  /** Verbose console output. Defaults to dev-mode detection. */
@@ -1209,6 +1221,22 @@ type RouteRefresh = () => void | Promise<void>;
1209
1221
  */
1210
1222
  declare function registerRouteRefresh(refresh: RouteRefresh): () => void;
1211
1223
 
1224
+ /**
1225
+ * Waiting for a page that says when it has hydrated (ADR 0015, addendum of
1226
+ * 2026-10-31). The React, Vue and SvelteKit waits each read a trace their
1227
+ * framework leaves; a page on any other host, or whose host left none, calls
1228
+ * `markHydrated()` instead. The page's bundle and the runtime are separate
1229
+ * scripts and either may run first, so the slot holds a state a late runtime
1230
+ * can still read rather than an event it could miss.
1231
+ */
1232
+
1233
+ /**
1234
+ * Tell a runtime started with `hydration: 'manual'` that this page has hydrated, so its
1235
+ * first write lands on markup the framework keeps. Call it once your framework has
1236
+ * taken the page over; a later call changes nothing, and on a server it does nothing.
1237
+ */
1238
+ declare function markHydrated(): void;
1239
+
1212
1240
  interface RuntimeBuildInfo {
1213
1241
  readonly generatedAt: string;
1214
1242
  readonly size: number;
@@ -1263,8 +1291,10 @@ interface InlineScriptConfig {
1263
1291
  * Carry the route strategy, so a binding in `<head>` or one marked
1264
1292
  * `data-payload-strategy="route"` refreshes the route. `fragmentEndpoint`
1265
1293
  * implies it — the fragment prelude already contains it. Default `false`.
1294
+ * `'after-save'` renders the route only once Payload reports a save: before it, a
1295
+ * GET shows nothing the editor typed and costs a server render.
1266
1296
  */
1267
- readonly routeStrategy?: boolean;
1297
+ readonly routeStrategy?: boolean | 'after-save';
1268
1298
  /**
1269
1299
  * The 2.0 name for `onUnfaithfulPatch`, kept until 3.0. `'route'` means
1270
1300
  * `'escalate'`, `'ignore'` means `'ignore'`.
@@ -1297,10 +1327,11 @@ interface InlineScriptConfig {
1297
1327
  * mounted, on a page SvelteKit's client runs on — otherwise Svelte's
1298
1328
  * hydration sets its own text back over it, as quietly. The Next.js, Nuxt
1299
1329
  * and SvelteKit adapters set it on every script they emit; a page built by
1300
- * hand with `generateInlineScript()` may. Omitted: the runtime starts on
1301
- * `DOMContentLoaded`, as on a static page.
1330
+ * hand with `generateInlineScript()` may. Under `'manual'` it holds the write
1331
+ * until the page calls `markHydrated()`, for a framework this package cannot
1332
+ * observe. Omitted: the runtime starts on `DOMContentLoaded`, as on a static page.
1302
1333
  */
1303
- readonly hydration?: 'react' | 'vue' | 'sveltekit';
1334
+ readonly hydration?: 'react' | 'vue' | 'sveltekit' | 'manual';
1304
1335
  /**
1305
1336
  * Which defaults the omitted options fall back to, resolved by the generator
1306
1337
  * rather than the runtime, whose own fallbacks are the 2.0 rows: `'v1'`
@@ -1327,6 +1358,10 @@ interface InlineScriptConfig {
1327
1358
  * declaration; an uncovered one is an unbound change.
1328
1359
  */
1329
1360
  readonly subfieldCoverage?: 'descendant' | 'declared';
1361
+ /** Milliseconds the `serverURL` merge may wait before the update shows its raw values. Off by default. */
1362
+ readonly mergeTimeoutMs?: number;
1363
+ /** The route of a Lexical internal link with no `url` of its own, as `/{locale}/{slug}/`. */
1364
+ readonly internalLinkPattern?: string;
1330
1365
  /**
1331
1366
  * A runtime artifact to embed instead of the full one — today only
1332
1367
  * `LEAN_RUNTIME` from `payload-live-preview/lean`, which leaves out the
@@ -1794,12 +1829,20 @@ interface LexicalRenderOptions {
1794
1829
  readonly requireDocument?: boolean;
1795
1830
  /**
1796
1831
  * Called for every `block` or `inlineBlock` the registry has no renderer
1797
- * for, with the block's slug as Payload sent it and the class its empty
1798
- * placeholder carries. The `richText` write listens: it is the one caller
1832
+ * for, with the block's slug as Payload sent it, the class its empty
1833
+ * placeholder carries and the block's fields. The `richText` write listens: it is the one caller
1799
1834
  * that later knows whether the server's markup for the block survived, so
1800
1835
  * the diagnostic is spoken there (LP0410, LP0413), not here.
1801
1836
  */
1802
- readonly onUnrenderedBlock?: (blockType: string, placeholderClass: string) => void;
1837
+ readonly onUnrenderedBlock?: (blockType: string, placeholderClass: string, fields: unknown) => void;
1838
+ /**
1839
+ * The route of an internal link whose document has no `url` of its own, such
1840
+ * as `/{locale}/{slug}/`. `{slug}`, `{id}`, `{collection}` and `{locale}` are
1841
+ * filled in and encoded; with one of them empty the link falls back to `/<slug>`.
1842
+ */
1843
+ readonly internalLinkPattern?: string | undefined;
1844
+ /** What `{locale}` reads in `internalLinkPattern`. */
1845
+ readonly locale?: string | undefined;
1803
1846
  }
1804
1847
  /** @internal */
1805
1848
  declare function isLexicalContent(value: unknown): value is LexicalRoot;
@@ -2048,6 +2091,11 @@ interface FieldBindingAttributes {
2048
2091
  readonly 'data-payload-alt'?: string;
2049
2092
  readonly 'data-payload-href'?: string;
2050
2093
  readonly 'data-payload-array-template'?: string;
2094
+ readonly 'data-payload-format'?: string;
2095
+ readonly 'data-payload-text'?: string;
2096
+ readonly 'data-payload-strategy'?: string;
2097
+ readonly 'data-payload-depends'?: string;
2098
+ readonly 'data-payload-boundary'?: string;
2051
2099
  }
2052
2100
  interface BindOptions {
2053
2101
  /** Attribute to write instead of the text content, e.g. `'src'` for `<img>`. */
@@ -2066,6 +2114,19 @@ interface BindOptions {
2066
2114
  readonly href?: string;
2067
2115
  /** Markup per array item with `{{value}}` placeholders. */
2068
2116
  readonly arrayTemplate?: string;
2117
+ /** How a date or number is written, from `data-payload-format`'s vocabulary. */
2118
+ readonly format?: string;
2119
+ /** Let a text write replace the element's children. */
2120
+ readonly text?: boolean;
2121
+ /** Who shows this field: the patch (default), a server-rendered fragment, or the route. */
2122
+ readonly strategy?: 'patch' | 'fragment' | 'route';
2123
+ /** Fields whose change re-applies this binding under `skipUnchanged`. */
2124
+ readonly dependsOn?: readonly string[];
2125
+ /**
2126
+ * An anchor for a field that may be empty, so an edit that fills it has somewhere to
2127
+ * land. Set `hidden` yourself while the value is empty; the runtime keeps it right after that.
2128
+ */
2129
+ readonly anchor?: boolean;
2069
2130
  }
2070
2131
  /** `bind<Homepage>('heroTitle')`; without `T` any string is accepted. */
2071
2132
  declare function bind<T = Record<string, unknown>>(field: FieldName<T>, options?: BindOptions): FieldBindingAttributes;
@@ -2140,7 +2201,7 @@ declare function createPreviewBindings(options: PreviewBindingsOptions): Preview
2140
2201
  * `App.Locals` declaration in the project it writes into. The verdict is
2141
2202
  * checked, not trusted — only a context `authorizePreviewRequest()` produced
2142
2203
  * emits anything (ADR 0006).
2143
- * @internal
2204
+ * @public
2144
2205
  */
2145
2206
  declare function previewBindingsFromLocals(locals: unknown, options?: {
2146
2207
  readonly owner?: string;
@@ -2171,4 +2232,4 @@ interface IslandUpdateDetail {
2171
2232
  /** Whether `element` (or an ancestor) is an island that did not opt into patching. @internal */
2172
2233
  declare function isInsideIsland(element: Element): boolean;
2173
2234
 
2174
- export { AUTHORIZED_PREVIEW_BRAND_KEY, type AnalyticsSnapshot, type AuthorizedPreviewContext, type AuthorizedPreviewDocument, type AuthorizedPreviewPayloadScope, type AuthorizedPreviewScope, type BindOptions, type BlockRenderContext, type BlockRenderer, CAPABILITY_DECLARATIONS, CAPABILITY_DOCUMENTATION, type CachedElement, type CapabilityDeclaration, type CapabilityDocumentation, type CapabilitySource, type ConnectionStatus, type CspDirectiveMerge, type CustomRendererKey, DIAGNOSTIC_CODES, type DefaultsProfile, type DiagnosticCode, type DocumentSaveHandler, type DocumentSavePluginOptions, type DocumentSaveStrategy, EventEmitter, type EventHandler, type EventSourcePolicy, type FetchLike, type FieldBindingAttributes, type FieldName, type FieldPath, type FieldRenderer, type FieldTransform, type FieldType, type FocusReportTarget, type FragmentBoundaryAttributes, type FragmentBoundaryOptions, type FragmentContext, type FragmentReport, type FragmentStrategy, type FrameAncestorsOptions, ISLAND_EVENT, type InlineScriptConfig, type InspectionBindings, type InspectionFidelity, type InspectionFragments, type InspectionOrigins, type InspectionProtocol, type InspectionRevisions, type InspectionRoute, type InspectionScheduler, type IslandUpdateDetail, type IssuePreviewTokenOptions, LIBRARY_PROTOCOL_VERSION, type LexicalNode, type LexicalRoot, LivePreviewClient, type LivePreviewClientConfig, type LivePreviewEventMap, type LivePreviewInspection, type LivePreviewPlugin, type NavigationLifecycleOptions, type NavigationLifecycleTarget, OriginDetector, type OwnerBindingAttributes, PROTOCOL_CAPABILITIES, type PayloadDocumentEventDetail, type PayloadFieldCondition, type PayloadFieldSchema, type PayloadFieldType, type PayloadLivePreviewData, type PayloadLivePreviewMessage, type PayloadMedia, type PayloadRelationship, type PayloadSessionStrategy, type PluginCompatibility, type PluginContext, type PluginDisposer, type PluginEvents, type PluginInspection, type PreviewAuthorization, type PreviewAuthorizationOutcome, type PreviewAuthorizationRequest, type PreviewAuthorizationStrategy, type PreviewAuthorizationStrategyName, type PreviewBindings, type PreviewBindingsOptions, type PreviewFocusMessage, type PreviewRequestLike, type PreviewRequestOptions, type PreviewTokenClaims, type PreviewTokenReplayChecks, type PreviewTokenReplayStore, type PreviewTokenTransport, type PreviewVerifierClaims, type ProtocolCapability, type ProtocolNegotiation, type ProtocolProfile, type ProtocolProfileName, type RenderContext, type RendererKey, type RevisionDisplay, type RevisionDisplayState, type RevisionShortfall, type RichTextRenderer, type RouteContext, type RouteOutcome, type RoutePlanContext, type RouteRefresh, type RouteStrategy, type RuntimeArtifact, type SanitizerDocument, type SanitizerPolicyMode, type SignedTokenStrategy, type StrategyHandlers, type SubtleCryptoLike, type SuppressedBinding, TRUSTED_TYPES_POLICY_NAME, type TrustedHtmlPolicyLike, type Unsubscribe, type UpdateSource, VERSION, type ValueAt, type VerifierStrategy, authorizePreviewRequest, bind, bindByPath, bindNavigationLifecycle, buildBuiltinRenderers, buildFrameAncestors, buildScriptSrcWithNonce, createAnalyticsPlugin, createPreviewBindings, createPreviewFocusReporter, debugPlugin, detectInitialLocale, detectProtocolProfile, documentSavePlugin, escapeHtml, escapeHtmlAttribute, generateCspNonce, generateInlineScript, hasCapability, hasPreviewIntent, highlightPlugin, initLivePreview, isAuthorizedPreviewContext, isDevMode, isExternalHttpUrl, isInIframe, isInPopup, isInPreviewContext, isInsideIsland, isLexicalContent, isPreviewRequest, isSafeUrl, issuePreviewToken, lexicalToHtml, lexicalToPlainText, mergeCspHeader, negotiateProtocol, previewBindingsFromLocals, registerBlockRenderer, registerBuiltinRenderer, registerRouteRefresh, reportPreviewFocus, runtimeBuildInfo, sanitizeHtml, setCspCrypto, setSanitizerDocument, setSanitizerPolicy, setTrustedTypesPolicy, trustedHtml, wrapWithScriptTag };
2235
+ export { AUTHORIZED_PREVIEW_BRAND_KEY, type AnalyticsSnapshot, type AuthorizedPreviewContext, type AuthorizedPreviewDocument, type AuthorizedPreviewPayloadScope, type AuthorizedPreviewScope, type BindOptions, type BlockRenderContext, type BlockRenderer, CAPABILITY_DECLARATIONS, CAPABILITY_DOCUMENTATION, type CachedElement, type CapabilityDeclaration, type CapabilityDocumentation, type CapabilitySource, type ConnectionStatus, type CspDirectiveMerge, type CustomRendererKey, DIAGNOSTIC_CODES, type DefaultsProfile, type DiagnosticCode, type DocumentSaveHandler, type DocumentSavePluginOptions, type DocumentSaveStrategy, EventEmitter, type EventHandler, type EventSourcePolicy, type FetchLike, type FieldBindingAttributes, type FieldName, type FieldPath, type FieldRenderer, type FieldTransform, type FieldType, type FocusReportTarget, type FragmentBoundaryAttributes, type FragmentBoundaryOptions, type FragmentContext, type FragmentReport, type FragmentStrategy, type FrameAncestorsOptions, ISLAND_EVENT, type InlineScriptConfig, type InspectionBindings, type InspectionFidelity, type InspectionFragments, type InspectionOrigins, type InspectionProtocol, type InspectionRevisions, type InspectionRoute, type InspectionScheduler, type IslandUpdateDetail, type IssuePreviewTokenOptions, LIBRARY_PROTOCOL_VERSION, type LexicalNode, type LexicalRoot, LivePreviewClient, type LivePreviewClientConfig, type LivePreviewEventMap, type LivePreviewInspection, type LivePreviewPlugin, type NavigationLifecycleOptions, type NavigationLifecycleTarget, OriginDetector, type OwnerBindingAttributes, PROTOCOL_CAPABILITIES, type PayloadDocumentEventDetail, type PayloadFieldCondition, type PayloadFieldSchema, type PayloadFieldType, type PayloadLivePreviewData, type PayloadLivePreviewMessage, type PayloadMedia, type PayloadRelationship, type PayloadSessionStrategy, type PluginCompatibility, type PluginContext, type PluginDisposer, type PluginEvents, type PluginInspection, type PreviewAuthorization, type PreviewAuthorizationOutcome, type PreviewAuthorizationRequest, type PreviewAuthorizationStrategy, type PreviewAuthorizationStrategyName, type PreviewBindings, type PreviewBindingsOptions, type PreviewFocusMessage, type PreviewRequestLike, type PreviewRequestOptions, type PreviewTokenClaims, type PreviewTokenReplayChecks, type PreviewTokenReplayStore, type PreviewTokenTransport, type PreviewVerifierClaims, type ProtocolCapability, type ProtocolNegotiation, type ProtocolProfile, type ProtocolProfileName, type RenderContext, type RendererKey, type RevisionDisplay, type RevisionDisplayState, type RevisionShortfall, type RichTextRenderer, type RouteContext, type RouteOutcome, type RoutePlanContext, type RouteRefresh, type RouteStrategy, type RuntimeArtifact, type SanitizerDocument, type SanitizerPolicyMode, type SignedTokenStrategy, type StrategyHandlers, type SubtleCryptoLike, type SuppressedBinding, TRUSTED_TYPES_POLICY_NAME, type TrustedHtmlPolicyLike, type Unsubscribe, type UpdateSource, VERSION, type ValueAt, type VerifierStrategy, authorizePreviewRequest, bind, bindByPath, bindNavigationLifecycle, buildBuiltinRenderers, buildFrameAncestors, buildScriptSrcWithNonce, createAnalyticsPlugin, createPreviewBindings, createPreviewFocusReporter, debugPlugin, detectInitialLocale, detectProtocolProfile, documentSavePlugin, escapeHtml, escapeHtmlAttribute, generateCspNonce, generateInlineScript, hasCapability, hasPreviewIntent, highlightPlugin, initLivePreview, isAuthorizedPreviewContext, isDevMode, isExternalHttpUrl, isInIframe, isInPopup, isInPreviewContext, isInsideIsland, isLexicalContent, isPreviewRequest, isSafeUrl, issuePreviewToken, lexicalToHtml, lexicalToPlainText, markHydrated, mergeCspHeader, negotiateProtocol, previewBindingsFromLocals, registerBlockRenderer, registerBuiltinRenderer, registerRouteRefresh, reportPreviewFocus, runtimeBuildInfo, sanitizeHtml, setCspCrypto, setSanitizerDocument, setSanitizerPolicy, setTrustedTypesPolicy, trustedHtml, wrapWithScriptTag };