@lytjs/renderer 4.2.0 → 5.0.1
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/dom.cjs +1 -1
- package/dist/dom.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/miniapp.cjs +26 -4
- package/dist/miniapp.mjs +26 -4
- package/dist/native.cjs +1 -1
- package/dist/native.mjs +1 -1
- package/dist/ssr.cjs +1 -1
- package/dist/ssr.mjs +1 -1
- package/dist/types/dom/dom-ops.d.ts.map +1 -1
- package/dist/types/dom/dom-renderer.d.ts +3 -3
- package/dist/types/dom/dom-renderer.d.ts.map +1 -1
- package/dist/types/dom/patch-events.d.ts.map +1 -1
- package/dist/types/dom/patch-props.d.ts +2 -32
- package/dist/types/dom/patch-props.d.ts.map +1 -1
- package/dist/types/miniapp/api-adapter.d.ts +514 -0
- package/dist/types/miniapp/api-adapter.d.ts.map +1 -0
- package/dist/types/miniapp/index.d.ts +23 -2
- package/dist/types/miniapp/index.d.ts.map +1 -1
- package/dist/types/miniapp/miniapp-compiler.d.ts +269 -0
- package/dist/types/miniapp/miniapp-compiler.d.ts.map +1 -0
- package/dist/types/miniapp/miniapp-event-bridge.d.ts +255 -0
- package/dist/types/miniapp/miniapp-event-bridge.d.ts.map +1 -0
- package/dist/types/miniapp/miniapp-lifecycle.d.ts +224 -0
- package/dist/types/miniapp/miniapp-lifecycle.d.ts.map +1 -0
- package/dist/types/miniapp/miniapp-renderer.d.ts.map +1 -1
- package/dist/types/miniapp/miniapp-utils.d.ts +168 -0
- package/dist/types/miniapp/miniapp-utils.d.ts.map +1 -0
- package/dist/types/miniapp/shared-constants.d.ts +28 -0
- package/dist/types/miniapp/shared-constants.d.ts.map +1 -0
- package/dist/types/miniapp/style-compiler.d.ts +193 -0
- package/dist/types/miniapp/style-compiler.d.ts.map +1 -0
- package/dist/types/native/native-renderer.d.ts.map +1 -1
- package/dist/types/renderer-interfaces.d.ts +19 -19
- package/dist/types/renderer-interfaces.d.ts.map +1 -1
- package/dist/types/shared/abstract-renderer.d.ts +74 -0
- package/dist/types/shared/abstract-renderer.d.ts.map +1 -0
- package/dist/types/ssr/hydration.d.ts +1 -16
- package/dist/types/ssr/hydration.d.ts.map +1 -1
- package/dist/types/ssr/ssr-renderer.d.ts +9 -24
- package/dist/types/ssr/ssr-renderer.d.ts.map +1 -1
- package/dist/types/vapor/index.d.ts +1 -1
- package/dist/types/vapor/index.d.ts.map +1 -1
- package/dist/types/vapor/vapor-compiler.d.ts +9 -0
- package/dist/types/vapor/vapor-compiler.d.ts.map +1 -1
- package/dist/types/vapor/vapor-component.d.ts +8 -1
- package/dist/types/vapor/vapor-component.d.ts.map +1 -1
- package/dist/types/vapor/vapor-reactive.d.ts +27 -4
- package/dist/types/vapor/vapor-reactive.d.ts.map +1 -1
- package/dist/types/vapor/vapor-renderer.d.ts +4 -2
- package/dist/types/vapor/vapor-renderer.d.ts.map +1 -1
- package/dist/types/vnode.d.ts +76 -7
- package/dist/types/vnode.d.ts.map +1 -1
- package/dist/vapor.cjs +1 -1
- package/dist/vapor.mjs +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* miniapp-lifecycle.ts - 小程序生命周期适配器
|
|
3
|
+
*
|
|
4
|
+
* 将 Lyt.js 的组件生命周期钩子映射为小程序平台的生命周期方法。
|
|
5
|
+
* 支持 Page 和 Component 两种模式的包装。
|
|
6
|
+
* 纯原生零依赖 TypeScript 实现。
|
|
7
|
+
*/
|
|
8
|
+
import type { MiniAppPlatform } from './miniapp-renderer';
|
|
9
|
+
/**
|
|
10
|
+
* 生命周期映射条目
|
|
11
|
+
*/
|
|
12
|
+
export interface LifecycleMapping {
|
|
13
|
+
/** Lyt.js 生命周期钩子名 */
|
|
14
|
+
lytHook: string;
|
|
15
|
+
/** 目标平台的生命周期方法名 */
|
|
16
|
+
platformHook: string;
|
|
17
|
+
/** 映射说明 */
|
|
18
|
+
description: string;
|
|
19
|
+
/** 是否有直接对应 */
|
|
20
|
+
hasDirectMapping: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 页面生命周期钩子集合
|
|
24
|
+
*/
|
|
25
|
+
export interface PageLifecycleHooks {
|
|
26
|
+
onBeforeMount?: (...args: any[]) => void;
|
|
27
|
+
onMounted?: (...args: any[]) => void;
|
|
28
|
+
onUpdated?: (...args: any[]) => void;
|
|
29
|
+
onUnmounted?: (...args: any[]) => void;
|
|
30
|
+
onLoad?: (...args: any[]) => void;
|
|
31
|
+
onShow?: (...args: any[]) => void;
|
|
32
|
+
onReady?: (...args: any[]) => void;
|
|
33
|
+
onHide?: (...args: any[]) => void;
|
|
34
|
+
onUnload?: (...args: any[]) => void;
|
|
35
|
+
onPullDownRefresh?: (...args: any[]) => void;
|
|
36
|
+
onReachBottom?: (...args: any[]) => void;
|
|
37
|
+
onShareAppMessage?: (...args: any[]) => any;
|
|
38
|
+
onError?: (...args: any[]) => void;
|
|
39
|
+
[key: string]: Function | undefined;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 组件生命周期钩子集合
|
|
43
|
+
*/
|
|
44
|
+
export interface ComponentLifecycleHooks {
|
|
45
|
+
setup?: () => Record<string, any>;
|
|
46
|
+
onBeforeMount?: (...args: any[]) => void;
|
|
47
|
+
onMounted?: (...args: any[]) => void;
|
|
48
|
+
onUpdated?: (...args: any[]) => void;
|
|
49
|
+
onUnmounted?: (...args: any[]) => void;
|
|
50
|
+
onErrorCaptured?: (err: Error, vm: any, info: string) => boolean | void;
|
|
51
|
+
created?: (...args: any[]) => void;
|
|
52
|
+
attached?: (...args: any[]) => void;
|
|
53
|
+
ready?: (...args: any[]) => void;
|
|
54
|
+
moved?: (...args: any[]) => void;
|
|
55
|
+
detached?: (...args: any[]) => void;
|
|
56
|
+
[key: string]: Function | undefined;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* MiniAppLifecycleAdapter - 小程序生命周期适配器
|
|
60
|
+
*
|
|
61
|
+
* 将 Lyt.js 的组件生命周期钩子映射为小程序平台的生命周期方法。
|
|
62
|
+
* 支持 Page 和 Component 两种模式的包装。
|
|
63
|
+
*
|
|
64
|
+
* 使用示例:
|
|
65
|
+
* ```ts
|
|
66
|
+
* const adapter = new MiniAppLifecycleAdapter('wechat');
|
|
67
|
+
*
|
|
68
|
+
* // 映射生命周期钩子名
|
|
69
|
+
* adapter.mapLifecycle('onMounted', 'wechat'); // => 'ready'
|
|
70
|
+
*
|
|
71
|
+
* // 创建页面生命周期
|
|
72
|
+
* const pageLifecycles = adapter.createPageLifecycle({
|
|
73
|
+
* onMounted() { console.log('mounted'); },
|
|
74
|
+
* onUnmounted() { console.log('unmounted'); },
|
|
75
|
+
* });
|
|
76
|
+
* // => { onReady() { ... }, onUnload() { ... } }
|
|
77
|
+
*
|
|
78
|
+
* // 包装组件
|
|
79
|
+
* const wrappedComponent = adapter.wrapComponent({
|
|
80
|
+
* setup() { return { count: 0 }; },
|
|
81
|
+
* onMounted() { console.log('ready'); },
|
|
82
|
+
* }, 'wechat');
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare class MiniAppLifecycleAdapter {
|
|
86
|
+
/** 当前平台 */
|
|
87
|
+
private _platform;
|
|
88
|
+
/**
|
|
89
|
+
* 创建生命周期适配器
|
|
90
|
+
*
|
|
91
|
+
* @param platform 小程序平台
|
|
92
|
+
*/
|
|
93
|
+
constructor(platform: MiniAppPlatform);
|
|
94
|
+
/**
|
|
95
|
+
* 生命周期映射
|
|
96
|
+
*
|
|
97
|
+
* 将 Lyt.js 的生命周期钩子名映射为小程序平台对应的生命周期方法名。
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* mapLifecycle('onMounted', 'wechat') // => 'ready'
|
|
101
|
+
* mapLifecycle('onUnmounted', 'wechat') // => 'detached'
|
|
102
|
+
* mapLifecycle('onBeforeMount', 'wechat') // => 'created'
|
|
103
|
+
* mapLifecycle('setup', 'wechat') // => 'data + attached'
|
|
104
|
+
* mapLifecycle('onUpdated', 'wechat') // => '(无直接对应)'
|
|
105
|
+
*
|
|
106
|
+
* @param lytHook Lyt.js 生命周期钩子名
|
|
107
|
+
* @param platform 目标平台(可选,使用实例平台)
|
|
108
|
+
* @returns 小程序平台的生命周期方法名
|
|
109
|
+
*/
|
|
110
|
+
mapLifecycle(lytHook: string, _platform?: MiniAppPlatform): string;
|
|
111
|
+
/**
|
|
112
|
+
* 获取完整的生命周期映射信息
|
|
113
|
+
*
|
|
114
|
+
* @param lytHook Lyt.js 生命周期钩子名
|
|
115
|
+
* @returns 映射信息,未知钩子返回 null
|
|
116
|
+
*/
|
|
117
|
+
getLifecycleMapping(lytHook: string): LifecycleMapping | null;
|
|
118
|
+
/**
|
|
119
|
+
* 获取所有支持的生命周期映射
|
|
120
|
+
*
|
|
121
|
+
* @returns 生命周期映射数组
|
|
122
|
+
*/
|
|
123
|
+
getAllMappings(): LifecycleMapping[];
|
|
124
|
+
/**
|
|
125
|
+
* 创建页面生命周期
|
|
126
|
+
*
|
|
127
|
+
* 将 Lyt.js 风格的生命周期钩子转换为小程序 Page 的生命周期方法。
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* createPageLifecycle({
|
|
131
|
+
* onBeforeMount() { console.log('before mount'); },
|
|
132
|
+
* onMounted() { console.log('mounted'); },
|
|
133
|
+
* onUnmounted() { console.log('unmounted'); },
|
|
134
|
+
* onShow() { console.log('show'); },
|
|
135
|
+
* })
|
|
136
|
+
* // => {
|
|
137
|
+
* // onLoad(options) { console.log('before mount'); },
|
|
138
|
+
* // onReady() { console.log('mounted'); },
|
|
139
|
+
* // onUnload() { console.log('unmounted'); },
|
|
140
|
+
* // onShow() { console.log('show'); },
|
|
141
|
+
* // }
|
|
142
|
+
*
|
|
143
|
+
* @param hooks Lyt.js 生命周期钩子映射
|
|
144
|
+
* @returns 小程序页面生命周期方法映射
|
|
145
|
+
*/
|
|
146
|
+
createPageLifecycle(hooks: Record<string, Function>): Record<string, Function>;
|
|
147
|
+
/**
|
|
148
|
+
* 创建组件生命周期
|
|
149
|
+
*
|
|
150
|
+
* 将 Lyt.js 风格的生命周期钩子转换为小程序 Component 的生命周期方法。
|
|
151
|
+
* 组件生命周期放在 lifetimes 对象中。
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* createComponentLifecycle({
|
|
155
|
+
* setup() { return { count: 0 }; },
|
|
156
|
+
* onMounted() { console.log('mounted'); },
|
|
157
|
+
* onUnmounted() { console.log('unmounted'); },
|
|
158
|
+
* })
|
|
159
|
+
* // => {
|
|
160
|
+
* // lifetimes: {
|
|
161
|
+
* // created() { ... },
|
|
162
|
+
* // attached() { ... },
|
|
163
|
+
* // ready() { console.log('mounted'); },
|
|
164
|
+
* // detached() { console.log('unmounted'); },
|
|
165
|
+
* // },
|
|
166
|
+
* // data: { count: 0 },
|
|
167
|
+
* // }
|
|
168
|
+
*
|
|
169
|
+
* @param hooks Lyt.js 生命周期钩子映射
|
|
170
|
+
* @returns 小程序组件生命周期方法映射(包含 lifetimes 和可能的 data)
|
|
171
|
+
*/
|
|
172
|
+
createComponentLifecycle(hooks: Record<string, Function>): Record<string, any>;
|
|
173
|
+
/**
|
|
174
|
+
* 包装组件为小程序格式
|
|
175
|
+
*
|
|
176
|
+
* 将 Lyt.js 组件对象包装为小程序 Component() 所需的格式。
|
|
177
|
+
* 自动处理生命周期映射、data 提取、方法合并等。
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* wrapComponent({
|
|
181
|
+
* setup() {
|
|
182
|
+
* return { count: 0, message: 'Hello' };
|
|
183
|
+
* },
|
|
184
|
+
* data: { extra: 'data' },
|
|
185
|
+
* methods: {
|
|
186
|
+
* increment() { this.setData({ count: this.data.count + 1 }); },
|
|
187
|
+
* },
|
|
188
|
+
* onMounted() {
|
|
189
|
+
* console.log('Component ready');
|
|
190
|
+
* },
|
|
191
|
+
* onUnmounted() {
|
|
192
|
+
* console.log('Component detached');
|
|
193
|
+
* },
|
|
194
|
+
* }, 'wechat')
|
|
195
|
+
* // => {
|
|
196
|
+
* // data: { count: 0, message: 'Hello', extra: 'data' },
|
|
197
|
+
* // methods: { increment() { ... } },
|
|
198
|
+
* // lifetimes: {
|
|
199
|
+
* // ready() { console.log('Component ready'); },
|
|
200
|
+
* // detached() { console.log('Component detached'); },
|
|
201
|
+
* // },
|
|
202
|
+
* // }
|
|
203
|
+
*
|
|
204
|
+
* @param component Lyt.js 组件对象
|
|
205
|
+
* @param platform 目标平台(可选,使用实例平台)
|
|
206
|
+
* @returns 小程序 Component 格式的组件定义
|
|
207
|
+
*/
|
|
208
|
+
wrapComponent(component: any, platform?: MiniAppPlatform): any;
|
|
209
|
+
/**
|
|
210
|
+
* 获取当前平台
|
|
211
|
+
*/
|
|
212
|
+
getPlatform(): MiniAppPlatform;
|
|
213
|
+
/**
|
|
214
|
+
* 设置平台
|
|
215
|
+
*/
|
|
216
|
+
setPlatform(platform: MiniAppPlatform): void;
|
|
217
|
+
/**
|
|
218
|
+
* 获取平台特定的生命周期名称差异
|
|
219
|
+
*
|
|
220
|
+
* 返回当前平台与标准微信小程序生命周期的差异说明。
|
|
221
|
+
*/
|
|
222
|
+
getPlatformLifecycleDifferences(platform?: MiniAppPlatform): Record<string, string>;
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=miniapp-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miniapp-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/miniapp/miniapp-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miniapp-renderer.d.ts","sourceRoot":"","sources":["../../../src/miniapp/miniapp-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"miniapp-renderer.d.ts","sourceRoot":"","sources":["../../../src/miniapp/miniapp-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* miniapp-utils.ts - 小程序工具函数集
|
|
3
|
+
*
|
|
4
|
+
* 提供小程序开发中常用的工具函数,包括命名转换、样式处理、
|
|
5
|
+
* JSON 配置生成、属性规范化、WXS 模块包装等。
|
|
6
|
+
* 纯原生零依赖 TypeScript 实现。
|
|
7
|
+
*/
|
|
8
|
+
import { camelToKebab, kebabToCamel } from '@lytjs/common';
|
|
9
|
+
export { camelToKebab, kebabToCamel };
|
|
10
|
+
/**
|
|
11
|
+
* 样式对象转 CSS 字符串
|
|
12
|
+
*
|
|
13
|
+
* 将 JavaScript 样式对象(驼峰命名)转换为 CSS 内联样式字符串(短横线命名)。
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* parseStyleObject({ fontSize: '14px', color: 'red' })
|
|
17
|
+
* // => 'font-size: 14px; color: red'
|
|
18
|
+
*
|
|
19
|
+
* @param style 样式对象
|
|
20
|
+
* @returns CSS 样式字符串
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseStyleObject(style: Record<string, string>): string;
|
|
23
|
+
/**
|
|
24
|
+
* 类对象/字符串转类名字符串
|
|
25
|
+
*
|
|
26
|
+
* 支持以下输入格式:
|
|
27
|
+
* - 字符串:直接返回
|
|
28
|
+
* - 对象:将值为 true 的键名拼接为类名字符串
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* parseClassObject('active bold') // => 'active bold'
|
|
32
|
+
* parseClassObject({ active: true, disabled: false, bold: true })
|
|
33
|
+
* // => 'active bold'
|
|
34
|
+
*
|
|
35
|
+
* @param cls 类对象或字符串
|
|
36
|
+
* @returns 类名字符串
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseClassObject(cls: Record<string, boolean> | string): string;
|
|
39
|
+
/**
|
|
40
|
+
* 页面 JSON 配置项
|
|
41
|
+
*/
|
|
42
|
+
export interface PageJsonConfig {
|
|
43
|
+
/** 导航栏标题文字 */
|
|
44
|
+
navigationBarTitleText?: string;
|
|
45
|
+
/** 引用的自定义组件 */
|
|
46
|
+
usingComponents?: Record<string, string>;
|
|
47
|
+
/** 是否开启下拉刷新 */
|
|
48
|
+
enablePullDownRefresh?: boolean;
|
|
49
|
+
/** 下拉刷新窗口的背景色 */
|
|
50
|
+
backgroundColor?: string;
|
|
51
|
+
/** 下拉刷新 loading 的样式 */
|
|
52
|
+
backgroundTextStyle?: 'dark' | 'light';
|
|
53
|
+
/** 导航栏背景颜色 */
|
|
54
|
+
navigationBarBackgroundColor?: string;
|
|
55
|
+
/** 导航栏标题颜色 */
|
|
56
|
+
navigationBarTextStyle?: 'white' | 'black';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 组件 JSON 配置项
|
|
60
|
+
*/
|
|
61
|
+
export interface ComponentJsonConfig {
|
|
62
|
+
/** 是否为自定义组件(默认 true) */
|
|
63
|
+
component?: boolean;
|
|
64
|
+
/** 引用的自定义组件 */
|
|
65
|
+
usingComponents?: Record<string, string>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 生成页面 JSON 配置字符串
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* generatePageJson({
|
|
72
|
+
* navigationBarTitleText: '首页',
|
|
73
|
+
* enablePullDownRefresh: true,
|
|
74
|
+
* usingComponents: { 'my-comp': '/components/my-comp/index' }
|
|
75
|
+
* })
|
|
76
|
+
* // => '{\n "navigationBarTitleText": "首页",\n ...}'
|
|
77
|
+
*
|
|
78
|
+
* @param config 页面配置项
|
|
79
|
+
* @returns 格式化的 JSON 字符串
|
|
80
|
+
*/
|
|
81
|
+
export declare function generatePageJson(config: PageJsonConfig): string;
|
|
82
|
+
/**
|
|
83
|
+
* 生成组件 JSON 配置字符串
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* generateComponentJson({
|
|
87
|
+
* component: true,
|
|
88
|
+
* usingComponents: { 'child': '/components/child/index' }
|
|
89
|
+
* })
|
|
90
|
+
* // => '{\n "component": true,\n ...}'
|
|
91
|
+
*
|
|
92
|
+
* @param config 组件配置项
|
|
93
|
+
* @returns 格式化的 JSON 字符串
|
|
94
|
+
*/
|
|
95
|
+
export declare function generateComponentJson(config: ComponentJsonConfig): string;
|
|
96
|
+
/**
|
|
97
|
+
* 规范化属性定义结果
|
|
98
|
+
*/
|
|
99
|
+
export interface NormalizedProps {
|
|
100
|
+
/** 小程序 properties 定义 */
|
|
101
|
+
properties: Record<string, any>;
|
|
102
|
+
/** observers 观察器列表 */
|
|
103
|
+
observers: string[];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 规范化属性定义
|
|
107
|
+
*
|
|
108
|
+
* 将 Lyt.js 风格的 props 定义转换为小程序 Component 的 properties 格式。
|
|
109
|
+
* 对于带有 observer 的属性,会额外生成 observers 观察器代码。
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* normalizeProps({
|
|
113
|
+
* title: { type: String, default: 'Hello' },
|
|
114
|
+
* count: { type: Number, observer: 'onCountChange' }
|
|
115
|
+
* })
|
|
116
|
+
* // => {
|
|
117
|
+
* // properties: {
|
|
118
|
+
* // title: { type: String, value: 'Hello' },
|
|
119
|
+
* // count: { type: Number }
|
|
120
|
+
* // },
|
|
121
|
+
* // observers: ['count: function(count) { this.onCountChange(count); }']
|
|
122
|
+
* // }
|
|
123
|
+
*
|
|
124
|
+
* @param props 属性定义对象
|
|
125
|
+
* @returns 规范化后的 properties 和 observers
|
|
126
|
+
*/
|
|
127
|
+
export declare function normalizeProps(props: Record<string, any>): NormalizedProps;
|
|
128
|
+
/**
|
|
129
|
+
* 创建 WXS 模块包装
|
|
130
|
+
*
|
|
131
|
+
* 将 JavaScript 代码包装为 WXS 模块格式。
|
|
132
|
+
* WXS (WeiXin Script) 是微信小程序中运行在渲染层的脚本语言,
|
|
133
|
+
* 语法类似 JavaScript 但有部分限制。
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* createWxsModule('function add(a, b) { return a + b; }')
|
|
137
|
+
* // => 'module.exports = {\n add: add\n};\n// Original code:\nfunction add(a, b) { return a + b; }'
|
|
138
|
+
*
|
|
139
|
+
* @param code JavaScript 代码
|
|
140
|
+
* @returns WXS 模块包装后的代码
|
|
141
|
+
*/
|
|
142
|
+
export declare function createWxsModule(code: string): string;
|
|
143
|
+
/**
|
|
144
|
+
* HTML 转义
|
|
145
|
+
*
|
|
146
|
+
* 将 HTML 特殊字符转换为对应的 HTML 实体。
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* escapeHtml('<div class="test">Hello & World</div>')
|
|
150
|
+
* // => '<div class="test">Hello & World</div>'
|
|
151
|
+
*
|
|
152
|
+
* @param str 需要转义的字符串
|
|
153
|
+
* @returns 转义后的字符串
|
|
154
|
+
*/
|
|
155
|
+
export declare function escapeHtml(str: string): string;
|
|
156
|
+
/**
|
|
157
|
+
* 判断是否为小程序原生组件
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* isNativeTag('view') // => true
|
|
161
|
+
* isNativeTag('my-component') // => false
|
|
162
|
+
* isNativeTag('div') // => false
|
|
163
|
+
*
|
|
164
|
+
* @param tag 标签名
|
|
165
|
+
* @returns 是否为小程序原生组件
|
|
166
|
+
*/
|
|
167
|
+
export declare function isNativeTag(tag: string): boolean;
|
|
168
|
+
//# sourceMappingURL=miniapp-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miniapp-utils.d.ts","sourceRoot":"","sources":["../../../src/miniapp/miniapp-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAMtC;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAOtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,CAa9E;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc;IACd,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe;IACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,eAAe;IACf,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB;IACvB,mBAAmB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,cAAc;IACd,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,cAAc;IACd,sBAAsB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe;IACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA2B/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAWzE;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IAExB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,sBAAsB;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,eAAe,CA8C1E;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgCpD;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAwED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* miniapp/shared-constants.ts - 小程序共享常量
|
|
3
|
+
*
|
|
4
|
+
* 提取小程序渲染器和编译器共用的常量映射,
|
|
5
|
+
* 避免在 miniapp-renderer.ts 和 miniapp-compiler.ts 中重复定义。
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* HTML 标签到小程序组件名的映射
|
|
9
|
+
*
|
|
10
|
+
* 小程序使用自定义组件而非 HTML 标签:
|
|
11
|
+
* - div / section / header 等 → view
|
|
12
|
+
* - span / p / h1-h6 → text
|
|
13
|
+
* - img → image
|
|
14
|
+
* - a → navigator
|
|
15
|
+
* - input → input
|
|
16
|
+
* - scroll → scroll-view
|
|
17
|
+
* - list → (小程序无直接对应,使用 view + wx:for)
|
|
18
|
+
*/
|
|
19
|
+
export declare const MINIAPP_COMPONENT_MAP: Record<string, string>;
|
|
20
|
+
/**
|
|
21
|
+
* DOM 事件名到小程序事件名的映射
|
|
22
|
+
*
|
|
23
|
+
* 小程序使用 bind/catch 前缀绑定事件,事件名与 Web 略有不同:
|
|
24
|
+
* - click → tap(微信/支付宝/字节通用)
|
|
25
|
+
* - input / change / submit 等保持一致
|
|
26
|
+
*/
|
|
27
|
+
export declare const EVENT_PREFIX_MAP: Record<string, string>;
|
|
28
|
+
//# sourceMappingURL=shared-constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-constants.d.ts","sourceRoot":"","sources":["../../../src/miniapp/shared-constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkBxD,CAAC;AAMF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAYnD,CAAC"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* style-compiler.ts - 小程序样式编译器
|
|
3
|
+
*
|
|
4
|
+
* 将 CSS 样式转换为小程序 WXSS 样式。
|
|
5
|
+
* 支持 scoped CSS、CSS 变量转换、rpx 单位转换、
|
|
6
|
+
* 媒体查询处理和样式作用域隔离。
|
|
7
|
+
* 纯原生零依赖 TypeScript 实现。
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* 样式编译选项
|
|
11
|
+
*/
|
|
12
|
+
export interface StyleCompileOptions {
|
|
13
|
+
/** 是否启用 scoped CSS(默认 false) */
|
|
14
|
+
scoped?: boolean;
|
|
15
|
+
/** scoped 标识符(自动生成或手动指定) */
|
|
16
|
+
scopeId?: string;
|
|
17
|
+
/** 是否将 px 转换为 rpx(默认 false) */
|
|
18
|
+
pxToRpx?: boolean;
|
|
19
|
+
/** px 到 rpx 的转换比例(默认 2,即 1px = 2rpx) */
|
|
20
|
+
rpxRatio?: number;
|
|
21
|
+
/** 是否转换 CSS 变量为静态值(默认 true) */
|
|
22
|
+
transformCssVariables?: boolean;
|
|
23
|
+
/** CSS 变量值映射(用于替换 CSS 变量) */
|
|
24
|
+
cssVariables?: Record<string, string>;
|
|
25
|
+
/** 目标平台(默认 'wechat') */
|
|
26
|
+
platform?: 'wechat' | 'alipay' | 'bytedance';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 样式编译结果
|
|
30
|
+
*/
|
|
31
|
+
export interface StyleCompileResult {
|
|
32
|
+
/** 编译后的样式内容 */
|
|
33
|
+
code: string;
|
|
34
|
+
/** scoped 标识符 */
|
|
35
|
+
scopeId: string;
|
|
36
|
+
/** 转换统计信息 */
|
|
37
|
+
stats: {
|
|
38
|
+
/** 转换的 CSS 变量数量 */
|
|
39
|
+
cssVariablesTransformed: number;
|
|
40
|
+
/** 转换的 px 数量 */
|
|
41
|
+
pxTransformed: number;
|
|
42
|
+
/** 添加的 scoped 选择器数量 */
|
|
43
|
+
scopedSelectorsAdded: number;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* MiniAppStyleCompiler - 小程序样式编译器
|
|
48
|
+
*
|
|
49
|
+
* 将 CSS 样式编译为小程序可用的 WXSS 样式。
|
|
50
|
+
*
|
|
51
|
+
* 主要功能:
|
|
52
|
+
* - scoped CSS 支持:自动为选择器添加作用域标识
|
|
53
|
+
* - CSS 变量转换:将 var(--xxx) 替换为实际值
|
|
54
|
+
* - px → rpx 转换:自动将 px 单位转换为 rpx
|
|
55
|
+
* - 不支持属性检测:警告不支持的 CSS 属性
|
|
56
|
+
* - 媒体查询处理:保留或移除不支持的媒体查询
|
|
57
|
+
*
|
|
58
|
+
* 使用示例:
|
|
59
|
+
* ```ts
|
|
60
|
+
* const compiler = new MiniAppStyleCompiler();
|
|
61
|
+
*
|
|
62
|
+
* const result = compiler.compile('.container { color: var(--primary); padding: 16px; }', {
|
|
63
|
+
* scoped: true,
|
|
64
|
+
* pxToRpx: true,
|
|
65
|
+
* cssVariables: { '--primary': '#1890ff' },
|
|
66
|
+
* });
|
|
67
|
+
* console.log(result.code);
|
|
68
|
+
* // => '.container[data-v-abc123] { color: #1890ff; padding: 32rpx; }'
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare class MiniAppStyleCompiler {
|
|
72
|
+
/** 自增 ID 计数器,用于生成唯一的 scopeId */
|
|
73
|
+
private _scopeIdCounter;
|
|
74
|
+
/**
|
|
75
|
+
* 编译 CSS 样式为小程序样式
|
|
76
|
+
*
|
|
77
|
+
* @param css CSS 样式字符串
|
|
78
|
+
* @param options 编译选项
|
|
79
|
+
* @returns 编译结果
|
|
80
|
+
*/
|
|
81
|
+
compile(css: string, options?: StyleCompileOptions): StyleCompileResult;
|
|
82
|
+
/**
|
|
83
|
+
* 编译 scoped CSS
|
|
84
|
+
*
|
|
85
|
+
* 便捷方法,等同于 compile(css, { scoped: true, ...options })
|
|
86
|
+
*
|
|
87
|
+
* @param css CSS 样式字符串
|
|
88
|
+
* @param scopeId scoped 标识符
|
|
89
|
+
* @param options 其他编译选项
|
|
90
|
+
* @returns 编译结果
|
|
91
|
+
*/
|
|
92
|
+
compileScoped(css: string, scopeId?: string, options?: Omit<StyleCompileOptions, 'scoped' | 'scopeId'>): StyleCompileResult;
|
|
93
|
+
/**
|
|
94
|
+
* 仅转换 CSS 变量
|
|
95
|
+
*
|
|
96
|
+
* @param css CSS 样式字符串
|
|
97
|
+
* @param variables CSS 变量映射
|
|
98
|
+
* @returns 替换后的 CSS 字符串
|
|
99
|
+
*/
|
|
100
|
+
transformCssVariables(css: string, variables: Record<string, string>): string;
|
|
101
|
+
/**
|
|
102
|
+
* 仅转换 px 为 rpx
|
|
103
|
+
*
|
|
104
|
+
* @param css CSS 样式字符串
|
|
105
|
+
* @param ratio 转换比例(默认 2)
|
|
106
|
+
* @returns 转换后的 CSS 字符串
|
|
107
|
+
*/
|
|
108
|
+
transformPxToRpx(css: string, ratio?: number): string;
|
|
109
|
+
/**
|
|
110
|
+
* 生成唯一的 scopeId
|
|
111
|
+
*
|
|
112
|
+
* 格式:data-v-{8位随机十六进制}
|
|
113
|
+
*/
|
|
114
|
+
private _generateScopeId;
|
|
115
|
+
/**
|
|
116
|
+
* 移除 CSS 注释
|
|
117
|
+
*/
|
|
118
|
+
private _removeComments;
|
|
119
|
+
/**
|
|
120
|
+
* 转换 CSS 变量
|
|
121
|
+
*
|
|
122
|
+
* 将 var(--variable-name) 和 var(--variable-name, fallback) 替换为实际值。
|
|
123
|
+
* 如果变量未定义,保留 fallback 值;如果也没有 fallback,保留原样。
|
|
124
|
+
*/
|
|
125
|
+
private _transformCssVariables;
|
|
126
|
+
/**
|
|
127
|
+
* 转换 px 为 rpx
|
|
128
|
+
*
|
|
129
|
+
* 将数值型 px 单位转换为 rpx。
|
|
130
|
+
* 注意:不会转换 0px、负值、以及包含 calc() 表达式中的 px。
|
|
131
|
+
*/
|
|
132
|
+
private _transformPxToRpx;
|
|
133
|
+
/**
|
|
134
|
+
* 处理不支持的伪选择器
|
|
135
|
+
*
|
|
136
|
+
* 小程序仅支持 :active 和 :hover。
|
|
137
|
+
* 不支持的伪选择器会被移除并输出警告。
|
|
138
|
+
*/
|
|
139
|
+
private _handleUnsupportedPseudoSelectors;
|
|
140
|
+
/**
|
|
141
|
+
* 处理不支持的 CSS 属性
|
|
142
|
+
*
|
|
143
|
+
* 检测并警告不支持的 CSS 属性。
|
|
144
|
+
*/
|
|
145
|
+
private _handleUnsupportedProperties;
|
|
146
|
+
/**
|
|
147
|
+
* 应用 scoped CSS
|
|
148
|
+
*
|
|
149
|
+
* 为每个 CSS 选择器添加属性选择器 [data-v-xxx],
|
|
150
|
+
* 实现样式作用域隔离。
|
|
151
|
+
*
|
|
152
|
+
* 转换规则:
|
|
153
|
+
* - .container → .container[data-v-xxx]
|
|
154
|
+
* - .item .text → .item .text[data-v-xxx]
|
|
155
|
+
* - .list > li → .list > li[data-v-xxx]
|
|
156
|
+
* - @keyframes 不添加 scoped
|
|
157
|
+
* - @font-face 不添加 scoped
|
|
158
|
+
* - @media 内的选择器添加 scoped
|
|
159
|
+
*/
|
|
160
|
+
private _applyScoped;
|
|
161
|
+
/**
|
|
162
|
+
* 为选择器添加 scoped 属性
|
|
163
|
+
*
|
|
164
|
+
* @param selector CSS 选择器
|
|
165
|
+
* @param scopeId scoped 标识符
|
|
166
|
+
* @returns 添加了 scoped 属性的选择器
|
|
167
|
+
*/
|
|
168
|
+
private _addScopeToSelector;
|
|
169
|
+
/**
|
|
170
|
+
* 处理 @import 语句
|
|
171
|
+
*
|
|
172
|
+
* 小程序支持 @import,但路径需要相对于当前文件。
|
|
173
|
+
* 此处保留 @import 语句不变,仅做基本验证。
|
|
174
|
+
*/
|
|
175
|
+
private _handleImports;
|
|
176
|
+
/**
|
|
177
|
+
* 清理多余空白
|
|
178
|
+
*/
|
|
179
|
+
private _cleanup;
|
|
180
|
+
}
|
|
181
|
+
/** 默认样式编译器实例 */
|
|
182
|
+
export declare const miniAppStyleCompiler: MiniAppStyleCompiler;
|
|
183
|
+
/**
|
|
184
|
+
* 快速编译 CSS 为小程序样式
|
|
185
|
+
*
|
|
186
|
+
* 便捷函数,使用默认编译器实例。
|
|
187
|
+
*
|
|
188
|
+
* @param css CSS 样式字符串
|
|
189
|
+
* @param options 编译选项
|
|
190
|
+
* @returns 编译结果
|
|
191
|
+
*/
|
|
192
|
+
export declare function compileMiniAppStyle(css: string, options?: StyleCompileOptions): StyleCompileResult;
|
|
193
|
+
//# sourceMappingURL=style-compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-compiler.d.ts","sourceRoot":"","sources":["../../../src/miniapp/style-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,KAAK,EAAE;QACL,mBAAmB;QACnB,uBAAuB,EAAE,MAAM,CAAC;QAChC,gBAAgB;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,uBAAuB;QACvB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AA+CD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,oBAAoB;IAC/B,gCAAgC;IAChC,OAAO,CAAC,eAAe,CAAK;IAM5B;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,kBAAkB;IA8D3E;;;;;;;;;OASG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,GAAG,SAAS,CAAM,GAAG,kBAAkB;IAI/H;;;;;;OAMG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAK7E;;;;;;OAMG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM;IASxD;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;;;OAKG;IACH,OAAO,CAAC,iCAAiC;IAiBzC;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IA2BpC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,YAAY;IAsDpB;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAIjB;AAMD,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,sBAA6B,CAAC;AAE/D;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,kBAAkB,CAElG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-renderer.d.ts","sourceRoot":"","sources":["../../../src/native/native-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"native-renderer.d.ts","sourceRoot":"","sources":["../../../src/native/native-renderer.ts"],"names":[],"mappings":"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"}
|