fullstacked 0.11.3-1148 → 0.11.3-1150
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/archive/archive.ts +140 -140
- package/lib/archive/index.ts +4 -4
- package/lib/base64.ts +144 -144
- package/lib/bridge/index.ts +53 -53
- package/lib/bridge/platform/android.ts +18 -18
- package/lib/bridge/platform/apple.ts +46 -46
- package/lib/bridge/platform/electron.ts +14 -14
- package/lib/bridge/platform/linux-gtk.ts +48 -48
- package/lib/bridge/platform/linux-qt.ts +68 -68
- package/lib/bridge/platform/node.ts +32 -32
- package/lib/bridge/platform/wasm.ts +17 -17
- package/lib/bridge/platform/windows.ts +49 -49
- package/lib/bridge/serialization.ts +153 -153
- package/lib/components/snackbar.ts +60 -60
- package/lib/connect/index.ts +125 -125
- package/lib/core_message/core_message.ts +75 -75
- package/lib/core_message/index.ts +3 -3
- package/lib/fetch/index.ts +318 -318
- package/lib/fs/fs.ts +157 -157
- package/lib/fs/index.ts +3 -3
- package/lib/fullstacked.d.ts +208 -208
- package/lib/platform/index.ts +14 -14
- package/package.json +1 -1
package/lib/bridge/index.ts
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import "../core_message";
|
|
2
|
-
import platform, { Platform } from "../platform";
|
|
3
|
-
import { BridgeAndroid } from "./platform/android";
|
|
4
|
-
import { BridgeApple, initRespondApple } from "./platform/apple";
|
|
5
|
-
import { BridgeLinuxGTK, initRespondLinuxGTK } from "./platform/linux-gtk";
|
|
6
|
-
import { BridgeLinuxQT, initRespondLinuxQT } from "./platform/linux-qt";
|
|
7
|
-
import { BridgeElectron } from "./platform/electron";
|
|
8
|
-
import { BridgeNode, initCallbackNode } from "./platform/node";
|
|
9
|
-
import { BridgeWasm } from "./platform/wasm";
|
|
10
|
-
import { BridgeWindows, initRespondWindows } from "./platform/windows";
|
|
11
|
-
|
|
12
|
-
export type Bridge = (
|
|
13
|
-
payload: Uint8Array,
|
|
14
|
-
transformer?: (args: any) => any
|
|
15
|
-
) => Promise<any>;
|
|
16
|
-
|
|
17
|
-
export let bridge: Bridge;
|
|
18
|
-
switch (platform) {
|
|
19
|
-
case Platform.NODE:
|
|
20
|
-
bridge = BridgeNode;
|
|
21
|
-
initCallbackNode();
|
|
22
|
-
break;
|
|
23
|
-
case Platform.APPLE:
|
|
24
|
-
bridge = BridgeApple;
|
|
25
|
-
initRespondApple();
|
|
26
|
-
break;
|
|
27
|
-
case Platform.ANDROID:
|
|
28
|
-
bridge = BridgeAndroid;
|
|
29
|
-
break;
|
|
30
|
-
case Platform.WASM:
|
|
31
|
-
bridge = BridgeWasm;
|
|
32
|
-
break;
|
|
33
|
-
case Platform.WINDOWS:
|
|
34
|
-
bridge = BridgeWindows;
|
|
35
|
-
initRespondWindows();
|
|
36
|
-
break;
|
|
37
|
-
case Platform.LINUX_GTK:
|
|
38
|
-
bridge = BridgeLinuxGTK;
|
|
39
|
-
initRespondLinuxGTK();
|
|
40
|
-
break;
|
|
41
|
-
case Platform.LINUX_QT:
|
|
42
|
-
bridge = BridgeLinuxQT;
|
|
43
|
-
initRespondLinuxQT();
|
|
44
|
-
break;
|
|
45
|
-
case Platform.ELECTRON:
|
|
46
|
-
bridge = BridgeElectron;
|
|
47
|
-
break;
|
|
48
|
-
case Platform.DOCKER:
|
|
49
|
-
console.log("Bridge not yet implemented");
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
console.log("FullStacked");
|
|
53
|
-
bridge(new Uint8Array([0]));
|
|
1
|
+
import "../core_message";
|
|
2
|
+
import platform, { Platform } from "../platform";
|
|
3
|
+
import { BridgeAndroid } from "./platform/android";
|
|
4
|
+
import { BridgeApple, initRespondApple } from "./platform/apple";
|
|
5
|
+
import { BridgeLinuxGTK, initRespondLinuxGTK } from "./platform/linux-gtk";
|
|
6
|
+
import { BridgeLinuxQT, initRespondLinuxQT } from "./platform/linux-qt";
|
|
7
|
+
import { BridgeElectron } from "./platform/electron";
|
|
8
|
+
import { BridgeNode, initCallbackNode } from "./platform/node";
|
|
9
|
+
import { BridgeWasm } from "./platform/wasm";
|
|
10
|
+
import { BridgeWindows, initRespondWindows } from "./platform/windows";
|
|
11
|
+
|
|
12
|
+
export type Bridge = (
|
|
13
|
+
payload: Uint8Array,
|
|
14
|
+
transformer?: (args: any) => any
|
|
15
|
+
) => Promise<any>;
|
|
16
|
+
|
|
17
|
+
export let bridge: Bridge;
|
|
18
|
+
switch (platform) {
|
|
19
|
+
case Platform.NODE:
|
|
20
|
+
bridge = BridgeNode;
|
|
21
|
+
initCallbackNode();
|
|
22
|
+
break;
|
|
23
|
+
case Platform.APPLE:
|
|
24
|
+
bridge = BridgeApple;
|
|
25
|
+
initRespondApple();
|
|
26
|
+
break;
|
|
27
|
+
case Platform.ANDROID:
|
|
28
|
+
bridge = BridgeAndroid;
|
|
29
|
+
break;
|
|
30
|
+
case Platform.WASM:
|
|
31
|
+
bridge = BridgeWasm;
|
|
32
|
+
break;
|
|
33
|
+
case Platform.WINDOWS:
|
|
34
|
+
bridge = BridgeWindows;
|
|
35
|
+
initRespondWindows();
|
|
36
|
+
break;
|
|
37
|
+
case Platform.LINUX_GTK:
|
|
38
|
+
bridge = BridgeLinuxGTK;
|
|
39
|
+
initRespondLinuxGTK();
|
|
40
|
+
break;
|
|
41
|
+
case Platform.LINUX_QT:
|
|
42
|
+
bridge = BridgeLinuxQT;
|
|
43
|
+
initRespondLinuxQT();
|
|
44
|
+
break;
|
|
45
|
+
case Platform.ELECTRON:
|
|
46
|
+
bridge = BridgeElectron;
|
|
47
|
+
break;
|
|
48
|
+
case Platform.DOCKER:
|
|
49
|
+
console.log("Bridge not yet implemented");
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
console.log("FullStacked");
|
|
53
|
+
bridge(new Uint8Array([0]));
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Bridge } from "..";
|
|
2
|
-
import { fromByteArray, toByteArray } from "../../base64";
|
|
3
|
-
import { deserializeArgs } from "../serialization";
|
|
4
|
-
|
|
5
|
-
export const BridgeAndroid: Bridge = async (
|
|
6
|
-
payload: Uint8Array,
|
|
7
|
-
transformer?: (responseArgs: any[]) => any
|
|
8
|
-
) => {
|
|
9
|
-
const base64 = fromByteArray(payload);
|
|
10
|
-
const response = toByteArray(globalThis.android.bridge(base64));
|
|
11
|
-
const args = deserializeArgs(response);
|
|
12
|
-
|
|
13
|
-
if (transformer) {
|
|
14
|
-
return transformer(args);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return args;
|
|
18
|
-
};
|
|
1
|
+
import { Bridge } from "..";
|
|
2
|
+
import { fromByteArray, toByteArray } from "../../base64";
|
|
3
|
+
import { deserializeArgs } from "../serialization";
|
|
4
|
+
|
|
5
|
+
export const BridgeAndroid: Bridge = async (
|
|
6
|
+
payload: Uint8Array,
|
|
7
|
+
transformer?: (responseArgs: any[]) => any
|
|
8
|
+
) => {
|
|
9
|
+
const base64 = fromByteArray(payload);
|
|
10
|
+
const response = toByteArray(globalThis.android.bridge(base64));
|
|
11
|
+
const args = deserializeArgs(response);
|
|
12
|
+
|
|
13
|
+
if (transformer) {
|
|
14
|
+
return transformer(args);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return args;
|
|
18
|
+
};
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
import { Bridge } from "..";
|
|
2
|
-
import { fromByteArray, toByteArray } from "../../base64";
|
|
3
|
-
import {
|
|
4
|
-
bytesToNumber,
|
|
5
|
-
deserializeArgs,
|
|
6
|
-
getLowestKeyIdAvailable,
|
|
7
|
-
numberTo4Bytes
|
|
8
|
-
} from "../serialization";
|
|
9
|
-
|
|
10
|
-
const requests = new Map<number, (data: Uint8Array) => void>();
|
|
11
|
-
|
|
12
|
-
export const BridgeApple: Bridge = (
|
|
13
|
-
payload: Uint8Array,
|
|
14
|
-
transformer?: (responseArgs: any[]) => any
|
|
15
|
-
) => {
|
|
16
|
-
const requestId = getLowestKeyIdAvailable(requests);
|
|
17
|
-
|
|
18
|
-
const base64 = fromByteArray(
|
|
19
|
-
new Uint8Array([...numberTo4Bytes(requestId), ...payload])
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
return new Promise((resolve, reject) => {
|
|
23
|
-
requests.set(requestId, (data) => {
|
|
24
|
-
try {
|
|
25
|
-
const args = deserializeArgs(data);
|
|
26
|
-
if (transformer) {
|
|
27
|
-
return resolve(transformer(args));
|
|
28
|
-
}
|
|
29
|
-
resolve(args);
|
|
30
|
-
} catch (e) {
|
|
31
|
-
reject(e);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
globalThis.webkit.messageHandlers.bridge.postMessage(base64);
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export function initRespondApple() {
|
|
39
|
-
globalThis.respond = (base64: string) => {
|
|
40
|
-
const data = toByteArray(base64);
|
|
41
|
-
const id = bytesToNumber(data.slice(0, 4));
|
|
42
|
-
const resolver = requests.get(id);
|
|
43
|
-
resolver(data.slice(4));
|
|
44
|
-
requests.delete(id);
|
|
45
|
-
};
|
|
46
|
-
}
|
|
1
|
+
import { Bridge } from "..";
|
|
2
|
+
import { fromByteArray, toByteArray } from "../../base64";
|
|
3
|
+
import {
|
|
4
|
+
bytesToNumber,
|
|
5
|
+
deserializeArgs,
|
|
6
|
+
getLowestKeyIdAvailable,
|
|
7
|
+
numberTo4Bytes
|
|
8
|
+
} from "../serialization";
|
|
9
|
+
|
|
10
|
+
const requests = new Map<number, (data: Uint8Array) => void>();
|
|
11
|
+
|
|
12
|
+
export const BridgeApple: Bridge = (
|
|
13
|
+
payload: Uint8Array,
|
|
14
|
+
transformer?: (responseArgs: any[]) => any
|
|
15
|
+
) => {
|
|
16
|
+
const requestId = getLowestKeyIdAvailable(requests);
|
|
17
|
+
|
|
18
|
+
const base64 = fromByteArray(
|
|
19
|
+
new Uint8Array([...numberTo4Bytes(requestId), ...payload])
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
return new Promise((resolve, reject) => {
|
|
23
|
+
requests.set(requestId, (data) => {
|
|
24
|
+
try {
|
|
25
|
+
const args = deserializeArgs(data);
|
|
26
|
+
if (transformer) {
|
|
27
|
+
return resolve(transformer(args));
|
|
28
|
+
}
|
|
29
|
+
resolve(args);
|
|
30
|
+
} catch (e) {
|
|
31
|
+
reject(e);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
globalThis.webkit.messageHandlers.bridge.postMessage(base64);
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export function initRespondApple() {
|
|
39
|
+
globalThis.respond = (base64: string) => {
|
|
40
|
+
const data = toByteArray(base64);
|
|
41
|
+
const id = bytesToNumber(data.slice(0, 4));
|
|
42
|
+
const resolver = requests.get(id);
|
|
43
|
+
resolver(data.slice(4));
|
|
44
|
+
requests.delete(id);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { Bridge } from "..";
|
|
2
|
-
import { deserializeArgs } from "../serialization";
|
|
3
|
-
|
|
4
|
-
export const BridgeElectron: Bridge = async (
|
|
5
|
-
payload: Uint8Array,
|
|
6
|
-
transformer?: (responseArgs: any[]) => any
|
|
7
|
-
) => {
|
|
8
|
-
const response = await (window as any).electronAPI.bridge(payload);
|
|
9
|
-
const args = deserializeArgs(response);
|
|
10
|
-
if (transformer) {
|
|
11
|
-
return transformer(args);
|
|
12
|
-
}
|
|
13
|
-
return args;
|
|
14
|
-
};
|
|
1
|
+
import { Bridge } from "..";
|
|
2
|
+
import { deserializeArgs } from "../serialization";
|
|
3
|
+
|
|
4
|
+
export const BridgeElectron: Bridge = async (
|
|
5
|
+
payload: Uint8Array,
|
|
6
|
+
transformer?: (responseArgs: any[]) => any
|
|
7
|
+
) => {
|
|
8
|
+
const response = await (window as any).electronAPI.bridge(payload);
|
|
9
|
+
const args = deserializeArgs(response);
|
|
10
|
+
if (transformer) {
|
|
11
|
+
return transformer(args);
|
|
12
|
+
}
|
|
13
|
+
return args;
|
|
14
|
+
};
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { Bridge } from "..";
|
|
2
|
-
import { fromByteArray, toByteArray } from "../../base64";
|
|
3
|
-
import {
|
|
4
|
-
bytesToNumber,
|
|
5
|
-
deserializeArgs,
|
|
6
|
-
getLowestKeyIdAvailable,
|
|
7
|
-
numberTo4Bytes
|
|
8
|
-
} from "../serialization";
|
|
9
|
-
|
|
10
|
-
const requests = new Map<number, (data: Uint8Array) => void>();
|
|
11
|
-
|
|
12
|
-
export const BridgeLinuxGTK: Bridge = (
|
|
13
|
-
payload: Uint8Array,
|
|
14
|
-
transformer?: (responseArgs: any[]) => any
|
|
15
|
-
) => {
|
|
16
|
-
const requestId = getLowestKeyIdAvailable(requests);
|
|
17
|
-
|
|
18
|
-
const base64 = fromByteArray(
|
|
19
|
-
new Uint8Array([...numberTo4Bytes(requestId), ...payload])
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
return new Promise((resolve, reject) => {
|
|
23
|
-
requests.set(requestId, (data) => {
|
|
24
|
-
try {
|
|
25
|
-
const args = deserializeArgs(data);
|
|
26
|
-
if (transformer) {
|
|
27
|
-
return resolve(transformer(args));
|
|
28
|
-
}
|
|
29
|
-
resolve(args);
|
|
30
|
-
} catch (e) {
|
|
31
|
-
reject(e);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
globalThis.webkit.messageHandlers.bridge.postMessage(base64);
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export function initRespondLinuxGTK() {
|
|
39
|
-
globalThis.respond = (base64: string) => {
|
|
40
|
-
console.log(base64);
|
|
41
|
-
const data = toByteArray(base64);
|
|
42
|
-
const id = bytesToNumber(data.slice(0, 4));
|
|
43
|
-
console.log(id);
|
|
44
|
-
const resolver = requests.get(id);
|
|
45
|
-
resolver(data.slice(4));
|
|
46
|
-
requests.delete(id);
|
|
47
|
-
};
|
|
48
|
-
}
|
|
1
|
+
import { Bridge } from "..";
|
|
2
|
+
import { fromByteArray, toByteArray } from "../../base64";
|
|
3
|
+
import {
|
|
4
|
+
bytesToNumber,
|
|
5
|
+
deserializeArgs,
|
|
6
|
+
getLowestKeyIdAvailable,
|
|
7
|
+
numberTo4Bytes
|
|
8
|
+
} from "../serialization";
|
|
9
|
+
|
|
10
|
+
const requests = new Map<number, (data: Uint8Array) => void>();
|
|
11
|
+
|
|
12
|
+
export const BridgeLinuxGTK: Bridge = (
|
|
13
|
+
payload: Uint8Array,
|
|
14
|
+
transformer?: (responseArgs: any[]) => any
|
|
15
|
+
) => {
|
|
16
|
+
const requestId = getLowestKeyIdAvailable(requests);
|
|
17
|
+
|
|
18
|
+
const base64 = fromByteArray(
|
|
19
|
+
new Uint8Array([...numberTo4Bytes(requestId), ...payload])
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
return new Promise((resolve, reject) => {
|
|
23
|
+
requests.set(requestId, (data) => {
|
|
24
|
+
try {
|
|
25
|
+
const args = deserializeArgs(data);
|
|
26
|
+
if (transformer) {
|
|
27
|
+
return resolve(transformer(args));
|
|
28
|
+
}
|
|
29
|
+
resolve(args);
|
|
30
|
+
} catch (e) {
|
|
31
|
+
reject(e);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
globalThis.webkit.messageHandlers.bridge.postMessage(base64);
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export function initRespondLinuxGTK() {
|
|
39
|
+
globalThis.respond = (base64: string) => {
|
|
40
|
+
console.log(base64);
|
|
41
|
+
const data = toByteArray(base64);
|
|
42
|
+
const id = bytesToNumber(data.slice(0, 4));
|
|
43
|
+
console.log(id);
|
|
44
|
+
const resolver = requests.get(id);
|
|
45
|
+
resolver(data.slice(4));
|
|
46
|
+
requests.delete(id);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
import { Bridge } from "..";
|
|
2
|
-
import { fromByteArray, toByteArray } from "../../base64";
|
|
3
|
-
import {
|
|
4
|
-
bytesToNumber,
|
|
5
|
-
deserializeArgs,
|
|
6
|
-
getLowestKeyIdAvailable,
|
|
7
|
-
numberTo4Bytes
|
|
8
|
-
} from "../serialization";
|
|
9
|
-
|
|
10
|
-
const pendingRequests: {
|
|
11
|
-
payload: Uint8Array;
|
|
12
|
-
transformer: (responseArgs: any[]) => any;
|
|
13
|
-
resolve: (args: any) => void;
|
|
14
|
-
}[] = [];
|
|
15
|
-
let channel: any;
|
|
16
|
-
|
|
17
|
-
async function respond(
|
|
18
|
-
payload: Uint8Array,
|
|
19
|
-
transformer?: (responseArgs: any[]) => any
|
|
20
|
-
) {
|
|
21
|
-
const payloadStr = fromByteArray(new Uint8Array([0, 0, 0, 0, ...payload]));
|
|
22
|
-
|
|
23
|
-
const response = await channel.objects.bridge.call(payloadStr);
|
|
24
|
-
const data = toByteArray(response);
|
|
25
|
-
const args = deserializeArgs(data.slice(4));
|
|
26
|
-
|
|
27
|
-
if (transformer) {
|
|
28
|
-
return transformer(args);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return args;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export const BridgeLinuxQT: Bridge = (
|
|
35
|
-
payload: Uint8Array,
|
|
36
|
-
transformer?: (responseArgs: any[]) => any
|
|
37
|
-
) => {
|
|
38
|
-
if (!channel) {
|
|
39
|
-
return new Promise((resolve) => {
|
|
40
|
-
pendingRequests.push({
|
|
41
|
-
payload,
|
|
42
|
-
transformer,
|
|
43
|
-
resolve
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return respond(payload, transformer);
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
export async function initRespondLinuxQT() {
|
|
52
|
-
const script = document.createElement("script");
|
|
53
|
-
script.src = "qrc:///qtwebchannel/qwebchannel.js";
|
|
54
|
-
script.onload = () => {
|
|
55
|
-
new globalThis.QWebChannel(globalThis.qt.webChannelTransport, (c) => {
|
|
56
|
-
channel = c;
|
|
57
|
-
pendingRequests.forEach(({ payload, transformer, resolve }) => {
|
|
58
|
-
respond(payload, transformer).then(resolve);
|
|
59
|
-
});
|
|
60
|
-
channel.objects.bridge.core_message.connect(
|
|
61
|
-
function (type, message) {
|
|
62
|
-
globalThis.oncoremessage(type, message);
|
|
63
|
-
}
|
|
64
|
-
);
|
|
65
|
-
});
|
|
66
|
-
};
|
|
67
|
-
document.body.append(script);
|
|
68
|
-
}
|
|
1
|
+
import { Bridge } from "..";
|
|
2
|
+
import { fromByteArray, toByteArray } from "../../base64";
|
|
3
|
+
import {
|
|
4
|
+
bytesToNumber,
|
|
5
|
+
deserializeArgs,
|
|
6
|
+
getLowestKeyIdAvailable,
|
|
7
|
+
numberTo4Bytes
|
|
8
|
+
} from "../serialization";
|
|
9
|
+
|
|
10
|
+
const pendingRequests: {
|
|
11
|
+
payload: Uint8Array;
|
|
12
|
+
transformer: (responseArgs: any[]) => any;
|
|
13
|
+
resolve: (args: any) => void;
|
|
14
|
+
}[] = [];
|
|
15
|
+
let channel: any;
|
|
16
|
+
|
|
17
|
+
async function respond(
|
|
18
|
+
payload: Uint8Array,
|
|
19
|
+
transformer?: (responseArgs: any[]) => any
|
|
20
|
+
) {
|
|
21
|
+
const payloadStr = fromByteArray(new Uint8Array([0, 0, 0, 0, ...payload]));
|
|
22
|
+
|
|
23
|
+
const response = await channel.objects.bridge.call(payloadStr);
|
|
24
|
+
const data = toByteArray(response);
|
|
25
|
+
const args = deserializeArgs(data.slice(4));
|
|
26
|
+
|
|
27
|
+
if (transformer) {
|
|
28
|
+
return transformer(args);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return args;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const BridgeLinuxQT: Bridge = (
|
|
35
|
+
payload: Uint8Array,
|
|
36
|
+
transformer?: (responseArgs: any[]) => any
|
|
37
|
+
) => {
|
|
38
|
+
if (!channel) {
|
|
39
|
+
return new Promise((resolve) => {
|
|
40
|
+
pendingRequests.push({
|
|
41
|
+
payload,
|
|
42
|
+
transformer,
|
|
43
|
+
resolve
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return respond(payload, transformer);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export async function initRespondLinuxQT() {
|
|
52
|
+
const script = document.createElement("script");
|
|
53
|
+
script.src = "qrc:///qtwebchannel/qwebchannel.js";
|
|
54
|
+
script.onload = () => {
|
|
55
|
+
new globalThis.QWebChannel(globalThis.qt.webChannelTransport, (c) => {
|
|
56
|
+
channel = c;
|
|
57
|
+
pendingRequests.forEach(({ payload, transformer, resolve }) => {
|
|
58
|
+
respond(payload, transformer).then(resolve);
|
|
59
|
+
});
|
|
60
|
+
channel.objects.bridge.core_message.connect(
|
|
61
|
+
function (type, message) {
|
|
62
|
+
globalThis.oncoremessage(type, message);
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
document.body.append(script);
|
|
68
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { Bridge } from "..";
|
|
2
|
-
import { deserializeArgs } from "../serialization";
|
|
3
|
-
|
|
4
|
-
const bridge = globalThis.fetch;
|
|
5
|
-
|
|
6
|
-
export const BridgeNode: Bridge = async (
|
|
7
|
-
payload: Uint8Array,
|
|
8
|
-
transformer?: (responseArgs: any[]) => any
|
|
9
|
-
) => {
|
|
10
|
-
const response = await bridge("/call", {
|
|
11
|
-
method: "POST",
|
|
12
|
-
body: payload
|
|
13
|
-
});
|
|
14
|
-
const data = new Uint8Array(await response.arrayBuffer());
|
|
15
|
-
const args = deserializeArgs(data);
|
|
16
|
-
|
|
17
|
-
if (transformer) {
|
|
18
|
-
return transformer(args);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return args;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export function initCallbackNode() {
|
|
25
|
-
const url = new URL(globalThis.location.href);
|
|
26
|
-
url.protocol = "ws:";
|
|
27
|
-
const ws = new WebSocket(url.toString());
|
|
28
|
-
ws.onmessage = (e) => {
|
|
29
|
-
const [type, message] = JSON.parse(e.data);
|
|
30
|
-
globalThis.oncoremessage(type, message);
|
|
31
|
-
};
|
|
32
|
-
}
|
|
1
|
+
import { Bridge } from "..";
|
|
2
|
+
import { deserializeArgs } from "../serialization";
|
|
3
|
+
|
|
4
|
+
const bridge = globalThis.fetch;
|
|
5
|
+
|
|
6
|
+
export const BridgeNode: Bridge = async (
|
|
7
|
+
payload: Uint8Array,
|
|
8
|
+
transformer?: (responseArgs: any[]) => any
|
|
9
|
+
) => {
|
|
10
|
+
const response = await bridge("/call", {
|
|
11
|
+
method: "POST",
|
|
12
|
+
body: payload
|
|
13
|
+
});
|
|
14
|
+
const data = new Uint8Array(await response.arrayBuffer());
|
|
15
|
+
const args = deserializeArgs(data);
|
|
16
|
+
|
|
17
|
+
if (transformer) {
|
|
18
|
+
return transformer(args);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return args;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export function initCallbackNode() {
|
|
25
|
+
const url = new URL(globalThis.location.href);
|
|
26
|
+
url.protocol = "ws:";
|
|
27
|
+
const ws = new WebSocket(url.toString());
|
|
28
|
+
ws.onmessage = (e) => {
|
|
29
|
+
const [type, message] = JSON.parse(e.data);
|
|
30
|
+
globalThis.oncoremessage(type, message);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { Bridge } from "..";
|
|
2
|
-
import { toByteArray } from "../../base64";
|
|
3
|
-
import { deserializeArgs } from "../serialization";
|
|
4
|
-
|
|
5
|
-
export const BridgeWasm: Bridge = async (
|
|
6
|
-
payload: Uint8Array,
|
|
7
|
-
transformer?: (responseArgs: any[]) => any
|
|
8
|
-
) => {
|
|
9
|
-
const response = await globalThis.lib.call(payload);
|
|
10
|
-
const args = deserializeArgs(toByteArray(response));
|
|
11
|
-
|
|
12
|
-
if (transformer) {
|
|
13
|
-
return transformer(args);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return args;
|
|
17
|
-
};
|
|
1
|
+
import { Bridge } from "..";
|
|
2
|
+
import { toByteArray } from "../../base64";
|
|
3
|
+
import { deserializeArgs } from "../serialization";
|
|
4
|
+
|
|
5
|
+
export const BridgeWasm: Bridge = async (
|
|
6
|
+
payload: Uint8Array,
|
|
7
|
+
transformer?: (responseArgs: any[]) => any
|
|
8
|
+
) => {
|
|
9
|
+
const response = await globalThis.lib.call(payload);
|
|
10
|
+
const args = deserializeArgs(toByteArray(response));
|
|
11
|
+
|
|
12
|
+
if (transformer) {
|
|
13
|
+
return transformer(args);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return args;
|
|
17
|
+
};
|