@miniben90/x-win
Version:
This package allows you to retrieve precise information about active and open windows on Windows, MacOS, and Linux. You can obtain the position, size, title, and other memory of windows.
329 lines (319 loc) • 10.1 kB
JavaScript
/* tslint:disable */
/* eslint-disable */
/* prettier-ignore */
/* auto-generated by NAPI-RS */
const { existsSync, readFileSync } = require('fs')
const { join } = require('path')
const { platform, arch } = process
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
}
}
switch (platform) {
case 'android':
switch (arch) {
case 'arm64':
localFileExisted = existsSync(join(__dirname, 'x-win.android-arm64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./x-win.android-arm64.node')
} else {
nativeBinding = require('@miniben90/x-win-android-arm64')
}
} catch (e) {
loadError = e
}
break
case 'arm':
localFileExisted = existsSync(join(__dirname, 'x-win.android-arm-eabi.node'))
try {
if (localFileExisted) {
nativeBinding = require('./x-win.android-arm-eabi.node')
} else {
nativeBinding = require('@miniben90/x-win-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, 'x-win.win32-x64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.win32-x64-msvc.node')
} else {
nativeBinding = require('@miniben90/x-win-win32-x64-msvc')
}
} catch (e) {
loadError = e
}
break
case 'ia32':
localFileExisted = existsSync(
join(__dirname, 'x-win.win32-ia32-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.win32-ia32-msvc.node')
} else {
nativeBinding = require('@miniben90/x-win-win32-ia32-msvc')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'x-win.win32-arm64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.win32-arm64-msvc.node')
} else {
nativeBinding = require('@miniben90/x-win-win32-arm64-msvc')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Windows: ${arch}`)
}
break
case 'darwin':
localFileExisted = existsSync(join(__dirname, 'x-win.darwin-universal.node'))
try {
if (localFileExisted) {
nativeBinding = require('./x-win.darwin-universal.node')
} else {
nativeBinding = require('@miniben90/x-win-darwin-universal')
}
break
} catch {}
switch (arch) {
case 'x64':
localFileExisted = existsSync(join(__dirname, 'x-win.darwin-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./x-win.darwin-x64.node')
} else {
nativeBinding = require('@miniben90/x-win-darwin-x64')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'x-win.darwin-arm64.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.darwin-arm64.node')
} else {
nativeBinding = require('@miniben90/x-win-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, 'x-win.freebsd-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./x-win.freebsd-x64.node')
} else {
nativeBinding = require('@miniben90/x-win-freebsd-x64')
}
} catch (e) {
loadError = e
}
break
case 'linux':
switch (arch) {
case 'x64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'x-win.linux-x64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.linux-x64-musl.node')
} else {
nativeBinding = require('@miniben90/x-win-linux-x64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'x-win.linux-x64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.linux-x64-gnu.node')
} else {
nativeBinding = require('@miniben90/x-win-linux-x64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'x-win.linux-arm64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.linux-arm64-musl.node')
} else {
nativeBinding = require('@miniben90/x-win-linux-arm64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'x-win.linux-arm64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.linux-arm64-gnu.node')
} else {
nativeBinding = require('@miniben90/x-win-linux-arm64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'x-win.linux-arm-musleabihf.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.linux-arm-musleabihf.node')
} else {
nativeBinding = require('@miniben90/x-win-linux-arm-musleabihf')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'x-win.linux-arm-gnueabihf.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.linux-arm-gnueabihf.node')
} else {
nativeBinding = require('@miniben90/x-win-linux-arm-gnueabihf')
}
} catch (e) {
loadError = e
}
}
break
case 'riscv64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'x-win.linux-riscv64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.linux-riscv64-musl.node')
} else {
nativeBinding = require('@miniben90/x-win-linux-riscv64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'x-win.linux-riscv64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.linux-riscv64-gnu.node')
} else {
nativeBinding = require('@miniben90/x-win-linux-riscv64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 's390x':
localFileExisted = existsSync(
join(__dirname, 'x-win.linux-s390x-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./x-win.linux-s390x-gnu.node')
} else {
nativeBinding = require('@miniben90/x-win-linux-s390x-gnu')
}
} 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`)
}
const { WindowInfo, activeWindow, activeWindowAsync, openWindows, openWindowsAsync, subscribeActiveWindow, unsubscribeActiveWindow, unsubscribeAllActiveWindow, installExtension, uninstallExtension, enableExtension, disableExtension, isEnabledExtension, isInstalledExtension } = nativeBinding
module.exports.WindowInfo = WindowInfo
module.exports.activeWindow = activeWindow
module.exports.activeWindowAsync = activeWindowAsync
module.exports.openWindows = openWindows
module.exports.openWindowsAsync = openWindowsAsync
module.exports.subscribeActiveWindow = subscribeActiveWindow
module.exports.unsubscribeActiveWindow = unsubscribeActiveWindow
module.exports.unsubscribeAllActiveWindow = unsubscribeAllActiveWindow
module.exports.installExtension = installExtension
module.exports.uninstallExtension = uninstallExtension
module.exports.enableExtension = enableExtension
module.exports.disableExtension = disableExtension
module.exports.isEnabledExtension = isEnabledExtension
module.exports.isInstalledExtension = isInstalledExtension