From c9f5570b20385a4bd13192ae9816b6dbdde6a711 Mon Sep 17 00:00:00 2001 From: Abdulhaq Date: Thu, 2 Jul 2026 08:10:57 +0300 Subject: [PATCH] packages/cobalt-rs-hls: add cross-platform loading logic --- packages/cobalt-rs-hls/index.js | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/packages/cobalt-rs-hls/index.js b/packages/cobalt-rs-hls/index.js index 7bf24332..a7cc4ad8 100644 --- a/packages/cobalt-rs-hls/index.js +++ b/packages/cobalt-rs-hls/index.js @@ -1,7 +1,25 @@ import { createRequire } from 'module'; const require = createRequire(import.meta.url); -// we load the compiled native binary directly for now -const { HlsParser } = require('./cobalt-rs-hls.darwin-arm64.node'); +let nativeBinding = null; +const { platform, arch } = process; -export { HlsParser }; +try { + if (platform === 'darwin' && arch === 'arm64') { + nativeBinding = require('./cobalt-rs-hls.darwin-arm64.node'); + } else if (platform === 'darwin' && arch === 'x64') { + nativeBinding = require('./cobalt-rs-hls.darwin-x64.node'); + } else if (platform === 'linux' && arch === 'x64') { + nativeBinding = require('./cobalt-rs-hls.linux-x64-gnu.node'); + } else if (platform === 'linux' && arch === 'arm64') { + nativeBinding = require('./cobalt-rs-hls.linux-arm64-gnu.node'); + } else if (platform === 'win32' && arch === 'x64') { + nativeBinding = require('./cobalt-rs-hls.win32-x64-msvc.node'); + } else { + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`); + } +} catch (e) { + throw new Error(`Failed to load native binding for ${platform}-${arch}: ${e.message}`); +} + +export const HlsParser = nativeBinding.HlsParser;