1
0
Fork 1
mirror of https://example.com synced 2024-11-23 08:16:40 +09:00
firefish/neko/index.js

289 lines
7.1 KiB
JavaScript
Raw Normal View History

2023-07-22 20:25:52 +09:00
/* tslint:disable */
/* eslint-disable */
/* prettier-ignore */
/* auto-generated by NAPI-RS */
2023-09-17 09:17:59 +09:00
const { existsSync, readFileSync } = require("fs");
const { join } = require("path");
2023-07-22 20:25:52 +09:00
2023-09-17 09:17:59 +09:00
const { platform, arch } = process;
2023-07-22 20:25:52 +09:00
2023-09-17 09:17:59 +09:00
let nativeBinding = null;
let localFileExisted = false;
let loadError = null;
2023-07-22 20:25:52 +09:00
function isMusl() {
2023-09-17 09:17:59 +09:00
// 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;
}
2023-07-22 20:25:52 +09:00
}
switch (platform) {
2023-09-17 09:17:59 +09:00
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}`);
2023-07-22 20:25:52 +09:00
}
if (!nativeBinding) {
2023-09-17 09:17:59 +09:00
if (loadError) {
throw loadError;
}
throw new Error(`Failed to load native binding`);
2023-07-22 20:25:52 +09:00
}
2023-09-17 09:17:59 +09:00
const {
nativeRandomStr,
IdConvertType,
convertId,
nativeGetTimestamp,
nativeCreateId,
nativeInitIdGenerator,
nativePackAntennaById,
NativeAntennaSrc,
nativeInitDatabase,
} = nativeBinding;
2023-07-22 20:25:52 +09:00
2023-09-17 09:17:59 +09:00
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;