index.js 7.1 KB

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