html-to-markdown-node 2.4.0 → 2.4.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/index.d.ts ADDED
@@ -0,0 +1,229 @@
1
+ /* auto-generated by NAPI-RS */
2
+ /* eslint-disable */
3
+ /**
4
+ * Convert HTML to Markdown
5
+ *
6
+ * # Arguments
7
+ *
8
+ * * `html` - The HTML string to convert
9
+ * * `options` - Optional conversion options
10
+ *
11
+ * # Example
12
+ *
13
+ * ```javascript
14
+ * const { convert } = require('html-to-markdown');
15
+ *
16
+ * const html = '<h1>Hello World</h1>';
17
+ * const markdown = convert(html);
18
+ * console.log(markdown); // # Hello World
19
+ * ```
20
+ */
21
+ export declare function convert(html: string, options?: JsConversionOptions | undefined | null): string
22
+
23
+ /**
24
+ * Convert HTML to Markdown while collecting inline images
25
+ *
26
+ * # Arguments
27
+ *
28
+ * * `html` - The HTML string to convert
29
+ * * `options` - Optional conversion options
30
+ * * `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
+ */
46
+ export declare function convertWithInlineImages(html: string, options?: JsConversionOptions | undefined | null, imageConfig?: JsInlineImageConfig | undefined | null): JsHtmlExtraction
47
+
48
+ /** Code block style */
49
+ export declare const enum JsCodeBlockStyle {
50
+ /** Indented code blocks (4 spaces) - CommonMark default */
51
+ Indented = 'Indented',
52
+ /** Fenced code blocks with backticks (```) */
53
+ Backticks = 'Backticks',
54
+ /** Fenced code blocks with tildes (~~~) */
55
+ Tildes = 'Tildes'
56
+ }
57
+
58
+ /** Main conversion options */
59
+ export interface JsConversionOptions {
60
+ /** Heading style */
61
+ headingStyle?: JsHeadingStyle
62
+ /** List indentation type */
63
+ listIndentType?: JsListIndentType
64
+ /** List indentation width (spaces) */
65
+ listIndentWidth?: number
66
+ /** Bullet characters for unordered lists */
67
+ bullets?: string
68
+ /** Symbol for strong/emphasis (* or _) */
69
+ strongEmSymbol?: string
70
+ /** Escape asterisks in text */
71
+ escapeAsterisks?: boolean
72
+ /** Escape underscores in text */
73
+ escapeUnderscores?: boolean
74
+ /** Escape misc markdown characters */
75
+ escapeMisc?: boolean
76
+ /** Escape all ASCII punctuation */
77
+ escapeAscii?: boolean
78
+ /** Default code language */
79
+ codeLanguage?: string
80
+ /** Use autolinks for bare URLs */
81
+ autolinks?: boolean
82
+ /** Add default title if none exists */
83
+ defaultTitle?: boolean
84
+ /** Use <br> in tables instead of spaces */
85
+ brInTables?: boolean
86
+ /** Enable spatial table reconstruction in hOCR documents */
87
+ hocrSpatialTables?: boolean
88
+ /** Highlight style for <mark> elements */
89
+ highlightStyle?: JsHighlightStyle
90
+ /** Extract metadata from HTML */
91
+ extractMetadata?: boolean
92
+ /** Whitespace handling mode */
93
+ whitespaceMode?: JsWhitespaceMode
94
+ /** Strip newlines from HTML before processing */
95
+ stripNewlines?: boolean
96
+ /** Enable text wrapping */
97
+ wrap?: boolean
98
+ /** Text wrap width */
99
+ wrapWidth?: number
100
+ /** Treat block elements as inline */
101
+ convertAsInline?: boolean
102
+ /** Subscript symbol */
103
+ subSymbol?: string
104
+ /** Superscript symbol */
105
+ supSymbol?: string
106
+ /** Newline style */
107
+ newlineStyle?: JsNewlineStyle
108
+ /** Code block style */
109
+ codeBlockStyle?: JsCodeBlockStyle
110
+ /** Elements where images should remain as markdown */
111
+ keepInlineImagesIn?: Array<string>
112
+ /** Preprocessing options */
113
+ preprocessing?: JsPreprocessingOptions
114
+ /** Source encoding (informational) */
115
+ encoding?: string
116
+ /** Enable debug mode with diagnostic warnings */
117
+ debug?: boolean
118
+ /** List of HTML tags to strip */
119
+ stripTags?: Array<string>
120
+ }
121
+
122
+ /** Heading style options */
123
+ export declare const enum JsHeadingStyle {
124
+ /** Underlined style (=== for h1, --- for h2) */
125
+ Underlined = 'Underlined',
126
+ /** ATX style (# for h1, ## for h2, etc.) */
127
+ Atx = 'Atx',
128
+ /** ATX closed style (# title #) */
129
+ AtxClosed = 'AtxClosed'
130
+ }
131
+
132
+ /** Highlight style for `<mark>` elements */
133
+ export declare const enum JsHighlightStyle {
134
+ /** ==text== */
135
+ DoubleEqual = 'DoubleEqual',
136
+ /** <mark>text</mark> */
137
+ Html = 'Html',
138
+ /** **text** */
139
+ Bold = 'Bold',
140
+ /** Plain text (no formatting) */
141
+ None = 'None'
142
+ }
143
+
144
+ /** Result of HTML extraction with inline images */
145
+ export interface JsHtmlExtraction {
146
+ /** Converted markdown */
147
+ markdown: string
148
+ /** Extracted inline images */
149
+ inlineImages: Array<JsInlineImage>
150
+ /** Warnings encountered during extraction */
151
+ warnings: Array<JsInlineImageWarning>
152
+ }
153
+
154
+ /** Inline image data */
155
+ export interface JsInlineImage {
156
+ /** Raw image data */
157
+ data: Buffer
158
+ /** Image format (png, jpeg, gif, etc.) */
159
+ format: string
160
+ /** Generated or provided filename */
161
+ filename?: string
162
+ /** Alt text / description */
163
+ description?: string
164
+ /** Image dimensions (width, height) if available */
165
+ dimensions?: Array<number>
166
+ /** Source type (img_data_uri or svg_element) */
167
+ source: string
168
+ /** HTML attributes from the source element */
169
+ attributes: Record<string, string>
170
+ }
171
+
172
+ /** Inline image configuration */
173
+ export interface JsInlineImageConfig {
174
+ /** Maximum decoded size in bytes (default: 5MB) */
175
+ maxDecodedSizeBytes?: bigint
176
+ /** Filename prefix for generated filenames */
177
+ filenamePrefix?: string
178
+ /** Capture inline SVG elements (default: true) */
179
+ captureSvg?: boolean
180
+ /** Infer image dimensions (default: false) */
181
+ inferDimensions?: boolean
182
+ }
183
+
184
+ /** Warning about inline image processing */
185
+ export interface JsInlineImageWarning {
186
+ /** Index of the image that caused the warning */
187
+ index: number
188
+ /** Warning message */
189
+ message: string
190
+ }
191
+
192
+ /** List indentation type */
193
+ export declare const enum JsListIndentType {
194
+ Spaces = 'Spaces',
195
+ Tabs = 'Tabs'
196
+ }
197
+
198
+ /** Newline style */
199
+ export declare const enum JsNewlineStyle {
200
+ /** Two spaces at end of line */
201
+ Spaces = 'Spaces',
202
+ /** Backslash at end of line */
203
+ Backslash = 'Backslash'
204
+ }
205
+
206
+ /** HTML preprocessing options */
207
+ export interface JsPreprocessingOptions {
208
+ /** Enable preprocessing */
209
+ enabled?: boolean
210
+ /** Preprocessing preset */
211
+ preset?: JsPreprocessingPreset
212
+ /** Remove navigation elements */
213
+ removeNavigation?: boolean
214
+ /** Remove form elements */
215
+ removeForms?: boolean
216
+ }
217
+
218
+ /** Preprocessing preset levels */
219
+ export declare const enum JsPreprocessingPreset {
220
+ Minimal = 'Minimal',
221
+ Standard = 'Standard',
222
+ Aggressive = 'Aggressive'
223
+ }
224
+
225
+ /** Whitespace handling mode */
226
+ export declare const enum JsWhitespaceMode {
227
+ Normalized = 'Normalized',
228
+ Strict = 'Strict'
229
+ }
package/index.js ADDED
@@ -0,0 +1,586 @@
1
+ // prettier-ignore
2
+ /* eslint-disable */
3
+ // @ts-nocheck
4
+ /* auto-generated by NAPI-RS */
5
+
6
+ const { createRequire } = require('node:module')
7
+ require = createRequire(__filename)
8
+
9
+ const { readFileSync } = require('node:fs')
10
+ let nativeBinding = null
11
+ const loadErrors = []
12
+
13
+ const isMusl = () => {
14
+ let musl = false
15
+ if (process.platform === 'linux') {
16
+ musl = isMuslFromFilesystem()
17
+ if (musl === null) {
18
+ musl = isMuslFromReport()
19
+ }
20
+ if (musl === null) {
21
+ musl = isMuslFromChildProcess()
22
+ }
23
+ }
24
+ return musl
25
+ }
26
+
27
+ const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')
28
+
29
+ const isMuslFromFilesystem = () => {
30
+ try {
31
+ return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')
32
+ } catch {
33
+ return null
34
+ }
35
+ }
36
+
37
+ const isMuslFromReport = () => {
38
+ let report = null
39
+ if (typeof process.report?.getReport === 'function') {
40
+ process.report.excludeNetwork = true
41
+ report = process.report.getReport()
42
+ }
43
+ if (!report) {
44
+ return null
45
+ }
46
+ if (report.header && report.header.glibcVersionRuntime) {
47
+ return false
48
+ }
49
+ if (Array.isArray(report.sharedObjects)) {
50
+ if (report.sharedObjects.some(isFileMusl)) {
51
+ return true
52
+ }
53
+ }
54
+ return false
55
+ }
56
+
57
+ const isMuslFromChildProcess = () => {
58
+ try {
59
+ return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')
60
+ } catch (e) {
61
+ // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false
62
+ return false
63
+ }
64
+ }
65
+
66
+ function requireNative() {
67
+ if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) {
68
+ try {
69
+ return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);
70
+ } catch (err) {
71
+ loadErrors.push(err)
72
+ }
73
+ } else if (process.platform === 'android') {
74
+ if (process.arch === 'arm64') {
75
+ try {
76
+ return require('./html-to-markdown-node.android-arm64.node')
77
+ } catch (e) {
78
+ loadErrors.push(e)
79
+ }
80
+ try {
81
+ const binding = require('html-to-markdown-node-android-arm64')
82
+ const bindingPackageVersion = require('html-to-markdown-node-android-arm64/package.json').version
83
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
84
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
85
+ }
86
+ return binding
87
+ } catch (e) {
88
+ loadErrors.push(e)
89
+ }
90
+ } else if (process.arch === 'arm') {
91
+ try {
92
+ return require('./html-to-markdown-node.android-arm-eabi.node')
93
+ } catch (e) {
94
+ loadErrors.push(e)
95
+ }
96
+ try {
97
+ const binding = require('html-to-markdown-node-android-arm-eabi')
98
+ const bindingPackageVersion = require('html-to-markdown-node-android-arm-eabi/package.json').version
99
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
100
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
101
+ }
102
+ return binding
103
+ } catch (e) {
104
+ loadErrors.push(e)
105
+ }
106
+ } else {
107
+ loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))
108
+ }
109
+ } else if (process.platform === 'win32') {
110
+ if (process.arch === 'x64') {
111
+ if (process.report?.getReport?.()?.header?.osName?.startsWith?.('MINGW')) {
112
+ try {
113
+ return require('./html-to-markdown-node.win32-x64-gnu.node')
114
+ } catch (e) {
115
+ loadErrors.push(e)
116
+ }
117
+ try {
118
+ const binding = require('html-to-markdown-node-win32-x64-gnu')
119
+ const bindingPackageVersion = require('html-to-markdown-node-win32-x64-gnu/package.json').version
120
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
121
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
122
+ }
123
+ return binding
124
+ } catch (e) {
125
+ loadErrors.push(e)
126
+ }
127
+ } else {
128
+ try {
129
+ return require('./html-to-markdown-node.win32-x64-msvc.node')
130
+ } catch (e) {
131
+ loadErrors.push(e)
132
+ }
133
+ try {
134
+ const binding = require('html-to-markdown-node-win32-x64-msvc')
135
+ const bindingPackageVersion = require('html-to-markdown-node-win32-x64-msvc/package.json').version
136
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
137
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
138
+ }
139
+ return binding
140
+ } catch (e) {
141
+ loadErrors.push(e)
142
+ }
143
+ }
144
+ } else if (process.arch === 'ia32') {
145
+ try {
146
+ return require('./html-to-markdown-node.win32-ia32-msvc.node')
147
+ } catch (e) {
148
+ loadErrors.push(e)
149
+ }
150
+ try {
151
+ const binding = require('html-to-markdown-node-win32-ia32-msvc')
152
+ const bindingPackageVersion = require('html-to-markdown-node-win32-ia32-msvc/package.json').version
153
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
154
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
155
+ }
156
+ return binding
157
+ } catch (e) {
158
+ loadErrors.push(e)
159
+ }
160
+ } else if (process.arch === 'arm64') {
161
+ try {
162
+ return require('./html-to-markdown-node.win32-arm64-msvc.node')
163
+ } catch (e) {
164
+ loadErrors.push(e)
165
+ }
166
+ try {
167
+ const binding = require('html-to-markdown-node-win32-arm64-msvc')
168
+ const bindingPackageVersion = require('html-to-markdown-node-win32-arm64-msvc/package.json').version
169
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
170
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
171
+ }
172
+ return binding
173
+ } catch (e) {
174
+ loadErrors.push(e)
175
+ }
176
+ } else {
177
+ loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
178
+ }
179
+ } else if (process.platform === 'darwin') {
180
+ try {
181
+ return require('./html-to-markdown-node.darwin-universal.node')
182
+ } catch (e) {
183
+ loadErrors.push(e)
184
+ }
185
+ try {
186
+ const binding = require('html-to-markdown-node-darwin-universal')
187
+ const bindingPackageVersion = require('html-to-markdown-node-darwin-universal/package.json').version
188
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
189
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
190
+ }
191
+ return binding
192
+ } catch (e) {
193
+ loadErrors.push(e)
194
+ }
195
+ if (process.arch === 'x64') {
196
+ try {
197
+ return require('./html-to-markdown-node.darwin-x64.node')
198
+ } catch (e) {
199
+ loadErrors.push(e)
200
+ }
201
+ try {
202
+ const binding = require('html-to-markdown-node-darwin-x64')
203
+ const bindingPackageVersion = require('html-to-markdown-node-darwin-x64/package.json').version
204
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
205
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
206
+ }
207
+ return binding
208
+ } catch (e) {
209
+ loadErrors.push(e)
210
+ }
211
+ } else if (process.arch === 'arm64') {
212
+ try {
213
+ return require('./html-to-markdown-node.darwin-arm64.node')
214
+ } catch (e) {
215
+ loadErrors.push(e)
216
+ }
217
+ try {
218
+ const binding = require('html-to-markdown-node-darwin-arm64')
219
+ const bindingPackageVersion = require('html-to-markdown-node-darwin-arm64/package.json').version
220
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
221
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
222
+ }
223
+ return binding
224
+ } catch (e) {
225
+ loadErrors.push(e)
226
+ }
227
+ } else {
228
+ loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))
229
+ }
230
+ } else if (process.platform === 'freebsd') {
231
+ if (process.arch === 'x64') {
232
+ try {
233
+ return require('./html-to-markdown-node.freebsd-x64.node')
234
+ } catch (e) {
235
+ loadErrors.push(e)
236
+ }
237
+ try {
238
+ const binding = require('html-to-markdown-node-freebsd-x64')
239
+ const bindingPackageVersion = require('html-to-markdown-node-freebsd-x64/package.json').version
240
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
241
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
242
+ }
243
+ return binding
244
+ } catch (e) {
245
+ loadErrors.push(e)
246
+ }
247
+ } else if (process.arch === 'arm64') {
248
+ try {
249
+ return require('./html-to-markdown-node.freebsd-arm64.node')
250
+ } catch (e) {
251
+ loadErrors.push(e)
252
+ }
253
+ try {
254
+ const binding = require('html-to-markdown-node-freebsd-arm64')
255
+ const bindingPackageVersion = require('html-to-markdown-node-freebsd-arm64/package.json').version
256
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
257
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
258
+ }
259
+ return binding
260
+ } catch (e) {
261
+ loadErrors.push(e)
262
+ }
263
+ } else {
264
+ loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))
265
+ }
266
+ } else if (process.platform === 'linux') {
267
+ if (process.arch === 'x64') {
268
+ if (isMusl()) {
269
+ try {
270
+ return require('./html-to-markdown-node.linux-x64-musl.node')
271
+ } catch (e) {
272
+ loadErrors.push(e)
273
+ }
274
+ try {
275
+ const binding = require('html-to-markdown-node-linux-x64-musl')
276
+ const bindingPackageVersion = require('html-to-markdown-node-linux-x64-musl/package.json').version
277
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
278
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
279
+ }
280
+ return binding
281
+ } catch (e) {
282
+ loadErrors.push(e)
283
+ }
284
+ } else {
285
+ try {
286
+ return require('./html-to-markdown-node.linux-x64-gnu.node')
287
+ } catch (e) {
288
+ loadErrors.push(e)
289
+ }
290
+ try {
291
+ const binding = require('html-to-markdown-node-linux-x64-gnu')
292
+ const bindingPackageVersion = require('html-to-markdown-node-linux-x64-gnu/package.json').version
293
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
294
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
295
+ }
296
+ return binding
297
+ } catch (e) {
298
+ loadErrors.push(e)
299
+ }
300
+ }
301
+ } else if (process.arch === 'arm64') {
302
+ if (isMusl()) {
303
+ try {
304
+ return require('./html-to-markdown-node.linux-arm64-musl.node')
305
+ } catch (e) {
306
+ loadErrors.push(e)
307
+ }
308
+ try {
309
+ const binding = require('html-to-markdown-node-linux-arm64-musl')
310
+ const bindingPackageVersion = require('html-to-markdown-node-linux-arm64-musl/package.json').version
311
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
312
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
313
+ }
314
+ return binding
315
+ } catch (e) {
316
+ loadErrors.push(e)
317
+ }
318
+ } else {
319
+ try {
320
+ return require('./html-to-markdown-node.linux-arm64-gnu.node')
321
+ } catch (e) {
322
+ loadErrors.push(e)
323
+ }
324
+ try {
325
+ const binding = require('html-to-markdown-node-linux-arm64-gnu')
326
+ const bindingPackageVersion = require('html-to-markdown-node-linux-arm64-gnu/package.json').version
327
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
328
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
329
+ }
330
+ return binding
331
+ } catch (e) {
332
+ loadErrors.push(e)
333
+ }
334
+ }
335
+ } else if (process.arch === 'arm') {
336
+ if (isMusl()) {
337
+ try {
338
+ return require('./html-to-markdown-node.linux-arm-musleabihf.node')
339
+ } catch (e) {
340
+ loadErrors.push(e)
341
+ }
342
+ try {
343
+ const binding = require('html-to-markdown-node-linux-arm-musleabihf')
344
+ const bindingPackageVersion = require('html-to-markdown-node-linux-arm-musleabihf/package.json').version
345
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
346
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
347
+ }
348
+ return binding
349
+ } catch (e) {
350
+ loadErrors.push(e)
351
+ }
352
+ } else {
353
+ try {
354
+ return require('./html-to-markdown-node.linux-arm-gnueabihf.node')
355
+ } catch (e) {
356
+ loadErrors.push(e)
357
+ }
358
+ try {
359
+ const binding = require('html-to-markdown-node-linux-arm-gnueabihf')
360
+ const bindingPackageVersion = require('html-to-markdown-node-linux-arm-gnueabihf/package.json').version
361
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
362
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
363
+ }
364
+ return binding
365
+ } catch (e) {
366
+ loadErrors.push(e)
367
+ }
368
+ }
369
+ } else if (process.arch === 'loong64') {
370
+ if (isMusl()) {
371
+ try {
372
+ return require('./html-to-markdown-node.linux-loong64-musl.node')
373
+ } catch (e) {
374
+ loadErrors.push(e)
375
+ }
376
+ try {
377
+ const binding = require('html-to-markdown-node-linux-loong64-musl')
378
+ const bindingPackageVersion = require('html-to-markdown-node-linux-loong64-musl/package.json').version
379
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
380
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
381
+ }
382
+ return binding
383
+ } catch (e) {
384
+ loadErrors.push(e)
385
+ }
386
+ } else {
387
+ try {
388
+ return require('./html-to-markdown-node.linux-loong64-gnu.node')
389
+ } catch (e) {
390
+ loadErrors.push(e)
391
+ }
392
+ try {
393
+ const binding = require('html-to-markdown-node-linux-loong64-gnu')
394
+ const bindingPackageVersion = require('html-to-markdown-node-linux-loong64-gnu/package.json').version
395
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
396
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
397
+ }
398
+ return binding
399
+ } catch (e) {
400
+ loadErrors.push(e)
401
+ }
402
+ }
403
+ } else if (process.arch === 'riscv64') {
404
+ if (isMusl()) {
405
+ try {
406
+ return require('./html-to-markdown-node.linux-riscv64-musl.node')
407
+ } catch (e) {
408
+ loadErrors.push(e)
409
+ }
410
+ try {
411
+ const binding = require('html-to-markdown-node-linux-riscv64-musl')
412
+ const bindingPackageVersion = require('html-to-markdown-node-linux-riscv64-musl/package.json').version
413
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
414
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
415
+ }
416
+ return binding
417
+ } catch (e) {
418
+ loadErrors.push(e)
419
+ }
420
+ } else {
421
+ try {
422
+ return require('./html-to-markdown-node.linux-riscv64-gnu.node')
423
+ } catch (e) {
424
+ loadErrors.push(e)
425
+ }
426
+ try {
427
+ const binding = require('html-to-markdown-node-linux-riscv64-gnu')
428
+ const bindingPackageVersion = require('html-to-markdown-node-linux-riscv64-gnu/package.json').version
429
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
430
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
431
+ }
432
+ return binding
433
+ } catch (e) {
434
+ loadErrors.push(e)
435
+ }
436
+ }
437
+ } else if (process.arch === 'ppc64') {
438
+ try {
439
+ return require('./html-to-markdown-node.linux-ppc64-gnu.node')
440
+ } catch (e) {
441
+ loadErrors.push(e)
442
+ }
443
+ try {
444
+ const binding = require('html-to-markdown-node-linux-ppc64-gnu')
445
+ const bindingPackageVersion = require('html-to-markdown-node-linux-ppc64-gnu/package.json').version
446
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
447
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
448
+ }
449
+ return binding
450
+ } catch (e) {
451
+ loadErrors.push(e)
452
+ }
453
+ } else if (process.arch === 's390x') {
454
+ try {
455
+ return require('./html-to-markdown-node.linux-s390x-gnu.node')
456
+ } catch (e) {
457
+ loadErrors.push(e)
458
+ }
459
+ try {
460
+ const binding = require('html-to-markdown-node-linux-s390x-gnu')
461
+ const bindingPackageVersion = require('html-to-markdown-node-linux-s390x-gnu/package.json').version
462
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
463
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
464
+ }
465
+ return binding
466
+ } catch (e) {
467
+ loadErrors.push(e)
468
+ }
469
+ } else {
470
+ loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))
471
+ }
472
+ } else if (process.platform === 'openharmony') {
473
+ if (process.arch === 'arm64') {
474
+ try {
475
+ return require('./html-to-markdown-node.openharmony-arm64.node')
476
+ } catch (e) {
477
+ loadErrors.push(e)
478
+ }
479
+ try {
480
+ const binding = require('html-to-markdown-node-openharmony-arm64')
481
+ const bindingPackageVersion = require('html-to-markdown-node-openharmony-arm64/package.json').version
482
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
483
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
484
+ }
485
+ return binding
486
+ } catch (e) {
487
+ loadErrors.push(e)
488
+ }
489
+ } else if (process.arch === 'x64') {
490
+ try {
491
+ return require('./html-to-markdown-node.openharmony-x64.node')
492
+ } catch (e) {
493
+ loadErrors.push(e)
494
+ }
495
+ try {
496
+ const binding = require('html-to-markdown-node-openharmony-x64')
497
+ const bindingPackageVersion = require('html-to-markdown-node-openharmony-x64/package.json').version
498
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
499
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
500
+ }
501
+ return binding
502
+ } catch (e) {
503
+ loadErrors.push(e)
504
+ }
505
+ } else if (process.arch === 'arm') {
506
+ try {
507
+ return require('./html-to-markdown-node.openharmony-arm.node')
508
+ } catch (e) {
509
+ loadErrors.push(e)
510
+ }
511
+ try {
512
+ const binding = require('html-to-markdown-node-openharmony-arm')
513
+ const bindingPackageVersion = require('html-to-markdown-node-openharmony-arm/package.json').version
514
+ if (bindingPackageVersion !== '2.4.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
515
+ throw new Error(`Native binding package version mismatch, expected 2.4.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
516
+ }
517
+ return binding
518
+ } catch (e) {
519
+ loadErrors.push(e)
520
+ }
521
+ } else {
522
+ loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`))
523
+ }
524
+ } else {
525
+ loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))
526
+ }
527
+ }
528
+
529
+ nativeBinding = requireNative()
530
+
531
+ if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
532
+ let wasiBinding = null
533
+ let wasiBindingError = null
534
+ try {
535
+ wasiBinding = require('./html-to-markdown-node.wasi.cjs')
536
+ nativeBinding = wasiBinding
537
+ } catch (err) {
538
+ if (process.env.NAPI_RS_FORCE_WASI) {
539
+ wasiBindingError = err
540
+ }
541
+ }
542
+ if (!nativeBinding) {
543
+ try {
544
+ wasiBinding = require('html-to-markdown-node-wasm32-wasi')
545
+ nativeBinding = wasiBinding
546
+ } catch (err) {
547
+ if (process.env.NAPI_RS_FORCE_WASI) {
548
+ wasiBindingError.cause = err
549
+ loadErrors.push(err)
550
+ }
551
+ }
552
+ }
553
+ if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {
554
+ const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')
555
+ error.cause = wasiBindingError
556
+ throw error
557
+ }
558
+ }
559
+
560
+ if (!nativeBinding) {
561
+ if (loadErrors.length > 0) {
562
+ throw new Error(
563
+ `Cannot find native binding. ` +
564
+ `npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
565
+ 'Please try `npm i` again after removing both package-lock.json and node_modules directory.',
566
+ {
567
+ cause: loadErrors.reduce((err, cur) => {
568
+ cur.cause = err
569
+ return cur
570
+ }),
571
+ },
572
+ )
573
+ }
574
+ throw new Error(`Failed to load native binding`)
575
+ }
576
+
577
+ module.exports = nativeBinding
578
+ module.exports.convert = nativeBinding.convert
579
+ module.exports.convertWithInlineImages = nativeBinding.convertWithInlineImages
580
+ module.exports.JsCodeBlockStyle = nativeBinding.JsCodeBlockStyle
581
+ module.exports.JsHeadingStyle = nativeBinding.JsHeadingStyle
582
+ module.exports.JsHighlightStyle = nativeBinding.JsHighlightStyle
583
+ module.exports.JsListIndentType = nativeBinding.JsListIndentType
584
+ module.exports.JsNewlineStyle = nativeBinding.JsNewlineStyle
585
+ module.exports.JsPreprocessingPreset = nativeBinding.JsPreprocessingPreset
586
+ 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.4.0",
3
+ "version": "2.4.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",