ai-props 2.1.3 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/.dev.vars +2 -0
  2. package/.turbo/turbo-build.log +1 -1
  3. package/CHANGELOG.md +20 -0
  4. package/README.md +2 -0
  5. package/dist/ai.d.ts.map +1 -1
  6. package/dist/ai.js +4 -4
  7. package/dist/ai.js.map +1 -1
  8. package/dist/cascade.d.ts +329 -0
  9. package/dist/cascade.d.ts.map +1 -0
  10. package/dist/cascade.js +522 -0
  11. package/dist/cascade.js.map +1 -0
  12. package/dist/client.d.ts +233 -0
  13. package/dist/client.d.ts.map +1 -0
  14. package/dist/client.js +191 -0
  15. package/dist/client.js.map +1 -0
  16. package/dist/durable-cascade.d.ts +280 -0
  17. package/dist/durable-cascade.d.ts.map +1 -0
  18. package/dist/durable-cascade.js +469 -0
  19. package/dist/durable-cascade.js.map +1 -0
  20. package/dist/event-bridge.d.ts +257 -0
  21. package/dist/event-bridge.d.ts.map +1 -0
  22. package/dist/event-bridge.js +317 -0
  23. package/dist/event-bridge.js.map +1 -0
  24. package/dist/generate.d.ts.map +1 -1
  25. package/dist/generate.js +12 -6
  26. package/dist/generate.js.map +1 -1
  27. package/dist/hoc.d.ts.map +1 -1
  28. package/dist/hoc.js +13 -13
  29. package/dist/hoc.js.map +1 -1
  30. package/dist/hono-jsx.d.ts +208 -0
  31. package/dist/hono-jsx.d.ts.map +1 -0
  32. package/dist/hono-jsx.js +459 -0
  33. package/dist/hono-jsx.js.map +1 -0
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +2 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/mdx-types.d.ts +152 -0
  39. package/dist/mdx-types.d.ts.map +1 -0
  40. package/dist/mdx-types.js +9 -0
  41. package/dist/mdx-types.js.map +1 -0
  42. package/dist/mdx-utils.d.ts +106 -0
  43. package/dist/mdx-utils.d.ts.map +1 -0
  44. package/dist/mdx-utils.js +384 -0
  45. package/dist/mdx-utils.js.map +1 -0
  46. package/dist/mdx.d.ts +230 -0
  47. package/dist/mdx.d.ts.map +1 -0
  48. package/dist/mdx.js +820 -0
  49. package/dist/mdx.js.map +1 -0
  50. package/dist/rpc.d.ts +313 -0
  51. package/dist/rpc.d.ts.map +1 -0
  52. package/dist/rpc.js +359 -0
  53. package/dist/rpc.js.map +1 -0
  54. package/dist/streaming.d.ts +199 -0
  55. package/dist/streaming.d.ts.map +1 -0
  56. package/dist/streaming.js +402 -0
  57. package/dist/streaming.js.map +1 -0
  58. package/dist/validate.d.ts.map +1 -1
  59. package/dist/validate.js +11 -13
  60. package/dist/validate.js.map +1 -1
  61. package/dist/worker.d.ts +270 -0
  62. package/dist/worker.d.ts.map +1 -0
  63. package/dist/worker.js +405 -0
  64. package/dist/worker.js.map +1 -0
  65. package/package.json +39 -13
  66. package/src/ai.ts +12 -31
  67. package/src/cascade.ts +795 -0
  68. package/src/client.ts +440 -0
  69. package/src/durable-cascade.ts +743 -0
  70. package/src/event-bridge.ts +478 -0
  71. package/src/generate.ts +14 -12
  72. package/src/hoc.ts +15 -19
  73. package/src/hono-jsx.ts +675 -0
  74. package/src/index.ts +30 -0
  75. package/src/mdx-types.ts +169 -0
  76. package/src/mdx-utils.ts +437 -0
  77. package/src/mdx.ts +1008 -0
  78. package/src/rpc.ts +614 -0
  79. package/src/streaming.ts +618 -0
  80. package/src/validate.ts +15 -29
  81. package/src/worker.ts +547 -0
  82. package/test/cascade.test.ts +338 -0
  83. package/test/durable-cascade.test.ts +319 -0
  84. package/test/event-bridge.test.ts +351 -0
  85. package/test/generate.test.ts +6 -16
  86. package/test/mdx.test.ts +817 -0
  87. package/test/worker/capnweb-rpc.test.ts +1084 -0
  88. package/test/worker/full-flow.integration.test.ts +1463 -0
  89. package/test/worker/hono-jsx.test.ts +1258 -0
  90. package/test/worker/mdx-parsing.test.ts +1148 -0
  91. package/test/worker/setup.ts +56 -0
  92. package/test/worker.test.ts +595 -0
  93. package/tsconfig.json +2 -1
  94. package/vitest.config.js +6 -0
  95. package/vitest.config.ts +15 -1
  96. package/vitest.workers.config.ts +58 -0
  97. package/wrangler.jsonc +27 -0
  98. package/LICENSE +0 -21
  99. package/src/ai.js +0 -198
  100. package/src/cache.js +0 -182
  101. package/src/generate.js +0 -220
  102. package/src/hoc.js +0 -235
  103. package/src/index.js +0 -20
  104. package/src/types.js +0 -6
  105. package/src/validate.js +0 -252
@@ -0,0 +1,459 @@
1
+ /**
2
+ * hono/jsx integration for AI-powered props with hydration and streaming
3
+ *
4
+ * This module provides:
5
+ * - Hydration data collection during server render
6
+ * - Streaming render support with hono/jsx
7
+ * - AI-powered component prop generation
8
+ * - Context-aware rendering with Suspense support
9
+ *
10
+ * Bead: aip-fxpy (tests), aip-z57t (implementation)
11
+ *
12
+ * @packageDocumentation
13
+ */
14
+ import { generateProps, mergeWithGenerated } from './generate.js';
15
+ // ============================================================================
16
+ // Global hydration context (for useHydration hook simulation)
17
+ // ============================================================================
18
+ let globalHydrationContext = null;
19
+ // ============================================================================
20
+ // Hydration Data Collection
21
+ // ============================================================================
22
+ /**
23
+ * Create hydration data with the toJSON method
24
+ */
25
+ function createHydrationData(components, tree) {
26
+ return {
27
+ components,
28
+ tree,
29
+ toJSON() {
30
+ return serializeHydrationData(this);
31
+ },
32
+ };
33
+ }
34
+ /**
35
+ * Collect hydration data from a component render
36
+ *
37
+ * @param component - Component function to render
38
+ * @param props - Props to pass to component
39
+ * @returns Hydration data collected during render
40
+ */
41
+ export async function collectHydrationData(component, props) {
42
+ // Create a hydration context
43
+ const ctx = createHydrationContext();
44
+ // Store global context for nested components
45
+ const prevContext = globalHydrationContext;
46
+ globalHydrationContext = ctx;
47
+ try {
48
+ // Get component name
49
+ const componentName = component.name || 'Anonymous';
50
+ // Register the component
51
+ ctx.register(componentName, props);
52
+ // Render the component (this might trigger nested registrations)
53
+ await component(props);
54
+ // Return collected data
55
+ return ctx.getData();
56
+ }
57
+ finally {
58
+ // Restore previous context
59
+ globalHydrationContext = prevContext;
60
+ }
61
+ }
62
+ /**
63
+ * Create a hydration context for tracking component renders
64
+ *
65
+ * @returns New hydration context
66
+ */
67
+ export function createHydrationContext() {
68
+ const components = new Map();
69
+ const tree = [];
70
+ let idCounter = 0;
71
+ return {
72
+ register(componentName, props) {
73
+ const id = `${componentName}-${idCounter++}`;
74
+ components.set(componentName, props);
75
+ const node = {
76
+ id,
77
+ component: componentName,
78
+ props,
79
+ children: [],
80
+ };
81
+ tree.push(node);
82
+ return id;
83
+ },
84
+ getData() {
85
+ return createHydrationData(new Map(components), [...tree]);
86
+ },
87
+ clear() {
88
+ components.clear();
89
+ tree.length = 0;
90
+ idCounter = 0;
91
+ },
92
+ };
93
+ }
94
+ /**
95
+ * Serialize hydration data to JSON string
96
+ *
97
+ * @param data - Hydration data to serialize
98
+ * @returns JSON string safe for script embedding
99
+ */
100
+ export function serializeHydrationData(data) {
101
+ // Convert Map to object for serialization
102
+ const componentsObj = {};
103
+ // Use a WeakSet to detect circular references
104
+ const seen = new WeakSet();
105
+ function sanitizeValue(value) {
106
+ if (value === null || value === undefined) {
107
+ return value;
108
+ }
109
+ if (typeof value === 'object') {
110
+ if (seen.has(value)) {
111
+ return '[Circular]';
112
+ }
113
+ seen.add(value);
114
+ if (Array.isArray(value)) {
115
+ return value.map(sanitizeValue);
116
+ }
117
+ const result = {};
118
+ for (const [k, v] of Object.entries(value)) {
119
+ result[k] = sanitizeValue(v);
120
+ }
121
+ return result;
122
+ }
123
+ return value;
124
+ }
125
+ for (const [key, value] of data.components) {
126
+ componentsObj[key] = sanitizeValue(value);
127
+ }
128
+ const serializable = {
129
+ components: componentsObj,
130
+ tree: data.tree.map((node) => ({
131
+ id: node.id,
132
+ component: node.component,
133
+ props: sanitizeValue(node.props),
134
+ children: node.children,
135
+ })),
136
+ };
137
+ let json = JSON.stringify(serializable);
138
+ // Escape script tags to prevent XSS
139
+ json = json.replace(/<script/gi, '\\u003cscript');
140
+ json = json.replace(/<\/script/gi, '\\u003c/script');
141
+ return json;
142
+ }
143
+ /**
144
+ * Provider component that enables hydration tracking for children
145
+ *
146
+ * @param props - Provider props with context and children
147
+ * @returns Rendered output with hydration tracking
148
+ */
149
+ export function HydrationProvider(props) {
150
+ // Store context globally for nested components
151
+ const prevContext = globalHydrationContext;
152
+ globalHydrationContext = props.context;
153
+ try {
154
+ // Return children - in a real JSX environment this would render them
155
+ return props.children;
156
+ }
157
+ finally {
158
+ // Note: In real JSX, we'd restore on unmount, not here
159
+ // For our purposes, we keep it set for the duration
160
+ globalHydrationContext = prevContext;
161
+ }
162
+ }
163
+ /**
164
+ * Hook to access hydration context from within a component
165
+ *
166
+ * @returns Current hydration context
167
+ */
168
+ export function useHydration() {
169
+ if (!globalHydrationContext) {
170
+ // Return a no-op context if not in a HydrationProvider
171
+ return createHydrationContext();
172
+ }
173
+ return globalHydrationContext;
174
+ }
175
+ // ============================================================================
176
+ // Streaming Render
177
+ // ============================================================================
178
+ /**
179
+ * Render a component to a ReadableStream
180
+ *
181
+ * @param component - Component function to render
182
+ * @param props - Props to pass to component
183
+ * @param options - Streaming options
184
+ * @returns ReadableStream of rendered HTML
185
+ */
186
+ export async function renderToReadableStream(component, props, options) {
187
+ const encoder = new TextEncoder();
188
+ return new ReadableStream({
189
+ async start(controller) {
190
+ try {
191
+ // Create hydration context if needed
192
+ const ctx = options?.includeHydration ? createHydrationContext() : null;
193
+ if (ctx) {
194
+ globalHydrationContext = ctx;
195
+ }
196
+ // Render the component
197
+ let content;
198
+ try {
199
+ content = await component(props);
200
+ }
201
+ catch (error) {
202
+ if (options?.onError && error instanceof Error) {
203
+ content = options.onError(error);
204
+ }
205
+ else {
206
+ throw error;
207
+ }
208
+ }
209
+ // Enqueue the content in chunks for streaming behavior
210
+ const chunkSize = 1024;
211
+ for (let i = 0; i < content.length; i += chunkSize) {
212
+ const chunk = content.slice(i, i + chunkSize);
213
+ controller.enqueue(encoder.encode(chunk));
214
+ }
215
+ // Add hydration script if requested
216
+ if (options?.includeHydration && ctx) {
217
+ const componentName = component.name || 'Anonymous';
218
+ ctx.register(componentName, props);
219
+ const hydrationData = ctx.getData();
220
+ const hydrationScript = `<script>window.__HYDRATION_DATA__=${serializeHydrationData(hydrationData)}</script>`;
221
+ controller.enqueue(encoder.encode(hydrationScript));
222
+ }
223
+ controller.close();
224
+ }
225
+ catch (error) {
226
+ controller.error(error);
227
+ }
228
+ finally {
229
+ globalHydrationContext = null;
230
+ }
231
+ },
232
+ });
233
+ }
234
+ /**
235
+ * Create a streaming Response from a component
236
+ *
237
+ * @param component - Component function to render
238
+ * @param props - Props to pass to component
239
+ * @param options - Streaming options
240
+ * @returns Response with streaming body
241
+ */
242
+ export async function streamJSXResponse(component, props, options) {
243
+ const stream = await renderToReadableStream(component, props, options);
244
+ const headers = new Headers({
245
+ 'Content-Type': 'text/html; charset=utf-8',
246
+ ...options?.headers,
247
+ });
248
+ // Don't set Content-Length for streaming responses
249
+ if (options?.streaming) {
250
+ // Transfer-Encoding is typically set automatically by the runtime
251
+ }
252
+ return new Response(stream, {
253
+ status: 200,
254
+ headers,
255
+ });
256
+ }
257
+ /**
258
+ * Create a reusable streaming renderer with configuration
259
+ *
260
+ * @param options - Renderer options
261
+ * @returns Streaming renderer instance
262
+ */
263
+ export function createStreamingRenderer(options) {
264
+ return {
265
+ async render(component, props) {
266
+ const encoder = new TextEncoder();
267
+ return new ReadableStream({
268
+ async start(controller) {
269
+ try {
270
+ // Create hydration context
271
+ const ctx = options.includeHydration ? createHydrationContext() : null;
272
+ if (ctx) {
273
+ globalHydrationContext = ctx;
274
+ }
275
+ // Render the component
276
+ const content = await component(props);
277
+ // Register for hydration data
278
+ if (ctx) {
279
+ const componentName = component.name || 'Anonymous';
280
+ ctx.register(componentName, props);
281
+ }
282
+ // Get hydration data
283
+ let hydrationJson = '';
284
+ if (options.includeHydration && ctx) {
285
+ hydrationJson = serializeHydrationData(ctx.getData());
286
+ }
287
+ // Apply shell wrapper if provided
288
+ let output;
289
+ if (options.shell) {
290
+ // When using shell, pass hydration data with __HYDRATION_DATA__ prefix
291
+ // so the shell can embed it directly in a script tag
292
+ const hydrationScript = hydrationJson
293
+ ? `window.__HYDRATION_DATA__=${hydrationJson}`
294
+ : '';
295
+ output = options.shell(content, hydrationScript);
296
+ }
297
+ else {
298
+ output = content;
299
+ if (options.includeHydration && hydrationJson) {
300
+ output += `<script>window.__HYDRATION_DATA__=${hydrationJson}</script>`;
301
+ }
302
+ }
303
+ // Prepend doctype if provided
304
+ if (options.doctype) {
305
+ output = options.doctype + '\n' + output;
306
+ }
307
+ // Stream in chunks
308
+ const chunkSize = 1024;
309
+ for (let i = 0; i < output.length; i += chunkSize) {
310
+ const chunk = output.slice(i, i + chunkSize);
311
+ controller.enqueue(encoder.encode(chunk));
312
+ }
313
+ controller.close();
314
+ }
315
+ catch (error) {
316
+ controller.error(error);
317
+ }
318
+ finally {
319
+ globalHydrationContext = null;
320
+ }
321
+ },
322
+ });
323
+ },
324
+ };
325
+ }
326
+ // ============================================================================
327
+ // AI Component Creation
328
+ // ============================================================================
329
+ /**
330
+ * Create a component with AI-powered prop generation
331
+ *
332
+ * @param options - Component options including schema and render function
333
+ * @returns AI-enhanced component function
334
+ */
335
+ export function createAIComponent(options) {
336
+ const { name, schema, render, fallback, progressive } = options;
337
+ const aiComponent = async (props) => {
338
+ const { context, ...partialProps } = props;
339
+ // Check which props are missing
340
+ const schemaKeys = Object.keys(schema);
341
+ const providedKeys = Object.keys(partialProps);
342
+ const missingKeys = schemaKeys.filter((k) => !providedKeys.includes(k));
343
+ let finalProps;
344
+ if (missingKeys.length === 0) {
345
+ // All props provided, no generation needed
346
+ finalProps = partialProps;
347
+ }
348
+ else {
349
+ // Generate missing props
350
+ try {
351
+ // Build schema for only missing props
352
+ const missingSchema = {};
353
+ for (const key of missingKeys) {
354
+ const schemaValue = schema[key];
355
+ if (schemaValue !== undefined) {
356
+ missingSchema[key] = schemaValue;
357
+ }
358
+ }
359
+ const result = await generateProps({
360
+ schema: missingSchema,
361
+ context: context || partialProps,
362
+ });
363
+ finalProps = {
364
+ ...result.props,
365
+ ...partialProps,
366
+ };
367
+ }
368
+ catch (error) {
369
+ // Use fallback on error
370
+ if (fallback) {
371
+ finalProps = {
372
+ ...fallback,
373
+ ...partialProps,
374
+ };
375
+ }
376
+ else {
377
+ throw error;
378
+ }
379
+ }
380
+ }
381
+ // Render the component
382
+ return render(finalProps);
383
+ };
384
+ // Attach schema and metadata
385
+ aiComponent.schema = schema;
386
+ aiComponent.displayName = `AI(${name})`;
387
+ return aiComponent;
388
+ }
389
+ /**
390
+ * Wrap an existing component with AI prop generation
391
+ *
392
+ * @param component - Component function to wrap
393
+ * @param options - AI props options
394
+ * @returns Wrapped component with AI props
395
+ */
396
+ export function withAIProps(component, options) {
397
+ const { schema, fallback } = options;
398
+ const wrappedComponent = async (props) => {
399
+ const { context, ...partialProps } = props;
400
+ // Check which props are missing
401
+ const schemaKeys = Object.keys(schema);
402
+ const providedKeys = Object.keys(partialProps);
403
+ const missingKeys = schemaKeys.filter((k) => !providedKeys.includes(k));
404
+ let finalProps;
405
+ if (missingKeys.length === 0) {
406
+ // All props provided
407
+ finalProps = partialProps;
408
+ }
409
+ else {
410
+ // Generate missing props
411
+ try {
412
+ const missingSchema = {};
413
+ for (const key of missingKeys) {
414
+ const schemaValue = schema[key];
415
+ if (schemaValue !== undefined) {
416
+ missingSchema[key] = schemaValue;
417
+ }
418
+ }
419
+ const result = await generateProps({
420
+ schema: missingSchema,
421
+ context: context || partialProps,
422
+ });
423
+ finalProps = {
424
+ ...result.props,
425
+ ...partialProps,
426
+ };
427
+ }
428
+ catch (error) {
429
+ if (fallback) {
430
+ finalProps = {
431
+ ...fallback,
432
+ ...partialProps,
433
+ };
434
+ }
435
+ else {
436
+ throw error;
437
+ }
438
+ }
439
+ }
440
+ return component(finalProps);
441
+ };
442
+ // Preserve displayName
443
+ const originalName = component.displayName || component.name || 'Component';
444
+ wrappedComponent.schema = schema;
445
+ wrappedComponent.displayName = `withAIProps(${originalName})`;
446
+ return wrappedComponent;
447
+ }
448
+ /**
449
+ * Provider component for AI props configuration
450
+ *
451
+ * @param props - Provider props with config and children
452
+ * @returns Rendered output with AI props context
453
+ */
454
+ export function AIPropsProvider(props) {
455
+ // Store configuration globally (in a real implementation, use React Context)
456
+ // For now, we just pass through children
457
+ return props.children;
458
+ }
459
+ //# sourceMappingURL=hono-jsx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-jsx.js","sourceRoot":"","sources":["../src/hono-jsx.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -12,4 +12,5 @@ export { generateProps, getPropsSync, prefetchProps, generatePropsMany, mergeWit
12
12
  export { MemoryPropsCache, LRUPropsCache, createCacheKey, getDefaultCache, configureCache, clearCache, DEFAULT_CACHE_TTL, } from './cache.js';
13
13
  export { createPropsEnhancer, createAsyncPropsProvider, createPropsTransformer, createConditionalGenerator, createBatchGenerator, type WithAIPropsOptions, } from './hoc.js';
14
14
  export { validateProps, hasRequiredProps, getMissingProps, isComplete, getMissingFromSchema, sanitizeProps, mergeWithDefaults, createValidator, assertValidProps, } from './validate.js';
15
+ export { parseMDX, extractComponentSchemas, renderMDXWithProps, streamMDXWithProps, createMDXPropsGenerator, compileMDX, clearMDXCache, getMDXCacheSize, configureMDXCache, getMDXCacheStats, invalidateMDXCacheByTag, cleanupMDXCache, type ParsedMDX, type ComponentSchemas, type MDXPropsGeneratorOptions, type MDXPropsGenerator, type RenderMDXOptions, type StreamMDXOptions, type CompileMDXOptions, type CompiledMDXFunction, type MDXCacheEntry, type MDXParseError, type CacheInvalidationStrategy, type MDXCacheOptions, type MDXCacheStats, type ParseMDXOptions, } from './mdx.js';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,cAAc,YAAY,CAAA;AAG1B,OAAO,EACL,EAAE,EACF,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,WAAW,GACZ,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,KAAK,kBAAkB,GACxB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,cAAc,YAAY,CAAA;AAG1B,OAAO,EACL,EAAE,EACF,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,WAAW,GACZ,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,KAAK,kBAAkB,GACxB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,QAAQ,EACR,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,UAAU,EACV,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,UAAU,CAAA"}
package/dist/index.js CHANGED
@@ -18,4 +18,6 @@ export { MemoryPropsCache, LRUPropsCache, createCacheKey, getDefaultCache, confi
18
18
  export { createPropsEnhancer, createAsyncPropsProvider, createPropsTransformer, createConditionalGenerator, createBatchGenerator, } from './hoc.js';
19
19
  // Export validation utilities
20
20
  export { validateProps, hasRequiredProps, getMissingProps, isComplete, getMissingFromSchema, sanitizeProps, mergeWithDefaults, createValidator, assertValidProps, } from './validate.js';
21
+ // Export MDX utilities
22
+ export { parseMDX, extractComponentSchemas, renderMDXWithProps, streamMDXWithProps, createMDXPropsGenerator, compileMDX, clearMDXCache, getMDXCacheSize, configureMDXCache, getMDXCacheStats, invalidateMDXCacheByTag, cleanupMDXCache, } from './mdx.js';
21
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAe;AACf,cAAc,YAAY,CAAA;AAE1B,4BAA4B;AAC5B,OAAO,EACL,EAAE,EACF,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAEhB,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,WAAW,GACZ,MAAM,eAAe,CAAA;AAEtB,yBAAyB;AACzB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAEnB,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,GAErB,MAAM,UAAU,CAAA;AAEjB,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAe;AACf,cAAc,YAAY,CAAA;AAE1B,4BAA4B;AAC5B,OAAO,EACL,EAAE,EACF,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAEhB,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,WAAW,GACZ,MAAM,eAAe,CAAA;AAEtB,yBAAyB;AACzB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAEnB,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,GAErB,MAAM,UAAU,CAAA;AAEjB,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAA;AAEtB,uBAAuB;AACvB,OAAO,EACL,QAAQ,EACR,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,UAAU,EACV,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,GAehB,MAAM,UAAU,CAAA"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Type definitions for MDX integration
3
+ *
4
+ * Shared types used across MDX parsing, props generation, and rendering.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ /**
9
+ * Result of parsing MDX content
10
+ */
11
+ export interface ParsedMDX {
12
+ /** Original MDX content */
13
+ content: string;
14
+ /** Body content without frontmatter */
15
+ body: string;
16
+ /** Parsed frontmatter data */
17
+ frontmatter: Record<string, unknown>;
18
+ /** List of component names found in MDX */
19
+ components: string[];
20
+ /** Props extracted from components */
21
+ componentProps: Record<string, Record<string, unknown>>;
22
+ }
23
+ /**
24
+ * Component schema definitions
25
+ * Each component maps to an object schema (key -> description string)
26
+ */
27
+ export type ComponentSchemas = Record<string, Record<string, string>>;
28
+ /**
29
+ * Options for creating an MDX props generator
30
+ */
31
+ export interface MDXPropsGeneratorOptions {
32
+ /** Schemas for components */
33
+ schemas: ComponentSchemas;
34
+ /** Whether to cache generated props */
35
+ cache?: boolean;
36
+ /** Model to use for generation */
37
+ model?: string;
38
+ /** Maximum parallel generation requests (default: 3) */
39
+ maxParallel?: number;
40
+ }
41
+ /**
42
+ * MDX props generator instance
43
+ */
44
+ export interface MDXPropsGenerator {
45
+ /** Generate props for components in MDX */
46
+ generate: (mdx: string) => Promise<Record<string, Record<string, unknown>>>;
47
+ /** Clear the generator's cache */
48
+ clearCache?: () => void;
49
+ }
50
+ /**
51
+ * Options for rendering MDX with props
52
+ */
53
+ export interface RenderMDXOptions {
54
+ /** Custom component renderers */
55
+ components?: Record<string, (props: Record<string, unknown>) => string>;
56
+ /** Enable streaming render */
57
+ stream?: boolean;
58
+ }
59
+ /**
60
+ * Options for compiling MDX
61
+ */
62
+ export interface CompileMDXOptions {
63
+ /** Custom component map */
64
+ components?: Record<string, (props: Record<string, unknown>) => string>;
65
+ }
66
+ /**
67
+ * Compiled MDX function type
68
+ */
69
+ export interface CompiledMDXFunction {
70
+ (props: Record<string, Record<string, unknown>>): string;
71
+ /** Exported metadata from MDX */
72
+ metadata?: Record<string, unknown>;
73
+ }
74
+ /**
75
+ * Options for streaming MDX rendering
76
+ */
77
+ export interface StreamMDXOptions {
78
+ /** Custom component renderers */
79
+ components?: Record<string, (props: Record<string, unknown>) => string>;
80
+ }
81
+ /**
82
+ * Cache entry for parsed MDX
83
+ */
84
+ export interface MDXCacheEntry {
85
+ /** Content hash */
86
+ hash: string;
87
+ /** Parsed MDX result */
88
+ parsed: ParsedMDX;
89
+ /** Timestamp of cache entry */
90
+ timestamp: number;
91
+ }
92
+ /**
93
+ * Cache entry for generated props
94
+ */
95
+ export interface PropsCacheEntry {
96
+ /** Cache key */
97
+ key: string;
98
+ /** Generated props */
99
+ props: Record<string, unknown>;
100
+ /** Timestamp of cache entry */
101
+ timestamp: number;
102
+ /** Content hash used for generation */
103
+ contentHash?: string;
104
+ /** Tags for invalidation */
105
+ tags?: string[];
106
+ }
107
+ /**
108
+ * MDX parse error with location information
109
+ */
110
+ export interface MDXParseError extends Error {
111
+ /** Line number where error occurred (1-indexed) */
112
+ line?: number;
113
+ /** Column number where error occurred (1-indexed) */
114
+ column?: number;
115
+ /** The problematic content */
116
+ source?: string;
117
+ }
118
+ /**
119
+ * Cache invalidation strategy type
120
+ */
121
+ export type CacheInvalidationStrategy = 'ttl' | 'lru' | 'tag' | 'manual';
122
+ /**
123
+ * Options for MDX cache configuration
124
+ */
125
+ export interface MDXCacheOptions {
126
+ /** Maximum cache size (default: 100) */
127
+ maxSize?: number;
128
+ /** Time-to-live in milliseconds (default: 5 minutes) */
129
+ ttl?: number;
130
+ /** Invalidation strategy (default: 'lru') */
131
+ strategy?: CacheInvalidationStrategy;
132
+ /** Enable automatic cleanup interval */
133
+ autoCleanup?: boolean;
134
+ /** Cleanup interval in milliseconds (default: 60 seconds) */
135
+ cleanupInterval?: number;
136
+ }
137
+ /**
138
+ * MDX cache statistics
139
+ */
140
+ export interface MDXCacheStats {
141
+ /** Number of cache hits */
142
+ hits: number;
143
+ /** Number of cache misses */
144
+ misses: number;
145
+ /** Current cache size */
146
+ size: number;
147
+ /** Maximum cache size */
148
+ maxSize: number;
149
+ /** Cache hit ratio */
150
+ hitRatio: number;
151
+ }
152
+ //# sourceMappingURL=mdx-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdx-types.d.ts","sourceRoot":"","sources":["../src/mdx-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Type definitions for MDX integration
3
+ *
4
+ * Shared types used across MDX parsing, props generation, and rendering.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=mdx-types.js.map