qsh-webview-sdk 2.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.
package/README.md ADDED
@@ -0,0 +1,204 @@
1
+ # UniApp WebView SDK
2
+
3
+ 一个重构后的 UniApp WebView SDK,支持微信小程序和 APP 端的 WebView 与原生端通信。
4
+
5
+ ## 特性
6
+
7
+ - ✅ 支持微信小程序 WebView
8
+ - ✅ 支持 APP 端 (Plus/NVUE/UVUE)
9
+ - ✅ 模块化架构,易于维护
10
+ - ✅ TypeScript 类型支持
11
+ - ✅ UMD 和 ESM 双格式输出
12
+ - ✅ 自动环境检测
13
+
14
+ ## 安装
15
+
16
+ ### NPM 安装
17
+
18
+ ```bash
19
+ npm install @qsh/uni-webview-sdk
20
+ ```
21
+
22
+ ### CDN 引入
23
+
24
+ ```html
25
+ <script src="path/to/uni-webview.umd.js"></script>
26
+ ```
27
+
28
+ ## 使用方法
29
+
30
+ ### 在 HTML 中引入
31
+
32
+ ```html
33
+ <!-- 微信小程序环境(可选)-->
34
+ <script type="text/javascript">
35
+ if (/miniProgram/i.test(navigator.userAgent) && /micromessenger/i.test(navigator.userAgent)) {
36
+ document.write('<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"><\/script>');
37
+ }
38
+ </script>
39
+
40
+ <!-- 引入 UniApp WebView SDK -->
41
+ <script type="text/javascript" src="path/to/uni-webview.umd.js"></script>
42
+ ```
43
+
44
+ ### 基础使用
45
+
46
+ ```javascript
47
+ // 等待 SDK 准备就绪
48
+ document.addEventListener('UniAppJSBridgeReady', function() {
49
+ console.log('SDK 已准备就绪');
50
+ });
51
+
52
+ // 或使用 Promise
53
+ uni.ready().then(() => {
54
+ console.log('SDK 已准备就绪');
55
+ });
56
+ ```
57
+
58
+ ### 导航功能
59
+
60
+ ```javascript
61
+ // 跳转到新页面
62
+ uni.navigateTo({
63
+ url: '/pages/detail/detail?id=1'
64
+ });
65
+
66
+ // 返回上一页
67
+ uni.navigateBack({
68
+ delta: 1
69
+ });
70
+
71
+ // 切换 Tab
72
+ uni.switchTab({
73
+ url: '/pages/home/home'
74
+ });
75
+
76
+ // 重启应用
77
+ uni.reLaunch({
78
+ url: '/pages/index/index'
79
+ });
80
+
81
+ // 重定向
82
+ uni.redirectTo({
83
+ url: '/pages/login/login'
84
+ });
85
+ ```
86
+
87
+ ### 消息通信
88
+
89
+ ```javascript
90
+ // 发送消息到原生端
91
+ uni.postMessage({
92
+ data: {
93
+ action: 'share',
94
+ title: '分享标题',
95
+ content: '分享内容'
96
+ }
97
+ });
98
+
99
+ // 获取环境信息
100
+ uni.getEnv(function(result) {
101
+ console.log('环境信息:', result);
102
+ // result: { miniprogram: true, weixin: true }
103
+ // 或 { app: true, plus: true }
104
+ });
105
+ ```
106
+
107
+ ### 环境检测
108
+
109
+ ```javascript
110
+ // 获取当前环境信息
111
+ const env = uni.environment;
112
+
113
+ console.log('环境类型:', env.type); // 'weixin' | 'plus' | 'nvue' | 'uvue' | 'h5'
114
+ console.log('是否微信小程序:', env.isWeixinMiniProgram);
115
+ console.log('是否 APP:', env.isAppPlus);
116
+ ```
117
+
118
+ ## API 文档
119
+
120
+ ### 导航 API
121
+
122
+ | 方法 | 说明 | 参数 |
123
+ |------|------|------|
124
+ | `navigateTo` | 保留当前页面,跳转到应用内的某个页面 | `{ url: string }` |
125
+ | `navigateBack` | 关闭当前页面,返回上一页面或多级页面 | `{ delta?: number }` |
126
+ | `switchTab` | 跳转到 tabBar 页面 | `{ url: string }` |
127
+ | `reLaunch` | 关闭所有页面,打开到应用内的某个页面 | `{ url: string }` |
128
+ | `redirectTo` | 关闭当前页面,跳转到应用内的某个页面 | `{ url: string }` |
129
+
130
+ ### 消息 API
131
+
132
+ | 方法 | 说明 | 参数 |
133
+ |------|------|------|
134
+ | `postMessage` | 向原生端发送消息 | `{ data?: any }` |
135
+ | `getEnv` | 获取当前环境信息 | `callback: Function` |
136
+
137
+ ### 环境属性
138
+
139
+ | 属性 | 类型 | 说明 |
140
+ |------|------|------|
141
+ | `environment.type` | `string` | 环境类型 |
142
+ | `environment.isWeixinMiniProgram` | `boolean` | 是否微信小程序 |
143
+ | `environment.isAppPlus` | `boolean` | 是否 APP Plus |
144
+ | `environment.isNvue` | `boolean` | 是否 NVUE |
145
+ | `environment.isUvue` | `boolean` | 是否 UVUE |
146
+ | `environment.isUniApp` | `boolean` | 是否 UniApp |
147
+
148
+ ## 开发
149
+
150
+ ### 安装依赖
151
+
152
+ ```bash
153
+ npm install
154
+ ```
155
+
156
+ ### 开发模式
157
+
158
+ ```bash
159
+ npm run dev
160
+ ```
161
+
162
+ ### 构建
163
+
164
+ ```bash
165
+ npm run build
166
+ ```
167
+
168
+ ## 示例文件
169
+
170
+ 项目包含以下示例文件:
171
+
172
+ - `example/test.html` - 完整的测试页面,包含所有功能演示
173
+ - `example/simple.html` - 简单示例,展示基础用法
174
+ - `test.html` - 快速测试页面
175
+
176
+ ## 项目结构
177
+
178
+ ```
179
+ src/
180
+ ├── core/ # 核心模块
181
+ │ ├── environment.js # 环境检测
182
+ │ ├── messenger.js # 消息通信
183
+ │ └── bridge.js # 桥接初始化
184
+ ├── platforms/ # 平台适配
185
+ │ ├── weixin.js # 微信小程序
186
+ │ └── app.js # APP 端
187
+ ├── api/ # API 接口
188
+ │ ├── navigation.js # 导航 API
189
+ │ └── message.js # 消息 API
190
+ ├── index.js # 主入口
191
+ └── index.d.ts # 类型定义
192
+ ```
193
+
194
+ ## 兼容性
195
+
196
+ - 微信小程序 WebView
197
+ - UniApp APP 端 (Android/iOS)
198
+ - H5+ 环境
199
+ - NVUE 页面
200
+ - UVUE 页面 (UniApp X)
201
+
202
+ ## License
203
+
204
+ MIT
@@ -0,0 +1,116 @@
1
+ /**
2
+ * UniApp WebView SDK 类型定义
3
+ */
4
+
5
+ declare namespace UniWebView {
6
+ /**
7
+ * 导航选项
8
+ */
9
+ interface NavigateOptions {
10
+ /** 目标页面路径 */
11
+ url: string;
12
+ }
13
+
14
+ /**
15
+ * 返回选项
16
+ */
17
+ interface NavigateBackOptions {
18
+ /** 返回的页面数,默认1 */
19
+ delta?: number;
20
+ }
21
+
22
+ /**
23
+ * 消息选项
24
+ */
25
+ interface PostMessageOptions {
26
+ /** 要发送的数据 */
27
+ data?: any;
28
+ }
29
+
30
+ /**
31
+ * 环境信息
32
+ */
33
+ interface EnvironmentInfo {
34
+ /** 是否微信小程序环境 */
35
+ miniprogram?: boolean;
36
+ /** 是否微信环境 */
37
+ weixin?: boolean;
38
+ /** 是否 APP 环境 */
39
+ app?: boolean;
40
+ /** 是否 Plus 环境 */
41
+ plus?: boolean;
42
+ /** 是否 NVUE 环境 */
43
+ nvue?: boolean;
44
+ /** 是否 UVUE 环境 */
45
+ uvue?: boolean;
46
+ /** 是否 H5 环境 */
47
+ h5?: boolean;
48
+ }
49
+
50
+ /**
51
+ * 环境对象
52
+ */
53
+ interface Environment {
54
+ /** 是否微信小程序环境 */
55
+ isWeixinMiniProgram: boolean;
56
+ /** 是否 APP Plus 环境 */
57
+ isAppPlus: boolean;
58
+ /** 是否 NVUE 环境 */
59
+ isNvue: boolean;
60
+ /** 是否 UVUE 环境 */
61
+ isUvue: boolean;
62
+ /** 是否 UniApp 环境 */
63
+ isUniApp: boolean;
64
+ /** 是否 Html5Plus 环境 */
65
+ isHtml5Plus: boolean;
66
+ /** 环境类型 */
67
+ type: 'weixin' | 'plus' | 'nvue' | 'uvue' | 'h5';
68
+ }
69
+
70
+ /**
71
+ * WebView 对象接口
72
+ */
73
+ interface WebView {
74
+ navigateTo(options: NavigateOptions): void;
75
+ navigateBack(options?: NavigateBackOptions): void;
76
+ switchTab(options: NavigateOptions): void;
77
+ reLaunch(options: NavigateOptions): void;
78
+ redirectTo(options: NavigateOptions): void;
79
+ postMessage(options?: PostMessageOptions): void;
80
+ getEnv(callback: (info: EnvironmentInfo) => void): void;
81
+ }
82
+
83
+ /**
84
+ * Uni 对象接口
85
+ */
86
+ interface Uni extends WebView {
87
+ /** 环境信息 */
88
+ environment: Environment;
89
+ /** 等待桥接准备就绪 */
90
+ ready(): Promise<void>;
91
+ /** WebView 对象(兼容旧版本) */
92
+ webView: WebView | null;
93
+ }
94
+ }
95
+
96
+ /**
97
+ * 全局 uni 对象
98
+ */
99
+ declare const uni: UniWebView.Uni;
100
+
101
+ /**
102
+ * 模块导出
103
+ */
104
+ export default uni;
105
+
106
+ /**
107
+ * 全局声明
108
+ */
109
+ declare global {
110
+ interface Window {
111
+ uni: UniWebView.Uni;
112
+ UniAppJSBridge?: boolean;
113
+ }
114
+ }
115
+
116
+ export as namespace uni;
@@ -0,0 +1,330 @@
1
+ function u() {
2
+ return window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent);
3
+ }
4
+ function d() {
5
+ return typeof window.plus != "undefined";
6
+ }
7
+ function c() {
8
+ return window.__dcloud_weex_postMessage || window.__dcloud_weex_;
9
+ }
10
+ function p() {
11
+ return window.__uniapp_x_postMessage || window.__uniapp_x_;
12
+ }
13
+ function f() {
14
+ return /uni-app/i.test(navigator.userAgent);
15
+ }
16
+ function _() {
17
+ return /Html5Plus/i.test(navigator.userAgent);
18
+ }
19
+ function S() {
20
+ return p() ? "uvue" : c() ? "nvue" : u() ? "weixin" : d() ? "plus" : "h5";
21
+ }
22
+ const l = {
23
+ isWeixinMiniProgram: u(),
24
+ isAppPlus: d(),
25
+ isNvue: c(),
26
+ isUvue: p(),
27
+ isUniApp: f(),
28
+ isHtml5Plus: _(),
29
+ type: S()
30
+ }, y = /complete|loaded|interactive/;
31
+ function A() {
32
+ window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady", {
33
+ bubbles: !0,
34
+ cancelable: !0
35
+ }));
36
+ }
37
+ function U(e) {
38
+ return f() || _() ? (window.__uniapp_x_postMessage || window.__uniapp_x_ || window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener("DOMContentLoaded", e) : window.plus && y.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener("plusready", e), !0) : !1;
39
+ }
40
+ function W(e) {
41
+ return window.wx && window.wx.miniProgram ? (window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("WeixinJSBridgeReady", e), !0) : !1;
42
+ }
43
+ function R(e) {
44
+ return U(e) || W(e) || document.addEventListener("DOMContentLoaded", e), !0;
45
+ }
46
+ function L() {
47
+ return new Promise((e) => {
48
+ window.UniAppJSBridge ? e() : document.addEventListener("UniAppJSBridgeReady", e, { once: !0 });
49
+ });
50
+ }
51
+ R(A);
52
+ let s = [];
53
+ function O() {
54
+ if (s.length === 0 && window.plus) {
55
+ const e = plus.webview.currentWebview();
56
+ if (!e)
57
+ throw new Error("plus.webview.currentWebview() is undefined");
58
+ const n = e.parent(), t = n ? n.id : e.id;
59
+ s.push(t);
60
+ }
61
+ return s;
62
+ }
63
+ function N(e, n) {
64
+ const t = {
65
+ options: {
66
+ timestamp: +/* @__PURE__ */ new Date()
67
+ },
68
+ name: e,
69
+ arg: n
70
+ };
71
+ if (e === "postMessage") {
72
+ const r = { data: n };
73
+ return window.__uniapp_x_postMessage ? window.__uniapp_x_postMessage(r) : window.__uniapp_x_.postMessage(JSON.stringify(r));
74
+ }
75
+ const o = {
76
+ type: "WEB_INVOKE_APPSERVICE",
77
+ args: {
78
+ data: t,
79
+ webviewIds: s
80
+ }
81
+ };
82
+ window.__uniapp_x_postMessage ? window.__uniapp_x_postMessageToService(o) : window.__uniapp_x_.postMessageToService(JSON.stringify(o));
83
+ }
84
+ function $(e, n) {
85
+ const t = {
86
+ options: {
87
+ timestamp: +/* @__PURE__ */ new Date()
88
+ },
89
+ name: e,
90
+ arg: n
91
+ };
92
+ if (e === "postMessage") {
93
+ const r = { data: [n] };
94
+ return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(r) : window.__dcloud_weex_.postMessage(JSON.stringify(r));
95
+ }
96
+ const o = {
97
+ type: "WEB_INVOKE_APPSERVICE",
98
+ args: {
99
+ data: t,
100
+ webviewIds: s
101
+ }
102
+ };
103
+ window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(o) : window.__dcloud_weex_.postMessageToService(JSON.stringify(o));
104
+ }
105
+ function J(e, n) {
106
+ const t = {
107
+ options: {
108
+ timestamp: +/* @__PURE__ */ new Date()
109
+ },
110
+ name: e,
111
+ arg: n
112
+ }, o = O();
113
+ if (plus.webview.getWebviewById("__uniapp__service"))
114
+ plus.webview.postMessageToUniNView({
115
+ type: "WEB_INVOKE_APPSERVICE",
116
+ args: {
117
+ data: t,
118
+ webviewIds: o
119
+ }
120
+ }, "__uniapp__service");
121
+ else {
122
+ const r = JSON.stringify(t), B = JSON.stringify(o);
123
+ plus.webview.getLaunchWebview().evalJS(
124
+ `UniPlusBridge.subscribeHandler("WEB_INVOKE_APPSERVICE",${r},${B});`
125
+ );
126
+ }
127
+ }
128
+ function V(e, n) {
129
+ const t = {
130
+ options: {
131
+ timestamp: +/* @__PURE__ */ new Date()
132
+ },
133
+ name: e,
134
+ arg: n
135
+ };
136
+ window.parent.postMessage({
137
+ type: "WEB_INVOKE_APPSERVICE",
138
+ data: t,
139
+ pageId: ""
140
+ }, "*");
141
+ }
142
+ function i(e, n) {
143
+ p() ? N(e, n) : c() ? $(e, n) : d() ? J(e, n) : V(e, n);
144
+ }
145
+ function C(e = {}) {
146
+ const { url: n } = e;
147
+ if (window.wx && window.wx.miniProgram)
148
+ return window.wx.miniProgram.navigateTo({
149
+ url: n
150
+ });
151
+ i("navigateTo", {
152
+ url: encodeURI(n)
153
+ });
154
+ }
155
+ function D(e = {}) {
156
+ const { delta: n = 1 } = e;
157
+ if (window.wx && window.wx.miniProgram)
158
+ return window.wx.miniProgram.navigateBack({
159
+ delta: parseInt(n)
160
+ });
161
+ i("navigateBack", {
162
+ delta: parseInt(n)
163
+ });
164
+ }
165
+ function j(e = {}) {
166
+ const { url: n } = e;
167
+ if (window.wx && window.wx.miniProgram)
168
+ return window.wx.miniProgram.switchTab({
169
+ url: n
170
+ });
171
+ i("switchTab", {
172
+ url: encodeURI(n)
173
+ });
174
+ }
175
+ function z(e = {}) {
176
+ const { url: n } = e;
177
+ if (window.wx && window.wx.miniProgram)
178
+ return window.wx.miniProgram.reLaunch({
179
+ url: n
180
+ });
181
+ i("reLaunch", {
182
+ url: encodeURI(n)
183
+ });
184
+ }
185
+ function K(e = {}) {
186
+ const { url: n } = e;
187
+ if (window.wx && window.wx.miniProgram)
188
+ return window.wx.miniProgram.redirectTo({
189
+ url: n
190
+ });
191
+ i("redirectTo", {
192
+ url: encodeURI(n)
193
+ });
194
+ }
195
+ function H(e = {}) {
196
+ const { data: n = {} } = e;
197
+ if (window.wx && window.wx.miniProgram)
198
+ return window.wx.miniProgram.postMessage({
199
+ data: n
200
+ });
201
+ i("postMessage", n);
202
+ }
203
+ function k(e) {
204
+ if (window.wx && window.wx.miniProgram && window.wx.miniProgram.getEnv)
205
+ return window.wx.miniProgram.getEnv(e);
206
+ e({
207
+ miniprogram: !0,
208
+ weixin: !0
209
+ });
210
+ }
211
+ var m = /* @__PURE__ */ Object.freeze({
212
+ __proto__: null,
213
+ getEnv: k,
214
+ navigateBack: D,
215
+ navigateTo: C,
216
+ postMessage: H,
217
+ reLaunch: z,
218
+ redirectTo: K,
219
+ switchTab: j
220
+ });
221
+ function X(e = {}) {
222
+ const { url: n } = e;
223
+ i("navigateTo", {
224
+ url: encodeURI(n)
225
+ });
226
+ }
227
+ function F(e = {}) {
228
+ const { delta: n = 1 } = e;
229
+ i("navigateBack", {
230
+ delta: parseInt(n)
231
+ });
232
+ }
233
+ function G(e = {}) {
234
+ const { url: n } = e;
235
+ i("switchTab", {
236
+ url: encodeURI(n)
237
+ });
238
+ }
239
+ function Y(e = {}) {
240
+ const { url: n } = e;
241
+ i("reLaunch", {
242
+ url: encodeURI(n)
243
+ });
244
+ }
245
+ function q(e = {}) {
246
+ const { url: n } = e;
247
+ i("redirectTo", {
248
+ url: encodeURI(n)
249
+ });
250
+ }
251
+ function Q(e = {}) {
252
+ const { data: n = {} } = e;
253
+ i("postMessage", n);
254
+ }
255
+ function Z(e) {
256
+ const n = {};
257
+ p() ? n.uvue = !0 : c() ? n.nvue = !0 : d() && (n.plus = !0), n.app = !0, e(n);
258
+ }
259
+ var v = /* @__PURE__ */ Object.freeze({
260
+ __proto__: null,
261
+ getEnv: Z,
262
+ navigateBack: F,
263
+ navigateTo: X,
264
+ postMessage: Q,
265
+ reLaunch: Y,
266
+ redirectTo: q,
267
+ switchTab: G
268
+ });
269
+ function w() {
270
+ return u() ? m : v;
271
+ }
272
+ function x(e) {
273
+ return w().navigateTo(e);
274
+ }
275
+ function P(e) {
276
+ return w().navigateBack(e);
277
+ }
278
+ function E(e) {
279
+ return w().switchTab(e);
280
+ }
281
+ function T(e) {
282
+ return w().reLaunch(e);
283
+ }
284
+ function M(e) {
285
+ return w().redirectTo(e);
286
+ }
287
+ function I() {
288
+ return u() ? m : v;
289
+ }
290
+ function b(e = {}) {
291
+ return I().postMessage(e);
292
+ }
293
+ function h(e) {
294
+ return I().getEnv(e);
295
+ }
296
+ const a = {
297
+ // 导航 API
298
+ navigateTo: x,
299
+ navigateBack: P,
300
+ switchTab: E,
301
+ reLaunch: T,
302
+ redirectTo: M,
303
+ // 消息 API
304
+ postMessage: b,
305
+ getEnv: h,
306
+ // 环境信息
307
+ environment: l,
308
+ // 等待桥接准备就绪
309
+ ready: L,
310
+ // WebView 对象(兼容旧版本)
311
+ webView: null
312
+ };
313
+ l.isWeixinMiniProgram ? a.webView = window.wx && window.wx.miniProgram : a.webView = {
314
+ navigateTo: x,
315
+ navigateBack: P,
316
+ switchTab: E,
317
+ reLaunch: T,
318
+ redirectTo: M,
319
+ postMessage: b,
320
+ getEnv: h
321
+ };
322
+ const g = typeof window.uni != "undefined" ? window.uni : {};
323
+ Object.keys(g).forEach((e) => {
324
+ a.hasOwnProperty(e) || (a[e] = g[e]);
325
+ });
326
+ typeof window != "undefined" && (window.uni = a);
327
+ export {
328
+ a as default
329
+ };
330
+ //# sourceMappingURL=uni-webview.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uni-webview.es.js","sources":["../src/core/environment.js","../src/core/bridge.js","../src/core/messenger.js","../src/platforms/weixin.js","../src/platforms/app.js","../src/api/navigation.js","../src/api/message.js","../src/index.js"],"sourcesContent":["/**\r\n * 环境检测模块\r\n * 检测当前运行环境(微信小程序、APP等)\r\n */\r\n\r\n// 检测是否在微信小程序环境\r\nexport function isWeixinMiniProgram() {\r\n return window.wx && \r\n window.wx.miniProgram && \r\n /micromessenger/i.test(navigator.userAgent) && \r\n /miniProgram/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否在 APP 环境 (Plus)\r\nexport function isAppPlus() {\r\n return typeof window.plus !== 'undefined';\r\n}\r\n\r\n// 检测是否在 NVUE 环境\r\nexport function isNvue() {\r\n return window.__dcloud_weex_postMessage || window.__dcloud_weex_;\r\n}\r\n\r\n// 检测是否在 UVUE 环境 (UniApp X)\r\nexport function isUvue() {\r\n return window.__uniapp_x_postMessage || window.__uniapp_x_;\r\n}\r\n\r\n// 检测是否是 UniApp 环境\r\nexport function isUniApp() {\r\n return /uni-app/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否是 Html5Plus 环境\r\nexport function isHtml5Plus() {\r\n return /Html5Plus/i.test(navigator.userAgent);\r\n}\r\n\r\n// 获取当前环境类型\r\nexport function getEnvironment() {\r\n if (isUvue()) {\r\n return 'uvue';\r\n }\r\n if (isNvue()) {\r\n return 'nvue';\r\n }\r\n if (isWeixinMiniProgram()) {\r\n return 'weixin';\r\n }\r\n if (isAppPlus()) {\r\n return 'plus';\r\n }\r\n return 'h5';\r\n}\r\n\r\n// 环境信息对象\r\nexport const environment = {\r\n isWeixinMiniProgram: isWeixinMiniProgram(),\r\n isAppPlus: isAppPlus(),\r\n isNvue: isNvue(),\r\n isUvue: isUvue(),\r\n isUniApp: isUniApp(),\r\n isHtml5Plus: isHtml5Plus(),\r\n type: getEnvironment()\r\n};","/**\r\n * JSBridge 初始化模块\r\n * 负责初始化与原生端的桥接\r\n */\r\n\r\nimport { isUniApp, isHtml5Plus, isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 文档准备状态正则\r\nconst READY_STATE_REGEX = /complete|loaded|interactive/;\r\n\r\n/**\r\n * 触发 JSBridge 准备就绪事件\r\n */\r\nfunction fireJSBridgeReadyEvent() {\r\n window.UniAppJSBridge = true;\r\n document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n}\r\n\r\n/**\r\n * 在 APP 环境初始化\r\n */\r\nfunction initializeInApp(callback) {\r\n if (isUniApp() || isHtml5Plus()) {\r\n if (window.__uniapp_x_postMessage || window.__uniapp_x_ || \r\n window.__dcloud_weex_postMessage || window.__dcloud_weex_) {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n } else if (window.plus && READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('plusready', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 在微信小程序环境初始化\r\n */\r\nfunction initializeInWeixin(callback) {\r\n if (window.wx && window.wx.miniProgram) {\r\n if (window.WeixinJSBridge && window.WeixinJSBridge.invoke) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('WeixinJSBridgeReady', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 初始化 JSBridge\r\n * @param {Function} callback - 初始化完成回调\r\n * @returns {boolean} - 是否成功初始化\r\n */\r\nexport function initializeBridge(callback) {\r\n // 尝试 APP 环境初始化\r\n if (initializeInApp(callback)) {\r\n return true;\r\n }\r\n \r\n // 尝试微信小程序环境初始化\r\n if (initializeInWeixin(callback)) {\r\n return true;\r\n }\r\n \r\n // 默认情况下,在 DOM 加载完成后初始化\r\n document.addEventListener('DOMContentLoaded', callback);\r\n return true;\r\n}\r\n\r\n/**\r\n * 等待 JSBridge 准备就绪\r\n * @returns {Promise}\r\n */\r\nexport function waitForBridge() {\r\n return new Promise((resolve) => {\r\n if (window.UniAppJSBridge) {\r\n resolve();\r\n } else {\r\n document.addEventListener('UniAppJSBridgeReady', resolve, { once: true });\r\n }\r\n });\r\n}\r\n\r\n// 自动初始化\r\ninitializeBridge(fireJSBridgeReadyEvent);","/**\r\n * 消息通信核心模块\r\n * 负责与原生端进行消息通信\r\n */\r\n\r\nimport { isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 存储 webview ID 列表\r\nlet webviewIds = [];\r\n\r\n/**\r\n * 设置 webview ID\r\n * @param {string[]} ids - webview ID 列表\r\n */\r\nexport function setWebviewIds(ids) {\r\n webviewIds = ids;\r\n}\r\n\r\n/**\r\n * 获取当前 webview ID\r\n */\r\nfunction getCurrentWebviewId() {\r\n if (webviewIds.length === 0 && window.plus) {\r\n const currentWebview = plus.webview.currentWebview();\r\n if (!currentWebview) {\r\n throw new Error('plus.webview.currentWebview() is undefined');\r\n }\r\n const parent = currentWebview.parent();\r\n const webviewId = parent ? parent.id : currentWebview.id;\r\n webviewIds.push(webviewId);\r\n }\r\n return webviewIds;\r\n}\r\n\r\n/**\r\n * 发送消息到 UniApp X\r\n */\r\nfunction sendToUniAppX(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: data };\r\n if (window.__uniapp_x_postMessage) {\r\n return window.__uniapp_x_postMessage(postData);\r\n }\r\n return window.__uniapp_x_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__uniapp_x_postMessage) {\r\n window.__uniapp_x_postMessageToService(serviceMessage);\r\n } else {\r\n window.__uniapp_x_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 NVUE\r\n */\r\nfunction sendToNvue(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: [data] };\r\n if (window.__dcloud_weex_postMessage) {\r\n return window.__dcloud_weex_postMessage(postData);\r\n }\r\n return window.__dcloud_weex_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__dcloud_weex_postMessage) {\r\n window.__dcloud_weex_postMessageToService(serviceMessage);\r\n } else {\r\n window.__dcloud_weex_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 Plus 环境\r\n */\r\nfunction sendToPlus(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n const currentWebviewIds = getCurrentWebviewId();\r\n\r\n if (plus.webview.getWebviewById('__uniapp__service')) {\r\n plus.webview.postMessageToUniNView({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: currentWebviewIds\r\n }\r\n }, '__uniapp__service');\r\n } else {\r\n const jsonMessage = JSON.stringify(message);\r\n const jsonWebviewIds = JSON.stringify(currentWebviewIds);\r\n plus.webview.getLaunchWebview().evalJS(\r\n `UniPlusBridge.subscribeHandler(\"WEB_INVOKE_APPSERVICE\",${jsonMessage},${jsonWebviewIds});`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到父窗口(H5环境)\r\n */\r\nfunction sendToParent(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n window.parent.postMessage({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n data: message,\r\n pageId: ''\r\n }, '*');\r\n}\r\n\r\n/**\r\n * 统一消息发送接口\r\n * @param {string} name - 消息名称\r\n * @param {object} data - 消息数据\r\n */\r\nexport function sendMessage(name, data) {\r\n if (isUvue()) {\r\n sendToUniAppX(name, data);\r\n } else if (isNvue()) {\r\n sendToNvue(name, data);\r\n } else if (isAppPlus()) {\r\n sendToPlus(name, data);\r\n } else {\r\n // H5 环境或其他\r\n sendToParent(name, data);\r\n }\r\n}","/**\r\n * 微信小程序平台适配层\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\n\r\n/**\r\n * 微信小程序导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n \r\n // 如果有原生 wx.miniProgram API,优先使用\r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateTo({\r\n url: url\r\n });\r\n }\r\n \r\n // 否则使用消息通信\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateBack({\r\n delta: parseInt(delta)\r\n });\r\n }\r\n \r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.switchTab({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.reLaunch({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.redirectTo({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到微信小程序\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.postMessage({\r\n data: data\r\n });\r\n }\r\n \r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取微信小程序环境信息\r\n */\r\nexport function getEnv(callback) {\r\n if (window.wx && window.wx.miniProgram && window.wx.miniProgram.getEnv) {\r\n return window.wx.miniProgram.getEnv(callback);\r\n }\r\n \r\n // 回调微信环境信息\r\n callback({\r\n miniprogram: true,\r\n weixin: true\r\n });\r\n}","/**\r\n * APP 平台适配层(Plus/Weex/UniX)\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\nimport { isUvue, isNvue, isAppPlus } from '../core/environment.js';\r\n\r\n/**\r\n * APP 导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * APP 切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到 APP\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取 APP 环境信息\r\n */\r\nexport function getEnv(callback) {\r\n const envInfo = {};\r\n \r\n if (isUvue()) {\r\n envInfo.uvue = true;\r\n } else if (isNvue()) {\r\n envInfo.nvue = true;\r\n } else if (isAppPlus()) {\r\n envInfo.plus = true;\r\n }\r\n \r\n envInfo.app = true;\r\n callback(envInfo);\r\n}","/**\r\n * 导航 API 模块\r\n * 提供统一的导航接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的导航实现\r\n */\r\nfunction getPlatformNavigation() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 导航到新页面\r\n * @param {Object} options - 导航选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function navigateTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateTo(options);\r\n}\r\n\r\n/**\r\n * 返回上一页\r\n * @param {Object} options - 返回选项\r\n * @param {number} options.delta - 返回的页面数,默认1\r\n */\r\nexport function navigateBack(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateBack(options);\r\n}\r\n\r\n/**\r\n * 切换 Tab 页面\r\n * @param {Object} options - 切换选项\r\n * @param {string} options.url - 目标 Tab 页面路径\r\n */\r\nexport function switchTab(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.switchTab(options);\r\n}\r\n\r\n/**\r\n * 关闭所有页面,打开到应用内的某个页面\r\n * @param {Object} options - 重启选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function reLaunch(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.reLaunch(options);\r\n}\r\n\r\n/**\r\n * 关闭当前页面,跳转到应用内的某个页面\r\n * @param {Object} options - 重定向选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function redirectTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.redirectTo(options);\r\n}","/**\r\n * 消息通信 API 模块\r\n * 提供与原生端的消息通信接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的消息实现\r\n */\r\nfunction getPlatformMessage() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 向原生端发送消息\r\n * @param {Object} options - 消息选项\r\n * @param {Object} options.data - 要发送的数据\r\n */\r\nexport function postMessage(options = {}) {\r\n const platform = getPlatformMessage();\r\n return platform.postMessage(options);\r\n}\r\n\r\n/**\r\n * 获取当前环境信息\r\n * @param {Function} callback - 回调函数\r\n */\r\nexport function getEnv(callback) {\r\n const platform = getPlatformMessage();\r\n return platform.getEnv(callback);\r\n}","/**\r\n * UniApp WebView SDK\r\n * 支持微信小程序和 APP 端的 WebView 通信\r\n */\r\n\r\n// 导入核心模块\r\nimport { waitForBridge } from './core/bridge.js';\r\nimport { environment } from './core/environment.js';\r\n\r\n// 导入 API 模块\r\nimport { \r\n navigateTo, \r\n navigateBack, \r\n switchTab, \r\n reLaunch, \r\n redirectTo \r\n} from './api/navigation.js';\r\n\r\nimport { \r\n postMessage, \r\n getEnv \r\n} from './api/message.js';\r\n\r\n// 导入平台特定 API\r\nimport * as weixinPlatform from './platforms/weixin.js';\r\nimport * as appPlatform from './platforms/app.js';\r\n\r\n// 创建 uni 对象\r\nconst uni = {\r\n // 导航 API\r\n navigateTo,\r\n navigateBack,\r\n switchTab,\r\n reLaunch,\r\n redirectTo,\r\n \r\n // 消息 API\r\n postMessage,\r\n getEnv,\r\n \r\n // 环境信息\r\n environment,\r\n \r\n // 等待桥接准备就绪\r\n ready: waitForBridge,\r\n \r\n // WebView 对象(兼容旧版本)\r\n webView: null\r\n};\r\n\r\n// 设置 webView 对象\r\nif (environment.isWeixinMiniProgram) {\r\n uni.webView = window.wx && window.wx.miniProgram;\r\n} else {\r\n uni.webView = {\r\n navigateTo,\r\n navigateBack,\r\n switchTab,\r\n reLaunch,\r\n redirectTo,\r\n postMessage,\r\n getEnv\r\n };\r\n}\r\n\r\n// 保留对原始 uni 对象的引用(如果存在)\r\nconst originalUni = typeof window.uni !== 'undefined' ? window.uni : {};\r\n\r\n// 合并原有的 uni 对象属性(如果存在)\r\nObject.keys(originalUni).forEach(key => {\r\n if (!uni.hasOwnProperty(key)) {\r\n uni[key] = originalUni[key];\r\n }\r\n});\r\n\r\n// 导出\r\nexport default uni;\r\n\r\n// 自动挂载到全局(UMD 模式)\r\nif (typeof window !== 'undefined') {\r\n window.uni = uni;\r\n}"],"names":["isWeixinMiniProgram","isAppPlus","isNvue","isUvue","isUniApp","isHtml5Plus","getEnvironment","environment","READY_STATE_REGEX","fireJSBridgeReadyEvent","initializeInApp","callback","initializeInWeixin","initializeBridge","waitForBridge","resolve","webviewIds","getCurrentWebviewId","currentWebview","parent","webviewId","sendToUniAppX","name","data","message","postData","serviceMessage","sendToNvue","sendToPlus","currentWebviewIds","jsonMessage","jsonWebviewIds","sendToParent","sendMessage","navigateTo","options","url","navigateBack","delta","switchTab","reLaunch","redirectTo","postMessage","getEnv","envInfo","getPlatformNavigation","weixinPlatform","appPlatform","getPlatformMessage","uni","originalUni","key"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (function(o,r){typeof exports=="object"&&typeof module!="undefined"?module.exports=r():typeof define=="function"&&define.amd?define(r):(o=typeof globalThis!="undefined"?globalThis:o||self,o.uni=r())})(this,function(){"use strict";function o(){return window.wx&&window.wx.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent)}function r(){return typeof window.plus!="undefined"}function c(){return window.__dcloud_weex_postMessage||window.__dcloud_weex_}function p(){return window.__uniapp_x_postMessage||window.__uniapp_x_}function g(){return/uni-app/i.test(navigator.userAgent)}function f(){return/Html5Plus/i.test(navigator.userAgent)}function B(){return p()?"uvue":c()?"nvue":o()?"weixin":r()?"plus":"h5"}const _={isWeixinMiniProgram:o(),isAppPlus:r(),isNvue:c(),isUvue:p(),isUniApp:g(),isHtml5Plus:f(),type:B()},S=/complete|loaded|interactive/;function y(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))}function A(e){return g()||f()?(window.__uniapp_x_postMessage||window.__uniapp_x_||window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&S.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),!0):!1}function U(e){return window.wx&&window.wx.miniProgram?(window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),!0):!1}function W(e){return A(e)||U(e)||document.addEventListener("DOMContentLoaded",e),!0}function R(){return new Promise(e=>{window.UniAppJSBridge?e():document.addEventListener("UniAppJSBridgeReady",e,{once:!0})})}W(y);let w=[];function L(){if(w.length===0&&window.plus){const e=plus.webview.currentWebview();if(!e)throw new Error("plus.webview.currentWebview() is undefined");const n=e.parent(),t=n?n.id:e.id;w.push(t)}return w}function O(e,n){const t={options:{timestamp:+new Date},name:e,arg:n};if(e==="postMessage"){const a={data:n};return window.__uniapp_x_postMessage?window.__uniapp_x_postMessage(a):window.__uniapp_x_.postMessage(JSON.stringify(a))}const s={type:"WEB_INVOKE_APPSERVICE",args:{data:t,webviewIds:w}};window.__uniapp_x_postMessage?window.__uniapp_x_postMessageToService(s):window.__uniapp_x_.postMessageToService(JSON.stringify(s))}function N(e,n){const t={options:{timestamp:+new Date},name:e,arg:n};if(e==="postMessage"){const a={data:[n]};return window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(a):window.__dcloud_weex_.postMessage(JSON.stringify(a))}const s={type:"WEB_INVOKE_APPSERVICE",args:{data:t,webviewIds:w}};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessageToService(s):window.__dcloud_weex_.postMessageToService(JSON.stringify(s))}function $(e,n){const t={options:{timestamp:+new Date},name:e,arg:n},s=L();if(plus.webview.getWebviewById("__uniapp__service"))plus.webview.postMessageToUniNView({type:"WEB_INVOKE_APPSERVICE",args:{data:t,webviewIds:s}},"__uniapp__service");else{const a=JSON.stringify(t),Z=JSON.stringify(s);plus.webview.getLaunchWebview().evalJS(`UniPlusBridge.subscribeHandler("WEB_INVOKE_APPSERVICE",${a},${Z});`)}}function J(e,n){const t={options:{timestamp:+new Date},name:e,arg:n};window.parent.postMessage({type:"WEB_INVOKE_APPSERVICE",data:t,pageId:""},"*")}function i(e,n){p()?O(e,n):c()?N(e,n):r()?$(e,n):J(e,n)}function V(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.navigateTo({url:n});i("navigateTo",{url:encodeURI(n)})}function C(e={}){const{delta:n=1}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.navigateBack({delta:parseInt(n)});i("navigateBack",{delta:parseInt(n)})}function D(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.switchTab({url:n});i("switchTab",{url:encodeURI(n)})}function j(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.reLaunch({url:n});i("reLaunch",{url:encodeURI(n)})}function z(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.redirectTo({url:n});i("redirectTo",{url:encodeURI(n)})}function K(e={}){const{data:n={}}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.postMessage({data:n});i("postMessage",n)}function H(e){if(window.wx&&window.wx.miniProgram&&window.wx.miniProgram.getEnv)return window.wx.miniProgram.getEnv(e);e({miniprogram:!0,weixin:!0})}var l=Object.freeze({__proto__:null,getEnv:H,navigateBack:C,navigateTo:V,postMessage:K,reLaunch:j,redirectTo:z,switchTab:D});function k(e={}){const{url:n}=e;i("navigateTo",{url:encodeURI(n)})}function X(e={}){const{delta:n=1}=e;i("navigateBack",{delta:parseInt(n)})}function F(e={}){const{url:n}=e;i("switchTab",{url:encodeURI(n)})}function G(e={}){const{url:n}=e;i("reLaunch",{url:encodeURI(n)})}function Y(e={}){const{url:n}=e;i("redirectTo",{url:encodeURI(n)})}function q(e={}){const{data:n={}}=e;i("postMessage",n)}function Q(e){const n={};p()?n.uvue=!0:c()?n.nvue=!0:r()&&(n.plus=!0),n.app=!0,e(n)}var m=Object.freeze({__proto__:null,getEnv:Q,navigateBack:X,navigateTo:k,postMessage:q,reLaunch:G,redirectTo:Y,switchTab:F});function d(){return o()?l:m}function v(e){return d().navigateTo(e)}function x(e){return d().navigateBack(e)}function P(e){return d().switchTab(e)}function E(e){return d().reLaunch(e)}function T(e){return d().redirectTo(e)}function M(){return o()?l:m}function b(e={}){return M().postMessage(e)}function I(e){return M().getEnv(e)}const u={navigateTo:v,navigateBack:x,switchTab:P,reLaunch:E,redirectTo:T,postMessage:b,getEnv:I,environment:_,ready:R,webView:null};_.isWeixinMiniProgram?u.webView=window.wx&&window.wx.miniProgram:u.webView={navigateTo:v,navigateBack:x,switchTab:P,reLaunch:E,redirectTo:T,postMessage:b,getEnv:I};const h=typeof window.uni!="undefined"?window.uni:{};return Object.keys(h).forEach(e=>{u.hasOwnProperty(e)||(u[e]=h[e])}),typeof window!="undefined"&&(window.uni=u),u});
2
+ //# sourceMappingURL=uni-webview.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uni-webview.umd.js","sources":["../src/core/environment.js","../src/core/bridge.js","../src/core/messenger.js","../src/platforms/weixin.js","../src/platforms/app.js","../src/api/navigation.js","../src/api/message.js","../src/index.js"],"sourcesContent":["/**\r\n * 环境检测模块\r\n * 检测当前运行环境(微信小程序、APP等)\r\n */\r\n\r\n// 检测是否在微信小程序环境\r\nexport function isWeixinMiniProgram() {\r\n return window.wx && \r\n window.wx.miniProgram && \r\n /micromessenger/i.test(navigator.userAgent) && \r\n /miniProgram/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否在 APP 环境 (Plus)\r\nexport function isAppPlus() {\r\n return typeof window.plus !== 'undefined';\r\n}\r\n\r\n// 检测是否在 NVUE 环境\r\nexport function isNvue() {\r\n return window.__dcloud_weex_postMessage || window.__dcloud_weex_;\r\n}\r\n\r\n// 检测是否在 UVUE 环境 (UniApp X)\r\nexport function isUvue() {\r\n return window.__uniapp_x_postMessage || window.__uniapp_x_;\r\n}\r\n\r\n// 检测是否是 UniApp 环境\r\nexport function isUniApp() {\r\n return /uni-app/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否是 Html5Plus 环境\r\nexport function isHtml5Plus() {\r\n return /Html5Plus/i.test(navigator.userAgent);\r\n}\r\n\r\n// 获取当前环境类型\r\nexport function getEnvironment() {\r\n if (isUvue()) {\r\n return 'uvue';\r\n }\r\n if (isNvue()) {\r\n return 'nvue';\r\n }\r\n if (isWeixinMiniProgram()) {\r\n return 'weixin';\r\n }\r\n if (isAppPlus()) {\r\n return 'plus';\r\n }\r\n return 'h5';\r\n}\r\n\r\n// 环境信息对象\r\nexport const environment = {\r\n isWeixinMiniProgram: isWeixinMiniProgram(),\r\n isAppPlus: isAppPlus(),\r\n isNvue: isNvue(),\r\n isUvue: isUvue(),\r\n isUniApp: isUniApp(),\r\n isHtml5Plus: isHtml5Plus(),\r\n type: getEnvironment()\r\n};","/**\r\n * JSBridge 初始化模块\r\n * 负责初始化与原生端的桥接\r\n */\r\n\r\nimport { isUniApp, isHtml5Plus, isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 文档准备状态正则\r\nconst READY_STATE_REGEX = /complete|loaded|interactive/;\r\n\r\n/**\r\n * 触发 JSBridge 准备就绪事件\r\n */\r\nfunction fireJSBridgeReadyEvent() {\r\n window.UniAppJSBridge = true;\r\n document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n}\r\n\r\n/**\r\n * 在 APP 环境初始化\r\n */\r\nfunction initializeInApp(callback) {\r\n if (isUniApp() || isHtml5Plus()) {\r\n if (window.__uniapp_x_postMessage || window.__uniapp_x_ || \r\n window.__dcloud_weex_postMessage || window.__dcloud_weex_) {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n } else if (window.plus && READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('plusready', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 在微信小程序环境初始化\r\n */\r\nfunction initializeInWeixin(callback) {\r\n if (window.wx && window.wx.miniProgram) {\r\n if (window.WeixinJSBridge && window.WeixinJSBridge.invoke) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('WeixinJSBridgeReady', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 初始化 JSBridge\r\n * @param {Function} callback - 初始化完成回调\r\n * @returns {boolean} - 是否成功初始化\r\n */\r\nexport function initializeBridge(callback) {\r\n // 尝试 APP 环境初始化\r\n if (initializeInApp(callback)) {\r\n return true;\r\n }\r\n \r\n // 尝试微信小程序环境初始化\r\n if (initializeInWeixin(callback)) {\r\n return true;\r\n }\r\n \r\n // 默认情况下,在 DOM 加载完成后初始化\r\n document.addEventListener('DOMContentLoaded', callback);\r\n return true;\r\n}\r\n\r\n/**\r\n * 等待 JSBridge 准备就绪\r\n * @returns {Promise}\r\n */\r\nexport function waitForBridge() {\r\n return new Promise((resolve) => {\r\n if (window.UniAppJSBridge) {\r\n resolve();\r\n } else {\r\n document.addEventListener('UniAppJSBridgeReady', resolve, { once: true });\r\n }\r\n });\r\n}\r\n\r\n// 自动初始化\r\ninitializeBridge(fireJSBridgeReadyEvent);","/**\r\n * 消息通信核心模块\r\n * 负责与原生端进行消息通信\r\n */\r\n\r\nimport { isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 存储 webview ID 列表\r\nlet webviewIds = [];\r\n\r\n/**\r\n * 设置 webview ID\r\n * @param {string[]} ids - webview ID 列表\r\n */\r\nexport function setWebviewIds(ids) {\r\n webviewIds = ids;\r\n}\r\n\r\n/**\r\n * 获取当前 webview ID\r\n */\r\nfunction getCurrentWebviewId() {\r\n if (webviewIds.length === 0 && window.plus) {\r\n const currentWebview = plus.webview.currentWebview();\r\n if (!currentWebview) {\r\n throw new Error('plus.webview.currentWebview() is undefined');\r\n }\r\n const parent = currentWebview.parent();\r\n const webviewId = parent ? parent.id : currentWebview.id;\r\n webviewIds.push(webviewId);\r\n }\r\n return webviewIds;\r\n}\r\n\r\n/**\r\n * 发送消息到 UniApp X\r\n */\r\nfunction sendToUniAppX(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: data };\r\n if (window.__uniapp_x_postMessage) {\r\n return window.__uniapp_x_postMessage(postData);\r\n }\r\n return window.__uniapp_x_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__uniapp_x_postMessage) {\r\n window.__uniapp_x_postMessageToService(serviceMessage);\r\n } else {\r\n window.__uniapp_x_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 NVUE\r\n */\r\nfunction sendToNvue(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: [data] };\r\n if (window.__dcloud_weex_postMessage) {\r\n return window.__dcloud_weex_postMessage(postData);\r\n }\r\n return window.__dcloud_weex_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__dcloud_weex_postMessage) {\r\n window.__dcloud_weex_postMessageToService(serviceMessage);\r\n } else {\r\n window.__dcloud_weex_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 Plus 环境\r\n */\r\nfunction sendToPlus(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n const currentWebviewIds = getCurrentWebviewId();\r\n\r\n if (plus.webview.getWebviewById('__uniapp__service')) {\r\n plus.webview.postMessageToUniNView({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: currentWebviewIds\r\n }\r\n }, '__uniapp__service');\r\n } else {\r\n const jsonMessage = JSON.stringify(message);\r\n const jsonWebviewIds = JSON.stringify(currentWebviewIds);\r\n plus.webview.getLaunchWebview().evalJS(\r\n `UniPlusBridge.subscribeHandler(\"WEB_INVOKE_APPSERVICE\",${jsonMessage},${jsonWebviewIds});`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到父窗口(H5环境)\r\n */\r\nfunction sendToParent(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n window.parent.postMessage({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n data: message,\r\n pageId: ''\r\n }, '*');\r\n}\r\n\r\n/**\r\n * 统一消息发送接口\r\n * @param {string} name - 消息名称\r\n * @param {object} data - 消息数据\r\n */\r\nexport function sendMessage(name, data) {\r\n if (isUvue()) {\r\n sendToUniAppX(name, data);\r\n } else if (isNvue()) {\r\n sendToNvue(name, data);\r\n } else if (isAppPlus()) {\r\n sendToPlus(name, data);\r\n } else {\r\n // H5 环境或其他\r\n sendToParent(name, data);\r\n }\r\n}","/**\r\n * 微信小程序平台适配层\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\n\r\n/**\r\n * 微信小程序导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n \r\n // 如果有原生 wx.miniProgram API,优先使用\r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateTo({\r\n url: url\r\n });\r\n }\r\n \r\n // 否则使用消息通信\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateBack({\r\n delta: parseInt(delta)\r\n });\r\n }\r\n \r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.switchTab({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.reLaunch({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.redirectTo({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到微信小程序\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.postMessage({\r\n data: data\r\n });\r\n }\r\n \r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取微信小程序环境信息\r\n */\r\nexport function getEnv(callback) {\r\n if (window.wx && window.wx.miniProgram && window.wx.miniProgram.getEnv) {\r\n return window.wx.miniProgram.getEnv(callback);\r\n }\r\n \r\n // 回调微信环境信息\r\n callback({\r\n miniprogram: true,\r\n weixin: true\r\n });\r\n}","/**\r\n * APP 平台适配层(Plus/Weex/UniX)\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\nimport { isUvue, isNvue, isAppPlus } from '../core/environment.js';\r\n\r\n/**\r\n * APP 导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * APP 切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到 APP\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取 APP 环境信息\r\n */\r\nexport function getEnv(callback) {\r\n const envInfo = {};\r\n \r\n if (isUvue()) {\r\n envInfo.uvue = true;\r\n } else if (isNvue()) {\r\n envInfo.nvue = true;\r\n } else if (isAppPlus()) {\r\n envInfo.plus = true;\r\n }\r\n \r\n envInfo.app = true;\r\n callback(envInfo);\r\n}","/**\r\n * 导航 API 模块\r\n * 提供统一的导航接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的导航实现\r\n */\r\nfunction getPlatformNavigation() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 导航到新页面\r\n * @param {Object} options - 导航选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function navigateTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateTo(options);\r\n}\r\n\r\n/**\r\n * 返回上一页\r\n * @param {Object} options - 返回选项\r\n * @param {number} options.delta - 返回的页面数,默认1\r\n */\r\nexport function navigateBack(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateBack(options);\r\n}\r\n\r\n/**\r\n * 切换 Tab 页面\r\n * @param {Object} options - 切换选项\r\n * @param {string} options.url - 目标 Tab 页面路径\r\n */\r\nexport function switchTab(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.switchTab(options);\r\n}\r\n\r\n/**\r\n * 关闭所有页面,打开到应用内的某个页面\r\n * @param {Object} options - 重启选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function reLaunch(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.reLaunch(options);\r\n}\r\n\r\n/**\r\n * 关闭当前页面,跳转到应用内的某个页面\r\n * @param {Object} options - 重定向选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function redirectTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.redirectTo(options);\r\n}","/**\r\n * 消息通信 API 模块\r\n * 提供与原生端的消息通信接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的消息实现\r\n */\r\nfunction getPlatformMessage() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 向原生端发送消息\r\n * @param {Object} options - 消息选项\r\n * @param {Object} options.data - 要发送的数据\r\n */\r\nexport function postMessage(options = {}) {\r\n const platform = getPlatformMessage();\r\n return platform.postMessage(options);\r\n}\r\n\r\n/**\r\n * 获取当前环境信息\r\n * @param {Function} callback - 回调函数\r\n */\r\nexport function getEnv(callback) {\r\n const platform = getPlatformMessage();\r\n return platform.getEnv(callback);\r\n}","/**\r\n * UniApp WebView SDK\r\n * 支持微信小程序和 APP 端的 WebView 通信\r\n */\r\n\r\n// 导入核心模块\r\nimport { waitForBridge } from './core/bridge.js';\r\nimport { environment } from './core/environment.js';\r\n\r\n// 导入 API 模块\r\nimport { \r\n navigateTo, \r\n navigateBack, \r\n switchTab, \r\n reLaunch, \r\n redirectTo \r\n} from './api/navigation.js';\r\n\r\nimport { \r\n postMessage, \r\n getEnv \r\n} from './api/message.js';\r\n\r\n// 导入平台特定 API\r\nimport * as weixinPlatform from './platforms/weixin.js';\r\nimport * as appPlatform from './platforms/app.js';\r\n\r\n// 创建 uni 对象\r\nconst uni = {\r\n // 导航 API\r\n navigateTo,\r\n navigateBack,\r\n switchTab,\r\n reLaunch,\r\n redirectTo,\r\n \r\n // 消息 API\r\n postMessage,\r\n getEnv,\r\n \r\n // 环境信息\r\n environment,\r\n \r\n // 等待桥接准备就绪\r\n ready: waitForBridge,\r\n \r\n // WebView 对象(兼容旧版本)\r\n webView: null\r\n};\r\n\r\n// 设置 webView 对象\r\nif (environment.isWeixinMiniProgram) {\r\n uni.webView = window.wx && window.wx.miniProgram;\r\n} else {\r\n uni.webView = {\r\n navigateTo,\r\n navigateBack,\r\n switchTab,\r\n reLaunch,\r\n redirectTo,\r\n postMessage,\r\n getEnv\r\n };\r\n}\r\n\r\n// 保留对原始 uni 对象的引用(如果存在)\r\nconst originalUni = typeof window.uni !== 'undefined' ? window.uni : {};\r\n\r\n// 合并原有的 uni 对象属性(如果存在)\r\nObject.keys(originalUni).forEach(key => {\r\n if (!uni.hasOwnProperty(key)) {\r\n uni[key] = originalUni[key];\r\n }\r\n});\r\n\r\n// 导出\r\nexport default uni;\r\n\r\n// 自动挂载到全局(UMD 模式)\r\nif (typeof window !== 'undefined') {\r\n window.uni = uni;\r\n}"],"names":["isWeixinMiniProgram","isAppPlus","isNvue","isUvue","isUniApp","isHtml5Plus","getEnvironment","environment","READY_STATE_REGEX","fireJSBridgeReadyEvent","initializeInApp","callback","initializeInWeixin","initializeBridge","waitForBridge","resolve","webviewIds","getCurrentWebviewId","currentWebview","parent","webviewId","sendToUniAppX","name","data","message","postData","serviceMessage","sendToNvue","sendToPlus","currentWebviewIds","jsonMessage","jsonWebviewIds","sendToParent","sendMessage","navigateTo","options","url","navigateBack","delta","switchTab","reLaunch","redirectTo","postMessage","getEnv","envInfo","getPlatformNavigation","weixinPlatform","appPlatform","getPlatformMessage","uni","originalUni","key"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "qsh-webview-sdk",
3
+ "version": "2.0.0",
4
+ "description": "UniApp WebView SDK for WeChat MiniProgram and App",
5
+ "main": "dist/uni-webview.umd.js",
6
+ "module": "dist/uni-webview.es.js",
7
+ "types": "dist/index.d.ts",
8
+ "scripts": {
9
+ "dev": "vite build --watch",
10
+ "build": "vite build",
11
+ "preview": "vite preview"
12
+ },
13
+ "keywords": [
14
+ "uniapp",
15
+ "webview",
16
+ "sdk",
17
+ "wechat",
18
+ "miniprogram"
19
+ ],
20
+ "author": "",
21
+ "license": "MIT",
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "devDependencies": {
26
+ "@vitejs/plugin-legacy": "^7.1.0",
27
+ "vite": "^7.0.6"
28
+ }
29
+ }