@volter/browser-wali 0.1.5 → 0.1.6
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/README.md +73 -0
- package/dist/browser-wali-command.d.ts +3 -0
- package/dist/browser-wali-command.d.ts.map +1 -1
- package/dist/browser-wali-command.js +2 -1
- package/dist/browser-wali-command.js.map +1 -1
- package/dist/capabilities.d.ts +73 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +86 -2
- package/dist/capabilities.js.map +1 -1
- package/dist/child-processes.d.ts +24 -0
- package/dist/child-processes.d.ts.map +1 -0
- package/dist/child-processes.js +134 -0
- package/dist/child-processes.js.map +1 -0
- package/dist/codec-protocol.d.ts +66 -0
- package/dist/codec-protocol.d.ts.map +1 -0
- package/dist/codec-protocol.js +59 -0
- package/dist/codec-protocol.js.map +1 -0
- package/dist/codec-remote.d.ts +33 -0
- package/dist/codec-remote.d.ts.map +1 -0
- package/dist/codec-remote.js +190 -0
- package/dist/codec-remote.js.map +1 -0
- package/dist/codec-worker.d.ts +2 -0
- package/dist/codec-worker.d.ts.map +1 -0
- package/dist/codec-worker.js +438 -0
- package/dist/codec-worker.js.map +1 -0
- package/dist/coherent-file-locks.d.ts.map +1 -1
- package/dist/coherent-file-locks.js +17 -5
- package/dist/coherent-file-locks.js.map +1 -1
- package/dist/descriptors.d.ts +49 -0
- package/dist/descriptors.d.ts.map +1 -0
- package/dist/descriptors.js +115 -0
- package/dist/descriptors.js.map +1 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +2 -2
- package/dist/events.js.map +1 -1
- package/dist/filesystem-protocol.d.ts +28 -1
- package/dist/filesystem-protocol.d.ts.map +1 -1
- package/dist/filesystem-protocol.js +18 -0
- package/dist/filesystem-protocol.js.map +1 -1
- package/dist/filesystem-remote.d.ts +26 -2
- package/dist/filesystem-remote.d.ts.map +1 -1
- package/dist/filesystem-remote.js +132 -23
- package/dist/filesystem-remote.js.map +1 -1
- package/dist/filesystem-worker.js +274 -34
- package/dist/filesystem-worker.js.map +1 -1
- package/dist/filesystem.d.ts +30 -1
- package/dist/filesystem.d.ts.map +1 -1
- package/dist/filesystem.js +180 -50
- package/dist/filesystem.js.map +1 -1
- package/dist/fork-worker.d.ts +2 -0
- package/dist/fork-worker.d.ts.map +1 -0
- package/dist/fork-worker.js +52 -0
- package/dist/fork-worker.js.map +1 -0
- package/dist/host.d.ts +36 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +153 -0
- package/dist/host.js.map +1 -0
- package/dist/loopback-host.d.ts +25 -1
- package/dist/loopback-host.d.ts.map +1 -1
- package/dist/loopback-host.js +447 -13
- package/dist/loopback-host.js.map +1 -1
- package/dist/memory.d.ts +65 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +306 -49
- package/dist/memory.js.map +1 -1
- package/dist/module-layout.d.ts +2 -0
- package/dist/module-layout.d.ts.map +1 -1
- package/dist/module-layout.js +4 -2
- package/dist/module-layout.js.map +1 -1
- package/dist/monotonic-clock.d.ts +12 -0
- package/dist/monotonic-clock.d.ts.map +1 -0
- package/dist/monotonic-clock.js +14 -0
- package/dist/monotonic-clock.js.map +1 -0
- package/dist/network-protocol.d.ts +12 -1
- package/dist/network-protocol.d.ts.map +1 -1
- package/dist/network-protocol.js +6 -0
- package/dist/network-protocol.js.map +1 -1
- package/dist/network-worker.js +149 -20
- package/dist/network-worker.js.map +1 -1
- package/dist/network.d.ts +15 -3
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +74 -39
- package/dist/network.js.map +1 -1
- package/dist/process-adapter.d.ts +4 -1
- package/dist/process-adapter.d.ts.map +1 -1
- package/dist/process-adapter.js +3 -3
- package/dist/process-adapter.js.map +1 -1
- package/dist/process-bridge.d.ts +43 -0
- package/dist/process-bridge.d.ts.map +1 -1
- package/dist/process-bridge.js +30 -1
- package/dist/process-bridge.js.map +1 -1
- package/dist/program.d.ts +60 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +92 -31
- package/dist/program.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +491 -134
- package/dist/runtime.js.map +1 -1
- package/dist/select.d.ts +16 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +100 -0
- package/dist/select.js.map +1 -0
- package/dist/shared-pipes.d.ts +17 -6
- package/dist/shared-pipes.d.ts.map +1 -1
- package/dist/shared-pipes.js +94 -70
- package/dist/shared-pipes.js.map +1 -1
- package/dist/signals.d.ts +48 -0
- package/dist/signals.d.ts.map +1 -0
- package/dist/signals.js +232 -0
- package/dist/signals.js.map +1 -0
- package/dist/snapshot-filesystem.d.ts +128 -2
- package/dist/snapshot-filesystem.d.ts.map +1 -1
- package/dist/snapshot-filesystem.js +481 -53
- package/dist/snapshot-filesystem.js.map +1 -1
- package/dist/spawn-policy.d.ts +5 -0
- package/dist/spawn-policy.d.ts.map +1 -0
- package/dist/spawn-policy.js +29 -0
- package/dist/spawn-policy.js.map +1 -0
- package/dist/stdin.d.ts +2 -0
- package/dist/stdin.d.ts.map +1 -1
- package/dist/stdin.js +4 -0
- package/dist/stdin.js.map +1 -1
- package/dist/symlink.d.ts +8 -0
- package/dist/symlink.d.ts.map +1 -1
- package/dist/symlink.js +13 -0
- package/dist/symlink.js.map +1 -1
- package/dist/system.d.ts +152 -1
- package/dist/system.d.ts.map +1 -1
- package/dist/system.js +226 -7
- package/dist/system.js.map +1 -1
- package/dist/thread-coordinator-worker.d.ts +1 -0
- package/dist/thread-coordinator-worker.d.ts.map +1 -1
- package/dist/thread-coordinator-worker.js +1 -0
- package/dist/thread-coordinator-worker.js.map +1 -1
- package/dist/thread-worker.js +241 -122
- package/dist/thread-worker.js.map +1 -1
- package/dist/threads.d.ts +12 -2
- package/dist/threads.d.ts.map +1 -1
- package/dist/threads.js +30 -10
- package/dist/threads.js.map +1 -1
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/websocket-peer.d.ts.map +1 -1
- package/dist/websocket-peer.js +4 -14
- package/dist/websocket-peer.js.map +1 -1
- package/dist/worker-program-protocol.d.ts +70 -3
- package/dist/worker-program-protocol.d.ts.map +1 -1
- package/dist/worker-program-worker.js +115 -23
- package/dist/worker-program-worker.js.map +1 -1
- package/dist/worker-program.d.ts +25 -1
- package/dist/worker-program.d.ts.map +1 -1
- package/dist/worker-program.js +470 -61
- package/dist/worker-program.js.map +1 -1
- package/dist/worker-standby.d.ts +3 -0
- package/dist/worker-standby.d.ts.map +1 -0
- package/dist/worker-standby.js +17 -0
- package/dist/worker-standby.js.map +1 -0
- package/package.json +20 -6
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shared-memory protocol between a WALI guest thread and the process's
|
|
3
|
+
* codec worker. The C side of the ABI is
|
|
4
|
+
* `toolchains/wali/runtime/wali-browser-codec.h`; the field meanings are
|
|
5
|
+
* `programs/ffmpeg/SPEC.md` §3.3.
|
|
6
|
+
*
|
|
7
|
+
* A request carries no payload buffer: the codec worker holds the process's
|
|
8
|
+
* `WebAssembly.Memory` and reads and writes the guest's own pointers, which
|
|
9
|
+
* stay valid because the calling thread is parked inside the import for the
|
|
10
|
+
* whole call. Everything a request needs therefore fits in the control words.
|
|
11
|
+
*/
|
|
12
|
+
export const CODEC_ABI_VERSION = 1;
|
|
13
|
+
export const CODEC_JSON_MAX = 64 * 1024;
|
|
14
|
+
export const CODEC_MAX_HANDLES = 64;
|
|
15
|
+
/** Inputs a handle may hold undelivered before `push` answers -EAGAIN. */
|
|
16
|
+
export const CODEC_MAX_INFLIGHT = 8;
|
|
17
|
+
/** Outputs a handle may hold before the worker stops accepting inputs. */
|
|
18
|
+
export const CODEC_MAX_OUTPUTS = 32;
|
|
19
|
+
/** How long a waiting `pull` blocks before -ETIMEDOUT. */
|
|
20
|
+
export const CODEC_WAIT_MS = 10_000;
|
|
21
|
+
export var CodecOperation;
|
|
22
|
+
(function (CodecOperation) {
|
|
23
|
+
CodecOperation[CodecOperation["Query"] = 1] = "Query";
|
|
24
|
+
CodecOperation[CodecOperation["Open"] = 2] = "Open";
|
|
25
|
+
CodecOperation[CodecOperation["Push"] = 3] = "Push";
|
|
26
|
+
CodecOperation[CodecOperation["Pull"] = 4] = "Pull";
|
|
27
|
+
CodecOperation[CodecOperation["Flush"] = 5] = "Flush";
|
|
28
|
+
CodecOperation[CodecOperation["Close"] = 6] = "Close";
|
|
29
|
+
})(CodecOperation || (CodecOperation = {}));
|
|
30
|
+
export var CodecKind;
|
|
31
|
+
(function (CodecKind) {
|
|
32
|
+
CodecKind[CodecKind["VideoDecoder"] = 0] = "VideoDecoder";
|
|
33
|
+
CodecKind[CodecKind["VideoEncoder"] = 1] = "VideoEncoder";
|
|
34
|
+
CodecKind[CodecKind["AudioDecoder"] = 2] = "AudioDecoder";
|
|
35
|
+
CodecKind[CodecKind["AudioEncoder"] = 3] = "AudioEncoder";
|
|
36
|
+
})(CodecKind || (CodecKind = {}));
|
|
37
|
+
/** `pull` flag bit 0: block until an output, end of stream, or the wait expiry. */
|
|
38
|
+
export const CODEC_PULL_WAIT = 1;
|
|
39
|
+
/**
|
|
40
|
+
* Control words of one channel. Word 0 is the generation word every waiter
|
|
41
|
+
* sleeps on: 0 idle, `requestId` in flight, `-requestId` retired by a
|
|
42
|
+
* timed-out caller, `requestId + 1` complete.
|
|
43
|
+
*/
|
|
44
|
+
export var CodecControl;
|
|
45
|
+
(function (CodecControl) {
|
|
46
|
+
CodecControl[CodecControl["State"] = 0] = "State";
|
|
47
|
+
CodecControl[CodecControl["Operation"] = 1] = "Operation";
|
|
48
|
+
CodecControl[CodecControl["Result"] = 2] = "Result";
|
|
49
|
+
CodecControl[CodecControl["Argument0"] = 3] = "Argument0";
|
|
50
|
+
CodecControl[CodecControl["Argument1"] = 4] = "Argument1";
|
|
51
|
+
CodecControl[CodecControl["Argument2"] = 5] = "Argument2";
|
|
52
|
+
CodecControl[CodecControl["Argument3"] = 6] = "Argument3";
|
|
53
|
+
CodecControl[CodecControl["Argument4"] = 7] = "Argument4";
|
|
54
|
+
CodecControl[CodecControl["Argument5"] = 8] = "Argument5";
|
|
55
|
+
})(CodecControl || (CodecControl = {}));
|
|
56
|
+
/** Six arguments is the widest request (`pull`). */
|
|
57
|
+
export const CODEC_ARGUMENTS = 6;
|
|
58
|
+
export const CODEC_CONTROL_WORDS = 9;
|
|
59
|
+
//# sourceMappingURL=codec-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec-protocol.js","sourceRoot":"","sources":["../src/codec-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC,MAAM,CAAN,IAAkB,cAOjB;AAPD,WAAkB,cAAc;IAC9B,qDAAS,CAAA;IACT,mDAAQ,CAAA;IACR,mDAAQ,CAAA;IACR,mDAAQ,CAAA;IACR,qDAAS,CAAA;IACT,qDAAS,CAAA;AACX,CAAC,EAPiB,cAAc,KAAd,cAAc,QAO/B;AAED,MAAM,CAAN,IAAkB,SAKjB;AALD,WAAkB,SAAS;IACzB,yDAAgB,CAAA;IAChB,yDAAgB,CAAA;IAChB,yDAAgB,CAAA;IAChB,yDAAgB,CAAA;AAClB,CAAC,EALiB,SAAS,KAAT,SAAS,QAK1B;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC;;;;GAIG;AACH,MAAM,CAAN,IAAkB,YAUjB;AAVD,WAAkB,YAAY;IAC5B,iDAAS,CAAA;IACT,yDAAa,CAAA;IACb,mDAAU,CAAA;IACV,yDAAa,CAAA;IACb,yDAAa,CAAA;IACb,yDAAa,CAAA;IACb,yDAAa,CAAA;IACb,yDAAa,CAAA;IACb,yDAAa,CAAA;AACf,CAAC,EAViB,YAAY,KAAZ,YAAY,QAU7B;AAED,oDAAoD;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CodecOperation, type WaliCodecChannel } from "./codec-protocol.js";
|
|
2
|
+
import type { WaliImportHandler } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* The blocking client an import handler runs on the guest's own thread. It
|
|
5
|
+
* validates every argument before the request travels, parks the thread on the
|
|
6
|
+
* channel's generation word, and never retains a guest-owned view.
|
|
7
|
+
*/
|
|
8
|
+
export declare class WaliCodecClient {
|
|
9
|
+
private readonly channel;
|
|
10
|
+
private readonly control;
|
|
11
|
+
private nextRequestId;
|
|
12
|
+
constructor(channel: WaliCodecChannel);
|
|
13
|
+
call(operation: CodecOperation, args: readonly number[], timeoutMs: number): number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The six negotiated imports. `supported()` is the manifest's
|
|
17
|
+
* `media.webcodecs` capability: an unnegotiated bridge answers -95 before an
|
|
18
|
+
* argument is read, and no request ever travels.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createWaliCodecImports(memory: () => WebAssembly.Memory, supported: () => boolean, client: () => WaliCodecClient | undefined): Record<string, WaliImportHandler>;
|
|
21
|
+
/**
|
|
22
|
+
* One codec worker per process. It is created for a process that negotiated
|
|
23
|
+
* the bridge and terminated when that process exits; it constructs no
|
|
24
|
+
* WebCodecs object until the first `open` reaches it.
|
|
25
|
+
*/
|
|
26
|
+
export declare class WaliCodecCoordinator {
|
|
27
|
+
private readonly worker;
|
|
28
|
+
private constructor();
|
|
29
|
+
static create(memory: WebAssembly.Memory): Promise<WaliCodecCoordinator>;
|
|
30
|
+
createChannel(): WaliCodecChannel;
|
|
31
|
+
terminate(): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=codec-remote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec-remote.d.ts","sourceRoot":"","sources":["../src/codec-remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,cAAc,EAEd,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAepD;;;;GAIG;AACH,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,aAAa,CAAK;gBAEG,OAAO,EAAE,gBAAgB;IAItD,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CA2BpF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,WAAW,CAAC,MAAM,EAChC,SAAS,EAAE,MAAM,OAAO,EACxB,MAAM,EAAE,MAAM,eAAe,GAAG,SAAS,GACxC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAuEnC;AAED;;;;GAIG;AACH,qBAAa,oBAAoB;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;IAA3C,OAAO;WAEM,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgB9E,aAAa,IAAI,gBAAgB;IAUjC,SAAS,IAAI,IAAI;CAClB"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { CODEC_ARGUMENTS, CODEC_CONTROL_WORDS, CODEC_JSON_MAX, CODEC_PULL_WAIT, CODEC_WAIT_MS, CodecControl, CodecOperation, } from "./codec-protocol.js";
|
|
2
|
+
import { pageWorker } from "@volter/browser-runtime/page-workers.js";
|
|
3
|
+
const EIO = -5;
|
|
4
|
+
const EBADF = -9;
|
|
5
|
+
const EAGAIN = -11;
|
|
6
|
+
const EFAULT = -14;
|
|
7
|
+
const EINVAL = -22;
|
|
8
|
+
const EOPNOTSUPP = -95;
|
|
9
|
+
const ETIMEDOUT = -110;
|
|
10
|
+
/** A caller waits a little past the worker's own wait so -110 comes from the worker. */
|
|
11
|
+
const REQUEST_TIMEOUT_MS = 30_000;
|
|
12
|
+
const WAITING_PULL_TIMEOUT_MS = CODEC_WAIT_MS + 5_000;
|
|
13
|
+
/**
|
|
14
|
+
* The blocking client an import handler runs on the guest's own thread. It
|
|
15
|
+
* validates every argument before the request travels, parks the thread on the
|
|
16
|
+
* channel's generation word, and never retains a guest-owned view.
|
|
17
|
+
*/
|
|
18
|
+
export class WaliCodecClient {
|
|
19
|
+
channel;
|
|
20
|
+
control;
|
|
21
|
+
nextRequestId = 1;
|
|
22
|
+
constructor(channel) {
|
|
23
|
+
this.channel = channel;
|
|
24
|
+
this.control = new Int32Array(channel.control);
|
|
25
|
+
}
|
|
26
|
+
call(operation, args, timeoutMs) {
|
|
27
|
+
if (Atomics.load(this.control, CodecControl.State) !== 0)
|
|
28
|
+
return EAGAIN;
|
|
29
|
+
const requestId = this.nextRequestId;
|
|
30
|
+
this.nextRequestId = requestId >= 0x3fff_fffd ? 1 : requestId + 2;
|
|
31
|
+
this.control.fill(0);
|
|
32
|
+
for (let index = 0; index < CODEC_ARGUMENTS; index += 1) {
|
|
33
|
+
Atomics.store(this.control, CodecControl.Argument0 + index, args[index] ?? 0);
|
|
34
|
+
}
|
|
35
|
+
Atomics.store(this.control, CodecControl.Operation, operation);
|
|
36
|
+
Atomics.store(this.control, CodecControl.State, requestId);
|
|
37
|
+
this.channel.port.postMessage(requestId);
|
|
38
|
+
const deadline = Date.now() + timeoutMs;
|
|
39
|
+
for (;;) {
|
|
40
|
+
const state = Atomics.load(this.control, CodecControl.State);
|
|
41
|
+
if (state === requestId + 1)
|
|
42
|
+
break;
|
|
43
|
+
if (state !== requestId && state !== -requestId)
|
|
44
|
+
return EIO;
|
|
45
|
+
const remaining = Math.max(0, deadline - Date.now());
|
|
46
|
+
if (remaining === 0 && state === requestId
|
|
47
|
+
&& Atomics.compareExchange(this.control, CodecControl.State, requestId, 0) === requestId) {
|
|
48
|
+
return ETIMEDOUT;
|
|
49
|
+
}
|
|
50
|
+
Atomics.wait(this.control, CodecControl.State, state, state === -requestId ? undefined : remaining);
|
|
51
|
+
}
|
|
52
|
+
const result = Atomics.load(this.control, CodecControl.Result);
|
|
53
|
+
Atomics.store(this.control, CodecControl.State, 0);
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The six negotiated imports. `supported()` is the manifest's
|
|
59
|
+
* `media.webcodecs` capability: an unnegotiated bridge answers -95 before an
|
|
60
|
+
* argument is read, and no request ever travels.
|
|
61
|
+
*/
|
|
62
|
+
export function createWaliCodecImports(memory, supported, client) {
|
|
63
|
+
const bytes = () => memory().buffer.byteLength;
|
|
64
|
+
const readable = (pointer, length) => Number.isSafeInteger(pointer)
|
|
65
|
+
&& pointer > 0 && length >= 0 && pointer <= bytes() - length;
|
|
66
|
+
const writable = (pointer, length) => length === 0
|
|
67
|
+
? Number.isSafeInteger(pointer) && pointer >= 0
|
|
68
|
+
: readable(pointer, length);
|
|
69
|
+
const call = (operation, args, timeoutMs = REQUEST_TIMEOUT_MS) => {
|
|
70
|
+
const active = client();
|
|
71
|
+
if (!active)
|
|
72
|
+
return BigInt(EOPNOTSUPP);
|
|
73
|
+
return BigInt(active.call(operation, args, timeoutMs));
|
|
74
|
+
};
|
|
75
|
+
const configuring = (operation) => (kind, pointer, length) => {
|
|
76
|
+
if (!supported())
|
|
77
|
+
return BigInt(EOPNOTSUPP);
|
|
78
|
+
const kindValue = Number(kind);
|
|
79
|
+
const configPointer = Number(pointer);
|
|
80
|
+
const configLength = Number(length);
|
|
81
|
+
if (!Number.isInteger(kindValue) || kindValue < 0 || kindValue > 3)
|
|
82
|
+
return BigInt(EINVAL);
|
|
83
|
+
if (!Number.isSafeInteger(configLength) || configLength < 1 || configLength > CODEC_JSON_MAX)
|
|
84
|
+
return BigInt(EINVAL);
|
|
85
|
+
if (!readable(configPointer, configLength))
|
|
86
|
+
return BigInt(EFAULT);
|
|
87
|
+
return call(operation, [kindValue, configPointer, configLength]);
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
SYS_browser_codec_query_v1: configuring(CodecOperation.Query),
|
|
91
|
+
SYS_browser_codec_open_v1: configuring(CodecOperation.Open),
|
|
92
|
+
SYS_browser_codec_push_v1: (handle, dataPointer, dataLength, metaPointer, metaLength) => {
|
|
93
|
+
if (!supported())
|
|
94
|
+
return BigInt(EOPNOTSUPP);
|
|
95
|
+
const handleValue = Number(handle);
|
|
96
|
+
const data = Number(dataPointer);
|
|
97
|
+
const dataBytes = Number(dataLength);
|
|
98
|
+
const meta = Number(metaPointer);
|
|
99
|
+
const metaBytes = Number(metaLength);
|
|
100
|
+
if (!Number.isInteger(handleValue) || handleValue <= 0)
|
|
101
|
+
return BigInt(EBADF);
|
|
102
|
+
if (!Number.isSafeInteger(dataBytes) || dataBytes < 0)
|
|
103
|
+
return BigInt(EINVAL);
|
|
104
|
+
if (!Number.isSafeInteger(metaBytes) || metaBytes < 1 || metaBytes > CODEC_JSON_MAX)
|
|
105
|
+
return BigInt(EINVAL);
|
|
106
|
+
if (dataBytes > 0 && !readable(data, dataBytes))
|
|
107
|
+
return BigInt(EFAULT);
|
|
108
|
+
if (!readable(meta, metaBytes))
|
|
109
|
+
return BigInt(EFAULT);
|
|
110
|
+
return call(CodecOperation.Push, [handleValue, data, dataBytes, meta, metaBytes]);
|
|
111
|
+
},
|
|
112
|
+
SYS_browser_codec_pull_v1: (handle, flags, dataPointer, dataCapacity, metaPointer, metaCapacity) => {
|
|
113
|
+
if (!supported())
|
|
114
|
+
return BigInt(EOPNOTSUPP);
|
|
115
|
+
const handleValue = Number(handle);
|
|
116
|
+
const flagsValue = Number(flags);
|
|
117
|
+
const data = Number(dataPointer);
|
|
118
|
+
const dataBytes = Number(dataCapacity);
|
|
119
|
+
const meta = Number(metaPointer);
|
|
120
|
+
const metaBytes = Number(metaCapacity);
|
|
121
|
+
if (!Number.isInteger(handleValue) || handleValue <= 0)
|
|
122
|
+
return BigInt(EBADF);
|
|
123
|
+
if (!Number.isInteger(flagsValue) || (flagsValue & ~CODEC_PULL_WAIT) !== 0)
|
|
124
|
+
return BigInt(EINVAL);
|
|
125
|
+
if (!Number.isSafeInteger(dataBytes) || dataBytes < 0)
|
|
126
|
+
return BigInt(EINVAL);
|
|
127
|
+
if (!Number.isSafeInteger(metaBytes) || metaBytes < 0 || metaBytes > CODEC_JSON_MAX)
|
|
128
|
+
return BigInt(EINVAL);
|
|
129
|
+
if (!writable(data, dataBytes) || !writable(meta, metaBytes))
|
|
130
|
+
return BigInt(EFAULT);
|
|
131
|
+
return call(CodecOperation.Pull, [handleValue, flagsValue, data, dataBytes, meta, metaBytes], (flagsValue & CODEC_PULL_WAIT) === 0 ? REQUEST_TIMEOUT_MS : WAITING_PULL_TIMEOUT_MS);
|
|
132
|
+
},
|
|
133
|
+
SYS_browser_codec_flush_v1: (handle) => {
|
|
134
|
+
if (!supported())
|
|
135
|
+
return BigInt(EOPNOTSUPP);
|
|
136
|
+
const handleValue = Number(handle);
|
|
137
|
+
if (!Number.isInteger(handleValue) || handleValue <= 0)
|
|
138
|
+
return BigInt(EBADF);
|
|
139
|
+
return call(CodecOperation.Flush, [handleValue]);
|
|
140
|
+
},
|
|
141
|
+
SYS_browser_codec_close_v1: (handle) => {
|
|
142
|
+
if (!supported())
|
|
143
|
+
return BigInt(EOPNOTSUPP);
|
|
144
|
+
const handleValue = Number(handle);
|
|
145
|
+
if (!Number.isInteger(handleValue) || handleValue <= 0)
|
|
146
|
+
return 0n;
|
|
147
|
+
return call(CodecOperation.Close, [handleValue]);
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* One codec worker per process. It is created for a process that negotiated
|
|
153
|
+
* the bridge and terminated when that process exits; it constructs no
|
|
154
|
+
* WebCodecs object until the first `open` reaches it.
|
|
155
|
+
*/
|
|
156
|
+
export class WaliCodecCoordinator {
|
|
157
|
+
worker;
|
|
158
|
+
constructor(worker) {
|
|
159
|
+
this.worker = worker;
|
|
160
|
+
}
|
|
161
|
+
static async create(memory) {
|
|
162
|
+
const worker = pageWorker(new Worker(new URL("./codec-worker.js", import.meta.url), {
|
|
163
|
+
type: "module", name: "wali-codec",
|
|
164
|
+
}));
|
|
165
|
+
await new Promise((resolve, reject) => {
|
|
166
|
+
const onMessage = (event) => {
|
|
167
|
+
if (event.data.kind === "ready") {
|
|
168
|
+
worker.removeEventListener("message", onMessage);
|
|
169
|
+
resolve();
|
|
170
|
+
}
|
|
171
|
+
if (event.data.kind === "error") {
|
|
172
|
+
worker.removeEventListener("message", onMessage);
|
|
173
|
+
reject(new Error(event.data.message));
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
worker.addEventListener("message", onMessage);
|
|
177
|
+
worker.addEventListener("error", (event) => reject(event.error ?? new Error(event.message)), { once: true });
|
|
178
|
+
worker.postMessage({ kind: "initialize", memory });
|
|
179
|
+
});
|
|
180
|
+
return new WaliCodecCoordinator(worker);
|
|
181
|
+
}
|
|
182
|
+
createChannel() {
|
|
183
|
+
const channel = new MessageChannel();
|
|
184
|
+
const control = new SharedArrayBuffer(CODEC_CONTROL_WORDS * Int32Array.BYTES_PER_ELEMENT);
|
|
185
|
+
this.worker.postMessage({ kind: "attach", port: channel.port2, control }, [channel.port2]);
|
|
186
|
+
return { port: channel.port1, control };
|
|
187
|
+
}
|
|
188
|
+
terminate() { this.worker.terminate(); }
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=codec-remote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec-remote.js","sourceRoot":"","sources":["../src/codec-remote.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec-worker.d.ts","sourceRoot":"","sources":["../src/codec-worker.ts"],"names":[],"mappings":""}
|