chore(deps): update napi to v3 (#13852)

This commit is contained in:
Tony
2025-07-21 05:03:51 +08:00
committed by GitHub
parent 7a6fd5b75d
commit 56277e4722
7 changed files with 1613 additions and 348 deletions

82
Cargo.lock generated
View File

@@ -1395,9 +1395,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
[[package]]
name = "convert_case"
version = "0.6.0"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f"
dependencies = [
"unicode-segmentation",
]
@@ -1651,6 +1651,22 @@ dependencies = [
"syn 2.0.95",
]
[[package]]
name = "ctor"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4735f265ba6a1188052ca32d461028a7d1125868be18e287e756019da7607b5"
dependencies = [
"ctor-proc-macro",
"dtor",
]
[[package]]
name = "ctor-proc-macro"
version = "0.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f211af61d8efdd104f96e57adf5e426ba1bc3ed7a4ead616e15e5881fd79c4d"
[[package]]
name = "ctr"
version = "0.9.2"
@@ -2045,6 +2061,21 @@ dependencies = [
"dtoa",
]
[[package]]
name = "dtor"
version = "0.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97cbdf2ad6846025e8e25df05171abfb30e3ababa12ee0a0e44b9bbe570633a8"
dependencies = [
"dtor-proc-macro",
]
[[package]]
name = "dtor-proc-macro"
version = "0.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7454e41ff9012c00d53cf7f475c5e3afa3b91b7c90568495495e8d9bf47a1055"
[[package]]
name = "duct"
version = "1.0.0"
@@ -4602,31 +4633,32 @@ dependencies = [
[[package]]
name = "napi"
version = "2.16.13"
version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "214f07a80874bb96a8433b3cdfc84980d56c7b02e1a0d7ba4ba0db5cef785e2b"
checksum = "abf3f418eeb94d86f02f3388324017e1e21e36937e4b1d8075ea5843d980f766"
dependencies = [
"bitflags 2.7.0",
"ctor",
"napi-derive",
"ctor 0.4.2",
"napi-build",
"napi-sys",
"once_cell",
"nohash-hasher",
"rustc-hash",
]
[[package]]
name = "napi-build"
version = "2.1.3"
version = "2.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1c0f5d67ee408a4685b61f5ab7e58605c8ae3f2b4189f0127d804ff13d5560a"
checksum = "fff539e61c5e3dd4d7d283610662f5d672c2aea0f158df78af694f13dbb3287b"
[[package]]
name = "napi-derive"
version = "2.16.13"
version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cbe2585d8ac223f7d34f13701434b9d5f4eb9c332cccce8dee57ea18ab8ab0c"
checksum = "ce09c2a155c7c38447a6ff1711899375bdd8f9dd5a50aad700a9c765c9f8a375"
dependencies = [
"cfg-if",
"convert_case 0.6.0",
"convert_case 0.8.0",
"ctor 0.4.2",
"napi-derive-backend",
"proc-macro2",
"quote",
@@ -4635,24 +4667,22 @@ dependencies = [
[[package]]
name = "napi-derive-backend"
version = "1.0.75"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1639aaa9eeb76e91c6ae66da8ce3e89e921cd3885e99ec85f4abacae72fc91bf"
checksum = "17923387d68ecfe057a04a38ee89aeb41f415c43b4c7a508a3683bf0c1511c5a"
dependencies = [
"convert_case 0.6.0",
"once_cell",
"convert_case 0.8.0",
"proc-macro2",
"quote",
"regex",
"semver",
"syn 2.0.95",
]
[[package]]
name = "napi-sys"
version = "2.4.0"
version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "427802e8ec3a734331fec1035594a210ce1ff4dc5bc1950530920ab717964ea3"
checksum = "3e4e7135a8f97aa0f1509cce21a8a1f9dcec1b50d8dee006b48a5adb69a9d64d"
dependencies = [
"libloading 0.8.6",
]
@@ -4753,6 +4783,12 @@ version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
[[package]]
name = "nohash-hasher"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
[[package]]
name = "nom"
version = "7.1.3"
@@ -7020,9 +7056,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]]
name = "rustc-hash"
version = "2.1.0"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497"
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
[[package]]
name = "rustc_version"
@@ -8848,7 +8884,7 @@ dependencies = [
"anyhow",
"brotli",
"cargo_metadata",
"ctor",
"ctor 0.2.9",
"dunce",
"getrandom 0.3.3",
"glob",

View File

@@ -7,14 +7,13 @@ version = "0.0.0"
crate-type = ["cdylib"]
[dependencies]
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
napi = { version = "2.16", default-features = false, features = ["napi4"] }
napi-derive = "2.16"
napi = "3"
napi-derive = "3"
tauri-cli = { path = "../../crates/tauri-cli", default-features = false }
log = "0.4.21"
[build-dependencies]
napi-build = "2.1"
napi-build = "2.2"
[features]
default = ["tauri-cli/default"]

View File

@@ -2,10 +2,8 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
/* tslint:disable */
/* eslint-disable */
/* auto-generated by NAPI-RS */
export declare function run(args: Array<string>, binName: string | undefined | null, callback: (...args: any[]) => any): void
/* eslint-disable */
export declare function logError(error: string): void
export declare function run(args: Array<string>, binName: string | undefined | null, callback: ((err: Error | null, arg: boolean) => any)): void

View File

@@ -2,319 +2,400 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
/* tslint:disable */
// prettier-ignore
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
/* auto-generated by NAPI-RS */
const { existsSync, readFileSync } = require('fs')
const { join } = require('path')
const { platform, arch } = process
const { createRequire } = require('node:module')
require = createRequire(__filename)
const { readFileSync } = require('node:fs')
let nativeBinding = null
let localFileExisted = false
let loadError = null
const loadErrors = []
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
const isMusl = () => {
let musl = false
if (process.platform === 'linux') {
musl = isMuslFromFilesystem()
if (musl === null) {
musl = isMuslFromReport()
}
} else {
const { glibcVersionRuntime } = process.report.getReport().header
return !glibcVersionRuntime
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
}
}
switch (platform) {
case 'android':
switch (arch) {
case 'arm64':
localFileExisted = existsSync(join(__dirname, 'cli.android-arm64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./cli.android-arm64.node')
} else {
nativeBinding = require('@tauri-apps/cli-android-arm64')
}
} catch (e) {
loadError = e
}
break
case 'arm':
localFileExisted = existsSync(join(__dirname, 'cli.android-arm-eabi.node'))
try {
if (localFileExisted) {
nativeBinding = require('./cli.android-arm-eabi.node')
} else {
nativeBinding = require('@tauri-apps/cli-android-arm-eabi')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Android ${arch}`)
const isMuslFromReport = () => {
let report = null
if (typeof process.report?.getReport === 'function') {
process.report.excludeNetwork = true
report = process.report.getReport()
}
if (!report) {
return null
}
if (report.header && report.header.glibcVersionRuntime) {
return false
}
if (Array.isArray(report.sharedObjects)) {
if (report.sharedObjects.some(isFileMusl)) {
return true
}
break
case 'win32':
switch (arch) {
case 'x64':
localFileExisted = existsSync(
join(__dirname, 'cli.win32-x64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.win32-x64-msvc.node')
} else {
nativeBinding = require('@tauri-apps/cli-win32-x64-msvc')
}
} catch (e) {
loadError = e
}
break
case 'ia32':
localFileExisted = existsSync(
join(__dirname, 'cli.win32-ia32-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.win32-ia32-msvc.node')
} else {
nativeBinding = require('@tauri-apps/cli-win32-ia32-msvc')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'cli.win32-arm64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.win32-arm64-msvc.node')
} else {
nativeBinding = require('@tauri-apps/cli-win32-arm64-msvc')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Windows: ${arch}`)
}
break
case 'darwin':
localFileExisted = existsSync(join(__dirname, 'cli.darwin-universal.node'))
}
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.env.NAPI_RS_NATIVE_LIBRARY_PATH) {
try {
if (localFileExisted) {
nativeBinding = require('./cli.darwin-universal.node')
} else {
nativeBinding = require('@tauri-apps/cli-darwin-universal')
nativeBinding = require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);
} catch (err) {
loadErrors.push(err)
}
} else if (process.platform === 'android') {
if (process.arch === 'arm64') {
try {
return require('./cli.android-arm64.node')
} catch (e) {
loadErrors.push(e)
}
break
} catch {}
switch (arch) {
case 'x64':
localFileExisted = existsSync(join(__dirname, 'cli.darwin-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./cli.darwin-x64.node')
} else {
nativeBinding = require('@tauri-apps/cli-darwin-x64')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'cli.darwin-arm64.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.darwin-arm64.node')
} else {
nativeBinding = require('@tauri-apps/cli-darwin-arm64')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on macOS: ${arch}`)
try {
return require('@tauri-apps/cli-android-arm64')
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'arm') {
try {
return require('./cli.android-arm-eabi.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-android-arm-eabi')
} catch (e) {
loadErrors.push(e)
}
} else {
loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))
}
break
case 'freebsd':
if (arch !== 'x64') {
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
} else if (process.platform === 'win32') {
if (process.arch === 'x64') {
try {
return require('./cli.win32-x64-msvc.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-win32-x64-msvc')
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'ia32') {
try {
return require('./cli.win32-ia32-msvc.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-win32-ia32-msvc')
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'arm64') {
try {
return require('./cli.win32-arm64-msvc.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-win32-arm64-msvc')
} catch (e) {
loadErrors.push(e)
}
} else {
loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
}
localFileExisted = existsSync(join(__dirname, 'cli.freebsd-x64.node'))
} else if (process.platform === 'darwin') {
try {
if (localFileExisted) {
nativeBinding = require('./cli.freebsd-x64.node')
} else {
nativeBinding = require('@tauri-apps/cli-freebsd-x64')
}
return require('./cli.darwin-universal.node')
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
case 'linux':
switch (arch) {
case 'x64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'cli.linux-x64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.linux-x64-musl.node')
} else {
nativeBinding = require('@tauri-apps/cli-linux-x64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'cli.linux-x64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.linux-x64-gnu.node')
} else {
nativeBinding = require('@tauri-apps/cli-linux-x64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'cli.linux-arm64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.linux-arm64-musl.node')
} else {
nativeBinding = require('@tauri-apps/cli-linux-arm64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'cli.linux-arm64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.linux-arm64-gnu.node')
} else {
nativeBinding = require('@tauri-apps/cli-linux-arm64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'cli.linux-arm-musleabihf.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.linux-arm-musleabihf.node')
} else {
nativeBinding = require('@tauri-apps/cli-linux-arm-musleabihf')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'cli.linux-arm-gnueabihf.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.linux-arm-gnueabihf.node')
} else {
nativeBinding = require('@tauri-apps/cli-linux-arm-gnueabihf')
}
} catch (e) {
loadError = e
}
}
break
case 'riscv64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'cli.linux-riscv64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.linux-riscv64-musl.node')
} else {
nativeBinding = require('@tauri-apps/cli-linux-riscv64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'cli.linux-riscv64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./cli.linux-riscv64-gnu.node')
} else {
nativeBinding = require('@tauri-apps/cli-linux-riscv64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 's390x':
localFileExisted = existsSync(
join(__dirname, 'cli.linux-s390x-gnu.node')
)
try {
return require('@tauri-apps/cli-darwin-universal')
} catch (e) {
loadErrors.push(e)
}
if (process.arch === 'x64') {
try {
return require('./cli.darwin-x64.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-darwin-x64')
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'arm64') {
try {
return require('./cli.darwin-arm64.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-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('./cli.freebsd-x64.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-freebsd-x64')
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'arm64') {
try {
return require('./cli.freebsd-arm64.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-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 {
if (localFileExisted) {
nativeBinding = require('./cli.linux-s390x-gnu.node')
} else {
nativeBinding = require('@tauri-apps/cli-linux-s390x-gnu')
}
return require('./cli.linux-x64-musl.node')
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
default:
throw new Error(`Unsupported architecture on Linux: ${arch}`)
try {
return require('@tauri-apps/cli-linux-x64-musl')
} catch (e) {
loadErrors.push(e)
}
} else {
try {
return require('./cli.linux-x64-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-x64-gnu')
} catch (e) {
loadErrors.push(e)
}
}
} else if (process.arch === 'arm64') {
if (isMusl()) {
try {
return require('./cli.linux-arm64-musl.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-arm64-musl')
} catch (e) {
loadErrors.push(e)
}
} else {
try {
return require('./cli.linux-arm64-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-arm64-gnu')
} catch (e) {
loadErrors.push(e)
}
}
} else if (process.arch === 'arm') {
if (isMusl()) {
try {
return require('./cli.linux-arm-musleabihf.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-arm-musleabihf')
} catch (e) {
loadErrors.push(e)
}
} else {
try {
return require('./cli.linux-arm-gnueabihf.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-arm-gnueabihf')
} catch (e) {
loadErrors.push(e)
}
}
} else if (process.arch === 'riscv64') {
if (isMusl()) {
try {
return require('./cli.linux-riscv64-musl.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-riscv64-musl')
} catch (e) {
loadErrors.push(e)
}
} else {
try {
return require('./cli.linux-riscv64-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-riscv64-gnu')
} catch (e) {
loadErrors.push(e)
}
}
} else if (process.arch === 'ppc64') {
try {
return require('./cli.linux-ppc64-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-ppc64-gnu')
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 's390x') {
try {
return require('./cli.linux-s390x-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-s390x-gnu')
} catch (e) {
loadErrors.push(e)
}
} else {
loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))
}
break
default:
throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
} else if (process.platform === 'openharmony') {
if (process.arch === 'arm64') {
try {
return require('./cli.linux-arm64-ohos.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-arm64-ohos')
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'x64') {
try {
return require('./cli.linux-x64-ohos.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-x64-ohos')
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'arm') {
try {
return require('./cli.linux-arm-ohos.node')
} catch (e) {
loadErrors.push(e)
}
try {
return require('@tauri-apps/cli-linux-arm-ohos')
} catch (e) {
loadErrors.push(e)
}
} else {
loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${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('./cli.wasi.cjs')
} catch (err) {
if (process.env.NAPI_RS_FORCE_WASI) {
loadErrors.push(err)
}
}
if (!nativeBinding) {
try {
nativeBinding = require('@tauri-apps/cli-wasm32-wasi')
} catch (err) {
if (process.env.NAPI_RS_FORCE_WASI) {
loadErrors.push(err)
}
}
}
}
if (!nativeBinding) {
if (loadError) {
throw loadError
if (loadErrors.length > 0) {
throw new Error(
`Cannot find native binding. ` +
`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
'Please try `npm i` again after removing both package-lock.json and node_modules directory.',
{ cause: loadErrors }
)
}
throw new Error(`Failed to load native binding`)
}
const { run, logError } = nativeBinding
module.exports.run = run
module.exports.logError = logError
module.exports = nativeBinding
module.exports.logError = nativeBinding.logError
module.exports.run = nativeBinding.run

View File

@@ -24,22 +24,20 @@
"main": "main.js",
"types": "main.d.ts",
"napi": {
"name": "cli",
"triples": {
"additional": [
"aarch64-apple-darwin",
"aarch64-unknown-linux-gnu",
"aarch64-unknown-linux-musl",
"armv7-unknown-linux-gnueabihf",
"x86_64-unknown-linux-musl",
"riscv64gc-unknown-linux-gnu",
"i686-pc-windows-msvc",
"aarch64-pc-windows-msvc"
]
}
"binaryName": "cli",
"targets": [
"aarch64-apple-darwin",
"aarch64-unknown-linux-gnu",
"aarch64-unknown-linux-musl",
"armv7-unknown-linux-gnueabihf",
"x86_64-unknown-linux-musl",
"riscv64gc-unknown-linux-gnu",
"i686-pc-windows-msvc",
"aarch64-pc-windows-msvc"
]
},
"devDependencies": {
"@napi-rs/cli": "2.18.4",
"@napi-rs/cli": "^3.0.0",
"@types/node": "^22.15.32",
"cross-env": "7.0.3",
"vitest": "^3.2.4"

View File

@@ -4,16 +4,19 @@
#![cfg(any(target_os = "macos", target_os = "linux", windows))]
use std::sync::Arc;
use napi::{
threadsafe_function::{ErrorStrategy, ThreadsafeFunction, ThreadsafeFunctionCallMode},
Error, JsFunction, Result, Status,
threadsafe_function::{ThreadsafeFunction, ThreadsafeFunctionCallMode},
Error, Result, Status,
};
#[napi_derive::napi]
pub fn run(args: Vec<String>, bin_name: Option<String>, callback: JsFunction) -> Result<()> {
let function: ThreadsafeFunction<bool, ErrorStrategy::CalleeHandled> = callback
.create_threadsafe_function(0, |ctx| ctx.env.get_boolean(ctx.value).map(|v| vec![v]))?;
pub fn run(
args: Vec<String>,
bin_name: Option<String>,
callback: Arc<ThreadsafeFunction<bool>>,
) -> Result<()> {
// we need to run in a separate thread so Node.js consumers
// can do work while `tauri dev` is running.
std::thread::spawn(move || {
@@ -22,7 +25,7 @@ pub fn run(args: Vec<String>, bin_name: Option<String>, callback: JsFunction) ->
})) {
Ok(t) => t,
Err(_) => {
return function.call(
return callback.call(
Err(Error::new(
Status::GenericFailure,
"Tauri CLI unexpected panic",
@@ -33,8 +36,8 @@ pub fn run(args: Vec<String>, bin_name: Option<String>, callback: JsFunction) ->
};
match res {
Ok(_) => function.call(Ok(true), ThreadsafeFunctionCallMode::Blocking),
Err(e) => function.call(
Ok(_) => callback.call(Ok(true), ThreadsafeFunctionCallMode::Blocking),
Err(e) => callback.call(
Err(Error::new(Status::GenericFailure, format!("{e:#}"))),
ThreadsafeFunctionCallMode::Blocking,
),

1162
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff