@asciiz/atoolkit 0.1.0
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/LICENSE +21 -0
- package/ReadMe.md +198 -0
- package/dist/acircuit/chip.d.ts +46 -0
- package/dist/acircuit/chip.d.ts.map +1 -0
- package/dist/acircuit/chip.js +104 -0
- package/dist/acircuit/chip.js.map +1 -0
- package/dist/acircuit/circuit.d.ts +86 -0
- package/dist/acircuit/circuit.d.ts.map +1 -0
- package/dist/acircuit/circuit.js +606 -0
- package/dist/acircuit/circuit.js.map +1 -0
- package/dist/acircuit/composite.d.ts +32 -0
- package/dist/acircuit/composite.d.ts.map +1 -0
- package/dist/acircuit/composite.js +88 -0
- package/dist/acircuit/composite.js.map +1 -0
- package/dist/acircuit/index.d.ts +7 -0
- package/dist/acircuit/index.d.ts.map +1 -0
- package/dist/acircuit/index.js +6 -0
- package/dist/acircuit/index.js.map +1 -0
- package/dist/acircuit/socket.d.ts +20 -0
- package/dist/acircuit/socket.d.ts.map +1 -0
- package/dist/acircuit/socket.js +23 -0
- package/dist/acircuit/socket.js.map +1 -0
- package/dist/acircuit/types.d.ts +94 -0
- package/dist/acircuit/types.d.ts.map +1 -0
- package/dist/acircuit/types.js +2 -0
- package/dist/acircuit/types.js.map +1 -0
- package/dist/acircuit/wire.d.ts +26 -0
- package/dist/acircuit/wire.d.ts.map +1 -0
- package/dist/acircuit/wire.js +23 -0
- package/dist/acircuit/wire.js.map +1 -0
- package/dist/adiag/bus.d.ts +65 -0
- package/dist/adiag/bus.d.ts.map +1 -0
- package/dist/adiag/bus.js +225 -0
- package/dist/adiag/bus.js.map +1 -0
- package/dist/adiag/index.d.ts +3 -0
- package/dist/adiag/index.d.ts.map +1 -0
- package/dist/adiag/index.js +2 -0
- package/dist/adiag/index.js.map +1 -0
- package/dist/aecs/ComponentSet.d.ts +33 -0
- package/dist/aecs/ComponentSet.d.ts.map +1 -0
- package/dist/aecs/ComponentSet.js +127 -0
- package/dist/aecs/ComponentSet.js.map +1 -0
- package/dist/aecs/Entity.d.ts +43 -0
- package/dist/aecs/Entity.d.ts.map +1 -0
- package/dist/aecs/Entity.js +82 -0
- package/dist/aecs/Entity.js.map +1 -0
- package/dist/aecs/FloatSet.d.ts +34 -0
- package/dist/aecs/FloatSet.d.ts.map +1 -0
- package/dist/aecs/FloatSet.js +147 -0
- package/dist/aecs/FloatSet.js.map +1 -0
- package/dist/aecs/Query.d.ts +90 -0
- package/dist/aecs/Query.d.ts.map +1 -0
- package/dist/aecs/Query.js +304 -0
- package/dist/aecs/Query.js.map +1 -0
- package/dist/aecs/index.d.ts +6 -0
- package/dist/aecs/index.d.ts.map +1 -0
- package/dist/aecs/index.js +6 -0
- package/dist/aecs/index.js.map +1 -0
- package/dist/aecs/join.d.ts +2 -0
- package/dist/aecs/join.d.ts.map +1 -0
- package/dist/aecs/join.js +2 -0
- package/dist/aecs/join.js.map +1 -0
- package/dist/alm/constants.d.ts +11 -0
- package/dist/alm/constants.d.ts.map +1 -0
- package/dist/alm/constants.js +17 -0
- package/dist/alm/constants.js.map +1 -0
- package/dist/alm/index.d.ts +9 -0
- package/dist/alm/index.d.ts.map +1 -0
- package/dist/alm/index.js +12 -0
- package/dist/alm/index.js.map +1 -0
- package/dist/alm/mat3.d.ts +63 -0
- package/dist/alm/mat3.d.ts.map +1 -0
- package/dist/alm/mat3.js +393 -0
- package/dist/alm/mat3.js.map +1 -0
- package/dist/alm/mat4.d.ts +157 -0
- package/dist/alm/mat4.d.ts.map +1 -0
- package/dist/alm/mat4.js +1448 -0
- package/dist/alm/mat4.js.map +1 -0
- package/dist/alm/quat.d.ts +89 -0
- package/dist/alm/quat.d.ts.map +1 -0
- package/dist/alm/quat.js +543 -0
- package/dist/alm/quat.js.map +1 -0
- package/dist/alm/spatial.d.ts +102 -0
- package/dist/alm/spatial.d.ts.map +1 -0
- package/dist/alm/spatial.js +389 -0
- package/dist/alm/spatial.js.map +1 -0
- package/dist/alm/vec2.d.ts +97 -0
- package/dist/alm/vec2.d.ts.map +1 -0
- package/dist/alm/vec2.js +369 -0
- package/dist/alm/vec2.js.map +1 -0
- package/dist/alm/vec3.d.ts +117 -0
- package/dist/alm/vec3.d.ts.map +1 -0
- package/dist/alm/vec3.js +547 -0
- package/dist/alm/vec3.js.map +1 -0
- package/dist/alm/vec4.d.ts +95 -0
- package/dist/alm/vec4.d.ts.map +1 -0
- package/dist/alm/vec4.js +452 -0
- package/dist/alm/vec4.js.map +1 -0
- package/dist/atempo/cadence.d.ts +58 -0
- package/dist/atempo/cadence.d.ts.map +1 -0
- package/dist/atempo/cadence.js +110 -0
- package/dist/atempo/cadence.js.map +1 -0
- package/dist/atempo/clip.d.ts +37 -0
- package/dist/atempo/clip.d.ts.map +1 -0
- package/dist/atempo/clip.js +92 -0
- package/dist/atempo/clip.js.map +1 -0
- package/dist/atempo/curve.d.ts +6 -0
- package/dist/atempo/curve.d.ts.map +1 -0
- package/dist/atempo/curve.js +2 -0
- package/dist/atempo/curve.js.map +1 -0
- package/dist/atempo/curves/bezier.d.ts +7 -0
- package/dist/atempo/curves/bezier.d.ts.map +1 -0
- package/dist/atempo/curves/bezier.js +46 -0
- package/dist/atempo/curves/bezier.js.map +1 -0
- package/dist/atempo/curves/bounce.d.ts +6 -0
- package/dist/atempo/curves/bounce.d.ts.map +1 -0
- package/dist/atempo/curves/bounce.js +22 -0
- package/dist/atempo/curves/bounce.js.map +1 -0
- package/dist/atempo/curves/cubic.d.ts +14 -0
- package/dist/atempo/curves/cubic.d.ts.map +1 -0
- package/dist/atempo/curves/cubic.js +22 -0
- package/dist/atempo/curves/cubic.js.map +1 -0
- package/dist/atempo/curves/elastic.d.ts +6 -0
- package/dist/atempo/curves/elastic.d.ts.map +1 -0
- package/dist/atempo/curves/elastic.js +12 -0
- package/dist/atempo/curves/elastic.js.map +1 -0
- package/dist/atempo/curves/expo.d.ts +14 -0
- package/dist/atempo/curves/expo.d.ts.map +1 -0
- package/dist/atempo/curves/expo.js +26 -0
- package/dist/atempo/curves/expo.js.map +1 -0
- package/dist/atempo/curves/holdSnap.d.ts +6 -0
- package/dist/atempo/curves/holdSnap.d.ts.map +1 -0
- package/dist/atempo/curves/holdSnap.js +15 -0
- package/dist/atempo/curves/holdSnap.js.map +1 -0
- package/dist/atempo/curves/index.d.ts +14 -0
- package/dist/atempo/curves/index.d.ts.map +1 -0
- package/dist/atempo/curves/index.js +14 -0
- package/dist/atempo/curves/index.js.map +1 -0
- package/dist/atempo/curves/linear.d.ts +6 -0
- package/dist/atempo/curves/linear.d.ts.map +1 -0
- package/dist/atempo/curves/linear.js +5 -0
- package/dist/atempo/curves/linear.js.map +1 -0
- package/dist/atempo/curves/overshoot.d.ts +6 -0
- package/dist/atempo/curves/overshoot.d.ts.map +1 -0
- package/dist/atempo/curves/overshoot.js +16 -0
- package/dist/atempo/curves/overshoot.js.map +1 -0
- package/dist/atempo/curves/quad.d.ts +14 -0
- package/dist/atempo/curves/quad.d.ts.map +1 -0
- package/dist/atempo/curves/quad.js +22 -0
- package/dist/atempo/curves/quad.js.map +1 -0
- package/dist/atempo/curves/step.d.ts +6 -0
- package/dist/atempo/curves/step.d.ts.map +1 -0
- package/dist/atempo/curves/step.js +11 -0
- package/dist/atempo/curves/step.js.map +1 -0
- package/dist/atempo/index.d.ts +17 -0
- package/dist/atempo/index.d.ts.map +1 -0
- package/dist/atempo/index.js +18 -0
- package/dist/atempo/index.js.map +1 -0
- package/dist/atempo/phase.d.ts +66 -0
- package/dist/atempo/phase.d.ts.map +1 -0
- package/dist/atempo/phase.js +121 -0
- package/dist/atempo/phase.js.map +1 -0
- package/dist/atempo/spring.d.ts +20 -0
- package/dist/atempo/spring.d.ts.map +1 -0
- package/dist/atempo/spring.js +71 -0
- package/dist/atempo/spring.js.map +1 -0
- package/dist/atempo/track.d.ts +69 -0
- package/dist/atempo/track.d.ts.map +1 -0
- package/dist/atempo/track.js +184 -0
- package/dist/atempo/track.js.map +1 -0
- package/dist/atempo/tracks/color.d.ts +20 -0
- package/dist/atempo/tracks/color.d.ts.map +1 -0
- package/dist/atempo/tracks/color.js +52 -0
- package/dist/atempo/tracks/color.js.map +1 -0
- package/dist/atempo/tracks/float.d.ts +9 -0
- package/dist/atempo/tracks/float.d.ts.map +1 -0
- package/dist/atempo/tracks/float.js +13 -0
- package/dist/atempo/tracks/float.js.map +1 -0
- package/dist/atempo/tracks/index.d.ts +8 -0
- package/dist/atempo/tracks/index.d.ts.map +1 -0
- package/dist/atempo/tracks/index.js +8 -0
- package/dist/atempo/tracks/index.js.map +1 -0
- package/dist/atempo/tracks/quat.d.ts +16 -0
- package/dist/atempo/tracks/quat.d.ts.map +1 -0
- package/dist/atempo/tracks/quat.js +72 -0
- package/dist/atempo/tracks/quat.js.map +1 -0
- package/dist/atempo/tracks/vec.d.ts +11 -0
- package/dist/atempo/tracks/vec.d.ts.map +1 -0
- package/dist/atempo/tracks/vec.js +27 -0
- package/dist/atempo/tracks/vec.js.map +1 -0
- package/dist/awasm/abi/index.d.ts +4 -0
- package/dist/awasm/abi/index.d.ts.map +1 -0
- package/dist/awasm/abi/index.js +4 -0
- package/dist/awasm/abi/index.js.map +1 -0
- package/dist/awasm/abi/layout.d.ts +40 -0
- package/dist/awasm/abi/layout.d.ts.map +1 -0
- package/dist/awasm/abi/layout.js +100 -0
- package/dist/awasm/abi/layout.js.map +1 -0
- package/dist/awasm/abi/slice.d.ts +28 -0
- package/dist/awasm/abi/slice.d.ts.map +1 -0
- package/dist/awasm/abi/slice.js +68 -0
- package/dist/awasm/abi/slice.js.map +1 -0
- package/dist/awasm/abi/string-buffer.d.ts +23 -0
- package/dist/awasm/abi/string-buffer.d.ts.map +1 -0
- package/dist/awasm/abi/string-buffer.js +52 -0
- package/dist/awasm/abi/string-buffer.js.map +1 -0
- package/dist/awasm/index.d.ts +5 -0
- package/dist/awasm/index.d.ts.map +1 -0
- package/dist/awasm/index.js +8 -0
- package/dist/awasm/index.js.map +1 -0
- package/dist/awasm/memory/block-pool.d.ts +31 -0
- package/dist/awasm/memory/block-pool.d.ts.map +1 -0
- package/dist/awasm/memory/block-pool.js +98 -0
- package/dist/awasm/memory/block-pool.js.map +1 -0
- package/dist/awasm/memory/index.d.ts +5 -0
- package/dist/awasm/memory/index.d.ts.map +1 -0
- package/dist/awasm/memory/index.js +5 -0
- package/dist/awasm/memory/index.js.map +1 -0
- package/dist/awasm/memory/linear-arena.d.ts +36 -0
- package/dist/awasm/memory/linear-arena.d.ts.map +1 -0
- package/dist/awasm/memory/linear-arena.js +94 -0
- package/dist/awasm/memory/linear-arena.js.map +1 -0
- package/dist/awasm/memory/memory-view.d.ts +51 -0
- package/dist/awasm/memory/memory-view.d.ts.map +1 -0
- package/dist/awasm/memory/memory-view.js +110 -0
- package/dist/awasm/memory/memory-view.js.map +1 -0
- package/dist/awasm/memory/wasm-memory.d.ts +40 -0
- package/dist/awasm/memory/wasm-memory.d.ts.map +1 -0
- package/dist/awasm/memory/wasm-memory.js +88 -0
- package/dist/awasm/memory/wasm-memory.js.map +1 -0
- package/dist/awasm/runtime/host-bridge.d.ts +30 -0
- package/dist/awasm/runtime/host-bridge.d.ts.map +1 -0
- package/dist/awasm/runtime/host-bridge.js +57 -0
- package/dist/awasm/runtime/host-bridge.js.map +1 -0
- package/dist/awasm/runtime/index.d.ts +5 -0
- package/dist/awasm/runtime/index.d.ts.map +1 -0
- package/dist/awasm/runtime/index.js +5 -0
- package/dist/awasm/runtime/index.js.map +1 -0
- package/dist/awasm/runtime/module-inspector.d.ts +32 -0
- package/dist/awasm/runtime/module-inspector.d.ts.map +1 -0
- package/dist/awasm/runtime/module-inspector.js +43 -0
- package/dist/awasm/runtime/module-inspector.js.map +1 -0
- package/dist/awasm/runtime/module-loader.d.ts +17 -0
- package/dist/awasm/runtime/module-loader.d.ts.map +1 -0
- package/dist/awasm/runtime/module-loader.js +99 -0
- package/dist/awasm/runtime/module-loader.js.map +1 -0
- package/dist/awasm/runtime/wasm-instance.d.ts +25 -0
- package/dist/awasm/runtime/wasm-instance.d.ts.map +1 -0
- package/dist/awasm/runtime/wasm-instance.js +60 -0
- package/dist/awasm/runtime/wasm-instance.js.map +1 -0
- package/dist/awasm/thread/atomic-queue.d.ts +33 -0
- package/dist/awasm/thread/atomic-queue.d.ts.map +1 -0
- package/dist/awasm/thread/atomic-queue.js +78 -0
- package/dist/awasm/thread/atomic-queue.js.map +1 -0
- package/dist/awasm/thread/index.d.ts +4 -0
- package/dist/awasm/thread/index.d.ts.map +1 -0
- package/dist/awasm/thread/index.js +4 -0
- package/dist/awasm/thread/index.js.map +1 -0
- package/dist/awasm/thread/shared-memory.d.ts +38 -0
- package/dist/awasm/thread/shared-memory.d.ts.map +1 -0
- package/dist/awasm/thread/shared-memory.js +74 -0
- package/dist/awasm/thread/shared-memory.js.map +1 -0
- package/dist/awasm/thread/worker-pool.d.ts +43 -0
- package/dist/awasm/thread/worker-pool.d.ts.map +1 -0
- package/dist/awasm/thread/worker-pool.js +118 -0
- package/dist/awasm/thread/worker-pool.js.map +1 -0
- package/dist/awgpu/binding.d.ts +108 -0
- package/dist/awgpu/binding.d.ts.map +1 -0
- package/dist/awgpu/binding.js +251 -0
- package/dist/awgpu/binding.js.map +1 -0
- package/dist/awgpu/device.d.ts +68 -0
- package/dist/awgpu/device.d.ts.map +1 -0
- package/dist/awgpu/device.js +150 -0
- package/dist/awgpu/device.js.map +1 -0
- package/dist/awgpu/graph.d.ts +77 -0
- package/dist/awgpu/graph.d.ts.map +1 -0
- package/dist/awgpu/graph.js +288 -0
- package/dist/awgpu/graph.js.map +1 -0
- package/dist/awgpu/index.d.ts +10 -0
- package/dist/awgpu/index.d.ts.map +1 -0
- package/dist/awgpu/index.js +19 -0
- package/dist/awgpu/index.js.map +1 -0
- package/dist/awgpu/memory.d.ts +231 -0
- package/dist/awgpu/memory.d.ts.map +1 -0
- package/dist/awgpu/memory.js +547 -0
- package/dist/awgpu/memory.js.map +1 -0
- package/dist/awgpu/pipeline.d.ts +114 -0
- package/dist/awgpu/pipeline.d.ts.map +1 -0
- package/dist/awgpu/pipeline.js +335 -0
- package/dist/awgpu/pipeline.js.map +1 -0
- package/dist/awgpu/sequence.d.ts +83 -0
- package/dist/awgpu/sequence.d.ts.map +1 -0
- package/dist/awgpu/sequence.js +273 -0
- package/dist/awgpu/sequence.js.map +1 -0
- package/dist/awgpu/state.d.ts +27 -0
- package/dist/awgpu/state.d.ts.map +1 -0
- package/dist/awgpu/state.js +43 -0
- package/dist/awgpu/state.js.map +1 -0
- package/dist/awgpu/stream.d.ts +57 -0
- package/dist/awgpu/stream.d.ts.map +1 -0
- package/dist/awgpu/stream.js +139 -0
- package/dist/awgpu/stream.js.map +1 -0
- package/dist/awgpu/target.d.ts +98 -0
- package/dist/awgpu/target.d.ts.map +1 -0
- package/dist/awgpu/target.js +357 -0
- package/dist/awgpu/target.js.map +1 -0
- package/dist/awgpu_old/buffer.d.ts +78 -0
- package/dist/awgpu_old/buffer.d.ts.map +1 -0
- package/dist/awgpu_old/buffer.js +220 -0
- package/dist/awgpu_old/buffer.js.map +1 -0
- package/dist/awgpu_old/device.d.ts +69 -0
- package/dist/awgpu_old/device.d.ts.map +1 -0
- package/dist/awgpu_old/device.js +121 -0
- package/dist/awgpu_old/device.js.map +1 -0
- package/dist/awgpu_old/frame.d.ts +17 -0
- package/dist/awgpu_old/frame.d.ts.map +1 -0
- package/dist/awgpu_old/frame.js +29 -0
- package/dist/awgpu_old/frame.js.map +1 -0
- package/dist/awgpu_old/index.d.ts +8 -0
- package/dist/awgpu_old/index.d.ts.map +1 -0
- package/dist/awgpu_old/index.js +18 -0
- package/dist/awgpu_old/index.js.map +1 -0
- package/dist/awgpu_old/layout.d.ts +70 -0
- package/dist/awgpu_old/layout.d.ts.map +1 -0
- package/dist/awgpu_old/layout.js +137 -0
- package/dist/awgpu_old/layout.js.map +1 -0
- package/dist/awgpu_old/pass.d.ts +97 -0
- package/dist/awgpu_old/pass.d.ts.map +1 -0
- package/dist/awgpu_old/pass.js +302 -0
- package/dist/awgpu_old/pass.js.map +1 -0
- package/dist/awgpu_old/pipeline.d.ts +73 -0
- package/dist/awgpu_old/pipeline.d.ts.map +1 -0
- package/dist/awgpu_old/pipeline.js +226 -0
- package/dist/awgpu_old/pipeline.js.map +1 -0
- package/dist/awgpu_old/target.d.ts +186 -0
- package/dist/awgpu_old/target.d.ts.map +1 -0
- package/dist/awgpu_old/target.js +428 -0
- package/dist/awgpu_old/target.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awasm - Linear Memory: MemoryView
|
|
3
|
+
// ================================================================
|
|
4
|
+
/**
|
|
5
|
+
* Detachment-resilient typed array accessors over WebAssembly linear memory.
|
|
6
|
+
* Caches buffer references and revalidates views against WasmMemory generation counters
|
|
7
|
+
* to prevent accessing detached ArrayBuffers following memory expansion.
|
|
8
|
+
*/
|
|
9
|
+
export class MemoryView {
|
|
10
|
+
_memory;
|
|
11
|
+
_cachedGeneration;
|
|
12
|
+
_cachedBuffer;
|
|
13
|
+
constructor(memory) {
|
|
14
|
+
this._memory = memory;
|
|
15
|
+
this._cachedGeneration = memory.generation;
|
|
16
|
+
this._cachedBuffer = memory.buffer;
|
|
17
|
+
}
|
|
18
|
+
resolveBuffer() {
|
|
19
|
+
if (this._cachedGeneration !== this._memory.generation) {
|
|
20
|
+
this._cachedBuffer = this._memory.buffer;
|
|
21
|
+
this._cachedGeneration = this._memory.generation;
|
|
22
|
+
}
|
|
23
|
+
return this._cachedBuffer;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Slices an 8-bit unsigned integer view over linear memory.
|
|
27
|
+
*/
|
|
28
|
+
asUint8(byteOffset, length) {
|
|
29
|
+
const buffer = this.resolveBuffer();
|
|
30
|
+
return new Uint8Array(buffer, byteOffset, length);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Slices an 8-bit signed integer view over linear memory.
|
|
34
|
+
*/
|
|
35
|
+
asInt8(byteOffset, length) {
|
|
36
|
+
const buffer = this.resolveBuffer();
|
|
37
|
+
return new Int8Array(buffer, byteOffset, length);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Slices a 16-bit signed integer view over linear memory. Requires 2-byte alignment.
|
|
41
|
+
*/
|
|
42
|
+
asInt16(byteOffset, length) {
|
|
43
|
+
if ((byteOffset & 1) !== 0) {
|
|
44
|
+
throw new Error(`Int16 offset must be 2-byte aligned, received ${byteOffset}`);
|
|
45
|
+
}
|
|
46
|
+
const buffer = this.resolveBuffer();
|
|
47
|
+
return new Int16Array(buffer, byteOffset, length);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Slices a 16-bit unsigned integer view over linear memory. Requires 2-byte alignment.
|
|
51
|
+
*/
|
|
52
|
+
asUint16(byteOffset, length) {
|
|
53
|
+
if ((byteOffset & 1) !== 0) {
|
|
54
|
+
throw new Error(`Uint16 offset must be 2-byte aligned, received ${byteOffset}`);
|
|
55
|
+
}
|
|
56
|
+
const buffer = this.resolveBuffer();
|
|
57
|
+
return new Uint16Array(buffer, byteOffset, length);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Slices a 32-bit signed integer view over linear memory. Requires 4-byte alignment.
|
|
61
|
+
*/
|
|
62
|
+
asInt32(byteOffset, length) {
|
|
63
|
+
if ((byteOffset & 3) !== 0) {
|
|
64
|
+
throw new Error(`Int32 offset must be 4-byte aligned, received ${byteOffset}`);
|
|
65
|
+
}
|
|
66
|
+
const buffer = this.resolveBuffer();
|
|
67
|
+
return new Int32Array(buffer, byteOffset, length);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Slices a 32-bit unsigned integer view over linear memory. Requires 4-byte alignment.
|
|
71
|
+
*/
|
|
72
|
+
asUint32(byteOffset, length) {
|
|
73
|
+
if ((byteOffset & 3) !== 0) {
|
|
74
|
+
throw new Error(`Uint32 offset must be 4-byte aligned, received ${byteOffset}`);
|
|
75
|
+
}
|
|
76
|
+
const buffer = this.resolveBuffer();
|
|
77
|
+
return new Uint32Array(buffer, byteOffset, length);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Slices a 32-bit floating point view over linear memory. Requires 4-byte alignment.
|
|
81
|
+
*/
|
|
82
|
+
asFloat32(byteOffset, length) {
|
|
83
|
+
if ((byteOffset & 3) !== 0) {
|
|
84
|
+
throw new Error(`Float32 offset must be 4-byte aligned, received ${byteOffset}`);
|
|
85
|
+
}
|
|
86
|
+
const buffer = this.resolveBuffer();
|
|
87
|
+
return new Float32Array(buffer, byteOffset, length);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Slices a 64-bit floating point view over linear memory. Requires 8-byte alignment.
|
|
91
|
+
*/
|
|
92
|
+
asFloat64(byteOffset, length) {
|
|
93
|
+
if ((byteOffset & 7) !== 0) {
|
|
94
|
+
throw new Error(`Float64 offset must be 8-byte aligned, received ${byteOffset}`);
|
|
95
|
+
}
|
|
96
|
+
const buffer = this.resolveBuffer();
|
|
97
|
+
return new Float64Array(buffer, byteOffset, length);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Slices a DataView window over linear memory.
|
|
101
|
+
*/
|
|
102
|
+
asDataView(byteOffset, byteLength) {
|
|
103
|
+
const buffer = this.resolveBuffer();
|
|
104
|
+
return new DataView(buffer, byteOffset, byteLength);
|
|
105
|
+
}
|
|
106
|
+
get memory() {
|
|
107
|
+
return this._memory;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=memory-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-view.js","sourceRoot":"","sources":["../../../awasm/memory/memory-view.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,qCAAqC;AACrC,mEAAmE;AAInE;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACF,OAAO,CAAa;IAC7B,iBAAiB,CAAS;IAC1B,aAAa,CAAc;IAEnC,YAAY,MAAkB;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,CAAC;IAEO,aAAa;QACjB,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACzC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,UAAkB,EAAE,MAAc;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,UAAkB,EAAE,MAAc;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,UAAkB,EAAE,MAAc;QAC7C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,UAAU,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,UAAkB,EAAE,MAAc;QAC9C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,UAAU,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,UAAkB,EAAE,MAAc;QAC7C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,UAAU,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,UAAkB,EAAE,MAAc;QAC9C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,UAAU,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,UAAkB,EAAE,MAAc;QAC/C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,mDAAmD,UAAU,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,UAAkB,EAAE,MAAc;QAC/C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,mDAAmD,UAAU,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,UAAkB,EAAE,UAAkB;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface MemoryDescriptor {
|
|
2
|
+
initial: number;
|
|
3
|
+
maximum?: number;
|
|
4
|
+
shared?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export type MemoryResizeListener = (newBuffer: ArrayBuffer, previousByteLength: number) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Managed WebAssembly memory coordinator tracking page growth, limits, and buffer stability.
|
|
9
|
+
* Holds direct ownership of native WebAssembly.Memory and notifies listeners when buffer reallocation occurs.
|
|
10
|
+
*/
|
|
11
|
+
export declare class WasmMemory {
|
|
12
|
+
private readonly _memory;
|
|
13
|
+
private readonly _isShared;
|
|
14
|
+
private _pageCount;
|
|
15
|
+
private _generation;
|
|
16
|
+
private _listeners;
|
|
17
|
+
static readonly PAGE_SIZE: number;
|
|
18
|
+
constructor(descriptor: MemoryDescriptor);
|
|
19
|
+
/**
|
|
20
|
+
* Adopts an existing native WebAssembly.Memory instance.
|
|
21
|
+
*/
|
|
22
|
+
static fromNative(memory: WebAssembly.Memory, initialPages?: number): WasmMemory;
|
|
23
|
+
/**
|
|
24
|
+
* Grows linear memory by the specified page delta.
|
|
25
|
+
* Increments generation counter and notifies registered resize listeners.
|
|
26
|
+
*/
|
|
27
|
+
grow(deltaPages: number): number;
|
|
28
|
+
/**
|
|
29
|
+
* Registers a callback invoked immediately when memory grows and the underlying buffer is reallocated.
|
|
30
|
+
* Returns an unregister function.
|
|
31
|
+
*/
|
|
32
|
+
onResize(listener: MemoryResizeListener): () => void;
|
|
33
|
+
get handle(): WebAssembly.Memory;
|
|
34
|
+
get buffer(): ArrayBuffer;
|
|
35
|
+
get pageCount(): number;
|
|
36
|
+
get byteLength(): number;
|
|
37
|
+
get generation(): number;
|
|
38
|
+
get isShared(): boolean;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=wasm-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm-memory.d.ts","sourceRoot":"","sources":["../../../awasm/memory/wasm-memory.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,KAAK,IAAI,CAAC;AAEhG;;;GAGG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAyB;IAE3C,gBAAuB,SAAS,EAAE,MAAM,CAAS;gBAErC,UAAU,EAAE,gBAAgB;IAaxC;;OAEG;WACW,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,GAAE,MAAU,GAAG,UAAU;IAU1F;;;OAGG;IACI,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAkBvC;;;OAGG;IACI,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAU3D,IAAW,MAAM,IAAI,WAAW,CAAC,MAAM,CAEtC;IAED,IAAW,MAAM,IAAI,WAAW,CAE/B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;CACJ"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awasm - Linear Memory: WasmMemory
|
|
3
|
+
// ================================================================
|
|
4
|
+
/**
|
|
5
|
+
* Managed WebAssembly memory coordinator tracking page growth, limits, and buffer stability.
|
|
6
|
+
* Holds direct ownership of native WebAssembly.Memory and notifies listeners when buffer reallocation occurs.
|
|
7
|
+
*/
|
|
8
|
+
export class WasmMemory {
|
|
9
|
+
_memory;
|
|
10
|
+
_isShared;
|
|
11
|
+
_pageCount;
|
|
12
|
+
_generation;
|
|
13
|
+
_listeners;
|
|
14
|
+
static PAGE_SIZE = 65536;
|
|
15
|
+
constructor(descriptor) {
|
|
16
|
+
this._isShared = descriptor.shared ?? false;
|
|
17
|
+
this._pageCount = descriptor.initial;
|
|
18
|
+
this._generation = 0;
|
|
19
|
+
this._listeners = [];
|
|
20
|
+
this._memory = new WebAssembly.Memory({
|
|
21
|
+
initial: descriptor.initial,
|
|
22
|
+
maximum: descriptor.maximum,
|
|
23
|
+
shared: descriptor.shared,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Adopts an existing native WebAssembly.Memory instance.
|
|
28
|
+
*/
|
|
29
|
+
static fromNative(memory, initialPages = 1) {
|
|
30
|
+
const instance = Object.create(WasmMemory.prototype);
|
|
31
|
+
instance._memory = memory;
|
|
32
|
+
instance._isShared = memory.buffer instanceof SharedArrayBuffer;
|
|
33
|
+
instance._pageCount = initialPages;
|
|
34
|
+
instance._generation = 0;
|
|
35
|
+
instance._listeners = [];
|
|
36
|
+
return instance;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Grows linear memory by the specified page delta.
|
|
40
|
+
* Increments generation counter and notifies registered resize listeners.
|
|
41
|
+
*/
|
|
42
|
+
grow(deltaPages) {
|
|
43
|
+
if (deltaPages <= 0) {
|
|
44
|
+
return this._pageCount;
|
|
45
|
+
}
|
|
46
|
+
const previousByteLength = this._pageCount * WasmMemory.PAGE_SIZE;
|
|
47
|
+
const previousPages = this._memory.grow(deltaPages);
|
|
48
|
+
this._pageCount += deltaPages;
|
|
49
|
+
this._generation += 1;
|
|
50
|
+
const newBuffer = this._memory.buffer;
|
|
51
|
+
for (let i = 0; i < this._listeners.length; i++) {
|
|
52
|
+
this._listeners[i](newBuffer, previousByteLength);
|
|
53
|
+
}
|
|
54
|
+
return previousPages;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Registers a callback invoked immediately when memory grows and the underlying buffer is reallocated.
|
|
58
|
+
* Returns an unregister function.
|
|
59
|
+
*/
|
|
60
|
+
onResize(listener) {
|
|
61
|
+
this._listeners.push(listener);
|
|
62
|
+
return () => {
|
|
63
|
+
const index = this._listeners.indexOf(listener);
|
|
64
|
+
if (index !== -1) {
|
|
65
|
+
this._listeners.splice(index, 1);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
get handle() {
|
|
70
|
+
return this._memory;
|
|
71
|
+
}
|
|
72
|
+
get buffer() {
|
|
73
|
+
return this._memory.buffer;
|
|
74
|
+
}
|
|
75
|
+
get pageCount() {
|
|
76
|
+
return this._pageCount;
|
|
77
|
+
}
|
|
78
|
+
get byteLength() {
|
|
79
|
+
return this._pageCount * WasmMemory.PAGE_SIZE;
|
|
80
|
+
}
|
|
81
|
+
get generation() {
|
|
82
|
+
return this._generation;
|
|
83
|
+
}
|
|
84
|
+
get isShared() {
|
|
85
|
+
return this._isShared;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=wasm-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm-memory.js","sourceRoot":"","sources":["../../../awasm/memory/wasm-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface HostEnvOptions {
|
|
2
|
+
onAbort?: (message: string, file: string, line: number, column: number) => void;
|
|
3
|
+
onLog?: (message: string) => void;
|
|
4
|
+
nowProvider?: () => number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Host function import table builder.
|
|
8
|
+
* Registers JavaScript functions and default environment hooks to link into WebAssembly modules.
|
|
9
|
+
*/
|
|
10
|
+
export declare class HostBridge {
|
|
11
|
+
private readonly _imports;
|
|
12
|
+
constructor();
|
|
13
|
+
/**
|
|
14
|
+
* Registers a single host function under the specified module and export name.
|
|
15
|
+
*/
|
|
16
|
+
register(moduleName: string, exportName: string, fn: any): this;
|
|
17
|
+
/**
|
|
18
|
+
* Registers a record of host functions under the specified module namespace.
|
|
19
|
+
*/
|
|
20
|
+
registerModule(moduleName: string, functions: Record<string, any>): this;
|
|
21
|
+
/**
|
|
22
|
+
* Injects standard default environment hooks: env.now, env.abort, and optional env.log.
|
|
23
|
+
*/
|
|
24
|
+
registerDefaultEnv(options?: HostEnvOptions): this;
|
|
25
|
+
/**
|
|
26
|
+
* Compiles registered imports into the WebAssembly.Imports dictionary format.
|
|
27
|
+
*/
|
|
28
|
+
build(): WebAssembly.Imports;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=host-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-bridge.d.ts","sourceRoot":"","sources":["../../../awasm/runtime/host-bridge.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC3B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;;IAM/D;;OAEG;IACI,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI;IAQtE;;OAEG;IACI,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAQ/E;;OAEG;IACI,kBAAkB,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI;IAkB7D;;OAEG;IACI,KAAK,IAAI,WAAW,CAAC,OAAO;CAGtC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awasm - Runtime: HostBridge
|
|
3
|
+
// ================================================================
|
|
4
|
+
/**
|
|
5
|
+
* Host function import table builder.
|
|
6
|
+
* Registers JavaScript functions and default environment hooks to link into WebAssembly modules.
|
|
7
|
+
*/
|
|
8
|
+
export class HostBridge {
|
|
9
|
+
_imports;
|
|
10
|
+
constructor() {
|
|
11
|
+
this._imports = {};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Registers a single host function under the specified module and export name.
|
|
15
|
+
*/
|
|
16
|
+
register(moduleName, exportName, fn) {
|
|
17
|
+
if (!this._imports[moduleName]) {
|
|
18
|
+
this._imports[moduleName] = {};
|
|
19
|
+
}
|
|
20
|
+
this._imports[moduleName][exportName] = fn;
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Registers a record of host functions under the specified module namespace.
|
|
25
|
+
*/
|
|
26
|
+
registerModule(moduleName, functions) {
|
|
27
|
+
if (!this._imports[moduleName]) {
|
|
28
|
+
this._imports[moduleName] = {};
|
|
29
|
+
}
|
|
30
|
+
Object.assign(this._imports[moduleName], functions);
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Injects standard default environment hooks: env.now, env.abort, and optional env.log.
|
|
35
|
+
*/
|
|
36
|
+
registerDefaultEnv(options = {}) {
|
|
37
|
+
const nowFn = options.nowProvider ?? (() => (typeof performance !== "undefined" ? performance.now() : Date.now()));
|
|
38
|
+
const abortFn = options.onAbort ?? ((msg, file, line, col) => {
|
|
39
|
+
throw new Error(`WebAssembly abort at ${file}:${line}:${col} - ${msg}`);
|
|
40
|
+
});
|
|
41
|
+
this.register("env", "now", nowFn);
|
|
42
|
+
this.register("env", "abort", (msgPtr, filePtr, line, col) => {
|
|
43
|
+
abortFn(String(msgPtr), String(filePtr), line, col);
|
|
44
|
+
});
|
|
45
|
+
if (options.onLog) {
|
|
46
|
+
this.register("env", "log", options.onLog);
|
|
47
|
+
}
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Compiles registered imports into the WebAssembly.Imports dictionary format.
|
|
52
|
+
*/
|
|
53
|
+
build() {
|
|
54
|
+
return this._imports;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=host-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-bridge.js","sourceRoot":"","sources":["../../../awasm/runtime/host-bridge.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,+BAA+B;AAC/B,mEAAmE;AAQnE;;;GAGG;AACH,MAAM,OAAO,UAAU;IACF,QAAQ,CAAsC;IAE/D;QACI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,UAAkB,EAAE,UAAkB,EAAE,EAAO;QAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,UAAkB,EAAE,SAA8B;QACpE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,UAA0B,EAAE;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YACzD,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,IAAY,EAAE,GAAW,EAAE,EAAE;YACzF,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,KAAK;QACR,OAAO,IAAI,CAAC,QAA+B,CAAC;IAChD,CAAC;CACJ"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ModuleInspector, type WasmExportKind, type WasmImportKind, type ModuleExportDescriptor, type ModuleImportDescriptor, type ModuleManifest, } from "./module-inspector.js";
|
|
2
|
+
export { HostBridge, type HostEnvOptions } from "./host-bridge.js";
|
|
3
|
+
export { ModuleLoader } from "./module-loader.js";
|
|
4
|
+
export { WasmInstance } from "./wasm-instance.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../awasm/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,cAAc,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../awasm/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,GAMlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type WasmExportKind = "function" | "table" | "memory" | "global";
|
|
2
|
+
export type WasmImportKind = "function" | "table" | "memory" | "global";
|
|
3
|
+
export interface ModuleExportDescriptor {
|
|
4
|
+
name: string;
|
|
5
|
+
kind: WasmExportKind;
|
|
6
|
+
}
|
|
7
|
+
export interface ModuleImportDescriptor {
|
|
8
|
+
module: string;
|
|
9
|
+
name: string;
|
|
10
|
+
kind: WasmImportKind;
|
|
11
|
+
}
|
|
12
|
+
export interface ModuleManifest {
|
|
13
|
+
exports: ModuleExportDescriptor[];
|
|
14
|
+
imports: ModuleImportDescriptor[];
|
|
15
|
+
declaredMemory: boolean;
|
|
16
|
+
requiredModules: string[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Static binary inspector and validator for uninstantiated WebAssembly modules.
|
|
20
|
+
* Extracts interface schemas, import dependencies, and export symbols synchronously.
|
|
21
|
+
*/
|
|
22
|
+
export declare class ModuleInspector {
|
|
23
|
+
/**
|
|
24
|
+
* Inspects module exports and imports without instantiating or executing guest code.
|
|
25
|
+
*/
|
|
26
|
+
static inspect(module: WebAssembly.Module): ModuleManifest;
|
|
27
|
+
/**
|
|
28
|
+
* Validates binary byte sequence against the WebAssembly specification.
|
|
29
|
+
*/
|
|
30
|
+
static validate(bytes: BufferSource): boolean;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=module-inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-inspector.d.ts","sourceRoot":"","sources":["../../../awasm/runtime/module-inspector.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACxE,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,eAAe;IACxB;;OAEG;WACW,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,cAAc;IA8BjE;;OAEG;WACW,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;CAGvD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awasm - Runtime: ModuleInspector
|
|
3
|
+
// ================================================================
|
|
4
|
+
/**
|
|
5
|
+
* Static binary inspector and validator for uninstantiated WebAssembly modules.
|
|
6
|
+
* Extracts interface schemas, import dependencies, and export symbols synchronously.
|
|
7
|
+
*/
|
|
8
|
+
export class ModuleInspector {
|
|
9
|
+
/**
|
|
10
|
+
* Inspects module exports and imports without instantiating or executing guest code.
|
|
11
|
+
*/
|
|
12
|
+
static inspect(module) {
|
|
13
|
+
const rawExports = WebAssembly.Module.exports(module);
|
|
14
|
+
const rawImports = WebAssembly.Module.imports(module);
|
|
15
|
+
const exports = rawExports.map((e) => ({
|
|
16
|
+
name: e.name,
|
|
17
|
+
kind: e.kind,
|
|
18
|
+
}));
|
|
19
|
+
const imports = rawImports.map((i) => ({
|
|
20
|
+
module: i.module,
|
|
21
|
+
name: i.name,
|
|
22
|
+
kind: i.kind,
|
|
23
|
+
}));
|
|
24
|
+
const requiredModulesSet = new Set();
|
|
25
|
+
for (let i = 0; i < imports.length; i++) {
|
|
26
|
+
requiredModulesSet.add(imports[i].module);
|
|
27
|
+
}
|
|
28
|
+
const declaredMemory = exports.some((e) => e.kind === "memory") || imports.some((i) => i.kind === "memory");
|
|
29
|
+
return {
|
|
30
|
+
exports,
|
|
31
|
+
imports,
|
|
32
|
+
declaredMemory,
|
|
33
|
+
requiredModules: Array.from(requiredModulesSet),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Validates binary byte sequence against the WebAssembly specification.
|
|
38
|
+
*/
|
|
39
|
+
static validate(bytes) {
|
|
40
|
+
return WebAssembly.validate(bytes);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=module-inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-inspector.js","sourceRoot":"","sources":["../../../awasm/runtime/module-inspector.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,oCAAoC;AACpC,mEAAmE;AAuBnE;;;GAGG;AACH,MAAM,OAAO,eAAe;IACxB;;OAEG;IACI,MAAM,CAAC,OAAO,CAAC,MAA0B;QAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,OAAO,GAA6B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAsB;SACjC,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAA6B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAsB;SACjC,CAAC,CAAC,CAAC;QAEJ,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAE5G,OAAO;YACH,OAAO;YACP,OAAO;YACP,cAAc;YACd,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;SAClD,CAAC;IACN,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,QAAQ,CAAC,KAAmB;QACtC,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebAssembly binary acquisition and compilation coordinator.
|
|
3
|
+
* Supports streaming compilation for Response streams and optional IndexedDB bytecode caching.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ModuleLoader {
|
|
6
|
+
/**
|
|
7
|
+
* Compiles a WebAssembly module from streaming network responses or in-memory buffers.
|
|
8
|
+
*/
|
|
9
|
+
static compile(source: BufferSource | Response | Promise<Response>): Promise<WebAssembly.Module>;
|
|
10
|
+
/**
|
|
11
|
+
* Compiles a WebAssembly module with persistent IndexedDB bytecode caching across sessions.
|
|
12
|
+
*/
|
|
13
|
+
static compileCached(key: string, sourceProvider: () => Promise<BufferSource | Response>): Promise<WebAssembly.Module>;
|
|
14
|
+
private static readFromCache;
|
|
15
|
+
private static writeToCache;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=module-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-loader.d.ts","sourceRoot":"","sources":["../../../awasm/runtime/module-loader.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,YAAY;IACrB;;OAEG;WACiB,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;IAqB7G;;OAEG;WACiB,aAAa,CAC7B,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,GACvD,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;mBAcT,aAAa;mBA4Bb,YAAY;CAyBpC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awasm - Runtime: ModuleLoader
|
|
3
|
+
// ================================================================
|
|
4
|
+
/**
|
|
5
|
+
* WebAssembly binary acquisition and compilation coordinator.
|
|
6
|
+
* Supports streaming compilation for Response streams and optional IndexedDB bytecode caching.
|
|
7
|
+
*/
|
|
8
|
+
export class ModuleLoader {
|
|
9
|
+
/**
|
|
10
|
+
* Compiles a WebAssembly module from streaming network responses or in-memory buffers.
|
|
11
|
+
*/
|
|
12
|
+
static async compile(source) {
|
|
13
|
+
if (typeof Response !== "undefined" && (source instanceof Response || source instanceof Promise)) {
|
|
14
|
+
if (typeof WebAssembly.compileStreaming === "function") {
|
|
15
|
+
try {
|
|
16
|
+
return await WebAssembly.compileStreaming(source);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Fall back to buffer extraction on streaming failure (e.g. content-type mismatch)
|
|
20
|
+
const response = await source;
|
|
21
|
+
const buffer = await response.arrayBuffer();
|
|
22
|
+
return await WebAssembly.compile(buffer);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const response = await source;
|
|
27
|
+
const buffer = await response.arrayBuffer();
|
|
28
|
+
return await WebAssembly.compile(buffer);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return await WebAssembly.compile(source);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Compiles a WebAssembly module with persistent IndexedDB bytecode caching across sessions.
|
|
35
|
+
*/
|
|
36
|
+
static async compileCached(key, sourceProvider) {
|
|
37
|
+
const cached = await this.readFromCache(key);
|
|
38
|
+
if (cached) {
|
|
39
|
+
return cached;
|
|
40
|
+
}
|
|
41
|
+
const source = await sourceProvider();
|
|
42
|
+
const compiled = await this.compile(source);
|
|
43
|
+
this.writeToCache(key, compiled).catch(() => { });
|
|
44
|
+
return compiled;
|
|
45
|
+
}
|
|
46
|
+
static async readFromCache(key) {
|
|
47
|
+
if (typeof indexedDB === "undefined") {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return new Promise((resolve) => {
|
|
51
|
+
try {
|
|
52
|
+
const req = indexedDB.open("awasm_bytecode_cache", 1);
|
|
53
|
+
req.onupgradeneeded = () => {
|
|
54
|
+
req.result.createObjectStore("modules");
|
|
55
|
+
};
|
|
56
|
+
req.onsuccess = () => {
|
|
57
|
+
const db = req.result;
|
|
58
|
+
const tx = db.transaction("modules", "readonly");
|
|
59
|
+
const store = tx.objectStore("modules");
|
|
60
|
+
const getReq = store.get(key);
|
|
61
|
+
getReq.onsuccess = () => {
|
|
62
|
+
resolve(getReq.result ?? null);
|
|
63
|
+
};
|
|
64
|
+
getReq.onerror = () => resolve(null);
|
|
65
|
+
};
|
|
66
|
+
req.onerror = () => resolve(null);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
resolve(null);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
static async writeToCache(key, module) {
|
|
74
|
+
if (typeof indexedDB === "undefined") {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
return new Promise((resolve, reject) => {
|
|
78
|
+
try {
|
|
79
|
+
const req = indexedDB.open("awasm_bytecode_cache", 1);
|
|
80
|
+
req.onupgradeneeded = () => {
|
|
81
|
+
req.result.createObjectStore("modules");
|
|
82
|
+
};
|
|
83
|
+
req.onsuccess = () => {
|
|
84
|
+
const db = req.result;
|
|
85
|
+
const tx = db.transaction("modules", "readwrite");
|
|
86
|
+
const store = tx.objectStore("modules");
|
|
87
|
+
store.put(module, key);
|
|
88
|
+
tx.oncomplete = () => resolve();
|
|
89
|
+
tx.onerror = () => reject(tx.error);
|
|
90
|
+
};
|
|
91
|
+
req.onerror = () => reject(req.error);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
reject(err);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=module-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-loader.js","sourceRoot":"","sources":["../../../awasm/runtime/module-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { WasmMemory } from "../memory/wasm-memory.js";
|
|
2
|
+
/**
|
|
3
|
+
* Managed WebAssembly instance binding runtime exports and linear memory.
|
|
4
|
+
* Exposes native instance handles alongside managed invocations and memory references.
|
|
5
|
+
*/
|
|
6
|
+
export declare class WasmInstance<TExports extends Record<string, any> = Record<string, any>> {
|
|
7
|
+
private readonly _module;
|
|
8
|
+
private readonly _instance;
|
|
9
|
+
private readonly _memory;
|
|
10
|
+
private readonly _exports;
|
|
11
|
+
constructor(module: WebAssembly.Module, instance: WebAssembly.Instance, memory: WasmMemory);
|
|
12
|
+
/**
|
|
13
|
+
* Asynchronously instantiates a WebAssembly module with imports, automatically discovering exported memory.
|
|
14
|
+
*/
|
|
15
|
+
static instantiate<T extends Record<string, any> = Record<string, any>>(module: WebAssembly.Module, imports?: WebAssembly.Imports, providedMemory?: WasmMemory): Promise<WasmInstance<T>>;
|
|
16
|
+
/**
|
|
17
|
+
* Invokes an exported guest function by name.
|
|
18
|
+
*/
|
|
19
|
+
call<TResult = number>(name: string, ...args: number[]): TResult;
|
|
20
|
+
get exports(): TExports;
|
|
21
|
+
get handle(): WebAssembly.Instance;
|
|
22
|
+
get memory(): WasmMemory;
|
|
23
|
+
get module(): WebAssembly.Module;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=wasm-instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm-instance.d.ts","sourceRoot":"","sources":["../../../awasm/runtime/wasm-instance.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD;;;GAGG;AACH,qBAAa,YAAY,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAChF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU;IAO1F;;OAEG;WACiB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/E,MAAM,EAAE,WAAW,CAAC,MAAM,EAC1B,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,EAC7B,cAAc,CAAC,EAAE,UAAU,GAC5B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAgB3B;;OAEG;IACI,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO;IAQvE,IAAW,OAAO,IAAI,QAAQ,CAE7B;IAED,IAAW,MAAM,IAAI,WAAW,CAAC,QAAQ,CAExC;IAED,IAAW,MAAM,IAAI,UAAU,CAE9B;IAED,IAAW,MAAM,IAAI,WAAW,CAAC,MAAM,CAEtC;CACJ"}
|