JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 27
  • Score
    100M100P100Q71287F
  • License MIT

A patched version of remark-deflist with proper support for nested definition lists. Drop-in replacement for remark-deflist.

Package Exports

  • @verikami/remark-deflist-revisited

Readme

@verikami/remark-deflist-revisited

GH Repo CI NPM Repo JSR Repo

A wrapper around remark-deflist with improved support for nested definition lists.
It preserves all the original functionality by installing this module as a dependency.

Installation

pnpm add @verikami/remark-deflist-revisited
ツ npm i @verikami/remark-deflist-revisited

Usage

The problem with remark-deflist

The plugin renders nested list items inside <dd> incorrectly.

Markdown

Term
: - item A
  - item B
  - item C

With remark-deflist

<dl>
<dt> Term </dt>
<dd>
  <ul>
    <li> item A </li>
  </ul>
</dl>
<ul>
  <li> item B </li>
  <li> item C </li>
</ul>

With @verikami/remark-deflist-revisited

<dl>
<dt>Term</dt>
<dd>
  <ul>
    <li> item A </li>
    <li> item B </li>
    <li> item C </li>
  </ul>
</dl>

Notes

  1. Using : * as a list marker (especially for the first item) is still causing errors.
  2. Using : - *x* or : - **x** is not problematic.

Usage in Node.js

import { remark } from "remark";
import html from "remark-html";
import deflist from "@verikami/remark-deflist-revisited";

let markdown;
let output;

markdown = `
Term
: - item A
  - item B
  - item C
`;

output = await remark().use(deflist).use(html).process(markdown);
console.log(String(output));

/* ------------------------------------------
<dl><dt>Term</dt><dd><ul>
<li>item A</li>
<li>item B</li>
<li>item C</li>
</ul></dd></dl>
------------------------------------------ */

markdown = `
Term
: - **item** A
  - **item** B
  - **item** C
`;

output = await remark().use(deflist).use(html).process(markdown);
console.log(String(output));

/* ------------------------------------------
<dl><dt>Term</dt><dd><ul>
<li><strong>item</strong> A</li>
<li><strong>item</strong> B</li>
<li><strong>item</strong> C</li>
</ul></dd></dl>
------------------------------------------ */

Usage in Astro

import remarkDeflist from "@verikami/remark-deflist-revisited";

export default defineConfig({
  markdown: {
    remarkPlugins: [
      remarkDeflist
    ]
  }
});

API

deflistWithLists()

Returns

  • Transformer — a unified transformer function

Example

function deflistWithLists(): Transformer
remark().use(deflistWithLists)

Processing Flow

Markdown
   │
Plugin (patched deflist)
   │
HTML // AST
   │
Snapshots (Vitest)
   │
Build (dist)
   │
CI/CD (GitHub Actions)
   │
┌─────────┬────────────┬─────────┐
│   NPM   │ GitHub     │   JSR   │
│         │ Packages   │         │
└─────────┴────────────┴─────────┘

License

Original work — MIT © Alex Shaw

MIT © veriKami