@kubb/renderer-jsx 5.0.0-beta.7 → 5.0.0-beta.8

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.cjs CHANGED
@@ -18078,7 +18078,7 @@ var Runtime = class {
18078
18078
  nodes = [];
18079
18079
  #container;
18080
18080
  #rootNode;
18081
- constructor(options) {
18081
+ constructor(options = {}) {
18082
18082
  this.#options = options;
18083
18083
  this.#rootNode = createNode("kubb-root");
18084
18084
  this.#rootNode.onRender = this.onRender;
@@ -18153,42 +18153,6 @@ var Runtime = class {
18153
18153
  //#endregion
18154
18154
  //#region src/createRenderer.tsx
18155
18155
  /**
18156
- * Create a Kubb JSX renderer.
18157
- *
18158
- * The renderer converts a React JSX element tree — built from the components in this
18159
- * package — into an array of {@link FileNode} entries representing the generated files.
18160
- *
18161
- * @example Basic usage
18162
- * ```ts
18163
- * import { createRenderer, File } from '@kubb/renderer-jsx'
18164
- *
18165
- * const renderer = createRenderer()
18166
- * await renderer.render(
18167
- * <File baseName="pet.ts" path="src/models/pet.ts">
18168
- * <File.Source name="Pet" isExportable isIndexable>
18169
- * {`export type Pet = { id: number; name: string }`}
18170
- * </File.Source>
18171
- * </File>
18172
- * )
18173
- * console.log(renderer.files) // [FileNode]
18174
- * renderer.unmount()
18175
- * ```
18176
- */
18177
- function createRenderer(options = {}) {
18178
- const runtime = new Runtime(options);
18179
- return {
18180
- async render(Element) {
18181
- await runtime.render(Element);
18182
- },
18183
- get files() {
18184
- return runtime.nodes;
18185
- },
18186
- unmount(error) {
18187
- runtime.unmount(error);
18188
- }
18189
- };
18190
- }
18191
- /**
18192
18156
  * A renderer factory for generators that produce JSX output.
18193
18157
  *
18194
18158
  * Pass this as the `renderer` property of a `defineGenerator` call so that
@@ -18209,7 +18173,20 @@ function createRenderer(options = {}) {
18209
18173
  * })
18210
18174
  * ```
18211
18175
  */
18212
- const jsxRenderer = () => createRenderer();
18176
+ const jsxRenderer = () => {
18177
+ const runtime = new Runtime();
18178
+ return {
18179
+ async render(element) {
18180
+ await runtime.render(element);
18181
+ },
18182
+ get files() {
18183
+ return runtime.nodes;
18184
+ },
18185
+ unmount(error) {
18186
+ runtime.unmount(error);
18187
+ }
18188
+ };
18189
+ };
18213
18190
  //#endregion
18214
18191
  exports.Const = Const;
18215
18192
  exports.File = File;
@@ -18218,7 +18195,6 @@ exports.Jsx = Jsx;
18218
18195
  exports.Root = Root;
18219
18196
  exports.Type = Type;
18220
18197
  exports.createContext = createContext;
18221
- exports.createRenderer = createRenderer;
18222
18198
  exports.inject = inject;
18223
18199
  exports.jsxRenderer = jsxRenderer;
18224
18200
  exports.provide = provide;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { n as __name } from "./chunk-Bb7HlUDG.js";
2
2
  import { a as JSDoc, h as KubbReactNode, m as KubbReactElement, o as Key } from "./types-nAFMiWFw.js";
3
- import { ExportNode, FileNode, ImportNode, SourceNode } from "@kubb/ast";
3
+ import * as _$_kubb_ast0 from "@kubb/ast";
4
+ import { ExportNode, ImportNode, SourceNode } from "@kubb/ast";
4
5
  import * as _$react from "react";
5
6
 
6
7
  //#region ../../internals/utils/src/context.d.ts
@@ -519,56 +520,6 @@ declare namespace Type {
519
520
  }
520
521
  //#endregion
521
522
  //#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
- /**
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.
551
- *
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.
554
- *
555
- * @example Basic usage
556
- * ```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()
569
- * ```
570
- */
571
- declare function createRenderer(options?: Options): Renderer;
572
523
  /**
573
524
  * A renderer factory for generators that produce JSX output.
574
525
  *
@@ -590,7 +541,11 @@ declare function createRenderer(options?: Options): Renderer;
590
541
  * })
591
542
  * ```
592
543
  */
593
- declare const jsxRenderer: () => Renderer;
544
+ declare const jsxRenderer: () => {
545
+ render(element: KubbReactElement): Promise<void>;
546
+ readonly files: _$_kubb_ast0.FileNode[];
547
+ unmount(error?: Error | number | null): void;
548
+ };
594
549
  //#endregion
595
- export { Const, File, Function, Jsx, Root, Type, createContext, createRenderer, inject, jsxRenderer, provide, unprovide };
550
+ export { Const, File, Function, Jsx, Root, Type, createContext, inject, jsxRenderer, provide, unprovide };
596
551
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -18075,7 +18075,7 @@ var Runtime = class {
18075
18075
  nodes = [];
18076
18076
  #container;
18077
18077
  #rootNode;
18078
- constructor(options) {
18078
+ constructor(options = {}) {
18079
18079
  this.#options = options;
18080
18080
  this.#rootNode = createNode("kubb-root");
18081
18081
  this.#rootNode.onRender = this.onRender;
@@ -18150,42 +18150,6 @@ var Runtime = class {
18150
18150
  //#endregion
18151
18151
  //#region src/createRenderer.tsx
18152
18152
  /**
18153
- * Create a Kubb JSX renderer.
18154
- *
18155
- * The renderer converts a React JSX element tree — built from the components in this
18156
- * package — into an array of {@link FileNode} entries representing the generated files.
18157
- *
18158
- * @example Basic usage
18159
- * ```ts
18160
- * import { createRenderer, File } from '@kubb/renderer-jsx'
18161
- *
18162
- * const renderer = createRenderer()
18163
- * await renderer.render(
18164
- * <File baseName="pet.ts" path="src/models/pet.ts">
18165
- * <File.Source name="Pet" isExportable isIndexable>
18166
- * {`export type Pet = { id: number; name: string }`}
18167
- * </File.Source>
18168
- * </File>
18169
- * )
18170
- * console.log(renderer.files) // [FileNode]
18171
- * renderer.unmount()
18172
- * ```
18173
- */
18174
- function createRenderer(options = {}) {
18175
- const runtime = new Runtime(options);
18176
- return {
18177
- async render(Element) {
18178
- await runtime.render(Element);
18179
- },
18180
- get files() {
18181
- return runtime.nodes;
18182
- },
18183
- unmount(error) {
18184
- runtime.unmount(error);
18185
- }
18186
- };
18187
- }
18188
- /**
18189
18153
  * A renderer factory for generators that produce JSX output.
18190
18154
  *
18191
18155
  * Pass this as the `renderer` property of a `defineGenerator` call so that
@@ -18206,8 +18170,21 @@ function createRenderer(options = {}) {
18206
18170
  * })
18207
18171
  * ```
18208
18172
  */
18209
- const jsxRenderer = () => createRenderer();
18173
+ const jsxRenderer = () => {
18174
+ const runtime = new Runtime();
18175
+ return {
18176
+ async render(element) {
18177
+ await runtime.render(element);
18178
+ },
18179
+ get files() {
18180
+ return runtime.nodes;
18181
+ },
18182
+ unmount(error) {
18183
+ runtime.unmount(error);
18184
+ }
18185
+ };
18186
+ };
18210
18187
  //#endregion
18211
- export { Const, File, Function$1 as Function, Jsx, Root, Type, createContext, createRenderer, inject, jsxRenderer, provide, unprovide };
18188
+ export { Const, File, Function$1 as Function, Jsx, Root, Type, createContext, inject, jsxRenderer, provide, unprovide };
18212
18189
 
18213
18190
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/renderer-jsx",
3
- "version": "5.0.0-beta.7",
3
+ "version": "5.0.0-beta.8",
4
4
  "description": "JSX-based renderer for Kubb. Provides a custom React runtime, reconciler, and built-in components (File, Function, Type, Const) for component-based, type-safe code generation.",
5
5
  "keywords": [
6
6
  "codegen",
@@ -75,7 +75,7 @@
75
75
  "registry": "https://registry.npmjs.org/"
76
76
  },
77
77
  "dependencies": {
78
- "@kubb/ast": "5.0.0-beta.7"
78
+ "@kubb/ast": "5.0.0-beta.8"
79
79
  },
80
80
  "devDependencies": {
81
81
  "@types/react": "^19.2.14",
package/src/Renderer.ts CHANGED
@@ -178,5 +178,3 @@ export const Renderer = Reconciler({
178
178
  return null
179
179
  },
180
180
  })
181
-
182
- export type { FiberRoot } from 'react-reconciler'
package/src/Runtime.tsx CHANGED
@@ -3,7 +3,7 @@ import type { FileNode } from '@kubb/ast'
3
3
  import { ConcurrentRoot } from 'react-reconciler/constants.js'
4
4
  import { Root } from './components/Root.tsx'
5
5
  import { createNode } from './dom.ts'
6
- import type { FiberRoot } from './Renderer.ts'
6
+ import type { FiberRoot } from 'react-reconciler'
7
7
  import { Renderer } from './Renderer.ts'
8
8
  import type { DOMElement, KubbReactElement } from './types.ts'
9
9
  import { processFiles } from './utils.ts'
@@ -26,7 +26,7 @@ export class Runtime {
26
26
  readonly #container: FiberRoot
27
27
  readonly #rootNode: DOMElement
28
28
 
29
- constructor(options: Options) {
29
+ constructor(options: Options = {}) {
30
30
  this.#options = options
31
31
  this.#rootNode = createNode('kubb-root')
32
32
  this.#rootNode.onRender = this.onRender
@@ -1,74 +1,6 @@
1
- import type { FileNode } from '@kubb/ast'
2
1
  import { Runtime } from './Runtime.tsx'
3
2
  import type { KubbReactElement } from './types.ts'
4
3
 
5
- type Options = {
6
- /**
7
- * Print each render result to the console for debugging.
8
- * Useful when diagnosing output differences between renders.
9
- * @default false
10
- */
11
- debug?: boolean
12
- }
13
-
14
- /**
15
- * The renderer instance returned by {@link createRenderer}.
16
- */
17
- type Renderer = {
18
- /**
19
- * Render a JSX element tree and collect the resulting {@link FileNode} entries.
20
- * Resolves once all synchronous render work (including React's flush) is done.
21
- */
22
- render(Element: KubbReactElement): Promise<void>
23
- /**
24
- * Tear down the renderer and release all React resources.
25
- * Pass an `Error` to signal an abnormal shutdown.
26
- */
27
- unmount(error?: Error | number | null): void
28
- /**
29
- * The {@link FileNode} entries collected from the most recent `render` call.
30
- */
31
- files: Array<FileNode>
32
- }
33
-
34
- /**
35
- * Create a Kubb JSX renderer.
36
- *
37
- * The renderer converts a React JSX element tree — built from the components in this
38
- * package — into an array of {@link FileNode} entries representing the generated files.
39
- *
40
- * @example Basic usage
41
- * ```ts
42
- * import { createRenderer, File } from '@kubb/renderer-jsx'
43
- *
44
- * const renderer = createRenderer()
45
- * await renderer.render(
46
- * <File baseName="pet.ts" path="src/models/pet.ts">
47
- * <File.Source name="Pet" isExportable isIndexable>
48
- * {`export type Pet = { id: number; name: string }`}
49
- * </File.Source>
50
- * </File>
51
- * )
52
- * console.log(renderer.files) // [FileNode]
53
- * renderer.unmount()
54
- * ```
55
- */
56
- export function createRenderer(options: Options = {}): Renderer {
57
- const runtime = new Runtime(options)
58
-
59
- return {
60
- async render(Element) {
61
- await runtime.render(Element)
62
- },
63
- get files() {
64
- return runtime.nodes
65
- },
66
- unmount(error) {
67
- runtime.unmount(error)
68
- },
69
- }
70
- }
71
-
72
4
  /**
73
5
  * A renderer factory for generators that produce JSX output.
74
6
  *
@@ -90,4 +22,17 @@ export function createRenderer(options: Options = {}): Renderer {
90
22
  * })
91
23
  * ```
92
24
  */
93
- export const jsxRenderer: () => Renderer = () => createRenderer()
25
+ export const jsxRenderer = () => {
26
+ const runtime = new Runtime()
27
+ return {
28
+ async render(element: KubbReactElement) {
29
+ await runtime.render(element)
30
+ },
31
+ get files() {
32
+ return runtime.nodes
33
+ },
34
+ unmount(error?: Error | number | null) {
35
+ runtime.unmount(error)
36
+ },
37
+ }
38
+ }
package/src/dom.ts CHANGED
@@ -6,14 +6,12 @@ import type { DOMElement, DOMNode, DOMNodeAttribute, TextNode } from './types.ts
6
6
  * The element has no attributes, no children, and no parent.
7
7
  */
8
8
  export const createNode = (nodeName: string): DOMElement => {
9
- const node: DOMElement = {
9
+ return {
10
10
  nodeName: nodeName as DOMElement['nodeName'],
11
11
  attributes: new Map(),
12
12
  childNodes: [],
13
13
  parentNode: undefined,
14
14
  }
15
-
16
- return node
17
15
  }
18
16
 
19
17
  /**
package/src/index.ts CHANGED
@@ -5,4 +5,4 @@ export { Function } from './components/Function.tsx'
5
5
  export { Jsx } from './components/Jsx.tsx'
6
6
  export { Root } from './components/Root.tsx'
7
7
  export { Type } from './components/Type.tsx'
8
- export { createRenderer, jsxRenderer } from './createRenderer.tsx'
8
+ export { jsxRenderer } from './createRenderer.tsx'