diff --git a/packages/index.js b/packages/index.js index 6004b89e..8781ea87 100644 --- a/packages/index.js +++ b/packages/index.js @@ -4,262 +4,285 @@ /* auto-generated by NAPI-RS */ -const { existsSync, readFileSync } = require('fs') -const { join } = require('path') +const { existsSync, readFileSync } = require("fs"); +const { join } = require("path"); -const { platform, arch } = process +const { platform, arch } = process; -let nativeBinding = null -let localFileExisted = false -let loadError = null +let nativeBinding = null; +let localFileExisted = false; +let loadError = null; function isMusl() { - // For Node 10 - if (!process.report || typeof process.report.getReport !== 'function') { - try { - const lddPath = require('child_process').execSync('which ldd').toString().trim() - return readFileSync(lddPath, 'utf8').includes('musl') - } catch (e) { - return true - } - } else { - const { glibcVersionRuntime } = process.report.getReport().header - return !glibcVersionRuntime - } + // For Node 10 + if (!process.report || typeof process.report.getReport !== "function") { + try { + const lddPath = require("child_process") + .execSync("which ldd") + .toString() + .trim(); + return readFileSync(lddPath, "utf8").includes("musl"); + } catch (e) { + return true; + } + } else { + const { glibcVersionRuntime } = process.report.getReport().header; + return !glibcVersionRuntime; + } } switch (platform) { - case 'android': - switch (arch) { - case 'arm64': - localFileExisted = existsSync(join(__dirname, 'native-utils.android-arm64.node')) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.android-arm64.node') - } else { - nativeBinding = require('native-utils-android-arm64') - } - } catch (e) { - loadError = e - } - break - case 'arm': - localFileExisted = existsSync(join(__dirname, 'native-utils.android-arm-eabi.node')) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.android-arm-eabi.node') - } else { - nativeBinding = require('native-utils-android-arm-eabi') - } - } catch (e) { - loadError = e - } - break - default: - throw new Error(`Unsupported architecture on Android ${arch}`) - } - break - case 'win32': - switch (arch) { - case 'x64': - localFileExisted = existsSync( - join(__dirname, 'native-utils.win32-x64-msvc.node') - ) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.win32-x64-msvc.node') - } else { - nativeBinding = require('native-utils-win32-x64-msvc') - } - } catch (e) { - loadError = e - } - break - case 'ia32': - localFileExisted = existsSync( - join(__dirname, 'native-utils.win32-ia32-msvc.node') - ) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.win32-ia32-msvc.node') - } else { - nativeBinding = require('native-utils-win32-ia32-msvc') - } - } catch (e) { - loadError = e - } - break - case 'arm64': - localFileExisted = existsSync( - join(__dirname, 'native-utils.win32-arm64-msvc.node') - ) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.win32-arm64-msvc.node') - } else { - nativeBinding = require('native-utils-win32-arm64-msvc') - } - } catch (e) { - loadError = e - } - break - default: - throw new Error(`Unsupported architecture on Windows: ${arch}`) - } - break - case 'darwin': - localFileExisted = existsSync(join(__dirname, 'native-utils.darwin-universal.node')) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.darwin-universal.node') - } else { - nativeBinding = require('native-utils-darwin-universal') - } - break - } catch {} - switch (arch) { - case 'x64': - localFileExisted = existsSync(join(__dirname, 'native-utils.darwin-x64.node')) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.darwin-x64.node') - } else { - nativeBinding = require('native-utils-darwin-x64') - } - } catch (e) { - loadError = e - } - break - case 'arm64': - localFileExisted = existsSync( - join(__dirname, 'native-utils.darwin-arm64.node') - ) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.darwin-arm64.node') - } else { - nativeBinding = require('native-utils-darwin-arm64') - } - } catch (e) { - loadError = e - } - break - default: - throw new Error(`Unsupported architecture on macOS: ${arch}`) - } - break - case 'freebsd': - if (arch !== 'x64') { - throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) - } - localFileExisted = existsSync(join(__dirname, 'native-utils.freebsd-x64.node')) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.freebsd-x64.node') - } else { - nativeBinding = require('native-utils-freebsd-x64') - } - } catch (e) { - loadError = e - } - break - case 'linux': - switch (arch) { - case 'x64': - if (isMusl()) { - localFileExisted = existsSync( - join(__dirname, 'native-utils.linux-x64-musl.node') - ) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.linux-x64-musl.node') - } else { - nativeBinding = require('native-utils-linux-x64-musl') - } - } catch (e) { - loadError = e - } - } else { - localFileExisted = existsSync( - join(__dirname, 'native-utils.linux-x64-gnu.node') - ) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.linux-x64-gnu.node') - } else { - nativeBinding = require('native-utils-linux-x64-gnu') - } - } catch (e) { - loadError = e - } - } - break - case 'arm64': - if (isMusl()) { - localFileExisted = existsSync( - join(__dirname, 'native-utils.linux-arm64-musl.node') - ) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.linux-arm64-musl.node') - } else { - nativeBinding = require('native-utils-linux-arm64-musl') - } - } catch (e) { - loadError = e - } - } else { - localFileExisted = existsSync( - join(__dirname, 'native-utils.linux-arm64-gnu.node') - ) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.linux-arm64-gnu.node') - } else { - nativeBinding = require('native-utils-linux-arm64-gnu') - } - } catch (e) { - loadError = e - } - } - break - case 'arm': - localFileExisted = existsSync( - join(__dirname, 'native-utils.linux-arm-gnueabihf.node') - ) - try { - if (localFileExisted) { - nativeBinding = require('./native-utils.linux-arm-gnueabihf.node') - } else { - nativeBinding = require('native-utils-linux-arm-gnueabihf') - } - } catch (e) { - loadError = e - } - break - default: - throw new Error(`Unsupported architecture on Linux: ${arch}`) - } - break - default: - throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) + case "android": + switch (arch) { + case "arm64": + localFileExisted = existsSync( + join(__dirname, "native-utils.android-arm64.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.android-arm64.node"); + } else { + nativeBinding = require("native-utils-android-arm64"); + } + } catch (e) { + loadError = e; + } + break; + case "arm": + localFileExisted = existsSync( + join(__dirname, "native-utils.android-arm-eabi.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.android-arm-eabi.node"); + } else { + nativeBinding = require("native-utils-android-arm-eabi"); + } + } catch (e) { + loadError = e; + } + break; + default: + throw new Error(`Unsupported architecture on Android ${arch}`); + } + break; + case "win32": + switch (arch) { + case "x64": + localFileExisted = existsSync( + join(__dirname, "native-utils.win32-x64-msvc.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.win32-x64-msvc.node"); + } else { + nativeBinding = require("native-utils-win32-x64-msvc"); + } + } catch (e) { + loadError = e; + } + break; + case "ia32": + localFileExisted = existsSync( + join(__dirname, "native-utils.win32-ia32-msvc.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.win32-ia32-msvc.node"); + } else { + nativeBinding = require("native-utils-win32-ia32-msvc"); + } + } catch (e) { + loadError = e; + } + break; + case "arm64": + localFileExisted = existsSync( + join(__dirname, "native-utils.win32-arm64-msvc.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.win32-arm64-msvc.node"); + } else { + nativeBinding = require("native-utils-win32-arm64-msvc"); + } + } catch (e) { + loadError = e; + } + break; + default: + throw new Error(`Unsupported architecture on Windows: ${arch}`); + } + break; + case "darwin": + localFileExisted = existsSync( + join(__dirname, "native-utils.darwin-universal.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.darwin-universal.node"); + } else { + nativeBinding = require("native-utils-darwin-universal"); + } + break; + } catch {} + switch (arch) { + case "x64": + localFileExisted = existsSync( + join(__dirname, "native-utils.darwin-x64.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.darwin-x64.node"); + } else { + nativeBinding = require("native-utils-darwin-x64"); + } + } catch (e) { + loadError = e; + } + break; + case "arm64": + localFileExisted = existsSync( + join(__dirname, "native-utils.darwin-arm64.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.darwin-arm64.node"); + } else { + nativeBinding = require("native-utils-darwin-arm64"); + } + } catch (e) { + loadError = e; + } + break; + default: + throw new Error(`Unsupported architecture on macOS: ${arch}`); + } + break; + case "freebsd": + if (arch !== "x64") { + throw new Error(`Unsupported architecture on FreeBSD: ${arch}`); + } + localFileExisted = existsSync( + join(__dirname, "native-utils.freebsd-x64.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.freebsd-x64.node"); + } else { + nativeBinding = require("native-utils-freebsd-x64"); + } + } catch (e) { + loadError = e; + } + break; + case "linux": + switch (arch) { + case "x64": + if (isMusl()) { + localFileExisted = existsSync( + join(__dirname, "native-utils.linux-x64-musl.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.linux-x64-musl.node"); + } else { + nativeBinding = require("native-utils-linux-x64-musl"); + } + } catch (e) { + loadError = e; + } + } else { + localFileExisted = existsSync( + join(__dirname, "native-utils.linux-x64-gnu.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.linux-x64-gnu.node"); + } else { + nativeBinding = require("native-utils-linux-x64-gnu"); + } + } catch (e) { + loadError = e; + } + } + break; + case "arm64": + if (isMusl()) { + localFileExisted = existsSync( + join(__dirname, "native-utils.linux-arm64-musl.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.linux-arm64-musl.node"); + } else { + nativeBinding = require("native-utils-linux-arm64-musl"); + } + } catch (e) { + loadError = e; + } + } else { + localFileExisted = existsSync( + join(__dirname, "native-utils.linux-arm64-gnu.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.linux-arm64-gnu.node"); + } else { + nativeBinding = require("native-utils-linux-arm64-gnu"); + } + } catch (e) { + loadError = e; + } + } + break; + case "arm": + localFileExisted = existsSync( + join(__dirname, "native-utils.linux-arm-gnueabihf.node"), + ); + try { + if (localFileExisted) { + nativeBinding = require("./native-utils.linux-arm-gnueabihf.node"); + } else { + nativeBinding = require("native-utils-linux-arm-gnueabihf"); + } + } catch (e) { + loadError = e; + } + break; + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`); + } + break; + default: + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`); } if (!nativeBinding) { - if (loadError) { - throw loadError - } - throw new Error(`Failed to load native binding`) + if (loadError) { + throw loadError; + } + throw new Error(`Failed to load native binding`); } -const { nativeRandomStr, IdConvertType, convertId, nativeGetTimestamp, nativeCreateId, nativeInitIdGenerator, nativePackAntennaById, NativeAntennaSrc, nativeInitDatabase } = nativeBinding +const { + nativeRandomStr, + IdConvertType, + convertId, + nativeGetTimestamp, + nativeCreateId, + nativeInitIdGenerator, + nativePackAntennaById, + NativeAntennaSrc, + nativeInitDatabase, +} = nativeBinding; -module.exports.nativeRandomStr = nativeRandomStr -module.exports.IdConvertType = IdConvertType -module.exports.convertId = convertId -module.exports.nativeGetTimestamp = nativeGetTimestamp -module.exports.nativeCreateId = nativeCreateId -module.exports.nativeInitIdGenerator = nativeInitIdGenerator -module.exports.nativePackAntennaById = nativePackAntennaById -module.exports.NativeAntennaSrc = NativeAntennaSrc -module.exports.nativeInitDatabase = nativeInitDatabase +module.exports.nativeRandomStr = nativeRandomStr; +module.exports.IdConvertType = IdConvertType; +module.exports.convertId = convertId; +module.exports.nativeGetTimestamp = nativeGetTimestamp; +module.exports.nativeCreateId = nativeCreateId; +module.exports.nativeInitIdGenerator = nativeInitIdGenerator; +module.exports.nativePackAntennaById = nativePackAntennaById; +module.exports.NativeAntennaSrc = NativeAntennaSrc; +module.exports.nativeInitDatabase = nativeInitDatabase;