diffx-js 0.5.6 → 0.5.9
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/README.md +57 -46
- package/diffx-js.linux-x64-gnu.node +0 -0
- package/examples.ts +320 -0
- package/index.d.ts +157 -0
- package/index.js +313 -44
- package/package.json +31 -13
- package/test.js +10 -14
- package/bin/darwin-arm64/diffx +0 -0
- package/bin/darwin-x64/diffx +0 -0
- package/bin/diffx +0 -0
- package/bin/linux-x64/diffx +0 -0
- package/bin/win32-x64/diffx.exe +0 -0
- package/examples.js +0 -468
- package/lib.js +0 -334
package/index.js
CHANGED
|
@@ -1,53 +1,322 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/* prettier-ignore */
|
|
4
|
+
|
|
5
|
+
/* auto-generated by NAPI-RS */
|
|
6
|
+
|
|
7
|
+
const { existsSync, readFileSync } = require('fs')
|
|
8
|
+
const { join } = require('path')
|
|
9
|
+
|
|
10
|
+
const { platform, arch } = process
|
|
11
|
+
|
|
12
|
+
let nativeBinding = null
|
|
13
|
+
let localFileExisted = false
|
|
14
|
+
let loadError = null
|
|
15
|
+
|
|
16
|
+
function isMusl() {
|
|
17
|
+
// For Node 10
|
|
18
|
+
if (!process.report || typeof process.report.getReport !== 'function') {
|
|
19
|
+
try {
|
|
20
|
+
const lddPath = require('child_process').execSync('which ldd').toString().trim()
|
|
21
|
+
return readFileSync(lddPath, 'utf8').includes('musl')
|
|
22
|
+
} catch (e) {
|
|
23
|
+
return true
|
|
19
24
|
}
|
|
20
|
-
} else if (platform === 'linux') {
|
|
21
|
-
return { subdir: 'linux-x64', binaryName: 'diffx' };
|
|
22
25
|
} else {
|
|
23
|
-
|
|
26
|
+
const { glibcVersionRuntime } = process.report.getReport().header
|
|
27
|
+
return !glibcVersionRuntime
|
|
24
28
|
}
|
|
25
29
|
}
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
switch (platform) {
|
|
32
|
+
case 'android':
|
|
33
|
+
switch (arch) {
|
|
34
|
+
case 'arm64':
|
|
35
|
+
localFileExisted = existsSync(join(__dirname, 'diffx-js.android-arm64.node'))
|
|
36
|
+
try {
|
|
37
|
+
if (localFileExisted) {
|
|
38
|
+
nativeBinding = require('./diffx-js.android-arm64.node')
|
|
39
|
+
} else {
|
|
40
|
+
nativeBinding = require('diffx-js-android-arm64')
|
|
41
|
+
}
|
|
42
|
+
} catch (e) {
|
|
43
|
+
loadError = e
|
|
44
|
+
}
|
|
45
|
+
break
|
|
46
|
+
case 'arm':
|
|
47
|
+
localFileExisted = existsSync(join(__dirname, 'diffx-js.android-arm-eabi.node'))
|
|
48
|
+
try {
|
|
49
|
+
if (localFileExisted) {
|
|
50
|
+
nativeBinding = require('./diffx-js.android-arm-eabi.node')
|
|
51
|
+
} else {
|
|
52
|
+
nativeBinding = require('diffx-js-android-arm-eabi')
|
|
53
|
+
}
|
|
54
|
+
} catch (e) {
|
|
55
|
+
loadError = e
|
|
56
|
+
}
|
|
57
|
+
break
|
|
58
|
+
default:
|
|
59
|
+
throw new Error(`Unsupported architecture on Android ${arch}`)
|
|
60
|
+
}
|
|
61
|
+
break
|
|
62
|
+
case 'win32':
|
|
63
|
+
switch (arch) {
|
|
64
|
+
case 'x64':
|
|
65
|
+
localFileExisted = existsSync(
|
|
66
|
+
join(__dirname, 'diffx-js.win32-x64-msvc.node')
|
|
67
|
+
)
|
|
68
|
+
try {
|
|
69
|
+
if (localFileExisted) {
|
|
70
|
+
nativeBinding = require('./diffx-js.win32-x64-msvc.node')
|
|
71
|
+
} else {
|
|
72
|
+
nativeBinding = require('diffx-js-win32-x64-msvc')
|
|
73
|
+
}
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadError = e
|
|
76
|
+
}
|
|
77
|
+
break
|
|
78
|
+
case 'ia32':
|
|
79
|
+
localFileExisted = existsSync(
|
|
80
|
+
join(__dirname, 'diffx-js.win32-ia32-msvc.node')
|
|
81
|
+
)
|
|
82
|
+
try {
|
|
83
|
+
if (localFileExisted) {
|
|
84
|
+
nativeBinding = require('./diffx-js.win32-ia32-msvc.node')
|
|
85
|
+
} else {
|
|
86
|
+
nativeBinding = require('diffx-js-win32-ia32-msvc')
|
|
87
|
+
}
|
|
88
|
+
} catch (e) {
|
|
89
|
+
loadError = e
|
|
90
|
+
}
|
|
91
|
+
break
|
|
92
|
+
case 'arm64':
|
|
93
|
+
localFileExisted = existsSync(
|
|
94
|
+
join(__dirname, 'diffx-js.win32-arm64-msvc.node')
|
|
95
|
+
)
|
|
96
|
+
try {
|
|
97
|
+
if (localFileExisted) {
|
|
98
|
+
nativeBinding = require('./diffx-js.win32-arm64-msvc.node')
|
|
99
|
+
} else {
|
|
100
|
+
nativeBinding = require('diffx-js-win32-arm64-msvc')
|
|
101
|
+
}
|
|
102
|
+
} catch (e) {
|
|
103
|
+
loadError = e
|
|
104
|
+
}
|
|
105
|
+
break
|
|
106
|
+
default:
|
|
107
|
+
throw new Error(`Unsupported architecture on Windows: ${arch}`)
|
|
108
|
+
}
|
|
109
|
+
break
|
|
110
|
+
case 'darwin':
|
|
111
|
+
localFileExisted = existsSync(join(__dirname, 'diffx-js.darwin-universal.node'))
|
|
112
|
+
try {
|
|
113
|
+
if (localFileExisted) {
|
|
114
|
+
nativeBinding = require('./diffx-js.darwin-universal.node')
|
|
115
|
+
} else {
|
|
116
|
+
nativeBinding = require('diffx-js-darwin-universal')
|
|
117
|
+
}
|
|
118
|
+
break
|
|
119
|
+
} catch {}
|
|
120
|
+
switch (arch) {
|
|
121
|
+
case 'x64':
|
|
122
|
+
localFileExisted = existsSync(join(__dirname, 'diffx-js.darwin-x64.node'))
|
|
123
|
+
try {
|
|
124
|
+
if (localFileExisted) {
|
|
125
|
+
nativeBinding = require('./diffx-js.darwin-x64.node')
|
|
126
|
+
} else {
|
|
127
|
+
nativeBinding = require('diffx-js-darwin-x64')
|
|
128
|
+
}
|
|
129
|
+
} catch (e) {
|
|
130
|
+
loadError = e
|
|
131
|
+
}
|
|
132
|
+
break
|
|
133
|
+
case 'arm64':
|
|
134
|
+
localFileExisted = existsSync(
|
|
135
|
+
join(__dirname, 'diffx-js.darwin-arm64.node')
|
|
136
|
+
)
|
|
137
|
+
try {
|
|
138
|
+
if (localFileExisted) {
|
|
139
|
+
nativeBinding = require('./diffx-js.darwin-arm64.node')
|
|
140
|
+
} else {
|
|
141
|
+
nativeBinding = require('diffx-js-darwin-arm64')
|
|
142
|
+
}
|
|
143
|
+
} catch (e) {
|
|
144
|
+
loadError = e
|
|
145
|
+
}
|
|
146
|
+
break
|
|
147
|
+
default:
|
|
148
|
+
throw new Error(`Unsupported architecture on macOS: ${arch}`)
|
|
149
|
+
}
|
|
150
|
+
break
|
|
151
|
+
case 'freebsd':
|
|
152
|
+
if (arch !== 'x64') {
|
|
153
|
+
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
|
|
154
|
+
}
|
|
155
|
+
localFileExisted = existsSync(join(__dirname, 'diffx-js.freebsd-x64.node'))
|
|
156
|
+
try {
|
|
157
|
+
if (localFileExisted) {
|
|
158
|
+
nativeBinding = require('./diffx-js.freebsd-x64.node')
|
|
159
|
+
} else {
|
|
160
|
+
nativeBinding = require('diffx-js-freebsd-x64')
|
|
161
|
+
}
|
|
162
|
+
} catch (e) {
|
|
163
|
+
loadError = e
|
|
164
|
+
}
|
|
165
|
+
break
|
|
166
|
+
case 'linux':
|
|
167
|
+
switch (arch) {
|
|
168
|
+
case 'x64':
|
|
169
|
+
if (isMusl()) {
|
|
170
|
+
localFileExisted = existsSync(
|
|
171
|
+
join(__dirname, 'diffx-js.linux-x64-musl.node')
|
|
172
|
+
)
|
|
173
|
+
try {
|
|
174
|
+
if (localFileExisted) {
|
|
175
|
+
nativeBinding = require('./diffx-js.linux-x64-musl.node')
|
|
176
|
+
} else {
|
|
177
|
+
nativeBinding = require('diffx-js-linux-x64-musl')
|
|
178
|
+
}
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadError = e
|
|
181
|
+
}
|
|
182
|
+
} else {
|
|
183
|
+
localFileExisted = existsSync(
|
|
184
|
+
join(__dirname, 'diffx-js.linux-x64-gnu.node')
|
|
185
|
+
)
|
|
186
|
+
try {
|
|
187
|
+
if (localFileExisted) {
|
|
188
|
+
nativeBinding = require('./diffx-js.linux-x64-gnu.node')
|
|
189
|
+
} else {
|
|
190
|
+
nativeBinding = require('diffx-js-linux-x64-gnu')
|
|
191
|
+
}
|
|
192
|
+
} catch (e) {
|
|
193
|
+
loadError = e
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
break
|
|
197
|
+
case 'arm64':
|
|
198
|
+
if (isMusl()) {
|
|
199
|
+
localFileExisted = existsSync(
|
|
200
|
+
join(__dirname, 'diffx-js.linux-arm64-musl.node')
|
|
201
|
+
)
|
|
202
|
+
try {
|
|
203
|
+
if (localFileExisted) {
|
|
204
|
+
nativeBinding = require('./diffx-js.linux-arm64-musl.node')
|
|
205
|
+
} else {
|
|
206
|
+
nativeBinding = require('diffx-js-linux-arm64-musl')
|
|
207
|
+
}
|
|
208
|
+
} catch (e) {
|
|
209
|
+
loadError = e
|
|
210
|
+
}
|
|
211
|
+
} else {
|
|
212
|
+
localFileExisted = existsSync(
|
|
213
|
+
join(__dirname, 'diffx-js.linux-arm64-gnu.node')
|
|
214
|
+
)
|
|
215
|
+
try {
|
|
216
|
+
if (localFileExisted) {
|
|
217
|
+
nativeBinding = require('./diffx-js.linux-arm64-gnu.node')
|
|
218
|
+
} else {
|
|
219
|
+
nativeBinding = require('diffx-js-linux-arm64-gnu')
|
|
220
|
+
}
|
|
221
|
+
} catch (e) {
|
|
222
|
+
loadError = e
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
break
|
|
226
|
+
case 'arm':
|
|
227
|
+
if (isMusl()) {
|
|
228
|
+
localFileExisted = existsSync(
|
|
229
|
+
join(__dirname, 'diffx-js.linux-arm-musleabihf.node')
|
|
230
|
+
)
|
|
231
|
+
try {
|
|
232
|
+
if (localFileExisted) {
|
|
233
|
+
nativeBinding = require('./diffx-js.linux-arm-musleabihf.node')
|
|
234
|
+
} else {
|
|
235
|
+
nativeBinding = require('diffx-js-linux-arm-musleabihf')
|
|
236
|
+
}
|
|
237
|
+
} catch (e) {
|
|
238
|
+
loadError = e
|
|
239
|
+
}
|
|
240
|
+
} else {
|
|
241
|
+
localFileExisted = existsSync(
|
|
242
|
+
join(__dirname, 'diffx-js.linux-arm-gnueabihf.node')
|
|
243
|
+
)
|
|
244
|
+
try {
|
|
245
|
+
if (localFileExisted) {
|
|
246
|
+
nativeBinding = require('./diffx-js.linux-arm-gnueabihf.node')
|
|
247
|
+
} else {
|
|
248
|
+
nativeBinding = require('diffx-js-linux-arm-gnueabihf')
|
|
249
|
+
}
|
|
250
|
+
} catch (e) {
|
|
251
|
+
loadError = e
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
break
|
|
255
|
+
case 'riscv64':
|
|
256
|
+
if (isMusl()) {
|
|
257
|
+
localFileExisted = existsSync(
|
|
258
|
+
join(__dirname, 'diffx-js.linux-riscv64-musl.node')
|
|
259
|
+
)
|
|
260
|
+
try {
|
|
261
|
+
if (localFileExisted) {
|
|
262
|
+
nativeBinding = require('./diffx-js.linux-riscv64-musl.node')
|
|
263
|
+
} else {
|
|
264
|
+
nativeBinding = require('diffx-js-linux-riscv64-musl')
|
|
265
|
+
}
|
|
266
|
+
} catch (e) {
|
|
267
|
+
loadError = e
|
|
268
|
+
}
|
|
269
|
+
} else {
|
|
270
|
+
localFileExisted = existsSync(
|
|
271
|
+
join(__dirname, 'diffx-js.linux-riscv64-gnu.node')
|
|
272
|
+
)
|
|
273
|
+
try {
|
|
274
|
+
if (localFileExisted) {
|
|
275
|
+
nativeBinding = require('./diffx-js.linux-riscv64-gnu.node')
|
|
276
|
+
} else {
|
|
277
|
+
nativeBinding = require('diffx-js-linux-riscv64-gnu')
|
|
278
|
+
}
|
|
279
|
+
} catch (e) {
|
|
280
|
+
loadError = e
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
break
|
|
284
|
+
case 's390x':
|
|
285
|
+
localFileExisted = existsSync(
|
|
286
|
+
join(__dirname, 'diffx-js.linux-s390x-gnu.node')
|
|
287
|
+
)
|
|
288
|
+
try {
|
|
289
|
+
if (localFileExisted) {
|
|
290
|
+
nativeBinding = require('./diffx-js.linux-s390x-gnu.node')
|
|
291
|
+
} else {
|
|
292
|
+
nativeBinding = require('diffx-js-linux-s390x-gnu')
|
|
293
|
+
}
|
|
294
|
+
} catch (e) {
|
|
295
|
+
loadError = e
|
|
296
|
+
}
|
|
297
|
+
break
|
|
298
|
+
default:
|
|
299
|
+
throw new Error(`Unsupported architecture on Linux: ${arch}`)
|
|
300
|
+
}
|
|
301
|
+
break
|
|
302
|
+
default:
|
|
303
|
+
throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
|
|
39
304
|
}
|
|
40
305
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
306
|
+
if (!nativeBinding) {
|
|
307
|
+
if (loadError) {
|
|
308
|
+
throw loadError
|
|
309
|
+
}
|
|
310
|
+
throw new Error(`Failed to load native binding`)
|
|
311
|
+
}
|
|
45
312
|
|
|
46
|
-
|
|
47
|
-
process.exit(code);
|
|
48
|
-
});
|
|
313
|
+
const { diff, parseJson, parseCsv, parseYaml, parseToml, parseIni, parseXml, formatOutput } = nativeBinding
|
|
49
314
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
315
|
+
module.exports.diff = diff
|
|
316
|
+
module.exports.parseJson = parseJson
|
|
317
|
+
module.exports.parseCsv = parseCsv
|
|
318
|
+
module.exports.parseYaml = parseYaml
|
|
319
|
+
module.exports.parseToml = parseToml
|
|
320
|
+
module.exports.parseIni = parseIni
|
|
321
|
+
module.exports.parseXml = parseXml
|
|
322
|
+
module.exports.formatOutput = formatOutput
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "diffx-js",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.9",
|
|
4
4
|
"description": "A Node.js wrapper for the diffx CLI tool - semantic diffing of JSON, YAML, TOML, XML, INI, and CSV files. Focuses on structural meaning rather than formatting.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"diff",
|
|
@@ -20,25 +20,26 @@
|
|
|
20
20
|
"automation",
|
|
21
21
|
"data-analysis"
|
|
22
22
|
],
|
|
23
|
-
"main": "
|
|
24
|
-
"
|
|
25
|
-
"diffx": "index.js"
|
|
26
|
-
},
|
|
23
|
+
"main": "index.js",
|
|
24
|
+
"types": "index.d.ts",
|
|
27
25
|
"scripts": {
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
26
|
+
"build": "napi build --platform --release",
|
|
27
|
+
"build:debug": "napi build --platform",
|
|
28
|
+
"test": "npm run build && cd tests && npm test",
|
|
29
|
+
"examples": "npm run build && npx tsx examples.ts",
|
|
30
|
+
"verify": "npm run build && node -e \"console.log(require('./index.js'))\"",
|
|
31
|
+
"prepublish": "npm run build",
|
|
32
|
+
"artifacts": "napi artifacts"
|
|
32
33
|
},
|
|
33
34
|
"engines": {
|
|
34
35
|
"node": ">=12.0.0"
|
|
35
36
|
},
|
|
36
37
|
"files": [
|
|
37
38
|
"index.js",
|
|
38
|
-
"
|
|
39
|
-
"
|
|
39
|
+
"index.d.ts",
|
|
40
|
+
"*.node",
|
|
40
41
|
"README.md",
|
|
41
|
-
"examples.
|
|
42
|
+
"examples.ts",
|
|
42
43
|
"test.js"
|
|
43
44
|
],
|
|
44
45
|
"os": [
|
|
@@ -56,7 +57,7 @@
|
|
|
56
57
|
"repository": {
|
|
57
58
|
"type": "git",
|
|
58
59
|
"url": "git+https://github.com/kako-jun/diffx.git",
|
|
59
|
-
"directory": "diffx-
|
|
60
|
+
"directory": "diffx-js"
|
|
60
61
|
},
|
|
61
62
|
"bugs": {
|
|
62
63
|
"url": "https://github.com/kako-jun/diffx/issues"
|
|
@@ -64,5 +65,22 @@
|
|
|
64
65
|
"funding": {
|
|
65
66
|
"type": "github",
|
|
66
67
|
"url": "https://github.com/sponsors/kako-jun"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@napi-rs/cli": "^2.18.0"
|
|
71
|
+
},
|
|
72
|
+
"napi": {
|
|
73
|
+
"name": "diffx-js",
|
|
74
|
+
"triples": {
|
|
75
|
+
"defaults": false,
|
|
76
|
+
"additional": [
|
|
77
|
+
"x86_64-pc-windows-msvc",
|
|
78
|
+
"aarch64-pc-windows-msvc",
|
|
79
|
+
"x86_64-apple-darwin",
|
|
80
|
+
"aarch64-apple-darwin",
|
|
81
|
+
"x86_64-unknown-linux-gnu",
|
|
82
|
+
"aarch64-unknown-linux-gnu"
|
|
83
|
+
]
|
|
84
|
+
}
|
|
67
85
|
}
|
|
68
86
|
}
|
package/test.js
CHANGED
|
@@ -175,34 +175,30 @@ async function runTests() {
|
|
|
175
175
|
|
|
176
176
|
// Test 6: Stdin processing
|
|
177
177
|
info('Test 6: Testing stdin processing...');
|
|
178
|
-
const stdinResult = await runCommand('node', [
|
|
179
|
-
path.join(__dirname, 'index.js'),
|
|
180
|
-
'-',
|
|
181
|
-
'test2.json'
|
|
182
|
-
]);
|
|
183
178
|
|
|
184
|
-
|
|
179
|
+
// Use spawn directly with proper stdin handling
|
|
180
|
+
const stdinChild = spawn('node', [
|
|
185
181
|
path.join(__dirname, 'index.js'),
|
|
186
182
|
'-',
|
|
187
|
-
'test2.json'
|
|
183
|
+
path.join(__dirname, 'fixtures', 'test2.json')
|
|
188
184
|
], { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
189
185
|
|
|
190
|
-
|
|
191
|
-
|
|
186
|
+
stdinChild.stdin.write(testData.json1);
|
|
187
|
+
stdinChild.stdin.end();
|
|
192
188
|
|
|
193
189
|
let stdinOutput = '';
|
|
194
|
-
|
|
190
|
+
stdinChild.stdout.on('data', (data) => {
|
|
195
191
|
stdinOutput += data.toString();
|
|
196
192
|
});
|
|
197
193
|
|
|
198
|
-
await new Promise((resolve) => {
|
|
199
|
-
|
|
194
|
+
const stdinExitCode = await new Promise((resolve) => {
|
|
195
|
+
stdinChild.on('close', (code) => resolve(code));
|
|
200
196
|
});
|
|
201
197
|
|
|
202
|
-
if (stdinOutput.includes('
|
|
198
|
+
if (stdinExitCode === 1 && stdinOutput.includes('debug')) {
|
|
203
199
|
success('Stdin processing works correctly');
|
|
204
200
|
} else {
|
|
205
|
-
info(
|
|
201
|
+
info(`Stdin test result: exit code ${stdinExitCode}, output length: ${stdinOutput.length}`);
|
|
206
202
|
}
|
|
207
203
|
|
|
208
204
|
// Test 7: Error handling
|
package/bin/darwin-arm64/diffx
DELETED
|
Binary file
|
package/bin/darwin-x64/diffx
DELETED
|
Binary file
|
package/bin/diffx
DELETED
|
Binary file
|
package/bin/linux-x64/diffx
DELETED
|
Binary file
|
package/bin/win32-x64/diffx.exe
DELETED
|
Binary file
|