html-to-markdown-node 2.6.6 → 2.7.1
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 +60 -1
- package/index.d.ts +22 -14
- package/index.js +540 -207
- package/package.json +10 -12
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# html-to-markdown-node
|
|
2
2
|
|
|
3
|
+
> **npm package:** `html-to-markdown-node` (this README).
|
|
4
|
+
> Use [`html-to-markdown-wasm`](https://www.npmjs.com/package/html-to-markdown-wasm) for the portable WASM build.
|
|
5
|
+
|
|
3
6
|
Native Node.js and Bun bindings for html-to-markdown using NAPI-RS v3.
|
|
4
7
|
|
|
5
8
|
Built on the shared Rust engine that powers the Python wheels, Ruby gem, PHP extension, WebAssembly package, and CLI – ensuring identical Markdown output across every language target.
|
|
@@ -38,6 +41,23 @@ Native NAPI-RS bindings deliver **the fastest HTML to Markdown conversion** avai
|
|
|
38
41
|
- **vs Python**: ~7.4× faster (avoids FFI overhead)
|
|
39
42
|
- **Best for**: Node.js and Bun server-side applications requiring maximum throughput
|
|
40
43
|
|
|
44
|
+
### Benchmark Fixtures (Apple M4)
|
|
45
|
+
|
|
46
|
+
`task bench:bindings` feeds identical Wikipedia + hOCR fixtures into every binding. Node keeps pace with the Rust CLI across the board:
|
|
47
|
+
|
|
48
|
+
| Document | Size | ops/sec (Node) |
|
|
49
|
+
| ---------------------- | ------ | -------------- |
|
|
50
|
+
| Lists (Timeline) | 129 KB | 1,308 |
|
|
51
|
+
| Tables (Countries) | 360 KB | 331 |
|
|
52
|
+
| Medium (Python) | 657 KB | 150 |
|
|
53
|
+
| Large (Rust) | 567 KB | 163 |
|
|
54
|
+
| Small (Intro) | 463 KB | 208 |
|
|
55
|
+
| hOCR German PDF | 44 KB | 2,944 |
|
|
56
|
+
| hOCR Invoice | 4 KB | 27,326 |
|
|
57
|
+
| hOCR Embedded Tables | 37 KB | 3,475 |
|
|
58
|
+
|
|
59
|
+
> Run `task bench:bindings -- --language node` locally to regenerate these numbers.
|
|
60
|
+
|
|
41
61
|
## Installation
|
|
42
62
|
|
|
43
63
|
### Node.js
|
|
@@ -129,6 +149,45 @@ const options: JsConversionOptions = {
|
|
|
129
149
|
const markdown = convert('<h1>Hello</h1>', options);
|
|
130
150
|
```
|
|
131
151
|
|
|
152
|
+
### Reusing Parsed Options
|
|
153
|
+
|
|
154
|
+
Avoid re-parsing the same options object on every call (benchmarks, tight render loops) by creating a reusable handle:
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
import {
|
|
158
|
+
createConversionOptionsHandle,
|
|
159
|
+
convertWithOptionsHandle,
|
|
160
|
+
} from 'html-to-markdown-node';
|
|
161
|
+
|
|
162
|
+
const handle = createConversionOptionsHandle({ hocrSpatialTables: false });
|
|
163
|
+
const markdown = convertWithOptionsHandle('<h1>Handles</h1>', handle);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Zero-Copy Buffer Input
|
|
167
|
+
|
|
168
|
+
Skip the intermediate UTF-16 string allocation by feeding `Buffer`/`Uint8Array` inputs directly—handy for benchmark harnesses or when you already have raw bytes:
|
|
169
|
+
|
|
170
|
+
```ts
|
|
171
|
+
import {
|
|
172
|
+
convertBuffer,
|
|
173
|
+
convertInlineImagesBuffer,
|
|
174
|
+
convertBufferWithOptionsHandle,
|
|
175
|
+
createConversionOptionsHandle,
|
|
176
|
+
} from 'html-to-markdown-node';
|
|
177
|
+
import { readFileSync } from 'node:fs';
|
|
178
|
+
|
|
179
|
+
const html = readFileSync('fixtures/lists.html'); // Buffer
|
|
180
|
+
const markdown = convertBuffer(html);
|
|
181
|
+
|
|
182
|
+
const handle = createConversionOptionsHandle({ headingStyle: 'Atx' });
|
|
183
|
+
const markdownFromHandle = convertBufferWithOptionsHandle(html, handle);
|
|
184
|
+
|
|
185
|
+
// Inline images work too:
|
|
186
|
+
const extraction = convertInlineImagesBuffer(html, null, {
|
|
187
|
+
maxDecodedSizeBytes: 5 * 1024 * 1024,
|
|
188
|
+
});
|
|
189
|
+
```
|
|
190
|
+
|
|
132
191
|
## Inline Images
|
|
133
192
|
|
|
134
193
|
Extract and decode inline images (data URIs, SVG):
|
|
@@ -213,7 +272,7 @@ See [ConversionOptions](https://github.com/Goldziher/html-to-markdown/tree/main/
|
|
|
213
272
|
Keep specific HTML tags in their original form instead of converting to Markdown:
|
|
214
273
|
|
|
215
274
|
```typescript
|
|
216
|
-
import { convert } from '
|
|
275
|
+
import { convert } from 'html-to-markdown-node';
|
|
217
276
|
|
|
218
277
|
const html = `
|
|
219
278
|
<p>Before table</p>
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
/* auto-generated by NAPI-RS */
|
|
2
2
|
/* eslint-disable */
|
|
3
|
+
|
|
4
|
+
export declare class ExternalObject<T> {
|
|
5
|
+
readonly '': {
|
|
6
|
+
readonly '': unique symbol
|
|
7
|
+
[K: symbol]: T
|
|
8
|
+
}
|
|
9
|
+
}
|
|
3
10
|
/**
|
|
4
11
|
* Convert HTML to Markdown
|
|
5
12
|
*
|
|
@@ -20,6 +27,15 @@
|
|
|
20
27
|
*/
|
|
21
28
|
export declare function convert(html: string, options?: JsConversionOptions | undefined | null): string
|
|
22
29
|
|
|
30
|
+
/** Convert HTML to Markdown from a Buffer/Uint8Array without creating intermediate JS strings. */
|
|
31
|
+
export declare function convertBuffer(html: Buffer, options?: JsConversionOptions | undefined | null): string
|
|
32
|
+
|
|
33
|
+
/** Convert HTML Buffer data using a previously-created ConversionOptions handle. */
|
|
34
|
+
export declare function convertBufferWithOptionsHandle(html: Buffer, options: ExternalObject<RustConversionOptions>): string
|
|
35
|
+
|
|
36
|
+
/** Convert inline images from Buffer/Uint8Array input without an intermediate string allocation. */
|
|
37
|
+
export declare function convertInlineImagesBuffer(html: Buffer, options?: JsConversionOptions | undefined | null, imageConfig?: JsInlineImageConfig | undefined | null): JsHtmlExtraction
|
|
38
|
+
|
|
23
39
|
/**
|
|
24
40
|
* Convert HTML to Markdown while collecting inline images
|
|
25
41
|
*
|
|
@@ -28,23 +44,15 @@ export declare function convert(html: string, options?: JsConversionOptions | un
|
|
|
28
44
|
* * `html` - The HTML string to convert
|
|
29
45
|
* * `options` - Optional conversion options
|
|
30
46
|
* * `image_config` - Configuration for inline image extraction
|
|
31
|
-
*
|
|
32
|
-
* # Example
|
|
33
|
-
*
|
|
34
|
-
* ```javascript
|
|
35
|
-
* const { convertWithInlineImages } = require('html-to-markdown');
|
|
36
|
-
*
|
|
37
|
-
* const html = '<img src="data:image/png;base64,..." alt="test">';
|
|
38
|
-
* const result = convertWithInlineImages(html, null, {
|
|
39
|
-
* maxDecodedSizeBytes: 1024 * 1024,
|
|
40
|
-
* inferDimensions: true
|
|
41
|
-
* });
|
|
42
|
-
* console.log(result.markdown);
|
|
43
|
-
* console.log(result.inlineImages.length);
|
|
44
|
-
* ```
|
|
45
47
|
*/
|
|
46
48
|
export declare function convertWithInlineImages(html: string, options?: JsConversionOptions | undefined | null, imageConfig?: JsInlineImageConfig | undefined | null): JsHtmlExtraction
|
|
47
49
|
|
|
50
|
+
/** Convert HTML using a previously-created ConversionOptions handle. */
|
|
51
|
+
export declare function convertWithOptionsHandle(html: string, options: ExternalObject<RustConversionOptions>): string
|
|
52
|
+
|
|
53
|
+
/** Create a reusable ConversionOptions handle. */
|
|
54
|
+
export declare function createConversionOptionsHandle(options?: JsConversionOptions | undefined | null): ExternalObject<RustConversionOptions>
|
|
55
|
+
|
|
48
56
|
/** Code block style */
|
|
49
57
|
export declare const enum JsCodeBlockStyle {
|
|
50
58
|
/** Indented code blocks (4 spaces) - CommonMark default */
|
package/index.js
CHANGED
|
@@ -1,255 +1,588 @@
|
|
|
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('./html-to-markdown-node.android-arm64.node')
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadErrors.push(e)
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const binding = require('html-to-markdown-node-android-arm64')
|
|
79
|
+
const bindingPackageVersion = require('html-to-markdown-node-android-arm64/package.json').version
|
|
80
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.android-arm-eabi.node')
|
|
90
|
+
} catch (e) {
|
|
91
|
+
loadErrors.push(e)
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const binding = require('html-to-markdown-node-android-arm-eabi')
|
|
95
|
+
const bindingPackageVersion = require('html-to-markdown-node-android-arm-eabi/package.json').version
|
|
96
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.win32-x64-gnu.node')
|
|
111
|
+
} catch (e) {
|
|
112
|
+
loadErrors.push(e)
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const binding = require('html-to-markdown-node-win32-x64-gnu')
|
|
116
|
+
const bindingPackageVersion = require('html-to-markdown-node-win32-x64-gnu/package.json').version
|
|
117
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.win32-x64-msvc.node')
|
|
127
|
+
} catch (e) {
|
|
128
|
+
loadErrors.push(e)
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const binding = require('html-to-markdown-node-win32-x64-msvc')
|
|
132
|
+
const bindingPackageVersion = require('html-to-markdown-node-win32-x64-msvc/package.json').version
|
|
133
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.win32-ia32-msvc.node')
|
|
144
|
+
} catch (e) {
|
|
145
|
+
loadErrors.push(e)
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const binding = require('html-to-markdown-node-win32-ia32-msvc')
|
|
149
|
+
const bindingPackageVersion = require('html-to-markdown-node-win32-ia32-msvc/package.json').version
|
|
150
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.win32-arm64-msvc.node')
|
|
160
|
+
} catch (e) {
|
|
161
|
+
loadErrors.push(e)
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const binding = require('html-to-markdown-node-win32-arm64-msvc')
|
|
165
|
+
const bindingPackageVersion = require('html-to-markdown-node-win32-arm64-msvc/package.json').version
|
|
166
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.darwin-universal.node')
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadErrors.push(e)
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const binding = require('html-to-markdown-node-darwin-universal')
|
|
184
|
+
const bindingPackageVersion = require('html-to-markdown-node-darwin-universal/package.json').version
|
|
185
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.darwin-x64.node')
|
|
195
|
+
} catch (e) {
|
|
196
|
+
loadErrors.push(e)
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const binding = require('html-to-markdown-node-darwin-x64')
|
|
200
|
+
const bindingPackageVersion = require('html-to-markdown-node-darwin-x64/package.json').version
|
|
201
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.darwin-arm64.node')
|
|
211
|
+
} catch (e) {
|
|
212
|
+
loadErrors.push(e)
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const binding = require('html-to-markdown-node-darwin-arm64')
|
|
216
|
+
const bindingPackageVersion = require('html-to-markdown-node-darwin-arm64/package.json').version
|
|
217
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.freebsd-x64.node')
|
|
231
|
+
} catch (e) {
|
|
232
|
+
loadErrors.push(e)
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
const binding = require('html-to-markdown-node-freebsd-x64')
|
|
236
|
+
const bindingPackageVersion = require('html-to-markdown-node-freebsd-x64/package.json').version
|
|
237
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.freebsd-arm64.node')
|
|
247
|
+
} catch (e) {
|
|
248
|
+
loadErrors.push(e)
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const binding = require('html-to-markdown-node-freebsd-arm64')
|
|
252
|
+
const bindingPackageVersion = require('html-to-markdown-node-freebsd-arm64/package.json').version
|
|
253
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.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, 'html-to-markdown-node.android-arm-eabi.node'))
|
|
42
271
|
try {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
272
|
+
const binding = require('html-to-markdown-node-linux-x64-musl')
|
|
273
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-x64-musl/package.json').version
|
|
274
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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, 'html-to-markdown-node.win32-x64-msvc.node')
|
|
61
|
-
)
|
|
62
|
-
try {
|
|
63
|
-
if (localFileExisted) {
|
|
64
|
-
nativeBinding = require('./html-to-markdown-node.win32-x64-msvc.node')
|
|
65
|
-
} else {
|
|
66
|
-
nativeBinding = require('html-to-markdown-node-win32-x64-msvc')
|
|
67
|
-
}
|
|
281
|
+
} else {
|
|
282
|
+
try {
|
|
283
|
+
return require('./html-to-markdown-node.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, 'html-to-markdown-node.win32-ia32-msvc.node')
|
|
75
|
-
)
|
|
76
287
|
try {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
288
|
+
const binding = require('html-to-markdown-node-linux-x64-gnu')
|
|
289
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-x64-gnu/package.json').version
|
|
290
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
81
292
|
}
|
|
293
|
+
return binding
|
|
82
294
|
} catch (e) {
|
|
83
|
-
|
|
295
|
+
loadErrors.push(e)
|
|
84
296
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
join(__dirname, 'html-to-markdown-node.win32-arm64-msvc.node')
|
|
89
|
-
)
|
|
297
|
+
}
|
|
298
|
+
} else if (process.arch === 'arm64') {
|
|
299
|
+
if (isMusl()) {
|
|
90
300
|
try {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
301
|
+
return require('./html-to-markdown-node.linux-arm64-musl.node')
|
|
302
|
+
} catch (e) {
|
|
303
|
+
loadErrors.push(e)
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const binding = require('html-to-markdown-node-linux-arm64-musl')
|
|
307
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-arm64-musl/package.json').version
|
|
308
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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, 'html-to-markdown-node.darwin-universal.node'))
|
|
106
|
-
try {
|
|
107
|
-
if (localFileExisted) {
|
|
108
|
-
nativeBinding = require('./html-to-markdown-node.darwin-universal.node')
|
|
109
315
|
} else {
|
|
110
316
|
try {
|
|
111
|
-
|
|
112
|
-
} catch {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
nativeBinding = require('html-to-markdown-node-darwin-x64')
|
|
121
|
-
}
|
|
122
|
-
} catch (e) {
|
|
123
|
-
loadError = e
|
|
124
|
-
}
|
|
125
|
-
break
|
|
126
|
-
case 'arm64':
|
|
127
|
-
localFileExisted = existsSync(
|
|
128
|
-
join(__dirname, 'html-to-markdown-node.darwin-arm64.node')
|
|
129
|
-
)
|
|
130
|
-
try {
|
|
131
|
-
if (localFileExisted) {
|
|
132
|
-
nativeBinding = require('./html-to-markdown-node.darwin-arm64.node')
|
|
133
|
-
} else {
|
|
134
|
-
nativeBinding = require('html-to-markdown-node-darwin-arm64')
|
|
135
|
-
}
|
|
136
|
-
} catch (e) {
|
|
137
|
-
loadError = e
|
|
138
|
-
}
|
|
139
|
-
break
|
|
140
|
-
default:
|
|
141
|
-
throw new Error(`Unsupported architecture on macOS: ${arch}`)
|
|
317
|
+
return require('./html-to-markdown-node.linux-arm64-gnu.node')
|
|
318
|
+
} catch (e) {
|
|
319
|
+
loadErrors.push(e)
|
|
320
|
+
}
|
|
321
|
+
try {
|
|
322
|
+
const binding = require('html-to-markdown-node-linux-arm64-gnu')
|
|
323
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-arm64-gnu/package.json').version
|
|
324
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
142
326
|
}
|
|
327
|
+
return binding
|
|
328
|
+
} catch (e) {
|
|
329
|
+
loadErrors.push(e)
|
|
143
330
|
}
|
|
144
331
|
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
332
|
+
} else if (process.arch === 'arm') {
|
|
333
|
+
if (isMusl()) {
|
|
334
|
+
try {
|
|
335
|
+
return require('./html-to-markdown-node.linux-arm-musleabihf.node')
|
|
336
|
+
} catch (e) {
|
|
337
|
+
loadErrors.push(e)
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const binding = require('html-to-markdown-node-linux-arm-musleabihf')
|
|
341
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-arm-musleabihf/package.json').version
|
|
342
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
344
|
+
}
|
|
345
|
+
return binding
|
|
346
|
+
} catch (e) {
|
|
347
|
+
loadErrors.push(e)
|
|
348
|
+
}
|
|
157
349
|
} else {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
localFileExisted = existsSync(
|
|
169
|
-
join(__dirname, 'html-to-markdown-node.linux-x64-musl.node')
|
|
170
|
-
)
|
|
171
|
-
try {
|
|
172
|
-
if (localFileExisted) {
|
|
173
|
-
nativeBinding = require('./html-to-markdown-node.linux-x64-musl.node')
|
|
174
|
-
} else {
|
|
175
|
-
nativeBinding = require('html-to-markdown-node-linux-x64-musl')
|
|
176
|
-
}
|
|
177
|
-
} catch (e) {
|
|
178
|
-
loadError = e
|
|
350
|
+
try {
|
|
351
|
+
return require('./html-to-markdown-node.linux-arm-gnueabihf.node')
|
|
352
|
+
} catch (e) {
|
|
353
|
+
loadErrors.push(e)
|
|
354
|
+
}
|
|
355
|
+
try {
|
|
356
|
+
const binding = require('html-to-markdown-node-linux-arm-gnueabihf')
|
|
357
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-arm-gnueabihf/package.json').version
|
|
358
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
179
360
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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('./html-to-markdown-node.linux-loong64-musl.node')
|
|
370
|
+
} catch (e) {
|
|
371
|
+
loadErrors.push(e)
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const binding = require('html-to-markdown-node-linux-loong64-musl')
|
|
375
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-loong64-musl/package.json').version
|
|
376
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
192
378
|
}
|
|
379
|
+
return binding
|
|
380
|
+
} catch (e) {
|
|
381
|
+
loadErrors.push(e)
|
|
193
382
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}
|
|
206
|
-
} catch (e) {
|
|
207
|
-
loadError = e
|
|
383
|
+
} else {
|
|
384
|
+
try {
|
|
385
|
+
return require('./html-to-markdown-node.linux-loong64-gnu.node')
|
|
386
|
+
} catch (e) {
|
|
387
|
+
loadErrors.push(e)
|
|
388
|
+
}
|
|
389
|
+
try {
|
|
390
|
+
const binding = require('html-to-markdown-node-linux-loong64-gnu')
|
|
391
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-loong64-gnu/package.json').version
|
|
392
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
208
394
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
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('./html-to-markdown-node.linux-riscv64-musl.node')
|
|
404
|
+
} catch (e) {
|
|
405
|
+
loadErrors.push(e)
|
|
406
|
+
}
|
|
407
|
+
try {
|
|
408
|
+
const binding = require('html-to-markdown-node-linux-riscv64-musl')
|
|
409
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-riscv64-musl/package.json').version
|
|
410
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
221
412
|
}
|
|
413
|
+
return binding
|
|
414
|
+
} catch (e) {
|
|
415
|
+
loadErrors.push(e)
|
|
416
|
+
}
|
|
417
|
+
} else {
|
|
418
|
+
try {
|
|
419
|
+
return require('./html-to-markdown-node.linux-riscv64-gnu.node')
|
|
420
|
+
} catch (e) {
|
|
421
|
+
loadErrors.push(e)
|
|
222
422
|
}
|
|
223
|
-
break
|
|
224
|
-
case 'arm':
|
|
225
|
-
localFileExisted = existsSync(
|
|
226
|
-
join(__dirname, 'html-to-markdown-node.linux-arm-gnueabihf.node')
|
|
227
|
-
)
|
|
228
423
|
try {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
424
|
+
const binding = require('html-to-markdown-node-linux-riscv64-gnu')
|
|
425
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-riscv64-gnu/package.json').version
|
|
426
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
233
428
|
}
|
|
429
|
+
return binding
|
|
234
430
|
} catch (e) {
|
|
235
|
-
|
|
431
|
+
loadErrors.push(e)
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
} else if (process.arch === 'ppc64') {
|
|
435
|
+
try {
|
|
436
|
+
return require('./html-to-markdown-node.linux-ppc64-gnu.node')
|
|
437
|
+
} catch (e) {
|
|
438
|
+
loadErrors.push(e)
|
|
439
|
+
}
|
|
440
|
+
try {
|
|
441
|
+
const binding = require('html-to-markdown-node-linux-ppc64-gnu')
|
|
442
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-ppc64-gnu/package.json').version
|
|
443
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
445
|
+
}
|
|
446
|
+
return binding
|
|
447
|
+
} catch (e) {
|
|
448
|
+
loadErrors.push(e)
|
|
449
|
+
}
|
|
450
|
+
} else if (process.arch === 's390x') {
|
|
451
|
+
try {
|
|
452
|
+
return require('./html-to-markdown-node.linux-s390x-gnu.node')
|
|
453
|
+
} catch (e) {
|
|
454
|
+
loadErrors.push(e)
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
const binding = require('html-to-markdown-node-linux-s390x-gnu')
|
|
458
|
+
const bindingPackageVersion = require('html-to-markdown-node-linux-s390x-gnu/package.json').version
|
|
459
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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}`))
|
|
468
|
+
}
|
|
469
|
+
} else if (process.platform === 'openharmony') {
|
|
470
|
+
if (process.arch === 'arm64') {
|
|
471
|
+
try {
|
|
472
|
+
return require('./html-to-markdown-node.openharmony-arm64.node')
|
|
473
|
+
} catch (e) {
|
|
474
|
+
loadErrors.push(e)
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const binding = require('html-to-markdown-node-openharmony-arm64')
|
|
478
|
+
const bindingPackageVersion = require('html-to-markdown-node-openharmony-arm64/package.json').version
|
|
479
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.openharmony-x64.node')
|
|
489
|
+
} catch (e) {
|
|
490
|
+
loadErrors.push(e)
|
|
491
|
+
}
|
|
492
|
+
try {
|
|
493
|
+
const binding = require('html-to-markdown-node-openharmony-x64')
|
|
494
|
+
const bindingPackageVersion = require('html-to-markdown-node-openharmony-x64/package.json').version
|
|
495
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 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('./html-to-markdown-node.openharmony-arm.node')
|
|
505
|
+
} catch (e) {
|
|
506
|
+
loadErrors.push(e)
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
const binding = require('html-to-markdown-node-openharmony-arm')
|
|
510
|
+
const bindingPackageVersion = require('html-to-markdown-node-openharmony-arm/package.json').version
|
|
511
|
+
if (bindingPackageVersion !== '2.7.1' && 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 2.7.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
236
513
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
514
|
+
return binding
|
|
515
|
+
} catch (e) {
|
|
516
|
+
loadErrors.push(e)
|
|
517
|
+
}
|
|
518
|
+
} else {
|
|
519
|
+
loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`))
|
|
240
520
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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('./html-to-markdown-node.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('html-to-markdown-node-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
|
+
}
|
|
244
555
|
}
|
|
245
556
|
|
|
246
557
|
if (!nativeBinding) {
|
|
247
|
-
if (
|
|
248
|
-
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
|
+
)
|
|
249
570
|
}
|
|
250
571
|
throw new Error(`Failed to load native binding`)
|
|
251
572
|
}
|
|
252
573
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
module.exports.
|
|
574
|
+
module.exports = nativeBinding
|
|
575
|
+
module.exports.convert = nativeBinding.convert
|
|
576
|
+
module.exports.convertBuffer = nativeBinding.convertBuffer
|
|
577
|
+
module.exports.convertBufferWithOptionsHandle = nativeBinding.convertBufferWithOptionsHandle
|
|
578
|
+
module.exports.convertInlineImagesBuffer = nativeBinding.convertInlineImagesBuffer
|
|
579
|
+
module.exports.convertWithInlineImages = nativeBinding.convertWithInlineImages
|
|
580
|
+
module.exports.convertWithOptionsHandle = nativeBinding.convertWithOptionsHandle
|
|
581
|
+
module.exports.createConversionOptionsHandle = nativeBinding.createConversionOptionsHandle
|
|
582
|
+
module.exports.JsCodeBlockStyle = nativeBinding.JsCodeBlockStyle
|
|
583
|
+
module.exports.JsHeadingStyle = nativeBinding.JsHeadingStyle
|
|
584
|
+
module.exports.JsHighlightStyle = nativeBinding.JsHighlightStyle
|
|
585
|
+
module.exports.JsListIndentType = nativeBinding.JsListIndentType
|
|
586
|
+
module.exports.JsNewlineStyle = nativeBinding.JsNewlineStyle
|
|
587
|
+
module.exports.JsPreprocessingPreset = nativeBinding.JsPreprocessingPreset
|
|
588
|
+
module.exports.JsWhitespaceMode = nativeBinding.JsWhitespaceMode
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "html-to-markdown-node",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.1",
|
|
4
4
|
"description": "High-performance HTML to Markdown converter - Node.js native bindings",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -48,7 +48,6 @@
|
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@napi-rs/cli": "^3.4.1",
|
|
50
50
|
"@types/node": "^24.10.0",
|
|
51
|
-
"tinybench": "^5.1.0",
|
|
52
51
|
"tsx": "^4.20.6",
|
|
53
52
|
"vitest": "^4.0.8"
|
|
54
53
|
},
|
|
@@ -59,15 +58,15 @@
|
|
|
59
58
|
"up": "^1.0.2"
|
|
60
59
|
},
|
|
61
60
|
"optionalDependencies": {
|
|
62
|
-
"html-to-markdown-node-darwin-x64": "2.
|
|
63
|
-
"html-to-markdown-node-darwin-arm64": "2.
|
|
64
|
-
"html-to-markdown-node-win32-x64-msvc": "2.
|
|
65
|
-
"html-to-markdown-node-win32-arm64-msvc": "2.
|
|
66
|
-
"html-to-markdown-node-linux-x64-gnu": "2.
|
|
67
|
-
"html-to-markdown-node-linux-x64-musl": "2.
|
|
68
|
-
"html-to-markdown-node-linux-arm64-gnu": "2.
|
|
69
|
-
"html-to-markdown-node-linux-arm64-musl": "2.
|
|
70
|
-
"html-to-markdown-node-linux-arm-gnueabihf": "2.
|
|
61
|
+
"html-to-markdown-node-darwin-x64": "2.7.1",
|
|
62
|
+
"html-to-markdown-node-darwin-arm64": "2.7.1",
|
|
63
|
+
"html-to-markdown-node-win32-x64-msvc": "2.7.1",
|
|
64
|
+
"html-to-markdown-node-win32-arm64-msvc": "2.7.1",
|
|
65
|
+
"html-to-markdown-node-linux-x64-gnu": "2.7.1",
|
|
66
|
+
"html-to-markdown-node-linux-x64-musl": "2.7.1",
|
|
67
|
+
"html-to-markdown-node-linux-arm64-gnu": "2.7.1",
|
|
68
|
+
"html-to-markdown-node-linux-arm64-musl": "2.7.1",
|
|
69
|
+
"html-to-markdown-node-linux-arm-gnueabihf": "2.7.1"
|
|
71
70
|
},
|
|
72
71
|
"scripts": {
|
|
73
72
|
"artifacts": "napi artifacts",
|
|
@@ -76,7 +75,6 @@
|
|
|
76
75
|
"test": "vitest run",
|
|
77
76
|
"test:watch": "vitest",
|
|
78
77
|
"test:simple": "node test.js",
|
|
79
|
-
"bench": "tsx benchmark.ts",
|
|
80
78
|
"universal": "napi universal",
|
|
81
79
|
"version": "napi version",
|
|
82
80
|
"clean": "rm -rf dist node_modules *.node"
|