open-index/open-npm huggingface dataset:
npm package: @mdi/util
Description: Util helpers for support builds.
Author: Austin Andrews
Latest version: 0.3.2

# Material Design Icons - Util

Utility methods for Material Design Icons' Build scripts.

## Getting Started

The `@mdi/util` package relies on the `@mdi/svg` package. Any version of `@mdi/svg` can be used.

```
npm install @mdi/svg @mdi/util
```

- getVersion()
- getMeta([bool withPaths])
- write(file, data)
- read(file)
- exists(file)

### getVersion()

This returns the version of `@mdi/svg` referenced in the `package.json`.

**returns** semver string `major.minor.build`

### getMeta([bool withPaths])

The main use of this library is to get all the icon data from the `meta.json`. Since the `meta.json` does not contain the SVG path data this method optionally allows this to be added to the object.

Please reference [meta.json](https://github.com/Templarian/MaterialDesign-SVG/blob/master/meta.json) for more information.

**returns** icon array []

### write(file, data)

```
import { write } from '@mdi/util'

write('file.txt', 'Hello World!')
```

### read(file)

```
import { read } from '@mdi/util'

const foo = read('file.txt')
```

**returns** string of file contents

### exists(file)

```
import { exists } from '@mdi/util'

if (exits('file.txt')) {
    // file exists!
}
```

**returns** bool `true`/`false` if file exists
npm package: @mdingena/tiny-typed-emitter
Description: Fully type-checked EventEmitter
Author: Marc Dingena
Latest version: 3.0.1

# tiny-typed-emitter

Have your events and their listeners type-checked with [no overhead](#no-overhead).

[![npm version](https://badge.fury.io/js/tiny-typed-emitter.svg)](https://badge.fury.io/js/tiny-typed-emitter)

## Install
  Simply add the dependency using **npm**:
```console
$ npm i tiny-typed-emitter
```
  or using **yarn**:
```console
$ yarn add tiny-typed-emitter
```

## Usage

1. import **tiny-typed-emitter** library:

  ```ts
  import { TypedEmitter } from 'tiny-typed-emitter';
  ```

2. define events and their listener signatures (**note:** quotes around event names are not mandatory):
  ```ts
  interface MyClassEvents {
    'added': (el: string, wasNew: boolean) => void;
    'deleted': (deletedCount: number) => void;
  }
  ```

3. on this step depending on your use case, you can:
  - define your custom class extending `EventEmitter`:
    ```ts
    class MyClass extends TypedEmitter<MyClassEvents> {
      constructor() {
        super();
      }
    }
    ```
  - create new event emitter instance:
    ```ts
    const emitter = new TypedEmitter<MyClassEvent>();
    ```

## Generic events interface
To use with generic events interface:

```ts
interface MyClassEvents<T> {
  'added': (el: T, wasNew: boolean) => void;
}

class MyClass<T> extends TypedEmitter<MyClassEvents<T>> {

}
```

## Compatible subclasses with different events

The type of `eventNames()` is a superset of the actual event names to make
subclasses of a `TypedEmitter` that introduce different events type
compatible. For example the following is possible:

```ts
class Animal<E extends ListenerSignature<E>=ListenerSignature<unknown>> extends TypedEmitter<{spawn: () => void} & E> {
  constructor() {
    super();
  }
}

class Frog<E extends ListenerSignature<E>> extends Animal<{jump: () => void} & E> {
}

class Bird<E extends ListenerSignature<E>> extends Animal<{fly: () => void} & E> {
}

const animals: Animal[] = [new Frog(), new Bird()];
```

## No Overhead
Library adds no overhead. All it does is it simply reexports renamed `EventEmitter`
with customized typings.
You can check **lib/index.js** to see the exported code.
npm package: @mdip/cipher
Description: MDIP cipher lib
Author: David McFadzean
Latest version: 1.4.1

# MDIP cipher

MDIP cryptography utilities for encryption/decryption and creating/verifying signatures.

## Installation

```bash
npm install @mdip/cipher
```

## Usage

The cipher library comes in two versions for servers and web browsers.
The classes are identical but have different package dependencies.

### Node server applications

```js
// Import using subpaths
import CipherNode from '@mdip/cipher/node';

//Non-subpath import
import CipherNode from '@mdip/cipher';

const cipher = new CipherNode();
```

### Web browsers

```js
// Import using subpaths
import CipherWeb from '@mdip/cipher/web';

//Non-subpath import
import CipherWeb from '@mdip/cipher';

const cipher = new CipherWeb();
```
npm package: @mdip/gatekeeper
Description: MDIP Gatekeeper
Author: David McFadzean
Latest version: 1.4.1

# MDIP Gatekeeper

Gatekeeper is a node library for the MDIP.
It manages a local database of DIDs on the MDIP network.
Gatekeeper functions are used to Create, Read, Update, and Delete DIDs (CRUD).

## Installation

```bash
npm install @mdip/gatekeeper
```
## Usage

### Library

The library must be configured by calling the start function with one of the supported databases:
- JSON - @mdip/gatekeeper/db/json
- JSON with memory cache - @mdip/gatekeeper/db/json-cache
- sqlite - @mdip/gatekeeper/db/sqlite
- mongodb - @mdip/gatekeeper/db/mongodb
- redis - @mdip/gatekeeper/db/redis

```js
// Import using subpaths
import Gatekeeper from '@mdip/gatekeeper';
import DbRedis from '@mdip/gatekeeper/db/redis';
import { logger } from '@mdip/common/logger';

// Non-subpath imports
import Gatekeeper, { DbRedis } from '@mdip/gatekeeper';

const db_redis = new DbRedis('mdip-test');
await db_redis.start();

const gatekeeper = new Gatekeeper({ db: db_redis });
const did = 'did:test:z3v8AuaTV5VKcT9MJoSHkSTRLpXDoqcgqiKkwGBNSV4nVzb6kLk';
const docs = await gatekeeper.resolveDID(did);
logger.info(JSON.stringify(docs, null, 4));
```

### Client

The GatekeeperClient is used to communicate with a Gatekeeper REST API service.

```js
// Import using subpaths
import GatekeeperClient from '@mdip/gatekeeper/client';
import { logger } from '@mdip/common/logger';

// Non-subpath imports
import { GatekeeperClient } from '@mdip/gatekeeper';

// Try connecting to the gatekeeper service every second,
// and start reporting (chatty) if not connected after 5 attempts
const gatekeeper = new GatekeeperClient();
await gatekeeper.connect({
    url: 'http://gatekeeper-host:4224',
    waitUntilReady: true,
    intervalSeconds: 1,
    chatty: false,
    becomeChattyAfter: 5
});

const did = 'did:test:z3v8AuaTV5VKcT9MJoSHkSTRLpXDoqcgqiKkwGBNSV4nVzb6kLk';
const docs = await gatekeeper.resolveDID(did);
logger.info(JSON.stringify(docs, null, 4));
```
npm package: @mdip/ipfs
Description: MDIP IPFS lib
Author: David McFadzean
Latest version: 1.4.1

# MDIP IPFS

MDIP utilities for integrating with IPFS.

## Installation

```bash
npm install @mdip/ipfs
```

## Usage

### basic use

```js
// Import using subpaths
import HeliaClient from '@mdip/ipfs/helia';

// Non-subpath import
import { HeliaClient } from '@mdip/ipfs';

const ipfs = new HeliaClient();

await ipfs.start();

const data = { data: 'whatever' };
const cid = await ipfs.addJSON(data);
const retrieve = await ipfs.getJSON(cid); // retrieve == data

await ipfs.stop();
```

### create factory

The static factory method `create` can be used to create and start an IPFS instance:

```js
const ipfs = await HeliaClient.create();
```

### FS blockstore mode

Passing `datadir` in options to `start` or `create` will persist the data to the specified folder.

```js
const ipfs = await HeliaClient.create({ datadir: 'data/ipfs' });
```

### minimal mode

Starting IPFS in `minimal` mode avoids starting a Helia IPFS server.
Only `add` works to generate CIDs. Nothing is persisted so `get` always throws a `NotConnectedError`.

```js
const ipfs = await HeliaClient.create({ minimal: true });
```
npm package: @mdip/keymaster
Description: MDIP Keymaster
Author: David McFadzean
Latest version: 1.4.1

# MDIP Keymaster

Keymaster is a client library for the MDIP.
It manages a wallet with any number of identities.

## Installation

```bash
npm install @mdip/keymaster
```

## Usage

### Library

The library must be configured by calling the start function with 3 dependencies:
- a configured gatekeeper instance
- a wallet database
- a cipher library (@mdip/cipher/node for servers or @mdip/cipher/web for web browsers)

#### Node application

```js
// Import using subpaths
import GatekeeperClient from '@mdip/gatekeeper/client';
import WalletJson from '@mdip/keymaster/wallet/json';
import CipherNode from '@mdip/cipher/node';
import Keymaster from '@mdip/keymaster';

// Non-subpath imports
import { GatekeeperClient } from '@mdip/gatekeeper';
import Keymaster, { WalletJson } from '@mdip/keymaster';
import CipherNode from '@mdip/cipher';

const gatekeeper = new GatekeeperClient();
await gatekeeper.connect({
    url: 'http://gatekeeper-host:4224',
    waitUntilReady: true,
    intervalSeconds: 5,
    chatty: true,
});
const wallet = new WalletJson();
const cipher = new CipherNode();
const passphrase = 'SuperSecurePassphrase';
const keymaster = new Keymaster({
    gatekeeper,
    wallet,
    cipher,
    passphrase
});

const newId = await keymaster.createId('Bob');
```

#### Browser wallet

```js
// Import using subpaths
import GatekeeperClient from '@mdip/gatekeeper/client';
import WalletWeb from '@mdip/keymaster/wallet/web';
import CipherWeb from '@mdip/cipher/web';
import Keymaster from '@mdip/keymaster';

// Non-subpath imports
import { GatekeeperClient } from '@mdip/gatekeeper';
import Keymaster, { WalletWeb } from '@mdip/keymaster';
import CipherWeb from '@mdip/cipher';

const gatekeeper = new GatekeeperClient();
await gatekeeper.connect({
    url: 'http://gatekeeper-host:4224',
    waitUntilReady: true,
    intervalSeconds: 5,
    chatty: true
});
const wallet = new WalletWeb();
const cipher = new CipherWeb();
const passphrase = 'SuperSecurePassphrase';
const keymaster = new Keymaster({
    gatekeeper,
    wallet,
    cipher,
    passphrase
});

const newId = await keymaster.createId('Bob');
```

### Client

The KeymasterClient is used to communicate with a keymaster REST API service.

```js
// Import using subpaths
import KeymasterClient from '@mdip/keymaster/client';

// Non-subpath imports
import { KeymasterClient } from '@mdip/keymaster';

const keymaster = new KeymasterClient();
await keymaster.connect({
    url: 'http://keymaster-host:4226',
    waitUntilReady: true,
    intervalSeconds: 5,
    chatty: true
});

const newId = await keymaster.createId('Bob');
```
npm package: @mdirshaddev/prettier-config
Description: 📦 This package is a go to standard packages for prettier.
Author: Md Irshad
Latest version: 0.0.5

# @mdirshaddev/prettier-config

Prettier package with import sorting plugin named `@ianvs/prettier-plugin-sort-imports`

The default config is my own styling format for the TypeScript, JavaScript codebase

```js
/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */
const sharedPrettierConfig = {
  singleQuote: true,
  bracketSameLine: true,
  bracketSpacing: true,
  endOfLine: 'lf',
  jsxSingleQuote: true,
  useTabs: false,
  semi: true,
  tabWidth: 2,
  trailingComma: 'none',
  arrowParens: 'avoid',
  embeddedLanguageFormatting: 'auto',
  plugins: ['@ianvs/prettier-plugin-sort-imports']
};

module.exports = sharedPrettierConfig;
```

# Installation

- npm

```
npm install @mdirshaddev/prettier-config
```

- yarn

```
yarn add @mdirshaddev/prettier-config
```

- pnpm

```
pnpm add @mdirshaddev/prettier-config
```

# How to setup

Crete a .prettierrc.js or .prettierrc.cjs when using type module then add the extension on the file as .cjs and for type common .js and define the `importOrder` with the regular expression now the prettier format will take care

```ts
/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */
const prettierConfig = {
  ...require('@mdirshaddev/prettier-config'),
  importOrderParserPlugins: ['typescript', 'decorators'],
  importOrder: [
    '<TYPES>',
    '<TYPES>^[./]',
    '',
    '<THIRD_PARTY_MODULES>',
    '',
    '<THIRD_PARTY_MODULES>(/.*)?$',
    '',
    '^src(/.*)$',
    '',
    '^[./]'
  ]
};

module.exports = prettierConfig;
```

```tsx
/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */
const prettierConfig = {
  ...require('@mdirshaddev/prettier-config'),
  importOrderParserPlugins: ['typescript', 'jsx', 'decorators'],
  importOrder: [
    '<TYPES>',
    '<TYPES>^[./]',
    '',
    '<THIRD_PARTY_MODULES>',
    '',
    '<THIRD_PARTY_MODULES>(/.*)?$',
    '',
    '^src(/.*)$',
    '',
    '^[./]'
  ]
};

module.exports = prettierConfig;
```
npm package: @mdit-kdu/plugin-component
Description: A markdown-it plugin to allow kdu components in markdown
Author: NKDuy
Latest version: 1.0.0

# @mdit-kdu/plugin-component

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to allow Kdu components in markdown.

- Treats [kdu built-in components](https://kdu-js.web.app/api/built-in-components.html) and unknown HTML tags as kdu components (markdown-it would treat them as inline tags by default).
- Allows kdu [`@` directive](https://kdu-js.web.app/api/built-in-directives.html#k-on) on native HTML tags.

## Install

```sh
npm i @mdit-kdu/plugin-component
```

## Usage

This plugin will only take effects when the `html` option of markdown-it is enabled:

```ts
import MarkdownIt from 'markdown-it';
import { componentPlugin } from '@mdit-kdu/plugin-component';

const md = MarkdownIt({ html: true }).use(componentPlugin, {
  // options
});

const rendered = md.render(
  `\
<!-- @ shorthand is supported -->
<Foo @click="onClick" />

<!-- multi-line syntax won't be wrapped with <p> -->
<Foo
  class="foo"
  :bar="bar"
/>
`,
);
```

## Options

### blockTags

- Type: `string[]`

- Default: `[]`

- Details:

  Extra tags to be treated as block tags.

  By default, all standard [HTML inline elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements) will be treated as inline tags (excluding [Kdu built-in special elements](https://kdu-js.web.app/api/built-in-special-elements.html)). All unknown elements will be assumed as Kdu components, and will be treated as block tags (with slight differences).

  In some cases (should be rare though) you might want to force some tags to behave like block tags, then you can use this option to specify the tag names.

  Notice that this option is case-sensitive, and has higher priority than the [inlineTags](#inlinetags) option.

### inlineTags

- Type: `string[]`

- Default: `[]`

- Details:

  Extra tags to be treated as inline tags.

  By default, only standard [HTML inline elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements) will be treated as inline tags (excluding [Kdu built-in special elements](https://kdu-js.web.app/api/built-in-special-elements.html)). All unknown elements will be assumed as Kdu components, and will be treated as block tags (with slight differences).

  Treating Kdu components like block tags would work as expected in most cases. However, in some cases you might want to force some tags to behave like inline tags, then you can use this option to specify the tag names.

  Notice that this option is case-sensitive, and has lower priority than the [blockTags](#blocktags) option.
npm package: @mdit-kdu/plugin-frontmatter
Description: A markdown-it plugin to get markdown frontmatter
Author: NKDuy
Latest version: 1.0.0

# @mdit-kdu/plugin-frontmatter

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to get markdown frontmatter with [gray-matter](https://github.com/jonschlinkert/gray-matter).

- Extracts frontmatter into markdown-it `env.frontmatter`.
- Allows providing default frontmatter via markdown-it `env.frontmatter`.
- Extracts markdown content without frontmatter into markdown-it `env.content`.
- Supports extracting rendered excerpt into markdown-it `env.excerpt`.

## Install

```sh
npm i @mdit-kdu/plugin-frontmatter
```

## Usage

```ts
import MarkdownIt from 'markdown-it';
import { frontmatterPlugin } from '@mdit-kdu/plugin-frontmatter';
import type { MarkdownItEnv } from '@mdit-kdu/types';

const md = MarkdownIt({ html: true }).use(frontmatterPlugin, {
  // options
  grayMatterOptions: {
    excerpt: true,
    excerpt_separator: '<!-- more -->',
  },
});
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
---
title: foobar
---

Everything above **more** comment will be extracted as excerpt.

<!-- more -->

Things below **more** comment will not be included in the excerpt.
`,
  env,
);

console.log(env.frontmatter);
console.log(env.content);
console.log(env.excerpt);
```

## Options

### grayMatterOptions

- Type: `GrayMatterOptions`

- Details:

  Options of [gray-matter](https://github.com/jonschlinkert/gray-matter).

### renderExcerpt

- Type: `boolean`

- Default: `true`

  Render the [excerpt](https://github.com/jonschlinkert/gray-matter#optionsexcerpt) with markdown-it or not.

  This option will only take effects when `grayMatterOptions.excerpt` is enabled (disabled by default) or `grayMatterOptions.excerpt_separator` is set (undefined by default).
npm package: @mdit-kdu/plugin-headers
Description: A markdown-it plugin to get markdown headers
Author: NKDuy
Latest version: 1.0.0

# @mdit-kdu/plugin-headers

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to get markdown headers.

- Extracts all headers info into markdown-it `env.headers`.

## Install

```sh
npm i @mdit-kdu/plugin-headers
```

## Usage

```ts
import MarkdownIt from 'markdown-it';
import { headersPlugin } from '@mdit-kdu/plugin-headers';
import type { MarkdownItEnv } from '@mdit-kdu/types';

const md = MarkdownIt({ html: true }).use(headersPlugin, {
  // options
});
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
# h1
## h2
### h3
`,
  env,
);

console.log(env.headers);
```

## Options

### format

- Type: `(str: string) => string`

- Details:

  A function for formatting header title.

### level

- Type: `number[]`

- Default: `[2, 3]`

- Details:

  Heading level that going to be extracted.

  When using this plugin with [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor) (recommended), this option should be a subset of markdown-it-anchor's `level` option to ensure the header slugs are existed.

### shouldAllowNested

- Type: `boolean`

- Default: `false`

- Details:

  Should allow headers inside nested blocks or not.

  If set to `true`, headers inside blockquote, list, etc. would also be extracted.

### slugify

- Type: `(str: string) => string`

- Default: `slugify` from `@mdit-kdu/shared`

- Details:

  A custom slugification function.

  The default slugify function comes from `@mdit-kdu/shared` package.

  When using this plugin with [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor) (recommended), this option will be ignored because the `id` of the headings have already been determined by markdown-it-anchor's `slugify` option.
npm package: @mdit-kdu/plugin-sfc
Description: A markdown-it plugin to help transforming markdown tu kdu sfc
Author: NKDuy
Latest version: 1.0.0

# @mdit-kdu/plugin-sfc

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to help transforming markdown to [Kdu SFC](https://kdu-js.web.app/guide/scaling-up/sfc.html).

- Avoids rendering `<script>` and `<style>` tags and extract them into to markdown-it `env.sfcBlocks`.
- Supports extracting custom blocks.
- Provides `env.sfcBlocks.template` for convenience.

## Install

```sh
npm i @mdit-kdu/plugin-sfc
```

## Usage

This plugin will only take effects when the `html` option of markdown-it is enabled:

```ts
import MarkdownIt from 'markdown-it';
import { sfcPlugin } from '@mdit-kdu/plugin-sfc';
import type { MarkdownItEnv } from '@mdit-kdu/types';

const md = MarkdownIt({ html: true }).use(sfcPlugin, {
  // options
});
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
# foo

<script>
console.log('bar')
</script>
`,
  env,
);

console.log(env.sfcBlocks);
```

## Options

### customBlocks

- Type: `string[]`

- Default: `[]`

- Details:

  SFC custom blocks to be extracted.

  By default, only `<script>` and `<style>` tags will be extracted. You can set this option to support SFC custom blocks in markdown.

  For example, if you set this option to `['i18n']`, the `<i18n>` tag in your markdown content will be extracted to `env.sfcBlocks.customBlocks` and won't appear in the rendered result.
npm package: @mdit-kdu/plugin-title
Description: A markdown-it plugin to get markdown page title
Author: NKDuy
Latest version: 1.0.0

# @mdit-vkduue/plugin-title

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to get page title.

- Extracts title (the content of the first level-1 heading) into markdown-it `env.title`.

## Install

```sh
npm i @mdit-kdu/plugin-title
```

## Usage

```ts
import MarkdownIt from 'markdown-it';
import { titlePlugin } from '@mdit-kdu/plugin-title';
import type { MarkdownItEnv } from '@mdit-kdu/types';

const md = MarkdownIt({ html: true }).use(titlePlugin);
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
# h1
## h2
### h3
`,
  env,
);

console.log(env.title);
```
npm package: @mdit-kdu/plugin-toc
Description: A markdown-it plugin to generate table-of-contents that compatible with Kdu.js
Author: NKDuy
Latest version: 1.0.0

# @mdit-kdu/plugin-toc

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to generate table-of-contents (TOC) that compatible with [Kdu.js](https://kdu-js.web.app).

This plugin is basically a fork of [markdown-it-toc-done-right](https://github.com/nagaozen/markdown-it-toc-done-right), with following enhancement:

- Allows `html_inline` tags in headings to support kdu components.
- Supports [containerTag](#containertag), [listTag](#listtag) and [linkTag](#linktag).
- Only allows array in [level](#level) option.
- Code refactor and optimizations.

## Install

```sh
npm i @mdit-kdu/plugin-toc
```

## Usage

```ts
import MarkdownIt from 'markdown-it';
import { tocPlugin } from '@mdit-kdu/plugin-toc';

const md = MarkdownIt({ html: true }).use(tocPlugin, {
  // options
});
```

## Options

### pattern

- Type: `RegExp`

- Default: `/^\[\[toc\]\]$/i`

- Details:

  The pattern serving as the TOC placeholder in your markdown.

### slugify

- Type: `(str: string) => string`

- Default: `slugify` from `@mdit-kdu/shared`

- Details:

  A custom slugification function.

  The default slugify function comes from `@mdit-kdu/shared` package.

  When using this plugin with [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor) (recommended), this option will be ignored because the `id` of the headings have already been determined by markdown-it-anchor's `slugify` option.

### format

- Type: `(str: string) => string`

- Details:

  A function for formatting headings.

### level

- Type: `number[]`

- Default: `[2, 3]`

- Details:

  Heading level that going to be included in the TOC.

  When using this plugin with [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor) (recommended), this option should be a subset of markdown-it-anchor's `level` option to ensure the target links are existed.

### shouldAllowNested

- Type: `boolean`

- Default: `false`

- Details:

  Should allow headers inside nested blocks or not.

  If set to `true`, headers inside blockquote, list, etc. would also be included.

### containerTag

- Type: `string`

- Default: `'nav'`

- Details:

  HTML tag of the TOC container.

### containerClass

- Type: `string`

- Default: `'table-of-contents'`

- Details:

  The class for the TOC container.

### listTag

- Type: `'ul' | 'ol'`

- Default: `'ul'`

- Details:

  HTML tag of the TOC list.

### listClass

- Type: `string`

- Default: `''`

- Details:

  The class for the TOC list.

### itemClass

- Type: `string`

- Default: `''`

- Details:

  The class for the `<li>` tag.

### linkTag

- Type: `'a' | 'router-link'`

- Default: `'a'`

- Details:

  The tag of the link inside the `<li>` tag.

  You can set this option to render to links as [kdu-router's router-link](https://kdujs-router.web.app/guide/#html).

### linkClass

- Type: `string`

- Default: `''`

- Details:

  The class for the link inside the `<li>` tag.
npm package: @mdit-kdu/types
Description: Shared types definition of mdit-kdu
Author: NKDuy
Latest version: 1.0.0

# @mdit-kdu/types

Shared types definition of mdit-kdu.

## Install

```sh
npm i @mdit-kdu/types
```

## Usage

Add more properties to `env` via [TypeScript module augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation):

```ts
declare module '@mdit-kdu/types' {
  interface MarkdownItEnv {
    foo?: string[];
  }
}
```

```ts
import MarkdownIt from 'markdown-it';
import type { MarkdownItEnv } from '@mdit-kdu/types';

const md = MarkdownIt({ html: true });
const env: MarkdownItEnv = {};
const rendered = md.render('raw markdown text', env);
```
npm package: @mdit-vue-for-enhancer/plugin-component
Description: A markdown-it plugin to allow vue components in markdown
Author: Par9uet
Latest version: 3.0.3

# @mdit-vue/plugin-component

[![npm](https://badgen.net/npm/v/@mdit-vue/plugin-component)](https://www.npmjs.com/package/@mdit-vue/plugin-component)
[![license](https://badgen.net/github/license/mdit-vue/mdit-vue)](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to allow Vue components in markdown.

- Treats [vue built-in components](https://vuejs.org/api/built-in-components.html) and unknown HTML tags as vue components (markdown-it would treat them as inline tags by default).
- Allows vue [`@` directive](https://vuejs.org/api/built-in-directives.html#v-on) on native HTML tags.

## Install

```sh
npm i @mdit-vue/plugin-component
```

## Usage

This plugin will only take effects when the `html` option of markdown-it is enabled:

```ts
import { componentPlugin } from '@mdit-vue/plugin-component';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(componentPlugin, {
  // options
});

const rendered = md.render(
  `\
<!-- @ shorthand is supported -->
<Foo @click="onClick" />

<!-- multi-line syntax won't be wrapped with <p> -->
<Foo
  class="foo"
  :bar="bar"
/>
`,
);
```

## Options

### blockTags

- Type: `string[]`

- Default: `[]`

- Details:

  Extra tags to be treated as block tags.

  By default, all standard [HTML inline elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements) will be treated as inline tags (excluding [Vue built-in special elements](https://vuejs.org/api/built-in-special-elements.html)). All unknown elements will be assumed as Vue components, and will be treated as block tags (with slight differences).

  In some cases (should be rare though) you might want to force some tags to behave like block tags, then you can use this option to specify the tag names.

  Notice that this option is case-sensitive, and has higher priority than the [inlineTags](#inlinetags) option.

### inlineTags

- Type: `string[]`

- Default: `[]`

- Details:

  Extra tags to be treated as inline tags.

  By default, only standard [HTML inline elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements) will be treated as inline tags (excluding [Vue built-in special elements](https://vuejs.org/api/built-in-special-elements.html)). All unknown elements will be assumed as Vue components, and will be treated as block tags (with slight differences).

  Treating Vue components like block tags would work as expected in most cases. However, in some cases you might want to force some tags to behave like inline tags, then you can use this option to specify the tag names.

  Notice that this option is case-sensitive, and has lower priority than the [blockTags](#blocktags) option.
npm package: @mdit-vue-for-enhancer/plugin-frontmatter
Description: A markdown-it plugin to get markdown frontmatter
Author: Par9uet
Latest version: 3.0.3

# @mdit-vue/plugin-frontmatter

[![npm](https://badgen.net/npm/v/@mdit-vue/plugin-frontmatter)](https://www.npmjs.com/package/@mdit-vue/plugin-frontmatter)
[![license](https://badgen.net/github/license/mdit-vue/mdit-vue)](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to get markdown frontmatter with [gray-matter](https://github.com/jonschlinkert/gray-matter).

- Extracts frontmatter into markdown-it `env.frontmatter`.
- Allows providing default frontmatter via markdown-it `env.frontmatter`.
- Extracts markdown content without frontmatter into markdown-it `env.content`.
- Supports extracting rendered excerpt into markdown-it `env.excerpt`.

## Install

```sh
npm i @mdit-vue/plugin-frontmatter
```

## Usage

```ts
import { frontmatterPlugin } from '@mdit-vue/plugin-frontmatter';
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(frontmatterPlugin, {
  // options
  grayMatterOptions: {
    excerpt: true,
    excerpt_separator: '<!-- more -->',
  },
});
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
---
title: foobar
---

Everything above **more** comment will be extracted as excerpt.

<!-- more -->

Things below **more** comment will not be included in the excerpt.
`,
  env,
);

console.log(env.frontmatter);
console.log(env.content);
console.log(env.excerpt);
```

## Options

### grayMatterOptions

- Type: `GrayMatterOptions`

- Details:

  Options of [gray-matter](https://github.com/jonschlinkert/gray-matter).

### renderExcerpt

- Type: `boolean`

- Default: `true`

  Render the [excerpt](https://github.com/jonschlinkert/gray-matter#optionsexcerpt) with markdown-it or not.

  This option will only take effects when `grayMatterOptions.excerpt` is enabled (disabled by default) or `grayMatterOptions.excerpt_separator` is set (undefined by default).
npm package: @mdit-vue-for-enhancer/plugin-headers
Description: A markdown-it plugin to get markdown headers
Author: Par9uet
Latest version: 3.0.3

# @mdit-vue/plugin-headers

[![npm](https://badgen.net/npm/v/@mdit-vue/plugin-headers)](https://www.npmjs.com/package/@mdit-vue/plugin-headers)
[![license](https://badgen.net/github/license/mdit-vue/mdit-vue)](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to get markdown headers.

- Extracts all headers info into markdown-it `env.headers`.

## Install

```sh
npm i @mdit-vue/plugin-headers
```

## Usage

```ts
import { headersPlugin } from '@mdit-vue/plugin-headers';
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(headersPlugin, {
  // options
});
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
# h1
## h2
### h3
`,
  env,
);

console.log(env.headers);
```

## Options

### format

- Type: `(str: string) => string`

- Details:

  A function for formatting header title.

### level

- Type: `number[]`

- Default: `[2, 3]`

- Details:

  Heading level that going to be extracted.

  When using this plugin with [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor) (recommended), this option should be a subset of markdown-it-anchor's `level` option to ensure the header slugs are existed.

### shouldAllowNested

- Type: `boolean`

- Default: `false`

- Details:

  Should allow headers inside nested blocks or not.

  If set to `true`, headers inside blockquote, list, etc. would also be extracted.

### slugify

- Type: `(str: string) => string`

- Default: `slugify` from `@mdit-vue/shared`

- Details:

  A custom slugification function.

  The default slugify function comes from [@mdit-vue/shared](https://github.com/mdit-vue/mdit-vue/tree/main/packages/shared) package.

  When using this plugin with [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor) (recommended), this option will be ignored because the `id` of the headings have already been determined by markdown-it-anchor's `slugify` option.
npm package: @mdit-vue-for-enhancer/plugin-sfc
Description: A markdown-it plugin to help transforming markdown to vue sfc
Author: Par9uet
Latest version: 3.0.3

# @mdit-vue/plugin-sfc

[![npm](https://badgen.net/npm/v/@mdit-vue/plugin-sfc)](https://www.npmjs.com/package/@mdit-vue/plugin-sfc)
[![license](https://badgen.net/github/license/mdit-vue/mdit-vue)](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to help transforming markdown to [Vue SFC](https://vuejs.org/guide/scaling-up/sfc.html).

- Avoids rendering `<script>` and `<style>` tags and extract them into to markdown-it `env.sfcBlocks`.
- Supports extracting custom blocks.
- Provides `env.sfcBlocks.template` for convenience.

## Install

```sh
npm i @mdit-vue/plugin-sfc
```

## Usage

This plugin will only take effects when the `html` option of markdown-it is enabled:

```ts
import { sfcPlugin } from '@mdit-vue/plugin-sfc';
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(sfcPlugin, {
  // options
});
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
# foo

<script>
console.log('bar')
</script>
`,
  env,
);

console.log(env.sfcBlocks);
```

## Options

### customBlocks

- Type: `string[]`

- Default: `[]`

- Details:

  SFC custom blocks to be extracted.

  By default, only `<script>` and `<style>` tags will be extracted. You can set this option to support SFC custom blocks in markdown.

  For example, if you set this option to `['i18n']`, the `<i18n>` tag in your markdown content will be extracted to `env.sfcBlocks.customBlocks` and won't appear in the rendered result.
npm package: @mdit-vue-for-enhancer/plugin-title
Description: A markdown-it plugin to get markdown page title
Author: Par9uet
Latest version: 3.0.3

# @mdit-vue/plugin-title

[![npm](https://badgen.net/npm/v/@mdit-vue/plugin-title)](https://www.npmjs.com/package/@mdit-vue/plugin-title)
[![license](https://badgen.net/github/license/mdit-vue/mdit-vue)](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to get page title.

- Extracts title (the content of the first level-1 heading) into markdown-it `env.title`.

## Install

```sh
npm i @mdit-vue/plugin-title
```

## Usage

```ts
import { titlePlugin } from '@mdit-vue/plugin-title';
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(titlePlugin);
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
# h1
## h2
### h3
`,
  env,
);

console.log(env.title);
```
npm package: @mdit-vue-for-enhancer/shared
Description: Shared utils and types of mdit-vue
Author: Par9uet
Latest version: 3.0.3

# @mdit-vue/shared

[![npm](https://badgen.net/npm/v/@mdit-vue/shared)](https://www.npmjs.com/package/@mdit-vue/shared)

Shared utils of mdit-vue.

## Install

```sh
npm i @mdit-vue/shared
```
npm package: @mdit-vue-for-enhancer/types
Description: Shared types definition of mdit-vue
Author: Par9uet
Latest version: 3.0.3

# @mdit-vue/types

[![npm](https://badgen.net/npm/v/@mdit-vue/types)](https://www.npmjs.com/package/@mdit-vue/types)

Shared types definition of mdit-vue.

## Install

```sh
npm i @mdit-vue/types
```

## Usage

Add more properties to `env` via [TypeScript module augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation):

```ts
declare module '@mdit-vue/types' {
  interface MarkdownItEnv {
    foo?: string[];
  }
}
```

```ts
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true });
const env: MarkdownItEnv = {};
const rendered = md.render('raw markdown text', env);
```
npm package: @mdit-vue/plugin-component
Description: A markdown-it plugin to allow vue components in markdown
Author: meteorlxy
Latest version: 3.0.2

# @mdit-vue/plugin-component

[![npm](https://badgen.net/npm/v/@mdit-vue/plugin-component)](https://www.npmjs.com/package/@mdit-vue/plugin-component)
[![license](https://badgen.net/github/license/mdit-vue/mdit-vue)](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to allow Vue components in markdown.

- Treats [vue built-in components](https://vuejs.org/api/built-in-components.html) and unknown HTML tags as vue components (markdown-it would treat them as inline tags by default).
- Allows vue [`@` directive](https://vuejs.org/api/built-in-directives.html#v-on) on native HTML tags.

## Install

```sh
npm i @mdit-vue/plugin-component
```

## Usage

This plugin will only take effects when the `html` option of markdown-it is enabled:

```ts
import { componentPlugin } from '@mdit-vue/plugin-component';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(componentPlugin, {
  // options
});

const rendered = md.render(
  `\
<!-- @ shorthand is supported -->
<Foo @click="onClick" />

<!-- multi-line syntax won't be wrapped with <p> -->
<Foo
  class="foo"
  :bar="bar"
/>
`,
);
```

## Options

### blockTags

- Type: `string[]`

- Default: `[]`

- Details:

  Extra tags to be treated as block tags.

  By default, all standard [HTML inline elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements) will be treated as inline tags (excluding [Vue built-in special elements](https://vuejs.org/api/built-in-special-elements.html)). All unknown elements will be assumed as Vue components, and will be treated as block tags (with slight differences).

  In some cases (should be rare though) you might want to force some tags to behave like block tags, then you can use this option to specify the tag names.

  Notice that this option is case-sensitive, and has higher priority than the [inlineTags](#inlinetags) option.

### inlineTags

- Type: `string[]`

- Default: `[]`

- Details:

  Extra tags to be treated as inline tags.

  By default, only standard [HTML inline elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements) will be treated as inline tags (excluding [Vue built-in special elements](https://vuejs.org/api/built-in-special-elements.html)). All unknown elements will be assumed as Vue components, and will be treated as block tags (with slight differences).

  Treating Vue components like block tags would work as expected in most cases. However, in some cases you might want to force some tags to behave like inline tags, then you can use this option to specify the tag names.

  Notice that this option is case-sensitive, and has lower priority than the [blockTags](#blocktags) option.
npm package: @mdit-vue/plugin-frontmatter
Description: A markdown-it plugin to get markdown frontmatter
Author: meteorlxy
Latest version: 3.0.2

# @mdit-vue/plugin-frontmatter

[![npm](https://badgen.net/npm/v/@mdit-vue/plugin-frontmatter)](https://www.npmjs.com/package/@mdit-vue/plugin-frontmatter)
[![license](https://badgen.net/github/license/mdit-vue/mdit-vue)](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to get markdown frontmatter with [gray-matter](https://github.com/jonschlinkert/gray-matter).

- Extracts frontmatter into markdown-it `env.frontmatter`.
- Allows providing default frontmatter via markdown-it `env.frontmatter`.
- Extracts markdown content without frontmatter into markdown-it `env.content`.
- Supports extracting rendered excerpt into markdown-it `env.excerpt`.

## Install

```sh
npm i @mdit-vue/plugin-frontmatter
```

## Usage

```ts
import { frontmatterPlugin } from '@mdit-vue/plugin-frontmatter';
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(frontmatterPlugin, {
  // options
  grayMatterOptions: {
    excerpt: true,
    excerpt_separator: '<!-- more -->',
  },
});
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
---
title: foobar
---

Everything above **more** comment will be extracted as excerpt.

<!-- more -->

Things below **more** comment will not be included in the excerpt.
`,
  env,
);

console.log(env.frontmatter);
console.log(env.content);
console.log(env.excerpt);
```

## Options

### grayMatterOptions

- Type: `GrayMatterOptions`

- Details:

  Options of [gray-matter](https://github.com/jonschlinkert/gray-matter).

### renderExcerpt

- Type: `boolean`

- Default: `true`

  Render the [excerpt](https://github.com/jonschlinkert/gray-matter#optionsexcerpt) with markdown-it or not.

  This option will only take effects when `grayMatterOptions.excerpt` is enabled (disabled by default) or `grayMatterOptions.excerpt_separator` is set (undefined by default).
npm package: @mdit-vue/plugin-headers
Description: A markdown-it plugin to get markdown headers
Author: meteorlxy
Latest version: 3.0.2

# @mdit-vue/plugin-headers

[![npm](https://badgen.net/npm/v/@mdit-vue/plugin-headers)](https://www.npmjs.com/package/@mdit-vue/plugin-headers)
[![license](https://badgen.net/github/license/mdit-vue/mdit-vue)](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to get markdown headers.

- Extracts all headers info into markdown-it `env.headers`.

## Install

```sh
npm i @mdit-vue/plugin-headers
```

## Usage

```ts
import { headersPlugin } from '@mdit-vue/plugin-headers';
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(headersPlugin, {
  // options
});
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
# h1
## h2
### h3
`,
  env,
);

console.log(env.headers);
```

## Options

### format

- Type: `(str: string) => string`

- Details:

  A function for formatting header title.

### level

- Type: `number[]`

- Default: `[2, 3]`

- Details:

  Heading level that going to be extracted.

  When using this plugin with [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor) (recommended), this option should be a subset of markdown-it-anchor's `level` option to ensure the header slugs are existed.

### shouldAllowNested

- Type: `boolean`

- Default: `false`

- Details:

  Should allow headers inside nested blocks or not.

  If set to `true`, headers inside blockquote, list, etc. would also be extracted.

### slugify

- Type: `(str: string) => string`

- Default: `slugify` from `@mdit-vue/shared`

- Details:

  A custom slugification function.

  The default slugify function comes from [@mdit-vue/shared](https://github.com/mdit-vue/mdit-vue/tree/main/packages/shared) package.

  When using this plugin with [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor) (recommended), this option will be ignored because the `id` of the headings have already been determined by markdown-it-anchor's `slugify` option.
npm package: @mdit-vue/plugin-sfc
Description: A markdown-it plugin to help transforming markdown to vue sfc
Author: meteorlxy
Latest version: 3.0.2

# @mdit-vue/plugin-sfc

[![npm](https://badgen.net/npm/v/@mdit-vue/plugin-sfc)](https://www.npmjs.com/package/@mdit-vue/plugin-sfc)
[![license](https://badgen.net/github/license/mdit-vue/mdit-vue)](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to help transforming markdown to [Vue SFC](https://vuejs.org/guide/scaling-up/sfc.html).

- Avoids rendering `<script>` and `<style>` tags and extract them into to markdown-it `env.sfcBlocks`.
- Supports extracting custom blocks.
- Provides `env.sfcBlocks.template` for convenience.

## Install

```sh
npm i @mdit-vue/plugin-sfc
```

## Usage

This plugin will only take effects when the `html` option of markdown-it is enabled:

```ts
import { sfcPlugin } from '@mdit-vue/plugin-sfc';
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(sfcPlugin, {
  // options
});
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
# foo

<script>
console.log('bar')
</script>
`,
  env,
);

console.log(env.sfcBlocks);
```

## Options

### customBlocks

- Type: `string[]`

- Default: `[]`

- Details:

  SFC custom blocks to be extracted.

  By default, only `<script>` and `<style>` tags will be extracted. You can set this option to support SFC custom blocks in markdown.

  For example, if you set this option to `['i18n']`, the `<i18n>` tag in your markdown content will be extracted to `env.sfcBlocks.customBlocks` and won't appear in the rendered result.
npm package: @mdit-vue/plugin-title
Description: A markdown-it plugin to get markdown page title
Author: meteorlxy
Latest version: 3.0.2

# @mdit-vue/plugin-title

[![npm](https://badgen.net/npm/v/@mdit-vue/plugin-title)](https://www.npmjs.com/package/@mdit-vue/plugin-title)
[![license](https://badgen.net/github/license/mdit-vue/mdit-vue)](https://github.com/mdit-vue/mdit-vue/blob/main/LICENSE)

A [markdown-it](https://github.com/markdown-it/markdown-it) plugin to get page title.

- Extracts title (the content of the first level-1 heading) into markdown-it `env.title`.

## Install

```sh
npm i @mdit-vue/plugin-title
```

## Usage

```ts
import { titlePlugin } from '@mdit-vue/plugin-title';
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(titlePlugin);
const env: MarkdownItEnv = {};

const rendered = md.render(
  `\
# h1
## h2
### h3
`,
  env,
);

console.log(env.title);
```
npm package: @mdit-vue/shared
Description: Shared utils and types of mdit-vue
Author: meteorlxy
Latest version: 3.0.2

# @mdit-vue/shared

[![npm](https://badgen.net/npm/v/@mdit-vue/shared)](https://www.npmjs.com/package/@mdit-vue/shared)

Shared utils of mdit-vue.

## Install

```sh
npm i @mdit-vue/shared
```
npm package: @mdit-vue/types
Description: Shared types definition of mdit-vue
Author: meteorlxy
Latest version: 3.0.2

# @mdit-vue/types

[![npm](https://badgen.net/npm/v/@mdit-vue/types)](https://www.npmjs.com/package/@mdit-vue/types)

Shared types definition of mdit-vue.

## Install

```sh
npm i @mdit-vue/types
```

## Usage

Add more properties to `env` via [TypeScript module augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation):

```ts
declare module '@mdit-vue/types' {
  interface MarkdownItEnv {
    foo?: string[];
  }
}
```

```ts
import type { MarkdownItEnv } from '@mdit-vue/types';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true });
const env: MarkdownItEnv = {};
const rendered = md.render('raw markdown text', env);
```
npm package: @mdit/helper
Description: Helper functions for MarkdownIt plugins
Author: Mr.Hope
Latest version: 0.23.2

# @mdit/plugin-helper

[![Version](https://img.shields.io/npm/v/@mdit/plugin-helper.svg?style=flat-square&logo=npm) ![Downloads](https://img.shields.io/npm/dm/@mdit/plugin-helper.svg?style=flat-square&logo=npm) ![Size](https://img.shields.io/bundlephobia/min/@mdit/plugin-helper?style=flat-square&logo=npm)](https://www.npmjs.com/package/@mdit/plugin-helper)

Image lazyload plugin for MarkdownIt.

## [Docs](https://mdit-plugins.github.io/helper.html) | [文档](https://mdit-plugins.github.io/zh/helper.html)

## Install / 安装

```bash
# pnpm
pnpm add -D @mdit/plugin-helper
# npm
npm i -D @mdit/plugin-helper
# yarn
yarn add -D @mdit/plugin-helper
```
npm package: @mdit/plugin-abbr
Description: abbr plugin for MarkdownIt
Author: Mr.Hope
Latest version: 0.23.2

# @mdit/plugin-abbr

[![Version](https://img.shields.io/npm/v/@mdit/plugin-abbr.svg?style=flat-square&logo=npm) ![Downloads](https://img.shields.io/npm/dm/@mdit/plugin-abbr.svg?style=flat-square&logo=npm) ![Size](https://img.shields.io/bundlephobia/min/@mdit/plugin-abbr?style=flat-square&logo=npm)](https://www.npmjs.com/package/@mdit/plugin-abbr)

abbr plugin for MarkdownIt.

## Install / 安装

```bash
# pnpm
pnpm add -D @mdit/plugin-abbr
# npm
npm i -D @mdit/plugin-abbr
# yarn
yarn add -D @mdit/plugin-abbr
```