open-index/open-npm huggingface dataset:
npm package: @karinjs/geturls
Description: Get all URLs in a string
Author: Sindre Sorhus
Latest version: 1.0.2

# GetUrls

> Get all URLs in a string

The URLs will be [normalized](https://github.com/sindresorhus/normalize-url).

*Do not use this for any kind of security-related validation.*

Please note the [known limitation](https://github.com/niftylettuce/url-regex-safe#limitations). You can work around this by setting `requireSchemeOrWww` to `true`.

## Install

```sh
npm install @karinjs/geturls
```

## Usage

```js
import GetUrls from '@karinjs/geturls';

const text = 'Lorem ipsum dolor sit amet, //sindresorhus.com consectetuer adipiscing http://yeoman.io elit.';

GetUrls.getUrls(text);
//=> ['http://sindresorhus.com', 'http://yeoman.io']
```

## API

### text

Type: `string`

### options

Type: `object`

All the `normalize-url` [options](https://github.com/sindresorhus/normalize-url#options) in addition to:

#### extractFromQueryString

Type: `boolean`\
Default: `false`

Extract URLs that appear as query parameters in the found URLs.

#### exclude

Type: `string[]`\
Default: `[]`

Exclude URLs that match URLs in the given array.

#### requireSchemeOrWww

Type: `boolean`\
Default: `false`

Require URLs to have a scheme or leading `www.` to be considered an URL. When `false`, matches against a list of valid TLDs, so it will match URLs like `unicorn.education`.

Does not affect URLs in query parameters if using the `extractFromQueryString` option.

## Related

- [get-urls-cli](https://github.com/sindresorhus/get-urls-cli) - CLI for this module
- [linkify-urls](https://github.com/sindresorhus/linkify-urls) - Linkify URLs in text
npm package: @karinjs/moment
Description: Parse, validate, manipulate, and display dates
Author: Iskren Ivov Chernev
Latest version: 1.1.5

# [Moment.js](http://momentjs.com/)

[![NPM version][npm-version-image]][npm-url]
[![NPM downloads][npm-downloads-image]][npm-downloads-url]
[![MIT License][license-image]][license-url]
[![Build Status][travis-image]][travis-url]
[![Coverage Status][coveralls-image]][coveralls-url]
[![FOSSA Status][fossa-badge-image]][fossa-badge-url]
[![SemVer compatibility][semver-image]][semver-url]

A JavaScript date library for parsing, validating, manipulating, and formatting dates.

## Project Status

Moment.js is a legacy project, now in maintenance mode.  In most cases, you should choose a different library.

For more details and recommendations, please see [Project Status](https://momentjs.com/docs/#/-project-status/) in the docs.

*Thank you.*

## Resources

- [Documentation](https://momentjs.com/docs/)
- [Changelog](CHANGELOG.md)
- [Stack Overflow](https://stackoverflow.com/questions/tagged/momentjs)

## License

Moment.js is freely distributable under the terms of the [MIT license][license-url].

[![FOSSA Status][fossa-large-image]][fossa-large-url]

[license-image]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat
[license-url]: LICENSE

[npm-url]: https://npmjs.org/package/moment
[npm-version-image]: https://img.shields.io/npm/v/moment.svg?style=flat

[npm-downloads-image]: https://img.shields.io/npm/dm/moment.svg?style=flat
[npm-downloads-url]: https://npmcharts.com/compare/moment?minimal=true

[travis-url]: https://travis-ci.org/moment/moment
[travis-image]: https://img.shields.io/travis/moment/moment/develop.svg?style=flat

[coveralls-image]: https://coveralls.io/repos/moment/moment/badge.svg?branch=develop
[coveralls-url]: https://coveralls.io/r/moment/moment?branch=develop

[fossa-badge-image]: https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment.svg?type=shield
[fossa-badge-url]: https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment?ref=badge_shield

[fossa-large-image]: https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment.svg?type=large
[fossa-large-url]: https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment?ref=badge_large

[semver-image]: https://api.dependabot.com/badges/compatibility_score?dependency-name=moment&package-manager=npm_and_yarn&version-scheme=semver
[semver-url]: https://dependabot.com/compatibility-score.html?dependency-name=moment&package-manager=npm_and_yarn&version-scheme=semver
npm package: @karinjs/node-hmr
Description: Node.js ESM-HMR工具，自动注入--expose-internals参数
Author: shijin
Latest version: 1.0.1

# Node.js 纯 ESM 热模块替换 (HMR)

一个轻量级的 **纯 ESM** Node.js 热模块替换(HMR)工具，可以在不重启应用的情况下重新加载修改的 ES 模块。

[English](./README.en.md) | 中文

## 特点

- **纯 ESM 实现** - 专为 ES 模块设计
- 自动注入 `--expose-internals` 参数，无需手动添加
- 支持 TypeScript 和 JavaScript 文件
- 简单易用的 API
- 提供命令行工具

## 安装

```bash
# 使用 pnpm
pnpm add @karinjs/node-hmr

# 使用 npm
npm install @karinjs/node-hmr

# 使用 yarn
yarn add @karinjs/node-hmr
```

## 命令行使用

安装后，你可以使用 `hmr` 命令来运行你的应用，它会自动注入所需的 `--expose-internals` 参数：

```bash
# 运行 JavaScript 文件
hmr ./src/app.js

# 使用 tsx 运行 TypeScript 文件
hmr ./src/app.ts --tsx

# 传递其他参数
hmr ./src/server.js --port 3000
```

## 手动使用

如果你不想使用命令行工具，可以直接使用 Node.js 运行：

```bash
# 对于 JavaScript 文件
node --expose-internals ./your-file.js

# 对于 TypeScript 文件
node --expose-internals --import tsx ./your-file.ts
```

## API 使用

你也可以在代码中直接使用 HMR API：

```typescript
import { HMRModule } from "@karinjs/node-hmr";

// 创建 HMR 实例，监听文件变化
const hmr = new HMRModule("./src", {
  // 排除node_modules和test目录中的模块
  exclude: ['node_modules', 'test']
});

// 监听文件变更事件
hmr.on("change", async (fileUrl, isCached) => {
  console.log(`文件变更: ${fileUrl}`);
  if (isCached) {
    console.log("模块已从缓存中删除，可以重新导入");

    try {
      // 重新导入模块
      const module = await import(fileUrl);
      console.log("重新导入成功:", Object.keys(module));
    } catch (error) {
      console.error("重新导入失败:", error);
    }
  }
});

// 监听其他事件
hmr.on("add", (fileUrl) => {
  console.log(`文件添加: ${fileUrl}`);
});

hmr.on("unlink", (fileUrl) => {
  console.log(`文件删除: ${fileUrl}`);
});

// 获取所有被监控的文件
console.log(hmr.getWatched());
```

> **注意**：API 方式使用时，仍然需要使用 `--expose-internals` 参数启动 Node.js。推荐使用命令行方式运行，它会自动处理这个问题。

## API 参考

### HMRModule

`HMRModule` 类继承自 `EventEmitter`，提供以下方法和属性：

#### 构造函数

```typescript
constructor(files: string | string[], options?: ChokidarOptions & { exclude?: string[] })
```

- `files`: 要监控的文件路径，支持 glob 模式
- `options`: chokidar 监听选项，默认值为 `{ ignoreInitial: true, ignored: /(^|[/\\])\./ }`
  - `exclude`: 排除的模块路径数组，这些模块不会被包含在热更新的依赖分析中

#### 方法

- `add(filePath: string | string[]): this` - 添加监控文件
- `unwatch(filePath: string | string[]): this` - 取消监控文件
- `close(): Promise<void>` - 关闭监控
- `getWatched(): Record<string, string[]>` - 获取所有被监控的文件

#### 属性

- `closed: boolean` - 监控是否已关闭

#### 事件

- `'change'` - 文件内容变更时触发，参数：`(fileUrl: string, isCached: boolean)`
- `'add'` - 添加新文件时触发，参数：`(fileUrl: string, isCached: boolean)`
- `'unlink'` - 删除文件时触发，参数：`(fileUrl: string, isCached: boolean)`
- 其他 chokidar 事件

## 实现原理

本工具专为 **ES 模块 (ESM)** 设计，通过 `--expose-internals` 标志访问 Node.js 的内部 ESM 模块缓存。当文件变更时，它会从缓存中清除相应的模块，允许重新导入更新后的代码。

工作流程如下：

1. 工具使用 chokidar 库监控文件变化
2. 当文件变更时，它将文件路径转换为文件 URL 格式（ESM 使用的格式）
3. 检查模块是否存在于 ESM 模块缓存中
4. 如果找到，则从缓存中删除模块
5. 应用程序可以重新导入模块以获取更新后的代码

### 仅支持 ESM

本工具专为 ES 模块设计，不适用于 CommonJS 模块。你的项目应该在 package.json 中使用 `"type": "module"` 或使用 `.mjs` 文件扩展名。

## 致谢

实现思路来自于 Sylphy (QQ: 1393\*\*\*348)，感谢其提供的宝贵思路和技术支持。

## 警告

⚠️ **本工具使用 Node.js 内部 API，请勿在生产环境使用！**

⚠️ **内部 API 可能随 Node.js 版本变化而变化，可能导致兼容性问题！**

## 要求

- Node.js 18+
- ES 模块（不兼容 CommonJS）

## 许可

MIT
npm package: @karinjs/node-pty
Description: Fork pseudoterminals in Node.JS
Author: Microsoft Corporation
Latest version: 1.1.3

# @karinjs/node-pty

一个轻量级的 node-pty 预编译包,基于 [@homebridge/node-pty-prebuilt-multiarch](https://github.com/homebridge/node-pty-prebuilt-multiarch) 优化。

[English](./README.en.md) | 简体中文

## 特点

- 🚀 极致轻量: 移除源代码,仅保留必要的预编译二进制文件
- 🇨🇳 国内加速: 默认使用 npmmirror.com 镜像,无需额外配置
- 💪 多架构支持: 支持主流操作系统和 CPU 架构
- 🔧 开箱即用: 无需编译,支持多种包管理器

> [!WARNING]
> 目前仅在 Windows Node.js 环境下完成测试。其他环境（Linux、macOS 等）的兼容性需要用户自行验证。如遇到问题，欢迎反馈。

## 安装

使用 npm:

```bash
npm install @karinjs/node-pty
```

使用 yarn:

```bash
yarn add @karinjs/node-pty
```

使用 pnpm:

```bash
pnpm add @karinjs/node-pty
```

使用别名安装:

```bash
npm install node-pty:@karinjs/node-pty
# or
npm install @homebridge/node-pty-prebuilt-multiarch:@karinjs/node-pty
```

## 支持的环境

| 操作系统      | 架构                      |
| ------------- | ------------------------- |
| macOS         | x64, arm64                |
| Linux (glibc) | ia32, x64, armv6, aarch64 |
| Linux (musl)  | x64, armv6, aarch64       |
| Windows       | ia32, x64                 |

> 注意: 仅支持 Node.js 16+ 和 Electron 16.0.0+ 版本(不含 Electron 28)

## 注意事项

由于采用预编译的方式分发,包的安装依赖于网络环境的稳定性。如果遇到下载问题,可以:

1. 使用代理
2. 切换到其他包管理器
3. 多次重试安装

## 版本对照

| @karinjs/node-pty | @homebridge/node-pty-prebuilt-multiarch |
| ----------------- | --------------------------------------- |
| 1.0.2             | 0.11.14                                 |

## 上游项目

本项目基于以下优秀的开源项目:

- [microsoft/node-pty](https://github.com/microsoft/node-pty) - 原始的 node-pty 项目
- [homebridge/node-pty-prebuilt-multiarch](https://github.com/homebridge/node-pty-prebuilt-multiarch) - 提供多架构预编译支持

## 开源许可

本项目基于 MIT 协议开源。感谢以下项目的贡献:

- Copyright (c) 2012-2015, Christopher Jeffrey (MIT License)
- Copyright (c) 2016, Daniel Imms (MIT License)
- Copyright (c) 2018, Microsoft Corporation (MIT License)
- Copyright (c) 2018, David Wilson (MIT License)
- Copyright (c) 2018, oznu (MIT License)
- Copyright (c) 2023, Homebridge (MIT License)

## 使用示例

```typescript
import * as os from "node:os";
import * as pty from "@karinjs/node-pty";

async function run() {
  const shell = os.platform() === "win32" ? "powershell.exe" : "bash";
  const ptyProcess = pty.spawn(shell, [], {
    name: "xterm-color",
    cols: 80,
    rows: 30,
    cwd: process.env.HOME,
    env: process.env,
  });

  ptyProcess.onData((data) => {
    process.stdout.write(data);
  });

  ptyProcess.write("ls\r");
  ptyProcess.resize(100, 40);
  ptyProcess.write("ls\r");
}

run();
```
npm package: @karinjs/plugin-adapter-milky
Description: 基于Karin的milky协议适配器
Author: KarinJS
Latest version: 1.2.4

# Karin Milky 适配器

基于 [Milky 协议](https://milky.ntqqrev.org/) 的 Karin 适配器插件实现。

## 安装

可通过Karin WebUI安装该插件或者在 Karin 项目根目录下执行：

```bash
pnpm add @karinjs/plugin-adapter-milky -w
```

## 使用说明

### 第一次使用

1. **启动 Karin**
   首次启动时，插件会自动创建配置文件：
   - 配置目录：`@karinjs/@karinjs/plugin-adapter-milky/config/`
   - 配置文件：`config.json`

2. **修改配置**
   可前往Karin 的Webui 查看配置
   或者手动编辑配置文件，且修改配置后无需重启

```json
{
  "webhookToken": "Fvuo0TRH",
  "bots": [
    {
      "protocol": "websocket",
      "url": "https://example.com",
      "token": "abcd"
    }
  ]
}
```

## 配置项说明

`webhookToken`
WebHook的鉴权密钥，设置后会验证Milky协议请求时的请求头的Authorization字段

`protocol`
连接协议，支持 `websocket`,`sse`和`webhook` ,`websocket`和`sse`

`url`
接口请求地址,必须以 `http://` 或 `https://` 开头的链接，例如 `http://127.0.0.1:8080`

`token`
url 的鉴权密钥，请求接口或主动连接到 Milky 协议时使用

## 本地开发

```bash
# 克隆仓库
git clone https://github.com/KarinJS/karin-plugin-adapter-milky.git
cd karin-plugin-adapter-milky

# 安装依赖
pnpm install

# 开发模式
pnpm dev

# 构建
pnpm build

```

---

## 参考资料

- [Milky 协议文档](https://milky.ntqqrev.org/)
- [Milky GitHub](https://github.com/SaltifyDev/milky)
- [Karin 文档](https://karinjs.com)
- [Karin](https://github.com/KarinJS/Karin)

---

## 贡献

欢迎提交 Issue 和 Pull Request！

## 许可证

MIT License