@onekeyfe/extension-bridge-hosted 0.0.2 → 0.0.5
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/JsBridgeExtBackground.d.ts +1 -0
- package/dist/JsBridgeExtBackground.js +16 -4
- package/dist/JsBridgeExtUi.d.ts +1 -0
- package/dist/JsBridgeExtUi.js +12 -2
- package/dist/bridgeSetup/contentScript.js +2 -2
- package/dist/cjs/JsBridgeExtBackground.js +16 -4
- package/dist/cjs/JsBridgeExtUi.js +12 -2
- package/dist/cjs/bridgeSetup/contentScript.js +1 -1
- package/package.json +6 -6
|
@@ -7,6 +7,7 @@ declare class JsBridgeExtBackground extends JsBridgeBase {
|
|
|
7
7
|
ports: Record<number | string, chrome.runtime.Port>;
|
|
8
8
|
private portIdIndex;
|
|
9
9
|
sendPayload(payload0: IJsBridgeMessagePayload | string): void;
|
|
10
|
+
_getOriginFromPort(port: chrome.runtime.Port): string;
|
|
10
11
|
setupMessagePortOnConnect(): void;
|
|
11
12
|
requestToAllCS(scope: IInjectedProviderNamesStrings, data: unknown): void;
|
|
12
13
|
requestToAllUi(data: unknown): void;
|
|
@@ -39,6 +39,20 @@ class JsBridgeExtBackground extends JsBridgeBase {
|
|
|
39
39
|
throw error;
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
+
_getOriginFromPort(port) {
|
|
43
|
+
var _a, _b, _c, _d;
|
|
44
|
+
// chrome
|
|
45
|
+
let origin = ((_a = port === null || port === void 0 ? void 0 : port.sender) === null || _a === void 0 ? void 0 : _a.origin) || '';
|
|
46
|
+
// firefox
|
|
47
|
+
if (!origin && ((_b = port === null || port === void 0 ? void 0 : port.sender) === null || _b === void 0 ? void 0 : _b.url)) {
|
|
48
|
+
const uri = new URL((_c = port === null || port === void 0 ? void 0 : port.sender) === null || _c === void 0 ? void 0 : _c.url);
|
|
49
|
+
origin = (uri === null || uri === void 0 ? void 0 : uri.origin) || '';
|
|
50
|
+
}
|
|
51
|
+
if (!origin) {
|
|
52
|
+
console.error((_d = this === null || this === void 0 ? void 0 : this.constructor) === null || _d === void 0 ? void 0 : _d.name, 'ERROR: origin not found from port sender', port);
|
|
53
|
+
}
|
|
54
|
+
return origin;
|
|
55
|
+
}
|
|
42
56
|
setupMessagePortOnConnect() {
|
|
43
57
|
// TODO removeListener
|
|
44
58
|
chrome.runtime.onConnect.addListener((port) => {
|
|
@@ -55,8 +69,7 @@ class JsBridgeExtBackground extends JsBridgeBase {
|
|
|
55
69
|
const portId = this.portIdIndex;
|
|
56
70
|
this.ports[portId] = port;
|
|
57
71
|
const onMessage = (payload, port0) => {
|
|
58
|
-
|
|
59
|
-
const origin = ((_a = port0.sender) === null || _a === void 0 ? void 0 : _a.origin) || '';
|
|
72
|
+
const origin = this._getOriginFromPort(port0);
|
|
60
73
|
payload.remoteId = portId;
|
|
61
74
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
62
75
|
const jsBridge = this;
|
|
@@ -85,9 +98,8 @@ class JsBridgeExtBackground extends JsBridgeBase {
|
|
|
85
98
|
// TODO optimize rename: broadcastRequest
|
|
86
99
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
87
100
|
entries(this.ports).forEach(([portId, port]) => __awaiter(this, void 0, void 0, function* () {
|
|
88
|
-
var _a;
|
|
89
101
|
if (port.name === EXT_PORT_CS_TO_BG) {
|
|
90
|
-
const origin = (
|
|
102
|
+
const origin = this._getOriginFromPort(port);
|
|
91
103
|
if (isFunction(data)) {
|
|
92
104
|
// eslint-disable-next-line no-param-reassign
|
|
93
105
|
data = yield data({ origin });
|
package/dist/JsBridgeExtUi.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ declare class JsBridgeExtUi extends JsBridgeBase {
|
|
|
10
10
|
sendAsString: boolean;
|
|
11
11
|
private portToBg;
|
|
12
12
|
sendPayload(payload: IJsBridgeMessagePayload | string): void;
|
|
13
|
+
_getOriginFromPort(port: chrome.runtime.Port): string;
|
|
13
14
|
setupMessagePortConnect(config: IJsBridgeExtUiConfig): void;
|
|
14
15
|
}
|
|
15
16
|
export { JsBridgeExtUi };
|
package/dist/JsBridgeExtUi.js
CHANGED
|
@@ -14,13 +14,23 @@ class JsBridgeExtUi extends JsBridgeBase {
|
|
|
14
14
|
this.portToBg.postMessage(payload);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
_getOriginFromPort(port) {
|
|
18
|
+
var _a, _b, _c;
|
|
19
|
+
// chrome
|
|
20
|
+
let origin = ((_a = port === null || port === void 0 ? void 0 : port.sender) === null || _a === void 0 ? void 0 : _a.origin) || '';
|
|
21
|
+
// firefox
|
|
22
|
+
if (!origin && ((_b = port === null || port === void 0 ? void 0 : port.sender) === null || _b === void 0 ? void 0 : _b.url)) {
|
|
23
|
+
const uri = new URL((_c = port === null || port === void 0 ? void 0 : port.sender) === null || _c === void 0 ? void 0 : _c.url);
|
|
24
|
+
origin = (uri === null || uri === void 0 ? void 0 : uri.origin) || '';
|
|
25
|
+
}
|
|
26
|
+
return origin;
|
|
27
|
+
}
|
|
17
28
|
setupMessagePortConnect(config) {
|
|
18
29
|
messagePort.connect({
|
|
19
30
|
name: EXT_PORT_UI_TO_BG,
|
|
20
31
|
// #### background -> ui
|
|
21
32
|
onMessage: (payload, port0) => {
|
|
22
|
-
|
|
23
|
-
let origin = ((_a = port0.sender) === null || _a === void 0 ? void 0 : _a.origin) || '';
|
|
33
|
+
let origin = this._getOriginFromPort(port0) || '';
|
|
24
34
|
// in ext ui, port.sender?.origin is always empty,
|
|
25
35
|
// so we trust remote (background) origin
|
|
26
36
|
origin = origin || payload.origin || '';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { consts, isLegacyExtMessage,
|
|
1
|
+
import { consts, isLegacyExtMessage, appDebugLogger, injectedFactory, } from '@onekeyfe/cross-inpage-provider-core';
|
|
2
2
|
import messagePort from '../extensionMessagePort';
|
|
3
3
|
const { EXT_PORT_CS_TO_BG, JS_BRIDGE_MESSAGE_DIRECTION, JS_BRIDGE_MESSAGE_EXT_CHANNEL } = consts;
|
|
4
4
|
// TODO one-time only
|
|
@@ -17,7 +17,7 @@ function inject(filename) {
|
|
|
17
17
|
}
|
|
18
18
|
// TODO one-time only
|
|
19
19
|
function setupMessagePort(options = {}) {
|
|
20
|
-
const debugLogger = options.debugLogger ||
|
|
20
|
+
const debugLogger = options.debugLogger || appDebugLogger;
|
|
21
21
|
messagePort.connect({
|
|
22
22
|
name: EXT_PORT_CS_TO_BG,
|
|
23
23
|
// #### background -> content-script
|
|
@@ -45,6 +45,20 @@ class JsBridgeExtBackground extends cross_inpage_provider_core_1.JsBridgeBase {
|
|
|
45
45
|
throw error;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
_getOriginFromPort(port) {
|
|
49
|
+
var _a, _b, _c, _d;
|
|
50
|
+
// chrome
|
|
51
|
+
let origin = ((_a = port === null || port === void 0 ? void 0 : port.sender) === null || _a === void 0 ? void 0 : _a.origin) || '';
|
|
52
|
+
// firefox
|
|
53
|
+
if (!origin && ((_b = port === null || port === void 0 ? void 0 : port.sender) === null || _b === void 0 ? void 0 : _b.url)) {
|
|
54
|
+
const uri = new URL((_c = port === null || port === void 0 ? void 0 : port.sender) === null || _c === void 0 ? void 0 : _c.url);
|
|
55
|
+
origin = (uri === null || uri === void 0 ? void 0 : uri.origin) || '';
|
|
56
|
+
}
|
|
57
|
+
if (!origin) {
|
|
58
|
+
console.error((_d = this === null || this === void 0 ? void 0 : this.constructor) === null || _d === void 0 ? void 0 : _d.name, 'ERROR: origin not found from port sender', port);
|
|
59
|
+
}
|
|
60
|
+
return origin;
|
|
61
|
+
}
|
|
48
62
|
setupMessagePortOnConnect() {
|
|
49
63
|
// TODO removeListener
|
|
50
64
|
chrome.runtime.onConnect.addListener((port) => {
|
|
@@ -61,8 +75,7 @@ class JsBridgeExtBackground extends cross_inpage_provider_core_1.JsBridgeBase {
|
|
|
61
75
|
const portId = this.portIdIndex;
|
|
62
76
|
this.ports[portId] = port;
|
|
63
77
|
const onMessage = (payload, port0) => {
|
|
64
|
-
|
|
65
|
-
const origin = ((_a = port0.sender) === null || _a === void 0 ? void 0 : _a.origin) || '';
|
|
78
|
+
const origin = this._getOriginFromPort(port0);
|
|
66
79
|
payload.remoteId = portId;
|
|
67
80
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
68
81
|
const jsBridge = this;
|
|
@@ -91,9 +104,8 @@ class JsBridgeExtBackground extends cross_inpage_provider_core_1.JsBridgeBase {
|
|
|
91
104
|
// TODO optimize rename: broadcastRequest
|
|
92
105
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
93
106
|
(0, entries_1.default)(this.ports).forEach(([portId, port]) => __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
var _a;
|
|
95
107
|
if (port.name === EXT_PORT_CS_TO_BG) {
|
|
96
|
-
const origin = (
|
|
108
|
+
const origin = this._getOriginFromPort(port);
|
|
97
109
|
if ((0, isFunction_1.default)(data)) {
|
|
98
110
|
// eslint-disable-next-line no-param-reassign
|
|
99
111
|
data = yield data({ origin });
|
|
@@ -20,13 +20,23 @@ class JsBridgeExtUi extends cross_inpage_provider_core_1.JsBridgeBase {
|
|
|
20
20
|
this.portToBg.postMessage(payload);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
+
_getOriginFromPort(port) {
|
|
24
|
+
var _a, _b, _c;
|
|
25
|
+
// chrome
|
|
26
|
+
let origin = ((_a = port === null || port === void 0 ? void 0 : port.sender) === null || _a === void 0 ? void 0 : _a.origin) || '';
|
|
27
|
+
// firefox
|
|
28
|
+
if (!origin && ((_b = port === null || port === void 0 ? void 0 : port.sender) === null || _b === void 0 ? void 0 : _b.url)) {
|
|
29
|
+
const uri = new URL((_c = port === null || port === void 0 ? void 0 : port.sender) === null || _c === void 0 ? void 0 : _c.url);
|
|
30
|
+
origin = (uri === null || uri === void 0 ? void 0 : uri.origin) || '';
|
|
31
|
+
}
|
|
32
|
+
return origin;
|
|
33
|
+
}
|
|
23
34
|
setupMessagePortConnect(config) {
|
|
24
35
|
extensionMessagePort_1.default.connect({
|
|
25
36
|
name: EXT_PORT_UI_TO_BG,
|
|
26
37
|
// #### background -> ui
|
|
27
38
|
onMessage: (payload, port0) => {
|
|
28
|
-
|
|
29
|
-
let origin = ((_a = port0.sender) === null || _a === void 0 ? void 0 : _a.origin) || '';
|
|
39
|
+
let origin = this._getOriginFromPort(port0) || '';
|
|
30
40
|
// in ext ui, port.sender?.origin is always empty,
|
|
31
41
|
// so we trust remote (background) origin
|
|
32
42
|
origin = origin || payload.origin || '';
|
|
@@ -22,7 +22,7 @@ function inject(filename) {
|
|
|
22
22
|
}
|
|
23
23
|
// TODO one-time only
|
|
24
24
|
function setupMessagePort(options = {}) {
|
|
25
|
-
const debugLogger = options.debugLogger || cross_inpage_provider_core_1.
|
|
25
|
+
const debugLogger = options.debugLogger || cross_inpage_provider_core_1.appDebugLogger;
|
|
26
26
|
extensionMessagePort_1.default.connect({
|
|
27
27
|
name: EXT_PORT_CS_TO_BG,
|
|
28
28
|
// #### background -> content-script
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/extension-bridge-hosted",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"cross-inpage-provider"
|
|
6
6
|
],
|
|
@@ -20,16 +20,16 @@
|
|
|
20
20
|
"require": "./dist/cjs/index.js"
|
|
21
21
|
},
|
|
22
22
|
"types": "./dist/index.d.ts",
|
|
23
|
-
"module": "dist/index.js",
|
|
24
|
-
"main": "dist/cjs/index.js",
|
|
23
|
+
"module": "./dist/index.js",
|
|
24
|
+
"main": "./dist/cjs/index.js",
|
|
25
25
|
"scripts": {
|
|
26
26
|
"prebuild": "rm -rf dist",
|
|
27
27
|
"build": "tsc && tsc --project tsconfig.cjs.json",
|
|
28
28
|
"start": "tsc --watch"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@onekeyfe/cross-inpage-provider-core": "^0.0.
|
|
32
|
-
"@onekeyfe/cross-inpage-provider-types": "^0.0.
|
|
31
|
+
"@onekeyfe/cross-inpage-provider-core": "^0.0.5",
|
|
32
|
+
"@onekeyfe/cross-inpage-provider-types": "^0.0.5"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "fc053fe3c2920fca734addae381339a29a09b716"
|
|
35
35
|
}
|