open-index/open-npm huggingface dataset:
npm package: @soulnote/markdown-it-tasks
Description: A markdown-it plugin that adds tasks(todo/doing/done...) function.
Author: mjrt
Latest version: 1.5.0

<!-- markdown-it-tasks -->

<p align="center">
  <img src="logo.png" alt="Markdown Logo" width="120" />
</p>

<h1 align="center">@soulnote/markdown-it-tasks</h1>

---

> 🚧 **This project is under active development. APIs and features may change at any time. Feedback and contributions are welcome!**

---

A powerful, flexible, and beautiful plugin for <a href="https://github.com/markdown-it/markdown-it">markdown-it</a> that brings tasks to your Markdown documents. Supports multiple task states (TODO, DOING, DONE, CANCELLED, IMPORTANT, OPTIONAL...) with customizable rendering.

---

## ✨ Features

- ✔️ **Task Syntax**: Add todo, doing, done, cancelled, and important tasks in Markdown.
- 🎨 **Customizable**: Change class names and rendering templates easily.
- 🧩 **Seamless Integration**: Works out-of-the-box with markdown-it.
- 🛡️ **TypeScript Support**: Fully typed for safe and modern development.

---

## 🚀 Installation

```bash
npm install @soulnote/markdown-it-tasks
# or
yarn add @soulnote/markdown-it-tasks
# or
pnpm add @soulnote/markdown-it-tasks
```

---

## 📝 Usage

```js
import MarkdownIt from "markdown-it";
import { Tasks } from "@soulnote/markdown-it-tasks";

const md = new MarkdownIt().use(Tasks());
const html = md.render("[ ] todo item");

console.log(html);
```

### Rendered Output

```html
<span class="md-tasks"
  ><input type="checkbox" disabled /><span>TODO</span>Write documentation</span
>
<span class="md-tasks"
  ><input type="checkbox" disabled checked /><span>DONE</span>Release
  package</span
>
<span class="md-tasks"
  ><input type="checkbox" disabled /><span>DOING</span>Working on new
  feature</span
>
<span class="md-tasks"
  ><input type="checkbox" disabled checked /><span>CANCELLED</span>Dropped
  idea</span
>
<span class="md-tasks"
  ><input type="checkbox" disabled /><span>IMPORTANT</span>Urgent fix</span
>
```

---

## ✅ Supported Task Types

| Markdown Syntax | State     |
| --------------- | --------- |
| `[ ]` or        | TODO      |
| `[x]` or `[X]`  | DONE      |
| `[~]`           | DOING     |
| `[-]`           | CANCELLED |
| `[!]`           | IMPORTANT |
| `[>]`           | OPTIONAL |

---

## ⚙️ Advanced Usage

### Custom Class Name & Rendering

```js
const md = new MarkdownIt().use(
  Task({
    className: "my-task",
    render_open: '<custom class="my-task-open">',
    render_close: "</custom>",
  })
);

md.render("[ ] Custom render");
// <custom class="my-task-open">Custom render</custom>
```

---

## 🤝 Contributing

Contributions, issues and feature requests are welcome!<br/>
Feel free to check [issues page](https://github.com/mjrt/markdown-it-tasks/issues) or submit a pull request.

---

## 📄 License

MIT © [mjrt](https://github.com/mjrt)
npm package: @soulofmischief/bind-props
Description: Bind each function property of an object to a new context.
Author: soulofmischief
Latest version: 1.1.8

# bind-props

[![build](https://img.shields.io/travis/soulofmischief/bind-props/master.svg?style=flat-square)](https://travis-ci.org/soulofmischief/bind-props)
[![coverage](https://img.shields.io/codecov/c/github/soulofmischief/bind-props/master.svg?style=flat-square)](http://codecov.io/gh/soulofmischief/bind-props?branch=master)
[![size](https://img.shields.io/bundlephobia/min/@soulofmischief/bind-props.svg?style=flat-square)](https://www.npmjs.com/package/@soulofmischief/bind-props)

## About

This module binds each function property of an object to a new context. This is useful for defining class methods in separate files in order to reduce module size and increase code clarity.

## Motivation

Modularity is awesome. Javascript classes aren't very modular. Classes methods must be defined inside the scope of the definition if they wish to inherit the class context! And the standard way for adding static methods doesn't work with namespaced methods. 
 
 `bind-props` helps to bring sanity back to your classes by allowing you to define large methods in separate files, namespacing them how you choose.

Private methods are achievable simply by using `Function.prototype.call` on a non-exported method with `this` while inside of any exported instance method. 

## Example

###### Test.js
```js
import * as ctrl from './ctrl'

export class Test {
  constructor() { 
    super()
    this.message = 'Howdy!'
  }

  ctrl = bindProps( this, ctrl )
}
```

###### index.js
```js
import { Test } from './Test'

Test.ctrl.test()

// -> Public: Howdy!
// -> Private: Howdy!

Test.ctrl.testPrivate()

// -> undefined
```

###### ctrl.js
```js
export function test() {
  console.log( 'Public: ', this.message )
  testPrivate.call( this )
}

function testPrivate() {
  console.log( 'Private: ', this.value )
}
```