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.
- package/dist/constants/hybridConstants.d.ts +37 -0
- package/dist/constants/hybridConstants.js +38 -0
- package/dist/constants/hybridConstants.js.map +1 -0
- package/dist/functions/hybrid/createBridgeMessage.d.ts +25 -0
- package/dist/functions/hybrid/createBridgeMessage.js +33 -0
- package/dist/functions/hybrid/createBridgeMessage.js.map +1 -0
- package/dist/functions/hybrid/detectBridgeEnvironment.d.ts +11 -0
- package/dist/functions/hybrid/detectBridgeEnvironment.js +26 -0
- package/dist/functions/hybrid/detectBridgeEnvironment.js.map +1 -0
- package/dist/functions/hybrid/generateBridgeMessageId.d.ts +10 -0
- package/dist/functions/hybrid/generateBridgeMessageId.js +11 -0
- package/dist/functions/hybrid/generateBridgeMessageId.js.map +1 -0
- package/dist/functions/hybrid/postBridgeMessage.d.ts +16 -0
- package/dist/functions/hybrid/postBridgeMessage.js +68 -0
- package/dist/functions/hybrid/postBridgeMessage.js.map +1 -0
- package/dist/functions/hybrid/validateBridgeMessage.d.ts +5 -0
- package/dist/functions/hybrid/validateBridgeMessage.js +55 -0
- package/dist/functions/hybrid/validateBridgeMessage.js.map +1 -0
- package/dist/hybrid/constants.d.ts +37 -0
- package/dist/hybrid/constants.js +38 -0
- package/dist/hybrid/constants.js.map +1 -0
- package/dist/hybrid/createBridgeMessage.d.ts +17 -0
- package/dist/hybrid/createBridgeMessage.js +81 -0
- package/dist/hybrid/createBridgeMessage.js.map +1 -0
- package/dist/hybrid/types.d.ts +88 -0
- package/dist/hybrid/types.js +2 -0
- package/dist/hybrid/types.js.map +1 -0
- package/dist/vue-hooks/browser/useBridgeMessage.d.ts +34 -0
- package/dist/vue-hooks/browser/useBridgeMessage.js +87 -0
- package/dist/vue-hooks/browser/useBridgeMessage.js.map +1 -0
- package/dist/vue-hooks/browser/useWechatJSSDK.d.ts +2 -0
- package/dist/vue-hooks/browser/useWechatJSSDK.js +16 -1
- package/dist/vue-hooks/browser/useWechatJSSDK.js.map +1 -1
- package/package.json +9 -3
- package/references/hybrid.d.ts +83 -0
- 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 @@
|
|
|
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":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;
|
|
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.
|
|
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
|
+
}
|