@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.
@@ -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
- var _a;
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 = ((_a = port === null || port === void 0 ? void 0 : port.sender) === null || _a === void 0 ? void 0 : _a.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 });
@@ -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 };
@@ -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
- var _a;
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, fakeDebugLogger, injectedFactory, } from '@onekeyfe/cross-inpage-provider-core';
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 || fakeDebugLogger;
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
- var _a;
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 = ((_a = port === null || port === void 0 ? void 0 : port.sender) === null || _a === void 0 ? void 0 : _a.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
- var _a;
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.fakeDebugLogger;
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.2",
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.2",
32
- "@onekeyfe/cross-inpage-provider-types": "^0.0.2"
31
+ "@onekeyfe/cross-inpage-provider-core": "^0.0.5",
32
+ "@onekeyfe/cross-inpage-provider-types": "^0.0.5"
33
33
  },
34
- "gitHead": "97aa3c911466f5c3a46b005a69d5b3edd1d8fd7c"
34
+ "gitHead": "fc053fe3c2920fca734addae381339a29a09b716"
35
35
  }