@arcblock/bridge 2.9.64 → 2.9.66
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/lib/dsbridge.js +147 -0
- package/lib/index.js +11 -12
- package/package.json +2 -5
- package/src/dsbridge.js +139 -0
- package/src/index.js +1 -3
package/lib/dsbridge.js
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
/**
|
|
9
|
+
* @copyright https://www.npmjs.com/package/dsbridge
|
|
10
|
+
* @description 只添加方法劫持前的判断,其余不做任何改动,确保不会有任何影响
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
var bridge = {
|
|
14
|
+
call: function call(method, args, cb) {
|
|
15
|
+
var ret = '';
|
|
16
|
+
if (typeof args == 'function') {
|
|
17
|
+
cb = args;
|
|
18
|
+
args = {};
|
|
19
|
+
}
|
|
20
|
+
var arg = {
|
|
21
|
+
data: args === undefined ? null : args
|
|
22
|
+
};
|
|
23
|
+
if (typeof cb == 'function') {
|
|
24
|
+
var cbName = 'dscb' + window.dscb++;
|
|
25
|
+
window[cbName] = cb;
|
|
26
|
+
arg['_dscbstub'] = cbName;
|
|
27
|
+
}
|
|
28
|
+
arg = JSON.stringify(arg);
|
|
29
|
+
|
|
30
|
+
//if in webview that dsBridge provided, call!
|
|
31
|
+
if (window._dsbridge) {
|
|
32
|
+
ret = _dsbridge.call(method, arg);
|
|
33
|
+
} else if (window._dswk || navigator.userAgent.indexOf('_dsbridge') != -1) {
|
|
34
|
+
ret = prompt('_dsbridge=' + method, arg);
|
|
35
|
+
}
|
|
36
|
+
return JSON.parse(ret || '{}').data;
|
|
37
|
+
},
|
|
38
|
+
register: function register(name, fun, asyn) {
|
|
39
|
+
var q = asyn ? window._dsaf : window._dsf;
|
|
40
|
+
if (!window._dsInit) {
|
|
41
|
+
window._dsInit = true;
|
|
42
|
+
//notify native that js apis register successfully on next event loop
|
|
43
|
+
setTimeout(function () {
|
|
44
|
+
bridge.call('_dsb.dsinit');
|
|
45
|
+
}, 0);
|
|
46
|
+
}
|
|
47
|
+
if (typeof fun == 'object') {
|
|
48
|
+
q._obs[name] = fun;
|
|
49
|
+
} else {
|
|
50
|
+
q[name] = fun;
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
registerAsyn: function registerAsyn(name, fun) {
|
|
54
|
+
this.register(name, fun, true);
|
|
55
|
+
},
|
|
56
|
+
hasNativeMethod: function hasNativeMethod(name, type) {
|
|
57
|
+
return this.call('_dsb.hasNativeMethod', {
|
|
58
|
+
name: name,
|
|
59
|
+
type: type || 'all'
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
disableJavascriptDialogBlock: function disableJavascriptDialogBlock(disable) {
|
|
63
|
+
this.call('_dsb.disableJavascriptDialogBlock', {
|
|
64
|
+
disable: disable !== false
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
!function () {
|
|
69
|
+
// 只有在 dsbridge 注入过的环境,才执行下方的代码
|
|
70
|
+
if (!(window._dsbridge || window._dswk || navigator.userAgent.indexOf('_dsbridge') != -1)) return;
|
|
71
|
+
if (window._dsf) return;
|
|
72
|
+
var ob = {
|
|
73
|
+
_dsf: {
|
|
74
|
+
_obs: {}
|
|
75
|
+
},
|
|
76
|
+
_dsaf: {
|
|
77
|
+
_obs: {}
|
|
78
|
+
},
|
|
79
|
+
dscb: 0,
|
|
80
|
+
dsBridge: bridge,
|
|
81
|
+
close: function close() {
|
|
82
|
+
bridge.call('_dsb.closePage');
|
|
83
|
+
},
|
|
84
|
+
_handleMessageFromNative: function _handleMessageFromNative(info) {
|
|
85
|
+
var arg = JSON.parse(info.data);
|
|
86
|
+
var ret = {
|
|
87
|
+
id: info.callbackId,
|
|
88
|
+
complete: true
|
|
89
|
+
};
|
|
90
|
+
var f = this._dsf[info.method];
|
|
91
|
+
var af = this._dsaf[info.method];
|
|
92
|
+
var callSyn = function callSyn(f, ob) {
|
|
93
|
+
ret.data = f.apply(ob, arg);
|
|
94
|
+
bridge.call('_dsb.returnValue', ret);
|
|
95
|
+
};
|
|
96
|
+
var callAsyn = function callAsyn(f, ob) {
|
|
97
|
+
arg.push(function (data, complete) {
|
|
98
|
+
ret.data = data;
|
|
99
|
+
ret.complete = complete !== false;
|
|
100
|
+
bridge.call('_dsb.returnValue', ret);
|
|
101
|
+
});
|
|
102
|
+
f.apply(ob, arg);
|
|
103
|
+
};
|
|
104
|
+
if (f) {
|
|
105
|
+
callSyn(f, this._dsf);
|
|
106
|
+
} else if (af) {
|
|
107
|
+
callAsyn(af, this._dsaf);
|
|
108
|
+
} else {
|
|
109
|
+
//with namespace
|
|
110
|
+
var name = info.method.split('.');
|
|
111
|
+
if (name.length < 2) return;
|
|
112
|
+
var method = name.pop();
|
|
113
|
+
var namespace = name.join('.');
|
|
114
|
+
var obs = this._dsf._obs;
|
|
115
|
+
var ob = obs[namespace] || {};
|
|
116
|
+
var m = ob[method];
|
|
117
|
+
if (m && typeof m == 'function') {
|
|
118
|
+
callSyn(m, ob);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
obs = this._dsaf._obs;
|
|
122
|
+
ob = obs[namespace] || {};
|
|
123
|
+
m = ob[method];
|
|
124
|
+
if (m && typeof m == 'function') {
|
|
125
|
+
callAsyn(m, ob);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
for (var attr in ob) {
|
|
132
|
+
window[attr] = ob[attr];
|
|
133
|
+
}
|
|
134
|
+
bridge.register('_hasJavascriptMethod', function (method, tag) {
|
|
135
|
+
var name = method.split('.');
|
|
136
|
+
if (name.length < 2) {
|
|
137
|
+
return !!(_dsf[name] || _dsaf[name]);
|
|
138
|
+
} else {
|
|
139
|
+
// with namespace
|
|
140
|
+
var method = name.pop();
|
|
141
|
+
var namespace = name.join('.');
|
|
142
|
+
var ob = _dsf._obs[namespace] || _dsaf._obs[namespace];
|
|
143
|
+
return ob && !!ob[method];
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}();
|
|
147
|
+
var _default = exports.default = bridge;
|
package/lib/index.js
CHANGED
|
@@ -4,19 +4,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var
|
|
7
|
+
var _dsbridge = _interopRequireDefault(require("./dsbridge"));
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
-
const dsbridge = _dsbridge2.default.call ? _dsbridge2.default : _dsbridge2.default.default;
|
|
10
9
|
var _default = exports.default = {
|
|
11
10
|
call() {
|
|
12
|
-
|
|
11
|
+
_dsbridge.default.call(...arguments);
|
|
13
12
|
},
|
|
14
13
|
asyncCall() {
|
|
15
14
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
16
15
|
args[_key] = arguments[_key];
|
|
17
16
|
}
|
|
18
17
|
return new Promise((resolve, reject) => {
|
|
19
|
-
|
|
18
|
+
_dsbridge.default.call(...args, resString => {
|
|
20
19
|
try {
|
|
21
20
|
const result = JSON.parse(resString);
|
|
22
21
|
if (result.code === 0) {
|
|
@@ -43,7 +42,7 @@ var _default = exports.default = {
|
|
|
43
42
|
fail('params error');
|
|
44
43
|
return;
|
|
45
44
|
}
|
|
46
|
-
|
|
45
|
+
_dsbridge.default.call('arcShare', JSON.stringify({
|
|
47
46
|
content,
|
|
48
47
|
imgUrl
|
|
49
48
|
}), result => {
|
|
@@ -58,14 +57,14 @@ var _default = exports.default = {
|
|
|
58
57
|
});
|
|
59
58
|
},
|
|
60
59
|
showLoading() {
|
|
61
|
-
|
|
60
|
+
_dsbridge.default.call('arcShowLoading');
|
|
62
61
|
},
|
|
63
62
|
hideLoading() {
|
|
64
|
-
|
|
63
|
+
_dsbridge.default.call('arcHideLoading');
|
|
65
64
|
},
|
|
66
65
|
showToast(msg) {
|
|
67
66
|
if (msg && typeof msg === 'string') {
|
|
68
|
-
|
|
67
|
+
_dsbridge.default.call('arcToast', msg);
|
|
69
68
|
}
|
|
70
69
|
},
|
|
71
70
|
// 图片功能
|
|
@@ -75,7 +74,7 @@ var _default = exports.default = {
|
|
|
75
74
|
success,
|
|
76
75
|
fail
|
|
77
76
|
} = params;
|
|
78
|
-
|
|
77
|
+
_dsbridge.default.call('arcChooseImgs', JSON.stringify({
|
|
79
78
|
limit
|
|
80
79
|
}), result => {
|
|
81
80
|
const parseResult = JSON.parse(result);
|
|
@@ -95,7 +94,7 @@ var _default = exports.default = {
|
|
|
95
94
|
if (!imgs || imgs.length === 0) {
|
|
96
95
|
return;
|
|
97
96
|
}
|
|
98
|
-
|
|
97
|
+
_dsbridge.default.call('arcPreviewImgs', JSON.stringify(params));
|
|
99
98
|
},
|
|
100
99
|
// 钱包功能
|
|
101
100
|
isSetPWD(params) {
|
|
@@ -103,7 +102,7 @@ var _default = exports.default = {
|
|
|
103
102
|
success,
|
|
104
103
|
fail
|
|
105
104
|
} = params;
|
|
106
|
-
|
|
105
|
+
_dsbridge.default.call('arcIsSetPWD', '', result => {
|
|
107
106
|
const parseResult = JSON.parse(result);
|
|
108
107
|
if (parseResult && parseResult.code === 0) {
|
|
109
108
|
if (typeof success === 'function') {
|
|
@@ -119,7 +118,7 @@ var _default = exports.default = {
|
|
|
119
118
|
success,
|
|
120
119
|
fail
|
|
121
120
|
} = params;
|
|
122
|
-
|
|
121
|
+
_dsbridge.default.call('arcIsCodeABOk', '', result => {
|
|
123
122
|
const parseResult = JSON.parse(result);
|
|
124
123
|
if (parseResult && parseResult.code === 0) {
|
|
125
124
|
if (typeof success === 'function') {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcblock/bridge",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.66",
|
|
4
4
|
"description": "a bridge sdk support all js api from DID Wallet.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bridge",
|
|
@@ -27,9 +27,6 @@
|
|
|
27
27
|
"bugs": {
|
|
28
28
|
"url": "https://github.com/ArcBlock/ux/issues"
|
|
29
29
|
},
|
|
30
|
-
"dependencies": {
|
|
31
|
-
"dsbridge": "^3.1.4"
|
|
32
|
-
},
|
|
33
30
|
"publishConfig": {
|
|
34
31
|
"access": "public"
|
|
35
32
|
},
|
|
@@ -41,5 +38,5 @@
|
|
|
41
38
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
42
39
|
"jest": "^28.1.3"
|
|
43
40
|
},
|
|
44
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "97e0dafc5e7ab2a2a25942a145f4211e3ec01a5e"
|
|
45
42
|
}
|
package/src/dsbridge.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* @copyright https://www.npmjs.com/package/dsbridge
|
|
4
|
+
* @description 只添加方法劫持前的判断,其余不做任何改动,确保不会有任何影响
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
var bridge = {
|
|
8
|
+
call: function (method, args, cb) {
|
|
9
|
+
var ret = '';
|
|
10
|
+
if (typeof args == 'function') {
|
|
11
|
+
cb = args;
|
|
12
|
+
args = {};
|
|
13
|
+
}
|
|
14
|
+
var arg = { data: args === undefined ? null : args };
|
|
15
|
+
if (typeof cb == 'function') {
|
|
16
|
+
var cbName = 'dscb' + window.dscb++;
|
|
17
|
+
window[cbName] = cb;
|
|
18
|
+
arg['_dscbstub'] = cbName;
|
|
19
|
+
}
|
|
20
|
+
arg = JSON.stringify(arg);
|
|
21
|
+
|
|
22
|
+
//if in webview that dsBridge provided, call!
|
|
23
|
+
if (window._dsbridge) {
|
|
24
|
+
ret = _dsbridge.call(method, arg);
|
|
25
|
+
} else if (window._dswk || navigator.userAgent.indexOf('_dsbridge') != -1) {
|
|
26
|
+
ret = prompt('_dsbridge=' + method, arg);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return JSON.parse(ret || '{}').data;
|
|
30
|
+
},
|
|
31
|
+
register: function (name, fun, asyn) {
|
|
32
|
+
var q = asyn ? window._dsaf : window._dsf;
|
|
33
|
+
if (!window._dsInit) {
|
|
34
|
+
window._dsInit = true;
|
|
35
|
+
//notify native that js apis register successfully on next event loop
|
|
36
|
+
setTimeout(function () {
|
|
37
|
+
bridge.call('_dsb.dsinit');
|
|
38
|
+
}, 0);
|
|
39
|
+
}
|
|
40
|
+
if (typeof fun == 'object') {
|
|
41
|
+
q._obs[name] = fun;
|
|
42
|
+
} else {
|
|
43
|
+
q[name] = fun;
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
registerAsyn: function (name, fun) {
|
|
47
|
+
this.register(name, fun, true);
|
|
48
|
+
},
|
|
49
|
+
hasNativeMethod: function (name, type) {
|
|
50
|
+
return this.call('_dsb.hasNativeMethod', { name: name, type: type || 'all' });
|
|
51
|
+
},
|
|
52
|
+
disableJavascriptDialogBlock: function (disable) {
|
|
53
|
+
this.call('_dsb.disableJavascriptDialogBlock', {
|
|
54
|
+
disable: disable !== false,
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
!(function () {
|
|
60
|
+
// 只有在 dsbridge 注入过的环境,才执行下方的代码
|
|
61
|
+
if (!(window._dsbridge || window._dswk || navigator.userAgent.indexOf('_dsbridge') != -1)) return;
|
|
62
|
+
if (window._dsf) return;
|
|
63
|
+
var ob = {
|
|
64
|
+
_dsf: {
|
|
65
|
+
_obs: {},
|
|
66
|
+
},
|
|
67
|
+
_dsaf: {
|
|
68
|
+
_obs: {},
|
|
69
|
+
},
|
|
70
|
+
dscb: 0,
|
|
71
|
+
dsBridge: bridge,
|
|
72
|
+
close: function () {
|
|
73
|
+
bridge.call('_dsb.closePage');
|
|
74
|
+
},
|
|
75
|
+
_handleMessageFromNative: function (info) {
|
|
76
|
+
var arg = JSON.parse(info.data);
|
|
77
|
+
var ret = {
|
|
78
|
+
id: info.callbackId,
|
|
79
|
+
complete: true,
|
|
80
|
+
};
|
|
81
|
+
var f = this._dsf[info.method];
|
|
82
|
+
var af = this._dsaf[info.method];
|
|
83
|
+
var callSyn = function (f, ob) {
|
|
84
|
+
ret.data = f.apply(ob, arg);
|
|
85
|
+
bridge.call('_dsb.returnValue', ret);
|
|
86
|
+
};
|
|
87
|
+
var callAsyn = function (f, ob) {
|
|
88
|
+
arg.push(function (data, complete) {
|
|
89
|
+
ret.data = data;
|
|
90
|
+
ret.complete = complete !== false;
|
|
91
|
+
bridge.call('_dsb.returnValue', ret);
|
|
92
|
+
});
|
|
93
|
+
f.apply(ob, arg);
|
|
94
|
+
};
|
|
95
|
+
if (f) {
|
|
96
|
+
callSyn(f, this._dsf);
|
|
97
|
+
} else if (af) {
|
|
98
|
+
callAsyn(af, this._dsaf);
|
|
99
|
+
} else {
|
|
100
|
+
//with namespace
|
|
101
|
+
var name = info.method.split('.');
|
|
102
|
+
if (name.length < 2) return;
|
|
103
|
+
var method = name.pop();
|
|
104
|
+
var namespace = name.join('.');
|
|
105
|
+
var obs = this._dsf._obs;
|
|
106
|
+
var ob = obs[namespace] || {};
|
|
107
|
+
var m = ob[method];
|
|
108
|
+
if (m && typeof m == 'function') {
|
|
109
|
+
callSyn(m, ob);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
obs = this._dsaf._obs;
|
|
113
|
+
ob = obs[namespace] || {};
|
|
114
|
+
m = ob[method];
|
|
115
|
+
if (m && typeof m == 'function') {
|
|
116
|
+
callAsyn(m, ob);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
for (var attr in ob) {
|
|
123
|
+
window[attr] = ob[attr];
|
|
124
|
+
}
|
|
125
|
+
bridge.register('_hasJavascriptMethod', function (method, tag) {
|
|
126
|
+
var name = method.split('.');
|
|
127
|
+
if (name.length < 2) {
|
|
128
|
+
return !!(_dsf[name] || _dsaf[name]);
|
|
129
|
+
} else {
|
|
130
|
+
// with namespace
|
|
131
|
+
var method = name.pop();
|
|
132
|
+
var namespace = name.join('.');
|
|
133
|
+
var ob = _dsf._obs[namespace] || _dsaf._obs[namespace];
|
|
134
|
+
return ob && !!ob[method];
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
})();
|
|
138
|
+
|
|
139
|
+
export default bridge;
|