zcw-shared 1.38.2 → 1.39.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 (36) hide show
  1. package/dist/constants/hybridConstants.d.ts +37 -0
  2. package/dist/constants/hybridConstants.js +38 -0
  3. package/dist/constants/hybridConstants.js.map +1 -0
  4. package/dist/functions/hybrid/createBridgeMessage.d.ts +25 -0
  5. package/dist/functions/hybrid/createBridgeMessage.js +33 -0
  6. package/dist/functions/hybrid/createBridgeMessage.js.map +1 -0
  7. package/dist/functions/hybrid/detectBridgeEnvironment.d.ts +11 -0
  8. package/dist/functions/hybrid/detectBridgeEnvironment.js +26 -0
  9. package/dist/functions/hybrid/detectBridgeEnvironment.js.map +1 -0
  10. package/dist/functions/hybrid/generateBridgeMessageId.d.ts +10 -0
  11. package/dist/functions/hybrid/generateBridgeMessageId.js +11 -0
  12. package/dist/functions/hybrid/generateBridgeMessageId.js.map +1 -0
  13. package/dist/functions/hybrid/postBridgeMessage.d.ts +16 -0
  14. package/dist/functions/hybrid/postBridgeMessage.js +68 -0
  15. package/dist/functions/hybrid/postBridgeMessage.js.map +1 -0
  16. package/dist/functions/hybrid/validateBridgeMessage.d.ts +5 -0
  17. package/dist/functions/hybrid/validateBridgeMessage.js +55 -0
  18. package/dist/functions/hybrid/validateBridgeMessage.js.map +1 -0
  19. package/dist/hybrid/constants.d.ts +37 -0
  20. package/dist/hybrid/constants.js +38 -0
  21. package/dist/hybrid/constants.js.map +1 -0
  22. package/dist/hybrid/createBridgeMessage.d.ts +17 -0
  23. package/dist/hybrid/createBridgeMessage.js +81 -0
  24. package/dist/hybrid/createBridgeMessage.js.map +1 -0
  25. package/dist/hybrid/types.d.ts +88 -0
  26. package/dist/hybrid/types.js +2 -0
  27. package/dist/hybrid/types.js.map +1 -0
  28. package/dist/vue-hooks/browser/useBridgeMessage.d.ts +34 -0
  29. package/dist/vue-hooks/browser/useBridgeMessage.js +87 -0
  30. package/dist/vue-hooks/browser/useBridgeMessage.js.map +1 -0
  31. package/dist/vue-hooks/browser/useWechatJSSDK.d.ts +2 -0
  32. package/dist/vue-hooks/browser/useWechatJSSDK.js +16 -1
  33. package/dist/vue-hooks/browser/useWechatJSSDK.js.map +1 -1
  34. package/package.json +9 -3
  35. package/references/hybrid.d.ts +83 -0
  36. package/types/hybrid.d.ts +119 -0
@@ -0,0 +1,37 @@
1
+ export declare const DEFAULT_TIMEOUT = 5000;
2
+ export declare const DEFAULT_RETRY = 0;
3
+ export declare const DEFAULT_ENABLE_LOG = false;
4
+ export declare const MESSAGE_TYPES: {
5
+ readonly REQUEST: "request";
6
+ readonly RESPONSE: "response";
7
+ readonly EVENT: "event";
8
+ readonly ERROR: "error";
9
+ };
10
+ export declare const ACTIONS: {
11
+ readonly SHARE: "share";
12
+ readonly LOGIN: "login";
13
+ readonly PAY: "pay";
14
+ readonly LOCATION: "location";
15
+ readonly FILE: "file";
16
+ readonly SCAN: "scan";
17
+ readonly USER_INFO: "userInfo";
18
+ readonly CUSTOM: "custom";
19
+ };
20
+ export declare const ERROR_CODES: {
21
+ readonly TIMEOUT: "TIMEOUT";
22
+ readonly NOT_AVAILABLE: "NOT_AVAILABLE";
23
+ readonly INVALID_MESSAGE: "INVALID_MESSAGE";
24
+ readonly NETWORK_ERROR: "NETWORK_ERROR";
25
+ readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
26
+ readonly TARGET_NOT_FOUND: "TARGET_NOT_FOUND";
27
+ readonly METHOD_NOT_SUPPORTED: "METHOD_NOT_SUPPORTED";
28
+ };
29
+ export declare const ERROR_MESSAGES: {
30
+ readonly TIMEOUT: "请求超时";
31
+ readonly NOT_AVAILABLE: "当前环境不支持此功能";
32
+ readonly INVALID_MESSAGE: "无效的消息格式";
33
+ readonly NETWORK_ERROR: "网络错误";
34
+ readonly UNKNOWN_ERROR: "未知错误";
35
+ readonly TARGET_NOT_FOUND: "目标环境未找到";
36
+ readonly METHOD_NOT_SUPPORTED: "不支持的方法";
37
+ };
@@ -0,0 +1,38 @@
1
+ export const DEFAULT_TIMEOUT = 5000;
2
+ export const DEFAULT_RETRY = 0;
3
+ export const DEFAULT_ENABLE_LOG = false;
4
+ export const MESSAGE_TYPES = {
5
+ REQUEST: 'request',
6
+ RESPONSE: 'response',
7
+ EVENT: 'event',
8
+ ERROR: 'error'
9
+ };
10
+ export const ACTIONS = {
11
+ SHARE: 'share',
12
+ LOGIN: 'login',
13
+ PAY: 'pay',
14
+ LOCATION: 'location',
15
+ FILE: 'file',
16
+ SCAN: 'scan',
17
+ USER_INFO: 'userInfo',
18
+ CUSTOM: 'custom'
19
+ };
20
+ export const ERROR_CODES = {
21
+ TIMEOUT: 'TIMEOUT',
22
+ NOT_AVAILABLE: 'NOT_AVAILABLE',
23
+ INVALID_MESSAGE: 'INVALID_MESSAGE',
24
+ NETWORK_ERROR: 'NETWORK_ERROR',
25
+ UNKNOWN_ERROR: 'UNKNOWN_ERROR',
26
+ TARGET_NOT_FOUND: 'TARGET_NOT_FOUND',
27
+ METHOD_NOT_SUPPORTED: 'METHOD_NOT_SUPPORTED'
28
+ };
29
+ export const ERROR_MESSAGES = {
30
+ [ERROR_CODES.TIMEOUT]: '请求超时',
31
+ [ERROR_CODES.NOT_AVAILABLE]: '当前环境不支持此功能',
32
+ [ERROR_CODES.INVALID_MESSAGE]: '无效的消息格式',
33
+ [ERROR_CODES.NETWORK_ERROR]: '网络错误',
34
+ [ERROR_CODES.UNKNOWN_ERROR]: '未知错误',
35
+ [ERROR_CODES.TARGET_NOT_FOUND]: '目标环境未找到',
36
+ [ERROR_CODES.METHOD_NOT_SUPPORTED]: '不支持的方法'
37
+ };
38
+ //# sourceMappingURL=hybridConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hybridConstants.js","sourceRoot":"","sources":["../../src/constants/hybridConstants.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAA;AAC9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;CACN,CAAA;AAEV,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,QAAQ;CACR,CAAA;AAEV,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;CACpC,CAAA;AAEV,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM;IAC7B,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,YAAY;IACzC,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,SAAS;IACxC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM;IACnC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM;IACnC,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,SAAS;IACzC,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,QAAQ;CACpC,CAAA"}
@@ -0,0 +1,25 @@
1
+ import type { RequestMessage, ResponseMessage, EventMessage } from '../../../types/hybrid';
2
+ import type { GenerateBridgeMessageIdDeps } from './generateBridgeMessageId';
3
+ export interface CreateBridgeMessageDeps extends GenerateBridgeMessageIdDeps {
4
+ }
5
+ export interface CreateRequestMessageOptions {
6
+ method: string;
7
+ params?: any;
8
+ }
9
+ export interface CreateResponseMessageOptions {
10
+ requestId: string;
11
+ success: boolean;
12
+ data?: any;
13
+ error?: {
14
+ code: string | number;
15
+ message: string;
16
+ details?: any;
17
+ };
18
+ }
19
+ export interface CreateEventMessageOptions {
20
+ event: string;
21
+ data?: any;
22
+ }
23
+ export declare function createRequestMessage(action: string, deps: CreateBridgeMessageDeps, options: CreateRequestMessageOptions): RequestMessage;
24
+ export declare function createResponseMessage(action: string, deps: CreateBridgeMessageDeps, options: CreateResponseMessageOptions): ResponseMessage;
25
+ export declare function createEventMessage(action: string, deps: CreateBridgeMessageDeps, options: CreateEventMessageOptions): EventMessage;
@@ -0,0 +1,33 @@
1
+ import { generateBridgeMessageId } from './generateBridgeMessageId';
2
+ export function createRequestMessage(action, deps, options) {
3
+ return {
4
+ id: generateBridgeMessageId(deps),
5
+ type: 'request',
6
+ action,
7
+ method: options.method,
8
+ params: options.params,
9
+ timestamp: deps.Date.now()
10
+ };
11
+ }
12
+ export function createResponseMessage(action, deps, options) {
13
+ return {
14
+ id: options.requestId,
15
+ type: 'response',
16
+ action,
17
+ success: options.success,
18
+ data: options.data,
19
+ error: options.error,
20
+ timestamp: deps.Date.now()
21
+ };
22
+ }
23
+ export function createEventMessage(action, deps, options) {
24
+ return {
25
+ id: generateBridgeMessageId(deps),
26
+ type: 'event',
27
+ action,
28
+ event: options.event,
29
+ data: options.data,
30
+ timestamp: deps.Date.now()
31
+ };
32
+ }
33
+ //# sourceMappingURL=createBridgeMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBridgeMessage.js","sourceRoot":"","sources":["../../../src/functions/hybrid/createBridgeMessage.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAgDnE,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,IAA6B,EAC7B,OAAoC;IAEpC,OAAO;QACL,EAAE,EAAE,uBAAuB,CAAC,IAAI,CAAC;QACjC,IAAI,EAAE,SAAS;QACf,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;KAC3B,CAAA;AACH,CAAC;AAKD,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,IAA6B,EAC7B,OAAqC;IAErC,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,SAAS;QACrB,IAAI,EAAE,UAAU;QAChB,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;KAC3B,CAAA;AACH,CAAC;AAKD,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,IAA6B,EAC7B,OAAkC;IAElC,OAAO;QACL,EAAE,EAAE,uBAAuB,CAAC,IAAI,CAAC;QACjC,IAAI,EAAE,OAAO;QACb,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;KAC3B,CAAA;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Environment } from '../../../types/hybrid';
2
+ import type { WxJsSdk, UniWindow } from '../../../references/hybrid.d';
3
+ export interface PlatformDetectionDeps {
4
+ isServer: () => boolean;
5
+ getWindow: () => UniWindow | null;
6
+ getNavigator: () => {
7
+ userAgent: string;
8
+ } | null;
9
+ getWx: () => WxJsSdk | null;
10
+ }
11
+ export declare function detectBridgeEnvironment(deps: PlatformDetectionDeps): Environment;
@@ -0,0 +1,26 @@
1
+ export function detectBridgeEnvironment(deps) {
2
+ if (deps.isServer()) {
3
+ return 'unknown';
4
+ }
5
+ const window = deps.getWindow();
6
+ if (!window) {
7
+ return 'unknown';
8
+ }
9
+ const wx = deps.getWx();
10
+ if (wx && wx.miniProgram) {
11
+ return 'miniapp';
12
+ }
13
+ const navigator = deps.getNavigator();
14
+ const ua = navigator?.userAgent?.toLowerCase() || '';
15
+ if (window.uni && (window.uni.postMessage || window.uni.webView)) {
16
+ return 'app';
17
+ }
18
+ if (window.plus && window.plus.webview) {
19
+ return 'app';
20
+ }
21
+ if (ua.includes('app-webview') || ua.includes('uniapp')) {
22
+ return 'app';
23
+ }
24
+ return 'h5';
25
+ }
26
+ //# sourceMappingURL=detectBridgeEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectBridgeEnvironment.js","sourceRoot":"","sources":["../../../src/functions/hybrid/detectBridgeEnvironment.ts"],"names":[],"mappings":"AA4CA,MAAM,UAAU,uBAAuB,CAAC,IAA2B;IAEjE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QACpB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAA;IAClB,CAAC;IAGD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IACvB,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,SAAS,CAAA;IAClB,CAAC;IAGD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IACrC,MAAM,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IAGpD,IAAK,MAAc,CAAC,GAAG,IAAI,CAAE,MAAc,CAAC,GAAG,CAAC,WAAW,IAAK,MAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5F,OAAO,KAAK,CAAA;IACd,CAAC;IAGD,IAAK,MAAc,CAAC,IAAI,IAAK,MAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACzD,OAAO,KAAK,CAAA;IACd,CAAC;IAGD,IAAI,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAA;IACd,CAAC;IAGD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface GenerateBridgeMessageIdDeps {
2
+ Date: {
3
+ now: typeof Date.now;
4
+ };
5
+ Math: {
6
+ random: typeof Math.random;
7
+ };
8
+ }
9
+ export declare function generateBridgeMessageId(deps: GenerateBridgeMessageIdDeps): string;
10
+ export declare function resetBridgeMessageIdCounter(): void;
@@ -0,0 +1,11 @@
1
+ let messageIdCounter = 0;
2
+ export function generateBridgeMessageId(deps) {
3
+ messageIdCounter++;
4
+ const timestamp = deps.Date.now();
5
+ const random = deps.Math.random().toString(36).substring(2, 9);
6
+ return `msg_${timestamp}_${messageIdCounter}_${random}`;
7
+ }
8
+ export function resetBridgeMessageIdCounter() {
9
+ messageIdCounter = 0;
10
+ }
11
+ //# sourceMappingURL=generateBridgeMessageId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateBridgeMessageId.js","sourceRoot":"","sources":["../../../src/functions/hybrid/generateBridgeMessageId.ts"],"names":[],"mappings":"AAqCA,IAAI,gBAAgB,GAAG,CAAC,CAAA;AAKxB,MAAM,UAAU,uBAAuB,CAAC,IAAiC;IACvE,gBAAgB,EAAE,CAAA;IAClB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9D,OAAO,OAAO,SAAS,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAAA;AACzD,CAAC;AAKD,MAAM,UAAU,2BAA2B;IACzC,gBAAgB,GAAG,CAAC,CAAA;AACtB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { RequestMessage } from '../../../types/hybrid';
2
+ import type { WxJsSdk, UniWindow } from '../../../references/hybrid.d';
3
+ import type { Window } from '../../../references/browser.d';
4
+ import type { setTimeout } from '../../../references/timer.d';
5
+ export interface PostBridgeMessageOptions {
6
+ useTransferPage?: boolean;
7
+ autoNavigateBack?: boolean;
8
+ navigateBackDelay?: number;
9
+ }
10
+ export interface PostBridgeMessageDeps {
11
+ isServer: () => boolean;
12
+ getWindow: () => Window | UniWindow | null;
13
+ getWx: () => WxJsSdk | null;
14
+ setTimeout: typeof setTimeout;
15
+ }
16
+ export declare function postBridgeMessage(message: RequestMessage, direction: 'h5-to-miniapp' | 'h5-to-app', deps: PostBridgeMessageDeps, options?: PostBridgeMessageOptions): Promise<void>;
@@ -0,0 +1,68 @@
1
+ export async function postBridgeMessage(message, direction, deps, options = {}) {
2
+ if (deps.isServer()) {
3
+ throw new Error('服务端环境不支持发送 Bridge 消息');
4
+ }
5
+ const window = deps.getWindow();
6
+ if (!window) {
7
+ throw new Error('window 对象不存在');
8
+ }
9
+ const messageData = {
10
+ ...message,
11
+ from: 'h5',
12
+ direction
13
+ };
14
+ if (direction === 'h5-to-miniapp') {
15
+ const wx = deps.getWx();
16
+ if (!wx || !wx.miniProgram) {
17
+ throw new Error('wx.miniProgram 不可用');
18
+ }
19
+ if (options.useTransferPage) {
20
+ const h5BaseUrl = window.location.origin;
21
+ const messageParam = encodeURIComponent(JSON.stringify(messageData));
22
+ const transferH5Url = `${h5BaseUrl}/bridge-transfer?message=${messageParam}`;
23
+ const miniprogramUrl = `/pages/webview/webview?url=${encodeURIComponent(transferH5Url)}`;
24
+ return new Promise((resolve, reject) => {
25
+ wx.miniProgram.navigateTo({
26
+ url: miniprogramUrl,
27
+ success: () => resolve(),
28
+ fail: (err) => reject(new Error(err.errMsg || '跳转失败'))
29
+ });
30
+ });
31
+ }
32
+ wx.miniProgram.postMessage({ data: messageData });
33
+ if (options.autoNavigateBack) {
34
+ return new Promise((resolve) => {
35
+ deps.setTimeout(() => {
36
+ wx.miniProgram.navigateBack();
37
+ resolve();
38
+ }, options.navigateBackDelay || 300);
39
+ });
40
+ }
41
+ return;
42
+ }
43
+ if (direction === 'h5-to-app') {
44
+ const uniWindow = window;
45
+ if (uniWindow.uni && uniWindow.uni.postMessage) {
46
+ uniWindow.uni.postMessage(messageData);
47
+ return;
48
+ }
49
+ if (uniWindow.uni && uniWindow.uni.webView && uniWindow.uni.webView.postMessage) {
50
+ uniWindow.uni.webView.postMessage(messageData);
51
+ return;
52
+ }
53
+ if (uniWindow.plus && uniWindow.plus.webview) {
54
+ const currentWebview = uniWindow.plus.webview.currentWebview();
55
+ if (currentWebview && currentWebview.parent) {
56
+ currentWebview.parent().evalJS(`
57
+ if (window.handleH5Message) {
58
+ window.handleH5Message(${JSON.stringify(messageData)});
59
+ }
60
+ `);
61
+ return;
62
+ }
63
+ }
64
+ throw new Error('无法找到可用的 App 通信方式');
65
+ }
66
+ throw new Error(`不支持的通信方向: ${direction}`);
67
+ }
68
+ //# sourceMappingURL=postBridgeMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postBridgeMessage.js","sourceRoot":"","sources":["../../../src/functions/hybrid/postBridgeMessage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { BridgeMessage, RequestMessage, ResponseMessage, EventMessage } from '../../../types/hybrid';
2
+ export declare function validateBridgeMessage(message: any): message is BridgeMessage;
3
+ export declare function validateRequestMessage(message: any): message is RequestMessage;
4
+ export declare function validateResponseMessage(message: any): message is ResponseMessage;
5
+ export declare function validateEventMessage(message: any): message is EventMessage;
@@ -0,0 +1,55 @@
1
+ export function validateBridgeMessage(message) {
2
+ if (!message || typeof message !== 'object') {
3
+ return false;
4
+ }
5
+ if (!message.id || typeof message.id !== 'string') {
6
+ return false;
7
+ }
8
+ if (!message.type || typeof message.type !== 'string') {
9
+ return false;
10
+ }
11
+ if (!message.action || typeof message.action !== 'string') {
12
+ return false;
13
+ }
14
+ if (typeof message.timestamp !== 'number') {
15
+ return false;
16
+ }
17
+ return true;
18
+ }
19
+ export function validateRequestMessage(message) {
20
+ if (!validateBridgeMessage(message)) {
21
+ return false;
22
+ }
23
+ if (message.type !== 'request') {
24
+ return false;
25
+ }
26
+ if (!message.method || typeof message.method !== 'string') {
27
+ return false;
28
+ }
29
+ return true;
30
+ }
31
+ export function validateResponseMessage(message) {
32
+ if (!validateBridgeMessage(message)) {
33
+ return false;
34
+ }
35
+ if (message.type !== 'response') {
36
+ return false;
37
+ }
38
+ if (typeof message.success !== 'boolean') {
39
+ return false;
40
+ }
41
+ return true;
42
+ }
43
+ export function validateEventMessage(message) {
44
+ if (!validateBridgeMessage(message)) {
45
+ return false;
46
+ }
47
+ if (message.type !== 'event') {
48
+ return false;
49
+ }
50
+ if (!message.event || typeof message.event !== 'string') {
51
+ return false;
52
+ }
53
+ return true;
54
+ }
55
+ //# sourceMappingURL=validateBridgeMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateBridgeMessage.js","sourceRoot":"","sources":["../../../src/functions/hybrid/validateBridgeMessage.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,qBAAqB,CAAC,OAAY;IAChD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAKD,MAAM,UAAU,sBAAsB,CAAC,OAAY;IACjD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAKD,MAAM,UAAU,uBAAuB,CAAC,OAAY;IAClD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAKD,MAAM,UAAU,oBAAoB,CAAC,OAAY;IAC/C,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,37 @@
1
+ export declare const DEFAULT_TIMEOUT = 5000;
2
+ export declare const DEFAULT_RETRY = 0;
3
+ export declare const DEFAULT_ENABLE_LOG = false;
4
+ export declare const MESSAGE_TYPES: {
5
+ readonly REQUEST: "request";
6
+ readonly RESPONSE: "response";
7
+ readonly EVENT: "event";
8
+ readonly ERROR: "error";
9
+ };
10
+ export declare const ACTIONS: {
11
+ readonly SHARE: "share";
12
+ readonly LOGIN: "login";
13
+ readonly PAY: "pay";
14
+ readonly LOCATION: "location";
15
+ readonly FILE: "file";
16
+ readonly SCAN: "scan";
17
+ readonly USER_INFO: "userInfo";
18
+ readonly CUSTOM: "custom";
19
+ };
20
+ export declare const ERROR_CODES: {
21
+ readonly TIMEOUT: "TIMEOUT";
22
+ readonly NOT_AVAILABLE: "NOT_AVAILABLE";
23
+ readonly INVALID_MESSAGE: "INVALID_MESSAGE";
24
+ readonly NETWORK_ERROR: "NETWORK_ERROR";
25
+ readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
26
+ readonly TARGET_NOT_FOUND: "TARGET_NOT_FOUND";
27
+ readonly METHOD_NOT_SUPPORTED: "METHOD_NOT_SUPPORTED";
28
+ };
29
+ export declare const ERROR_MESSAGES: {
30
+ readonly TIMEOUT: "请求超时";
31
+ readonly NOT_AVAILABLE: "当前环境不支持此功能";
32
+ readonly INVALID_MESSAGE: "无效的消息格式";
33
+ readonly NETWORK_ERROR: "网络错误";
34
+ readonly UNKNOWN_ERROR: "未知错误";
35
+ readonly TARGET_NOT_FOUND: "目标环境未找到";
36
+ readonly METHOD_NOT_SUPPORTED: "不支持的方法";
37
+ };
@@ -0,0 +1,38 @@
1
+ export const DEFAULT_TIMEOUT = 5000;
2
+ export const DEFAULT_RETRY = 0;
3
+ export const DEFAULT_ENABLE_LOG = false;
4
+ export const MESSAGE_TYPES = {
5
+ REQUEST: 'request',
6
+ RESPONSE: 'response',
7
+ EVENT: 'event',
8
+ ERROR: 'error'
9
+ };
10
+ export const ACTIONS = {
11
+ SHARE: 'share',
12
+ LOGIN: 'login',
13
+ PAY: 'pay',
14
+ LOCATION: 'location',
15
+ FILE: 'file',
16
+ SCAN: 'scan',
17
+ USER_INFO: 'userInfo',
18
+ CUSTOM: 'custom'
19
+ };
20
+ export const ERROR_CODES = {
21
+ TIMEOUT: 'TIMEOUT',
22
+ NOT_AVAILABLE: 'NOT_AVAILABLE',
23
+ INVALID_MESSAGE: 'INVALID_MESSAGE',
24
+ NETWORK_ERROR: 'NETWORK_ERROR',
25
+ UNKNOWN_ERROR: 'UNKNOWN_ERROR',
26
+ TARGET_NOT_FOUND: 'TARGET_NOT_FOUND',
27
+ METHOD_NOT_SUPPORTED: 'METHOD_NOT_SUPPORTED'
28
+ };
29
+ export const ERROR_MESSAGES = {
30
+ [ERROR_CODES.TIMEOUT]: '请求超时',
31
+ [ERROR_CODES.NOT_AVAILABLE]: '当前环境不支持此功能',
32
+ [ERROR_CODES.INVALID_MESSAGE]: '无效的消息格式',
33
+ [ERROR_CODES.NETWORK_ERROR]: '网络错误',
34
+ [ERROR_CODES.UNKNOWN_ERROR]: '未知错误',
35
+ [ERROR_CODES.TARGET_NOT_FOUND]: '目标环境未找到',
36
+ [ERROR_CODES.METHOD_NOT_SUPPORTED]: '不支持的方法'
37
+ };
38
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/hybrid/constants.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAA;AAC9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;CACN,CAAA;AAEV,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,QAAQ;CACR,CAAA;AAEV,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;CACpC,CAAA;AAEV,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM;IAC7B,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,YAAY;IACzC,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,SAAS;IACxC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM;IACnC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM;IACnC,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,SAAS;IACzC,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,QAAQ;CACpC,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { PlatformDeps } from './types';
2
+ export interface BridgeMessageData {
3
+ [key: string]: any;
4
+ }
5
+ export interface SendOptions {
6
+ useTransferPage?: boolean;
7
+ autoNavigateBack?: boolean;
8
+ navigateBackDelay?: number;
9
+ }
10
+ export declare function createBridgeMessage(deps: PlatformDeps): {
11
+ environment: string;
12
+ postMessage: (data: BridgeMessageData, options?: SendOptions) => Promise<void>;
13
+ loadWechatJSSDK: () => Promise<void>;
14
+ isInWechatMiniprogram: () => boolean;
15
+ isInAppWebview: () => boolean;
16
+ isBridgeSupported: () => boolean;
17
+ };
@@ -0,0 +1,81 @@
1
+ export function createBridgeMessage(deps) {
2
+ const { window: win, navigator: nav, isServer, setTimeout, clearTimeout, setInterval, clearInterval } = deps;
3
+ const detectEnvironment = () => {
4
+ if (isServer())
5
+ return 'unknown';
6
+ if (!win)
7
+ return 'unknown';
8
+ const ua = nav?.userAgent?.toLowerCase() || '';
9
+ if (ua.includes('miniprogram') || (win.wx && win.wx.miniProgram)) {
10
+ return 'wechat-miniprogram';
11
+ }
12
+ if (win.self !== win.top || ua.includes('app-webview') || ua.includes('uniapp') || win.uni) {
13
+ return 'app-webview';
14
+ }
15
+ return 'browser';
16
+ };
17
+ const environment = detectEnvironment();
18
+ const loadWechatJSSDK = () => {
19
+ if (isServer() || !win)
20
+ return Promise.reject(new Error('服务端环境'));
21
+ return new Promise((resolve, reject) => {
22
+ if (win.wx && win.wx.miniProgram) {
23
+ resolve();
24
+ return;
25
+ }
26
+ const script = win.document.createElement('script');
27
+ script.src = 'https://res.wx.qq.com/open/js/jweixin-1.3.2.js';
28
+ script.onload = () => {
29
+ const check = setInterval(() => {
30
+ if (win.wx && win.wx.miniProgram) {
31
+ clearInterval(check);
32
+ resolve();
33
+ }
34
+ }, 50);
35
+ setTimeout(() => { clearInterval(check); reject(new Error('超时')); }, 3000);
36
+ };
37
+ script.onerror = () => reject(new Error('加载失败'));
38
+ win.document.head.appendChild(script);
39
+ });
40
+ };
41
+ const postMessage = async (data, options) => {
42
+ if (isServer() || !win)
43
+ throw new Error('服务端环境');
44
+ await loadWechatJSSDK();
45
+ const wx = win.wx;
46
+ if (!wx || !wx.miniProgram)
47
+ throw new Error('wx.miniProgram 不可用');
48
+ if (environment === 'wechat-miniprogram' && options?.useTransferPage) {
49
+ const messageData = { ...data, timestamp: Date.now(), source: 'h5-webview' };
50
+ const h5BaseUrl = win.location.origin;
51
+ const messageParam = encodeURIComponent(JSON.stringify(messageData));
52
+ const transferH5Url = `${h5BaseUrl}/bridge-transfer?message=${messageParam}`;
53
+ const miniprogramUrl = `/pages/webview/webview?url=${encodeURIComponent(transferH5Url)}`;
54
+ return new Promise((resolve, reject) => {
55
+ wx.miniProgram.navigateTo({
56
+ url: miniprogramUrl,
57
+ success: () => resolve(),
58
+ fail: (err) => reject(new Error(err.errMsg || '跳转失败'))
59
+ });
60
+ });
61
+ }
62
+ wx.miniProgram.postMessage({ data: { ...data, timestamp: Date.now() } });
63
+ if (options?.autoNavigateBack) {
64
+ return new Promise((resolve) => {
65
+ setTimeout(() => {
66
+ wx.miniProgram.navigateBack();
67
+ resolve();
68
+ }, options.navigateBackDelay || 300);
69
+ });
70
+ }
71
+ };
72
+ return {
73
+ environment,
74
+ postMessage,
75
+ loadWechatJSSDK,
76
+ isInWechatMiniprogram: () => environment === 'wechat-miniprogram',
77
+ isInAppWebview: () => environment === 'app-webview',
78
+ isBridgeSupported: () => environment === 'wechat-miniprogram' || environment === 'app-webview'
79
+ };
80
+ }
81
+ //# sourceMappingURL=createBridgeMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBridgeMessage.js","sourceRoot":"","sources":["../../src/hybrid/createBridgeMessage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ export type Environment = 'h5' | 'miniapp' | 'app' | 'unknown';
2
+ export type BridgeDirection = 'h5-to-miniapp' | 'h5-to-app' | 'miniapp-to-h5' | 'app-to-h5';
3
+ export type MessageType = 'request' | 'response' | 'event' | 'error';
4
+ export interface BaseMessage {
5
+ id: string;
6
+ type: MessageType;
7
+ action: string;
8
+ method?: string;
9
+ timestamp: number;
10
+ }
11
+ export interface RequestMessage extends BaseMessage {
12
+ type: 'request';
13
+ method: string;
14
+ params?: any;
15
+ }
16
+ export interface ResponseMessage extends BaseMessage {
17
+ type: 'response';
18
+ success: boolean;
19
+ data?: any;
20
+ error?: {
21
+ code: string | number;
22
+ message: string;
23
+ details?: any;
24
+ };
25
+ }
26
+ export interface EventMessage extends BaseMessage {
27
+ type: 'event';
28
+ event: string;
29
+ data?: any;
30
+ }
31
+ export interface ErrorMessage extends BaseMessage {
32
+ type: 'error';
33
+ error: {
34
+ code: string | number;
35
+ message: string;
36
+ details?: any;
37
+ };
38
+ }
39
+ export type BridgeMessage = RequestMessage | ResponseMessage | EventMessage | ErrorMessage;
40
+ export type MessageHandler = (message: BridgeMessage) => void | Promise<void>;
41
+ export type EventListener = (data?: any) => void;
42
+ export interface BridgeOptions {
43
+ timeout?: number;
44
+ retry?: number;
45
+ enableLog?: boolean;
46
+ useTransferPage?: boolean;
47
+ }
48
+ export interface CapabilityCheck {
49
+ available: boolean;
50
+ reason?: string;
51
+ details?: any;
52
+ }
53
+ export interface PendingRequest {
54
+ id: string;
55
+ resolve: (value: ResponseMessage) => void;
56
+ reject: (error: any) => void;
57
+ timeout: any;
58
+ timestamp: number;
59
+ }
60
+ export interface PlatformDeps {
61
+ window: {
62
+ wx?: any;
63
+ uni?: any;
64
+ plus?: any;
65
+ document: {
66
+ createElement: (tag: string) => any;
67
+ querySelector: (selector: string) => any;
68
+ head: {
69
+ appendChild: (el: any) => any;
70
+ };
71
+ };
72
+ location: {
73
+ origin: string;
74
+ href: string;
75
+ };
76
+ self: any;
77
+ top: any;
78
+ parent: any;
79
+ };
80
+ navigator: {
81
+ userAgent: string;
82
+ };
83
+ isServer: () => boolean;
84
+ setTimeout: (callback: () => void, ms: number) => any;
85
+ clearTimeout: (id: any) => void;
86
+ setInterval: (callback: () => void, ms: number) => any;
87
+ clearInterval: (id: any) => void;
88
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hybrid/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import type { PostBridgeMessageOptions } from '../../functions/hybrid/postBridgeMessage';
2
+ import type { PlatformDeps } from '../../../types/hybrid';
3
+ export type { PostBridgeMessageOptions as SendOptions };
4
+ export interface UseBridgeMessageDeps extends PlatformDeps {
5
+ vue: {
6
+ ref: <T>(value: T) => {
7
+ value: T;
8
+ };
9
+ };
10
+ getWx: () => any;
11
+ setTimeout: (callback: () => void, ms: number) => any;
12
+ }
13
+ export declare function useBridgeMessage(deps: UseBridgeMessageDeps): {
14
+ environment: {
15
+ value: import("../../../types/hybrid").Environment;
16
+ };
17
+ error: {
18
+ value: string | null;
19
+ };
20
+ postBridgeMessage: (data: {
21
+ method: string;
22
+ params?: any;
23
+ [key: string]: any;
24
+ }, options?: PostBridgeMessageOptions) => Promise<void>;
25
+ isInWechatMiniprogram: () => boolean;
26
+ isInAppWebview: () => boolean;
27
+ isBridgeSupported: () => boolean;
28
+ getEnvironmentInfo: () => {
29
+ environment: string;
30
+ userAgent: string;
31
+ isWechat: boolean;
32
+ isWechatMiniprogram: boolean;
33
+ };
34
+ };
@@ -0,0 +1,87 @@
1
+ import { postBridgeMessage } from '../../functions/hybrid/postBridgeMessage';
2
+ import { detectBridgeEnvironment } from '../../functions/hybrid/detectBridgeEnvironment';
3
+ import { createRequestMessage } from '../../functions/hybrid/createBridgeMessage';
4
+ export function useBridgeMessage(deps) {
5
+ const { vue, isServer } = deps;
6
+ const platformDeps = {
7
+ isServer: deps.isServer,
8
+ getWindow: () => deps.window,
9
+ getNavigator: () => deps.navigator,
10
+ getWx: deps.getWx
11
+ };
12
+ const detectedEnv = !isServer() ? detectBridgeEnvironment(platformDeps) : 'unknown';
13
+ const environment = vue.ref(detectedEnv);
14
+ const error = vue.ref(null);
15
+ const isInWechatMiniprogram = () => {
16
+ if (isServer())
17
+ return false;
18
+ const wx = deps.getWx();
19
+ return !!(wx && wx.miniProgram);
20
+ };
21
+ const isInAppWebview = () => {
22
+ if (isServer())
23
+ return false;
24
+ const window = deps.window;
25
+ return !!(window?.uni || window?.plus);
26
+ };
27
+ const isBridgeSupported = () => {
28
+ return isInWechatMiniprogram() || isInAppWebview();
29
+ };
30
+ const postBridgeMessageHook = async (data, options) => {
31
+ if (isServer()) {
32
+ throw new Error('服务端环境不支持');
33
+ }
34
+ error.value = null;
35
+ try {
36
+ let direction = 'h5-to-miniapp';
37
+ if (isInAppWebview()) {
38
+ direction = 'h5-to-app';
39
+ }
40
+ const messageDeps = {
41
+ Date: { now: Date.now },
42
+ Math: { random: Math.random }
43
+ };
44
+ const message = createRequestMessage('custom', messageDeps, {
45
+ method: data.method || 'postMessage',
46
+ params: data.params || data
47
+ });
48
+ const postDeps = {
49
+ isServer: deps.isServer,
50
+ getWindow: () => deps.window,
51
+ getWx: deps.getWx,
52
+ setTimeout: deps.setTimeout
53
+ };
54
+ await postBridgeMessage(message, direction, postDeps, options);
55
+ }
56
+ catch (err) {
57
+ error.value = err.message;
58
+ throw err;
59
+ }
60
+ };
61
+ const getEnvironmentInfo = () => {
62
+ if (isServer()) {
63
+ return {
64
+ environment: 'server',
65
+ userAgent: '',
66
+ isWechat: false,
67
+ isWechatMiniprogram: false
68
+ };
69
+ }
70
+ return {
71
+ environment: detectedEnv,
72
+ userAgent: deps.navigator?.userAgent || '',
73
+ isWechat: !!deps.navigator?.userAgent?.toLowerCase().includes('micromessenger'),
74
+ isWechatMiniprogram: isInWechatMiniprogram()
75
+ };
76
+ };
77
+ return {
78
+ environment,
79
+ error,
80
+ postBridgeMessage: postBridgeMessageHook,
81
+ isInWechatMiniprogram,
82
+ isInAppWebview,
83
+ isBridgeSupported,
84
+ getEnvironmentInfo
85
+ };
86
+ }
87
+ //# sourceMappingURL=useBridgeMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBridgeMessage.js","sourceRoot":"","sources":["../../../src/vue-hooks/browser/useBridgeMessage.ts"],"names":[],"mappings":"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"}
@@ -43,5 +43,7 @@ export interface UseWechatJSSDKReturn {
43
43
  isJSSDKReady: () => boolean;
44
44
  getWx: () => WxWeb | undefined;
45
45
  isWechatBrowser: () => boolean;
46
+ getWechatVersion: () => string | null;
47
+ isWechatMiniProgram: () => boolean;
46
48
  }
47
49
  export declare function useWechatJSSDK(deps: UseWechatJSSDKDeps): UseWechatJSSDKReturn;
@@ -11,6 +11,19 @@ export function useWechatJSSDK(deps) {
11
11
  userAgent: deps.navigator.userAgent
12
12
  });
13
13
  };
14
+ const getWechatVersion = () => {
15
+ if (deps.isServer())
16
+ return null;
17
+ const ua = deps.navigator.userAgent.toLowerCase();
18
+ const match = ua.match(/micromessenger\/([\d.]+)/);
19
+ return match ? match[1] : null;
20
+ };
21
+ const isWechatMiniProgram = () => {
22
+ if (deps.isServer())
23
+ return false;
24
+ const ua = deps.navigator.userAgent.toLowerCase();
25
+ return /miniprogram/.test(ua);
26
+ };
14
27
  const loadWechatJSSDK = () => {
15
28
  return new Promise((resolve, reject) => {
16
29
  if (deps.isServer()) {
@@ -168,7 +181,9 @@ export function useWechatJSSDK(deps) {
168
181
  initWechatJSSDK,
169
182
  isJSSDKReady,
170
183
  getWx,
171
- isWechatBrowser
184
+ isWechatBrowser,
185
+ getWechatVersion,
186
+ isWechatMiniProgram
172
187
  };
173
188
  }
174
189
  //# sourceMappingURL=useWechatJSSDK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWechatJSSDK.js","sourceRoot":"","sources":["../../../src/vue-hooks/browser/useWechatJSSDK.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useWechatJSSDK.js","sourceRoot":"","sources":["../../../src/vue-hooks/browser/useWechatJSSDK.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zcw-shared",
3
- "version": "1.38.2",
3
+ "version": "1.39.0",
4
4
  "files": [
5
5
  "references",
6
6
  "dist",
@@ -24,6 +24,7 @@
24
24
  },
25
25
  "exports": {
26
26
  "./constants/colorPatterns": "./dist/constants/colorPatterns.js",
27
+ "./constants/hybridConstants": "./dist/constants/hybridConstants.js",
27
28
  "./constants/namedColors": "./dist/constants/namedColors.js",
28
29
  "./constants/softwareConfigs": "./dist/constants/softwareConfigs.js",
29
30
  "./functions/ag-grid/generateLicense": "./dist/functions/ag-grid/generateLicense.js",
@@ -146,6 +147,11 @@
146
147
  "./functions/functional/pipe": "./dist/functions/functional/pipe.js",
147
148
  "./functions/functional/tap": "./dist/functions/functional/tap.js",
148
149
  "./functions/functional/until": "./dist/functions/functional/until.js",
150
+ "./functions/hybrid/createBridgeMessage": "./dist/functions/hybrid/createBridgeMessage.js",
151
+ "./functions/hybrid/detectBridgeEnvironment": "./dist/functions/hybrid/detectBridgeEnvironment.js",
152
+ "./functions/hybrid/generateBridgeMessageId": "./dist/functions/hybrid/generateBridgeMessageId.js",
153
+ "./functions/hybrid/postBridgeMessage": "./dist/functions/hybrid/postBridgeMessage.js",
154
+ "./functions/hybrid/validateBridgeMessage": "./dist/functions/hybrid/validateBridgeMessage.js",
149
155
  "./functions/image/compressImageToWidth": "./dist/functions/image/compressImageToWidth.js",
150
156
  "./functions/image/compressToTargetSize": "./dist/functions/image/compressToTargetSize.js",
151
157
  "./functions/image/generateFavIcon": "./dist/functions/image/generateFavIcon.js",
@@ -265,7 +271,6 @@
265
271
  "./functions/vue/isVueComponent": "./dist/functions/vue/isVueComponent.js",
266
272
  "./functions/vue/parseVueFile": "./dist/functions/vue/parseVueFile.js",
267
273
  "./functions/wechat/miniapp/downloadFile": "./dist/functions/wechat/miniapp/downloadFile.js",
268
- "./functions/wechat/useWxWebShare": "./dist/functions/wechat/useWxWebShare.js",
269
274
  "./functions/xml/modifyXml": "./dist/functions/xml/modifyXml.js",
270
275
  "./reactive/createReactive": "./dist/reactive/createReactive.js",
271
276
  "./reactive/createReactiveErrorManager": "./dist/reactive/createReactiveErrorManager.js",
@@ -277,6 +282,7 @@
277
282
  "./reactive/useReactiveWebsocket": "./dist/reactive/useReactiveWebsocket.js",
278
283
  "./vue-hooks/browser/useBattery": "./dist/vue-hooks/browser/useBattery.js",
279
284
  "./vue-hooks/browser/useBluetooth": "./dist/vue-hooks/browser/useBluetooth.js",
285
+ "./vue-hooks/browser/useBridgeMessage": "./dist/vue-hooks/browser/useBridgeMessage.js",
280
286
  "./vue-hooks/browser/useCamera": "./dist/vue-hooks/browser/useCamera.js",
281
287
  "./vue-hooks/browser/useClipboard": "./dist/vue-hooks/browser/useClipboard.js",
282
288
  "./vue-hooks/browser/useFileUpload": "./dist/vue-hooks/browser/useFileUpload.js",
@@ -292,7 +298,6 @@
292
298
  "./vue-hooks/browser/useScreenWakeLock": "./dist/vue-hooks/browser/useScreenWakeLock.js",
293
299
  "./vue-hooks/browser/useShare": "./dist/vue-hooks/browser/useShare.js",
294
300
  "./vue-hooks/browser/useVibration": "./dist/vue-hooks/browser/useVibration.js",
295
- "./vue-hooks/browser/useWechatEnv": "./dist/vue-hooks/browser/useWechatEnv.js",
296
301
  "./vue-hooks/browser/useWechatJSSDK": "./dist/vue-hooks/browser/useWechatJSSDK.js",
297
302
  "./vue-hooks/dom/useAutoUpdate": "./dist/vue-hooks/dom/useAutoUpdate.js",
298
303
  "./vue-hooks/dom/useClickOutside": "./dist/vue-hooks/dom/useClickOutside.js",
@@ -327,6 +332,7 @@
327
332
  "./types/color": "./types/color.d.ts",
328
333
  "./types/design-system": "./types/design-system.d.ts",
329
334
  "./types/geometry": "./types/geometry.d.ts",
335
+ "./types/hybrid": "./types/hybrid.d.ts",
330
336
  "./types/ios-build": "./types/ios-build.d.ts",
331
337
  "./types/pgyer": "./types/pgyer.d.ts",
332
338
  "./types/placement": "./types/placement.d.ts",
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Hybrid 跨端通信环境 API 类型定义
3
+ */
4
+
5
+ import type { Window } from './browser.d'
6
+ import type { Wx } from './wechat.d'
7
+ import type { UniApp } from './uniapp.d'
8
+
9
+ /**
10
+ * 微信小程序 web-view 通信 API
11
+ */
12
+ export interface WxMiniProgram {
13
+ postMessage: (data: { data: any }) => void
14
+ getEnv: (callback: (res: { miniprogram: boolean }) => void) => void
15
+ navigateTo: (options: { url: string; success?: () => void; fail?: (err: any) => void }) => void
16
+ navigateBack: (options?: { delta?: number }) => void
17
+ switchTab: (options: { url: string }) => void
18
+ reLaunch: (options: { url: string }) => void
19
+ redirectTo: (options: { url: string }) => void
20
+ }
21
+
22
+ /**
23
+ * 微信小程序 JS-SDK 中的 miniProgram 对象
24
+ */
25
+ export interface WxJsSdk {
26
+ miniProgram?: WxMiniProgram
27
+ }
28
+
29
+ /**
30
+ * UniApp web-view 通信 API
31
+ */
32
+ export interface UniWebView {
33
+ postMessage: (data: any) => void
34
+ evalJS: (script: string) => void
35
+ }
36
+
37
+ /**
38
+ * UniApp window 对象扩展
39
+ */
40
+ export interface UniWindow extends Window {
41
+ uni?: {
42
+ postMessage?: (data: any) => void
43
+ webView?: UniWebView
44
+ }
45
+ plus?: {
46
+ webview?: {
47
+ currentWebview: () => {
48
+ evalJS: (script: string) => void
49
+ parent: () => {
50
+ evalJS: (script: string) => void
51
+ }
52
+ }
53
+ }
54
+ }
55
+ }
56
+
57
+ /**
58
+ * 小程序 web-view 上下文(小程序端使用)
59
+ */
60
+ export interface MiniappWebViewContext {
61
+ postMessage: (options: { data: any }) => void
62
+ }
63
+
64
+ /**
65
+ * App web-view 实例(App 端使用)
66
+ */
67
+ export interface AppWebView {
68
+ evalJS: (script: string) => void
69
+ }
70
+
71
+ /**
72
+ * 消息事件类型
73
+ */
74
+ export interface MessageEvent {
75
+ data?: any
76
+ detail?: any
77
+ }
78
+
79
+ /**
80
+ * 事件监听器类型
81
+ */
82
+ export type EventListener = (event: MessageEvent) => void
83
+
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Hybrid 跨端通信类型定义
3
+ */
4
+
5
+ /**
6
+ * 运行环境类型
7
+ */
8
+ export type Environment = 'h5' | 'miniapp' | 'app' | 'unknown'
9
+
10
+ /**
11
+ * 通信方向
12
+ */
13
+ export type BridgeDirection = 'h5-to-miniapp' | 'h5-to-app' | 'miniapp-to-h5' | 'app-to-h5'
14
+
15
+ /**
16
+ * 消息类型
17
+ */
18
+ export type MessageType = 'request' | 'response' | 'event' | 'error'
19
+
20
+ /**
21
+ * 通信消息基础结构
22
+ */
23
+ export interface BaseMessage {
24
+ id: string // 消息ID,用于请求-响应匹配
25
+ type: MessageType // 消息类型
26
+ action: string // 操作类型:'share', 'login', 'pay'...
27
+ method?: string // 具体方法:'setShare', 'triggerShare'...
28
+ timestamp: number // 时间戳
29
+ }
30
+
31
+ /**
32
+ * 请求消息
33
+ */
34
+ export interface RequestMessage extends BaseMessage {
35
+ type: 'request'
36
+ method: string // 请求必须有方法
37
+ params?: any // 请求参数
38
+ }
39
+
40
+ /**
41
+ * 响应消息
42
+ */
43
+ export interface ResponseMessage extends BaseMessage {
44
+ type: 'response'
45
+ success: boolean // 是否成功
46
+ data?: any // 响应数据
47
+ error?: { // 错误信息
48
+ code: string | number
49
+ message: string
50
+ details?: any
51
+ }
52
+ }
53
+
54
+ /**
55
+ * 事件消息
56
+ */
57
+ export interface EventMessage extends BaseMessage {
58
+ type: 'event'
59
+ event: string // 事件名称
60
+ data?: any // 事件数据
61
+ }
62
+
63
+ /**
64
+ * 错误消息
65
+ */
66
+ export interface ErrorMessage extends BaseMessage {
67
+ type: 'error'
68
+ error: {
69
+ code: string | number
70
+ message: string
71
+ details?: any
72
+ }
73
+ }
74
+
75
+ /**
76
+ * 所有消息类型的联合
77
+ */
78
+ export type BridgeMessage = RequestMessage | ResponseMessage | EventMessage | ErrorMessage
79
+
80
+ /**
81
+ * 消息处理器类型
82
+ */
83
+ export type MessageHandler = (message: BridgeMessage) => void | Promise<void>
84
+
85
+ /**
86
+ * 事件监听器类型
87
+ */
88
+ export type EventListener = (data?: any) => void
89
+
90
+ /**
91
+ * 平台 API 依赖接口
92
+ */
93
+ export interface PlatformDeps {
94
+ window: {
95
+ wx?: any
96
+ uni?: any
97
+ plus?: any
98
+ document: {
99
+ createElement: (tag: string) => any
100
+ querySelector: (selector: string) => any
101
+ head: { appendChild: (el: any) => any }
102
+ }
103
+ location: {
104
+ origin: string
105
+ href: string
106
+ }
107
+ self: any
108
+ top: any
109
+ parent: any
110
+ }
111
+ navigator: {
112
+ userAgent: string
113
+ }
114
+ isServer: () => boolean
115
+ setTimeout: (callback: () => void, ms: number) => any
116
+ clearTimeout: (id: any) => void
117
+ setInterval: (callback: () => void, ms: number) => any
118
+ clearInterval: (id: any) => void
119
+ }