open-index/open-npm huggingface dataset:
npm package: @gunshi/bone
Description: gunshi minimum
Author: kazuya kawaguchi
Latest version: 0.29.4

# `@gunshi/bone`

[![Version][npm-version-src]][npm-version-href]
[![InstallSize][install-size-src]][install-size-src]
[![JSR][jsr-src]][jsr-href]

> gunshi minimum

This package exports the bellow APIs and types.

- `cli`: The main CLI function to run the command, **not included `@gunshi/plugin-global` and `@gunshi/plugin-renderer` built-in plugins**.
- some basic type definitions only.

<!-- eslint-disable markdown/no-missing-label-refs -->

> [!TIP]
> **The APIs and type definitions available in this package are the same as those in the `gunshi/bone` entry in the `gunshi` package.**
> This package is smaller in file size than the `gunshi` package, making it suitable for use when you want to reduce the size of the `node_modules` in your cli application you are creating.

> [!IMPORTANT]
> You cannot use the `cli` function in this entry to display the usage of the command with `--help` option.
> This entry point is provided to allow users to customize it completely, such as command usage rendering and plugin composition.

<!-- eslint-enable markdown/no-missing-label-refs -->

## 💿 Installation

```sh
# npm
npm install --save @gunshi/bone

## pnpm
pnpm add @gunshi/bone

## yarn
yarn add @gunshi/bone

## deno
deno add jsr:@gunshi/bone

## bun
bun add @gunshi/bone
```

## 🚀 Usage

```js
import { cli } from 'gunshi/bone'
import global from '@gunshi/plugin-global'
import renderer from '@gunshi/plugin-renderer'
import i18n from '@gunshi/plugin-i18n'

const entry = ctx => {
  // entry logic ...
}

await cli(process.argv.slice(2), entry, {
  // ...
  plugins: [
    global(),
    renderer(),
    i18n({
      // plugin options ...
    })
  ]
})
```

## ©️ License

[MIT](http://opensource.org/licenses/MIT)

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/@gunshi/bone?style=flat
[npm-version-href]: https://npmjs.com/package/@gunshi/bone@alpha
[jsr-src]: https://jsr.io/badges/@gunshi/bone
[jsr-href]: https://jsr.io/@gunshi/bone
[install-size-src]: https://pkg-size.dev/badge/install/57026
npm package: @gunshi/definition
Description: utilities for gunshi command definition
Author: kazuya kawaguchi
Latest version: 0.29.4

# `@gunshi/definition`

[![Version][npm-version-src]][npm-version-href]
[![InstallSize][install-size-src]][install-size-src]
[![JSR][jsr-src]][jsr-href]

> utilities for gunshi command definition

This package exports the bellow APIs and types.

- `define`: A function to define a command.
- `lazy`: A function to lazily load a command.
- Some basic type definitions, such as `Command`, `LazyCommand`, etc.

<!-- eslint-disable markdown/no-missing-label-refs -->

> [!TIP]
> **The APIs and type definitions available in this package are the same as those in the `gunshi/definition` entry in the `gunshi` package.**
> This package is smaller in file size than the `gunshi` package, making it suitable for use when you want to reduce the size of the `node_modules` in your command you are creating.

<!-- eslint-enable markdown/no-missing-label-refs -->

## 💿 Installation

```sh
# npm
npm install --save @gunshi/definition

## pnpm
pnpm add @gunshi/definition

## yarn
yarn add @gunshi/definition

## deno
deno add jsr:@gunshi/definition

## bun
bun add @gunshi/definition
```

## 🚀 Usage

You can define the gunshi command as JavaScript module with using `define`, `defineWithTypes`, `lazy` and `lazyWithTypes`

The bellow example case which is using `define`:

```js
import { define } from '@gunshi/definition'

/**
 * define `say` command as javascript module
 */
export default define({
  name: 'say',
  args: {
    say: {
      type: 'string',
      description: 'say something',
      default: 'hello!'
    }
  },
  run: ctx => {
    return `You said: ${ctx.values.say}`
  }
})
```

About details, See the below official docs sections:

- Essentials:
  - [Declarative Configuration](https://gunshi.dev/guide/essentials/declarative)
  - [Type Safe](https://gunshi.dev/guide/essentials/type-safe)
  - [Composable Sub-commands](https://gunshi.dev/guide/essentials/composable)
  - [Lazy & Async Command Loading](https://gunshi.dev/guide/essentials/lazy-async)
- ## Advanced:
  - [Type System](https://gunshi.dev/guide/advanced/type-system)

## ©️ License

[MIT](http://opensource.org/licenses/MIT)

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/@gunshi/definition?style=flat
[npm-version-href]: https://npmjs.com/package/@gunshi/definition@alpha
[jsr-src]: https://jsr.io/badges/@gunshi/definition
[jsr-href]: https://jsr.io/@gunshi/definition
[install-size-src]: https://pkg-size.dev/badge/install/23122
npm package: @gunshi/docs
Description: Documentation for gunshi
Author: kazuya kawaguchi
Latest version: 0.29.4


# Gunshi

> Modern JavaScript Command-line library

Robust, modular, flexible, and localizable CLI library

## Table of Contents

### Introduction

- [What's Gunshi?](src/guide/introduction/what-is-gunshi)
- [Setup](src/guide/introduction/setup)


### Essentials

- [Getting Started](src/guide/essentials/getting-started)
- [Declarative Configuration](src/guide/essentials/declarative)
- [Type Safe](src/guide/essentials/type-safe)
- [Composable](src/guide/essentials/composable)
- [Lazy & Async](src/guide/essentials/lazy-async)
- [Auto Usage Generation](src/guide/essentials/auto-usage)
- [Plugin System](src/guide/essentials/plugin-system)


### Advanced

- [Type System](src/guide/advanced/type-system)
- [Command Hooks](src/guide/advanced/command-hooks)
- [Context Extensions](src/guide/advanced/context-extensions)
- [Custom Rendering](src/guide/advanced/custom-rendering)
- [Internationalization](src/guide/advanced/internationalization)
- [Documentation Generation](src/guide/advanced/docs-gen)
- [Advanced Lazy Loading and Sub-Commands](src/guide/advanced/advanced-lazy-loading)
- [Nested Sub-Commands](src/guide/advanced/nested-sub-commands)


### API References

- [combinators](src/api/combinators/index)
- [context](src/api/context/index)
- [default](src/api/default/index)
- [definition](src/api/definition/index)
- [generator](src/api/generator/index)
- [plugin](src/api/plugin/index)
- [renderer](src/api/renderer/index)


### Extra Topics

- [Showcase](src/showcase)
npm package: @gunshi/plugin
Description: plugin development kit for gunshi
Author: kazuya kawaguchi
Latest version: 0.29.4

# `@gunshi/plugin`

[![Version][npm-version-src]][npm-version-href]
[![InstallSize][install-size-src]][install-size-src]
[![JSR][jsr-src]][jsr-href]

> plugin development kit for gunshi

This package provides comprehensive APIs and TypeScript type definitions for creating plugins for gunshi, a modern JavaScript command-line library.

<!-- eslint-disable markdown/no-missing-label-refs -->

> [!TIP]
> **The APIs and type definitions available in this package are the same as those in the `gunshi/plugin` entry in the `gunshi` package.**
> This package is smaller in file size than the `gunshi` package, making it suitable for use when you want to reduce the size of the 'node_modules' in the plugin package you are creating.

<!-- eslint-enable markdown/no-missing-label-refs -->

About details, See [the plugin development guides](https://gunshi.dev/guide/plugin/introduction) of official docs.

## ©️ License

[MIT](http://opensource.org/licenses/MIT)

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/@gunshi/plugin?style=flat
[npm-version-href]: https://npmjs.com/package/@gunshi/plugin@alpha
[jsr-src]: https://jsr.io/badges/@gunshi/plugin
[jsr-href]: https://jsr.io/@gunshi/plugin
[install-size-src]: https://pkg-size.dev/badge/install/27672
npm package: @gunshi/resources
Description: built-in localization resources for gunshi
Author: kazuya kawaguchi
Latest version: 0.29.4

# @gunshi/resources

> built-in localization resources for gunshi.

This package provides multilingual resources for gunshi.

## 💿 Installation

```sh
# npm
npm install --save @gunshi/resources

# pnpm
pnpm add @gunshi/resources

# yarn
yarn add @gunshi/resources

# deno
deno add jsr:@gunshi/resources

# bun
bun add @gunshi/resources
```

## 🚀 Usage

### Import all locales

```ts
import resources from '@gunshi/resources'

console.log(resources['en-US']) // display en-US reousrces
console.log(resources['ja-JP']) // display ja-JP resources
```

### Import specific locale

You can import via sub paths.

```ts
// English resources
import enUS from '@gunshi/resources/en-US' with { type: 'json' }

// Japanese resources
import jaJP from '@gunshi/resources/ja-JP' with { type: 'json' }
```

## ✨ Built-in Keys

Keys for built-in functionalities are handled by Gunshi's default locales. The complete list includes:

- `USAGE` - Usage section header
- `OPTIONS` - Options section header
- `ARGUMENTS` - Arguments section header
- `COMMANDS` - Commands section header
- `EXAMPLES` - Examples section header
- `FORMORE` - Footer text for additional help
- `NEGATABLE` - Prefix for negatable options (e.g., "Negatable of --verbose")
- `DEFAULT` - Prefix for default values (e.g., "default: 5")
- `CHOICES` - Prefix for available choices (e.g., "choices: red, green, blue")
- `help` - Description for the help option ("Display this help message")
- `version` - Description for the version option ("Display this version")
  The following keys are provided for each locale:

## 🌍 Supported Locales

- `en-US` - English (United States)
- `ja-JP` - Japanese (Japan)

## 🧩 Usage in i18n plugin

This package is internally used by gunshi plugins, particularly `@gunshi/plugin-i18n` and `@gunshi/plugin-renderer`.

### Example with @gunshi/plugin-i18n

```ts
import i18n from '@gunshi/plugin-i18n'
import resources from '@gunshi/resources'
import { cli } from 'gunshi'

await cli(
  args,
  {
    /* your entry command */
  },
  {
    plugins: [
      i18n({
        locale: 'ja-JP',
        builtinResources: resources // Use @gunshi/resources directly
      })
    ]
  }
)
```

### Integration with Custom Resources

```ts
import resources from '@gunshi/resources'

// Extend built-in resources
const customResources = {
  'en-US': {
    ...resources['en-US'],
    // Add custom keys
    MY_CUSTOM_KEY: 'My custom message'
  },
  'ja-JP': {
    ...resources['ja-JP'],
    // Add custom keys
    MY_CUSTOM_KEY: '私のカスタムメッセージ'
  }
}
```

## ©️ License

[MIT](http://opensource.org/licenses/MIT)
npm package: @guntur/eslint
Description: Eslint configuration
Author: Guntur Poetra
Latest version: 0.0.1

 # eslint

 > My personal eslint configration


## Install

```console
$ npm install @guntur/eslint --dev
```


## Usage

Create or update `.eslintrc.js` in the project root directory

```js
module.exports = {
    extends: [
        '@guntur/eslint'
    ]
}
```


## License

MIT © [Guntur Poetra](https://github.com/iguntur)
npm package: @guntur/eslint-config
Description: My personal eslint configuration
Author: Guntur Poetra
Latest version: 0.0.5

 # eslint-config

 > My personal eslint configration


## Install

```console
$ npm install @guntur/eslint-cofig
```


## Usage

Create or update `.eslintrc` in the project root directory

```json
{
    "extends": [
        "@guntur/eslint-config"
    ]
}
```


## Features

- [eslint-config-xo](#)
- [eslint-plugin-react](#)
- [eslint-plugin-unicorn](#)


## License

MIT © [Guntur Poetra](https://github.com/iguntur)
npm package: @guntur/eslint-typescript
Description: Eslint configuration with typescript
Author: Guntur Poetra
Latest version: 0.0.1

 # eslint

 > My personal eslint with typescript configration


## Install

```console
$ npm install @guntur/eslint-typescript --dev
```


## Usage

Create or update `.eslintrc.js` in the project root directory

```js
module.exports = {
    extends: [
        '@guntur/eslint-typescript'
    ]
}
```


## License

MIT © [Guntur Poetra](https://github.com/iguntur)
npm package: @guntur/google-contact
Description: Create and export google contact to CSV or JSON
Author: Guntur Poetra
Latest version: 0.1.0

# google-contact

[![Build Status](https://travis-ci.com/iguntur/google-contact.svg?token=Gqg6SWkLJ3YyFSAu5i3M&branch=master)](https://travis-ci.com/iguntur/google-contact)
[![npm](https://img.shields.io/npm/v/@guntur/google-contact.svg?style=flat)](https://www.npmjs.org/package/@guntur/google-contact)
[![node](https://img.shields.io/node/v/@guntur/google-contact.svg?style=flat)](https://nodejs.org)

> Create and export google contact to CSV or JSON


---


## Install

```console
$ npm install @guntur/google-contact
```

## Usage

```js
const googleContact = require('@guntur/google-contact');

const person = googleContact.create({
    name: 'John Doe',
    givenName: 'John Doe'
    phone: [
        {
            type: 'Mobile',
            value: '+0000123456789'
        }
    ]
});

console.log(person);
/*
{
    'Name': 'John Doe',
    'Given Name': 'John Doe',
    ...
    'Phone 1 - Type': 'Mobile',
    'Phone 1 - Value': '+0000123456789',
    ...
}
*/
```

## API

### googleContact

#### .create(`options: object`)

- Params:
  - `options`: `<object>` - _(required)_. See [state file](/lib/state.js) for all options.
- Returns: `<object>`


#### .export.toCSV(`options: object`)
#### .export.toJSON(`options: object`)

- Params:
  - `options`: `<object>` - _(required)_
    - `contacts`: `<object[]>`
    - `outputFilepath`: `<string>`
- Returns: `void`


## License

MIT © [Guntur Poetra](https://github.com/iguntur)
npm package: @guntur/json-fs
Description: Read and write json file
Author: Guntur Poetra
Latest version: 0.1.1

# json-fs

[![Travis CI](https://img.shields.io/travis/iguntur/json-fs.svg?style=flat-square)](https://travis-ci.org/iguntur/json-fs)
[![node](https://img.shields.io/node/v/@guntur/json-fs.svg?style=flat-square)](#)
[![npm](https://img.shields.io/npm/v/@guntur/json-fs.svg?style=flat-square)](https://www.npmjs.org/package/@guntur/json-fs)

> Read and write json file


---


## Install

```console
$ npm install @guntur/json-fs
```

## Usage

```js
const jsonFs = require('@guntur/json-fs');

jsonFs.writeFile('/path/to/json/file/foo.json', {
    cake: '🍰'
});

const obj = jsonFs.readFile('/path/to/json/file/foo.json');
console.log(obj);
/*
{
    "cake": "🍰"
}
*/
```


## API

### readFile(`filepath: string`)

Returns an `object`

### writeFile(`filepath: string, data: object, indent?: any = '\t'`)

Write a file with `object` data.

> Note: Use `null` for not using indentation.


## License

MIT © [Guntur Poetra](https://github.com/iguntur)
npm package: @guntur/phone-number-generator
Description: Generate random phone number
Author: Guntur Poetra
Latest version: 0.1.1

# phone-number-generator

[![Build Status](https://travis-ci.com/iguntur/phone-number-generator.svg?token=Gqg6SWkLJ3YyFSAu5i3M&branch=master)](https://travis-ci.com/iguntur/phone-number-generator)
[![npm](https://img.shields.io/npm/v/@guntur/phone-number-generator.svg?style=flat)](https://www.npmjs.org/package/@guntur/phone-number-generator)
[![node](https://img.shields.io/node/v/@guntur/phone-number-generator.svg?style=flat)](https://nodejs.org)

> Generate random phone number


## Install

```console
$ npm install @guntur/phone-number-generator
```


## Usage

```js
const phoneNumberGenerator = require('phone-number-generator');

const results = phoneNumberGenerator({
    provider: '+62800',
    hlr: '1234',
    start: '0000',
    end: '0100',
    delimiter: '-'
});

console.log(results);
/*
[
    '+62800-1234-0000',
    '+62800-1234-0001',
    ...
    '+62800-1234-0099',
    '+62800-1234-0100'
]
*/
```


## API

### phoneNumberGenerator(`options: object`)

- Params:
  - options: `<object>`
- Returns: `<string[]>` - An array of string.

#### options

- provider - Phone number provider.
  - Types: `<string>`
  - Default: `0000`


- hlr - Phone number HLR.
  - Types: `<string>`
  - Default: `0000`

- start - Phone number to start from.
  - Types: `<string>`
  - Default: `0000`


- end - Phone number to end from.
  - Types: `<string>`
  - Default: `9999`

- delimiter - Phone number delimiter.
  - Types: `<string>`
  - Default: `''`


## License

MIT © [Guntur Poetra](https://github.com/iguntur)
npm package: @guntur/qs
Description: Open Al-Quran with surah and ayyah on web browser
Author: Guntur Poetra
Latest version: 0.0.0

# Al-Quran

> Open Al-Quran with surah and ayyah on web browser


## Install

```console
$ npm install @guntur/qs --global
```


## Usage

```console
$ qs 7/179
$ qs 73
```

## License

MIT © [Guntur Poetra](https://github.com/iguntur)
npm package: @guntur/randid
Description: Generate a random string or id
Author: Guntur Poetra
Latest version: 0.1.0

# randid

[![Build Status](https://travis-ci.com/iguntur/randid.svg?token=Gqg6SWkLJ3YyFSAu5i3M&branch=master)](https://travis-ci.com/iguntur/randid)
[![npm](https://img.shields.io/npm/v/@guntur/randid.svg?style=flat)](https://www.npmjs.org/package/@guntur/randid)
[![node](https://img.shields.io/node/v/@guntur/randid.svg?style=flat)](https://nodejs.org)

> Generate a random string or id


---


## Install

```console
$ npm install @guntur/randid
```

## Usage

```js
const randid = require('@guntur/randid');

randid().then(str => {
    console.log(str);
    //=> l43xxapV9aWq
});

console.log(randid.sync({length: 24}));
//=> x3qAJC3d7ra4IafxmtXEqWkK
```

## API

### randid(`options`)

- Params:
  - `options`: [`<Options>`](#options)
- Returns: `Promise<string>`

### randid.sync(`options`)

- Params:
  - `options`: [`<Options>`](#options)
- Returns: `<string>`

#### `Options`

- `length`: `<number>`
  - default: `12`


## License

MIT © [Guntur Poetra](https://github.com/iguntur)
npm package: @guntur/tsconfig
Description: Typescript shareable `tsconfig`
Author: Guntur Poetra
Latest version: 1.0.1

# Typescript tsconfig

[![npm](https://img.shields.io/npm/v/@guntur/tsconfig.svg?style=flat-square)](https://www.npmjs.org/package/@guntur/tsconfig)
[![PRs](https://img.shields.io/badge/PRs-welcome-328ff8.svg?style=flat-square)](#)

---

## Install

```console
$ npm install @guntur/tsconfig
```

## Usage

**`tsconfig.json`**

```json
{
    "extends": "@guntur/tsconfig"
}
```

| Presets                    | Target        |
|----------------------------|---------------|
| `@guntur/tsconfig`         | NodeJS `>= 6` |
| `@guntur/tsconfig/node/v4` | NodeJS `>= 4` |
| `@guntur/tsconfig/esnext`  | ES Module     |


## License

MIT © [Guntur Poetra](https://github.com/iguntur)
npm package: @gunubin/cc-pick
Description: Interactive CLI for configuring Claude Code MCP servers and plugins per project
Latest version: 0.1.2

# cc-pick

[![npm version](https://img.shields.io/npm/v/@gunubin/cc-pick)](https://www.npmjs.com/package/@gunubin/cc-pick)
[![license](https://img.shields.io/npm/l/@gunubin/cc-pick)](./LICENSE)

Interactive CLI for configuring Claude Code MCP servers and plugins per project.

## Install

```bash
npm install -g @gunubin/cc-pick
# or run directly
npx @gunubin/cc-pick
```

## Usage

```bash
cc-pick              # MCP + plugins
cc-pick --mcp        # MCP servers only
cc-pick --plugins    # Plugins only
cc-pick --list       # Show current config
```

## MCP Presets

Place JSON files in `~/.config/claude/mcp-presets/`. The filename (without `.json`) becomes the preset name.

```json
{
  "_meta": {
    "description": "Short description of the MCP server",
    "tags": ["tag1", "tag2"],
    "requiredEnvVars": ["API_KEY"]
  },
  "type": "stdio",
  "command": "npx",
  "args": ["some-mcp-server@latest"],
  "env": {
    "API_KEY": "${API_KEY}"
  }
}
```

- `_meta` is metadata used only by cc-pick (not written to `.mcp.json`)
- `requiredEnvVars` triggers an environment variable check in the UI
- Everything outside `_meta` is written directly to `.mcp.json`

## Key Bindings

### Selection

| Key | Action |
|-----|--------|
| `↑` / `k` | Move up |
| `↓` / `j` | Move down |
| `Space` | Toggle item |
| `Tab` | Switch pane (MCP / Plugins) |
| `Enter` | Confirm |
| `q` | Quit |

### Confirmation

| Key | Action |
|-----|--------|
| `y` / `Enter` | Apply changes |
| `n` / `Esc` | Cancel |

## Data Sources

| Data | Path |
|------|------|
| MCP presets | `~/.config/claude/mcp-presets/*.json` |
| Current MCP | `.mcp.json` |
| Installed plugins | `~/.claude/plugins/installed_plugins.json` |
| Global plugin settings | `~/.claude/settings.json` |
| Project plugin settings | `.claude/settings.json` |

## License

MIT
npm package: @gunubin/proclean
Description: Interactive orphan process killer powered by fzf
Latest version: 0.2.0

# proclean

**Interactive orphan process killer powered by fzf.**

![Node.js](https://img.shields.io/badge/node-%3E%3D18-green)
![TypeScript](https://img.shields.io/badge/typescript-5.7-blue)
![fzf](https://img.shields.io/badge/fzf-required-orange)
![License](https://img.shields.io/badge/license-MIT-blue)
![macOS](https://img.shields.io/badge/platform-macOS-lightgrey)

## Why proclean?

Closing tmux panes often leaves subprocess orphans (Claude Code, node, cargo, etc.) running with PPID=1, silently consuming memory. On macOS, PPID=1 also includes legitimate launchd-managed processes, so blindly killing everything is dangerous. proclean provides safe, filterable, interactive cleanup.

## Features

- **Two modes** -- `dev` (whitelist: Claude Code, node, cargo, rbenv) and `all` (blacklist: system processes only)
- **fzf-powered UI** -- Fuzzy search, multi-select, real-time preview
- **Detail preview** -- Process info, command line, open files in side pane
- **Safe kill** -- SIGTERM with automatic list reload
- **Catppuccin Frappe theme** -- Consistent color scheme

## Prerequisites

- [fzf](https://github.com/junegunn/fzf) (>= 0.57)

```bash
brew install fzf
```

## Installation

```bash
# npx で即実行（インストール不要）
npx proclean

# またはグローバルインストール
npm install -g proclean
```

## Usage

```bash
# dev mode (default): Claude Code, node, cargo, rbenv orphans
proclean

# all mode: everything except /System, /usr, /Library/Apple
proclean -a
```

### tmux integration

Bind to a key for quick access:

```tmux
bind P display-popup -E -w 50% -h 50% "proclean"
```

### Keybindings

| Key | Action |
|-----|--------|
| `TAB` | Toggle selection |
| `Enter` | Kill selected processes |
| `Ctrl-A` | Select / deselect all |
| `Ctrl-C` | Quit |
| Type to search | Fuzzy filter |

## Filter Logic

### dev mode (default)

Whitelist -- only shows orphans matching:

- `.local/share/claude` (Claude Code)
- `.npm`, `.nvm`, `.nodebrew` (Node.js)
- `.cargo` (Rust)
- `.rbenv` (Ruby)
- Standalone `node` processes
- `bash`/`zsh` spawned by Claude (`.claude/` in args)

### all mode (`-a`)

Blacklist -- shows everything except:

- `/System/*`
- `/usr/*`
- `/Library/Apple/*`

## Tech Stack

- [fzf](https://github.com/junegunn/fzf) (interactive UI)
- [meow](https://github.com/sindresorhus/meow) (CLI args)
- [tsup](https://github.com/egoist/tsup) (ESM build)

## Development

```bash
git clone https://github.com/gunubin/proclean.git
cd proclean
npm install && npm run build
npm link
```

## License

MIT
npm package: @gunubin/simple-babel-library-template
Description: Babel and flow for npm library
Author: gunubin
Latest version: 1.1.0

# simple-babel-library-template

[![Build Status](https://travis-ci.org/gunubin/simple-babel-library-template.svg?branch=master)](https://travis-ci.org/gunubin/simple-babel-library-template)
[![codecov](https://codecov.io/gh/gunubin/simple-babel-library-template/branch/master/graph/badge.svg)](https://codecov.io/gh/gunubin/simple-babel-library-template)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://codecov.io/gh/gunubin/simple-babel-library-template)


## Installation
```
npm install --save-dev simple-babel-library-template
```
npm package: @gunubin/vorm-core
Description: Branded value object definitions with type-safe validation rules
Author: gunubin
Latest version: 0.3.0

# @gunubin/vorm-core

[![npm](https://img.shields.io/npm/v/@gunubin/vorm-core)](https://www.npmjs.com/package/@gunubin/vorm-core)

VO-first form validation core — branded types, field schemas, and validation logic.

Part of the [vorm](https://github.com/gunubin/vorm) monorepo.

## Install

```bash
npm install @gunubin/vorm-core
```

## Quick Start

### Define Value Objects

```ts
import { vo } from '@gunubin/vorm-core';

const Email = vo('Email', [
  { code: 'INVALID_FORMAT', validate: (v: string) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v) },
]);

Email.create('user@example.com'); // Brand<string, 'Email'>
```

### Create Fields and Form Schema

```ts
import { createField, createFormSchema } from '@gunubin/vorm-core';

const emailField = createField(Email);

const schema = createFormSchema({
  fields: {
    email: emailField({
      required: true,
      messages: { REQUIRED: 'Email is required', INVALID_FORMAT: 'Invalid email' },
    }),
  },
});
```

### Reusable Rules with `createRule`

```ts
import { createRule } from '@gunubin/vorm-core';

const minLength = createRule('TOO_SHORT', (v: string, min: number) => v.length >= min);
const maxLength = createRule('TOO_LONG', (v: string, max: number) => v.length <= max);

const Username = vo('Username', [minLength(3), maxLength(20)]);
```

### Parse / Format

```ts
const priceField = createField<number>({
  parse: (v: string) => Number(v.replace(/,/g, '')),
  format: (v: number) => v.toLocaleString(),
})({ required: true });
```

## API

| Export | Description |
|--------|-------------|
| `vo(brand, rules)` | Define a Value Object type with branded output |
| `createField(vo, options?)` | Create a field factory from a VO definition |
| `createField(config)` | Create a field schema directly for plain types |
| `createRule(code, validate)` | Create reusable, parameterized validation rules |
| `createFormSchema(config)` | Bundle fields into a form schema |
| `validateField(value, schema)` | Validate a single field |
| `validateForm(values, schema)` | Validate all fields |
| `VOValidationError` | Error thrown by `vo().create()` on failure |

### Types

```ts
import type { Brand, Infer, ErrorMessageMap } from '@gunubin/vorm-core';
```

For full documentation, see the [vorm README](https://github.com/gunubin/vorm#readme).

## License

MIT
npm package: @gunubin/vorm-rhf
Description: Thin React Hook Form resolver adapter for @gunubin/vorm-core — branded type output with zero API wrapping
Author: gunubin
Latest version: 0.3.0

# @gunubin/vorm-rhf

[![npm](https://img.shields.io/npm/v/@gunubin/vorm-rhf)](https://www.npmjs.com/package/@gunubin/vorm-rhf)

React Hook Form resolver adapter for vorm — branded type output with zero API wrapping.

Part of the [vorm](https://github.com/gunubin/vorm) monorepo.

## Install

```bash
npm install @gunubin/vorm-core @gunubin/vorm-rhf react-hook-form
```

## Usage

### `useVorm`

A thin wrapper around RHF's `useForm` that automatically wires up a vorm resolver. All RHF APIs work as-is.

```tsx
import { useVorm } from '@gunubin/vorm-rhf';

function LoginForm() {
  const { register, handleSubmit, formState: { errors } } = useVorm(schema, {
    defaultValues: { email: '', password: '' },
    mode: 'onBlur',
  });

  return (
    <form onSubmit={handleSubmit((values) => {
      // values.email: Brand<string, 'Email'>
      login(values.email, values.password);
    })}>
      <input {...register('email')} />
      {errors.email && <span>{errors.email.message}</span>}

      <input type="password" {...register('password')} />
      {errors.password && <span>{errors.password.message}</span>}

      <button type="submit">Log in</button>
    </form>
  );
}
```

### `createVormResolver`

Use the resolver directly with RHF's `useForm`:

```ts
import { useForm } from 'react-hook-form';
import { createVormResolver } from '@gunubin/vorm-rhf';

const { register, handleSubmit } = useForm({
  resolver: createVormResolver(schema),
  defaultValues: { email: '', password: '' },
});
```

For full documentation, see the [vorm README](https://github.com/gunubin/vorm#readme).

## License

MIT
npm package: @gunubin/vorm-zod
Description: Zod schema adapter for vorm — convert Zod checks to validation rules
Author: gunubin
Latest version: 0.3.0

# @gunubin/vorm-zod

[![npm](https://img.shields.io/npm/v/@gunubin/vorm-zod)](https://www.npmjs.com/package/@gunubin/vorm-zod)

Zod schema adapter for vorm — convert Zod checks to validation rules.

Part of the [vorm](https://github.com/gunubin/vorm) monorepo.

## Install

```bash
npm install @gunubin/vorm-core @gunubin/vorm-zod zod
```

## Usage

```ts
import { z } from 'zod';
import { fromZod } from '@gunubin/vorm-zod';
import { vo } from '@gunubin/vorm-core';

const emailSchema = z.string().email('INVALID_EMAIL').min(1, 'REQUIRED');
const Email = vo('Email', fromZod(emailSchema));
```

`fromZod()` extracts Zod's built-in checks (`min`, `max`, `email`, `regex`) and converts them to vorm `ValidationRule[]`. Works with `ZodBranded` schemas too.

For full documentation, see the [vorm README](https://github.com/gunubin/vorm#readme).

## License

MIT
npm package: @guo514360255/element-lib
Description: This template should help get you started developing with Vue 3 in Vite.
Author: 514360255@qq.com
Latest version: 1.2.1

# ele-lib

This template should help get you started developing with Vue 3 in Vite.

## Recommended IDE Setup

[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).

## Type Support for `.vue` Imports in TS

TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.

## Customize configuration

See [Vite Configuration Reference](https://vite.dev/config/).

## Project Setup

```sh
npm install
```

### Compile and Hot-Reload for Development

```sh
npm run dev
```

### Type-Check, Compile and Minify for Production

```sh
npm run build
```

### Run Unit Tests with [Vitest](https://vitest.dev/)

```sh
npm run test:unit
```

### Lint with [ESLint](https://eslint.org/)

```sh
npm run lint
```
npm package: @guobin211/vite-plugin-pages
Description: vite multiple pages plugin
Author: guobin211
Latest version: 0.1.0

# vite-plugin-pages

给vite添加pages多页面支持

### 安装

```bash
npm i vite-plugin-pages -D
```

### 配置

```ts
import { vitePluginPages } from 'vite-plugin-pages';

export default {
  plugins: [
    vitePluginPages({
      pagesDir: ['src/pages']
    })
  ]
};
```

### 目录结构

```
├── src
│   ├── pages
│   │   ├── index
│   │   │   ├── index.html
│   │   │   ├── main.ts
│   │   ├── posts
│   │   │   ├── index.html
│   │   │   ├── main.ts
│   ├── components
│   │   │   ├── Card.tsx
│   └── ...
```
npm package: @guogb/koishi-plugin-quark-search
Description: 夸克网盘搜索
Latest version: 1.0.3

# @guogb/koishi-plugin-quark-search

[![npm](https://img.shields.io/npm/v/@guogb/koishi-plugin-quark-search?style=flat-square)](https://www.npmjs.com/package/@guogb/koishi-plugin-quark-search)

夸克网盘搜索
npm package: @guohuanc/element
Description: Vue3 components libary
Author: guohuanc
Latest version: 1.0.0

# v-element

This template should help get you started developing with Vue 3 in Vite.

## Recommended IDE Setup

[VS Code](https://code.visualstudio.com/) + [Vue (Official)](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).

## Recommended Browser Setup

- Chromium-based browsers (Chrome, Edge, Brave, etc.):
  - [Vue.js devtools](https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd)
  - [Turn on Custom Object Formatter in Chrome DevTools](http://bit.ly/object-formatters)
- Firefox:
  - [Vue.js devtools](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/)
  - [Turn on Custom Object Formatter in Firefox DevTools](https://fxdx.dev/firefox-devtools-custom-object-formatters/)

## Type Support for `.vue` Imports in TS

TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.

## Customize configuration

See [Vite Configuration Reference](https://vite.dev/config/).

## Project Setup

```sh
npm install
```

### Compile and Hot-Reload for Development

```sh
npm run dev
```

### Type-Check, Compile and Minify for Production

```sh
npm run build
```

### Lint with [ESLint](https://eslint.org/)

```sh
npm run lint
```
npm package: @guojinchao/my-materilas-example-component
Description: 示例
Latest version: 1.0.0

# demo component

my-materilas-example-component

示例

## API

| 参数名 | 说明 | 必填 | 类型 | 默认值 | 备注 |
| ------ | ---- | ---- | ---- | ------ | ---- |
|        |      |      |      |        |      |
npm package: @guojunquan/utils
Description: utils
Author: guojunquan
Latest version: 0.1.0

<!--
 * @Description:
 * @Version: 1.0.0
 * @Autor: Ceart <1871321876@qq.com>
 * @Date: 2022-08-05 21:28:33
 * @LastEditors: Ceart
 * @LastEditTime: 2022-08-07 00:42:50
-->

# 简介

开箱即用的 js 和 css，纯 JavaScript 实现，无依赖！

# 安装

```sh
npm install @guojunquan/utils
```

# 文档

http://project.ceart.top/lib_monorepo/modules/utils.html
https://mp.weixin.qq.com/s/NgTpmHNIkH5AlYG8qyv7XA

# 使用

> 该库尚未发布 1.0 版本，api 可能会随时发生变化，请勿用于生产环境！

```ts
import { isBrowser } from '@guojunquan/utils';

console.log(isBrowser());
```

# 在浏览器使用

> 该库尚未发布 1.0 版本，api 可能会随时发生变化，请勿用于生产环境！

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script src="https://unpkg.com/@guojunquan/utils/index.min.js"></script>
    <script>
      console.log(BilldUtils.isBrowser());
    </script>
  </body>
</html>
```
npm package: @guolao/is-html-tag
Description: Check if the string is an HTML tag name.
Author: guolao
Latest version: 0.0.1

# is-html-tag

Check if the string is an HTML tag name.

[![gitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/imguolao/is-html-tag/blob/main/LICENSE) 

## Installation

```sh
# npm
npm i @guolao/is-html-tag

# yarn
yarn add @guolao/is-html-tag

# pnpm
pnpm add @guolao/is-html-tag
```

## Usage

```ts
import isHTMLTag from '@guolao/is-html-tag'

isHTMLTag('a')   // true
isHTMLTag('div') // true

isHTMLTag('dog') // false
isHTMLTag('foo') // false

// custom element
customElementRegistry.define('my-custom-element', MyCustomElement)
isHTMLTag('my-custom-element') // true
```

## License

[MIT](LICENSE)
npm package: @guolao/js-playground
Description: A js playground component.
Author: guolao
Latest version: 0.0.3-beta

# JS Playground

A js playground component in vue3.

![LICENSE](https://img.shields.io/github/license/imguolao/js-playground.svg) ![NPM](https://img.shields.io/npm/v/%40guolao%2Fjs-playground
)

## Installation

```sh
npm i @guolao/js-playground
```

## Usage

```vue
<template>
  <js-playground default-code="code" />
</template>

<script setup>
import { JSPlayground } from '@guolao/js-playground'
import '@guolao/js-playground/dist/style.css'

const code = 'console.log(123)'
</script>
```
npm package: @guolei1994/iflow
Description: iFlow LLM SDK - 使用 iFlow CLI 认证调用 LLM API
Latest version: 1.0.1

# iFlow LLM SDK

使用 iFlow CLI 认证调用 LLM API 的独立 SDK。

## 安装

```bash
npm install @guolei1994/iflow
```

## 前置要求

需要先安装 iFlow CLI 并登录：

```bash
npm install -g @iflow-ai/iflow-cli@latest
iflow login
```

## 使用方法

### 方式1: 简单使用（推荐）

```typescript
import { createIFlowClient } from '@guolei1994/iflow';

const client = await createIFlowClient();

// 非流式调用
const response = await client.chatComplete([
    { role: 'user', content: '你好' }
]);
console.log(response);
```

### 方式2: 流式输出

```typescript
import { IFlowClient } from '@guolei1994/iflow';

const client = new IFlowClient();
await client.init();

const stream = client.chatStream([
    { role: 'user', content: '写个快速排序' }
]);

for await (const chunk of stream) {
    process.stdout.write(chunk);
}
```

### 方式3: 原始 OpenAI SDK 接口

```typescript
import { IFlowClient } from '@guolei1994/iflow';

const client = new IFlowClient();
await client.init();

const response = await client.chat(
    [{ role: 'user', content: '1+1=?' }],
    { model: 'glm-4.7', stream: false }
);

// response 是 OpenAI SDK 返回的完整对象
console.log(response.choices[0].message.content);
```

### 方式4: AI SDK 集成（推荐用于 AI SDK 生态）

```typescript
import { iflow } from '@guolei1994/iflow';
import { generateText, streamText } from 'ai';

// 非流式调用
const { text } = await generateText({
  model: iflow('iFlow-ROME-30BA3B'),
  prompt: '写一个快速排序算法',
});

// 流式调用
const { textStream } = await streamText({
  model: iflow('iFlow-ROME-30BA3B'),
  prompt: '介绍 JavaScript 的闭包概念',
});

for await (const chunk of textStream) {
  process.stdout.write(chunk);
}
```

## 支持的模型

- `glm-4.7` - GLM-4.7 标准版
- `glm-4.7-thinking` - GLM-4.7 思考版
- `iFlow-ROME-30BA3B` - iFlow ROME 预览版

## API 参考

### `createIFlowClient(logger?: Logger)`

创建并初始化 iFlow 客户端的便捷函数。

### `IFlowClient`

主要客户端类。

#### 方法

- `init(forceRefresh?: boolean)` - 初始化客户端（自动获取 API Key）
- `chat(messages, options)` - 发送聊天请求（返回原始 OpenAI SDK 响应）
- `chatComplete(messages, options)` - 非流式聊天（返回字符串）
- `chatStream(messages, options)` - 流式聊天（返回异步生成器）
- `refreshAuth()` - 强制刷新认证凭证
- `isInitialized()` - 检查是否已初始化

#### 选项

```typescript
interface ChatOptions {
    model?: string;        // 模型 ID，默认 'glm-4.7'
    stream?: boolean;      // 是否流式输出，默认 true
    temperature?: number;  // 温度参数
    maxTokens?: number;    // 最大 token 数
}
```

## 认证机制

SDK 使用 iFlow CLI 的 OAuth 凭证：

1. 从 `~/.iflow/oauth_creds.json` 读取 OAuth 凭证
2. 自动检查 access_token 是否过期，过期则刷新
3. 使用 access_token 调用 `https://iflow.cn/api/oauth/getUserInfo` 获取 apiKey
4. 缓存 apiKey 2 小时，减少频繁请求
5. 使用 apiKey 调用 `https://apis.iflow.cn/v1` 的 OpenAI 兼容接口

## 自定义日志

```typescript
import { createIFlowClient } from '@guolei1994/iflow';

const logger = {
    trace: () => {},
    debug: console.debug,
    info: console.info,
    warn: console.warn,
    error: console.error
};

const client = await createIFlowClient(logger);
```

## License

MIT
npm package: @guoliwei/bw-table
Description: Vue3 + Element Plus 增强表格组件，支持搜索、分页、列设置、多选等
Latest version: 1.0.0

# @your-scope/pro-table

Vue3 + Element Plus 增强表格组件，支持搜索表单、分页、列设置、多选、拖拽排序等。

## 安装

```bash
npm i @your-scope/pro-table
# 或
pnpm add @your-scope/pro-table
```

**依赖**：请确保项目已安装 `vue@^3.3`、`element-plus@^2.4`、`@element-plus/icons-vue`。表格内部使用 `sortablejs`、`vuedraggable`，已作为 dependencies 安装。

**样式**：包内已包含 ProTable 所需的全局样式（`.card`、`.table-main`、`.table-search`、`.table-header` 等），引入包样式后即可正常显示，无需在业务项目中再写一套。若项目已定义 `--gray-*` 等变量，会优先使用项目的；未定义时使用 Element Plus 变量作为 fallback。

## 使用

### 全局注册

```js
import ProTable from "@your-scope/pro-table";
import "@your-scope/pro-table/style.css"; // 若有打包样式

app.component("ProTable", ProTable);
```

### 按需使用

```vue
<template>
  <ProTable
    :columns="columns"
    :request-api="getList"
    row-key="id"
  />
</template>
<script setup>
import ProTable from "@your-scope/pro-table";
import "@your-scope/pro-table/style.css";

const columns = [
  { prop: "name", label: "姓名", search: { el: "input" } },
  { prop: "status", label: "状态", enum: statusOptions, tag: true },
  { prop: "operation", label: "操作", fixed: "right" },
];
const getList = (params) => api.getList(params); // 需返回 { data, totalElements }
</script>
```

### 权限按钮（可选）

若需要与项目权限体系对接（操作列按钮权限），在 ProTable 外层 provide 当前页允许的按钮码列表：

```js
import { ref } from "vue";
const authButtons = ref(["add", "edit", "delete"]); // 从权限接口或 store 获取
provide("proTableAuthButtons", authButtons);
```

不 provide 时，操作列所有按钮均展示。

## Props / 事件 / 插槽

与现有 ProTable 保持一致，如：`columns`、`requestApi`、`requestAuto`、`pagination`、`rowKey`、`searchCol`、`toolButton` 等；事件 `search`、`reset`、`dargSort`、`create`；插槽 `tableHeader`、`selectButton`、`pagination`、`empty` 及各列插槽。

## 构建与发布 npm

在 `packages/pro-table` 目录下：

```bash
pnpm install
pnpm build
```

发布前请将 `package.json` 中 `name` 改为你的 scope 或包名（如 `@myorg/pro-table` 或 `my-pro-table`），然后：

```bash
npm login
npm publish
```

若为 scoped 且公开发布：`npm publish --access public`。

## 从当前项目迁移

若从本仓库的 `src/components/ProTable` 迁移到该包，只需将页面中的：

- `import ProTable from "@/components/ProTable/index.vue"`  
改为  
- `import ProTable from "@your-scope/pro-table"`  
并引入样式（若需要）。列配置、API 入参/出参、插槽名保持不变即可。
npm package: @guonei001/vue-electronic-signature
Description: 电子手写签名
Author: GN
Latest version: 1.0.3

# ssit-mobile-esign

> 移动端电子手签

## Build Setup

``` bash
# install dependencies
npm install

# serve with hot reload at localhost:8080
npm run dev

# build for production with minification
npm run build
```

For detailed explanation on how things work, consult the [docs for vue-loader](http://vuejs.github.io/vue-loader).
npm package: @guoqzuo/ta-ui
Description: A responsive UI component library based on Vue 3.x
Author: i@zuoguoqing.com
Latest version: 0.0.1

# ta-ui

## publish npm
npm name occupy
```sh
#!/usr/bin/env bash
npm config get registry # 检查仓库镜像库
npm config set registry=http://registry.npmjs.org
echo '请进行登录相关操作：'
npm login # 登陆
echo "-------publishing-------"
npm publish # 发布
npm config set registry=https://registry.npm.taobao.org # 设置为淘宝镜像
echo "发布完成"
exit
```