{"_id":"@depup/mdast-util-from-markdown","name":"@depup/mdast-util-from-markdown","dist-tags":{"latest":"2.0.3-depup.0"},"versions":{"2.0.3-depup.0":{"author":{"name":"Titus Wormer","email":"tituswormer@gmail.com","url":"https://wooorm.com"},"bugs":{"url":"https://github.com/syntax-tree/mdast-util-from-markdown/issues"},"contributors":[{"name":"Titus Wormer","email":"tituswormer@gmail.com","url":"https://wooorm.com"}],"dependencies":{"@types/mdast":"^4.0.4","@types/unist":"^3.0.3","decode-named-character-reference":"^1.3.0","devlop":"^1.1.0","mdast-util-to-string":"^4.0.0","micromark":"^4.0.2","micromark-util-decode-numeric-character-reference":"^2.0.2","micromark-util-decode-string":"^2.0.1","micromark-util-normalize-identifier":"^2.0.1","micromark-util-symbol":"^2.0.1","micromark-util-types":"^2.0.2","unist-util-stringify-position":"^4.0.0"},"description":"[DepUp] mdast utility to parse markdown","devDependencies":{"@types/node":"^25.0.0","c8":"^10.0.0","commonmark.json":"^0.31.0","esbuild":"^0.27.0","gzip-size-cli":"^5.0.0","hast-util-from-html":"^2.0.0","hast-util-to-html":"^9.0.0","mdast-util-to-hast":"^13.0.0","micromark-build":"^2.0.0","prettier":"^3.0.0","remark-cli":"^12.0.0","remark-preset-wooorm":"^11.0.0","terser":"^5.0.0","type-coverage":"^2.0.0","typescript":"^5.0.0","xo":"^1.0.0"},"exports":{"development":"./dev/index.js","default":"./index.js"},"funding":{"type":"opencollective","url":"https://opencollective.com/unified"},"keywords":["depup","dependency-bumped","updated-deps","mdast-util-from-markdown","ast","markdown","markup","mdast-util","mdast","parse","syntax","tree","unist","utility","util"],"license":"MIT","name":"@depup/mdast-util-from-markdown","prettier":{"bracketSpacing":false,"semi":false,"singleQuote":true,"tabWidth":2,"trailingComma":"none","useTabs":false},"remarkConfig":{"plugins":["remark-preset-wooorm"]},"repository":{"type":"git","url":"git+https://github.com/syntax-tree/mdast-util-from-markdown.git"},"scripts":{"build":"tsc --build --clean && tsc --build && type-coverage && micromark-build && esbuild . --bundle --minify | terser | gzip-size --raw","format":"remark --frail --quiet --output -- . && prettier --log-level warn --write -- . && xo --fix","test-api-dev":"node --conditions development test/index.js","test-api-prod":"node --conditions production test/index.js","test-api":"npm run test-api-dev && npm run test-api-prod","test-coverage":"c8 --100 --reporter lcov -- npm run test-api","test":"npm run build && npm run format && npm run test-coverage"},"sideEffects":false,"typeCoverage":{"atLeast":100,"strict":true},"type":"module","version":"2.0.3-depup.0","depup":{"changes":{"@types/mdast":{"from":"^4.0.0","to":"^4.0.4"},"@types/unist":{"from":"^3.0.0","to":"^3.0.3"},"decode-named-character-reference":{"from":"^1.0.0","to":"^1.3.0"},"devlop":{"from":"^1.0.0","to":"^1.1.0"},"micromark":{"from":"^4.0.0","to":"^4.0.2"},"micromark-util-decode-numeric-character-reference":{"from":"^2.0.0","to":"^2.0.2"},"micromark-util-decode-string":{"from":"^2.0.0","to":"^2.0.1"},"micromark-util-normalize-identifier":{"from":"^2.0.0","to":"^2.0.1"},"micromark-util-symbol":{"from":"^2.0.0","to":"^2.0.1"},"micromark-util-types":{"from":"^2.0.0","to":"^2.0.2"}},"depsUpdated":10,"originalPackage":"mdast-util-from-markdown","originalVersion":"2.0.3","processedAt":"2026-03-17T16:37:04.821Z","smokeTest":"passed"},"gitHead":"4696d3349a039de4b13745770d87bbf7fd3d5b12","types":"./index.d.ts","_id":"@depup/mdast-util-from-markdown@2.0.3-depup.0","homepage":"https://github.com/syntax-tree/mdast-util-from-markdown#readme","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-1Q/mgfO3FA0Ov6k0EdX8bb+hUgVOpTiYHNzOatfn8w7iwRss+YUataORAz5l8SgLoVESxNuN3XXu7XC13s3HIA==","shasum":"27aea980d706ba73a028cb25a656a5c0c462f066","tarball":"https://registry.npmjs.org/@depup/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3-depup.0.tgz","fileCount":19,"unpackedSize":100745,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHpd0mmOMsRwCnVpumUCmN4U0a6ypRXl3tSDhCjjokwKAiAHbQ3O602zwugMOEnKbF3AGlJLOMLADBAG52yE2M1/6A=="}]},"_npmUser":{"name":"chiefmikey","email":"wolfemikl@gmail.com"},"directories":{},"maintainers":[{"name":"chiefmikey","email":"wolfemikl@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mdast-util-from-markdown_2.0.3-depup.0_1773765427282_0.4955079393434876"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-17T16:37:07.165Z","2.0.3-depup.0":"2026-03-17T16:37:07.428Z","modified":"2026-03-17T16:37:07.649Z"},"maintainers":[{"name":"chiefmikey","email":"wolfemikl@gmail.com"}],"description":"[DepUp] mdast utility to parse markdown","homepage":"https://github.com/syntax-tree/mdast-util-from-markdown#readme","keywords":["depup","dependency-bumped","updated-deps","mdast-util-from-markdown","ast","markdown","markup","mdast-util","mdast","parse","syntax","tree","unist","utility","util"],"repository":{"type":"git","url":"git+https://github.com/syntax-tree/mdast-util-from-markdown.git"},"contributors":[{"name":"Titus Wormer","email":"tituswormer@gmail.com","url":"https://wooorm.com"}],"author":{"name":"Titus Wormer","email":"tituswormer@gmail.com","url":"https://wooorm.com"},"bugs":{"url":"https://github.com/syntax-tree/mdast-util-from-markdown/issues"},"license":"MIT","readme":"# mdast-util-from-markdown\n\n[![Build][badge-build-image]][badge-build-url]\n[![Coverage][badge-coverage-image]][badge-coverage-url]\n[![Downloads][badge-downloads-image]][badge-downloads-url]\n[![Size][badge-size-image]][badge-size-url]\n\n**[mdast][github-mdast]** utility that turns markdown into a syntax tree.\n\n## Contents\n\n* [What is this?](#what-is-this)\n* [When should I use this?](#when-should-i-use-this)\n* [Install](#install)\n* [Use](#use)\n* [API](#api)\n  * [`fromMarkdown(value[, encoding][, options])`](#frommarkdownvalue-encoding-options)\n  * [`CompileContext`](#compilecontext)\n  * [`CompileData`](#compiledata)\n  * [`Encoding`](#encoding)\n  * [`Extension`](#extension)\n  * [`Handle`](#handle)\n  * [`OnEnterError`](#onentererror)\n  * [`OnExitError`](#onexiterror)\n  * [`Options`](#options)\n  * [`Token`](#token)\n  * [`Transform`](#transform)\n  * [`Value`](#value)\n* [List of extensions](#list-of-extensions)\n* [Syntax](#syntax)\n* [Syntax tree](#syntax-tree)\n* [Types](#types)\n* [Compatibility](#compatibility)\n* [Security](#security)\n* [Related](#related)\n* [Contribute](#contribute)\n* [License](#license)\n\n## What is this?\n\nThis package is a utility that takes markdown input and turns it into an\n[mdast][github-mdast] syntax tree.\n\nThis utility uses [`micromark`][github-micromark],\nwhich turns markdown into tokens,\nand then turns those tokens into nodes.\nThis package is used inside [`remark-parse`][github-remark-parse],\nwhich focusses on\nmaking it easier to transform content by abstracting these internals away.\n\n## When should I use this?\n\nIf you want to handle syntax trees manually, use this.\nWhen you *just* want to turn markdown into HTML,\nuse [`micromark`][github-micromark] instead.\nFor an easier time processing content,\nuse the **[remark][github-remark]** ecosystem instead.\n\nYou can combine this package with other packages to add syntax extensions to\nmarkdown.\nNotable examples that deeply integrate with this package are\n[`mdast-util-mdx`][github-mdast-util-mdx],\n[`mdast-util-gfm`][github-mdast-util-gfm],\n[`mdast-util-frontmatter`][github-mdast-util-frontmatter],\n[`mdast-util-math`][github-mdast-util-math], and\n[`mdast-util-directive`][github-mdast-util-directive].\n\n## Install\n\nThis package is [ESM only][github-gist-esm].\nIn Node.js (version 16+), install with [npm][npmjs-install]:\n\n```sh\nnpm install mdast-util-from-markdown\n```\n\nIn Deno with [`esm.sh`][esmsh]:\n\n```js\nimport {fromMarkdown} from 'https://esm.sh/mdast-util-from-markdown@2'\n```\n\nIn browsers with [`esm.sh`][esmsh]:\n\n```html\n<script type=\"module\">\n  import {fromMarkdown} from 'https://esm.sh/mdast-util-from-markdown@2?bundle'\n</script>\n```\n\n## Use\n\nSay we have the following markdown file `example.md`:\n\n```markdown\n## Hello, *World*!\n```\n\n…and our module `example.js` looks as follows:\n\n```js\nimport fs from 'node:fs/promises'\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\nconst doc = await fs.readFile('example.md')\nconst tree = fromMarkdown(doc)\n\nconsole.log(tree)\n```\n\n…now running `node example.js` yields (positional info removed for brevity):\n\n```js\n{\n  type: 'root',\n  children: [\n    {\n      type: 'heading',\n      depth: 2,\n      children: [\n        {type: 'text', value: 'Hello, '},\n        {type: 'emphasis', children: [{type: 'text', value: 'World'}]},\n        {type: 'text', value: '!'}\n      ]\n    }\n  ]\n}\n```\n\n## API\n\nThis package exports the identifier [`fromMarkdown`][api-from-markdown].\nThere is no default export.\n\nThe export map supports the [`development` condition][node-packages-conditions].\nRun `node --conditions development example.js` to get instrumented dev code.\nWithout this condition, production code is loaded.\n\n### `fromMarkdown(value[, encoding][, options])`\n\nTurn markdown into a syntax tree.\n\n###### Overloads\n\n* `(value: Value, encoding: Encoding, options?: Options) => Root`\n* `(value: Value, options?: Options) => Root`\n\n###### Parameters\n\n* `value` ([`Value`][api-value])\n  — markdown to parse\n* `encoding` ([`Encoding`][api-encoding], default: `'utf8'`)\n  — [character encoding][node-util-encoding] for when `value` is\n  [`Uint8Array`][mozilla-uint8-array]\n* `options` ([`Options`][api-options], optional)\n  — configuration\n\n###### Returns\n\nmdast tree ([`Root`][github-mdast-root]).\n\n### `CompileContext`\n\nmdast compiler context (TypeScript type).\n\n###### Fields\n\n* `stack` ([`Array<Node>`][github-mdast-nodes])\n  — stack of nodes\n* `tokenStack` (`Array<[Token, OnEnterError | undefined]>`)\n  — stack of tokens\n* `data` ([`CompileData`][api-compile-data])\n  — info passed around; key/value store\n* `buffer` (`() => undefined`)\n  — capture some of the output data\n* `resume` (`() => string`)\n  — stop capturing and access the output data\n* `enter` (`(node: Node, token: Token, onError?: OnEnterError) => undefined`)\n  — enter a node\n* `exit` (`(token: Token, onError?: OnExitError) => undefined`)\n  — exit a node\n* `sliceSerialize` (`(token: Token, expandTabs?: boolean) => string`)\n  — get the string value of a token\n* `config` (`Required<Extension>`)\n  — configuration\n\n### `CompileData`\n\nInterface of tracked data (TypeScript type).\n\n###### Type\n\n```ts\ninterface CompileData { /* see code */ }\n```\n\nWhen working on extensions that use more data, extend the corresponding\ninterface to register their types:\n\n```ts\ndeclare module 'mdast-util-from-markdown' {\n  interface CompileData {\n    // Register a new field.\n    mathFlowInside?: boolean | undefined\n  }\n}\n```\n\n### `Encoding`\n\nEncodings supported by the [`Uint8Array`][mozilla-uint8-array] class\n(TypeScript type).\n\nSee [`micromark`][github-micromark-api] for more info.\n\n###### Type\n\n```ts\ntype Encoding = 'utf8' | /* … */\n```\n\n### `Extension`\n\nChange how markdown tokens from micromark are turned into mdast (TypeScript\ntype).\n\n###### Properties\n\n* `canContainEols` (`Array<string>`, optional)\n  — token types where line endings are used\n* `enter` ([`Record<string, Handle>`][api-handle], optional)\n  — opening handles\n* `exit` ([`Record<string, Handle>`][api-handle], optional)\n  — closing handles\n* `transforms` ([`Array<Transform>`][api-transform], optional)\n  — tree transforms\n\n### `Handle`\n\nHandle a token (TypeScript type).\n\n###### Parameters\n\n* `this` ([`CompileContext`][api-compile-context])\n  — context\n* `token` ([`Token`][api-token])\n  — current token\n\n###### Returns\n\nNothing (`undefined`).\n\n### `OnEnterError`\n\nHandle the case where the `right` token is open, but it is closed (by the\n`left` token) or because we reached the end of the document (TypeScript type).\n\n###### Parameters\n\n* `this` ([`CompileContext`][api-compile-context])\n  — context\n* `left` ([`Token`][api-token] or `undefined`)\n  — left token\n* `right` ([`Token`][api-token])\n  — right token\n\n###### Returns\n\nNothing (`undefined`).\n\n### `OnExitError`\n\nHandle the case where the `right` token is open but it is closed by\nexiting the `left` token (TypeScript type).\n\n###### Parameters\n\n* `this` ([`CompileContext`][api-compile-context])\n  — context\n* `left` ([`Token`][api-token])\n  — left token\n* `right` ([`Token`][api-token])\n  — right token\n\n###### Returns\n\nNothing (`undefined`).\n\n### `Options`\n\nConfiguration (TypeScript type).\n\n###### Properties\n\n* `extensions`\n  ([`Array<MicromarkExtension>`][github-micromark-extension], optional)\n  — micromark extensions to change how markdown is parsed\n* `mdastExtensions`\n  ([`Array<Extension | Array<Extension>>`][api-extension],\n  optional)\n  — extensions for this utility to change how tokens are turned into a tree\n\n### `Token`\n\nToken from micromark (TypeScript type).\n\n###### Type\n\n```ts\ntype Token = { /* … */ }\n```\n\n### `Transform`\n\nExtra transform, to change the AST afterwards (TypeScript type).\n\n###### Parameters\n\n* `tree` ([`Root`][github-mdast-root])\n  — tree to transform\n\n###### Returns\n\nNew tree ([`Root`][github-mdast-root]) or nothing\n(in which case the current tree is used).\n\n### `Value`\n\nContents of the file (TypeScript type).\n\nSee [`micromark`][github-micromark-api] for more info.\n\n###### Type\n\n```ts\ntype Value = Uint8Array | string\n```\n\n## List of extensions\n\n* [`syntax-tree/mdast-util-directive`][github-mdast-util-directive]\n  — directives\n* [`syntax-tree/mdast-util-frontmatter`][github-mdast-util-frontmatter]\n  — frontmatter (YAML, TOML, more)\n* [`syntax-tree/mdast-util-gfm`][github-mdast-util-gfm]\n  — GFM\n* [`syntax-tree/mdast-util-gfm-autolink-literal`](https://github.com/syntax-tree/mdast-util-gfm-autolink-literal)\n  — GFM autolink literals\n* [`syntax-tree/mdast-util-gfm-footnote`](https://github.com/syntax-tree/mdast-util-gfm-footnote)\n  — GFM footnotes\n* [`syntax-tree/mdast-util-gfm-strikethrough`](https://github.com/syntax-tree/mdast-util-gfm-strikethrough)\n  — GFM strikethrough\n* [`syntax-tree/mdast-util-gfm-table`](https://github.com/syntax-tree/mdast-util-gfm-table)\n  — GFM tables\n* [`syntax-tree/mdast-util-gfm-task-list-item`](https://github.com/syntax-tree/mdast-util-gfm-task-list-item)\n  — GFM task list items\n* [`syntax-tree/mdast-util-math`][github-mdast-util-math]\n  — math\n* [`syntax-tree/mdast-util-mdx`][github-mdast-util-mdx]\n  — MDX\n* [`syntax-tree/mdast-util-mdx-expression`](https://github.com/syntax-tree/mdast-util-mdx-expression)\n  — MDX expressions\n* [`syntax-tree/mdast-util-mdx-jsx`](https://github.com/syntax-tree/mdast-util-mdx-jsx)\n  — MDX JSX\n* [`syntax-tree/mdast-util-mdxjs-esm`](https://github.com/syntax-tree/mdast-util-mdxjs-esm)\n  — MDX ESM\n\n## Syntax\n\nMarkdown is parsed according to CommonMark.\nExtensions can add support for other syntax.\nIf you’re interested in extending markdown,\n[more information is available in micromark’s\nreadme][github-micromark-extension].\n\n## Syntax tree\n\nThe syntax tree is [mdast][github-mdast].\n\n## Types\n\nThis package is fully typed with [TypeScript][].\nIt exports the additional types\n[`CompileContext`][api-compile-context],\n[`CompileData`][api-compile-data],\n[`Encoding`][api-encoding],\n[`Extension`][api-extension],\n[`Handle`][api-handle],\n[`OnEnterError`][api-on-enter-error],\n[`OnExitError`][api-on-exit-error],\n[`Options`][api-options],\n[`Token`][api-token],\n[`Transform`][api-transform], and\n[`Value`][api-value].\n\n## Compatibility\n\nProjects maintained by the unified collective are compatible with maintained\nversions of Node.js.\n\nWhen we cut a new major release, we drop support for unmaintained versions of\nNode.\nThis means we try to keep the current release line,\n`mdast-util-from-markdown@^2`, compatible with Node.js 16.\n\n## Security\n\nAs markdown is sometimes used for HTML, and improper use of HTML can open you up\nto a [cross-site scripting (XSS)][wikipedia-xss] attack, use of `mdast-util-from-markdown`\ncan also be unsafe.\nWhen going to HTML, use this utility in combination with\n[`hast-util-sanitize`][github-hast-util-sanitize] to make the tree safe.\n\n## Related\n\n* [`syntax-tree/mdast-util-to-markdown`](https://github.com/syntax-tree/mdast-util-to-markdown)\n  — serialize mdast as markdown\n* [`micromark/micromark`][github-micromark]\n  — parse markdown\n* [`remarkjs/remark`][github-remark]\n  — process markdown\n\n## Contribute\n\nSee [`contributing.md`][health-contributing]\nin\n[`syntax-tree/.github`][health]\nfor ways to get started.\nSee [`support.md`][health-support] for ways to get help.\n\nThis project has a [code of conduct][health-coc].\nBy interacting with this repository, organization, or community you agree to\nabide by its terms.\n\n## License\n\n[MIT][file-license] © [Titus Wormer][wooorm]\n\n<!-- Definitions -->\n\n[api-compile-context]: #compilecontext\n\n[api-compile-data]: #compiledata\n\n[api-encoding]: #encoding\n\n[api-extension]: #extension\n\n[api-from-markdown]: #frommarkdownvalue-encoding-options\n\n[api-handle]: #handle\n\n[api-on-enter-error]: #onentererror\n\n[api-on-exit-error]: #onexiterror\n\n[api-options]: #options\n\n[api-token]: #token\n\n[api-transform]: #transform\n\n[api-value]: #value\n\n[badge-build-image]: https://github.com/syntax-tree/mdast-util-from-markdown/workflows/main/badge.svg\n\n[badge-build-url]: https://github.com/syntax-tree/mdast-util-from-markdown/actions\n\n[badge-coverage-image]: https://img.shields.io/codecov/c/github/syntax-tree/mdast-util-from-markdown.svg\n\n[badge-coverage-url]: https://codecov.io/github/syntax-tree/mdast-util-from-markdown\n\n[badge-downloads-image]: https://img.shields.io/npm/dm/mdast-util-from-markdown.svg\n\n[badge-downloads-url]: https://www.npmjs.com/package/mdast-util-from-markdown\n\n[badge-size-image]: https://img.shields.io/bundlejs/size/mdast-util-from-markdown\n\n[badge-size-url]: https://bundlejs.com/?q=mdast-util-from-markdown\n\n[esmsh]: https://esm.sh\n\n[file-license]: license\n\n[github-gist-esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c\n\n[github-hast-util-sanitize]: https://github.com/syntax-tree/hast-util-sanitize\n\n[github-mdast]: https://github.com/syntax-tree/mdast\n\n[github-mdast-nodes]: https://github.com/syntax-tree/mdast#nodes\n\n[github-mdast-root]: https://github.com/syntax-tree/mdast#root\n\n[github-mdast-util-directive]: https://github.com/syntax-tree/mdast-util-directive\n\n[github-mdast-util-frontmatter]: https://github.com/syntax-tree/mdast-util-frontmatter\n\n[github-mdast-util-gfm]: https://github.com/syntax-tree/mdast-util-gfm\n\n[github-mdast-util-math]: https://github.com/syntax-tree/mdast-util-math\n\n[github-mdast-util-mdx]: https://github.com/syntax-tree/mdast-util-mdx\n\n[github-micromark]: https://github.com/micromark/micromark\n\n[github-micromark-api]: https://github.com/micromark/micromark/tree/main/packages/micromark#micromarkvalue-encoding-options\n\n[github-micromark-extension]: https://github.com/micromark/micromark#extensions\n\n[github-remark]: https://github.com/remarkjs/remark\n\n[github-remark-parse]: https://github.com/remarkjs/remark/tree/main/packages/remark-parse\n\n[health]: https://github.com/syntax-tree/.github\n\n[health-coc]: https://github.com/syntax-tree/.github/blob/main/code-of-conduct.md\n\n[health-contributing]: https://github.com/syntax-tree/.github/blob/main/contributing.md\n\n[health-support]: https://github.com/syntax-tree/.github/blob/main/support.md\n\n[mozilla-uint8-array]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array\n\n[node-packages-conditions]: https://nodejs.org/api/packages.html#packages_resolving_user_conditions\n\n[node-util-encoding]: https://nodejs.org/api/util.html#whatwg-supported-encodings\n\n[npmjs-install]: https://docs.npmjs.com/cli/install\n\n[typescript]: https://www.typescriptlang.org\n\n[wikipedia-xss]: https://en.wikipedia.org/wiki/Cross-site_scripting\n\n[wooorm]: https://wooorm.com\n","readmeFilename":"readme.md","_rev":"1-c9e8878e979ff0e694dc5bb84dcc12f7"}