git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
77 lines
2.5 KiB
JavaScript
77 lines
2.5 KiB
JavaScript
"use strict";
|
|
/**
|
|
* Native bindings loader for RuvLLM
|
|
*
|
|
* Automatically loads the correct native binary for the current platform.
|
|
*/
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.getNativeModule = getNativeModule;
|
|
exports.version = version;
|
|
exports.hasSimdSupport = hasSimdSupport;
|
|
const path_1 = require("path");
|
|
// Try to load the native module
|
|
let nativeModule = null;
|
|
// Platform-specific package names
|
|
const PLATFORM_PACKAGES = {
|
|
'darwin-x64': '@ruvector/ruvllm-darwin-x64',
|
|
'darwin-arm64': '@ruvector/ruvllm-darwin-arm64',
|
|
'linux-x64': '@ruvector/ruvllm-linux-x64-gnu',
|
|
'linux-arm64': '@ruvector/ruvllm-linux-arm64-gnu',
|
|
'win32-x64': '@ruvector/ruvllm-win32-x64-msvc',
|
|
};
|
|
function getPlatformKey() {
|
|
const platform = process.platform;
|
|
const arch = process.arch;
|
|
return `${platform}-${arch}`;
|
|
}
|
|
function loadNativeModule() {
|
|
if (nativeModule) {
|
|
return nativeModule;
|
|
}
|
|
const platformKey = getPlatformKey();
|
|
const packageName = PLATFORM_PACKAGES[platformKey];
|
|
if (!packageName) {
|
|
// Silently fail - JS fallback will be used
|
|
return null;
|
|
}
|
|
// Try loading from optional dependencies
|
|
const attempts = [
|
|
// Try the platform-specific package
|
|
() => require(packageName),
|
|
// Try loading from local .node file (CJS build)
|
|
() => require((0, path_1.join)(__dirname, '..', '..', 'ruvllm.node')),
|
|
// Try loading from local .node file (root)
|
|
() => require((0, path_1.join)(__dirname, '..', 'ruvllm.node')),
|
|
];
|
|
for (const attempt of attempts) {
|
|
try {
|
|
const raw = attempt();
|
|
// Normalize: native exports RuvLlmEngine, we expose as RuvLLMEngine
|
|
nativeModule = {
|
|
RuvLLMEngine: raw.RuvLLMEngine ?? raw.RuvLlmEngine,
|
|
SimdOperations: raw.SimdOperations,
|
|
version: raw.version,
|
|
hasSimdSupport: raw.hasSimdSupport,
|
|
};
|
|
return nativeModule;
|
|
}
|
|
catch {
|
|
// Continue to next attempt
|
|
}
|
|
}
|
|
// Silently fall back to JS implementation
|
|
return null;
|
|
}
|
|
// Export functions to get native bindings
|
|
function getNativeModule() {
|
|
return loadNativeModule();
|
|
}
|
|
function version() {
|
|
const mod = loadNativeModule();
|
|
return mod?.version() ?? '0.1.0-js';
|
|
}
|
|
function hasSimdSupport() {
|
|
const mod = loadNativeModule();
|
|
return mod?.hasSimdSupport() ?? false;
|
|
}
|
|
//# sourceMappingURL=native.js.map
|