@stream-mdx/react 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/components/index.cjs +497 -163
  2. package/dist/components/index.d.cts +1 -1
  3. package/dist/components/index.d.ts +1 -1
  4. package/dist/components/index.mjs +496 -163
  5. package/dist/{index-Bt1opGCs.d.cts → index-D7px9jug.d.cts} +27 -2
  6. package/dist/{index-Bt1opGCs.d.ts → index-D7px9jug.d.ts} +27 -2
  7. package/dist/index.cjs +3767 -2043
  8. package/dist/index.d.cts +43 -5
  9. package/dist/index.d.ts +43 -5
  10. package/dist/index.mjs +3991 -2265
  11. package/dist/mdx-client.cjs +60 -18
  12. package/dist/mdx-client.d.cts +11 -0
  13. package/dist/mdx-client.d.ts +11 -0
  14. package/dist/mdx-client.mjs +60 -18
  15. package/dist/mdx-coordinator.cjs +60 -18
  16. package/dist/mdx-coordinator.mjs +60 -18
  17. package/dist/renderer/node-views.cjs +466 -133
  18. package/dist/renderer/node-views.d.cts +1 -1
  19. package/dist/renderer/node-views.d.ts +1 -1
  20. package/dist/renderer/node-views.mjs +409 -68
  21. package/dist/renderer/patch-commit-scheduler.cjs +68 -7
  22. package/dist/renderer/patch-commit-scheduler.d.cts +6 -5
  23. package/dist/renderer/patch-commit-scheduler.d.ts +6 -5
  24. package/dist/renderer/patch-commit-scheduler.mjs +68 -7
  25. package/dist/renderer/store.cjs +481 -56
  26. package/dist/renderer/store.d.cts +2 -1
  27. package/dist/renderer/store.d.ts +2 -1
  28. package/dist/renderer/store.mjs +479 -47
  29. package/dist/renderer/virtualized-code.cjs +8 -2
  30. package/dist/renderer/virtualized-code.d.cts +4 -0
  31. package/dist/renderer/virtualized-code.d.ts +4 -0
  32. package/dist/renderer/virtualized-code.mjs +8 -2
  33. package/dist/renderer.cjs +3199 -2208
  34. package/dist/renderer.d.cts +4 -2
  35. package/dist/renderer.d.ts +4 -2
  36. package/dist/renderer.mjs +2956 -1957
  37. package/dist/streaming-markdown-DSC4L0xR.d.cts +157 -0
  38. package/dist/streaming-markdown-Dp1IDgMT.d.ts +157 -0
  39. package/dist/streaming-markdown.cjs +3950 -2248
  40. package/dist/streaming-markdown.d.cts +6 -95
  41. package/dist/streaming-markdown.d.ts +6 -95
  42. package/dist/streaming-markdown.mjs +3962 -2252
  43. package/dist/utils/inline-html.d.cts +1 -1
  44. package/dist/utils/inline-html.d.ts +1 -1
  45. package/package.json +3 -3
@@ -0,0 +1,157 @@
1
+ import React from 'react';
2
+ import { PatchMetrics, FormatAnticipationConfig, CodeHighlightingMode, Block } from '@stream-mdx/core';
3
+ import { L as LinkSafetyModalProps, B as BlockComponents, T as TableElements, H as HtmlElements, I as InlineComponents } from './index-D7px9jug.cjs';
4
+ import { AdaptiveBudgetState, PatchFlushResult } from './renderer/patch-commit-scheduler.cjs';
5
+ import { RendererStore } from './renderer/store.cjs';
6
+
7
+ type MdxHydrationStrategy = "immediate" | "staggered" | "visible";
8
+ type MdxHydrationOptions = {
9
+ strategy?: MdxHydrationStrategy;
10
+ maxConcurrent?: number;
11
+ delayMs?: number;
12
+ rootMargin?: string;
13
+ idleTimeoutMs?: number;
14
+ debounceMs?: number;
15
+ };
16
+
17
+ type DeferredRenderConfig = {
18
+ rootMargin?: string;
19
+ idleTimeoutMs?: number;
20
+ debounceMs?: number;
21
+ };
22
+ declare const DeferredRenderContext: React.Context<DeferredRenderConfig | null>;
23
+
24
+ type MdxPrefetchSummary = {
25
+ requested: number;
26
+ completed: number;
27
+ error: number;
28
+ pending: number;
29
+ avgPrefetchMs: number | null;
30
+ p95PrefetchMs: number | null;
31
+ maxPrefetchMs: number | null;
32
+ lastPrefetchMs: number | null;
33
+ };
34
+ type MdxHydrationSummary = {
35
+ compiled: number;
36
+ hydrated: number;
37
+ error: number;
38
+ avgHydrationMs: number | null;
39
+ p95HydrationMs: number | null;
40
+ maxHydrationMs: number | null;
41
+ lastHydrationMs: number | null;
42
+ longTaskTotalMs: number | null;
43
+ longTaskCount: number | null;
44
+ p95LongTaskMs: number | null;
45
+ maxLongTaskMs: number | null;
46
+ prefetch?: MdxPrefetchSummary | null;
47
+ };
48
+
49
+ interface StreamingSchedulerOptions {
50
+ frameBudgetMs?: number;
51
+ flushTimeoutMs?: number;
52
+ maxBatchesPerFlush?: number;
53
+ maxLowPriorityBatchesPerFlush?: number;
54
+ lowPriorityFrameBudgetMs?: number;
55
+ urgentQueueThreshold?: number;
56
+ batch?: "rAF" | "microtask" | "timeout";
57
+ historyLimit?: number;
58
+ adaptiveSwitch?: boolean;
59
+ adaptiveQueueThreshold?: number;
60
+ }
61
+ interface StreamingFeatureFlags {
62
+ footnotes?: boolean;
63
+ html?: boolean;
64
+ mdx?: boolean;
65
+ tables?: boolean;
66
+ callouts?: boolean;
67
+ math?: boolean;
68
+ formatAnticipation?: FormatAnticipationConfig;
69
+ codeHighlighting?: CodeHighlightingMode;
70
+ liveCodeHighlighting?: boolean;
71
+ liveTokenization?: boolean;
72
+ emitHighlightTokens?: boolean;
73
+ emitDiffBlocks?: boolean;
74
+ }
75
+ /**
76
+ * Metrics emitted after each flush (high-priority + low-priority batches).
77
+ */
78
+ interface RendererMetrics {
79
+ tx?: number | null;
80
+ receivedAt: number;
81
+ committedAt: number;
82
+ durationMs: number;
83
+ patchToDomMs: number;
84
+ totalPatches: number;
85
+ appliedPatches: number;
86
+ queueDepthBefore: number;
87
+ remainingQueueSize: number;
88
+ batchCount: number;
89
+ queueDelay: {
90
+ avg: number;
91
+ max: number;
92
+ p95: number;
93
+ };
94
+ priorities: Array<"high" | "low">;
95
+ workerMetrics?: PatchMetrics;
96
+ adaptiveBudget?: AdaptiveBudgetState;
97
+ flush: PatchFlushResult;
98
+ }
99
+ interface RendererStateSnapshot {
100
+ blocks: ReadonlyArray<Block>;
101
+ queueDepth: number;
102
+ pendingBatches: number;
103
+ isPaused: boolean;
104
+ workerReady: boolean;
105
+ rendererVersion: number;
106
+ store: RendererStore;
107
+ lastMetrics: RendererMetrics | null;
108
+ mdxHydration?: MdxHydrationSummary & {
109
+ pending: number;
110
+ };
111
+ }
112
+ interface StreamingMarkdownHandle {
113
+ pause(): void;
114
+ resume(): void;
115
+ restart(): void;
116
+ finalize(): void;
117
+ append(text: string): void;
118
+ setCredits(value: number): void;
119
+ flushPending(): PatchFlushResult | null;
120
+ waitForIdle(): Promise<void>;
121
+ onFlush(listener: (result: PatchFlushResult) => void): () => void;
122
+ getState(): RendererStateSnapshot;
123
+ getPatchHistory(limit?: number): ReadonlyArray<RendererMetrics>;
124
+ }
125
+ type StreamingCaret = "block" | "circle" | string | false;
126
+ type LinkSafetyCheck = (url: string) => boolean | Promise<boolean>;
127
+ type LinkSafetyConfig = {
128
+ enabled?: boolean;
129
+ onLinkCheck?: LinkSafetyCheck;
130
+ renderModal?: (props: LinkSafetyModalProps) => React.ReactNode;
131
+ };
132
+ interface StreamingMarkdownProps {
133
+ text?: string;
134
+ stream?: AsyncIterable<string>;
135
+ worker?: Worker | URL | (() => Worker) | string;
136
+ managedWorker?: boolean;
137
+ prewarmLangs?: string[];
138
+ features?: StreamingFeatureFlags;
139
+ components?: Partial<BlockComponents>;
140
+ tableElements?: Partial<TableElements>;
141
+ htmlElements?: Partial<HtmlElements>;
142
+ mdxComponents?: Record<string, React.ComponentType<unknown>>;
143
+ inlineComponents?: Partial<InlineComponents>;
144
+ scheduling?: StreamingSchedulerOptions;
145
+ mdxCompileMode?: "server" | "worker";
146
+ mdxHydration?: MdxHydrationOptions;
147
+ onMetrics?: (metrics: RendererMetrics) => void;
148
+ onError?: (error: Error) => void;
149
+ className?: string;
150
+ style?: React.CSSProperties;
151
+ caret?: StreamingCaret;
152
+ linkSafety?: LinkSafetyConfig;
153
+ deferHeavyBlocks?: boolean | DeferredRenderConfig;
154
+ }
155
+ declare const StreamingMarkdown: React.ForwardRefExoticComponent<StreamingMarkdownProps & React.RefAttributes<StreamingMarkdownHandle>>;
156
+
157
+ export { type DeferredRenderConfig as D, type LinkSafetyCheck as L, type MdxHydrationOptions as M, type RendererMetrics as R, type StreamingSchedulerOptions as S, DeferredRenderContext as a, type StreamingFeatureFlags as b, type RendererStateSnapshot as c, type StreamingMarkdownHandle as d, type StreamingCaret as e, type LinkSafetyConfig as f, type StreamingMarkdownProps as g, StreamingMarkdown as h };
@@ -0,0 +1,157 @@
1
+ import React from 'react';
2
+ import { PatchMetrics, FormatAnticipationConfig, CodeHighlightingMode, Block } from '@stream-mdx/core';
3
+ import { L as LinkSafetyModalProps, B as BlockComponents, T as TableElements, H as HtmlElements, I as InlineComponents } from './index-D7px9jug.js';
4
+ import { AdaptiveBudgetState, PatchFlushResult } from './renderer/patch-commit-scheduler.js';
5
+ import { RendererStore } from './renderer/store.js';
6
+
7
+ type MdxHydrationStrategy = "immediate" | "staggered" | "visible";
8
+ type MdxHydrationOptions = {
9
+ strategy?: MdxHydrationStrategy;
10
+ maxConcurrent?: number;
11
+ delayMs?: number;
12
+ rootMargin?: string;
13
+ idleTimeoutMs?: number;
14
+ debounceMs?: number;
15
+ };
16
+
17
+ type DeferredRenderConfig = {
18
+ rootMargin?: string;
19
+ idleTimeoutMs?: number;
20
+ debounceMs?: number;
21
+ };
22
+ declare const DeferredRenderContext: React.Context<DeferredRenderConfig | null>;
23
+
24
+ type MdxPrefetchSummary = {
25
+ requested: number;
26
+ completed: number;
27
+ error: number;
28
+ pending: number;
29
+ avgPrefetchMs: number | null;
30
+ p95PrefetchMs: number | null;
31
+ maxPrefetchMs: number | null;
32
+ lastPrefetchMs: number | null;
33
+ };
34
+ type MdxHydrationSummary = {
35
+ compiled: number;
36
+ hydrated: number;
37
+ error: number;
38
+ avgHydrationMs: number | null;
39
+ p95HydrationMs: number | null;
40
+ maxHydrationMs: number | null;
41
+ lastHydrationMs: number | null;
42
+ longTaskTotalMs: number | null;
43
+ longTaskCount: number | null;
44
+ p95LongTaskMs: number | null;
45
+ maxLongTaskMs: number | null;
46
+ prefetch?: MdxPrefetchSummary | null;
47
+ };
48
+
49
+ interface StreamingSchedulerOptions {
50
+ frameBudgetMs?: number;
51
+ flushTimeoutMs?: number;
52
+ maxBatchesPerFlush?: number;
53
+ maxLowPriorityBatchesPerFlush?: number;
54
+ lowPriorityFrameBudgetMs?: number;
55
+ urgentQueueThreshold?: number;
56
+ batch?: "rAF" | "microtask" | "timeout";
57
+ historyLimit?: number;
58
+ adaptiveSwitch?: boolean;
59
+ adaptiveQueueThreshold?: number;
60
+ }
61
+ interface StreamingFeatureFlags {
62
+ footnotes?: boolean;
63
+ html?: boolean;
64
+ mdx?: boolean;
65
+ tables?: boolean;
66
+ callouts?: boolean;
67
+ math?: boolean;
68
+ formatAnticipation?: FormatAnticipationConfig;
69
+ codeHighlighting?: CodeHighlightingMode;
70
+ liveCodeHighlighting?: boolean;
71
+ liveTokenization?: boolean;
72
+ emitHighlightTokens?: boolean;
73
+ emitDiffBlocks?: boolean;
74
+ }
75
+ /**
76
+ * Metrics emitted after each flush (high-priority + low-priority batches).
77
+ */
78
+ interface RendererMetrics {
79
+ tx?: number | null;
80
+ receivedAt: number;
81
+ committedAt: number;
82
+ durationMs: number;
83
+ patchToDomMs: number;
84
+ totalPatches: number;
85
+ appliedPatches: number;
86
+ queueDepthBefore: number;
87
+ remainingQueueSize: number;
88
+ batchCount: number;
89
+ queueDelay: {
90
+ avg: number;
91
+ max: number;
92
+ p95: number;
93
+ };
94
+ priorities: Array<"high" | "low">;
95
+ workerMetrics?: PatchMetrics;
96
+ adaptiveBudget?: AdaptiveBudgetState;
97
+ flush: PatchFlushResult;
98
+ }
99
+ interface RendererStateSnapshot {
100
+ blocks: ReadonlyArray<Block>;
101
+ queueDepth: number;
102
+ pendingBatches: number;
103
+ isPaused: boolean;
104
+ workerReady: boolean;
105
+ rendererVersion: number;
106
+ store: RendererStore;
107
+ lastMetrics: RendererMetrics | null;
108
+ mdxHydration?: MdxHydrationSummary & {
109
+ pending: number;
110
+ };
111
+ }
112
+ interface StreamingMarkdownHandle {
113
+ pause(): void;
114
+ resume(): void;
115
+ restart(): void;
116
+ finalize(): void;
117
+ append(text: string): void;
118
+ setCredits(value: number): void;
119
+ flushPending(): PatchFlushResult | null;
120
+ waitForIdle(): Promise<void>;
121
+ onFlush(listener: (result: PatchFlushResult) => void): () => void;
122
+ getState(): RendererStateSnapshot;
123
+ getPatchHistory(limit?: number): ReadonlyArray<RendererMetrics>;
124
+ }
125
+ type StreamingCaret = "block" | "circle" | string | false;
126
+ type LinkSafetyCheck = (url: string) => boolean | Promise<boolean>;
127
+ type LinkSafetyConfig = {
128
+ enabled?: boolean;
129
+ onLinkCheck?: LinkSafetyCheck;
130
+ renderModal?: (props: LinkSafetyModalProps) => React.ReactNode;
131
+ };
132
+ interface StreamingMarkdownProps {
133
+ text?: string;
134
+ stream?: AsyncIterable<string>;
135
+ worker?: Worker | URL | (() => Worker) | string;
136
+ managedWorker?: boolean;
137
+ prewarmLangs?: string[];
138
+ features?: StreamingFeatureFlags;
139
+ components?: Partial<BlockComponents>;
140
+ tableElements?: Partial<TableElements>;
141
+ htmlElements?: Partial<HtmlElements>;
142
+ mdxComponents?: Record<string, React.ComponentType<unknown>>;
143
+ inlineComponents?: Partial<InlineComponents>;
144
+ scheduling?: StreamingSchedulerOptions;
145
+ mdxCompileMode?: "server" | "worker";
146
+ mdxHydration?: MdxHydrationOptions;
147
+ onMetrics?: (metrics: RendererMetrics) => void;
148
+ onError?: (error: Error) => void;
149
+ className?: string;
150
+ style?: React.CSSProperties;
151
+ caret?: StreamingCaret;
152
+ linkSafety?: LinkSafetyConfig;
153
+ deferHeavyBlocks?: boolean | DeferredRenderConfig;
154
+ }
155
+ declare const StreamingMarkdown: React.ForwardRefExoticComponent<StreamingMarkdownProps & React.RefAttributes<StreamingMarkdownHandle>>;
156
+
157
+ export { type DeferredRenderConfig as D, type LinkSafetyCheck as L, type MdxHydrationOptions as M, type RendererMetrics as R, type StreamingSchedulerOptions as S, DeferredRenderContext as a, type StreamingFeatureFlags as b, type RendererStateSnapshot as c, type StreamingMarkdownHandle as d, type StreamingCaret as e, type LinkSafetyConfig as f, type StreamingMarkdownProps as g, StreamingMarkdown as h };