Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
This commit is contained in:
0
npm/packages/rvf-solver/pkg/.gitkeep
Normal file
0
npm/packages/rvf-solver/pkg/.gitkeep
Normal file
2
npm/packages/rvf-solver/pkg/.npmignore
Normal file
2
npm/packages/rvf-solver/pkg/.npmignore
Normal file
@@ -0,0 +1,2 @@
|
||||
# Allow all files to be included in npm package
|
||||
# (overrides .gitignore which blocks everything)
|
||||
48
npm/packages/rvf-solver/pkg/rvf_solver.d.ts
vendored
Normal file
48
npm/packages/rvf-solver/pkg/rvf_solver.d.ts
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Type declarations for the RVF Solver WASM module exports.
|
||||
*/
|
||||
|
||||
export interface RvfSolverWasmExports {
|
||||
memory: WebAssembly.Memory;
|
||||
|
||||
// Memory management
|
||||
rvf_solver_alloc(size: number): number;
|
||||
rvf_solver_free(ptr: number, size: number): void;
|
||||
|
||||
// Lifecycle
|
||||
rvf_solver_create(): number;
|
||||
rvf_solver_destroy(handle: number): number;
|
||||
|
||||
// Training
|
||||
rvf_solver_train(
|
||||
handle: number,
|
||||
count: number,
|
||||
min_diff: number,
|
||||
max_diff: number,
|
||||
seed_lo: number,
|
||||
seed_hi: number,
|
||||
): number;
|
||||
|
||||
// Acceptance testing
|
||||
rvf_solver_acceptance(
|
||||
handle: number,
|
||||
holdout: number,
|
||||
training: number,
|
||||
cycles: number,
|
||||
budget: number,
|
||||
seed_lo: number,
|
||||
seed_hi: number,
|
||||
): number;
|
||||
|
||||
// Result reads
|
||||
rvf_solver_result_len(handle: number): number;
|
||||
rvf_solver_result_read(handle: number, out_ptr: number): number;
|
||||
rvf_solver_policy_len(handle: number): number;
|
||||
rvf_solver_policy_read(handle: number, out_ptr: number): number;
|
||||
rvf_solver_witness_len(handle: number): number;
|
||||
rvf_solver_witness_read(handle: number, out_ptr: number): number;
|
||||
}
|
||||
|
||||
export default function init(
|
||||
input?: ArrayBuffer | Uint8Array | WebAssembly.Module | string,
|
||||
): Promise<RvfSolverWasmExports>;
|
||||
62
npm/packages/rvf-solver/pkg/rvf_solver.js
Normal file
62
npm/packages/rvf-solver/pkg/rvf_solver.js
Normal file
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* @ruvector/rvf-solver — JS glue for the RVF Solver WASM module.
|
||||
*
|
||||
* Loads the .wasm binary and re-exports all C-ABI functions plus the
|
||||
* WASM linear memory object.
|
||||
*
|
||||
* Works in Node.js (CJS) and browsers (via bundler).
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var wasmInstance = null;
|
||||
|
||||
var _isNode = typeof process !== 'undefined' &&
|
||||
typeof process.versions !== 'undefined' &&
|
||||
typeof process.versions.node === 'string';
|
||||
|
||||
/**
|
||||
* Initialize the WASM module.
|
||||
* Returns the exports object with all rvf_solver_* functions and `memory`.
|
||||
*
|
||||
* @param {ArrayBuffer|BufferSource|WebAssembly.Module|string} [input]
|
||||
* Optional pre-loaded bytes, Module, or file path override.
|
||||
*/
|
||||
async function init(input) {
|
||||
if (wasmInstance) return wasmInstance;
|
||||
|
||||
var wasmBytes;
|
||||
|
||||
if (input instanceof ArrayBuffer || ArrayBuffer.isView(input)) {
|
||||
wasmBytes = input;
|
||||
} else if (typeof WebAssembly !== 'undefined' && input instanceof WebAssembly.Module) {
|
||||
var inst = await WebAssembly.instantiate(input, {});
|
||||
wasmInstance = inst.exports;
|
||||
return wasmInstance;
|
||||
} else if (_isNode) {
|
||||
// Node.js: use fs.readFileSync with __dirname (CJS) or require.resolve fallback
|
||||
var fs = require('node:fs');
|
||||
var path = require('node:path');
|
||||
var wasmPath;
|
||||
if (typeof input === 'string') {
|
||||
wasmPath = input;
|
||||
} else {
|
||||
// __dirname is always available in CJS (no import.meta needed)
|
||||
wasmPath = path.join(__dirname, 'rvf_solver_bg.wasm');
|
||||
}
|
||||
wasmBytes = fs.readFileSync(wasmPath);
|
||||
} else {
|
||||
// Browser: caller must provide bytes or use a bundler that handles .wasm imports
|
||||
throw new Error(
|
||||
'rvf_solver: browser environment detected but no WASM bytes provided. ' +
|
||||
'Pass an ArrayBuffer or WebAssembly.Module to init(), or use a bundler.'
|
||||
);
|
||||
}
|
||||
|
||||
var compiled = await WebAssembly.instantiate(wasmBytes, {});
|
||||
wasmInstance = compiled.instance.exports;
|
||||
return wasmInstance;
|
||||
}
|
||||
|
||||
// CJS export
|
||||
init.default = init;
|
||||
module.exports = init;
|
||||
BIN
npm/packages/rvf-solver/pkg/rvf_solver_bg.wasm
Normal file
BIN
npm/packages/rvf-solver/pkg/rvf_solver_bg.wasm
Normal file
Binary file not shown.
Reference in New Issue
Block a user