@lytjs/renderer 5.0.1 → 6.0.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 (92) hide show
  1. package/README.md +371 -204
  2. package/dist/dom.cjs +12 -1
  3. package/dist/dom.cjs.map +1 -0
  4. package/dist/dom.d.cts +1 -0
  5. package/dist/dom.d.ts +1 -0
  6. package/dist/dom.mjs +3 -1
  7. package/dist/dom.mjs.map +1 -0
  8. package/dist/index.cjs +3312 -1
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.cts +1004 -0
  11. package/dist/index.d.ts +1004 -0
  12. package/dist/index.mjs +3190 -1
  13. package/dist/index.mjs.map +1 -0
  14. package/dist/ssr.cjs +310 -1
  15. package/dist/ssr.cjs.map +1 -0
  16. package/dist/ssr.d.cts +21 -0
  17. package/dist/ssr.d.ts +21 -0
  18. package/dist/ssr.mjs +308 -1
  19. package/dist/ssr.mjs.map +1 -0
  20. package/package.json +35 -58
  21. package/dist/miniapp.cjs +0 -27
  22. package/dist/miniapp.mjs +0 -27
  23. package/dist/native.cjs +0 -1
  24. package/dist/native.mjs +0 -1
  25. package/dist/types/create-renderer.d.ts +0 -20
  26. package/dist/types/create-renderer.d.ts.map +0 -1
  27. package/dist/types/dom/dom-ops.d.ts +0 -74
  28. package/dist/types/dom/dom-ops.d.ts.map +0 -1
  29. package/dist/types/dom/dom-renderer.d.ts +0 -243
  30. package/dist/types/dom/dom-renderer.d.ts.map +0 -1
  31. package/dist/types/dom/index.d.ts +0 -17
  32. package/dist/types/dom/index.d.ts.map +0 -1
  33. package/dist/types/dom/patch-events.d.ts +0 -123
  34. package/dist/types/dom/patch-events.d.ts.map +0 -1
  35. package/dist/types/dom/patch-props.d.ts +0 -118
  36. package/dist/types/dom/patch-props.d.ts.map +0 -1
  37. package/dist/types/index.d.ts +0 -36
  38. package/dist/types/index.d.ts.map +0 -1
  39. package/dist/types/miniapp/api-adapter.d.ts +0 -514
  40. package/dist/types/miniapp/api-adapter.d.ts.map +0 -1
  41. package/dist/types/miniapp/index.d.ts +0 -34
  42. package/dist/types/miniapp/index.d.ts.map +0 -1
  43. package/dist/types/miniapp/miniapp-compiler.d.ts +0 -269
  44. package/dist/types/miniapp/miniapp-compiler.d.ts.map +0 -1
  45. package/dist/types/miniapp/miniapp-event-bridge.d.ts +0 -255
  46. package/dist/types/miniapp/miniapp-event-bridge.d.ts.map +0 -1
  47. package/dist/types/miniapp/miniapp-lifecycle.d.ts +0 -224
  48. package/dist/types/miniapp/miniapp-lifecycle.d.ts.map +0 -1
  49. package/dist/types/miniapp/miniapp-renderer.d.ts +0 -269
  50. package/dist/types/miniapp/miniapp-renderer.d.ts.map +0 -1
  51. package/dist/types/miniapp/miniapp-utils.d.ts +0 -168
  52. package/dist/types/miniapp/miniapp-utils.d.ts.map +0 -1
  53. package/dist/types/miniapp/shared-constants.d.ts +0 -28
  54. package/dist/types/miniapp/shared-constants.d.ts.map +0 -1
  55. package/dist/types/miniapp/style-compiler.d.ts +0 -193
  56. package/dist/types/miniapp/style-compiler.d.ts.map +0 -1
  57. package/dist/types/mount.d.ts +0 -32
  58. package/dist/types/mount.d.ts.map +0 -1
  59. package/dist/types/native/index.d.ts +0 -13
  60. package/dist/types/native/index.d.ts.map +0 -1
  61. package/dist/types/native/native-renderer.d.ts +0 -249
  62. package/dist/types/native/native-renderer.d.ts.map +0 -1
  63. package/dist/types/patch.d.ts +0 -23
  64. package/dist/types/patch.d.ts.map +0 -1
  65. package/dist/types/props.d.ts +0 -19
  66. package/dist/types/props.d.ts.map +0 -1
  67. package/dist/types/renderer-interfaces.d.ts +0 -157
  68. package/dist/types/renderer-interfaces.d.ts.map +0 -1
  69. package/dist/types/shared/abstract-renderer.d.ts +0 -74
  70. package/dist/types/shared/abstract-renderer.d.ts.map +0 -1
  71. package/dist/types/ssr/hydration.d.ts +0 -267
  72. package/dist/types/ssr/hydration.d.ts.map +0 -1
  73. package/dist/types/ssr/index.d.ts +0 -15
  74. package/dist/types/ssr/index.d.ts.map +0 -1
  75. package/dist/types/ssr/ssr-renderer.d.ts +0 -277
  76. package/dist/types/ssr/ssr-renderer.d.ts.map +0 -1
  77. package/dist/types/unmount.d.ts +0 -16
  78. package/dist/types/unmount.d.ts.map +0 -1
  79. package/dist/types/vapor/index.d.ts +0 -18
  80. package/dist/types/vapor/index.d.ts.map +0 -1
  81. package/dist/types/vapor/vapor-compiler.d.ts +0 -76
  82. package/dist/types/vapor/vapor-compiler.d.ts.map +0 -1
  83. package/dist/types/vapor/vapor-component.d.ts +0 -55
  84. package/dist/types/vapor/vapor-component.d.ts.map +0 -1
  85. package/dist/types/vapor/vapor-reactive.d.ts +0 -133
  86. package/dist/types/vapor/vapor-reactive.d.ts.map +0 -1
  87. package/dist/types/vapor/vapor-renderer.d.ts +0 -135
  88. package/dist/types/vapor/vapor-renderer.d.ts.map +0 -1
  89. package/dist/types/vnode.d.ts +0 -203
  90. package/dist/types/vnode.d.ts.map +0 -1
  91. package/dist/vapor.cjs +0 -1
  92. package/dist/vapor.mjs +0 -1
@@ -1,277 +0,0 @@
1
- /**
2
- * Lyt.js SSR 字符串渲染器
3
- *
4
- * 将 VNode 树渲染为 HTML 字符串,用于服务端渲染(SSR)场景。
5
- * 纯原生零依赖实现,不依赖任何外部库。
6
- *
7
- * 核心功能:
8
- * - renderToString(vnode) — 将 VNode 树同步序列化为完整 HTML 字符串
9
- * - renderToStream(vnode, options?) — 将 VNode 树异步流式序列化(逐步输出 HTML)
10
- * - createElement(tag) — 创建轻量描述对象(SSR 环境无真实 DOM)
11
- * - createText(text) — 创建文本描述对象
12
- * - insert(parent, child) — 将子节点添加到父节点的 children 数组
13
- *
14
- * 支持的 VNode 类型:
15
- * - Element VNode:输出 HTML 标签 + 属性 + 子节点
16
- * - Text VNode:输出转义后的文本内容
17
- * - Comment VNode:输出 HTML 注释 <!-- -->
18
- * - Fragment VNode:只输出子节点(无包裹标签)
19
- * - Component VNode(函数式/有状态):递归渲染组件 render 函数输出
20
- * - Slot VNode:渲染插槽内容
21
- * - Null/Undefined:不输出任何内容
22
- *
23
- * 特殊处理:
24
- * - class/style/event 属性的序列化
25
- * - 自闭合标签(br/hr/img/input 等)
26
- * - HTML 转义(防 XSS)
27
- * - Fragment 多根节点支持
28
- * - data-* 自定义属性
29
- * - aria-* 无障碍属性
30
- * - dangerouslySetInnerHTML 支持
31
- * - Suspense 组件集成(流式渲染 fallback → resolved)
32
- * - Islands Architecture(Partial Hydration)标记支持
33
- */
34
- /** SSR 轻量元素描述对象 */
35
- export interface SSRVNode {
36
- /** 标签名 */
37
- tag: string;
38
- /** 属性 */
39
- props: Record<string, any>;
40
- /** 子节点 */
41
- children: (SSRVNode | SSRTextVNode)[];
42
- }
43
- /** SSR 文本描述对象 */
44
- export interface SSRTextVNode {
45
- /** 类型标记 */
46
- type: 'text';
47
- /** 文本内容 */
48
- value: string;
49
- }
50
- /** VNode 兼容类型(与 @lytjs/vdom 和 @lytjs/renderer 的 VNode 对齐) */
51
- export interface VNode {
52
- type: string | object | symbol;
53
- props: Record<string, any> | null;
54
- children: string | VNode[] | Record<string, any> | null;
55
- key: string | number | null;
56
- ref: any;
57
- shapeFlag: number;
58
- patchFlag: number;
59
- dynamicChildren: VNode[] | null;
60
- dynamicProps: string[] | null;
61
- component: any;
62
- el: any;
63
- anchor: any;
64
- [key: string]: any;
65
- }
66
- /** 组件类型接口(有状态组件) */
67
- export interface ComponentOptions {
68
- /** 组件名称 */
69
- name?: string;
70
- /** setup 函数 */
71
- setup?: (...args: any[]) => any;
72
- /** render 函数 */
73
- render?: (...args: any[]) => VNode;
74
- /** props 定义 */
75
- props?: Record<string, any>;
76
- /** slots */
77
- slots?: Record<string, any>;
78
- /** 其他组件选项 */
79
- [key: string]: any;
80
- }
81
- /** renderToStream 选项 */
82
- export interface RenderToStreamOptions {
83
- /** Suspense 边界 ID 前缀,默认 'suspense' */
84
- suspenseIdPrefix?: string;
85
- }
86
- import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from '@lytjs/common';
87
- /** Re-export normalizeClass and normalizeStyle for external use */
88
- export { _normalizeClass as normalizeClass, _normalizeStyle as normalizeStyle };
89
- /**
90
- * 重置 Suspense 边界 ID 计数器
91
- *
92
- * 在服务端渲染多个独立页面时调用,避免 ID 跨请求泄漏。
93
- */
94
- export declare function resetSuspenseBoundaryId(): void;
95
- /**
96
- * HTML 转义 — 将特殊字符替换为 HTML 实体
97
- *
98
- * 防止 XSS 攻击,确保用户输入的内容不会被当作 HTML 解析。
99
- *
100
- * @param str 需要转义的字符串
101
- * @returns 转义后的安全字符串
102
- *
103
- * @example
104
- * escapeHTML('<script>alert("xss")</script>')
105
- * // → '&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;'
106
- */
107
- export declare function escapeHTML(str: string): string;
108
- /**
109
- * 序列化属性值为字符串
110
- *
111
- * 对不同类型的属性值进行特殊处理:
112
- * - class:支持字符串、数组、对象形式
113
- * - style:支持字符串、对象形式
114
- * - 事件(on*):SSR 环境下不序列化事件
115
- * - ref/key:内部属性,不序列化
116
- * - innerHTML/dangerouslySetInnerHTML:特殊处理
117
- * - data-* 属性:直接序列化
118
- * - aria-* 属性:直接序列化
119
- * - 布尔属性:值为 true 时只输出属性名
120
- * - 其他:直接转为字符串
121
- *
122
- * @param key 属性名
123
- * @param value 属性值
124
- * @returns 序列化后的属性字符串(格式:key="value"),不需要序列化时返回空字符串
125
- */
126
- export declare function serializeProp(key: string, value: any): string;
127
- /**
128
- * 序列化所有属性
129
- *
130
- * 将 props 对象转换为 HTML 属性字符串
131
- *
132
- * @param props 属性对象
133
- * @returns HTML 属性字符串(如 'class="foo" id="bar"')
134
- */
135
- export declare function serializeProps(props: Record<string, any> | null): string;
136
- /**
137
- * SSR 字符串渲染器
138
- *
139
- * 将 VNode 树渲染为 HTML 字符串。实现了 LytRenderer 接口的 SSR 版本。
140
- * 在 SSR 环境中,没有真实 DOM,所有操作都是基于轻量描述对象。
141
- *
142
- * @example
143
- * const renderer = new StringRenderer()
144
- * const parent = renderer.createElement('div')
145
- * const child = renderer.createText('Hello')
146
- * renderer.insert(parent, child)
147
- * // parent.children = [{ type: 'text', value: 'Hello' }]
148
- */
149
- export declare class StringRenderer {
150
- /**
151
- * 创建元素节点
152
- *
153
- * SSR 环境中没有真实 DOM,返回轻量描述对象。
154
- *
155
- * @param tag 标签名(如 'div', 'span')
156
- * @returns 轻量元素描述对象
157
- */
158
- createElement(tag: string): SSRVNode;
159
- /**
160
- * 创建文本节点
161
- *
162
- * @param text 文本内容
163
- * @returns 文本描述对象
164
- */
165
- createText(text: string): SSRTextVNode;
166
- /**
167
- * 创建注释节点
168
- *
169
- * SSR 中注释节点用文本描述对象表示
170
- *
171
- * @param text 注释内容
172
- * @returns 注释描述对象
173
- */
174
- createComment(text: string): SSRTextVNode;
175
- /**
176
- * 插入子节点到父节点
177
- *
178
- * SSR 中简单地将子节点添加到父节点的 children 数组。
179
- *
180
- * @param parent 父节点
181
- * @param child 子节点
182
- * @param _ref 参考节点(SSR 中忽略)
183
- */
184
- insert(parent: SSRVNode, child: SSRVNode | SSRTextVNode, _ref?: any): void;
185
- /**
186
- * 将 VNode 渲染为 HTML 字符串(同步)
187
- *
188
- * 递归遍历 VNode 树,将每个节点序列化为对应的 HTML 字符串。
189
- *
190
- * @param vnode VNode 节点
191
- * @returns 完整的 HTML 字符串
192
- *
193
- * @example
194
- * const vnode = {
195
- * type: 'div',
196
- * props: { class: 'app', id: 'root' },
197
- * children: [
198
- * { type: 'span', props: null, children: 'Hello', shapeFlag: 8 },
199
- * ],
200
- * shapeFlag: 17, // ELEMENT | ARRAY_CHILDREN
201
- * }
202
- * renderToString(vnode)
203
- * // → '<div class="app" id="root"><span>Hello</span></div>'
204
- */
205
- renderToString(vnode: VNode): string;
206
- /**
207
- * 将 VNode 渲染为异步生成器(流式渲染)
208
- *
209
- * 逐步输出 HTML 字符串片段,适用于大页面或需要尽早发送响应的场景。
210
- * 每个节点渲染完成后立即 yield,而不是等待整棵树渲染完成。
211
- *
212
- * @param vnode VNode 节点
213
- * @returns 异步生成器,逐步产出 HTML 字符串片段
214
- *
215
- * @example
216
- * for await (const chunk of renderer.renderToStream(vnode)) {
217
- * res.write(chunk)
218
- * }
219
- * res.end()
220
- */
221
- renderToStream(vnode: VNode): AsyncGenerator<string>;
222
- }
223
- /**
224
- * 将 VNode 树渲染为完整 HTML 字符串(同步)
225
- *
226
- * 独立函数形式,方便直接调用而无需实例化 StringRenderer。
227
- *
228
- * @param vnode VNode 节点
229
- * @returns 完整的 HTML 字符串
230
- *
231
- * @example
232
- * const html = renderToString(vnode)
233
- * // → '<div>Hello</div>'
234
- */
235
- export declare function renderToString(vnode: VNode): string;
236
- /**
237
- * 将 VNode 树异步流式渲染为 ReadableStream
238
- *
239
- * 返回一个 Node.js ReadableStream,逐步输出 HTML 字符串片段。
240
- * 支持与 Suspense 集成:遇到 Suspense 边界时,先输出 fallback 内容,
241
- * 异步组件解析完成后再输出真实内容(通过占位注释标记实现替换)。
242
- *
243
- * @param vnode VNode 节点
244
- * @param options 流式渲染选项
245
- * @returns ReadableStream<string>,逐步产出 HTML 字符串片段
246
- *
247
- * @example
248
- * const stream = renderToStream(vnode)
249
- * // 在 Node.js HTTP 响应中使用
250
- * Readable.fromWeb(stream).pipe(res)
251
- *
252
- * // 或手动消费
253
- * for await (const chunk of stream) {
254
- * process.stdout.write(chunk)
255
- * }
256
- */
257
- export declare function renderToStream(vnode: VNode, options?: RenderToStreamOptions): ReadableStream<string>;
258
- /**
259
- * 将 VNode 树异步流式渲染为异步生成器
260
- *
261
- * 与 renderToStream 类似,但返回 AsyncGenerator 而非 ReadableStream。
262
- * 更轻量级,适合直接在 async 函数中使用 for-await-of 消费。
263
- *
264
- * @param vnode VNode 节点
265
- * @param options 流式渲染选项
266
- * @yields HTML 字符串片段
267
- *
268
- * @example
269
- * for await (const chunk of renderToStreamGenerator(vnode)) {
270
- * res.write(chunk)
271
- * }
272
- * res.end()
273
- */
274
- export declare function renderToStreamGenerator(vnode: VNode, options?: RenderToStreamOptions): AsyncGenerator<string>;
275
- /** 默认渲染器实例 */
276
- export declare const ssrRenderer: StringRenderer;
277
- //# sourceMappingURL=ssr-renderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ssr-renderer.d.ts","sourceRoot":"","sources":["../../../src/ssr/ssr-renderer.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Lyt.js 渲染器 — 卸载逻辑
3
- *
4
- * 本模块包含 VNode 卸载相关的函数。
5
- */
6
- import type { LytRenderer } from './renderer-interfaces';
7
- import type { VNode } from './vnode';
8
- /**
9
- * 卸载 VNode
10
- */
11
- export declare function unmount(renderer: LytRenderer, unmountFn: (vnode: VNode, container?: any) => void, vnode: VNode, container?: any): void;
12
- /**
13
- * 批量卸载子节点
14
- */
15
- export declare function unmountChildren(unmountFn: (vnode: VNode, container?: any) => void, children: VNode[]): void;
16
- //# sourceMappingURL=unmount.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unmount.d.ts","sourceRoot":"","sources":["../../src/unmount.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGpC;;GAEG;AACH,wBAAgB,OAAO,CACrB,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,EAClD,KAAK,EAAE,KAAK,EACZ,SAAS,CAAC,EAAE,GAAG,GACd,IAAI,CA4BN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,EAClD,QAAQ,EAAE,KAAK,EAAE,GAChB,IAAI,CAIN"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Lyt.js Vapor Mode — 独立入口
3
- *
4
- * 仅包含 Vapor Mode 相关的 API(无虚拟 DOM,直接操作真实 DOM)。
5
- * 使用者可通过 `import '@lytjs/renderer/vapor'` 仅加载 Vapor 渲染器。
6
- */
7
- export type { LytRenderer, RendererInstance } from '../renderer-interfaces';
8
- export type { VNode } from '../vnode';
9
- export { createRenderer, } from '../create-renderer';
10
- export { Fragment, Text, Comment, ShapeFlags, PatchFlags, } from '../vnode';
11
- export { createVaporElement, renderVaporNode, vaporPatch, vaporMount, setVaporDOMFactory, getVaporDOMFactory, } from './vapor-renderer';
12
- export type { VaporNode, VaporBinding, VaporBindingType, VaporContainer, VaporComponentOptions, VaporApp, VaporElement, BindingCleanup, } from './vapor-renderer';
13
- export { bindText, bindProp, bindAttr, bindClass, bindEvent, bindIf, bindEach, bindStyle, bindHTML, } from './vapor-reactive';
14
- export { compileToVapor, parseTemplate, } from './vapor-compiler';
15
- export type { VaporRenderFunction, VaporCompileResult } from './vapor-compiler';
16
- export { defineVaporComponent, createVaporApp, renderVaporComponent, } from './vapor-component';
17
- export type { VaporComponentInstance } from './vapor-component';
18
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vapor/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EACL,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,UAAU,EACV,UAAU,GACX,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,QAAQ,EACR,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,76 +0,0 @@
1
- /**
2
- * Lyt.js Vapor Mode - 模板编译器
3
- *
4
- * 将 HTML 模板编译为直接 DOM 操作的渲染函数。
5
- * 编译后的函数直接创建 DOM 元素并绑定信号,无需 VDOM 中间层。
6
- *
7
- * 支持的语法:
8
- * - 文本插值: {{ expression }}
9
- * - 事件绑定: on:event="handler"
10
- * - 属性绑定: :prop="expression"
11
- * - 条件渲染: v-if="expression"
12
- * - 列表渲染: v-each="item in expression"
13
- */
14
- import type { VaporElement } from './vapor-reactive';
15
- /** 编译后的渲染函数 */
16
- export type VaporRenderFunction = (ctx: Record<string, unknown>) => VaporElement;
17
- /** AST 节点类型 */
18
- type ASTNodeType = 'element' | 'text' | 'interpolation' | 'fragment';
19
- /** AST 节点 */
20
- interface ASTNode {
21
- type: ASTNodeType;
22
- tag?: string;
23
- text?: string;
24
- expression?: string;
25
- props?: Record<string, string>;
26
- events?: Record<string, string>;
27
- directives?: {
28
- if?: string;
29
- each?: {
30
- item: string;
31
- expression: string;
32
- };
33
- };
34
- children?: ASTNode[];
35
- }
36
- /** 编译结果 */
37
- export interface VaporCompileResult {
38
- /** 渲染函数 */
39
- render: VaporRenderFunction;
40
- /** AST(调试用) */
41
- ast: ASTNode;
42
- }
43
- /**
44
- * 简单的 HTML 模板解析器
45
- *
46
- * 将模板字符串解析为 AST 树。
47
- */
48
- declare function parseTemplate(template: string): ASTNode;
49
- /**
50
- * 将 AST 节点编译为渲染函数
51
- *
52
- * @param template HTML 模板字符串
53
- * @returns 编译结果
54
- */
55
- export declare function compileToVapor(template: string): VaporCompileResult;
56
- /**
57
- * 递归渲染 AST 节点为 DOM 元素
58
- */
59
- declare function renderASTNode(node: ASTNode, ctx: Record<string, unknown>, factory: (tag: string) => VaporElement): VaporElement;
60
- /**
61
- * 从上下文中解析表达式
62
- *
63
- * 支持简单属性访问和点号路径。
64
- * 如果解析结果是 Signal,返回 Signal 本身(不调用)。
65
- */
66
- declare function resolveExpression(ctx: Record<string, unknown>, expression: string): unknown;
67
- /**
68
- * 清理 Vapor 元素的所有 effect 绑定
69
- *
70
- * 在组件卸载或重新渲染时调用,停止所有响应式绑定以避免内存泄漏。
71
- *
72
- * @param el - 要清理的 Vapor 元素
73
- */
74
- export declare function cleanupVaporElement(el: VaporElement): void;
75
- export { parseTemplate, renderASTNode, resolveExpression };
76
- //# sourceMappingURL=vapor-compiler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vapor-compiler.d.ts","sourceRoot":"","sources":["../../../src/vapor/vapor-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAWrD,eAAe;AACf,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,YAAY,CAAA;AAEhF,eAAe;AACf,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,GAAG,UAAU,CAAA;AAEpE,aAAa;AACb,UAAU,OAAO;IACf,IAAI,EAAE,WAAW,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,UAAU,CAAC,EAAE;QACX,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAA;KAC5C,CAAA;IACD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB;AAED,WAAW;AACX,MAAM,WAAW,kBAAkB;IACjC,WAAW;IACX,MAAM,EAAE,mBAAmB,CAAA;IAC3B,eAAe;IACf,GAAG,EAAE,OAAO,CAAA;CACb;AAMD;;;;GAIG;AACH,iBAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CA8EhD;AA6GD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAInE;AAYD;;GAEG;AACH,iBAAS,aAAa,CACpB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,GACrC,YAAY,CAmMd;AAED;;;;;GAKG;AACH,iBAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAgBpF;AA4BD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAyC1D;AAMD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Lyt.js Vapor Mode - 组件系统
3
- *
4
- * 提供 Vapor Mode 的组件定义和 App 创建功能。
5
- * 与标准 defineComponent 类似,但使用 Vapor 渲染器(无 VDOM)。
6
- */
7
- import type { VaporComponentOptions, VaporApp } from './vapor-renderer';
8
- import type { VaporElement } from './vapor-reactive';
9
- /** Vapor 组件实例 */
10
- export interface VaporComponentInstance {
11
- /** 组件选项 */
12
- options: VaporComponentOptions;
13
- /** 组件上下文(setup 返回值) */
14
- ctx: Record<string, unknown>;
15
- /** 根 DOM 元素 */
16
- el: VaporElement | null;
17
- /** 是否已挂载 */
18
- isMounted: boolean;
19
- /** 父组件实例 */
20
- parent: VaporComponentInstance | null;
21
- /** 子组件实例 */
22
- children: VaporComponentInstance[];
23
- /** 传递的 props */
24
- props: Record<string, unknown>;
25
- /** 卸载函数 */
26
- _unmount?: () => void;
27
- }
28
- /**
29
- * 定义 Vapor 组件
30
- *
31
- * 与 defineComponent 类似,但使用 Vapor Mode 渲染。
32
- * 不创建 VDOM,直接操作 DOM。
33
- *
34
- * @param options 组件选项
35
- * @returns 组件构造函数
36
- */
37
- export declare function defineVaporComponent(options: VaporComponentOptions): VaporComponentOptions;
38
- /**
39
- * 创建 Vapor Mode 应用
40
- *
41
- * 类似 createApp,但使用 Vapor 渲染器。
42
- *
43
- * @param rootComponent 根组件选项
44
- * @returns VaporApp 实例
45
- */
46
- export declare function createVaporApp(rootComponent: VaporComponentOptions): VaporApp;
47
- /**
48
- * 渲染 Vapor 组件为 DOM 元素
49
- *
50
- * @param component 组件选项
51
- * @param props 传递给组件的 props
52
- * @returns 渲染后的 DOM 元素
53
- */
54
- export declare function renderVaporComponent(component: VaporComponentOptions, props?: Record<string, unknown>): VaporElement;
55
- //# sourceMappingURL=vapor-component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vapor-component.d.ts","sourceRoot":"","sources":["../../../src/vapor/vapor-component.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAa,qBAAqB,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAEnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,iBAAiB;AACjB,MAAM,WAAW,sBAAsB;IACrC,WAAW;IACX,OAAO,EAAE,qBAAqB,CAAA;IAC9B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,eAAe;IACf,EAAE,EAAE,YAAY,GAAG,IAAI,CAAA;IACvB,YAAY;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY;IACZ,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAA;IACrC,YAAY;IACZ,QAAQ,EAAE,sBAAsB,EAAE,CAAA;IAClC,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,qBAAqB,CAI1F;AAMD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,qBAAqB,GAAG,QAAQ,CAoD7E;AAMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,qBAAqB,EAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,YAAY,CAmCd"}
@@ -1,133 +0,0 @@
1
- /**
2
- * Lyt.js Vapor Mode - 响应式绑定
3
- *
4
- * 在 Vapor Mode 中,响应式信号直接绑定到 DOM 属性上,
5
- * 无需虚拟 DOM 中间层。当信号值变化时,直接更新对应的 DOM 节点。
6
- *
7
- * 每个绑定函数返回一个清理函数,用于在卸载时取消订阅。
8
- */
9
- import type { Signal } from '@lytjs/reactivity/signal';
10
- /** DOM 元素接口(兼容真实 DOM 和 Mock DOM) */
11
- export interface VaporElement {
12
- tagName: string;
13
- nodeType: number;
14
- textContent: string;
15
- className: string;
16
- childNodes: VaporElement[];
17
- parentNode: VaporElement | null;
18
- style: Record<string, string> | CSSStyleDeclaration;
19
- setAttribute(key: string, value: string): void;
20
- removeAttribute(key: string): void;
21
- addEventListener(event: string, handler: Function): void;
22
- removeEventListener(event: string, handler: Function): void;
23
- appendChild(child: VaporElement): void;
24
- insertBefore(child: VaporElement, ref: VaporElement | null): void;
25
- replaceChild(newChild: VaporElement, oldChild: VaporElement): VaporElement;
26
- removeChild(child: VaporElement): void;
27
- nextSibling: VaporElement | null;
28
- firstChild: VaporElement | null;
29
- innerHTML?: string;
30
- hidden?: boolean;
31
- value?: string;
32
- checked?: boolean;
33
- disabled?: boolean;
34
- [key: string]: unknown;
35
- }
36
- /** 绑定清理函数 */
37
- export type BindingCleanup = () => void;
38
- /**
39
- * 将信号值绑定到元素的 textContent
40
- *
41
- * @param el 目标 DOM 元素
42
- * @param sig 响应式信号
43
- * @returns 清理函数
44
- */
45
- export declare function bindText<T>(el: VaporElement, sig: Signal<T>): BindingCleanup;
46
- /**
47
- * 将信号值绑定到元素的 DOM 属性(如 value, checked, disabled 等)
48
- *
49
- * @param el 目标 DOM 元素
50
- * @param prop 属性名
51
- * @param sig 响应式信号
52
- * @returns 清理函数
53
- */
54
- export declare function bindProp<T>(el: VaporElement, prop: string, sig: Signal<T>): BindingCleanup;
55
- /**
56
- * 将信号值绑定到元素的 HTML 属性(通过 setAttribute)
57
- *
58
- * @param el 目标 DOM 元素
59
- * @param attr 属性名
60
- * @param sig 响应式信号
61
- * @returns 清理函数
62
- */
63
- export declare function bindAttr<T>(el: VaporElement, attr: string, sig: Signal<T>): BindingCleanup;
64
- /**
65
- * 将信号值绑定到元素的 className
66
- *
67
- * 支持三种形式:
68
- * - 字符串:直接设置为 className
69
- * - 对象:{ active: true, disabled: false } -> "active"
70
- * - 数组:["class-a", "class-b"] -> "class-a class-b"
71
- *
72
- * @param el 目标 DOM 元素
73
- * @param sig 响应式信号
74
- * @returns 清理函数
75
- */
76
- export declare function bindClass<T>(el: VaporElement, sig: Signal<T>): BindingCleanup;
77
- /**
78
- * 将事件处理器绑定到元素
79
- *
80
- * @param el 目标 DOM 元素
81
- * @param event 事件名
82
- * @param handler 事件处理函数
83
- * @returns 清理函数
84
- */
85
- export declare function bindEvent(el: VaporElement, event: string, handler: Function): BindingCleanup;
86
- /**
87
- * 将信号值绑定到元素的 style 属性
88
- *
89
- * 支持两种形式:
90
- * - 字符串:直接设置为 style.cssText
91
- * - 对象:{ color: 'red', fontSize: '14px' } -> 逐项设置
92
- *
93
- * @param el 目标 DOM 元素
94
- * @param sig 响应式信号
95
- * @returns 清理函数
96
- */
97
- export declare function bindStyle<T>(el: VaporElement, sig: Signal<T>): BindingCleanup;
98
- /**
99
- * 将信号值绑定到元素的 innerHTML
100
- *
101
- * ⚠️ 注意:使用 innerHTML 存在 XSS 风险,请确保数据来源可信。
102
- *
103
- * @param el 目标 DOM 元素
104
- * @param sig 响应式信号
105
- * @returns 清理函数
106
- */
107
- export declare function bindHTML<T>(el: VaporElement, sig: Signal<T>): BindingCleanup;
108
- /**
109
- * 根据信号值控制元素的插入/移除
110
- *
111
- * 当信号值为真值时插入元素到 DOM,假值时从 DOM 移除。
112
- * 使用注释节点作为锚点,保持 DOM 位置稳定。
113
- *
114
- * @param el 目标 DOM 元素
115
- * @param sig 响应式信号
116
- * @param anchor 可选的锚点元素,用于定位插入位置
117
- * @returns 清理函数
118
- */
119
- export declare function bindIf<T>(el: VaporElement, sig: Signal<T>, anchor?: VaporElement): BindingCleanup;
120
- /**
121
- * 根据信号数组渲染列表
122
- *
123
- * 当数组变化时,智能 diff 并更新 DOM。
124
- * 使用 key 进行高效的增删改操作。
125
- *
126
- * @param container 容器元素
127
- * @param sig 响应式信号(返回数组)
128
- * @param renderItem 渲染单项的函数,接收 (item, index) 返回 VaporElement
129
- * @param keyFn 可选的 key 提取函数,用于高效 diff
130
- * @returns 清理函数
131
- */
132
- export declare function bindEach<T>(container: VaporElement, sig: Signal<T[]>, renderItem: (item: T, index: number) => VaporElement, keyFn?: (item: T, index: number) => string | number): BindingCleanup;
133
- //# sourceMappingURL=vapor-reactive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vapor-reactive.d.ts","sourceRoot":"","sources":["../../../src/vapor/vapor-reactive.ts"],"names":[],"mappings":"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"}