open-index/open-npm huggingface dataset:
npm package: @henson/common
Description: Henson common utilities
Latest version: 13.0.10

# henson-common

#### Description
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}

#### Software Architecture
Software architecture description

#### Installation

1. xxxx
2. xxxx
3. xxxx

#### Instructions

1. xxxx
2. xxxx
3. xxxx

#### Contribution

1. Fork the repository
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request


#### Gitee Feature

1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
4. The most valuable open source project [GVP](https://gitee.com/gvp)
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
6. The most popular members  [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
npm package: @henson/mrm-preset
Description: Henson node.js project preset
Latest version: 2.0.15

# henson-mrm-preset

#### Description
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}

#### Software Architecture
Software architecture description

#### Installation

1. xxxx
2. xxxx
3. xxxx

#### Instructions

1. xxxx
2. xxxx
3. xxxx

#### Contribution

1. Fork the repository
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request


#### Gitee Feature

1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
4. The most valuable open source project [GVP](https://gitee.com/gvp)
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
6. The most popular members  [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
npm package: @henta/bot
Description: Platform manager
Author: TheEVolk
Latest version: 0.2.0

# @henta/bot
A convenient and flexible class for creating bots on henta
> 📌 Is part of [HENTA Framework](https://github.com/u14-team/henta)

## Usage
```ts
const bot = new HentaBot(process.env.MODE as BotMode);

// you can add any platforms that are convenient for you
const telegramPlatform = new TelegramPlatform({ token: process.env.TG_TOKEN });
bot.platforms.add(telegramPlatform);

const longpollTelegramListener = new LongpollTelegramListener(telegramPlatform);
bot.listeners.add(longpollTelegramListener);

/*
these middlewares will be processed when your bot receives a message. With their help, you can, for example, request a user from a database, catch and process errors, or check whether you need to respond to this message.

Order matters.
*/
bot.setMiddleware([
  async (ctx, next) => {
    if (ctx.text === 'hello') {
      await ctx.answer({ text: 'hello world' });
    }

    return next();
  },
  async (ctx, next) => {
    if (ctx.isAnswered) {
      return next();
    }

    await ctx.answer({ text: 'maybe "hello"?' });
    return next();
  }
]);

/*
Here you can catch errors when sending a message or additionally process it for some effects or notes about changes (balance changes, new items in the inventory, etc.).
*/
bot.setAnswerMiddleware([]);
await bot.start();


```
npm package: @henta/botcmd
Description: Command parser
Author: TheEVolk
Latest version: 0.2.2

# @henta/botcmd
Powerful command parser middleware for your bots.
> 📌 Is part of [HENTA Framework](https://github.com/u14-team/henta)

## Usage
1. Create `CommandView` instances and describe their options using decorators.
2. Create a `BotcmdContainer` and add the created commands there.
3. Add `processBotcmd` as middleware for your bot.

> 💡
> 1. **CommandView** - is a class that contains information about commands and subcommands. It can be perceived as a *Controller* from NestJS.
> 2. **BootcmdContainer** - is a container that stores a list of commands. Usually it can be used to separate commands and connect them only under certain conditions (for example, some scenemanager), but in most cases only 1 instance can be used.

```ts
// test.view.ts
import Context from '@app/interfaces/context'; // your context interface extends BotcmdContext

@BotcmdView('test')
export default class TestView extends CommandView {
  @BotcmdCommand()
  public async handler(ctx: Context) {
    await ctx.answer({
      text: 'I\'m fine'
    });
  }
}

// index.ts
const mainCommands: CommandView[] = [
  new TestView()
];

const botcmdContainer = new BotcmdContainer();
botcmdContainer.applyViews(mainCommands);

const hentaBot = initHentaBot(); // your initialization logic
hentaBot.setMiddleware([
  // ...some middlewares before command
  (ctx, next) =>
    processBotcmd(ctx, next, {
      containers: [botcmdContainer],
    }),
  // ...some middlewares after command
]);

await hentaBot.run();
```

You can use a [@henta/input](https://github.com/u14-team/henta/packages/input) to parse input arguments, attachments and custom requests.

```ts
// get-link.view.ts
import Context from '@app/interfaces/context'; // your context interface extends BotcmdContext

@BotcmdView('getlink')
export default class GetLinkView extends CommandView {
  @BotcmdCommand()
  public async handler(
    ctx: Context,
    @AttachmentRequest('photo', (item) => item.getUrl())
    url: string
  ) {
    await ctx.answer({
      text: `Link: ${url}`
    });
  }
}

// index.ts
const botcmdMiddleware = compose([
  (ctx: Context, next) => requestInputArgsMiddleware(ctx, next),
]);

hentaBot.setMiddleware([
  // ...some middlewares before command
  (ctx, next) =>
    processBotcmd(ctx, next, {
      containers: [botcmdContainer],
      middlewares: botcmdMiddleware
    }),
  // ...some middlewares after command
]);
```

## Command metadata
You can define your own command metadata using decorator `@SetMetadata(key, value)`.

Sample:
```ts
import { BotcmdCommand, BotcmdView, CommandView } from '@henta/botcmd';

@SetMetadata('botcmd:custom:hello', 'world')
@BotcmdView('тест', 'test', 'tost')
export default class TestView extends CommandView {
  @BotcmdCommand()
  public async handler(ctx) {
    const metadataValue = getCommandMetadata('botcmd:custom:hello', ctx.botcmdData.command);
    await ctx.answer({
      text: `Hello ${metadataValue}`,
    });
  }
}
```
npm package: @henta/input
Description: Multifunctional input data parser. > 📌 Is part of [HENTA Framework](https://github.com/u14-team/henta)
Author: TheEVolk
Latest version: 0.2.0

# @henta/input
Multifunctional input data parser.
> 📌 Is part of [HENTA Framework](https://github.com/u14-team/henta)

## Attachments
Base:
```js
import { AttachmentRequest } from '@henta/input';
import type { Attachment, PlatformContext } from '@henta/core';

async function handler(
    ctx: PlatformContext,
    @ArgumentRequest({ type: 'photo' }) photo: Attachment
) {
    console.log(photo);
    await ctx.answer({ text: 'hello world' });
}

const requests = getAttachmentRequests(command.handler)
    ?.map(v => v.request);
    
console.log(requests);

function myHentaMiddleware(ctx: PlatformContext, next) {
    const args = await requireInputArgs(handler, ctx);
    await command.handler(ctx, ...args);
    return next();
}

// hentaBot: HentaBot
hentaBot.use(myHentaMiddleware);
```

BotCmd command
```js
import { CommandView, BotcmdView, BotcmdCommand } from '@henta/botcmd';
import type { Attachment, PlatformContext } from '@henta/core';
import { AttachmentRequest } from '@henta/input';

@BotcmdView({ name: 'mycommand' })
export default class MyCommandView extends CommandView {
  @BotcmdCommand()
  async handler(
    ctx: Context,
    // You can use converter
    // And also pass only the type to the first argument
    @AttachmentRequest('photo', (item) => item.getUrl()) url: string,
    @AttachmentRequest(AttachmentType.Photo) attachment: Attachment
  ) {
    await ctx.answer({
      text: 'Oh, yes..',
      files: [
        Upload.fromUrl('photo', url),
        Upload.fromUrl('photo', await attachment.getUrl()),
      ],
    });
  }
}
```
npm package: @henta/mentions
Description: bot reaction middleware
Author: TheEVolk
Latest version: 0.1.2

# @henta/mentions
bot's reaction to requests
> 📌 Is part of [HENTA Framework](https://github.com/u14-team/henta)

```ts
const botMentionsMiddleware = (ctx, next) => mentionsMiddleware(ctx, next, {
  mention: /\/|mybot|botik/,
  // optional
  noMentionCallback: (ctx, next, reason) => {
    console.log('no mention callback', reason);
  }
})
```
npm package: @hentamine/imp
Description: CLI tool for manipulating images for web
Author: hentamine
Latest version: 0.1.0

# Imp
Imp is a cli tool to manipulate images for web consumption.

## Getting Started

```
npm i @hentamine/imp
```

## Using Imp

To use Imp, navigate to the directory that contains images you want to manipulate.

```
cd ./<imageDir>
```

Imp will manipulate all images (jpg/png) within the current working directory.

It takes three parameters:
- --width &lt;n&gt;
- --height &lt;n&gt;
- --quality &lt;1-100&gt;

```
imp --width 256 --height 256 --quality 100
```

Imp will create a new directory of all the converted images named "&lt;width&gt;x&lt;height&gt;-&lt;quality&gt;".
All converted files will have the same name and format inside the new directory.
npm package: @hentamine/lunar
Description: Hentamine CSS Framework
Author: hentamine
Latest version: 0.1.0

# Lunar
v0.1.0

A open-source, modular css framework.
https://hentamine.github.io/Lunar

Lunar is not production ready.

## License

MIT License

Copyright (c) 2018 Hentamine

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
npm package: @henteko/ccdigest
Description: Format Claude Code session data into readable Markdown for team sharing and code review
Author: henteko
Latest version: 0.1.4

# ccdigest

Format [Claude Code](https://docs.anthropic.com/en/docs/claude-code) session data into readable Markdown for team sharing and code review.

Claude Code stores session logs as JSONL files under `~/.claude/projects/`. ccdigest reads these files and converts them into clean, human-readable Markdown.

## Installation

```bash
npm install -g @henteko/ccdigest
```

Or run directly with npx:

```bash
npx @henteko/ccdigest list
```

## Use Cases

### Post Claude Code session log as a PR comment

When you make changes with Claude Code and open a pull request, you can attach the session log as a PR comment for reviewers:

```bash
ccdigest show --branch $(git branch --show-current) | gh pr comment --body-file -
```

## Usage

### List sessions

```bash
ccdigest list
ccdigest list --branch main
ccdigest list --json
```

### Show session as Markdown

```bash
ccdigest show <session-id>
ccdigest show <session-id-1> <session-id-2>  # merge multiple sessions
ccdigest show --branch feature/login          # show all sessions for a branch
ccdigest show <session-id> --no-filter        # show all information
```

By default, `show` outputs a filtered view suitable for sharing:

- **Project path** is shown as basename only (e.g. `my-project` instead of `/Users/you/dev/my-project`)
- **Thinking blocks** are hidden
- **Tool calls** are shown with relativized file paths
- **Tool results** are hidden

Use `--no-filter` to include all information (full paths, thinking blocks collapsed, tool results up to 50 lines).

### Export to file

```bash
ccdigest show <session-id> > output.md
ccdigest show <id-1> <id-2> > combined.md
ccdigest show --branch feature/login > branch.md
```

### Options

| Option | Description |
|--------|-------------|
| `--project <path>` | Project path (defaults to cwd) |
| `--branch <name>` | Show all sessions for a git branch (show) / Filter by branch (list) |
| `--no-filter` | Show all information (full paths, thinking blocks, tool results) |

## Development

```bash
npm install
npm run build
npm test
```

## Release

1. Update version in `package.json`:

```bash
npm version patch  # or minor, major
```

2. Push the tag:

```bash
git push origin main --tags
```

3. Publish to npm:

```bash
npm publish --access public
```

`prepublishOnly` hook will automatically run build and tests before publishing.

## License

[MIT](LICENSE)
npm package: @heojeongbo/expo-settings
Description: Expo Settings module for React Native applications
Author: heojeongbo
Latest version: 0.2.0

# @heojeongbo/expo-settings

Expo Settings 모듈은 React Native 애플리케이션에서 시스템 설정에 접근할 수 있게 해주는 Expo 모듈입니다.

## 설치

```bash
npm install @heojeongbo/expo-settings
```

또는

```bash
yarn add @heojeongbo/expo-settings
```

## 사용법

```typescript
import ExpoSettings from '@heojeongbo/expo-settings';

// 기본 사용법
const settings = new ExpoSettings();

// 설정 뷰 사용
import { ExpoSettingsView } from '@heojeongbo/expo-settings';

// React Native 컴포넌트에서 사용
<ExpoSettingsView />
```

## 지원 플랫폼

- iOS
- Android
- Web

## 라이선스

MIT

## 기여하기

이슈나 풀 리퀘스트를 환영합니다!

## 링크

- [GitHub Repository](https://github.com/HeoJeongBo/expo-settings)
- [Issues](https://github.com/HeoJeongBo/expo-settings/issues)