@vulfram/transport-wasm 0.5.5-alpha
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/vulfram_core.d.ts +94 -0
- package/lib/vulfram_core.js +1752 -0
- package/lib/vulfram_core_bg.wasm +0 -0
- package/lib/vulfram_core_bg.wasm.d.ts +21 -0
- package/package.json +18 -0
- package/src/index.ts +85 -0
- package/tsconfig.json +29 -0
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
export const memory: WebAssembly.Memory;
|
|
4
|
+
export const __wbg_bufferresult_free: (a: number, b: number) => void;
|
|
5
|
+
export const bufferresult_buffer: (a: number, b: number) => void;
|
|
6
|
+
export const bufferresult_result: (a: number) => number;
|
|
7
|
+
export const vulfram_dispose: () => number;
|
|
8
|
+
export const vulfram_get_profiling: () => number;
|
|
9
|
+
export const vulfram_init: () => number;
|
|
10
|
+
export const vulfram_receive_events: () => number;
|
|
11
|
+
export const vulfram_receive_queue: () => number;
|
|
12
|
+
export const vulfram_send_queue: (a: number, b: number) => number;
|
|
13
|
+
export const vulfram_tick: (a: number, b: number) => number;
|
|
14
|
+
export const vulfram_upload_buffer: (a: bigint, b: number, c: number, d: number) => number;
|
|
15
|
+
export const __wasm_bindgen_func_elem_842: (a: number, b: number, c: number) => void;
|
|
16
|
+
export const __wasm_bindgen_func_elem_841: (a: number, b: number) => void;
|
|
17
|
+
export const __wbindgen_export: (a: number, b: number) => number;
|
|
18
|
+
export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
|
|
19
|
+
export const __wbindgen_export3: (a: number) => void;
|
|
20
|
+
export const __wbindgen_add_to_stack_pointer: (a: number) => number;
|
|
21
|
+
export const __wbindgen_export4: (a: number, b: number, c: number) => void;
|
package/package.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vulfram/transport-wasm",
|
|
3
|
+
"version": "0.5.5-alpha",
|
|
4
|
+
"module": "src/index.ts",
|
|
5
|
+
"main": "src/index.ts",
|
|
6
|
+
"types": "src/index.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"@vulfram/transport-types": "^0.2.1",
|
|
10
|
+
"buffer": "^6.0.3",
|
|
11
|
+
"glob": "^13.0.0",
|
|
12
|
+
"msgpackr": "^1.11.8"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@types/bun": "^1.3.6",
|
|
16
|
+
"typescript": "^5.9.3"
|
|
17
|
+
}
|
|
18
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
EngineTransport,
|
|
3
|
+
EngineTransportFactory,
|
|
4
|
+
} from '@vulfram/transport-types';
|
|
5
|
+
import initWasm, {
|
|
6
|
+
vulfram_dispose,
|
|
7
|
+
vulfram_get_profiling,
|
|
8
|
+
vulfram_init,
|
|
9
|
+
vulfram_receive_events,
|
|
10
|
+
vulfram_receive_queue,
|
|
11
|
+
vulfram_send_queue,
|
|
12
|
+
vulfram_tick,
|
|
13
|
+
vulfram_upload_buffer,
|
|
14
|
+
type BufferResult as WasmBufferResult,
|
|
15
|
+
type InitInput,
|
|
16
|
+
} from '../lib/vulfram_core.js';
|
|
17
|
+
import { Buffer } from 'buffer';
|
|
18
|
+
|
|
19
|
+
let initialized = false;
|
|
20
|
+
|
|
21
|
+
export async function initWasmTransport(
|
|
22
|
+
moduleOrPath?: InitInput | Promise<InitInput>,
|
|
23
|
+
): Promise<void> {
|
|
24
|
+
if (initialized) return;
|
|
25
|
+
await initWasm(moduleOrPath as InitInput | Promise<InitInput>);
|
|
26
|
+
initialized = true;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function ensureInitialized(): void {
|
|
30
|
+
if (!initialized) {
|
|
31
|
+
throw new Error(
|
|
32
|
+
'WASM transport not initialized. Call initWasmTransport() first.',
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function unwrapBufferResult(result: WasmBufferResult): {
|
|
38
|
+
buffer: Buffer;
|
|
39
|
+
result: number;
|
|
40
|
+
} {
|
|
41
|
+
const buffer = Buffer.from(result.buffer);
|
|
42
|
+
const code = result.result;
|
|
43
|
+
result.free();
|
|
44
|
+
return { buffer, result: code };
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const transportImpl: EngineTransport = {
|
|
48
|
+
vulframInit: () => {
|
|
49
|
+
ensureInitialized();
|
|
50
|
+
return vulfram_init();
|
|
51
|
+
},
|
|
52
|
+
vulframDispose: () => {
|
|
53
|
+
ensureInitialized();
|
|
54
|
+
return vulfram_dispose();
|
|
55
|
+
},
|
|
56
|
+
vulframSendQueue: (buffer) => {
|
|
57
|
+
ensureInitialized();
|
|
58
|
+
return vulfram_send_queue(buffer);
|
|
59
|
+
},
|
|
60
|
+
vulframReceiveQueue: () => {
|
|
61
|
+
ensureInitialized();
|
|
62
|
+
return unwrapBufferResult(vulfram_receive_queue());
|
|
63
|
+
},
|
|
64
|
+
vulframReceiveEvents: () => {
|
|
65
|
+
ensureInitialized();
|
|
66
|
+
return unwrapBufferResult(vulfram_receive_events());
|
|
67
|
+
},
|
|
68
|
+
vulframUploadBuffer: (id, uploadType, buffer) => {
|
|
69
|
+
ensureInitialized();
|
|
70
|
+
return vulfram_upload_buffer(BigInt(id), uploadType, buffer);
|
|
71
|
+
},
|
|
72
|
+
vulframTick: (timeMs, deltaMs) => {
|
|
73
|
+
ensureInitialized();
|
|
74
|
+
return vulfram_tick(timeMs, deltaMs);
|
|
75
|
+
},
|
|
76
|
+
vulframGetProfiling: () => {
|
|
77
|
+
ensureInitialized();
|
|
78
|
+
return unwrapBufferResult(vulfram_get_profiling());
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export const transportWasm: EngineTransportFactory = () => {
|
|
83
|
+
ensureInitialized();
|
|
84
|
+
return transportImpl;
|
|
85
|
+
};
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
// Environment setup & latest features
|
|
4
|
+
"lib": ["ESNext"],
|
|
5
|
+
"target": "ESNext",
|
|
6
|
+
"module": "Preserve",
|
|
7
|
+
"moduleDetection": "force",
|
|
8
|
+
"jsx": "react-jsx",
|
|
9
|
+
"allowJs": true,
|
|
10
|
+
|
|
11
|
+
// Bundler mode
|
|
12
|
+
"moduleResolution": "bundler",
|
|
13
|
+
"allowImportingTsExtensions": true,
|
|
14
|
+
"verbatimModuleSyntax": true,
|
|
15
|
+
"noEmit": true,
|
|
16
|
+
|
|
17
|
+
// Best practices
|
|
18
|
+
"strict": true,
|
|
19
|
+
"skipLibCheck": true,
|
|
20
|
+
"noFallthroughCasesInSwitch": true,
|
|
21
|
+
"noUncheckedIndexedAccess": true,
|
|
22
|
+
"noImplicitOverride": true,
|
|
23
|
+
|
|
24
|
+
// Some stricter flags (disabled by default)
|
|
25
|
+
"noUnusedLocals": false,
|
|
26
|
+
"noUnusedParameters": false,
|
|
27
|
+
"noPropertyAccessFromIndexSignature": false
|
|
28
|
+
}
|
|
29
|
+
}
|