open-index/open-npm huggingface dataset:
npm package: @naoty/kifu-player
Description: 将棋の棋譜を再生できるReactコンポーネントです。
Author: Naoto Kaneko
Latest version: 0.1.5

# kifu-player
将棋の棋譜を再生できるReactコンポーネントです。

## インストール

```shell
npm install @naoty/kifu-player
```

## 使い方

```jsx
<KifuPlayer sfen='<SFEN文字列>' />
```
npm package: @naourass/gulp-html-engine
Description: Extend, include and replace html files
Latest version: 1.0.4

# gulp-html-engine [![NPM version][npm-image]][npm-url]

## Make it easy to extend, include and replace your html files

layout.html

```html
<body>
  @placeholder content
  @placeholder footer
</body>
```

content.html

```html
@extends layout.html

@block content
<main>my content</main>
@close

@block footer
<footer>my footer</footer>
@close
```

output

```html
<body>
  <!-- start content -->
  <main>my content</main>
  <!-- end content -->

  <!-- start footer -->
  <footer>my footer</footer>
  <!-- end footer -->
</body>
```

## Features

- Nested extending
- Nested including

## Install

```sh
$ npm install --save-dev gulp-html-engine
```

## Syntax

**@extends [=] path [jsonString]**

e.g. `@master master.html {"foo":"bar"}`

**@placeholder [=] blockName**

e.g. `@placeholder footer`

**@include [=] path [jsonString]**

e.g. `@include /footer.html {"foo":"bar"}`

**{ variableName }**

e.g. `{ foo }`

**@block [=] blockName**

e.g. `@block footer`

**@close**

You must add `@close` at the end of every block

## Usage

```js
var gulp = require('gulp')
var extender = require('gulp-html-engine')

gulp.task('extend', function () {
    gulp.src('./*.html')
        .pipe(extender({annotations:true,verbose:false})) // default options
        .pipe(gulp.dest('./output'))

})

gulp.task('watch', function () {
    gulp.watch(['./*.html'], ['extend'])
})

...
```

## Options

**annotations** [bool]

Make it `false` if you dont want too see `<!-- start foo.html -->` in output files.

**verbose** [bool]

Show extra info in the console.

**root** [string (dir path)]

To make absolute path which starts with `/` works.

## Changelog

- 1.0.0 Initial release

[npm-url]: https://npmjs.org/package/gulp-html-engine
[npm-image]: https://badge.fury.io/js/%40naourass%2Fgulp-html-engine.svg
npm package: @naoyashiga/thinking-loader
Description: Thinking Emoji Loader for React
Author: naoyashiga
Latest version: 0.0.2

# ThinkingLoader
ThinkingLoader is a React component that displays a 🤔 emoji with optional animations. It is designed to indicate a thinking or loading state in user interfaces.

# Usage
Install ThinkingLoader using npm or yarn:

```
npm install @naoyashiga/thinking
```

Use ThinkingLoader in your React application:

```jsx
import React from 'react';
import { ThinkingLoader } from '@naoyashiga/thinking';

const App = () => (
  <div>
    <h1>Thinking...</h1>
    <ThinkingLoader size="medium" />
  </div>
);

export default App;
```
# Props

size: Specifies the size of the loader. Options include "small", "medium", and "large".

direction: Specifies the rotation direction of the animation. Default is clockwise.

# License
This project is licensed under the MIT License - see the LICENSE file for details.
npm package: @nap-sft/tablsx
Description: A Node.js library for reading and writing Excel .xlsx files
Latest version: 0.1.3

# tablsx

`tablsx` is a lightweight ESM Node.js library for reading and writing Excel `.xlsx` files as predictable JavaScript data.

It is designed for data interchange, imports and exports, and programmatic workbook generation rather than full spreadsheet editing.

## Installation

```bash
npm install @nap-sft/tablsx
```

## Quick start

```js
import {
  createCell,
  createWorkbook,
  createWorksheet,
  readXlsx,
  writeXlsx,
} from "@nap-sft/tablsx";

const workbook = createWorkbook([
  createWorksheet("People", [
    [createCell("name"), createCell("age")],
    [createCell("Ada"), createCell(36)],
    [createCell("Linus"), createCell(54)],
  ]),
]);

const bytes = writeXlsx(workbook);
const parsed = readXlsx(bytes);

console.log(parsed.sheets[0].rows[1][0].value);
// "Ada"
```

## Core capabilities

- Read `.xlsx` workbooks into a normalized JavaScript model
- Write `.xlsx` workbooks from normalized workbook objects
- Convert row objects to worksheets with `sheetFromRows`
- Convert worksheets back to row objects with `rowsFromSheet`
- Build workbooks fluently with `WorkbookBuilder` and `SheetBuilder`
- Work with strings, numbers, booleans, dates, formulas, empty cells, and numeric vectors

## Documentation

Full documentation is available at **[silverstone-i.github.io/tablsx](https://silverstone-i.github.io/tablsx/)**.

- [Getting started](https://silverstone-i.github.io/tablsx/guide/getting-started)
- [Choosing an API](https://silverstone-i.github.io/tablsx/guide/choosing-an-api)
- [Reading workbooks](https://silverstone-i.github.io/tablsx/guide/reading-workbooks)
- [Writing workbooks](https://silverstone-i.github.io/tablsx/guide/writing-workbooks)
- [Tabular workflows](https://silverstone-i.github.io/tablsx/guide/tabular-workflows)
- [Builder API](https://silverstone-i.github.io/tablsx/guide/builder-api)
- [Reader API](https://silverstone-i.github.io/tablsx/guide/reader-api)
- [API reference](https://silverstone-i.github.io/tablsx/reference/)

## Development

```bash
npm test
npm run lint
npm run docs:dev
```
npm package: @nap-sft/xlsxjs
Description: Excel Workbook Manager - Read and Write xlsx and csv Files.
Author: Ian Silverstone
Latest version: 1.0.2

# xlsxjs

This is a one-off, standalone fork of ExcelJS (MIT-licensed) maintained at `silverstone-i/xlsxjs` for project-specific needs.

## Status
- Not intended as a drop-in replacement for upstream.
- No guarantee of compatibility with ExcelJS releases.

## Install
This repository is not published to npm under `exceljs`.
If you want to consume it, use a Git dependency:

```sh
npm install git+ssh://git@github.com/silverstone-i/xlsxjs.git
```
## License
MIT (see LICENSE)
npm package: @nap-software-bs/expect
Description: ## What is this?
Author: NAP-Software
Latest version: 0.0.2

# @nap-software-bs/expect

## What is this?

This is a small library to assert certain conditions, see _Functions_ for more.

It's mainly to be used in a unit test suite.

## Functions

- [`toBe(value)`](./documentation/function/toBe.md)

- [`toBeInstanceOf(what)`](./documentation/function/toBeInstanceOf.md)

- [`toBeOfPrimitiveType(type)`](./documentation/function/toBeOfPrimitiveType.md)

- [`toEqual(value)`](./documentation/function/toEqual.md)

- [`toHaveProperty(name)`](./documentation/function/toHaveProperty.md)

- [`toHaveSubString(substr)`](./documentation/function/toHaveSubString.md)

- [`toThrowError(error)`](./documentation/function/toThrowError.md)
npm package: @naparajith/tailwind-helpers
Description: A small and efficient collection of helper functions and classes that make it easier to work with TailwindCSS, without having to install multiple external dependencies.
Author: Naparajith
Latest version: 0.2.3

# Tailwind Helpers

A small and efficient collection of helper functions and classes that make it easier to work with TailwindCSS, without having to install multiple external dependencies.

It consists of 3 core utilities:

1. `concat`: Seamlessly construct className strings conditionally
2. `merge`: Efficiently merge Tailwind CSS classes in JS without style conflicts
3. `variants`: Generate type-safe component variants using Tailwind CSS

## Getting Started

### Installation

`npm`

```sh
npm i @naparajith/tailwind-helpers
```

`pnpm`

```sh
pnpm i @naparajith/tailwind-helpers
```

`yarn`

```sh
yarn add @naparajith/tailwind-helpers
```

`bun`

```sh
bun add @naparajith/tailwind-helpers
```

### Editor Config

To enable the Tailwind CSS LSP for autocompletions, a few additional steps have
to be taken. The following setup is for NeoVim users. Feel free to raise an
Issue or a PR for an equivalent VSCode configuration.

1. Run the following command to install the Tailwind CSS LSP

```sh
   npm install -g @tailwindcss/language-server
```

2. Add the following configuration to your NeoVim LSP Config

```lua
require("lspconfig").tailwindcss.setup({
    settings = {
        tailwindCSS = {
            experimental = {
                classRegex = {
                    { "variants\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]" },
                    { "concat\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)" }
                }
            }
        }
    }
})
```

### Handling Style Conflicts

The main disadvantage with Tailwind CSS is that the core principle of CSS,
cascading styles is not available. This gives rise to style conflicts. To help
alleviate this burden, `@naparajith/tailwind-helpers` exports a helper function
`cn`, which effortlessly helps you handle style conflicts that might arise.

Alongside the `cn` helper function, `@naparajith/tailwind-helpers` also exports
the primitives that compose this function, namely the `concat` and `merge`
functions. You can use these primitives as you see fit, even while not working
with Tailwind CSS.

## Future Roadmap

1. Generate comprehensive documentation for users to access
2. Remove all dependencies (currently `tailwind-merge` is the only dependency)
3. Write unit tests to increase code reliability
4. Enable the ability to develop plugins to extend functionality
5. Reduce bundle size (current gzipped + minified bundle is at ~7.6KB)
6. Document code with JSDoc for hover documentation in editors

## License

[MIT License](./LICENSE) © [Naparajith](https://www.linkedin.com/in/naparajith)
npm package: @napgram/core
Description: TypeScript type definitions for NapGram native plugins
Author: NapLink
Latest version: 0.1.3

# @napgram/core

TypeScript type definitions for NapGram native plugins.

## Installation

```bash
pnpm add @napgram/core
```

## Usage

```typescript
import type {
  NapGramPlugin,
  PluginContext,
  MessageEvent,
  MessageAPI,
  // ... more types
} from '@napgram/core';

const plugin: NapGramPlugin = {
  id: 'my-plugin',
  name: 'My Plugin',
  version: '1.0.0',
  
  async install(ctx: PluginContext) {
    ctx.on('message', async (event: MessageEvent) => {
      await event.reply('Hello!');
    });
  }
};

export default plugin;
```

## Exported Types

### Plugin

- `NapGramPlugin` - Plugin definition
- `PluginSpec` - Plugin specification
- `PluginPermissions` - Permission system

### Context

- `PluginContext` - Plugin runtime context

### Events

- `MessageEvent` - Message events
- `FriendRequestEvent` - Friend request events
- `GroupRequestEvent` - Group request events
- More event types...

### APIs

- `MessageAPI` - Send/recall messages
- `InstanceAPI` - Instance management
- `UserAPI` - User information
- `GroupAPI` - Group operations
- `PluginStorage` - Data persistence
- `PluginLogger` - Logging

### Message Segments

- `MessageSegment` - Base segment type
- `TextSegment`, `AtSegment`, `ReplySegment`
- `ImageSegment`, `VideoSegment`, `AudioSegment`
- More segment types...

## License

MIT
npm package: @napgram/sdk
Description: SDK for building NapGram native plugins
Author: NapLink
Latest version: 0.1.3

# @napgram/sdk

SDK for building NapGram native plugins.

## Installation

```bash
pnpm add @napgram/sdk
```

## Usage

```ts
import { definePlugin, makeText, createCommand, withCooldown } from '@napgram/sdk';
import type { MessageEvent } from '@napgram/sdk';

export default definePlugin({
  id: 'demo',
  name: 'Demo Plugin',
  version: '0.1.0',
  async install(ctx) {
    ctx.command(createCommand({
      name: 'ping',
      handler: withCooldown(async (event: MessageEvent) => {
        await event.reply([makeText('pong')]);
      }, { durationMs: 3000 }),
    }, { platform: 'tg' }));
  }
});
```

## Exports

- All types from `@napgram/core`
- All helpers from `@napgram/utils`
- `definePlugin` / `defineCommand` / `definePermissions`
- Guard + helper utilities from SDK

## One Package for Platform Capabilities

Install only this SDK and you can access:

- Plugin runtime types (context, events, APIs, permissions)
- Message segment builders and helpers
- QQ interaction helpers

## Advanced Helpers

### Command Guards

```ts
import { createCommand, withCommandGuards } from '@napgram/sdk';

ctx.command(createCommand({
  name: 'admin_only',
  handler: async (event) => {
    await event.reply('ok');
  }
}, { requireAdmin: true }));
```

### Reply / Reference Helpers

```ts
import { getReplyMessage, getChannelRef, getMessageRef } from '@napgram/sdk';

const reply = getReplyMessage(event);
const channelRef = getChannelRef(event);
const messageRef = getMessageRef(event);
```

### Config Defaults

```ts
import { resolveConfig } from '@napgram/sdk';

const config = resolveConfig(ctx.config, { enabled: true, timeoutMs: 5000 });
```

### Cooldown + Error Boundary

```ts
import { withCooldown, withErrorBoundary } from '@napgram/sdk';

const handler = withErrorBoundary(
  withCooldown(async (event) => {
    await event.reply('pong');
  }, { durationMs: 3000 }),
  { errorMessage: 'Command failed' }
);
```

### Args Parsing

```ts
import { parseArgs } from '@napgram/sdk';

const { args, flags } = parseArgs(['--limit=10', 'foo', '-v']);
```

### Logger Helpers

```ts
import { createPluginLogger } from '@napgram/sdk';

const logger = createPluginLogger(ctx, 'my-plugin');
logger.info('started');
```

## License

MIT
npm package: @napgram/utils
Description: Utility functions for NapGram native plugins
Author: NapLink
Latest version: 0.1.3

# @napgram/utils

Utility functions for NapGram native plugins.

## Installation

```bash
pnpm add @napgram/utils
```

## Usage

```typescript
import {
  extractPlainText,
  makeText,
  makeAt,
  makeReply,
  makeImage,
  parseUserId,
  sleep,
  randomChoice
} from '@napgram/utils';

// Extract plain text from message segments
const text = extractPlainText(event.message.segments);

// Create message segments
const segments = [
  makeReply(event.message.id),
  makeAt(event.sender.userId),
  makeText(' Hello!'),
  makeImage('https://example.com/image.png')
];

await event.send(segments);

// Parse IDs
const { platform, id } = parseUserId('qq:u:123456');

// Utilities
await sleep(1000);
const choice = randomChoice(['a', 'b', 'c']);
```

## Subpath Exports

```typescript
import { sendPoke } from '@napgram/utils/qq-helpers';
```

## API Reference

### Message Segments

- `makeText(text)` - Create text segment
- `makeAt(userId, userName?)` - Create @mention segment
- `makeReply(messageId)` - Create reply segment
- `makeImage(url, file?)` - Create image segment
- `makeVideo(url, file?)` - Create video segment
- `makeAudio(url, file?)` - Create audio segment
- `makeFile(url, name?)` - Create file segment
- `makeFace(id)` - Create emoji segment

### Parsers

- `extractPlainText(segments)` - Extract plain text
- `parseUserId(userId)` - Parse user ID (qq:u:xxx / tg:u:xxx)
- `parseGroupId(groupId)` - Parse group ID

### Utilities

- `sleep(ms)` - Delay function
- `randomInt(min, max)` - Random integer
- `randomChoice(array)` - Random array element

## License

MIT
npm package: @napi-audio/decoder-freebsd-x64
Description: This is the **x86_64-unknown-freebsd** binary for `@napi-audio/decoder`
Latest version: 0.1.0

# `@napi-audio/decoder-freebsd-x64`

This is the **x86_64-unknown-freebsd** binary for `@napi-audio/decoder`
npm package: @napi-audio/decoder-linux-arm-gnueabihf
Description: This is the **armv7-unknown-linux-gnueabihf** binary for `@napi-audio/decoder`
Latest version: 0.1.0

# `@napi-audio/decoder-linux-arm-gnueabihf`

This is the **armv7-unknown-linux-gnueabihf** binary for `@napi-audio/decoder`
npm package: @napi-audio/decoder-linux-arm64-musl
Description: This is the **aarch64-unknown-linux-musl** binary for `@napi-audio/decoder`
Latest version: 0.1.0

# `@napi-audio/decoder-linux-arm64-musl`

This is the **aarch64-unknown-linux-musl** binary for `@napi-audio/decoder`
npm package: @napi-audio/decoder-linux-x64-gnu
Description: This is the **x86_64-unknown-linux-gnu** binary for `@napi-audio/decoder`
Latest version: 0.1.0

# `@napi-audio/decoder-linux-x64-gnu`

This is the **x86_64-unknown-linux-gnu** binary for `@napi-audio/decoder`
npm package: @napi-audio/decoder-linux-x64-musl
Description: This is the **x86_64-unknown-linux-musl** binary for `@napi-audio/decoder`
Latest version: 0.1.0

# `@napi-audio/decoder-linux-x64-musl`

This is the **x86_64-unknown-linux-musl** binary for `@napi-audio/decoder`
npm package: @napi-audio/decoder-win32-arm64-msvc
Description: This is the **aarch64-pc-windows-msvc** binary for `@napi-audio/decoder`
Latest version: 0.1.0

# `@napi-audio/decoder-win32-arm64-msvc`

This is the **aarch64-pc-windows-msvc** binary for `@napi-audio/decoder`
npm package: @napi-audio/decoder-win32-ia32-msvc
Description: This is the **i686-pc-windows-msvc** binary for `@napi-audio/decoder`
Latest version: 0.1.0

# `@napi-audio/decoder-win32-ia32-msvc`

This is the **i686-pc-windows-msvc** binary for `@napi-audio/decoder`
npm package: @napi-audio/decoder-win32-x64-msvc
Description: This is the **x86_64-pc-windows-msvc** binary for `@napi-audio/decoder`
Latest version: 0.1.0

# `@napi-audio/decoder-win32-x64-msvc`

This is the **x86_64-pc-windows-msvc** binary for `@napi-audio/decoder`