123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370 |
- // prettier-ignore
- /* eslint-disable */
- /* auto-generated by NAPI-RS */
- const { readFileSync } = require('fs')
- let nativeBinding = null
- const loadErrors = []
- const isMusl = () => {
- let musl = false
- if (process.platform === 'linux') {
- musl = isMuslFromFilesystem()
- if (musl === null) {
- musl = isMuslFromReport()
- }
- if (musl === null) {
- musl = isMuslFromChildProcess()
- }
- }
- return musl
- }
- const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')
- const isMuslFromFilesystem = () => {
- try {
- return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')
- } catch {
- return null
- }
- }
- const isMuslFromReport = () => {
- const report = typeof process.report.getReport === 'function' ? process.report.getReport() : null
- if (!report) {
- return null
- }
- if (report.header && report.header.glibcVersionRuntime) {
- return false
- }
- if (Array.isArray(report.sharedObjects)) {
- if (report.sharedObjects.some(isFileMusl)) {
- return true
- }
- }
- return false
- }
- const isMuslFromChildProcess = () => {
- try {
- return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')
- } catch (e) {
- // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false
- return false
- }
- }
- function requireNative() {
- if (process.platform === 'android') {
- if (process.arch === 'arm64') {
- try {
- return require('./bcrypt.android-arm64.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-android-arm64')
- } catch (e) {
- loadErrors.push(e)
- }
- } else if (process.arch === 'arm') {
- try {
- return require('./bcrypt.android-arm-eabi.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-android-arm-eabi')
- } catch (e) {
- loadErrors.push(e)
- }
- } else {
- loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))
- }
- } else if (process.platform === 'win32') {
- if (process.arch === 'x64') {
- try {
- return require('./bcrypt.win32-x64-msvc.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-win32-x64-msvc')
- } catch (e) {
- loadErrors.push(e)
- }
- } else if (process.arch === 'ia32') {
- try {
- return require('./bcrypt.win32-ia32-msvc.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-win32-ia32-msvc')
- } catch (e) {
- loadErrors.push(e)
- }
- } else if (process.arch === 'arm64') {
- try {
- return require('./bcrypt.win32-arm64-msvc.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-win32-arm64-msvc')
- } catch (e) {
- loadErrors.push(e)
- }
- } else {
- loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
- }
- } else if (process.platform === 'darwin') {
- try {
- return require('./bcrypt.darwin-universal.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-darwin-universal')
- } catch (e) {
- loadErrors.push(e)
- }
- if (process.arch === 'x64') {
- try {
- return require('./bcrypt.darwin-x64.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-darwin-x64')
- } catch (e) {
- loadErrors.push(e)
- }
- } else if (process.arch === 'arm64') {
- try {
- return require('./bcrypt.darwin-arm64.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-darwin-arm64')
- } catch (e) {
- loadErrors.push(e)
- }
- } else {
- loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))
- }
- } else if (process.platform === 'freebsd') {
- if (process.arch === 'x64') {
- try {
- return require('./bcrypt.freebsd-x64.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-freebsd-x64')
- } catch (e) {
- loadErrors.push(e)
- }
- } else if (process.arch === 'arm64') {
- try {
- return require('./bcrypt.freebsd-arm64.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-freebsd-arm64')
- } catch (e) {
- loadErrors.push(e)
- }
- } else {
- loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))
- }
- } else if (process.platform === 'linux') {
- if (process.arch === 'x64') {
- if (isMusl()) {
- try {
- return require('./bcrypt.linux-x64-musl.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-linux-x64-musl')
- } catch (e) {
- loadErrors.push(e)
- }
- } else {
- try {
- return require('./bcrypt.linux-x64-gnu.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-linux-x64-gnu')
- } catch (e) {
- loadErrors.push(e)
- }
- }
- } else if (process.arch === 'arm64') {
- if (isMusl()) {
- try {
- return require('./bcrypt.linux-arm64-musl.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-linux-arm64-musl')
- } catch (e) {
- loadErrors.push(e)
- }
- } else {
- try {
- return require('./bcrypt.linux-arm64-gnu.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-linux-arm64-gnu')
- } catch (e) {
- loadErrors.push(e)
- }
- }
- } else if (process.arch === 'arm') {
- if (isMusl()) {
- try {
- return require('./bcrypt.linux-arm-musleabihf.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-linux-arm-musleabihf')
- } catch (e) {
- loadErrors.push(e)
- }
- } else {
- try {
- return require('./bcrypt.linux-arm-gnueabihf.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-linux-arm-gnueabihf')
- } catch (e) {
- loadErrors.push(e)
- }
- }
- } else if (process.arch === 'riscv64') {
- if (isMusl()) {
- try {
- return require('./bcrypt.linux-riscv64-musl.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-linux-riscv64-musl')
- } catch (e) {
- loadErrors.push(e)
- }
- } else {
- try {
- return require('./bcrypt.linux-riscv64-gnu.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-linux-riscv64-gnu')
- } catch (e) {
- loadErrors.push(e)
- }
- }
- } else if (process.arch === 'ppc64') {
- try {
- return require('./bcrypt.linux-ppc64-gnu.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-linux-ppc64-gnu')
- } catch (e) {
- loadErrors.push(e)
- }
- } else if (process.arch === 's390x') {
- try {
- return require('./bcrypt.linux-s390x-gnu.node')
- } catch (e) {
- loadErrors.push(e)
- }
- try {
- return require('@node-rs/bcrypt-linux-s390x-gnu')
- } catch (e) {
- loadErrors.push(e)
- }
- } else {
- loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))
- }
- } else {
- loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))
- }
- }
- nativeBinding = requireNative()
- if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
- try {
- nativeBinding = require('./bcrypt.wasi.cjs')
- } catch (err) {
- if (process.env.NAPI_RS_FORCE_WASI) {
- console.error(err)
- }
- }
- if (!nativeBinding) {
- try {
- nativeBinding = require('@node-rs/bcrypt-wasm32-wasi')
- } catch (err) {
- if (process.env.NAPI_RS_FORCE_WASI) {
- console.error(err)
- }
- }
- }
- }
- if (!nativeBinding) {
- if (loadErrors.length > 0) {
- // TODO Link to documentation with potential fixes
- // - The package owner could build/publish bindings for this arch
- // - The user may need to bundle the correct files
- // - The user may need to re-install node_modules to get new packages
- throw new Error('Failed to load native binding', { cause: loadErrors })
- }
- throw new Error(`Failed to load native binding`)
- }
- module.exports.DEFAULT_COST = nativeBinding.DEFAULT_COST
- module.exports.genSalt = nativeBinding.genSalt
- module.exports.genSaltSync = nativeBinding.genSaltSync
- module.exports.hash = nativeBinding.hash
- module.exports.hashSync = nativeBinding.hashSync
- module.exports.verify = nativeBinding.verify
- module.exports.verifySync = nativeBinding.verifySync
|