@novasamatech/host-container 0.5.4-1 → 0.5.4-3
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.
|
@@ -3,6 +3,7 @@ import type { WebviewTag } from 'electron';
|
|
|
3
3
|
type Params = {
|
|
4
4
|
webview: WebviewTag;
|
|
5
5
|
logger?: Logger;
|
|
6
|
+
openDevTools?: boolean;
|
|
6
7
|
};
|
|
7
|
-
export declare function createWebviewProvider({ webview, logger }: Params): Provider;
|
|
8
|
+
export declare function createWebviewProvider({ webview, logger, openDevTools }: Params): Provider;
|
|
8
9
|
export {};
|
|
@@ -15,19 +15,17 @@ function isValidMessage(event, sourceEnv, currentEnv) {
|
|
|
15
15
|
event.data &&
|
|
16
16
|
event.data.constructor.name === 'Uint8Array');
|
|
17
17
|
}
|
|
18
|
-
export function createWebviewProvider({ webview, logger }) {
|
|
18
|
+
export function createWebviewProvider({ webview, logger, openDevTools }) {
|
|
19
19
|
let disposed = false;
|
|
20
|
-
let subscribed = false;
|
|
21
20
|
let port = null;
|
|
22
21
|
const subscribers = new Set();
|
|
23
22
|
const webviewPromise = new Promise((resolve, reject) => {
|
|
24
23
|
webview.addEventListener('did-fail-load', e => {
|
|
25
24
|
reject(new Error(e.errorDescription));
|
|
26
25
|
});
|
|
27
|
-
webview.addEventListener('
|
|
26
|
+
webview.addEventListener('dom-ready', async () => {
|
|
28
27
|
const { port1, port2 } = new MessageChannel();
|
|
29
|
-
const portInitMessage = `
|
|
30
|
-
port = port1;
|
|
28
|
+
const portInitMessage = `HOST_API_PORT_INIT_${nanoid(12)}`;
|
|
31
29
|
await webview
|
|
32
30
|
.executeJavaScript(`
|
|
33
31
|
window.addEventListener('message', e => {
|
|
@@ -42,6 +40,10 @@ export function createWebviewProvider({ webview, logger }) {
|
|
|
42
40
|
.catch(reject);
|
|
43
41
|
// @ts-expect-error contentWindow is undefined somehow
|
|
44
42
|
webview.contentWindow.postMessage(portInitMessage, '*', [port2]);
|
|
43
|
+
if (openDevTools) {
|
|
44
|
+
webview.openDevTools();
|
|
45
|
+
}
|
|
46
|
+
port = port1;
|
|
45
47
|
resolve(port);
|
|
46
48
|
});
|
|
47
49
|
});
|
|
@@ -64,6 +66,11 @@ export function createWebviewProvider({ webview, logger }) {
|
|
|
64
66
|
}
|
|
65
67
|
});
|
|
66
68
|
};
|
|
69
|
+
waitForWebview(port => {
|
|
70
|
+
if (disposed)
|
|
71
|
+
return;
|
|
72
|
+
port.addEventListener('message', messageHandler);
|
|
73
|
+
});
|
|
67
74
|
return {
|
|
68
75
|
logger: logger ?? createDefaultLogger(),
|
|
69
76
|
isCorrectEnvironment() {
|
|
@@ -79,10 +86,6 @@ export function createWebviewProvider({ webview, logger }) {
|
|
|
79
86
|
});
|
|
80
87
|
},
|
|
81
88
|
subscribe(callback) {
|
|
82
|
-
if (!subscribed && port) {
|
|
83
|
-
subscribed = true;
|
|
84
|
-
port.addEventListener('message', messageHandler);
|
|
85
|
-
}
|
|
86
89
|
subscribers.add(callback);
|
|
87
90
|
return () => {
|
|
88
91
|
subscribers.delete(callback);
|
|
@@ -94,6 +97,7 @@ export function createWebviewProvider({ webview, logger }) {
|
|
|
94
97
|
if (port) {
|
|
95
98
|
port.removeEventListener('message', messageHandler);
|
|
96
99
|
}
|
|
100
|
+
port = null;
|
|
97
101
|
},
|
|
98
102
|
};
|
|
99
103
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@novasamatech/host-container",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.5.4-
|
|
4
|
+
"version": "0.5.4-3",
|
|
5
5
|
"description": "Host container for hosting and managing products within the Polkadot ecosystem.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@polkadot-api/utils": "^0.2.0",
|
|
30
30
|
"@polkadot-api/json-rpc-provider": "^0.0.4",
|
|
31
|
-
"@novasamatech/host-api": "0.5.4-
|
|
31
|
+
"@novasamatech/host-api": "0.5.4-3",
|
|
32
32
|
"nanoid": "5.1.6"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|