@kubb/renderer-jsx 5.0.0-beta.2 → 5.0.0-beta.21

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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { n as __name } from "./chunk-Bb7HlUDG.js";
2
- import { a as JSDoc, h as KubbReactNode, m as KubbReactElement, o as Key } from "./types-nAFMiWFw.js";
2
+ import { a as JSDoc, h as KubbReactNode, m as KubbReactElement, o as Key } from "./types-D3-ni438.js";
3
3
  import { ExportNode, FileNode, ImportNode, SourceNode } from "@kubb/ast";
4
4
  import * as _$react from "react";
5
5
 
@@ -519,78 +519,65 @@ declare namespace Type {
519
519
  }
520
520
  //#endregion
521
521
  //#region src/createRenderer.d.ts
522
- type Options = {
523
- /**
524
- * Print each render result to the console for debugging.
525
- * Useful when diagnosing output differences between renders.
526
- * @default false
527
- */
528
- debug?: boolean;
529
- };
530
522
  /**
531
- * The renderer instance returned by {@link createRenderer}.
532
- */
533
- type Renderer = {
534
- /**
535
- * Render a JSX element tree and collect the resulting {@link FileNode} entries.
536
- * Resolves once all synchronous render work (including React's flush) is done.
537
- */
538
- render(Element: KubbReactElement): Promise<void>;
539
- /**
540
- * Tear down the renderer and release all React resources.
541
- * Pass an `Error` to signal an abnormal shutdown.
542
- */
543
- unmount(error?: Error | number | null): void;
544
- /**
545
- * The {@link FileNode} entries collected from the most recent `render` call.
546
- */
547
- files: Array<FileNode>;
548
- };
549
- /**
550
- * Create a Kubb JSX renderer.
523
+ * Renderer factory for generators that produce JSX output.
551
524
  *
552
- * The renderer converts a React JSX element tree built from the components in this
553
- * package into an array of {@link FileNode} entries representing the generated files.
525
+ * Pass as the `renderer` property of `defineGenerator`. Core drives rendering
526
+ * without a hard dependency on `@kubb/renderer-jsx`.
554
527
  *
555
- * @example Basic usage
528
+ * @example
556
529
  * ```ts
557
- * import { createRenderer, File } from '@kubb/renderer-jsx'
558
- *
559
- * const renderer = createRenderer()
560
- * await renderer.render(
561
- * <File baseName="pet.ts" path="src/models/pet.ts">
562
- * <File.Source name="Pet" isExportable isIndexable>
563
- * {`export type Pet = { id: number; name: string }`}
564
- * </File.Source>
565
- * </File>
566
- * )
567
- * console.log(renderer.files) // [FileNode]
568
- * renderer.unmount()
530
+ * import { jsxRenderer } from '@kubb/renderer-jsx'
531
+ *
532
+ * export const myGenerator = defineGenerator<PluginTs>({
533
+ * renderer: jsxRenderer,
534
+ * schema(node, options) {
535
+ * return <File baseName="output.ts" path="src/output.ts">...</File>
536
+ * },
537
+ * })
569
538
  * ```
570
539
  */
571
- declare function createRenderer(options?: Options): Renderer;
540
+ declare const jsxRenderer: () => {
541
+ render(element: KubbReactElement): Promise<void>;
542
+ readonly files: FileNode[];
543
+ dispose(): void;
544
+ unmount(error?: Error | number | null): void;
545
+ [Symbol.dispose](): void;
546
+ };
572
547
  /**
573
- * A renderer factory for generators that produce JSX output.
548
+ * Lightweight renderer factory with no React fiber, scheduler, or work loop.
574
549
  *
575
- * Pass this as the `renderer` property of a `defineGenerator` call so that
576
- * core can render the JSX element tree returned by your generator methods
577
- * without a hard dependency on `@kubb/renderer-jsx`.
550
+ * Walks the JSX element tree in a single recursive pass. All components must be
551
+ * pure functions; hooks and class components are not supported. Drop-in
552
+ * replacement for {@link jsxRenderer} at approximately 2–4× the speed.
578
553
  *
579
- * @example
554
+ * @example Drop-in replacement
580
555
  * ```ts
581
- * import { jsxRenderer } from '@kubb/renderer-jsx'
582
- * import { defineGenerator } from '@kubb/core'
556
+ * import { jsxRendererSync } from '@kubb/renderer-jsx'
583
557
  *
584
558
  * export const myGenerator = defineGenerator<PluginTs>({
585
- * name: 'my-generator',
586
- * renderer: jsxRenderer,
559
+ * renderer: jsxRendererSync,
587
560
  * schema(node, options) {
588
561
  * return <File baseName="output.ts" path="src/output.ts">...</File>
589
562
  * },
590
563
  * })
591
564
  * ```
565
+ *
566
+ * @example Stream files as they are produced
567
+ * ```ts
568
+ * for await (const file of jsxRendererSync().stream(element)) {
569
+ * await writeFile(file)
570
+ * }
571
+ * ```
592
572
  */
593
- declare const jsxRenderer: () => Renderer;
573
+ declare const jsxRendererSync: () => {
574
+ render(element: KubbReactElement): Promise<void>;
575
+ readonly files: FileNode[];
576
+ stream(element: KubbReactElement): Generator<FileNode>;
577
+ dispose(): void;
578
+ unmount(_error?: Error | number | null): void;
579
+ [Symbol.dispose](): void;
580
+ };
594
581
  //#endregion
595
- export { Const, File, Function, Jsx, Root, Type, createContext, createRenderer, inject, jsxRenderer, provide, unprovide };
582
+ export { Const, File, Function, Jsx, Root, Type, createContext, inject, jsxRenderer, jsxRendererSync, provide, unprovide };
596
583
  //# sourceMappingURL=index.d.ts.map