Sign In

@mariozechner/clipboard

Package Overview
Dependencies
Maintainers
2
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mariozechner/clipboard - npm Package Compare versions

Comparing version
0.3.6
to
0.3.9
+3
-3
Cargo.toml

@@ -20,4 +20,4 @@ [package]

# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
napi = { version = "2.12.2", default-features = false, features = ["napi4", "tokio_rt"] }
napi-derive = "2.12.2"
napi = { version = "3.9.0", default-features = false, features = ["napi4", "tokio_rt", "dyn-symbols"] }
napi-derive = "3.5.6"
tokio = "1.36.0"

@@ -42,3 +42,3 @@

# Pin to version that works with older Rust in Docker images
napi-build = "=2.1.3"
napi-build = "2.3.2"

@@ -45,0 +45,0 @@ [profile.release]

@@ -1,23 +0,37 @@

/* tslint:disable */
/* auto-generated by NAPI-RS */
/* eslint-disable */
export declare function availableFormats(): Array<string>
/* auto-generated by NAPI-RS */
export declare function callThreadsafeFunction(callback: ((err: Error | null, arg: number) => void)): void
export function availableFormats(): Array<string>
export function getText(): Promise<string>
export function setText(text: string): Promise<void>
export function hasText(): boolean
export function getImageBinary(): Promise<Array<number>>
export function getImageBase64(): Promise<string>
export function setImageBinary(imageBytes: Array<number>): Promise<void>
export function setImageBase64(base64Str: string): Promise<void>
export function hasImage(): boolean
export function getHtml(): Promise<string>
export function setHtml(html: string): Promise<void>
export function hasHtml(): boolean
export function getRtf(): Promise<string>
export function setRtf(rtf: string): Promise<void>
export function hasRtf(): boolean
export function clear(): Promise<void>
export function watch(): void
export function callThreadsafeFunction(callback: (...args: any[]) => any): void
export declare function clear(): Promise<void>
export declare function getHtml(): Promise<string>
export declare function getImageBase64(): Promise<string>
export declare function getImageBinary(): Promise<Array<number>>
export declare function getRtf(): Promise<string>
export declare function getText(): Promise<string>
export declare function hasHtml(): boolean
export declare function hasImage(): boolean
export declare function hasRtf(): boolean
export declare function hasText(): boolean
export declare function setHtml(html: string): Promise<void>
export declare function setImageBase64(base64Str: string): Promise<void>
export declare function setImageBinary(imageBytes: Array<number>): Promise<void>
export declare function setRtf(rtf: string): Promise<void>
export declare function setText(text: string): Promise<void>
export declare function watch(): void
+545
-256

@@ -1,294 +0,584 @@

/* 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 { readFileSync } = require('node:fs')
let nativeBinding = null
const loadErrors = []
const { platform, arch } = process
const isMusl = () => {
let musl = false
if (process.platform === 'linux') {
musl = isMuslFromFilesystem()
if (musl === null) {
musl = isMuslFromReport()
}
if (musl === null) {
musl = isMuslFromChildProcess()
}
}
return musl
}
let nativeBinding = null
let localFileExisted = false
let loadError = null
const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')
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) {
const isMuslFromFilesystem = () => {
try {
return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')
} catch {
return null
}
}
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
}
} else {
const { glibcVersionRuntime } = process.report.getReport().header
return !glibcVersionRuntime
}
return false
}
switch (platform) {
case 'android':
switch (arch) {
case 'arm64':
localFileExisted = existsSync(join(__dirname, 'clipboard.android-arm64.node'))
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 {
return 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('./clipboard.android-arm64.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-android-arm64')
const bindingPackageVersion = require('@mariozechner/clipboard-android-arm64/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'arm') {
try {
return require('./clipboard.android-arm-eabi.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-android-arm-eabi')
const bindingPackageVersion = require('@mariozechner/clipboard-android-arm-eabi/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} 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') {
if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') {
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.android-arm64.node')
} else {
nativeBinding = require('@mariozechner/clipboard-android-arm64')
}
return require('./clipboard.win32-x64-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-win32-x64-gnu')
const bindingPackageVersion = require('@mariozechner/clipboard-win32-x64-gnu/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
} else {
try {
return require('./clipboard.win32-x64-msvc.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-win32-x64-msvc')
const bindingPackageVersion = require('@mariozechner/clipboard-win32-x64-msvc/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
}
} else if (process.arch === 'ia32') {
try {
return require('./clipboard.win32-ia32-msvc.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-win32-ia32-msvc')
const bindingPackageVersion = require('@mariozechner/clipboard-win32-ia32-msvc/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'arm64') {
try {
return require('./clipboard.win32-arm64-msvc.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-win32-arm64-msvc')
const bindingPackageVersion = require('@mariozechner/clipboard-win32-arm64-msvc/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
} else {
loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
}
} else if (process.platform === 'darwin') {
try {
return require('./clipboard.darwin-universal.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-darwin-universal')
const bindingPackageVersion = require('@mariozechner/clipboard-darwin-universal/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
if (process.arch === 'x64') {
try {
return require('./clipboard.darwin-x64.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-darwin-x64')
const bindingPackageVersion = require('@mariozechner/clipboard-darwin-x64/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'arm64') {
try {
return require('./clipboard.darwin-arm64.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-darwin-arm64')
const bindingPackageVersion = require('@mariozechner/clipboard-darwin-arm64/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} 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('./clipboard.freebsd-x64.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-freebsd-x64')
const bindingPackageVersion = require('@mariozechner/clipboard-freebsd-x64/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'arm64') {
try {
return require('./clipboard.freebsd-arm64.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-freebsd-arm64')
const bindingPackageVersion = require('@mariozechner/clipboard-freebsd-arm64/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} 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('./clipboard.linux-x64-musl.node')
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
case 'arm':
localFileExisted = existsSync(join(__dirname, 'clipboard.android-arm-eabi.node'))
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.android-arm-eabi.node')
} else {
nativeBinding = require('@mariozechner/clipboard-android-arm-eabi')
const binding = require('@mariozechner/clipboard-linux-x64-musl')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-x64-musl/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
default:
throw new Error(`Unsupported architecture on Android ${arch}`)
}
break
case 'win32':
switch (arch) {
case 'x64':
localFileExisted = existsSync(
join(__dirname, 'clipboard.win32-x64-msvc.node')
)
} else {
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.win32-x64-msvc.node')
} else {
nativeBinding = require('@mariozechner/clipboard-win32-x64-msvc')
}
return require('./clipboard.linux-x64-gnu.node')
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
case 'ia32':
localFileExisted = existsSync(
join(__dirname, 'clipboard.win32-ia32-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.win32-ia32-msvc.node')
} else {
nativeBinding = require('@mariozechner/clipboard-win32-ia32-msvc')
const binding = require('@mariozechner/clipboard-linux-x64-gnu')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-x64-gnu/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'clipboard.win32-arm64-msvc.node')
)
}
} else if (process.arch === 'arm64') {
if (isMusl()) {
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.win32-arm64-msvc.node')
} else {
nativeBinding = require('@mariozechner/clipboard-win32-arm64-msvc')
return require('./clipboard.linux-arm64-musl.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-linux-arm64-musl')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-arm64-musl/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
default:
throw new Error(`Unsupported architecture on Windows: ${arch}`)
}
break
case 'darwin':
localFileExisted = existsSync(join(__dirname, 'clipboard.darwin-universal.node'))
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.darwin-universal.node')
} else {
nativeBinding = require('@mariozechner/clipboard-darwin-universal')
}
break
} catch {}
switch (arch) {
case 'x64':
localFileExisted = existsSync(join(__dirname, 'clipboard.darwin-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.darwin-x64.node')
} else {
nativeBinding = require('@mariozechner/clipboard-darwin-x64')
return require('./clipboard.linux-arm64-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-linux-arm64-gnu')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-arm64-gnu/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'clipboard.darwin-arm64.node')
)
}
} else if (process.arch === 'arm') {
if (isMusl()) {
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.darwin-arm64.node')
} else {
nativeBinding = require('@mariozechner/clipboard-darwin-arm64')
return require('./clipboard.linux-arm-musleabihf.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-linux-arm-musleabihf')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-arm-musleabihf/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
default:
throw new Error(`Unsupported architecture on macOS: ${arch}`)
}
break
case 'freebsd':
if (arch !== 'x64') {
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
}
localFileExisted = existsSync(join(__dirname, 'clipboard.freebsd-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.freebsd-x64.node')
} else {
nativeBinding = require('@mariozechner/clipboard-freebsd-x64')
}
} catch (e) {
loadError = e
}
break
case 'linux':
switch (arch) {
case 'x64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'clipboard.linux-x64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.linux-x64-musl.node')
} else {
nativeBinding = require('@mariozechner/clipboard-linux-x64-musl')
}
} catch (e) {
loadError = e
try {
return require('./clipboard.linux-arm-gnueabihf.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-linux-arm-gnueabihf')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-arm-gnueabihf/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
} else {
localFileExisted = existsSync(
join(__dirname, 'clipboard.linux-x64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.linux-x64-gnu.node')
} else {
nativeBinding = require('@mariozechner/clipboard-linux-x64-gnu')
}
} catch (e) {
loadError = e
}
return binding
} catch (e) {
loadErrors.push(e)
}
break
case 'arm64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'clipboard.linux-arm64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.linux-arm64-musl.node')
} else {
nativeBinding = require('@mariozechner/clipboard-linux-arm64-musl')
}
} catch (e) {
loadError = e
}
} else if (process.arch === 'loong64') {
if (isMusl()) {
try {
return require('./clipboard.linux-loong64-musl.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-linux-loong64-musl')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-loong64-musl/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
} else {
localFileExisted = existsSync(
join(__dirname, 'clipboard.linux-arm64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.linux-arm64-gnu.node')
} else {
nativeBinding = require('@mariozechner/clipboard-linux-arm64-gnu')
}
} catch (e) {
loadError = e
}
return binding
} catch (e) {
loadErrors.push(e)
}
break
case 'arm':
localFileExisted = existsSync(
join(__dirname, 'clipboard.linux-arm-gnueabihf.node')
)
} else {
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.linux-arm-gnueabihf.node')
} else {
nativeBinding = require('@mariozechner/clipboard-linux-arm-gnueabihf')
return require('./clipboard.linux-loong64-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-linux-loong64-gnu')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-loong64-gnu/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
case 'riscv64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'clipboard.linux-riscv64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.linux-riscv64-musl.node')
} else {
nativeBinding = require('@mariozechner/clipboard-linux-riscv64-musl')
}
} catch (e) {
loadError = e
}
} else if (process.arch === 'riscv64') {
if (isMusl()) {
try {
return require('./clipboard.linux-riscv64-musl.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-linux-riscv64-musl')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-riscv64-musl/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
} else {
localFileExisted = existsSync(
join(__dirname, 'clipboard.linux-riscv64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.linux-riscv64-gnu.node')
} else {
nativeBinding = require('@mariozechner/clipboard-linux-riscv64-gnu')
}
} catch (e) {
loadError = e
}
return binding
} catch (e) {
loadErrors.push(e)
}
break
case 's390x':
localFileExisted = existsSync(
join(__dirname, 'clipboard.linux-s390x-gnu.node')
)
} else {
try {
if (localFileExisted) {
nativeBinding = require('./clipboard.linux-s390x-gnu.node')
} else {
nativeBinding = require('@mariozechner/clipboard-linux-s390x-gnu')
return require('./clipboard.linux-riscv64-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-linux-riscv64-gnu')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-riscv64-gnu/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadError = e
loadErrors.push(e)
}
break
default:
throw new Error(`Unsupported architecture on Linux: ${arch}`)
}
} else if (process.arch === 'ppc64') {
try {
return require('./clipboard.linux-ppc64-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-linux-ppc64-gnu')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-ppc64-gnu/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 's390x') {
try {
return require('./clipboard.linux-s390x-gnu.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-linux-s390x-gnu')
const bindingPackageVersion = require('@mariozechner/clipboard-linux-s390x-gnu/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} 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('./clipboard.openharmony-arm64.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-openharmony-arm64')
const bindingPackageVersion = require('@mariozechner/clipboard-openharmony-arm64/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'x64') {
try {
return require('./clipboard.openharmony-x64.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-openharmony-x64')
const bindingPackageVersion = require('@mariozechner/clipboard-openharmony-x64/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} catch (e) {
loadErrors.push(e)
}
} else if (process.arch === 'arm') {
try {
return require('./clipboard.openharmony-arm.node')
} catch (e) {
loadErrors.push(e)
}
try {
const binding = require('@mariozechner/clipboard-openharmony-arm')
const bindingPackageVersion = require('@mariozechner/clipboard-openharmony-arm/package.json').version
if (bindingPackageVersion !== '0.3.9' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
throw new Error(`Native binding package version mismatch, expected 0.3.9 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
}
return binding
} 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()
// NAPI_RS_FORCE_WASI is a tri-state flag:
// unset / any other value → native binding preferred, WASI is only a fallback
// 'true' → force WASI fallback even if native loaded
// 'error' → force WASI and throw if no WASI binding is found
// Treating any non-empty string as truthy (the historical behavior) meant
// NAPI_RS_FORCE_WASI=false, NAPI_RS_FORCE_WASI=0, etc. inadvertently triggered
// the WASI path, causing ENOENT for packages shipped without a .wasi.cjs file.
const forceWasi =
process.env.NAPI_RS_FORCE_WASI === 'true' || process.env.NAPI_RS_FORCE_WASI === 'error'
if (!nativeBinding || forceWasi) {
let wasiBinding = null
let wasiBindingError = null
try {
wasiBinding = require('./clipboard.wasi.cjs')
nativeBinding = wasiBinding
} catch (err) {
if (forceWasi) {
wasiBindingError = err
}
}
if (!nativeBinding || forceWasi) {
try {
wasiBinding = require('@mariozechner/clipboard-wasm32-wasi')
nativeBinding = wasiBinding
} catch (err) {
if (forceWasi) {
if (!wasiBindingError) {
wasiBindingError = err
} else {
wasiBindingError.cause = err
}
loadErrors.push(err)
}
}
}
if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {
const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')
error.cause = wasiBindingError
throw error
}
}
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.reduce((err, cur) => {
cur.cause = err
return cur
}),
},
)
}

@@ -298,21 +588,20 @@ throw new Error(`Failed to load native binding`)

const { availableFormats, getText, setText, hasText, getImageBinary, getImageBase64, setImageBinary, setImageBase64, hasImage, getHtml, setHtml, hasHtml, getRtf, setRtf, hasRtf, clear, watch, callThreadsafeFunction } = nativeBinding
module.exports.availableFormats = availableFormats
module.exports.getText = getText
module.exports.setText = setText
module.exports.hasText = hasText
module.exports.getImageBinary = getImageBinary
module.exports.getImageBase64 = getImageBase64
module.exports.setImageBinary = setImageBinary
module.exports.setImageBase64 = setImageBase64
module.exports.hasImage = hasImage
module.exports.getHtml = getHtml
module.exports.setHtml = setHtml
module.exports.hasHtml = hasHtml
module.exports.getRtf = getRtf
module.exports.setRtf = setRtf
module.exports.hasRtf = hasRtf
module.exports.clear = clear
module.exports.watch = watch
module.exports.callThreadsafeFunction = callThreadsafeFunction
module.exports = nativeBinding
module.exports.availableFormats = nativeBinding.availableFormats
module.exports.callThreadsafeFunction = nativeBinding.callThreadsafeFunction
module.exports.clear = nativeBinding.clear
module.exports.getHtml = nativeBinding.getHtml
module.exports.getImageBase64 = nativeBinding.getImageBase64
module.exports.getImageBinary = nativeBinding.getImageBinary
module.exports.getRtf = nativeBinding.getRtf
module.exports.getText = nativeBinding.getText
module.exports.hasHtml = nativeBinding.hasHtml
module.exports.hasImage = nativeBinding.hasImage
module.exports.hasRtf = nativeBinding.hasRtf
module.exports.hasText = nativeBinding.hasText
module.exports.setHtml = nativeBinding.setHtml
module.exports.setImageBase64 = nativeBinding.setImageBase64
module.exports.setImageBinary = nativeBinding.setImageBinary
module.exports.setRtf = nativeBinding.setRtf
module.exports.setText = nativeBinding.setText
module.exports.watch = nativeBinding.watch
{
"name": "@mariozechner/clipboard",
"version": "0.3.6",
"version": "0.3.9",
"main": "index.js",

@@ -26,3 +26,3 @@ "types": "index.d.ts",

"devDependencies": {
"@napi-rs/cli": "^2.18.0",
"@napi-rs/cli": "3.7.0",
"ava": "^6.0.1"

@@ -40,19 +40,19 @@ },

"build:debug": "napi build --platform",
"prepublishOnly": "napi prepublish -t npm",
"prepublishOnly": "napi pre-publish -t npm",
"test": "ava",
"universal": "napi universal",
"universal": "napi universalize -o artifacts",
"version": "napi version"
},
"optionalDependencies": {
"@mariozechner/clipboard-darwin-arm64": "0.3.6",
"@mariozechner/clipboard-darwin-universal": "0.3.6",
"@mariozechner/clipboard-darwin-x64": "0.3.6",
"@mariozechner/clipboard-linux-arm64-gnu": "0.3.6",
"@mariozechner/clipboard-linux-arm64-musl": "0.3.6",
"@mariozechner/clipboard-linux-riscv64-gnu": "0.3.6",
"@mariozechner/clipboard-linux-x64-gnu": "0.3.6",
"@mariozechner/clipboard-linux-x64-musl": "0.3.6",
"@mariozechner/clipboard-win32-arm64-msvc": "0.3.6",
"@mariozechner/clipboard-win32-x64-msvc": "0.3.6"
"@mariozechner/clipboard-darwin-arm64": "0.3.9",
"@mariozechner/clipboard-darwin-universal": "0.3.9",
"@mariozechner/clipboard-darwin-x64": "0.3.9",
"@mariozechner/clipboard-linux-arm64-gnu": "0.3.9",
"@mariozechner/clipboard-linux-arm64-musl": "0.3.9",
"@mariozechner/clipboard-linux-riscv64-gnu": "0.3.9",
"@mariozechner/clipboard-linux-x64-gnu": "0.3.9",
"@mariozechner/clipboard-linux-x64-musl": "0.3.9",
"@mariozechner/clipboard-win32-arm64-msvc": "0.3.9",
"@mariozechner/clipboard-win32-x64-msvc": "0.3.9"
}
}

@@ -12,6 +12,5 @@ #![deny(clippy::all)]

bindgen_prelude::*,
threadsafe_function::{ErrorStrategy, ThreadsafeFunction, ThreadsafeFunctionCallMode},
JsFunction,
threadsafe_function::{ThreadsafeFunction, ThreadsafeFunctionCallMode},
};
use std::{thread, time::Duration};
use std::{sync::Arc, thread, time::Duration};

@@ -166,9 +165,5 @@ #[macro_use]

#[napi]
pub fn call_threadsafe_function(callback: JsFunction) -> Result<()> {
let tsfn: ThreadsafeFunction<u32, ErrorStrategy::CalleeHandled> = callback
.create_threadsafe_function(0, |ctx| {
ctx.env.create_uint32(ctx.value + 1).map(|v| vec![v])
})?;
pub fn call_threadsafe_function(callback: Arc<ThreadsafeFunction<u32, ()>>) -> Result<()> {
for n in 0..10 {
let tsfn = tsfn.clone();
let tsfn = Arc::clone(&callback);
thread::spawn(move || {

@@ -175,0 +170,0 @@ tsfn.call(Ok(n), ThreadsafeFunctionCallMode::Blocking);