nuxt-ai-ready 2.5.2 → 3.0.0
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 +13 -12
- package/dist/chunks/agent-skills.mjs +35 -12
- package/dist/chunks/prerender.mjs +35 -24
- package/dist/cli.mjs +5 -2
- package/dist/module.d.mts +4 -0
- package/dist/module.json +2 -2
- package/dist/module.mjs +8 -4
- package/dist/runtime/app/index.d.ts +3 -0
- package/dist/runtime/app/index.js +2 -0
- package/dist/runtime/cache-control.d.ts +2 -0
- package/dist/runtime/cache-control.js +11 -0
- package/dist/runtime/llms-txt-utils.js +1 -1
- package/dist/runtime/server/db/context.d.ts +13 -0
- package/dist/runtime/server/db/drizzle/client.d.ts +6 -7
- package/dist/runtime/server/db/drizzle/client.js +13 -2
- package/dist/runtime/server/db/drizzle/providers/bun.d.ts +2 -2
- package/dist/runtime/server/db/drizzle/providers/bun.js +2 -2
- package/dist/runtime/server/db/drizzle/providers/d1.d.ts +2 -2
- package/dist/runtime/server/db/drizzle/providers/d1.js +3 -2
- package/dist/runtime/server/db/drizzle/providers/libsql.d.ts +2 -2
- package/dist/runtime/server/db/drizzle/providers/libsql.js +2 -2
- package/dist/runtime/server/db/drizzle/providers/neon.d.ts +2 -2
- package/dist/runtime/server/db/drizzle/providers/neon.js +2 -2
- package/dist/runtime/server/db/drizzle/providers/node-sqlite.d.ts +2 -2
- package/dist/runtime/server/db/drizzle/providers/node-sqlite.js +2 -2
- package/dist/runtime/server/db/drizzle/providers/postgres.d.ts +2 -2
- package/dist/runtime/server/db/drizzle/providers/postgres.js +2 -2
- package/dist/runtime/server/db/drizzle/queries.d.ts +27 -27
- package/dist/runtime/server/db/drizzle/queries.js +6 -5
- package/dist/runtime/server/db/drizzle/raw.d.ts +2 -6
- package/dist/runtime/server/db/index.d.ts +1 -1
- package/dist/runtime/server/db/index.js +1 -1
- package/dist/runtime/server/db/queries.d.ts +36 -36
- package/dist/runtime/server/db/queries.js +8 -9
- package/dist/runtime/server/db/seed.d.ts +2 -2
- package/dist/runtime/server/db/seed.js +4 -3
- package/dist/runtime/server/db/shared.d.ts +8 -0
- package/dist/runtime/server/db/shared.js +8 -2
- package/dist/runtime/server/index.d.ts +2 -0
- package/dist/runtime/server/index.js +17 -0
- package/dist/runtime/server/mcp/tools/get-page-markdown.js +1 -1
- package/dist/runtime/server/mcp/tools/list-pages.js +1 -1
- package/dist/runtime/server/mcp/tools/search-pages.js +1 -1
- package/dist/runtime/server/middleware/markdown.js +3 -3
- package/dist/runtime/server/middleware/markdown.prerender.js +1 -1
- package/dist/runtime/server/plugins/db-lifecycle-nitro3.d.ts +2 -0
- package/dist/runtime/server/plugins/db-lifecycle-nitro3.js +16 -0
- package/dist/runtime/server/plugins/html-capture.prerender.js +6 -4
- package/dist/runtime/server/plugins/link-header-nitro3.d.ts +2 -0
- package/dist/runtime/server/plugins/link-header-nitro3.js +20 -0
- package/dist/runtime/server/plugins/link-header.d.ts +6 -0
- package/dist/runtime/server/plugins/link-header.js +7 -11
- package/dist/runtime/server/plugins/markdown-negotiation.js +8 -1
- package/dist/runtime/server/plugins/sitemap-seeder.js +3 -3
- package/dist/runtime/server/routes/agent-skills-artifact.d.ts +1 -1
- package/dist/runtime/server/routes/agent-skills-artifact.js +10 -10
- package/dist/runtime/server/routes/agent-skills-index.d.ts +1 -1
- package/dist/runtime/server/routes/agent-skills-index.js +7 -6
- package/dist/runtime/server/routes/ai-catalog.d.ts +2 -1
- package/dist/runtime/server/routes/ai-catalog.js +7 -8
- package/dist/runtime/server/routes/api-catalog.d.ts +3 -1
- package/dist/runtime/server/routes/api-catalog.js +12 -12
- package/dist/runtime/server/routes/llms-full.txt.get.js +1 -1
- package/dist/runtime/server/routes/mcp-server-card.d.ts +1 -1
- package/dist/runtime/server/routes/mcp-server-card.js +7 -8
- package/dist/runtime/server/utils/checkStale.d.ts +2 -2
- package/dist/runtime/server/utils/cloudflare-prerendered.d.ts +3 -0
- package/dist/runtime/server/utils/cloudflare-prerendered.js +23 -0
- package/dist/runtime/server/utils/cloudflare.d.ts +5 -5
- package/dist/runtime/server/utils/cloudflare.js +31 -7
- package/dist/runtime/server/utils/content-negotiation.d.ts +5 -3
- package/dist/runtime/server/utils/content-negotiation.js +8 -7
- package/dist/runtime/server/utils/context.d.ts +3 -3
- package/dist/runtime/server/utils/context.js +1 -1
- package/dist/runtime/server/utils/discovery-response.d.ts +2 -0
- package/dist/runtime/server/utils/link-header.d.ts +5 -3
- package/dist/runtime/server/utils/link-header.js +26 -2
- package/dist/runtime/server/utils/markdown-request.d.ts +4 -3
- package/dist/runtime/server/utils/markdown-request.js +15 -13
- package/dist/runtime/server/utils/negotiation-decision.d.ts +4 -0
- package/dist/runtime/server/utils/negotiation-decision.js +6 -5
- package/dist/runtime/server/utils/negotiation-response.d.ts +1 -1
- package/dist/runtime/server/utils/negotiation-response.js +63 -23
- package/dist/runtime/server/utils/prerender-html.d.ts +2 -1
- package/dist/runtime/server/utils/prerender-html.js +3 -1
- package/dist/runtime/types.d.ts +15 -7
- package/dist/shared/nuxt-ai-ready.B3hAuOLQ.mjs +29 -0
- package/dist/shared/{nuxt-ai-ready.CLSWou20.mjs → nuxt-ai-ready.C34F0LJo.mjs} +560 -219
- package/package.json +85 -20
- package/skills/nuxt-ai-ready/SKILL.md +26 -12
- package/skills/nuxt-ai-ready/references/runtime-indexing.md +7 -6
- package/dist/runtime/server/db/drizzle/providers/sqlite.d.ts +0 -8
- package/dist/runtime/server/db/drizzle/providers/sqlite.js +0 -15
- package/node_modules/@mdream/js/LICENSE.md +0 -9
- package/node_modules/@mdream/js/README.md +0 -792
- package/node_modules/@mdream/js/bin/mdream.mjs +0 -2
- package/node_modules/@mdream/js/dist/_chunks/const.mjs +0 -134
- package/node_modules/@mdream/js/dist/_chunks/index.d.mts +0 -9
- package/node_modules/@mdream/js/dist/_chunks/markdown-processor.mjs +0 -1968
- package/node_modules/@mdream/js/dist/_chunks/minimal.d.mts +0 -6
- package/node_modules/@mdream/js/dist/_chunks/parse.mjs +0 -2756
- package/node_modules/@mdream/js/dist/_chunks/plugins.mjs +0 -725
- package/node_modules/@mdream/js/dist/_chunks/resolve-plugins.mjs +0 -44
- package/node_modules/@mdream/js/dist/_chunks/stream.mjs +0 -37
- package/node_modules/@mdream/js/dist/_chunks/types.d.mts +0 -473
- package/node_modules/@mdream/js/dist/cli.d.mts +0 -1
- package/node_modules/@mdream/js/dist/cli.mjs +0 -32
- package/node_modules/@mdream/js/dist/core.d.mts +0 -15
- package/node_modules/@mdream/js/dist/core.mjs +0 -28
- package/node_modules/@mdream/js/dist/index.d.mts +0 -4
- package/node_modules/@mdream/js/dist/index.mjs +0 -58
- package/node_modules/@mdream/js/dist/llms-txt.d.mts +0 -86
- package/node_modules/@mdream/js/dist/llms-txt.mjs +0 -308
- package/node_modules/@mdream/js/dist/negotiate.d.mts +0 -35
- package/node_modules/@mdream/js/dist/negotiate.mjs +0 -121
- package/node_modules/@mdream/js/dist/parse.d.mts +0 -90
- package/node_modules/@mdream/js/dist/parse.mjs +0 -2
- package/node_modules/@mdream/js/dist/plugins.d.mts +0 -85
- package/node_modules/@mdream/js/dist/plugins.mjs +0 -2
- package/node_modules/@mdream/js/dist/preset/minimal.d.mts +0 -2
- package/node_modules/@mdream/js/dist/preset/minimal.mjs +0 -33
- package/node_modules/@mdream/js/dist/splitter.d.mts +0 -18
- package/node_modules/@mdream/js/dist/splitter.mjs +0 -194
- package/node_modules/@mdream/js/package.json +0 -103
- package/node_modules/cac/LICENSE +0 -21
- package/node_modules/cac/README.md +0 -492
- package/node_modules/cac/dist/index.d.ts +0 -196
- package/node_modules/cac/dist/index.js +0 -638
- package/node_modules/cac/package.json +0 -72
- package/node_modules/mdream/LICENSE.md +0 -9
- package/node_modules/mdream/README.md +0 -1091
- package/node_modules/mdream/bin/mdream.mjs +0 -46
- package/node_modules/mdream/dist/browser.d.mts +0 -105
- package/node_modules/mdream/dist/browser.mjs +0 -262
- package/node_modules/mdream/dist/edge.d.mts +0 -100
- package/node_modules/mdream/dist/edge.mjs +0 -250
- package/node_modules/mdream/dist/iife.js +0 -605
- package/node_modules/mdream/dist/index.d.mts +0 -89
- package/node_modules/mdream/dist/index.mjs +0 -184
- package/node_modules/mdream/dist/wasm.d.mts +0 -100
- package/node_modules/mdream/dist/wasm.mjs +0 -140
- package/node_modules/mdream/dist/worker.d.mts +0 -101
- package/node_modules/mdream/dist/worker.mjs +0 -217
- package/node_modules/mdream/napi/index.d.mts +0 -127
- package/node_modules/mdream/napi/index.d.ts +0 -127
- package/node_modules/mdream/napi/index.mjs +0 -725
- package/node_modules/mdream/napi/rust.android-arm-eabi.node +0 -0
- package/node_modules/mdream/napi/rust.android-arm64.node +0 -0
- package/node_modules/mdream/napi/rust.darwin-arm64.node +0 -0
- package/node_modules/mdream/napi/rust.darwin-x64.node +0 -0
- package/node_modules/mdream/napi/rust.freebsd-x64.node +0 -0
- package/node_modules/mdream/napi/rust.linux-arm-gnueabihf.node +0 -0
- package/node_modules/mdream/napi/rust.linux-arm64-gnu.node +0 -0
- package/node_modules/mdream/napi/rust.linux-arm64-musl.node +0 -0
- package/node_modules/mdream/napi/rust.linux-x64-gnu.node +0 -0
- package/node_modules/mdream/napi/rust.linux-x64-musl.node +0 -0
- package/node_modules/mdream/napi/rust.wasi.cjs +0 -2144
- package/node_modules/mdream/napi/rust.wasm32-wasi.wasm +0 -0
- package/node_modules/mdream/napi/rust.win32-arm64-msvc.node +0 -0
- package/node_modules/mdream/napi/rust.win32-x64-msvc.node +0 -0
- package/node_modules/mdream/node_modules/@emnapi/core/LICENSE +0 -21
- package/node_modules/mdream/node_modules/@emnapi/core/README.md +0 -1
- package/node_modules/mdream/node_modules/@emnapi/core/dist/emnapi-core.d.ts +0 -392
- package/node_modules/mdream/node_modules/@emnapi/core/dist/emnapi-core.full.d.ts +0 -392
- package/node_modules/mdream/node_modules/@emnapi/core/dist/emnapi-core.full.js +0 -8351
- package/node_modules/mdream/node_modules/@emnapi/core/dist/emnapi-core.js +0 -7268
- package/node_modules/mdream/node_modules/@emnapi/core/dist/plugins/async-work.d.ts +0 -5
- package/node_modules/mdream/node_modules/@emnapi/core/dist/plugins/async-work.js +0 -843
- package/node_modules/mdream/node_modules/@emnapi/core/dist/plugins/index.d.ts +0 -4
- package/node_modules/mdream/node_modules/@emnapi/core/dist/plugins/index.js +0 -3
- package/node_modules/mdream/node_modules/@emnapi/core/dist/plugins/threadsafe-function.d.ts +0 -5
- package/node_modules/mdream/node_modules/@emnapi/core/dist/plugins/threadsafe-function.js +0 -1010
- package/node_modules/mdream/node_modules/@emnapi/core/dist/plugins/v8.d.ts +0 -5
- package/node_modules/mdream/node_modules/@emnapi/core/dist/plugins/v8.js +0 -1446
- package/node_modules/mdream/node_modules/@emnapi/core/package.json +0 -39
- package/node_modules/mdream/node_modules/@emnapi/core/rollup.config.js +0 -60
- package/node_modules/mdream/node_modules/@emnapi/runtime/LICENSE +0 -21
- package/node_modules/mdream/node_modules/@emnapi/runtime/README.md +0 -1
- package/node_modules/mdream/node_modules/@emnapi/runtime/dist/emnapi.d.ts +0 -833
- package/node_modules/mdream/node_modules/@emnapi/runtime/dist/emnapi.js +0 -2306
- package/node_modules/mdream/node_modules/@emnapi/runtime/dist/emnapi.js.map +0 -1
- package/node_modules/mdream/node_modules/@emnapi/runtime/index.cjs +0 -63
- package/node_modules/mdream/node_modules/@emnapi/runtime/package.json +0 -39
- package/node_modules/mdream/node_modules/@emnapi/runtime/rollup.config.js +0 -25
- package/node_modules/mdream/node_modules/@emnapi/wasi-threads/LICENSE +0 -21
- package/node_modules/mdream/node_modules/@emnapi/wasi-threads/README.md +0 -203
- package/node_modules/mdream/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +0 -236
- package/node_modules/mdream/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +0 -1086
- package/node_modules/mdream/node_modules/@emnapi/wasi-threads/package.json +0 -35
- package/node_modules/mdream/node_modules/@emnapi/wasi-threads/rollup.config.js +0 -6
- package/node_modules/mdream/node_modules/@napi-rs/wasm-runtime/dist/emnapi-plugins.cjs +0 -1472
- package/node_modules/mdream/node_modules/@napi-rs/wasm-runtime/dist/emnapi-plugins.js +0 -1470
- package/node_modules/mdream/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +0 -237
- package/node_modules/mdream/node_modules/@napi-rs/wasm-runtime/dist/fs.js +0 -18260
- package/node_modules/mdream/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +0 -317
- package/node_modules/mdream/node_modules/@napi-rs/wasm-runtime/package.json +0 -67
- package/node_modules/mdream/node_modules/@napi-rs/wasm-runtime/runtime.cjs +0 -39
- package/node_modules/mdream/node_modules/@napi-rs/wasm-runtime/runtime.js +0 -36
- package/node_modules/mdream/node_modules/@tybys/wasm-util/LICENSE +0 -21
- package/node_modules/mdream/node_modules/@tybys/wasm-util/README.md +0 -193
- package/node_modules/mdream/node_modules/@tybys/wasm-util/dist/tsdoc-metadata.json +0 -11
- package/node_modules/mdream/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts +0 -423
- package/node_modules/mdream/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +0 -2932
- package/node_modules/mdream/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +0 -2932
- package/node_modules/mdream/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +0 -1
- package/node_modules/mdream/node_modules/@tybys/wasm-util/dist/wasm-util.js +0 -2954
- package/node_modules/mdream/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +0 -1
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/asyncify.js +0 -158
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/index.js +0 -13
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/jspi.js +0 -46
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/load.js +0 -97
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/memory.js +0 -35
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/wasi/error.js +0 -103
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/wasi/fd.js +0 -268
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/wasi/fs.js +0 -3
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js +0 -192
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +0 -316
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +0 -1599
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/wasi/rights.js +0 -141
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/wasi/types.js +0 -220
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/wasi/util.js +0 -128
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/cjs/webassembly.js +0 -13
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/asyncify.mjs +0 -153
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/index.mjs +0 -9
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/jspi.mjs +0 -39
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/load.mjs +0 -89
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/memory.mjs +0 -28
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/wasi/error.mjs +0 -97
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/wasi/fd.mjs +0 -256
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/wasi/fs.mjs +0 -1
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs +0 -186
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +0 -310
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +0 -1593
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/wasi/rights.mjs +0 -135
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/wasi/types.mjs +0 -216
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/wasi/util.mjs +0 -113
- package/node_modules/mdream/node_modules/@tybys/wasm-util/lib/mjs/webassembly.mjs +0 -9
- package/node_modules/mdream/node_modules/@tybys/wasm-util/package.json +0 -58
- package/node_modules/mdream/node_modules/tslib/CopyrightNotice.txt +0 -15
- package/node_modules/mdream/node_modules/tslib/LICENSE.txt +0 -12
- package/node_modules/mdream/node_modules/tslib/README.md +0 -164
- package/node_modules/mdream/node_modules/tslib/SECURITY.md +0 -41
- package/node_modules/mdream/node_modules/tslib/modules/index.d.ts +0 -38
- package/node_modules/mdream/node_modules/tslib/modules/index.js +0 -70
- package/node_modules/mdream/node_modules/tslib/modules/package.json +0 -3
- package/node_modules/mdream/node_modules/tslib/package.json +0 -47
- package/node_modules/mdream/node_modules/tslib/tslib.d.ts +0 -460
- package/node_modules/mdream/node_modules/tslib/tslib.es6.html +0 -1
- package/node_modules/mdream/node_modules/tslib/tslib.es6.js +0 -402
- package/node_modules/mdream/node_modules/tslib/tslib.es6.mjs +0 -401
- package/node_modules/mdream/node_modules/tslib/tslib.html +0 -1
- package/node_modules/mdream/node_modules/tslib/tslib.js +0 -484
- package/node_modules/mdream/package.json +0 -110
- package/node_modules/mdream/skills/mdream/SKILL.md +0 -124
- package/node_modules/mdream/skills/mdream/references/runtimes.md +0 -49
- package/node_modules/mdream/wasm/mdream_edge.d.ts +0 -90
- package/node_modules/mdream/wasm/mdream_edge.js +0 -517
- package/node_modules/mdream/wasm/mdream_edge_bg.wasm +0 -0
- package/node_modules/mdream/wasm/mdream_edge_bg.wasm.d.ts +0 -20
- package/node_modules/mdream/wasm/package.json +0 -17
- package/node_modules/mdream/wasm-bundler/mdream_edge.d.ts +0 -45
- package/node_modules/mdream/wasm-bundler/mdream_edge.js +0 -13
- package/node_modules/mdream/wasm-bundler/mdream_edge_bg.js +0 -413
- package/node_modules/mdream/wasm-bundler/mdream_edge_bg.wasm +0 -0
- package/node_modules/mdream/wasm-bundler/mdream_edge_bg.wasm.d.ts +0 -20
- package/node_modules/mdream/wasm-bundler/package.json +0 -19
- package/node_modules/pathe/LICENSE +0 -70
- package/node_modules/pathe/README.md +0 -73
- package/node_modules/pathe/dist/index.cjs +0 -39
- package/node_modules/pathe/dist/index.d.cts +0 -47
- package/node_modules/pathe/dist/index.d.mts +0 -47
- package/node_modules/pathe/dist/index.d.ts +0 -47
- package/node_modules/pathe/dist/index.mjs +0 -19
- package/node_modules/pathe/dist/shared/pathe.BSlhyZSM.cjs +0 -266
- package/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs +0 -249
- package/node_modules/pathe/dist/utils.cjs +0 -82
- package/node_modules/pathe/dist/utils.d.cts +0 -32
- package/node_modules/pathe/dist/utils.d.mts +0 -32
- package/node_modules/pathe/dist/utils.d.ts +0 -32
- package/node_modules/pathe/dist/utils.mjs +0 -77
- package/node_modules/pathe/package.json +0 -61
- package/node_modules/pathe/utils.d.ts +0 -1
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Readable } from 'node:stream'
|
|
3
|
-
import { streamHtmlToMarkdown } from 'mdream'
|
|
4
|
-
|
|
5
|
-
const args = process.argv.slice(2)
|
|
6
|
-
let origin
|
|
7
|
-
let preset
|
|
8
|
-
let wrapWidth
|
|
9
|
-
let format
|
|
10
|
-
for (let i = 0; i < args.length; i++) {
|
|
11
|
-
if (args[i] === '--origin' && args[i + 1]) {
|
|
12
|
-
origin = args[++i]
|
|
13
|
-
}
|
|
14
|
-
else if (args[i] === '--preset' && args[i + 1]) {
|
|
15
|
-
preset = args[++i]
|
|
16
|
-
}
|
|
17
|
-
else if (args[i] === '--wrap-width' && args[i + 1]) {
|
|
18
|
-
wrapWidth = Number.parseInt(args[++i], 10) || undefined
|
|
19
|
-
}
|
|
20
|
-
else if (args[i] === '--format') {
|
|
21
|
-
const value = args[++i]
|
|
22
|
-
if (!value) {
|
|
23
|
-
process.stderr.write('--format requires a value: markdown, text, or html\n')
|
|
24
|
-
process.exit(1)
|
|
25
|
-
}
|
|
26
|
-
if (value !== 'markdown' && value !== 'text' && value !== 'html') {
|
|
27
|
-
process.stderr.write(`Unknown format: ${value}\n`)
|
|
28
|
-
process.exit(1)
|
|
29
|
-
}
|
|
30
|
-
format = value
|
|
31
|
-
}
|
|
32
|
-
else if (args[i] === '--text') {
|
|
33
|
-
format = 'text'
|
|
34
|
-
}
|
|
35
|
-
else if (args[i] === '-h' || args[i] === '--help') {
|
|
36
|
-
process.stdout.write('Usage: mdream [--origin <url>] [--preset minimal] [--wrap-width <n>] [--format markdown|text|html] [--text]\nPipe HTML via stdin, outputs Markdown, plain text, or safe HTML to stdout.\n')
|
|
37
|
-
process.exit(0)
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const options = { origin, minimal: preset === 'minimal', wrapWidth, format }
|
|
42
|
-
const stream = Readable.toWeb(process.stdin)
|
|
43
|
-
for await (const chunk of streamHtmlToMarkdown(stream, options)) {
|
|
44
|
-
if (chunk?.length)
|
|
45
|
-
process.stdout.write(chunk)
|
|
46
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
interface CleanOptions {
|
|
2
|
-
/** Strip tracking query parameters (utm_*, fbclid, gclid, etc.) from URLs */
|
|
3
|
-
urls?: boolean;
|
|
4
|
-
/** Strip fragment-only links that don't match any heading in the output */
|
|
5
|
-
fragments?: boolean;
|
|
6
|
-
/** Strip links with meaningless hrefs (#, javascript:void(0)) → plain text */
|
|
7
|
-
emptyLinks?: boolean;
|
|
8
|
-
/** Collapse 3+ consecutive blank lines to 2 */
|
|
9
|
-
blankLines?: boolean;
|
|
10
|
-
/** Strip links where text equals URL: [https://x.com](https://x.com) → https://x.com */
|
|
11
|
-
redundantLinks?: boolean;
|
|
12
|
-
/** Strip self-referencing heading anchors: ## [Title](#title) → ## Title */
|
|
13
|
-
selfLinkHeadings?: boolean;
|
|
14
|
-
/** Strip images with no alt text (decorative/tracking pixels) */
|
|
15
|
-
emptyImages?: boolean;
|
|
16
|
-
/** Drop links that produce no visible text: [](url) → nothing */
|
|
17
|
-
emptyLinkText?: boolean;
|
|
18
|
-
}
|
|
19
|
-
interface ExtractedElement {
|
|
20
|
-
selector: string;
|
|
21
|
-
tagName: string;
|
|
22
|
-
textContent: string;
|
|
23
|
-
attributes: Record<string, string>;
|
|
24
|
-
}
|
|
25
|
-
interface FrontmatterConfig {
|
|
26
|
-
additionalFields?: Record<string, string>;
|
|
27
|
-
metaFields?: string[];
|
|
28
|
-
/** Callback to receive structured frontmatter data after conversion */
|
|
29
|
-
onExtract?: (frontmatter: Record<string, string>) => void;
|
|
30
|
-
}
|
|
31
|
-
interface TagOverride {
|
|
32
|
-
enter?: string;
|
|
33
|
-
exit?: string;
|
|
34
|
-
spacing?: number[];
|
|
35
|
-
isInline?: boolean;
|
|
36
|
-
isSelfClosing?: boolean;
|
|
37
|
-
collapsesInnerWhiteSpace?: boolean;
|
|
38
|
-
alias?: string;
|
|
39
|
-
}
|
|
40
|
-
interface MdreamOptions {
|
|
41
|
-
/** Origin URL for resolving relative image paths and internal links. */
|
|
42
|
-
origin?: string;
|
|
43
|
-
/**
|
|
44
|
-
* Clean up the markdown output. Pass `true` for all cleanup or an object
|
|
45
|
-
* to enable specific features. Both `htmlToMarkdown` and
|
|
46
|
-
* `streamHtmlToMarkdown` apply it.
|
|
47
|
-
*/
|
|
48
|
-
clean?: boolean | CleanOptions;
|
|
49
|
-
/** Enable minimal preset (frontmatter, isolateMain, tailwind, filter). Default: false */
|
|
50
|
-
minimal?: boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Extract frontmatter from HTML head.
|
|
53
|
-
* - `true`: enable with defaults
|
|
54
|
-
* - `(fm) => void`: enable and receive structured data via callback
|
|
55
|
-
* - `FrontmatterConfig`: enable with config options and optional callback
|
|
56
|
-
*/
|
|
57
|
-
frontmatter?: boolean | ((frontmatter: Record<string, string>) => void) | FrontmatterConfig;
|
|
58
|
-
/** Isolate main content area. Default when minimal: true */
|
|
59
|
-
isolateMain?: boolean;
|
|
60
|
-
/** Convert Tailwind utility classes. Default when minimal: true */
|
|
61
|
-
tailwind?: boolean;
|
|
62
|
-
/**
|
|
63
|
-
* Filter elements by CSS selector. `minimal` excludes form, nav, footer, and
|
|
64
|
-
* similar; a filter passed with `minimal` adds to those excludes. `false`
|
|
65
|
-
* turns filtering off, including the `minimal` one.
|
|
66
|
-
*/
|
|
67
|
-
filter?: false | {
|
|
68
|
-
include?: string[];
|
|
69
|
-
exclude?: string[];
|
|
70
|
-
processChildren?: boolean;
|
|
71
|
-
};
|
|
72
|
-
/** Extract elements matching CSS selectors */
|
|
73
|
-
extraction?: Record<string, (element: ExtractedElement) => void>;
|
|
74
|
-
/** Tag overrides. String values act as aliases */
|
|
75
|
-
tagOverrides?: Record<string, TagOverride | string>;
|
|
76
|
-
/**
|
|
77
|
-
* Hard-wrap prose at this many characters, breaking on word boundaries.
|
|
78
|
-
* Applied inline during conversion (zero-cost when unset). Code blocks,
|
|
79
|
-
* tables, and headings are never wrapped. `0` disables wrapping.
|
|
80
|
-
*/
|
|
81
|
-
wrapWidth?: number;
|
|
82
|
-
/**
|
|
83
|
-
* Output format. Defaults to `markdown`; use `text` for readable plain text,
|
|
84
|
-
* or `html` for allowlisted semantic HTML.
|
|
85
|
-
*/
|
|
86
|
-
format?: 'markdown' | 'text' | 'html';
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Browser builds fetch the WASM binary on first use, so this returns a
|
|
90
|
-
* Promise. The `browser` export condition ships types that say so.
|
|
91
|
-
*/
|
|
92
|
-
export declare function htmlToMarkdown(html: string, options?: Partial<MdreamOptions>): Promise<string>;
|
|
93
|
-
export declare function createMarkdownStream(options?: Partial<MdreamOptions>): Promise<MarkdownStream>;
|
|
94
|
-
/** Streaming converter. Runs the frontmatter and extraction callbacks in `finish()`. */
|
|
95
|
-
export declare class MarkdownStream {
|
|
96
|
-
private _inner;
|
|
97
|
-
private _carry;
|
|
98
|
-
private _callbacks;
|
|
99
|
-
constructor(options?: Partial<MdreamOptions>);
|
|
100
|
-
processChunk(chunk: string): string;
|
|
101
|
-
processChunkBytes(chunk: Uint8Array): string;
|
|
102
|
-
finish(): string;
|
|
103
|
-
}
|
|
104
|
-
export declare function streamHtmlToMarkdown(htmlStream: ReadableStream<Uint8Array | string> | null, options?: Partial<MdreamOptions>): AsyncIterable<string>;
|
|
105
|
-
export type { CleanOptions, ExtractedElement, FrontmatterConfig, MdreamOptions, TagOverride };
|
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
import init, { MarkdownStream as MarkdownStream$1, __mdreamTakePanicMessage, htmlToMarkdownResult } from "../wasm/mdream_edge.js";
|
|
2
|
-
const MINIMAL_FILTER_EXCLUDE = [
|
|
3
|
-
"form",
|
|
4
|
-
"fieldset",
|
|
5
|
-
"object",
|
|
6
|
-
"embed",
|
|
7
|
-
"footer",
|
|
8
|
-
"aside",
|
|
9
|
-
"iframe",
|
|
10
|
-
"input",
|
|
11
|
-
"textarea",
|
|
12
|
-
"select",
|
|
13
|
-
"button",
|
|
14
|
-
"nav"
|
|
15
|
-
];
|
|
16
|
-
const CLEAN_ALL = {
|
|
17
|
-
urls: true,
|
|
18
|
-
fragments: true,
|
|
19
|
-
emptyLinks: true,
|
|
20
|
-
redundantLinks: true,
|
|
21
|
-
selfLinkHeadings: true,
|
|
22
|
-
emptyImages: true,
|
|
23
|
-
emptyLinkText: true
|
|
24
|
-
};
|
|
25
|
-
function resolveCleanConfig(options, minimal) {
|
|
26
|
-
const cleanUrls = options.cleanUrls === true;
|
|
27
|
-
let cleanOpt = options.clean;
|
|
28
|
-
if (cleanOpt === void 0) {
|
|
29
|
-
if (!minimal) return { cleanUrls };
|
|
30
|
-
cleanOpt = true;
|
|
31
|
-
}
|
|
32
|
-
if (!cleanOpt) return { cleanUrls };
|
|
33
|
-
const resolved = cleanOpt === true ? CLEAN_ALL : cleanOpt;
|
|
34
|
-
return {
|
|
35
|
-
cleanUrls: cleanUrls || resolved.urls === true,
|
|
36
|
-
clean: resolved
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function resolveFrontmatter(opt) {
|
|
40
|
-
if (typeof opt === "function") return {
|
|
41
|
-
config: {},
|
|
42
|
-
callback: opt
|
|
43
|
-
};
|
|
44
|
-
if (opt && typeof opt === "object") {
|
|
45
|
-
const { onExtract, ...config } = opt;
|
|
46
|
-
return {
|
|
47
|
-
config,
|
|
48
|
-
callback: onExtract
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
return { config: {} };
|
|
52
|
-
}
|
|
53
|
-
function resolveOptions(options) {
|
|
54
|
-
if (Array.isArray(options.plugins)) throw new TypeError("Custom hook plugins require @mdream/js. Pass declarative config (e.g. { frontmatter: true }) to the Rust engine, or import { htmlToMarkdown } from '@mdream/js' for hook-based plugins. See https://mdream.dev/v1-migration#custom-plugins");
|
|
55
|
-
const minimal = options.minimal === true;
|
|
56
|
-
const plugins = options.plugins ? { ...options.plugins } : {};
|
|
57
|
-
let frontmatterCallback;
|
|
58
|
-
const frontmatterDisabled = options.frontmatter === false;
|
|
59
|
-
if (minimal ? !frontmatterDisabled : !!options.frontmatter) {
|
|
60
|
-
const fm = resolveFrontmatter(options.frontmatter);
|
|
61
|
-
plugins.frontmatter = fm.config;
|
|
62
|
-
frontmatterCallback = fm.callback;
|
|
63
|
-
} else if (frontmatterDisabled) delete plugins.frontmatter;
|
|
64
|
-
const isolateMainDisabled = options.isolateMain === false;
|
|
65
|
-
if (minimal ? !isolateMainDisabled : options.isolateMain) plugins.isolateMain = true;
|
|
66
|
-
else if (isolateMainDisabled) delete plugins.isolateMain;
|
|
67
|
-
const tailwindDisabled = options.tailwind === false;
|
|
68
|
-
if (minimal ? !tailwindDisabled : options.tailwind) plugins.tailwind = true;
|
|
69
|
-
else if (tailwindDisabled) delete plugins.tailwind;
|
|
70
|
-
if (options.filter === false) delete plugins.filter;
|
|
71
|
-
else if (minimal) plugins.filter = {
|
|
72
|
-
...options.filter,
|
|
73
|
-
exclude: [...MINIMAL_FILTER_EXCLUDE, ...options.filter?.exclude ?? []]
|
|
74
|
-
};
|
|
75
|
-
else if (options.filter) plugins.filter = options.filter;
|
|
76
|
-
const extraction = options.extraction;
|
|
77
|
-
let extractionHandlers;
|
|
78
|
-
if (extraction) {
|
|
79
|
-
plugins.extraction = { selectors: Object.keys(extraction) };
|
|
80
|
-
extractionHandlers = extraction;
|
|
81
|
-
}
|
|
82
|
-
const tagOverrides = options.tagOverrides;
|
|
83
|
-
if (tagOverrides) {
|
|
84
|
-
const overrides = {};
|
|
85
|
-
for (const tag in tagOverrides) {
|
|
86
|
-
const value = tagOverrides[tag];
|
|
87
|
-
if (value) overrides[tag] = typeof value === "string" ? { alias: value } : value;
|
|
88
|
-
}
|
|
89
|
-
plugins.tagOverrides = overrides;
|
|
90
|
-
}
|
|
91
|
-
const { cleanUrls, clean } = resolveCleanConfig(options, minimal);
|
|
92
|
-
return {
|
|
93
|
-
napiOpts: {
|
|
94
|
-
origin: options.origin,
|
|
95
|
-
cleanUrls,
|
|
96
|
-
clean,
|
|
97
|
-
plugins,
|
|
98
|
-
wrapWidth: options.wrapWidth,
|
|
99
|
-
format: options.format
|
|
100
|
-
},
|
|
101
|
-
extractionHandlers,
|
|
102
|
-
frontmatterCallback
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
function deliverPluginData(data, { frontmatterCallback, extractionHandlers }) {
|
|
106
|
-
if (data.frontmatter && frontmatterCallback) frontmatterCallback(data.frontmatter);
|
|
107
|
-
if (data.extracted?.length && extractionHandlers) for (const element of data.extracted) extractionHandlers[element.selector]?.(element);
|
|
108
|
-
}
|
|
109
|
-
function hasCallbacks({ frontmatterCallback, extractionHandlers }) {
|
|
110
|
-
return !!frontmatterCallback || !!extractionHandlers;
|
|
111
|
-
}
|
|
112
|
-
function convertResult(convert, html, options = {}) {
|
|
113
|
-
const resolved = resolveOptions(options);
|
|
114
|
-
const result = convert(html, resolved.napiOpts);
|
|
115
|
-
deliverPluginData(result, resolved);
|
|
116
|
-
return result;
|
|
117
|
-
}
|
|
118
|
-
async function* pumpStream(stream, htmlStream, callbacks, { decodeInJs = false, mapError = (error) => error } = {}) {
|
|
119
|
-
const reader = htmlStream.getReader();
|
|
120
|
-
const decoder = decodeInJs ? new TextDecoder() : void 0;
|
|
121
|
-
try {
|
|
122
|
-
while (true) {
|
|
123
|
-
const { done, value } = await reader.read();
|
|
124
|
-
if (done) break;
|
|
125
|
-
let processed;
|
|
126
|
-
if (typeof value === "string") processed = stream.processChunk(decoder ? decoder.decode() + value : value);
|
|
127
|
-
else processed = decoder ? stream.processChunk(decoder.decode(value, { stream: true })) : stream.processChunkBytes(value);
|
|
128
|
-
if (processed) yield processed;
|
|
129
|
-
}
|
|
130
|
-
const decoderTail = decoder?.decode();
|
|
131
|
-
if (decoderTail) {
|
|
132
|
-
const processed = stream.processChunk(decoderTail);
|
|
133
|
-
if (processed) yield processed;
|
|
134
|
-
}
|
|
135
|
-
const final_ = stream.finish();
|
|
136
|
-
if (hasCallbacks(callbacks)) deliverPluginData(stream.takeData(), callbacks);
|
|
137
|
-
if (final_) yield final_;
|
|
138
|
-
} catch (error) {
|
|
139
|
-
throw mapError(error);
|
|
140
|
-
} finally {
|
|
141
|
-
reader.releaseLock();
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
function createSurrogateCarry() {
|
|
145
|
-
let held = "";
|
|
146
|
-
return {
|
|
147
|
-
take(chunk) {
|
|
148
|
-
if (held) {
|
|
149
|
-
chunk = held + chunk;
|
|
150
|
-
held = "";
|
|
151
|
-
}
|
|
152
|
-
const last = chunk.charCodeAt(chunk.length - 1);
|
|
153
|
-
if (last >= 55296 && last <= 56319) {
|
|
154
|
-
held = chunk.slice(-1);
|
|
155
|
-
return chunk.slice(0, -1);
|
|
156
|
-
}
|
|
157
|
-
return chunk;
|
|
158
|
-
},
|
|
159
|
-
flush() {
|
|
160
|
-
const value = held;
|
|
161
|
-
held = "";
|
|
162
|
-
return value;
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
function wasmPanicError(error, takeMessage) {
|
|
167
|
-
if (!(error instanceof WebAssembly.RuntimeError)) return error;
|
|
168
|
-
let message;
|
|
169
|
-
try {
|
|
170
|
-
message = takeMessage();
|
|
171
|
-
} catch {
|
|
172
|
-
return error;
|
|
173
|
-
}
|
|
174
|
-
if (!message) return error;
|
|
175
|
-
return new Error(`mdream WASM panic, please report this at https://github.com/harlan-zw/mdream/issues\n${message}`, { cause: error });
|
|
176
|
-
}
|
|
177
|
-
let _initPromise;
|
|
178
|
-
function ensureInit() {
|
|
179
|
-
if (!_initPromise) _initPromise = init();
|
|
180
|
-
return _initPromise;
|
|
181
|
-
}
|
|
182
|
-
ensureInit();
|
|
183
|
-
function convert(html, napiOpts) {
|
|
184
|
-
try {
|
|
185
|
-
return htmlToMarkdownResult(html, napiOpts);
|
|
186
|
-
} catch (error) {
|
|
187
|
-
throw wasmPanicError(error, __mdreamTakePanicMessage);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
async function htmlToMarkdown(html, options = {}) {
|
|
191
|
-
await ensureInit();
|
|
192
|
-
return convertResult(convert, html, options).markdown || "";
|
|
193
|
-
}
|
|
194
|
-
async function createMarkdownStream(options) {
|
|
195
|
-
await ensureInit();
|
|
196
|
-
return new MarkdownStream(options);
|
|
197
|
-
}
|
|
198
|
-
var MarkdownStream = class {
|
|
199
|
-
_inner;
|
|
200
|
-
_carry = createSurrogateCarry();
|
|
201
|
-
_callbacks;
|
|
202
|
-
constructor(options = {}) {
|
|
203
|
-
const resolved = resolveOptions(options);
|
|
204
|
-
this._callbacks = resolved;
|
|
205
|
-
try {
|
|
206
|
-
this._inner = new MarkdownStream$1(resolved.napiOpts);
|
|
207
|
-
} catch (error) {
|
|
208
|
-
throw wasmPanicError(error, __mdreamTakePanicMessage);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
processChunk(chunk) {
|
|
212
|
-
try {
|
|
213
|
-
return this._inner.processChunk(this._carry.take(chunk));
|
|
214
|
-
} catch (error) {
|
|
215
|
-
throw wasmPanicError(error, __mdreamTakePanicMessage);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
processChunkBytes(chunk) {
|
|
219
|
-
try {
|
|
220
|
-
const held = this._carry.flush();
|
|
221
|
-
return held ? this._inner.processChunk(held) + this._inner.processChunkBytes(chunk) : this._inner.processChunkBytes(chunk);
|
|
222
|
-
} catch (error) {
|
|
223
|
-
throw wasmPanicError(error, __mdreamTakePanicMessage);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
finish() {
|
|
227
|
-
let markdown;
|
|
228
|
-
try {
|
|
229
|
-
const held = this._carry.flush();
|
|
230
|
-
markdown = held ? this._inner.processChunk(held) + this._inner.finish() : this._inner.finish();
|
|
231
|
-
} catch (error) {
|
|
232
|
-
throw wasmPanicError(error, __mdreamTakePanicMessage);
|
|
233
|
-
}
|
|
234
|
-
if (this._callbacks.frontmatterCallback || this._callbacks.extractionHandlers) deliverPluginData(this._inner.takeData(), this._callbacks);
|
|
235
|
-
return markdown;
|
|
236
|
-
}
|
|
237
|
-
};
|
|
238
|
-
async function* streamHtmlToMarkdown(htmlStream, options = {}) {
|
|
239
|
-
if (!htmlStream) throw new Error("Invalid HTML stream provided");
|
|
240
|
-
await ensureInit();
|
|
241
|
-
const resolved = resolveOptions(options);
|
|
242
|
-
const carry = createSurrogateCarry();
|
|
243
|
-
let stream;
|
|
244
|
-
try {
|
|
245
|
-
stream = new MarkdownStream$1(resolved.napiOpts);
|
|
246
|
-
} catch (error) {
|
|
247
|
-
throw wasmPanicError(error, __mdreamTakePanicMessage);
|
|
248
|
-
}
|
|
249
|
-
yield* pumpStream({
|
|
250
|
-
processChunk: (chunk) => stream.processChunk(carry.take(chunk)),
|
|
251
|
-
processChunkBytes: (chunk) => {
|
|
252
|
-
const held = carry.flush();
|
|
253
|
-
return held ? stream.processChunk(held) + stream.processChunkBytes(chunk) : stream.processChunkBytes(chunk);
|
|
254
|
-
},
|
|
255
|
-
finish: () => {
|
|
256
|
-
const held = carry.flush();
|
|
257
|
-
return held ? stream.processChunk(held) + stream.finish() : stream.finish();
|
|
258
|
-
},
|
|
259
|
-
takeData: () => stream.takeData()
|
|
260
|
-
}, htmlStream, resolved, { mapError: (error) => wasmPanicError(error, __mdreamTakePanicMessage) });
|
|
261
|
-
}
|
|
262
|
-
export { MarkdownStream, createMarkdownStream, htmlToMarkdown, streamHtmlToMarkdown };
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
interface CleanOptions {
|
|
2
|
-
/** Strip tracking query parameters (utm_*, fbclid, gclid, etc.) from URLs */
|
|
3
|
-
urls?: boolean;
|
|
4
|
-
/** Strip fragment-only links that don't match any heading in the output */
|
|
5
|
-
fragments?: boolean;
|
|
6
|
-
/** Strip links with meaningless hrefs (#, javascript:void(0)) → plain text */
|
|
7
|
-
emptyLinks?: boolean;
|
|
8
|
-
/** Collapse 3+ consecutive blank lines to 2 */
|
|
9
|
-
blankLines?: boolean;
|
|
10
|
-
/** Strip links where text equals URL: [https://x.com](https://x.com) → https://x.com */
|
|
11
|
-
redundantLinks?: boolean;
|
|
12
|
-
/** Strip self-referencing heading anchors: ## [Title](#title) → ## Title */
|
|
13
|
-
selfLinkHeadings?: boolean;
|
|
14
|
-
/** Strip images with no alt text (decorative/tracking pixels) */
|
|
15
|
-
emptyImages?: boolean;
|
|
16
|
-
/** Drop links that produce no visible text: [](url) → nothing */
|
|
17
|
-
emptyLinkText?: boolean;
|
|
18
|
-
}
|
|
19
|
-
interface ExtractedElement {
|
|
20
|
-
selector: string;
|
|
21
|
-
tagName: string;
|
|
22
|
-
textContent: string;
|
|
23
|
-
attributes: Record<string, string>;
|
|
24
|
-
}
|
|
25
|
-
interface FrontmatterConfig {
|
|
26
|
-
additionalFields?: Record<string, string>;
|
|
27
|
-
metaFields?: string[];
|
|
28
|
-
/** Callback to receive structured frontmatter data after conversion */
|
|
29
|
-
onExtract?: (frontmatter: Record<string, string>) => void;
|
|
30
|
-
}
|
|
31
|
-
interface TagOverride {
|
|
32
|
-
enter?: string;
|
|
33
|
-
exit?: string;
|
|
34
|
-
spacing?: number[];
|
|
35
|
-
isInline?: boolean;
|
|
36
|
-
isSelfClosing?: boolean;
|
|
37
|
-
collapsesInnerWhiteSpace?: boolean;
|
|
38
|
-
alias?: string;
|
|
39
|
-
}
|
|
40
|
-
interface MdreamOptions {
|
|
41
|
-
/** Origin URL for resolving relative image paths and internal links. */
|
|
42
|
-
origin?: string;
|
|
43
|
-
/**
|
|
44
|
-
* Clean up the markdown output. Pass `true` for all cleanup or an object
|
|
45
|
-
* to enable specific features. Both `htmlToMarkdown` and
|
|
46
|
-
* `streamHtmlToMarkdown` apply it.
|
|
47
|
-
*/
|
|
48
|
-
clean?: boolean | CleanOptions;
|
|
49
|
-
/** Enable minimal preset (frontmatter, isolateMain, tailwind, filter). Default: false */
|
|
50
|
-
minimal?: boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Extract frontmatter from HTML head.
|
|
53
|
-
* - `true`: enable with defaults
|
|
54
|
-
* - `(fm) => void`: enable and receive structured data via callback
|
|
55
|
-
* - `FrontmatterConfig`: enable with config options and optional callback
|
|
56
|
-
*/
|
|
57
|
-
frontmatter?: boolean | ((frontmatter: Record<string, string>) => void) | FrontmatterConfig;
|
|
58
|
-
/** Isolate main content area. Default when minimal: true */
|
|
59
|
-
isolateMain?: boolean;
|
|
60
|
-
/** Convert Tailwind utility classes. Default when minimal: true */
|
|
61
|
-
tailwind?: boolean;
|
|
62
|
-
/**
|
|
63
|
-
* Filter elements by CSS selector. `minimal` excludes form, nav, footer, and
|
|
64
|
-
* similar; a filter passed with `minimal` adds to those excludes. `false`
|
|
65
|
-
* turns filtering off, including the `minimal` one.
|
|
66
|
-
*/
|
|
67
|
-
filter?: false | {
|
|
68
|
-
include?: string[];
|
|
69
|
-
exclude?: string[];
|
|
70
|
-
processChildren?: boolean;
|
|
71
|
-
};
|
|
72
|
-
/** Extract elements matching CSS selectors */
|
|
73
|
-
extraction?: Record<string, (element: ExtractedElement) => void>;
|
|
74
|
-
/** Tag overrides. String values act as aliases */
|
|
75
|
-
tagOverrides?: Record<string, TagOverride | string>;
|
|
76
|
-
/**
|
|
77
|
-
* Hard-wrap prose at this many characters, breaking on word boundaries.
|
|
78
|
-
* Applied inline during conversion (zero-cost when unset). Code blocks,
|
|
79
|
-
* tables, and headings are never wrapped. `0` disables wrapping.
|
|
80
|
-
*/
|
|
81
|
-
wrapWidth?: number;
|
|
82
|
-
/**
|
|
83
|
-
* Output format. Defaults to `markdown`; use `text` for readable plain text,
|
|
84
|
-
* or `html` for allowlisted semantic HTML.
|
|
85
|
-
*/
|
|
86
|
-
format?: 'markdown' | 'text' | 'html';
|
|
87
|
-
}
|
|
88
|
-
export declare function htmlToMarkdown(html: string, options?: Partial<MdreamOptions>): string;
|
|
89
|
-
/** Streaming converter. Runs the frontmatter and extraction callbacks in `finish()`. */
|
|
90
|
-
export declare class MarkdownStream {
|
|
91
|
-
private _inner;
|
|
92
|
-
private _carry;
|
|
93
|
-
private _callbacks;
|
|
94
|
-
constructor(options?: Partial<MdreamOptions>);
|
|
95
|
-
processChunk(chunk: string): string;
|
|
96
|
-
processChunkBytes(chunk: Uint8Array): string;
|
|
97
|
-
finish(): string;
|
|
98
|
-
}
|
|
99
|
-
export declare function streamHtmlToMarkdown(htmlStream: ReadableStream<Uint8Array | string> | null, options?: Partial<MdreamOptions>): AsyncIterable<string>;
|
|
100
|
-
export type { CleanOptions, ExtractedElement, FrontmatterConfig, MdreamOptions, TagOverride };
|