index.js 9.0 KB

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