@kbapp/js-bridge 0.4.8-alpha.0 → 1.0.0-alpha.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/LOGIN.MD +79 -0
- package/README.MD +1045 -182
- package/dist/core/index.d.ts +68 -16
- package/dist/index.d.ts +8 -5
- package/dist/index.es.js +516 -0
- package/dist/index.umd.js +1 -0
- package/dist/lib/app-version-support.d.ts +41 -0
- package/dist/lib/bridge-code.d.ts +14 -0
- package/dist/lib/check-for-new-version.d.ts +7 -5
- package/dist/lib/close-webview.d.ts +6 -2
- package/dist/lib/define-permission-usage.d.ts +8 -2
- package/dist/lib/generate-kb-sign.d.ts +13 -2
- package/dist/lib/{get-device-info.d.ts → get-app-base-info.d.ts} +14 -7
- package/dist/lib/open-post-editor.d.ts +47 -4
- package/dist/lib/report-da-event.d.ts +33 -0
- package/dist/lib/run-action.d.ts +9 -5
- package/dist/lib/save-image-to-local.d.ts +8 -4
- package/dist/lib/save-video-to-local.d.ts +7 -3
- package/dist/lib/scan-qr-code.d.ts +23 -0
- package/dist/lib/screen-orientation.d.ts +13 -0
- package/dist/lib/set-webview-title.d.ts +7 -3
- package/dist/lib/share-image.d.ts +21 -0
- package/dist/lib/share-model.d.ts +170 -45
- package/dist/lib/subscribe-notify.d.ts +25 -0
- package/dist/lib/trigger-login.d.ts +18 -10
- package/dist/utils/filter-undefined-properties.d.ts +6 -0
- package/dist/utils/promise-cache.d.ts +5 -0
- package/dist/utils/wrap-async.d.ts +17 -0
- package/examples/index.html +236 -0
- package/package.json +17 -4
- package/vite.config.ts +32 -0
- package/dist/core/index.js +0 -84
- package/dist/core/lib/ds-bridge.d.ts +0 -7
- package/dist/core/lib/ds-bridge.js +0 -126
- package/dist/core/lib/flutter-ds-bridge.js +0 -172
- package/dist/core/lib/js-bridge.d.ts +0 -22
- package/dist/core/lib/js-bridge.js +0 -188
- package/dist/index.js +0 -33
- package/dist/lib/can-i-use.d.ts +0 -13
- package/dist/lib/can-i-use.js +0 -102
- package/dist/lib/check-for-new-version.js +0 -26
- package/dist/lib/close-webview.js +0 -24
- package/dist/lib/define-permission-usage.js +0 -40
- package/dist/lib/generate-kb-sign.js +0 -75
- package/dist/lib/get-device-info.js +0 -36
- package/dist/lib/js-bridge-code.d.ts +0 -10
- package/dist/lib/js-bridge-code.js +0 -14
- package/dist/lib/open-post-editor.js +0 -116
- package/dist/lib/report-getui.d.ts +0 -14
- package/dist/lib/report-getui.js +0 -17
- package/dist/lib/run-action.js +0 -29
- package/dist/lib/save-image-to-local.js +0 -28
- package/dist/lib/save-video-to-local.js +0 -28
- package/dist/lib/set-webview-title.js +0 -27
- package/dist/lib/share-model.js +0 -80
- package/dist/lib/share-poster.d.ts +0 -16
- package/dist/lib/share-poster.js +0 -26
- package/dist/lib/trigger-login.js +0 -195
- package/dist/util/promise-cache.d.ts +0 -5
- package/dist/util/promise-cache.js +0 -24
package/dist/core/index.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var _a;
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.callHandler = exports.registerHandler = void 0;
|
|
16
|
-
exports.callHandlerPromise = callHandlerPromise;
|
|
17
|
-
var js_bridge_1 = require("./lib/js-bridge");
|
|
18
|
-
var ds_bridge_1 = require("./lib/ds-bridge");
|
|
19
|
-
var flutter_ds_bridge_1 = require("./lib/flutter-ds-bridge");
|
|
20
|
-
/** 桥接 */
|
|
21
|
-
var $bridge = (function (user_agent) {
|
|
22
|
-
if (!/(kb)/i.test(user_agent)) {
|
|
23
|
-
return {
|
|
24
|
-
registerHandler: function (name, cb) {
|
|
25
|
-
console.error('注册桥接失败,当前环境不支持调用桥接');
|
|
26
|
-
},
|
|
27
|
-
callHandler: function (name, params, callback) {
|
|
28
|
-
console.error('调用桥接失败,当前环境不支持调用桥接');
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
if (/(kb_dsbridge_android)/i.test(user_agent)) {
|
|
33
|
-
return (0, ds_bridge_1.default)();
|
|
34
|
-
}
|
|
35
|
-
if (/(kb_dsbridge_flutter)/i.test(user_agent)) {
|
|
36
|
-
return (0, flutter_ds_bridge_1.default)();
|
|
37
|
-
}
|
|
38
|
-
return (0, js_bridge_1.default)();
|
|
39
|
-
})((_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent);
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
* @description 注册事件 提供给native端调用
|
|
43
|
-
*/
|
|
44
|
-
var registerHandler = function (
|
|
45
|
-
/** 任务名称 */
|
|
46
|
-
name,
|
|
47
|
-
/** 回调函数 */
|
|
48
|
-
cb) {
|
|
49
|
-
return $bridge.registerHandler(name, cb);
|
|
50
|
-
};
|
|
51
|
-
exports.registerHandler = registerHandler;
|
|
52
|
-
/**
|
|
53
|
-
*
|
|
54
|
-
* @description 主动触发 触发native端任务
|
|
55
|
-
*/
|
|
56
|
-
var callHandler = function (data) {
|
|
57
|
-
$bridge.callHandler(data.name, data.params, function (res) {
|
|
58
|
-
var _a, _b, _c;
|
|
59
|
-
var result;
|
|
60
|
-
try {
|
|
61
|
-
result = typeof res === 'string' ? JSON.parse(res) : res;
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
result = null;
|
|
65
|
-
}
|
|
66
|
-
if (result) {
|
|
67
|
-
(_a = data.success) === null || _a === void 0 ? void 0 : _a.call(data, result);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
(_b = data.fail) === null || _b === void 0 ? void 0 : _b.call(data, result);
|
|
71
|
-
}
|
|
72
|
-
(_c = data.complete) === null || _c === void 0 ? void 0 : _c.call(data);
|
|
73
|
-
});
|
|
74
|
-
};
|
|
75
|
-
exports.callHandler = callHandler;
|
|
76
|
-
/**
|
|
77
|
-
*
|
|
78
|
-
* @description promise版本 callHandle
|
|
79
|
-
*/
|
|
80
|
-
function callHandlerPromise(data) {
|
|
81
|
-
return new Promise(function (resolve, reject) {
|
|
82
|
-
(0, exports.callHandler)(__assign(__assign({}, data), { success: resolve, fail: reject }));
|
|
83
|
-
});
|
|
84
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _this = this;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
/*
|
|
5
|
-
* @Author: wangalong
|
|
6
|
-
* @LastEditTime: 2022-07-18 17:25:50
|
|
7
|
-
*/
|
|
8
|
-
exports.default = (function () {
|
|
9
|
-
var bridge = {
|
|
10
|
-
default: _this, // for typescript
|
|
11
|
-
callHandler: function (method, args, cb) {
|
|
12
|
-
var ret = '';
|
|
13
|
-
if (typeof args == 'function') {
|
|
14
|
-
cb = args;
|
|
15
|
-
args = {};
|
|
16
|
-
}
|
|
17
|
-
var arg = { data: args === undefined ? null : args };
|
|
18
|
-
if (typeof cb == 'function') {
|
|
19
|
-
var cbName = 'dscb' + window.dscb++;
|
|
20
|
-
window[cbName] = cb;
|
|
21
|
-
arg['_dscbstub'] = cbName;
|
|
22
|
-
}
|
|
23
|
-
arg = JSON.stringify(arg);
|
|
24
|
-
//if in webview that dsBridge provided, call!
|
|
25
|
-
if (window._dsbridge) {
|
|
26
|
-
ret = _dsbridge.call(method, arg);
|
|
27
|
-
}
|
|
28
|
-
else if (window._dswk ||
|
|
29
|
-
navigator.userAgent.indexOf('_dsbridge') != -1) {
|
|
30
|
-
ret = prompt('_dsbridge=' + method, arg);
|
|
31
|
-
}
|
|
32
|
-
// //TODO 待商榷 可优化
|
|
33
|
-
// this.registerHandler("CommonResult", cb);
|
|
34
|
-
// this.registerHandler("CommonRequest", cb);
|
|
35
|
-
return JSON.parse(ret || '{}').data;
|
|
36
|
-
},
|
|
37
|
-
register: function (name, fun, asyn) {
|
|
38
|
-
var q = asyn ? window._dsaf : window._dsf;
|
|
39
|
-
if (!window._dsInit) {
|
|
40
|
-
window._dsInit = true;
|
|
41
|
-
//notify native that js apis register successfully on next event loop
|
|
42
|
-
setTimeout(function () {
|
|
43
|
-
bridge.callHandler('_dsb.dsinit');
|
|
44
|
-
}, 0);
|
|
45
|
-
}
|
|
46
|
-
if (typeof fun == 'object') {
|
|
47
|
-
q._obs[name] = fun;
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
q[name] = fun;
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
registerHandler: function (name, fun) {
|
|
54
|
-
this.register(name, fun, true);
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
!(function () {
|
|
58
|
-
if (window._dsf)
|
|
59
|
-
return;
|
|
60
|
-
var ob = {
|
|
61
|
-
//保存JS同步方法
|
|
62
|
-
_dsf: {
|
|
63
|
-
_obs: {},
|
|
64
|
-
},
|
|
65
|
-
//保存JS异步方法
|
|
66
|
-
_dsaf: {
|
|
67
|
-
_obs: {},
|
|
68
|
-
},
|
|
69
|
-
dscb: 0,
|
|
70
|
-
jsBridge: bridge,
|
|
71
|
-
_handleMessageFromNative: function (info) {
|
|
72
|
-
var arg = JSON.parse(info.data);
|
|
73
|
-
var ret = {
|
|
74
|
-
id: info.callbackId,
|
|
75
|
-
complete: true,
|
|
76
|
-
};
|
|
77
|
-
var f = this._dsf[info.method];
|
|
78
|
-
var af = this._dsaf[info.method];
|
|
79
|
-
var callSyn = function (f, ob) {
|
|
80
|
-
ret.data = f.apply(ob, arg);
|
|
81
|
-
bridge.callHandler('_dsb.returnValue', ret);
|
|
82
|
-
};
|
|
83
|
-
var callAsyn = function (f, ob) {
|
|
84
|
-
arg.push(function (data, complete) {
|
|
85
|
-
ret.data = data;
|
|
86
|
-
ret.complete = complete !== false;
|
|
87
|
-
bridge.callHandler('_dsb.returnValue', ret);
|
|
88
|
-
});
|
|
89
|
-
f.apply(ob, arg);
|
|
90
|
-
};
|
|
91
|
-
if (f) {
|
|
92
|
-
callSyn(f, this._dsf);
|
|
93
|
-
}
|
|
94
|
-
else if (af) {
|
|
95
|
-
callAsyn(af, this._dsaf);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
//with namespace
|
|
99
|
-
var name = info.method.split('.');
|
|
100
|
-
if (name.length < 2)
|
|
101
|
-
return;
|
|
102
|
-
var method = name.pop();
|
|
103
|
-
var namespace = name.join('.');
|
|
104
|
-
var obs = this._dsf._obs;
|
|
105
|
-
var ob = obs[namespace] || {};
|
|
106
|
-
var m = ob[method];
|
|
107
|
-
if (m && typeof m == 'function') {
|
|
108
|
-
callSyn(m, ob);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
obs = this._dsaf._obs;
|
|
112
|
-
ob = obs[namespace] || {};
|
|
113
|
-
m = ob[method];
|
|
114
|
-
if (m && typeof m == 'function') {
|
|
115
|
-
callAsyn(m, ob);
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
for (var attr in ob) {
|
|
122
|
-
window[attr] = ob[attr];
|
|
123
|
-
}
|
|
124
|
-
})();
|
|
125
|
-
return bridge;
|
|
126
|
-
});
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _this = this;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
/*
|
|
5
|
-
* @Describe:
|
|
6
|
-
* @Author: chenz
|
|
7
|
-
*/
|
|
8
|
-
exports.default = (function () {
|
|
9
|
-
var callHandler = function (method, args, cb) {
|
|
10
|
-
var ret = '';
|
|
11
|
-
if (typeof args == 'function') {
|
|
12
|
-
cb = args;
|
|
13
|
-
args = {};
|
|
14
|
-
}
|
|
15
|
-
var arg = { data: args === undefined ? null : args };
|
|
16
|
-
if (typeof cb == 'function') {
|
|
17
|
-
var cbName = 'dscb' + window.dscb++;
|
|
18
|
-
window[cbName] = cb;
|
|
19
|
-
arg['_dscbstub'] = cbName;
|
|
20
|
-
}
|
|
21
|
-
arg = JSON.stringify(arg);
|
|
22
|
-
//if in webview that dsBridge provided, call!
|
|
23
|
-
if (window.flutter_inappwebview) {
|
|
24
|
-
// ret = _dsbridge.call(method, arg)
|
|
25
|
-
if (window.flutter_inappwebview.callHandler) {
|
|
26
|
-
ret = window.flutter_inappwebview.callHandler('' + method, arg);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
else if (window._dswk || navigator.userAgent.indexOf('_dsbridge') != -1) {
|
|
30
|
-
ret = prompt('_flutterDsbridge=' + method, arg);
|
|
31
|
-
}
|
|
32
|
-
// //TODO 待商榷 可优化
|
|
33
|
-
// this.registerHandler("CommonResult", cb);
|
|
34
|
-
// this.registerHandler("CommonRequest", cb);
|
|
35
|
-
/**
|
|
36
|
-
* @description flutter桥接存在部分ret为Promise的情况,导致JSON.parse异常,暂时不清楚callHandler的用意
|
|
37
|
-
*/
|
|
38
|
-
if (ret instanceof Promise) {
|
|
39
|
-
return ret;
|
|
40
|
-
}
|
|
41
|
-
try {
|
|
42
|
-
return JSON.parse(ret || '{}').data;
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
console.error('callHandle异常,JSON.parse错误');
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
/** 桥接准备完成 */
|
|
49
|
-
var flutterDSBridgeIsReady = function () {
|
|
50
|
-
if (window.navigator.userAgent.includes('Android')) {
|
|
51
|
-
return window.flutter_inappwebview && window.flutter_inappwebview._platformReady;
|
|
52
|
-
}
|
|
53
|
-
return true;
|
|
54
|
-
};
|
|
55
|
-
var insertInCache = (function () {
|
|
56
|
-
var cache = [];
|
|
57
|
-
var stophandle = setInterval(function () {
|
|
58
|
-
if (!flutterDSBridgeIsReady()) {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
clearInterval(stophandle);
|
|
62
|
-
cache.forEach(function (params) {
|
|
63
|
-
callHandler.apply(window, params);
|
|
64
|
-
});
|
|
65
|
-
cache.length = 0;
|
|
66
|
-
}, 500);
|
|
67
|
-
return function () {
|
|
68
|
-
var params = [];
|
|
69
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
70
|
-
params[_i] = arguments[_i];
|
|
71
|
-
}
|
|
72
|
-
cache.push(params);
|
|
73
|
-
};
|
|
74
|
-
})();
|
|
75
|
-
var bridge = {
|
|
76
|
-
default: _this, // for typescript
|
|
77
|
-
callHandler: function (method, args, cb) {
|
|
78
|
-
if (flutterDSBridgeIsReady()) {
|
|
79
|
-
return callHandler(method, args, cb);
|
|
80
|
-
}
|
|
81
|
-
return insertInCache(method, args, cb);
|
|
82
|
-
},
|
|
83
|
-
register: function (name, fun, asyn) {
|
|
84
|
-
var q = asyn ? window._dsaf : window._dsf;
|
|
85
|
-
if (!window._dsInit) {
|
|
86
|
-
window._dsInit = true;
|
|
87
|
-
//notify native that js apis register successfully on next event loop
|
|
88
|
-
setTimeout(function () {
|
|
89
|
-
bridge.callHandler('_dsb.dsinit');
|
|
90
|
-
}, 0);
|
|
91
|
-
}
|
|
92
|
-
if (typeof fun == 'object') {
|
|
93
|
-
q._obs[name] = fun;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
q[name] = fun;
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
registerHandler: function (name, fun) {
|
|
100
|
-
this.register(name, fun, true);
|
|
101
|
-
},
|
|
102
|
-
};
|
|
103
|
-
!(function () {
|
|
104
|
-
if (window._dsf)
|
|
105
|
-
return;
|
|
106
|
-
var ob = {
|
|
107
|
-
//保存JS同步方法
|
|
108
|
-
_dsf: {
|
|
109
|
-
_obs: {},
|
|
110
|
-
},
|
|
111
|
-
//保存JS异步方法
|
|
112
|
-
_dsaf: {
|
|
113
|
-
_obs: {},
|
|
114
|
-
},
|
|
115
|
-
dscb: 0,
|
|
116
|
-
jsBridge: bridge,
|
|
117
|
-
_handleMessageFromNative: function (info) {
|
|
118
|
-
var arg = JSON.parse(info.data);
|
|
119
|
-
var ret = {
|
|
120
|
-
id: info.callbackId,
|
|
121
|
-
complete: true,
|
|
122
|
-
};
|
|
123
|
-
var f = this._dsf[info.method];
|
|
124
|
-
var af = this._dsaf[info.method];
|
|
125
|
-
var callSyn = function (f, ob) {
|
|
126
|
-
ret.data = f.apply(ob, arg);
|
|
127
|
-
bridge.callHandler('_dsb.returnValue', ret);
|
|
128
|
-
};
|
|
129
|
-
var callAsyn = function (f, ob) {
|
|
130
|
-
arg.push(function (data, complete) {
|
|
131
|
-
ret.data = data;
|
|
132
|
-
ret.complete = complete !== false;
|
|
133
|
-
bridge.callHandler('_dsb.returnValue', ret);
|
|
134
|
-
});
|
|
135
|
-
f.apply(ob, arg);
|
|
136
|
-
};
|
|
137
|
-
if (f) {
|
|
138
|
-
callSyn(f, this._dsf);
|
|
139
|
-
}
|
|
140
|
-
else if (af) {
|
|
141
|
-
callAsyn(af, this._dsaf);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
//with namespace
|
|
145
|
-
var name = info.method.split('.');
|
|
146
|
-
if (name.length < 2)
|
|
147
|
-
return;
|
|
148
|
-
var method = name.pop();
|
|
149
|
-
var namespace = name.join('.');
|
|
150
|
-
var obs = this._dsf._obs;
|
|
151
|
-
var ob = obs[namespace] || {};
|
|
152
|
-
var m = ob[method];
|
|
153
|
-
if (m && typeof m == 'function') {
|
|
154
|
-
callSyn(m, ob);
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
obs = this._dsaf._obs;
|
|
158
|
-
ob = obs[namespace] || {};
|
|
159
|
-
m = ob[method];
|
|
160
|
-
if (m && typeof m == 'function') {
|
|
161
|
-
callAsyn(m, ob);
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
};
|
|
167
|
-
for (var attr in ob) {
|
|
168
|
-
window[attr] = ob[attr];
|
|
169
|
-
}
|
|
170
|
-
})();
|
|
171
|
-
return bridge;
|
|
172
|
-
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
declare function _default(): {
|
|
2
|
-
/**
|
|
3
|
-
* Android / IOS 调用JS,需要明确调用的`function名称` .
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* @param name `function name`
|
|
7
|
-
* @param registerCallback 回调的响应事件
|
|
8
|
-
*/
|
|
9
|
-
registerHandler: (name: any, registerCallback: any) => void;
|
|
10
|
-
/**
|
|
11
|
-
* JS 调用 Android / IOS
|
|
12
|
-
*
|
|
13
|
-
* name: 回调名称, android/ios 名称 ,eg: 'getUserInfo'
|
|
14
|
-
* params 请求参数, eg: { 'userId' : 1}
|
|
15
|
-
* callback: response(响应函数)
|
|
16
|
-
*
|
|
17
|
-
* eg: this.$bridge.callHandler('getUserInfo',{'userId':1},function(data){...})
|
|
18
|
-
*
|
|
19
|
-
*/
|
|
20
|
-
callHandler: (name: any, params: any, callback: any) => void;
|
|
21
|
-
};
|
|
22
|
-
export default _default;
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
-
if (ar || !(i in from)) {
|
|
5
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
-
ar[i] = from[i];
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.default = (function () {
|
|
13
|
-
/**
|
|
14
|
-
* vue-bridge-webview config
|
|
15
|
-
*
|
|
16
|
-
* @type {{bridgeWebViewDelay: number}}
|
|
17
|
-
*/
|
|
18
|
-
var bridgeConfig = {
|
|
19
|
-
bridgeWebViewDelay: 500,
|
|
20
|
-
callHandle: {}, // bridge android / ios
|
|
21
|
-
};
|
|
22
|
-
var cache = [];
|
|
23
|
-
var $bridge = {
|
|
24
|
-
registerHandler: function () {
|
|
25
|
-
cache.push({
|
|
26
|
-
type: 'registerHandler',
|
|
27
|
-
params: __spreadArray([], arguments, true),
|
|
28
|
-
});
|
|
29
|
-
},
|
|
30
|
-
callHandler: function () {
|
|
31
|
-
cache.push({
|
|
32
|
-
type: 'callHandler',
|
|
33
|
-
params: __spreadArray([], arguments, true),
|
|
34
|
-
});
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
/* ios 初始化 */
|
|
38
|
-
function setupWebViewJavascriptBridge(callback) {
|
|
39
|
-
if (window.WebViewJavascriptBridge) {
|
|
40
|
-
return callback(window.WebViewJavascriptBridge);
|
|
41
|
-
}
|
|
42
|
-
if (window.WVJBCallbacks) {
|
|
43
|
-
return window.WVJBCallbacks.push(callback);
|
|
44
|
-
}
|
|
45
|
-
window.WVJBCallbacks = [callback];
|
|
46
|
-
var WVJBIframe = document.createElement('iframe');
|
|
47
|
-
WVJBIframe.style.display = 'none';
|
|
48
|
-
WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
|
|
49
|
-
document.documentElement.appendChild(WVJBIframe);
|
|
50
|
-
setTimeout(function () {
|
|
51
|
-
document.documentElement.removeChild(WVJBIframe);
|
|
52
|
-
}, 0);
|
|
53
|
-
}
|
|
54
|
-
/* 用于创建桥接对象的函数 , android 初始化 */
|
|
55
|
-
function connectWebViewJavascriptBridge(callback) {
|
|
56
|
-
//如果桥接对象已存在,则直接调用callback函数
|
|
57
|
-
if (window.WebViewJavascriptBridge) {
|
|
58
|
-
callback(window.WebViewJavascriptBridge);
|
|
59
|
-
}
|
|
60
|
-
//否则添加一个监听器来执行callback函数
|
|
61
|
-
else {
|
|
62
|
-
document.addEventListener('WebViewJavascriptBridgeReady', function () {
|
|
63
|
-
callback(window.WebViewJavascriptBridge);
|
|
64
|
-
}, false);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/* ios/android */
|
|
68
|
-
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
|
|
69
|
-
//ios 新版桥接
|
|
70
|
-
if (/(kbapp)/i.test(navigator.userAgent)) {
|
|
71
|
-
setupWebViewJavascriptBridge(function (bridge) {
|
|
72
|
-
$bridge = bridge;
|
|
73
|
-
initRegister(bridge);
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
connectWebViewJavascriptBridge(function (bridge) {
|
|
78
|
-
$bridge = bridge;
|
|
79
|
-
initRegister(bridge);
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else if (/(Android)/i.test(navigator.userAgent)) {
|
|
84
|
-
connectWebViewJavascriptBridge(function (bridge) {
|
|
85
|
-
$bridge = bridge;
|
|
86
|
-
initRegister(bridge);
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
// IOS中会主动调用该方法,不清楚为什么
|
|
90
|
-
window.setWebViewFlag = function () { };
|
|
91
|
-
function initRegister(bridge) {
|
|
92
|
-
bridge.init &&
|
|
93
|
-
bridge.init(function (message, responseCallback) {
|
|
94
|
-
var data = { 'Javascript Responds': 'Wee!' };
|
|
95
|
-
responseCallback(data);
|
|
96
|
-
});
|
|
97
|
-
bridge.registerHandler('AppPayResult', function (data, responseCallback) {
|
|
98
|
-
var responseData = { 'Javascript Says': 'Right back atcha!' };
|
|
99
|
-
responseCallback(responseData);
|
|
100
|
-
});
|
|
101
|
-
bridge.registerHandler('UploadImageResult', function (data, responseCallback) {
|
|
102
|
-
var responseData = { 'Javascript Says': 'Upload Success!' };
|
|
103
|
-
responseCallback(responseData);
|
|
104
|
-
});
|
|
105
|
-
bridge.registerHandler('RichInputResult', function (data, responseCallback) {
|
|
106
|
-
var responseData = { 'Javascript Says': 'Upload Success!' };
|
|
107
|
-
responseCallback(responseData);
|
|
108
|
-
});
|
|
109
|
-
bridge.registerHandler('CommonResult', function (data, responseCallback) {
|
|
110
|
-
var responseData = {
|
|
111
|
-
'Javascript Says': 'CommonResult Success!',
|
|
112
|
-
};
|
|
113
|
-
responseCallback(responseData);
|
|
114
|
-
});
|
|
115
|
-
bridge.registerHandler('CommonRequest', function (data, responseCallback) {
|
|
116
|
-
var responseData = {
|
|
117
|
-
'Javascript Says': 'CommonRequest Success!',
|
|
118
|
-
};
|
|
119
|
-
responseCallback(responseData);
|
|
120
|
-
});
|
|
121
|
-
cache.forEach(function (_a) {
|
|
122
|
-
var type = _a.type, params = _a.params;
|
|
123
|
-
switch (type) {
|
|
124
|
-
case 'registerHandler':
|
|
125
|
-
bridge.registerHandler.apply(bridge, params);
|
|
126
|
-
break;
|
|
127
|
-
case 'callHandler':
|
|
128
|
-
bridge.callHandler.apply(bridge, params);
|
|
129
|
-
break;
|
|
130
|
-
default:
|
|
131
|
-
break;
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
var VueBridgeWebView = {
|
|
136
|
-
/**
|
|
137
|
-
* Android / IOS 调用JS,需要明确调用的`function名称` .
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
* @param name `function name`
|
|
141
|
-
* @param registerCallback 回调的响应事件
|
|
142
|
-
*/
|
|
143
|
-
registerHandler: function (name, registerCallback) {
|
|
144
|
-
if ($bridge['registerHandler']) {
|
|
145
|
-
setTimeout(function () {
|
|
146
|
-
$bridge.registerHandler(name, registerCallback);
|
|
147
|
-
}, bridgeConfig.bridgeWebViewDelay);
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
console.log("don't built-in WebView invoking ", name, '{registerHandler}');
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
/**
|
|
154
|
-
* JS 调用 Android / IOS
|
|
155
|
-
*
|
|
156
|
-
* name: 回调名称, android/ios 名称 ,eg: 'getUserInfo'
|
|
157
|
-
* params 请求参数, eg: { 'userId' : 1}
|
|
158
|
-
* callback: response(响应函数)
|
|
159
|
-
*
|
|
160
|
-
* eg: this.$bridge.callHandler('getUserInfo',{'userId':1},function(data){...})
|
|
161
|
-
*
|
|
162
|
-
*/
|
|
163
|
-
callHandler: function (name, params, callback) {
|
|
164
|
-
if ($bridge['callHandler']) {
|
|
165
|
-
try {
|
|
166
|
-
$bridge.callHandler(name, params, function (data) {
|
|
167
|
-
if (typeof callback == 'function') {
|
|
168
|
-
/* 解决部分系统加载延迟导致 ios/android 不响应问题 */
|
|
169
|
-
setTimeout(function () {
|
|
170
|
-
callback(data);
|
|
171
|
-
}, bridgeConfig.bridgeWebViewDelay);
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
//TODO 待商榷 可优化
|
|
175
|
-
$bridge.registerHandler('CommonResult', callback);
|
|
176
|
-
$bridge.registerHandler('CommonRequest', callback);
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
console.log(error);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
console.log("don't built-in WebView invoking ", name, '{callHandler}');
|
|
184
|
-
}
|
|
185
|
-
},
|
|
186
|
-
};
|
|
187
|
-
return VueBridgeWebView;
|
|
188
|
-
});
|
package/dist/index.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./core"), exports);
|
|
18
|
-
__exportStar(require("./lib/can-i-use"), exports);
|
|
19
|
-
__exportStar(require("./lib/check-for-new-version"), exports);
|
|
20
|
-
__exportStar(require("./lib/close-webview"), exports);
|
|
21
|
-
__exportStar(require("./lib/define-permission-usage"), exports);
|
|
22
|
-
__exportStar(require("./lib/generate-kb-sign"), exports);
|
|
23
|
-
__exportStar(require("./lib/get-device-info"), exports);
|
|
24
|
-
__exportStar(require("./lib/js-bridge-code"), exports);
|
|
25
|
-
__exportStar(require("./lib/open-post-editor"), exports);
|
|
26
|
-
__exportStar(require("./lib/report-getui"), exports);
|
|
27
|
-
__exportStar(require("./lib/run-action"), exports);
|
|
28
|
-
__exportStar(require("./lib/save-image-to-local"), exports);
|
|
29
|
-
__exportStar(require("./lib/save-video-to-local"), exports);
|
|
30
|
-
__exportStar(require("./lib/set-webview-title"), exports);
|
|
31
|
-
__exportStar(require("./lib/share-model"), exports);
|
|
32
|
-
__exportStar(require("./lib/share-poster"), exports);
|
|
33
|
-
__exportStar(require("./lib/trigger-login"), exports);
|
package/dist/lib/can-i-use.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
type JSBridgeMethod = 'invokeShareModal' | 'saveImageToLocal' | 'saveVideoToLocal' | 'sharePoster' | 'setWebViewTitle' | 'checkForNewVersion' | 'defineShareModelState';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* @description 判断某个桥接能否在当前app版本中使用
|
|
5
|
-
* @returns {Promise<boolean>}
|
|
6
|
-
*/
|
|
7
|
-
export declare function canIUse(/** 方法名 */ method: JSBridgeMethod): Promise<boolean | undefined>;
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @description 装饰器,用于装饰在当前可用的方法
|
|
11
|
-
*/
|
|
12
|
-
export declare function decoreateCanIUse<CALLBACK extends (...params: any[]) => any>(method: JSBridgeMethod, cb: CALLBACK): (...params: Parameters<CALLBACK>) => Promise<ReturnType<CALLBACK>>;
|
|
13
|
-
export {};
|