rclonefile 1.0.1 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.yarnrc.yml +1 -1
- package/Cargo.toml +6 -5
- package/README.md +43 -11
- package/index.d.ts +4 -5
- package/index.js +525 -201
- package/package.json +32 -37
- package/prettier.config.js +10 -0
- package/src/lib.rs +4 -4
- package/babel.config.js +0 -6
package/.yarnrc.yml
CHANGED
package/Cargo.toml
CHANGED
|
@@ -8,13 +8,14 @@ crate-type = ["cdylib"]
|
|
|
8
8
|
|
|
9
9
|
[dependencies]
|
|
10
10
|
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
|
|
11
|
-
napi = { version = "
|
|
12
|
-
napi-derive = "
|
|
13
|
-
libc = "0.2
|
|
14
|
-
errno = "0.3
|
|
11
|
+
napi = { version = "3", default-features = false, features = ["napi4"] }
|
|
12
|
+
napi-derive = "3"
|
|
13
|
+
libc = "0.2"
|
|
14
|
+
errno = "0.3"
|
|
15
15
|
|
|
16
16
|
[build-dependencies]
|
|
17
|
-
napi-build = "2
|
|
17
|
+
napi-build = "2"
|
|
18
18
|
|
|
19
19
|
[profile.release]
|
|
20
20
|
lto = true
|
|
21
|
+
strip = "symbols"
|
package/README.md
CHANGED
|
@@ -1,41 +1,73 @@
|
|
|
1
1
|
# rclonefile
|
|
2
2
|
|
|
3
|
-
The macOS API for creating copy on write clones of files.
|
|
3
|
+
> The macOS API for creating copy on write clones of files.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
4
6
|
|
|
5
7
|
This is a small wrapper around the
|
|
6
8
|
[clonefile](https://www.manpagez.com/man/2/clonefile/) API on macOS for cloning
|
|
7
9
|
files using the APFS file system.
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
## Usage
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
### async/await
|
|
12
14
|
|
|
13
15
|
```js
|
|
14
16
|
|
|
15
|
-
import {
|
|
17
|
+
import { cloneFile } from "rclonefile";
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
await cloneFile("source/mario.txt", "target/mario-clone-txt");
|
|
18
20
|
|
|
19
21
|
```
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
### Promise
|
|
22
24
|
|
|
23
25
|
```js
|
|
24
26
|
|
|
25
27
|
import { cloneFile } from "rclonefile";
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
cloneFile("source/mario.txt", "target/mario-clone-txt").then(() => {
|
|
30
|
+
// Success
|
|
31
|
+
})
|
|
28
32
|
|
|
29
33
|
```
|
|
30
34
|
|
|
31
|
-
|
|
35
|
+
### Sync API
|
|
32
36
|
|
|
33
37
|
```js
|
|
34
38
|
|
|
39
|
+
import { cloneFileSync } from "rclonefile";
|
|
40
|
+
|
|
41
|
+
cloneFileSync("source/mario.txt", "target/mario-clone-txt");
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Options
|
|
46
|
+
|
|
47
|
+
All functions accept an optional third argument with the following options:
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
interface CloneFileOptions {
|
|
51
|
+
noFollow?: boolean; // Don't follow symlinks, clone the link itself
|
|
52
|
+
noOwnerCopy?: boolean; // Don't copy ownership information
|
|
53
|
+
cloneAcl?: boolean; // Clone ACL (Access Control List) information
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Example with options
|
|
58
|
+
|
|
59
|
+
```js
|
|
35
60
|
import { cloneFile } from "rclonefile";
|
|
36
61
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
})
|
|
62
|
+
// Clone a symlink as a symlink (don't follow it)
|
|
63
|
+
await cloneFile("source/link.txt", "target/link.txt", { noFollow: true });
|
|
40
64
|
|
|
65
|
+
// Clone without copying ownership
|
|
66
|
+
await cloneFile("source/file.txt", "target/file.txt", { noOwnerCopy: true });
|
|
41
67
|
```
|
|
68
|
+
|
|
69
|
+
## Links
|
|
70
|
+
|
|
71
|
+
- [rclonefile-cli](https://github.com/sverrejoh/rclonefile-cli) - CLI for this module
|
|
72
|
+
- [clonefile(2)](https://www.manpagez.com/man/2/clonefile/) - Man page for system API
|
|
73
|
+
|
package/index.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
/* tslint:disable */
|
|
2
|
-
/* eslint-disable */
|
|
3
|
-
|
|
4
1
|
/* auto-generated by NAPI-RS */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
export declare function cloneFile(src: string, dst: string, options?: CloneFileOptions | undefined | null): Promise<number>
|
|
5
4
|
|
|
6
5
|
export interface CloneFileOptions {
|
|
7
6
|
noFollow?: boolean
|
|
8
7
|
noOwnerCopy?: boolean
|
|
9
8
|
cloneAcl?: boolean
|
|
10
9
|
}
|
|
11
|
-
|
|
12
|
-
export function
|
|
10
|
+
|
|
11
|
+
export declare function cloneFileSync(src: string, dst: string, options?: CloneFileOptions | undefined | null): number
|
package/index.js
CHANGED
|
@@ -1,252 +1,576 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
// prettier-ignore
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
/* auto-generated by NAPI-RS */
|
|
5
5
|
|
|
6
|
+
const { readFileSync } = require('node:fs')
|
|
6
7
|
let nativeBinding = null
|
|
7
|
-
|
|
8
|
-
let loadError = null
|
|
8
|
+
const loadErrors = []
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
10
|
+
const isMusl = () => {
|
|
11
|
+
let musl = false
|
|
12
|
+
if (process.platform === 'linux') {
|
|
13
|
+
musl = isMuslFromFilesystem()
|
|
14
|
+
if (musl === null) {
|
|
15
|
+
musl = isMuslFromReport()
|
|
16
|
+
}
|
|
17
|
+
if (musl === null) {
|
|
18
|
+
musl = isMuslFromChildProcess()
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return musl
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')
|
|
25
|
+
|
|
26
|
+
const isMuslFromFilesystem = () => {
|
|
27
|
+
try {
|
|
28
|
+
return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')
|
|
29
|
+
} catch {
|
|
30
|
+
return null
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const isMuslFromReport = () => {
|
|
35
|
+
let report = null
|
|
36
|
+
if (typeof process.report?.getReport === 'function') {
|
|
37
|
+
process.report.excludeNetwork = true
|
|
38
|
+
report = process.report.getReport()
|
|
39
|
+
}
|
|
40
|
+
if (!report) {
|
|
41
|
+
return null
|
|
42
|
+
}
|
|
43
|
+
if (report.header && report.header.glibcVersionRuntime) {
|
|
44
|
+
return false
|
|
45
|
+
}
|
|
46
|
+
if (Array.isArray(report.sharedObjects)) {
|
|
47
|
+
if (report.sharedObjects.some(isFileMusl)) {
|
|
17
48
|
return true
|
|
18
49
|
}
|
|
19
|
-
} else {
|
|
20
|
-
const { glibcVersionRuntime } = process.report.getReport().header
|
|
21
|
-
return !glibcVersionRuntime
|
|
22
50
|
}
|
|
51
|
+
return false
|
|
23
52
|
}
|
|
24
53
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
54
|
+
const isMuslFromChildProcess = () => {
|
|
55
|
+
try {
|
|
56
|
+
return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')
|
|
57
|
+
} catch (e) {
|
|
58
|
+
// If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false
|
|
59
|
+
return false
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function requireNative() {
|
|
64
|
+
if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) {
|
|
65
|
+
try {
|
|
66
|
+
return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
loadErrors.push(err)
|
|
69
|
+
}
|
|
70
|
+
} else if (process.platform === 'android') {
|
|
71
|
+
if (process.arch === 'arm64') {
|
|
72
|
+
try {
|
|
73
|
+
return require('./rclonefile.android-arm64.node')
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadErrors.push(e)
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const binding = require('rclonefile-android-arm64')
|
|
79
|
+
const bindingPackageVersion = require('rclonefile-android-arm64/package.json').version
|
|
80
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
81
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
82
|
+
}
|
|
83
|
+
return binding
|
|
84
|
+
} catch (e) {
|
|
85
|
+
loadErrors.push(e)
|
|
86
|
+
}
|
|
87
|
+
} else if (process.arch === 'arm') {
|
|
88
|
+
try {
|
|
89
|
+
return require('./rclonefile.android-arm-eabi.node')
|
|
90
|
+
} catch (e) {
|
|
91
|
+
loadErrors.push(e)
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const binding = require('rclonefile-android-arm-eabi')
|
|
95
|
+
const bindingPackageVersion = require('rclonefile-android-arm-eabi/package.json').version
|
|
96
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
97
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
98
|
+
}
|
|
99
|
+
return binding
|
|
100
|
+
} catch (e) {
|
|
101
|
+
loadErrors.push(e)
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))
|
|
105
|
+
}
|
|
106
|
+
} else if (process.platform === 'win32') {
|
|
107
|
+
if (process.arch === 'x64') {
|
|
108
|
+
if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') {
|
|
109
|
+
try {
|
|
110
|
+
return require('./rclonefile.win32-x64-gnu.node')
|
|
111
|
+
} catch (e) {
|
|
112
|
+
loadErrors.push(e)
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const binding = require('rclonefile-win32-x64-gnu')
|
|
116
|
+
const bindingPackageVersion = require('rclonefile-win32-x64-gnu/package.json').version
|
|
117
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
118
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
119
|
+
}
|
|
120
|
+
return binding
|
|
121
|
+
} catch (e) {
|
|
122
|
+
loadErrors.push(e)
|
|
123
|
+
}
|
|
124
|
+
} else {
|
|
125
|
+
try {
|
|
126
|
+
return require('./rclonefile.win32-x64-msvc.node')
|
|
127
|
+
} catch (e) {
|
|
128
|
+
loadErrors.push(e)
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const binding = require('rclonefile-win32-x64-msvc')
|
|
132
|
+
const bindingPackageVersion = require('rclonefile-win32-x64-msvc/package.json').version
|
|
133
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
134
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
135
|
+
}
|
|
136
|
+
return binding
|
|
137
|
+
} catch (e) {
|
|
138
|
+
loadErrors.push(e)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
} else if (process.arch === 'ia32') {
|
|
142
|
+
try {
|
|
143
|
+
return require('./rclonefile.win32-ia32-msvc.node')
|
|
144
|
+
} catch (e) {
|
|
145
|
+
loadErrors.push(e)
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const binding = require('rclonefile-win32-ia32-msvc')
|
|
149
|
+
const bindingPackageVersion = require('rclonefile-win32-ia32-msvc/package.json').version
|
|
150
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
151
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
152
|
+
}
|
|
153
|
+
return binding
|
|
154
|
+
} catch (e) {
|
|
155
|
+
loadErrors.push(e)
|
|
156
|
+
}
|
|
157
|
+
} else if (process.arch === 'arm64') {
|
|
158
|
+
try {
|
|
159
|
+
return require('./rclonefile.win32-arm64-msvc.node')
|
|
160
|
+
} catch (e) {
|
|
161
|
+
loadErrors.push(e)
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const binding = require('rclonefile-win32-arm64-msvc')
|
|
165
|
+
const bindingPackageVersion = require('rclonefile-win32-arm64-msvc/package.json').version
|
|
166
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
167
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
168
|
+
}
|
|
169
|
+
return binding
|
|
170
|
+
} catch (e) {
|
|
171
|
+
loadErrors.push(e)
|
|
172
|
+
}
|
|
173
|
+
} else {
|
|
174
|
+
loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
|
|
175
|
+
}
|
|
176
|
+
} else if (process.platform === 'darwin') {
|
|
177
|
+
try {
|
|
178
|
+
return require('./rclonefile.darwin-universal.node')
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadErrors.push(e)
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const binding = require('rclonefile-darwin-universal')
|
|
184
|
+
const bindingPackageVersion = require('rclonefile-darwin-universal/package.json').version
|
|
185
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
186
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
187
|
+
}
|
|
188
|
+
return binding
|
|
189
|
+
} catch (e) {
|
|
190
|
+
loadErrors.push(e)
|
|
191
|
+
}
|
|
192
|
+
if (process.arch === 'x64') {
|
|
193
|
+
try {
|
|
194
|
+
return require('./rclonefile.darwin-x64.node')
|
|
195
|
+
} catch (e) {
|
|
196
|
+
loadErrors.push(e)
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const binding = require('rclonefile-darwin-x64')
|
|
200
|
+
const bindingPackageVersion = require('rclonefile-darwin-x64/package.json').version
|
|
201
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
202
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
203
|
+
}
|
|
204
|
+
return binding
|
|
205
|
+
} catch (e) {
|
|
206
|
+
loadErrors.push(e)
|
|
207
|
+
}
|
|
208
|
+
} else if (process.arch === 'arm64') {
|
|
209
|
+
try {
|
|
210
|
+
return require('./rclonefile.darwin-arm64.node')
|
|
211
|
+
} catch (e) {
|
|
212
|
+
loadErrors.push(e)
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const binding = require('rclonefile-darwin-arm64')
|
|
216
|
+
const bindingPackageVersion = require('rclonefile-darwin-arm64/package.json').version
|
|
217
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
218
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
219
|
+
}
|
|
220
|
+
return binding
|
|
221
|
+
} catch (e) {
|
|
222
|
+
loadErrors.push(e)
|
|
223
|
+
}
|
|
224
|
+
} else {
|
|
225
|
+
loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))
|
|
226
|
+
}
|
|
227
|
+
} else if (process.platform === 'freebsd') {
|
|
228
|
+
if (process.arch === 'x64') {
|
|
229
|
+
try {
|
|
230
|
+
return require('./rclonefile.freebsd-x64.node')
|
|
231
|
+
} catch (e) {
|
|
232
|
+
loadErrors.push(e)
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
const binding = require('rclonefile-freebsd-x64')
|
|
236
|
+
const bindingPackageVersion = require('rclonefile-freebsd-x64/package.json').version
|
|
237
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
238
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
239
|
+
}
|
|
240
|
+
return binding
|
|
241
|
+
} catch (e) {
|
|
242
|
+
loadErrors.push(e)
|
|
243
|
+
}
|
|
244
|
+
} else if (process.arch === 'arm64') {
|
|
245
|
+
try {
|
|
246
|
+
return require('./rclonefile.freebsd-arm64.node')
|
|
247
|
+
} catch (e) {
|
|
248
|
+
loadErrors.push(e)
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const binding = require('rclonefile-freebsd-arm64')
|
|
252
|
+
const bindingPackageVersion = require('rclonefile-freebsd-arm64/package.json').version
|
|
253
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
254
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
255
|
+
}
|
|
256
|
+
return binding
|
|
257
|
+
} catch (e) {
|
|
258
|
+
loadErrors.push(e)
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))
|
|
262
|
+
}
|
|
263
|
+
} else if (process.platform === 'linux') {
|
|
264
|
+
if (process.arch === 'x64') {
|
|
265
|
+
if (isMusl()) {
|
|
266
|
+
try {
|
|
267
|
+
return require('./rclonefile.linux-x64-musl.node')
|
|
36
268
|
} catch (e) {
|
|
37
|
-
|
|
269
|
+
loadErrors.push(e)
|
|
38
270
|
}
|
|
39
|
-
break
|
|
40
|
-
case 'arm':
|
|
41
|
-
localFileExisted = existsSync(join(__dirname, 'rclonefile.android-arm-eabi.node'))
|
|
42
271
|
try {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
272
|
+
const binding = require('rclonefile-linux-x64-musl')
|
|
273
|
+
const bindingPackageVersion = require('rclonefile-linux-x64-musl/package.json').version
|
|
274
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
275
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
47
276
|
}
|
|
277
|
+
return binding
|
|
48
278
|
} catch (e) {
|
|
49
|
-
|
|
279
|
+
loadErrors.push(e)
|
|
50
280
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
break
|
|
56
|
-
case 'win32':
|
|
57
|
-
switch (arch) {
|
|
58
|
-
case 'x64':
|
|
59
|
-
localFileExisted = existsSync(
|
|
60
|
-
join(__dirname, 'rclonefile.win32-x64-msvc.node')
|
|
61
|
-
)
|
|
62
|
-
try {
|
|
63
|
-
if (localFileExisted) {
|
|
64
|
-
nativeBinding = require('./rclonefile.win32-x64-msvc.node')
|
|
65
|
-
} else {
|
|
66
|
-
nativeBinding = require('rclonefile-win32-x64-msvc')
|
|
67
|
-
}
|
|
281
|
+
} else {
|
|
282
|
+
try {
|
|
283
|
+
return require('./rclonefile.linux-x64-gnu.node')
|
|
68
284
|
} catch (e) {
|
|
69
|
-
|
|
285
|
+
loadErrors.push(e)
|
|
70
286
|
}
|
|
71
|
-
break
|
|
72
|
-
case 'ia32':
|
|
73
|
-
localFileExisted = existsSync(
|
|
74
|
-
join(__dirname, 'rclonefile.win32-ia32-msvc.node')
|
|
75
|
-
)
|
|
76
287
|
try {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
288
|
+
const binding = require('rclonefile-linux-x64-gnu')
|
|
289
|
+
const bindingPackageVersion = require('rclonefile-linux-x64-gnu/package.json').version
|
|
290
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
291
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
81
292
|
}
|
|
293
|
+
return binding
|
|
294
|
+
} catch (e) {
|
|
295
|
+
loadErrors.push(e)
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
} else if (process.arch === 'arm64') {
|
|
299
|
+
if (isMusl()) {
|
|
300
|
+
try {
|
|
301
|
+
return require('./rclonefile.linux-arm64-musl.node')
|
|
82
302
|
} catch (e) {
|
|
83
|
-
|
|
303
|
+
loadErrors.push(e)
|
|
84
304
|
}
|
|
85
|
-
break
|
|
86
|
-
case 'arm64':
|
|
87
|
-
localFileExisted = existsSync(
|
|
88
|
-
join(__dirname, 'rclonefile.win32-arm64-msvc.node')
|
|
89
|
-
)
|
|
90
305
|
try {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
306
|
+
const binding = require('rclonefile-linux-arm64-musl')
|
|
307
|
+
const bindingPackageVersion = require('rclonefile-linux-arm64-musl/package.json').version
|
|
308
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
309
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
95
310
|
}
|
|
311
|
+
return binding
|
|
96
312
|
} catch (e) {
|
|
97
|
-
|
|
313
|
+
loadErrors.push(e)
|
|
98
314
|
}
|
|
99
|
-
break
|
|
100
|
-
default:
|
|
101
|
-
throw new Error(`Unsupported architecture on Windows: ${arch}`)
|
|
102
|
-
}
|
|
103
|
-
break
|
|
104
|
-
case 'darwin':
|
|
105
|
-
localFileExisted = existsSync(join(__dirname, 'rclonefile.darwin-universal.node'))
|
|
106
|
-
try {
|
|
107
|
-
if (localFileExisted) {
|
|
108
|
-
nativeBinding = require('./rclonefile.darwin-universal.node')
|
|
109
315
|
} else {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (
|
|
119
|
-
|
|
120
|
-
} else {
|
|
121
|
-
nativeBinding = require('rclonefile-darwin-x64')
|
|
316
|
+
try {
|
|
317
|
+
return require('./rclonefile.linux-arm64-gnu.node')
|
|
318
|
+
} catch (e) {
|
|
319
|
+
loadErrors.push(e)
|
|
320
|
+
}
|
|
321
|
+
try {
|
|
322
|
+
const binding = require('rclonefile-linux-arm64-gnu')
|
|
323
|
+
const bindingPackageVersion = require('rclonefile-linux-arm64-gnu/package.json').version
|
|
324
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
325
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
122
326
|
}
|
|
327
|
+
return binding
|
|
328
|
+
} catch (e) {
|
|
329
|
+
loadErrors.push(e)
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
} else if (process.arch === 'arm') {
|
|
333
|
+
if (isMusl()) {
|
|
334
|
+
try {
|
|
335
|
+
return require('./rclonefile.linux-arm-musleabihf.node')
|
|
123
336
|
} catch (e) {
|
|
124
|
-
|
|
337
|
+
loadErrors.push(e)
|
|
125
338
|
}
|
|
126
|
-
break
|
|
127
|
-
case 'arm64':
|
|
128
|
-
localFileExisted = existsSync(
|
|
129
|
-
join(__dirname, 'rclonefile.darwin-arm64.node')
|
|
130
|
-
)
|
|
131
339
|
try {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
340
|
+
const binding = require('rclonefile-linux-arm-musleabihf')
|
|
341
|
+
const bindingPackageVersion = require('rclonefile-linux-arm-musleabihf/package.json').version
|
|
342
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
343
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
136
344
|
}
|
|
345
|
+
return binding
|
|
137
346
|
} catch (e) {
|
|
138
|
-
|
|
347
|
+
loadErrors.push(e)
|
|
139
348
|
}
|
|
140
|
-
break
|
|
141
|
-
default:
|
|
142
|
-
throw new Error(`Unsupported architecture on macOS: ${arch}`)
|
|
143
|
-
}
|
|
144
|
-
break
|
|
145
|
-
case 'freebsd':
|
|
146
|
-
if (arch !== 'x64') {
|
|
147
|
-
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
|
|
148
|
-
}
|
|
149
|
-
localFileExisted = existsSync(join(__dirname, 'rclonefile.freebsd-x64.node'))
|
|
150
|
-
try {
|
|
151
|
-
if (localFileExisted) {
|
|
152
|
-
nativeBinding = require('./rclonefile.freebsd-x64.node')
|
|
153
349
|
} else {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
localFileExisted = existsSync(
|
|
165
|
-
join(__dirname, 'rclonefile.linux-x64-musl.node')
|
|
166
|
-
)
|
|
167
|
-
try {
|
|
168
|
-
if (localFileExisted) {
|
|
169
|
-
nativeBinding = require('./rclonefile.linux-x64-musl.node')
|
|
170
|
-
} else {
|
|
171
|
-
nativeBinding = require('rclonefile-linux-x64-musl')
|
|
172
|
-
}
|
|
173
|
-
} catch (e) {
|
|
174
|
-
loadError = e
|
|
350
|
+
try {
|
|
351
|
+
return require('./rclonefile.linux-arm-gnueabihf.node')
|
|
352
|
+
} catch (e) {
|
|
353
|
+
loadErrors.push(e)
|
|
354
|
+
}
|
|
355
|
+
try {
|
|
356
|
+
const binding = require('rclonefile-linux-arm-gnueabihf')
|
|
357
|
+
const bindingPackageVersion = require('rclonefile-linux-arm-gnueabihf/package.json').version
|
|
358
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
359
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
175
360
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
361
|
+
return binding
|
|
362
|
+
} catch (e) {
|
|
363
|
+
loadErrors.push(e)
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
} else if (process.arch === 'loong64') {
|
|
367
|
+
if (isMusl()) {
|
|
368
|
+
try {
|
|
369
|
+
return require('./rclonefile.linux-loong64-musl.node')
|
|
370
|
+
} catch (e) {
|
|
371
|
+
loadErrors.push(e)
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const binding = require('rclonefile-linux-loong64-musl')
|
|
375
|
+
const bindingPackageVersion = require('rclonefile-linux-loong64-musl/package.json').version
|
|
376
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
377
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
188
378
|
}
|
|
379
|
+
return binding
|
|
380
|
+
} catch (e) {
|
|
381
|
+
loadErrors.push(e)
|
|
189
382
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
} catch (e) {
|
|
203
|
-
loadError = e
|
|
383
|
+
} else {
|
|
384
|
+
try {
|
|
385
|
+
return require('./rclonefile.linux-loong64-gnu.node')
|
|
386
|
+
} catch (e) {
|
|
387
|
+
loadErrors.push(e)
|
|
388
|
+
}
|
|
389
|
+
try {
|
|
390
|
+
const binding = require('rclonefile-linux-loong64-gnu')
|
|
391
|
+
const bindingPackageVersion = require('rclonefile-linux-loong64-gnu/package.json').version
|
|
392
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
393
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
204
394
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
395
|
+
return binding
|
|
396
|
+
} catch (e) {
|
|
397
|
+
loadErrors.push(e)
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
} else if (process.arch === 'riscv64') {
|
|
401
|
+
if (isMusl()) {
|
|
402
|
+
try {
|
|
403
|
+
return require('./rclonefile.linux-riscv64-musl.node')
|
|
404
|
+
} catch (e) {
|
|
405
|
+
loadErrors.push(e)
|
|
406
|
+
}
|
|
407
|
+
try {
|
|
408
|
+
const binding = require('rclonefile-linux-riscv64-musl')
|
|
409
|
+
const bindingPackageVersion = require('rclonefile-linux-riscv64-musl/package.json').version
|
|
410
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
411
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
217
412
|
}
|
|
413
|
+
return binding
|
|
414
|
+
} catch (e) {
|
|
415
|
+
loadErrors.push(e)
|
|
416
|
+
}
|
|
417
|
+
} else {
|
|
418
|
+
try {
|
|
419
|
+
return require('./rclonefile.linux-riscv64-gnu.node')
|
|
420
|
+
} catch (e) {
|
|
421
|
+
loadErrors.push(e)
|
|
218
422
|
}
|
|
219
|
-
break
|
|
220
|
-
case 'arm':
|
|
221
|
-
localFileExisted = existsSync(
|
|
222
|
-
join(__dirname, 'rclonefile.linux-arm-gnueabihf.node')
|
|
223
|
-
)
|
|
224
423
|
try {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
424
|
+
const binding = require('rclonefile-linux-riscv64-gnu')
|
|
425
|
+
const bindingPackageVersion = require('rclonefile-linux-riscv64-gnu/package.json').version
|
|
426
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
427
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
229
428
|
}
|
|
429
|
+
return binding
|
|
230
430
|
} catch (e) {
|
|
231
|
-
|
|
431
|
+
loadErrors.push(e)
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
} else if (process.arch === 'ppc64') {
|
|
435
|
+
try {
|
|
436
|
+
return require('./rclonefile.linux-ppc64-gnu.node')
|
|
437
|
+
} catch (e) {
|
|
438
|
+
loadErrors.push(e)
|
|
439
|
+
}
|
|
440
|
+
try {
|
|
441
|
+
const binding = require('rclonefile-linux-ppc64-gnu')
|
|
442
|
+
const bindingPackageVersion = require('rclonefile-linux-ppc64-gnu/package.json').version
|
|
443
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
444
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
232
445
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
446
|
+
return binding
|
|
447
|
+
} catch (e) {
|
|
448
|
+
loadErrors.push(e)
|
|
449
|
+
}
|
|
450
|
+
} else if (process.arch === 's390x') {
|
|
451
|
+
try {
|
|
452
|
+
return require('./rclonefile.linux-s390x-gnu.node')
|
|
453
|
+
} catch (e) {
|
|
454
|
+
loadErrors.push(e)
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
const binding = require('rclonefile-linux-s390x-gnu')
|
|
458
|
+
const bindingPackageVersion = require('rclonefile-linux-s390x-gnu/package.json').version
|
|
459
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
460
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
461
|
+
}
|
|
462
|
+
return binding
|
|
463
|
+
} catch (e) {
|
|
464
|
+
loadErrors.push(e)
|
|
465
|
+
}
|
|
466
|
+
} else {
|
|
467
|
+
loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))
|
|
236
468
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
469
|
+
} else if (process.platform === 'openharmony') {
|
|
470
|
+
if (process.arch === 'arm64') {
|
|
471
|
+
try {
|
|
472
|
+
return require('./rclonefile.openharmony-arm64.node')
|
|
473
|
+
} catch (e) {
|
|
474
|
+
loadErrors.push(e)
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const binding = require('rclonefile-openharmony-arm64')
|
|
478
|
+
const bindingPackageVersion = require('rclonefile-openharmony-arm64/package.json').version
|
|
479
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
480
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
481
|
+
}
|
|
482
|
+
return binding
|
|
483
|
+
} catch (e) {
|
|
484
|
+
loadErrors.push(e)
|
|
485
|
+
}
|
|
486
|
+
} else if (process.arch === 'x64') {
|
|
487
|
+
try {
|
|
488
|
+
return require('./rclonefile.openharmony-x64.node')
|
|
489
|
+
} catch (e) {
|
|
490
|
+
loadErrors.push(e)
|
|
491
|
+
}
|
|
492
|
+
try {
|
|
493
|
+
const binding = require('rclonefile-openharmony-x64')
|
|
494
|
+
const bindingPackageVersion = require('rclonefile-openharmony-x64/package.json').version
|
|
495
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
496
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
497
|
+
}
|
|
498
|
+
return binding
|
|
499
|
+
} catch (e) {
|
|
500
|
+
loadErrors.push(e)
|
|
501
|
+
}
|
|
502
|
+
} else if (process.arch === 'arm') {
|
|
503
|
+
try {
|
|
504
|
+
return require('./rclonefile.openharmony-arm.node')
|
|
505
|
+
} catch (e) {
|
|
506
|
+
loadErrors.push(e)
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
const binding = require('rclonefile-openharmony-arm')
|
|
510
|
+
const bindingPackageVersion = require('rclonefile-openharmony-arm/package.json').version
|
|
511
|
+
if (bindingPackageVersion !== '1.0.8' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
512
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
513
|
+
}
|
|
514
|
+
return binding
|
|
515
|
+
} catch (e) {
|
|
516
|
+
loadErrors.push(e)
|
|
517
|
+
}
|
|
518
|
+
} else {
|
|
519
|
+
loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`))
|
|
520
|
+
}
|
|
521
|
+
} else {
|
|
522
|
+
loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
nativeBinding = requireNative()
|
|
527
|
+
|
|
528
|
+
if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
|
|
529
|
+
let wasiBinding = null
|
|
530
|
+
let wasiBindingError = null
|
|
531
|
+
try {
|
|
532
|
+
wasiBinding = require('./rclonefile.wasi.cjs')
|
|
533
|
+
nativeBinding = wasiBinding
|
|
534
|
+
} catch (err) {
|
|
535
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
536
|
+
wasiBindingError = err
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
if (!nativeBinding) {
|
|
540
|
+
try {
|
|
541
|
+
wasiBinding = require('rclonefile-wasm32-wasi')
|
|
542
|
+
nativeBinding = wasiBinding
|
|
543
|
+
} catch (err) {
|
|
544
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
545
|
+
wasiBindingError.cause = err
|
|
546
|
+
loadErrors.push(err)
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {
|
|
551
|
+
const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')
|
|
552
|
+
error.cause = wasiBindingError
|
|
553
|
+
throw error
|
|
554
|
+
}
|
|
240
555
|
}
|
|
241
556
|
|
|
242
557
|
if (!nativeBinding) {
|
|
243
|
-
if (
|
|
244
|
-
throw
|
|
558
|
+
if (loadErrors.length > 0) {
|
|
559
|
+
throw new Error(
|
|
560
|
+
`Cannot find native binding. ` +
|
|
561
|
+
`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
|
|
562
|
+
'Please try `npm i` again after removing both package-lock.json and node_modules directory.',
|
|
563
|
+
{
|
|
564
|
+
cause: loadErrors.reduce((err, cur) => {
|
|
565
|
+
cur.cause = err
|
|
566
|
+
return cur
|
|
567
|
+
}),
|
|
568
|
+
},
|
|
569
|
+
)
|
|
245
570
|
}
|
|
246
571
|
throw new Error(`Failed to load native binding`)
|
|
247
572
|
}
|
|
248
573
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
module.exports.cloneFileSync = cloneFileSync
|
|
252
|
-
module.exports.cloneFile = cloneFile
|
|
574
|
+
module.exports = nativeBinding
|
|
575
|
+
module.exports.cloneFile = nativeBinding.cloneFile
|
|
576
|
+
module.exports.cloneFileSync = nativeBinding.cloneFileSync
|
package/package.json
CHANGED
|
@@ -1,51 +1,46 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rclonefile",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
"
|
|
8
|
-
"triples": {
|
|
9
|
-
"defaults": false,
|
|
10
|
-
"additional": [
|
|
11
|
-
"aarch64-apple-darwin",
|
|
12
|
-
"x86_64-apple-darwin"
|
|
13
|
-
]
|
|
14
|
-
}
|
|
3
|
+
"version": "2.0.5",
|
|
4
|
+
"description": "macOS API for creating copy on write clones of files",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/sverrejoh/rclonefile.git"
|
|
15
8
|
},
|
|
16
9
|
"license": "MIT",
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
"@babel/preset-env": "^7.20.2",
|
|
20
|
-
"@babel/preset-typescript": "^7.18.6",
|
|
21
|
-
"@jest/globals": "^29.4.2",
|
|
22
|
-
"@napi-rs/cli": "^2.14.7",
|
|
23
|
-
"ava": "^5.1.1",
|
|
24
|
-
"babel-jest": "^29.4.2",
|
|
25
|
-
"jest": "^29.4.2",
|
|
26
|
-
"prettier": "^2.8.4",
|
|
27
|
-
"tempy": "^1.0.1"
|
|
28
|
-
},
|
|
29
|
-
"engines": {
|
|
30
|
-
"node": ">= 10"
|
|
31
|
-
},
|
|
10
|
+
"main": "index.js",
|
|
11
|
+
"types": "index.d.ts",
|
|
32
12
|
"scripts": {
|
|
33
13
|
"artifacts": "napi artifacts",
|
|
34
14
|
"build": "napi build --platform --release",
|
|
35
15
|
"build:debug": "napi build --platform",
|
|
36
|
-
"prepublishOnly": "napi
|
|
37
|
-
"test": "
|
|
38
|
-
"universal": "napi
|
|
16
|
+
"prepublishOnly": "napi pre-publish -p npm --no-gh-release",
|
|
17
|
+
"test": "vitest",
|
|
18
|
+
"universal": "napi universalize",
|
|
39
19
|
"version": "napi version"
|
|
40
20
|
},
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
"
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@napi-rs/cli": "^3.5.0",
|
|
23
|
+
"@types/node": "^25.0.0",
|
|
24
|
+
"prettier": "^3.7.0",
|
|
25
|
+
"prettier-plugin-packagejson": "^2.5.0",
|
|
26
|
+
"tempy": "^3.1.0",
|
|
27
|
+
"vitest": "^4.0.0"
|
|
28
|
+
},
|
|
29
|
+
"packageManager": "yarn@4.6.0",
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">= 24"
|
|
32
|
+
},
|
|
33
|
+
"napi": {
|
|
34
|
+
"binaryName": "rclonefile",
|
|
35
|
+
"targets": [
|
|
36
|
+
"aarch64-apple-darwin",
|
|
37
|
+
"x86_64-apple-darwin",
|
|
38
|
+
"universal-apple-darwin"
|
|
39
|
+
]
|
|
44
40
|
},
|
|
45
|
-
"repository": "https://github.com/sverrejoh/rclonefile",
|
|
46
|
-
"description": "macOS API for creating copy on write clones of files",
|
|
47
41
|
"optionalDependencies": {
|
|
48
|
-
"rclonefile-darwin-arm64": "
|
|
49
|
-
"rclonefile-darwin-x64": "
|
|
42
|
+
"rclonefile-darwin-arm64": "2.0.5",
|
|
43
|
+
"rclonefile-darwin-x64": "2.0.5",
|
|
44
|
+
"rclonefile-darwin-universal": "2.0.5"
|
|
50
45
|
}
|
|
51
46
|
}
|
package/src/lib.rs
CHANGED
|
@@ -4,7 +4,7 @@ extern crate libc;
|
|
|
4
4
|
use errno::{errno, set_errno};
|
|
5
5
|
use libc::clonefile;
|
|
6
6
|
use napi::bindgen_prelude::AsyncTask;
|
|
7
|
-
use napi::{Env, Error,
|
|
7
|
+
use napi::{Env, Error, Result, Task};
|
|
8
8
|
use std::ffi::CString;
|
|
9
9
|
|
|
10
10
|
#[macro_use]
|
|
@@ -73,14 +73,14 @@ pub struct AsyncClonefile {
|
|
|
73
73
|
#[napi]
|
|
74
74
|
impl Task for AsyncClonefile {
|
|
75
75
|
type Output = i32;
|
|
76
|
-
type JsValue =
|
|
76
|
+
type JsValue = i32;
|
|
77
77
|
|
|
78
78
|
fn compute(&mut self) -> Result<Self::Output> {
|
|
79
79
|
clonefile_sync(self.src.clone(), self.dst.clone(), self.options.clone())
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
fn resolve(&mut self,
|
|
83
|
-
|
|
82
|
+
fn resolve(&mut self, _env: Env, output: i32) -> Result<Self::JsValue> {
|
|
83
|
+
Ok(output)
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
|