node-yara-rs

git clone git://archive.git.mtrnord.blog/MTRNord/node-yara-rs.git
Log | Files | Refs | README | LICENSE

index.js (7730B)


      1 /* tslint:disable */
      2 /* eslint-disable */
      3 /* prettier-ignore */
      4 
      5 /* auto-generated by NAPI-RS */
      6 
      7 const { existsSync, readFileSync } = require('fs')
      8 const { join } = require('path')
      9 
     10 const { platform, arch } = process
     11 
     12 let nativeBinding = null
     13 let localFileExisted = false
     14 let loadError = null
     15 
     16 function isMusl() {
     17   // For Node 10
     18   if (!process.report || typeof process.report.getReport !== 'function') {
     19     try {
     20       const lddPath = require('child_process').execSync('which ldd').toString().trim()
     21       return readFileSync(lddPath, 'utf8').includes('musl')
     22     } catch (e) {
     23       return true
     24     }
     25   } else {
     26     const { glibcVersionRuntime } = process.report.getReport().header
     27     return !glibcVersionRuntime
     28   }
     29 }
     30 
     31 switch (platform) {
     32   case 'android':
     33     switch (arch) {
     34       case 'arm64':
     35         localFileExisted = existsSync(join(__dirname, 'node-yara-rs.android-arm64.node'))
     36         try {
     37           if (localFileExisted) {
     38             nativeBinding = require('./node-yara-rs.android-arm64.node')
     39           } else {
     40             nativeBinding = require('@node_yara_rs/node-yara-rs-android-arm64')
     41           }
     42         } catch (e) {
     43           loadError = e
     44         }
     45         break
     46       case 'arm':
     47         localFileExisted = existsSync(join(__dirname, 'node-yara-rs.android-arm-eabi.node'))
     48         try {
     49           if (localFileExisted) {
     50             nativeBinding = require('./node-yara-rs.android-arm-eabi.node')
     51           } else {
     52             nativeBinding = require('@node_yara_rs/node-yara-rs-android-arm-eabi')
     53           }
     54         } catch (e) {
     55           loadError = e
     56         }
     57         break
     58       default:
     59         throw new Error(`Unsupported architecture on Android ${arch}`)
     60     }
     61     break
     62   case 'win32':
     63     switch (arch) {
     64       case 'x64':
     65         localFileExisted = existsSync(
     66           join(__dirname, 'node-yara-rs.win32-x64-msvc.node')
     67         )
     68         try {
     69           if (localFileExisted) {
     70             nativeBinding = require('./node-yara-rs.win32-x64-msvc.node')
     71           } else {
     72             nativeBinding = require('@node_yara_rs/node-yara-rs-win32-x64-msvc')
     73           }
     74         } catch (e) {
     75           loadError = e
     76         }
     77         break
     78       case 'ia32':
     79         localFileExisted = existsSync(
     80           join(__dirname, 'node-yara-rs.win32-ia32-msvc.node')
     81         )
     82         try {
     83           if (localFileExisted) {
     84             nativeBinding = require('./node-yara-rs.win32-ia32-msvc.node')
     85           } else {
     86             nativeBinding = require('@node_yara_rs/node-yara-rs-win32-ia32-msvc')
     87           }
     88         } catch (e) {
     89           loadError = e
     90         }
     91         break
     92       case 'arm64':
     93         localFileExisted = existsSync(
     94           join(__dirname, 'node-yara-rs.win32-arm64-msvc.node')
     95         )
     96         try {
     97           if (localFileExisted) {
     98             nativeBinding = require('./node-yara-rs.win32-arm64-msvc.node')
     99           } else {
    100             nativeBinding = require('@node_yara_rs/node-yara-rs-win32-arm64-msvc')
    101           }
    102         } catch (e) {
    103           loadError = e
    104         }
    105         break
    106       default:
    107         throw new Error(`Unsupported architecture on Windows: ${arch}`)
    108     }
    109     break
    110   case 'darwin':
    111     localFileExisted = existsSync(join(__dirname, 'node-yara-rs.darwin-universal.node'))
    112     try {
    113       if (localFileExisted) {
    114         nativeBinding = require('./node-yara-rs.darwin-universal.node')
    115       } else {
    116         nativeBinding = require('@node_yara_rs/node-yara-rs-darwin-universal')
    117       }
    118       break
    119     } catch {}
    120     switch (arch) {
    121       case 'x64':
    122         localFileExisted = existsSync(join(__dirname, 'node-yara-rs.darwin-x64.node'))
    123         try {
    124           if (localFileExisted) {
    125             nativeBinding = require('./node-yara-rs.darwin-x64.node')
    126           } else {
    127             nativeBinding = require('@node_yara_rs/node-yara-rs-darwin-x64')
    128           }
    129         } catch (e) {
    130           loadError = e
    131         }
    132         break
    133       case 'arm64':
    134         localFileExisted = existsSync(
    135           join(__dirname, 'node-yara-rs.darwin-arm64.node')
    136         )
    137         try {
    138           if (localFileExisted) {
    139             nativeBinding = require('./node-yara-rs.darwin-arm64.node')
    140           } else {
    141             nativeBinding = require('@node_yara_rs/node-yara-rs-darwin-arm64')
    142           }
    143         } catch (e) {
    144           loadError = e
    145         }
    146         break
    147       default:
    148         throw new Error(`Unsupported architecture on macOS: ${arch}`)
    149     }
    150     break
    151   case 'freebsd':
    152     if (arch !== 'x64') {
    153       throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
    154     }
    155     localFileExisted = existsSync(join(__dirname, 'node-yara-rs.freebsd-x64.node'))
    156     try {
    157       if (localFileExisted) {
    158         nativeBinding = require('./node-yara-rs.freebsd-x64.node')
    159       } else {
    160         nativeBinding = require('@node_yara_rs/node-yara-rs-freebsd-x64')
    161       }
    162     } catch (e) {
    163       loadError = e
    164     }
    165     break
    166   case 'linux':
    167     switch (arch) {
    168       case 'x64':
    169         if (isMusl()) {
    170           localFileExisted = existsSync(
    171             join(__dirname, 'node-yara-rs.linux-x64-musl.node')
    172           )
    173           try {
    174             if (localFileExisted) {
    175               nativeBinding = require('./node-yara-rs.linux-x64-musl.node')
    176             } else {
    177               nativeBinding = require('@node_yara_rs/node-yara-rs-linux-x64-musl')
    178             }
    179           } catch (e) {
    180             loadError = e
    181           }
    182         } else {
    183           localFileExisted = existsSync(
    184             join(__dirname, 'node-yara-rs.linux-x64-gnu.node')
    185           )
    186           try {
    187             if (localFileExisted) {
    188               nativeBinding = require('./node-yara-rs.linux-x64-gnu.node')
    189             } else {
    190               nativeBinding = require('@node_yara_rs/node-yara-rs-linux-x64-gnu')
    191             }
    192           } catch (e) {
    193             loadError = e
    194           }
    195         }
    196         break
    197       case 'arm64':
    198         if (isMusl()) {
    199           localFileExisted = existsSync(
    200             join(__dirname, 'node-yara-rs.linux-arm64-musl.node')
    201           )
    202           try {
    203             if (localFileExisted) {
    204               nativeBinding = require('./node-yara-rs.linux-arm64-musl.node')
    205             } else {
    206               nativeBinding = require('@node_yara_rs/node-yara-rs-linux-arm64-musl')
    207             }
    208           } catch (e) {
    209             loadError = e
    210           }
    211         } else {
    212           localFileExisted = existsSync(
    213             join(__dirname, 'node-yara-rs.linux-arm64-gnu.node')
    214           )
    215           try {
    216             if (localFileExisted) {
    217               nativeBinding = require('./node-yara-rs.linux-arm64-gnu.node')
    218             } else {
    219               nativeBinding = require('@node_yara_rs/node-yara-rs-linux-arm64-gnu')
    220             }
    221           } catch (e) {
    222             loadError = e
    223           }
    224         }
    225         break
    226       case 'arm':
    227         localFileExisted = existsSync(
    228           join(__dirname, 'node-yara-rs.linux-arm-gnueabihf.node')
    229         )
    230         try {
    231           if (localFileExisted) {
    232             nativeBinding = require('./node-yara-rs.linux-arm-gnueabihf.node')
    233           } else {
    234             nativeBinding = require('@node_yara_rs/node-yara-rs-linux-arm-gnueabihf')
    235           }
    236         } catch (e) {
    237           loadError = e
    238         }
    239         break
    240       default:
    241         throw new Error(`Unsupported architecture on Linux: ${arch}`)
    242     }
    243     break
    244   default:
    245     throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
    246 }
    247 
    248 if (!nativeBinding) {
    249   if (loadError) {
    250     throw loadError
    251   }
    252   throw new Error(`Failed to load native binding`)
    253 }
    254 
    255 const { YaraCompiler, YaraScanner } = nativeBinding
    256 
    257 module.exports.YaraCompiler = YaraCompiler
    258 module.exports.YaraScanner = YaraScanner