open-index/open-npm huggingface dataset:
npm package: @imjxsx/wapi
Description: Framework for developing bots for the WhatsApp application: fast, secure, and elegant, powered by Baileys and developed 100% in TypeScript.
Author: imjxsx
Latest version: 1.3.2
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

<div align="center">
  <h1>⚡ @imjxsx/wapi (v1.3.2)</h1>
  <p>Framework for developing bots for the WhatsApp application: fast, secure, and elegant, powered by Baileys and developed 100% in TypeScript</p>
</div>

---

<div align="center">
  <h3>📥 Installation</h3>
</div>

```bash
# With NPM
npm install @imjxsx/wapi

# With PNPM
pnpm add @imjxsx/wapi

# With Yarn
yarn add @imjxsx/wapi

# With Bun
bun add @imjxsx/wapi
```

---

<div align="center">
  <h3>🚀 Use</h3>
</div>

```javascript
// index.js
import { Bot, LocalAuth  } from "@imjxsx/wapi";
import QRCode from "qrcode";

const uuid = "1f1332f4-7c2a-4b88-b4ca-bd56d07ed713";
// (uuid: UUID, directory: string)
const auth = new LocalAuth(uuid, "sessions"); // or RedisAuth, MongoAuth
/**
 * The 'pn' field is required if you want to log in with an OTP code; if you are going to log in with a QR code, put "" in all three fields.
 * 
 * The 'jid' field must follow this format: "id@lid"
 * The 'pn' field must follow this format: "phone@s.whatsapp.net"
*/
const account = {
  jid: "",
  pn: "",
  name: "",
};
// (uuid: UUID, auth: IBotAuth, account: IBotAccount, logger?: Logger)
const bot = new Bot(uuid, auth, account);
bot.on("qr", async (qr) => {
  qr = await QRCode.toString(qr, { type: "terminal", small: true });
  console.log(qr);
});
bot.on("open", (account) => {
  bot.logger.info(`Successful login to @${account.name} (${account.pn})`);
});
bot.on("close", (reason) => {
  bot.logger.warn(reason);
});
bot.on("error", (err) => {
  bot.logger.error(err);
});
// It supports middlewares.
bot.use(async (ctx, next) => {
  bot.logger.info(`New message from '${ctx.from.name}' in '${ctx.chat.name}'`);
  await next();
});
// The default prefixes are '/' and '!'
bot.command("ping", async (ctx) => {
  await ctx.reply(`> ¡Pong! \`\`\`${bot.ping.toFixed(2)} ms\`\`\``);
});
await bot.login("qr");
```

---

<div align="center">
  <p>
    <b>Created and maintained with ❤ by <a href="https://github.com/imjxsx">I'm Jxsx</a></b>
  </p>
</div>

---
npm package: @imkdown/lg-solution-formatter
Description: A JavaScript library for formatting Markdown to meet "Solution Standard of Luogu Main Problem Set" (洛谷主题库题解规范)
Author: Imken Luo
Latest version: 1.0.0

# @imkdown/lg-solution-formatter

Usage:

```js
import { formatSolutionSync, formatSolution } from "@imkdown/lg-solution-formatter";

console.log(await formatSolution("# Markdown文本"));
// or
console.log(formatSolutionSync("# Markdown文本"));
```
npm package: @imkdown/remark-lfm-fmt
Description: A remark plugin for Markdown that formats Markdown to meet "Solution Standard of Luogu Main Problem Set" (洛谷主题库题解规范)
Author: Imken Luo
Latest version: 1.0.0

# @imkdown/remark-lfm-fmt

`remark - luogu - flavor - markdown - format`

你可以通过这个 remark 插件来对 markdown AST 进行格式化，以满足[「洛谷主题库题解规范」](https://help.luogu.com.cn/rules/academic/solution-standard)。

You can use this remark plugin to format markdown AST to meet ["Solution Standard of Luogu Main Problem Set" (洛谷主题库题解规范)](https://help.luogu.com.cn/rules/academic/solution-standard).

建议同时启用 remark-math 插件。

It is recommended to enable the remark-math plugin.

例子 / Sample：

```js
const buf = fs.readFileSync("example.md");

const res = await remark()
  .use(remarkMath, { singleDollarTextMath: true })
  .use(remarkGfm)
  .use(remarkLfmFmt)
  .use(remarkStringify, { bullet: "-", rule: "-" })
  .process(buf);

console.log(String(res));
```