@onekeyfe/extension-bridge-hosted 1.1.24 → 1.1.26

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.
@@ -5,10 +5,21 @@ declare class JsBridgeExtBackground extends JsBridgeBase {
5
5
  constructor(config: IJsBridgeConfig);
6
6
  sendAsString: boolean;
7
7
  ports: Record<number | string, chrome.runtime.Port>;
8
+ offscreenPort: chrome.runtime.Port | undefined;
9
+ offscreenPortId: number | undefined;
8
10
  private portIdIndex;
11
+ addPort({ portId, port }: {
12
+ portId: number;
13
+ port: chrome.runtime.Port;
14
+ }): void;
15
+ removePort({ portId, port }: {
16
+ portId: number;
17
+ port: chrome.runtime.Port;
18
+ }): void;
9
19
  sendPayload(payload0: IJsBridgeMessagePayload | string): void;
10
20
  _getOriginFromPort(port: chrome.runtime.Port): string;
11
21
  setupMessagePortOnConnect(): void;
22
+ requestToOffscreen(data: unknown): Promise<import("@onekeyfe/cross-inpage-provider-types").IJsonRpcResponse<unknown>> | undefined;
12
23
  requestToAllCS(scope: IInjectedProviderNamesStrings, data: unknown): void;
13
24
  requestToAllUi(data: unknown): void;
14
25
  }
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import isFunction from 'lodash/isFunction';
11
11
  import entries from 'lodash/entries';
12
12
  import { JsBridgeBase, consts } from '@onekeyfe/cross-inpage-provider-core';
13
- const { EXT_PORT_CS_TO_BG, EXT_PORT_UI_TO_BG } = consts;
13
+ const { EXT_PORT_OFFSCREEN_TO_BG, EXT_PORT_CS_TO_BG, EXT_PORT_UI_TO_BG } = consts;
14
14
  class JsBridgeExtBackground extends JsBridgeBase {
15
15
  constructor(config) {
16
16
  super(config);
@@ -19,6 +19,20 @@ class JsBridgeExtBackground extends JsBridgeBase {
19
19
  this.portIdIndex = 1;
20
20
  this.setupMessagePortOnConnect();
21
21
  }
22
+ addPort({ portId, port }) {
23
+ this.ports[portId] = port;
24
+ if (port.name === EXT_PORT_OFFSCREEN_TO_BG) {
25
+ this.offscreenPort = port;
26
+ this.offscreenPortId = portId;
27
+ }
28
+ }
29
+ removePort({ portId, port }) {
30
+ delete this.ports[portId];
31
+ if (port.name === EXT_PORT_OFFSCREEN_TO_BG) {
32
+ this.offscreenPort = undefined;
33
+ this.offscreenPortId = undefined;
34
+ }
35
+ }
22
36
  sendPayload(payload0) {
23
37
  const payload = payload0;
24
38
  if (!payload.remoteId) {
@@ -39,6 +53,7 @@ class JsBridgeExtBackground extends JsBridgeBase {
39
53
  throw error;
40
54
  }
41
55
  }
56
+ // TODO use utils
42
57
  _getOriginFromPort(port) {
43
58
  var _a, _b, _c, _d;
44
59
  // chrome
@@ -64,10 +79,15 @@ class JsBridgeExtBackground extends JsBridgeBase {
64
79
  url: "https://app.uniswap.org/#/swap"
65
80
  */
66
81
  // content-script may be multiple
67
- if (port.name === EXT_PORT_CS_TO_BG || port.name === EXT_PORT_UI_TO_BG) {
82
+ if (port.name === EXT_PORT_CS_TO_BG ||
83
+ port.name === EXT_PORT_UI_TO_BG ||
84
+ port.name === EXT_PORT_OFFSCREEN_TO_BG) {
68
85
  this.portIdIndex += 1;
69
86
  const portId = this.portIdIndex;
70
- this.ports[portId] = port;
87
+ this.addPort({
88
+ portId,
89
+ port,
90
+ });
71
91
  const onMessage = (payload, port0) => {
72
92
  const origin = this._getOriginFromPort(port0);
73
93
  payload.remoteId = portId;
@@ -78,22 +98,32 @@ class JsBridgeExtBackground extends JsBridgeBase {
78
98
  // - receive
79
99
  jsBridge.receive(payload, {
80
100
  origin,
81
- // only trust message from UI, but NOT from content-script(dapp)
82
- internal: port.name === EXT_PORT_UI_TO_BG,
101
+ // TODO trust origin
102
+ // only trust message from UI/Offscreen, but NOT from content-script(dapp)
103
+ internal: port.name === EXT_PORT_UI_TO_BG || port.name === EXT_PORT_OFFSCREEN_TO_BG,
83
104
  });
84
105
  };
85
106
  // #### content-script -> background
86
107
  port.onMessage.addListener(onMessage);
87
108
  // TODO onDisconnect remove ports cache
88
109
  const onDisconnect = () => {
89
- delete this.ports[portId];
90
110
  port.onMessage.removeListener(onMessage);
91
111
  port.onDisconnect.removeListener(onDisconnect);
112
+ this.removePort({
113
+ portId,
114
+ port,
115
+ });
92
116
  };
93
117
  port.onDisconnect.addListener(onDisconnect);
94
118
  }
95
119
  });
96
120
  }
121
+ requestToOffscreen(data) {
122
+ if (!this.offscreenPort) {
123
+ throw new Error('offscreenPort not ready.');
124
+ }
125
+ return this.request({ data, remoteId: this.offscreenPortId });
126
+ }
97
127
  requestToAllCS(scope, data) {
98
128
  // TODO optimize rename: broadcastRequest
99
129
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
@@ -0,0 +1,14 @@
1
+ /// <reference types="chrome" />
2
+ import { IJsBridgeConfig, IJsBridgeMessagePayload } from '@onekeyfe/cross-inpage-provider-types';
3
+ import { JsBridgeBase } from '@onekeyfe/cross-inpage-provider-core';
4
+ export declare type IJsBridgeExtOffscreenConfig = IJsBridgeConfig & {
5
+ onPortConnect: (port0: chrome.runtime.Port) => void;
6
+ };
7
+ declare class JsBridgeExtOffscreen extends JsBridgeBase {
8
+ constructor(config: IJsBridgeExtOffscreenConfig);
9
+ sendAsString: boolean;
10
+ private portToBg;
11
+ sendPayload(payload: IJsBridgeMessagePayload | string): void;
12
+ setupMessagePortConnect(config: IJsBridgeExtOffscreenConfig): void;
13
+ }
14
+ export { JsBridgeExtOffscreen };
@@ -0,0 +1,46 @@
1
+ import messagePort from './extensionMessagePort';
2
+ import { JsBridgeBase, consts } from '@onekeyfe/cross-inpage-provider-core';
3
+ import utils from './utils';
4
+ const { EXT_PORT_OFFSCREEN_TO_BG } = consts;
5
+ class JsBridgeExtOffscreen extends JsBridgeBase {
6
+ constructor(config) {
7
+ super(config);
8
+ this.sendAsString = false;
9
+ this.portToBg = null;
10
+ this.setupMessagePortConnect(config);
11
+ }
12
+ sendPayload(payload) {
13
+ if (this.portToBg) {
14
+ this.portToBg.postMessage(payload);
15
+ }
16
+ }
17
+ setupMessagePortConnect(config) {
18
+ messagePort.connect({
19
+ name: EXT_PORT_OFFSCREEN_TO_BG,
20
+ // #### background -> offscreen
21
+ onMessage: (payload, port0) => {
22
+ let origin = utils.getOriginFromPort(port0) || '';
23
+ // in ext offscreen, port.sender?.origin is always empty,
24
+ // so we trust remote (background) origin
25
+ origin = origin || payload.origin || '';
26
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
27
+ const jsBridge = this;
28
+ jsBridge.receive(payload, {
29
+ origin,
30
+ // trust message from background
31
+ internal: port0.name === EXT_PORT_OFFSCREEN_TO_BG,
32
+ });
33
+ },
34
+ onConnect: (port) => {
35
+ this.portToBg = port;
36
+ setTimeout(() => {
37
+ config.onPortConnect(port);
38
+ }, 0);
39
+ return () => {
40
+ this.portToBg = null;
41
+ };
42
+ },
43
+ });
44
+ }
45
+ }
46
+ export { JsBridgeExtOffscreen };
@@ -10,7 +10,6 @@ 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;
14
13
  setupMessagePortConnect(config: IJsBridgeExtUiConfig): void;
15
14
  }
16
15
  export { JsBridgeExtUi };
@@ -1,5 +1,6 @@
1
1
  import messagePort from './extensionMessagePort';
2
2
  import { JsBridgeBase, consts } from '@onekeyfe/cross-inpage-provider-core';
3
+ import utils from './utils';
3
4
  const { EXT_PORT_UI_TO_BG } = consts;
4
5
  class JsBridgeExtUi extends JsBridgeBase {
5
6
  constructor(config) {
@@ -14,23 +15,12 @@ class JsBridgeExtUi extends JsBridgeBase {
14
15
  this.portToBg.postMessage(payload);
15
16
  }
16
17
  }
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
- }
28
18
  setupMessagePortConnect(config) {
29
19
  messagePort.connect({
30
20
  name: EXT_PORT_UI_TO_BG,
31
21
  // #### background -> ui
32
22
  onMessage: (payload, port0) => {
33
- let origin = this._getOriginFromPort(port0) || '';
23
+ let origin = utils.getOriginFromPort(port0) || '';
34
24
  // in ext ui, port.sender?.origin is always empty,
35
25
  // so we trust remote (background) origin
36
26
  origin = origin || payload.origin || '';
@@ -15,4 +15,7 @@ export declare const bridgeSetup: {
15
15
  receiveHandler: import("@onekeyfe/cross-inpage-provider-types").IJsBridgeReceiveHandler;
16
16
  }) => import("../JsBridgeExtBackground").JsBridgeExtBackground;
17
17
  };
18
+ offscreen: {
19
+ createOffscreenJsBridge: (config: import("..").IJsBridgeExtOffscreenConfig) => import("../JsBridgeExtOffscreen").JsBridgeExtOffscreen;
20
+ };
18
21
  };
@@ -1,8 +1,10 @@
1
1
  import background from './background';
2
2
  import ui from './ui';
3
3
  import contentScript from './contentScript';
4
+ import offscreen from './offscreen';
4
5
  export const bridgeSetup = {
5
6
  contentScript,
6
7
  ui,
7
8
  background,
9
+ offscreen,
8
10
  };
@@ -0,0 +1,6 @@
1
+ import { JsBridgeExtOffscreen, IJsBridgeExtOffscreenConfig } from '../JsBridgeExtOffscreen';
2
+ declare function createOffscreenJsBridge(config: IJsBridgeExtOffscreenConfig): JsBridgeExtOffscreen;
3
+ declare const _default: {
4
+ createOffscreenJsBridge: typeof createOffscreenJsBridge;
5
+ };
6
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { JsBridgeExtOffscreen } from '../JsBridgeExtOffscreen';
2
+ function createOffscreenJsBridge(config) {
3
+ const bridge = new JsBridgeExtOffscreen(config);
4
+ return bridge;
5
+ }
6
+ export default {
7
+ createOffscreenJsBridge,
8
+ };
@@ -16,7 +16,7 @@ exports.JsBridgeExtBackground = void 0;
16
16
  const isFunction_1 = __importDefault(require("lodash/isFunction"));
17
17
  const entries_1 = __importDefault(require("lodash/entries"));
18
18
  const cross_inpage_provider_core_1 = require("@onekeyfe/cross-inpage-provider-core");
19
- const { EXT_PORT_CS_TO_BG, EXT_PORT_UI_TO_BG } = cross_inpage_provider_core_1.consts;
19
+ const { EXT_PORT_OFFSCREEN_TO_BG, EXT_PORT_CS_TO_BG, EXT_PORT_UI_TO_BG } = cross_inpage_provider_core_1.consts;
20
20
  class JsBridgeExtBackground extends cross_inpage_provider_core_1.JsBridgeBase {
21
21
  constructor(config) {
22
22
  super(config);
@@ -25,6 +25,20 @@ class JsBridgeExtBackground extends cross_inpage_provider_core_1.JsBridgeBase {
25
25
  this.portIdIndex = 1;
26
26
  this.setupMessagePortOnConnect();
27
27
  }
28
+ addPort({ portId, port }) {
29
+ this.ports[portId] = port;
30
+ if (port.name === EXT_PORT_OFFSCREEN_TO_BG) {
31
+ this.offscreenPort = port;
32
+ this.offscreenPortId = portId;
33
+ }
34
+ }
35
+ removePort({ portId, port }) {
36
+ delete this.ports[portId];
37
+ if (port.name === EXT_PORT_OFFSCREEN_TO_BG) {
38
+ this.offscreenPort = undefined;
39
+ this.offscreenPortId = undefined;
40
+ }
41
+ }
28
42
  sendPayload(payload0) {
29
43
  const payload = payload0;
30
44
  if (!payload.remoteId) {
@@ -45,6 +59,7 @@ class JsBridgeExtBackground extends cross_inpage_provider_core_1.JsBridgeBase {
45
59
  throw error;
46
60
  }
47
61
  }
62
+ // TODO use utils
48
63
  _getOriginFromPort(port) {
49
64
  var _a, _b, _c, _d;
50
65
  // chrome
@@ -70,10 +85,15 @@ class JsBridgeExtBackground extends cross_inpage_provider_core_1.JsBridgeBase {
70
85
  url: "https://app.uniswap.org/#/swap"
71
86
  */
72
87
  // content-script may be multiple
73
- if (port.name === EXT_PORT_CS_TO_BG || port.name === EXT_PORT_UI_TO_BG) {
88
+ if (port.name === EXT_PORT_CS_TO_BG ||
89
+ port.name === EXT_PORT_UI_TO_BG ||
90
+ port.name === EXT_PORT_OFFSCREEN_TO_BG) {
74
91
  this.portIdIndex += 1;
75
92
  const portId = this.portIdIndex;
76
- this.ports[portId] = port;
93
+ this.addPort({
94
+ portId,
95
+ port,
96
+ });
77
97
  const onMessage = (payload, port0) => {
78
98
  const origin = this._getOriginFromPort(port0);
79
99
  payload.remoteId = portId;
@@ -84,22 +104,32 @@ class JsBridgeExtBackground extends cross_inpage_provider_core_1.JsBridgeBase {
84
104
  // - receive
85
105
  jsBridge.receive(payload, {
86
106
  origin,
87
- // only trust message from UI, but NOT from content-script(dapp)
88
- internal: port.name === EXT_PORT_UI_TO_BG,
107
+ // TODO trust origin
108
+ // only trust message from UI/Offscreen, but NOT from content-script(dapp)
109
+ internal: port.name === EXT_PORT_UI_TO_BG || port.name === EXT_PORT_OFFSCREEN_TO_BG,
89
110
  });
90
111
  };
91
112
  // #### content-script -> background
92
113
  port.onMessage.addListener(onMessage);
93
114
  // TODO onDisconnect remove ports cache
94
115
  const onDisconnect = () => {
95
- delete this.ports[portId];
96
116
  port.onMessage.removeListener(onMessage);
97
117
  port.onDisconnect.removeListener(onDisconnect);
118
+ this.removePort({
119
+ portId,
120
+ port,
121
+ });
98
122
  };
99
123
  port.onDisconnect.addListener(onDisconnect);
100
124
  }
101
125
  });
102
126
  }
127
+ requestToOffscreen(data) {
128
+ if (!this.offscreenPort) {
129
+ throw new Error('offscreenPort not ready.');
130
+ }
131
+ return this.request({ data, remoteId: this.offscreenPortId });
132
+ }
103
133
  requestToAllCS(scope, data) {
104
134
  // TODO optimize rename: broadcastRequest
105
135
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.JsBridgeExtOffscreen = void 0;
7
+ const extensionMessagePort_1 = __importDefault(require("./extensionMessagePort"));
8
+ const cross_inpage_provider_core_1 = require("@onekeyfe/cross-inpage-provider-core");
9
+ const utils_1 = __importDefault(require("./utils"));
10
+ const { EXT_PORT_OFFSCREEN_TO_BG } = cross_inpage_provider_core_1.consts;
11
+ class JsBridgeExtOffscreen extends cross_inpage_provider_core_1.JsBridgeBase {
12
+ constructor(config) {
13
+ super(config);
14
+ this.sendAsString = false;
15
+ this.portToBg = null;
16
+ this.setupMessagePortConnect(config);
17
+ }
18
+ sendPayload(payload) {
19
+ if (this.portToBg) {
20
+ this.portToBg.postMessage(payload);
21
+ }
22
+ }
23
+ setupMessagePortConnect(config) {
24
+ extensionMessagePort_1.default.connect({
25
+ name: EXT_PORT_OFFSCREEN_TO_BG,
26
+ // #### background -> offscreen
27
+ onMessage: (payload, port0) => {
28
+ let origin = utils_1.default.getOriginFromPort(port0) || '';
29
+ // in ext offscreen, port.sender?.origin is always empty,
30
+ // so we trust remote (background) origin
31
+ origin = origin || payload.origin || '';
32
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
33
+ const jsBridge = this;
34
+ jsBridge.receive(payload, {
35
+ origin,
36
+ // trust message from background
37
+ internal: port0.name === EXT_PORT_OFFSCREEN_TO_BG,
38
+ });
39
+ },
40
+ onConnect: (port) => {
41
+ this.portToBg = port;
42
+ setTimeout(() => {
43
+ config.onPortConnect(port);
44
+ }, 0);
45
+ return () => {
46
+ this.portToBg = null;
47
+ };
48
+ },
49
+ });
50
+ }
51
+ }
52
+ exports.JsBridgeExtOffscreen = JsBridgeExtOffscreen;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.JsBridgeExtUi = void 0;
7
7
  const extensionMessagePort_1 = __importDefault(require("./extensionMessagePort"));
8
8
  const cross_inpage_provider_core_1 = require("@onekeyfe/cross-inpage-provider-core");
9
+ const utils_1 = __importDefault(require("./utils"));
9
10
  const { EXT_PORT_UI_TO_BG } = cross_inpage_provider_core_1.consts;
10
11
  class JsBridgeExtUi extends cross_inpage_provider_core_1.JsBridgeBase {
11
12
  constructor(config) {
@@ -20,23 +21,12 @@ class JsBridgeExtUi extends cross_inpage_provider_core_1.JsBridgeBase {
20
21
  this.portToBg.postMessage(payload);
21
22
  }
22
23
  }
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
- }
34
24
  setupMessagePortConnect(config) {
35
25
  extensionMessagePort_1.default.connect({
36
26
  name: EXT_PORT_UI_TO_BG,
37
27
  // #### background -> ui
38
28
  onMessage: (payload, port0) => {
39
- let origin = this._getOriginFromPort(port0) || '';
29
+ let origin = utils_1.default.getOriginFromPort(port0) || '';
40
30
  // in ext ui, port.sender?.origin is always empty,
41
31
  // so we trust remote (background) origin
42
32
  origin = origin || payload.origin || '';
@@ -7,8 +7,10 @@ exports.bridgeSetup = void 0;
7
7
  const background_1 = __importDefault(require("./background"));
8
8
  const ui_1 = __importDefault(require("./ui"));
9
9
  const contentScript_1 = __importDefault(require("./contentScript"));
10
+ const offscreen_1 = __importDefault(require("./offscreen"));
10
11
  exports.bridgeSetup = {
11
12
  contentScript: contentScript_1.default,
12
13
  ui: ui_1.default,
13
14
  background: background_1.default,
15
+ offscreen: offscreen_1.default,
14
16
  };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const JsBridgeExtOffscreen_1 = require("../JsBridgeExtOffscreen");
4
+ function createOffscreenJsBridge(config) {
5
+ const bridge = new JsBridgeExtOffscreen_1.JsBridgeExtOffscreen(config);
6
+ return bridge;
7
+ }
8
+ exports.default = {
9
+ createOffscreenJsBridge,
10
+ };
package/dist/cjs/index.js CHANGED
@@ -16,6 +16,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.extensionMessagePort = void 0;
17
17
  __exportStar(require("./bridgeSetup"), exports);
18
18
  __exportStar(require("./JsBridgeExtBackground"), exports);
19
+ __exportStar(require("./JsBridgeExtOffscreen"), exports);
19
20
  __exportStar(require("./JsBridgeExtUi"), exports);
20
21
  __exportStar(require("./JsBridgeSimple"), exports);
21
22
  const extensionMessagePort_1 = __importDefault(require("./extensionMessagePort"));
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getOriginFromPort(port) {
4
+ var _a, _b, _c;
5
+ // chrome
6
+ let origin = ((_a = port === null || port === void 0 ? void 0 : port.sender) === null || _a === void 0 ? void 0 : _a.origin) || '';
7
+ // firefox
8
+ if (!origin && ((_b = port === null || port === void 0 ? void 0 : port.sender) === null || _b === void 0 ? void 0 : _b.url)) {
9
+ try {
10
+ const uri = new URL((_c = port === null || port === void 0 ? void 0 : port.sender) === null || _c === void 0 ? void 0 : _c.url);
11
+ origin = (uri === null || uri === void 0 ? void 0 : uri.origin) || '';
12
+ }
13
+ catch (error) {
14
+ console.error(error);
15
+ }
16
+ }
17
+ return origin || '';
18
+ }
19
+ exports.default = {
20
+ getOriginFromPort,
21
+ };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './bridgeSetup';
2
2
  export * from './JsBridgeExtBackground';
3
+ export * from './JsBridgeExtOffscreen';
3
4
  export * from './JsBridgeExtUi';
4
5
  export * from './JsBridgeSimple';
5
6
  import extensionMessagePort from './extensionMessagePort';
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './bridgeSetup';
2
2
  export * from './JsBridgeExtBackground';
3
+ export * from './JsBridgeExtOffscreen';
3
4
  export * from './JsBridgeExtUi';
4
5
  export * from './JsBridgeSimple';
5
6
  import extensionMessagePort from './extensionMessagePort';
@@ -0,0 +1,6 @@
1
+ /// <reference types="chrome" />
2
+ declare function getOriginFromPort(port: chrome.runtime.Port): string;
3
+ declare const _default: {
4
+ getOriginFromPort: typeof getOriginFromPort;
5
+ };
6
+ export default _default;
package/dist/utils.js ADDED
@@ -0,0 +1,19 @@
1
+ function getOriginFromPort(port) {
2
+ var _a, _b, _c;
3
+ // chrome
4
+ let origin = ((_a = port === null || port === void 0 ? void 0 : port.sender) === null || _a === void 0 ? void 0 : _a.origin) || '';
5
+ // firefox
6
+ if (!origin && ((_b = port === null || port === void 0 ? void 0 : port.sender) === null || _b === void 0 ? void 0 : _b.url)) {
7
+ try {
8
+ const uri = new URL((_c = port === null || port === void 0 ? void 0 : port.sender) === null || _c === void 0 ? void 0 : _c.url);
9
+ origin = (uri === null || uri === void 0 ? void 0 : uri.origin) || '';
10
+ }
11
+ catch (error) {
12
+ console.error(error);
13
+ }
14
+ }
15
+ return origin || '';
16
+ }
17
+ export default {
18
+ getOriginFromPort,
19
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/extension-bridge-hosted",
3
- "version": "1.1.24",
3
+ "version": "1.1.26",
4
4
  "keywords": [
5
5
  "cross-inpage-provider"
6
6
  ],
@@ -28,8 +28,8 @@
28
28
  "start": "tsc --watch"
29
29
  },
30
30
  "dependencies": {
31
- "@onekeyfe/cross-inpage-provider-core": "1.1.24",
32
- "@onekeyfe/cross-inpage-provider-types": "1.1.24"
31
+ "@onekeyfe/cross-inpage-provider-core": "1.1.26",
32
+ "@onekeyfe/cross-inpage-provider-types": "1.1.26"
33
33
  },
34
- "gitHead": "77715c206f3369f7a0c294d2706d471d7339212e"
34
+ "gitHead": "c5fecd176e00c399c4829f73b9da5e74e1f4e1b9"
35
35
  }