@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 +15 -39
- package/dist/index.d.ts +8 -53
- package/dist/index.js +16 -39
- package/package.json +2 -2
- package/src/Renderer.ts +0 -2
- package/src/Runtime.tsx +2 -2
- package/src/createRenderer.tsx +14 -69
- package/src/dom.ts +1 -3
- package/src/index.ts +1 -1
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 = () =>
|
|
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
|
|
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: () =>
|
|
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,
|
|
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 = () =>
|
|
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,
|
|
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.
|
|
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.
|
|
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
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 '
|
|
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
|
package/src/createRenderer.tsx
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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 {
|
|
8
|
+
export { jsxRenderer } from './createRenderer.tsx'
|