open-index/open-npm huggingface dataset:
npm package: @himatric/valclient
Description: Valorant Client api wrapper written in nodejs. Includes automatic region detection
Author: Hima
Latest version: 1.0.1

# Installation

```bash
npm i @himatric/valclient
```
# Disclaimer

This project is still under heavy development.

# Examples

```js
const { ValClient } = require("valclient")
const client = new ValClient()
await client.getFriends(): IFriend[]

await client.addFriend(name: string, tag: string): IFriendRequest[]

await client.getFriendRequests(): IFriendRequest[]

await client.getPresences(): IUserPresence[]

await client.checkTagAvailable(name: string, tag: string): NameAvailability

await client.searchUsername(username: string, tag?: string): IUserSearch[]

await client.joinMatchmaking(): EnterMatchmakingQueueResponse
```

# Documentation

### THIS SECTION IS UNDER CONSTRUCTION

# Bugs

For reporting bugs you can either open an issue or (preferably) contact me on Discord (himaval)
npm package: @himd/voice-bridge
Description: Local stdio MCP server for himd voice capture, audio understanding, and TTS
Latest version: 0.8.0

# @himd/voice-bridge

Local stdio MCP server for himd voice capture, audio understanding, and TTS playback.

## What it provides

Three MCP tools for voice interaction:

- **`audio_capture_once`** — Capture audio from the microphone with VAD-based auto-stop
- **`audio_analyze`** — Transcribe speech and analyze acoustic features (energy, pace, pauses) with enriched model understanding via Qwen Omni
- **`speech_say`** — Convert text to speech via Qwen TTS and play it aloud

## Requirements

- **macOS** with Command Line Tools
- **ffmpeg** — `brew install ffmpeg`
- **Node.js** >= 20.0.0
- **`DASHSCOPE_API_KEY`** — required for both audio understanding (Qwen Omni) and spoken replies (Qwen TTS)

## Quick start with Claude Code

Register as an MCP server with environment variables inline:

```bash
claude mcp add \
  -e DASHSCOPE_API_KEY=your-dashscope-key \
  voice-bridge \
  -- npx -y @himd/voice-bridge
```

For project-local registration (adds to `.mcp.json`):

```bash
claude mcp add --scope project \
  -e DASHSCOPE_API_KEY=your-dashscope-key \
  voice-bridge \
  -- npx -y @himd/voice-bridge
```

Verify:

```bash
claude mcp list  # should show voice-bridge
```

Or inside Claude Code, type `/mcp`.

### Optional environment variables

| Variable | Default | Purpose |
|----------|---------|---------|
| `AUDIO_MODEL` | `qwen3-omni-flash` | Qwen Omni model for audio understanding |
| `TTS_MODEL` | `qwen3-tts-instruct-flash` | Qwen TTS model for speech synthesis |
| `DASHSCOPE_BASE_URL` | `https://dashscope.aliyuncs.com/compatible-mode/v1` | DashScope API base URL |

Pass them with extra `-e` flags:

```bash
claude mcp add \
  -e DASHSCOPE_API_KEY=your-key \
  -e AUDIO_MODEL=qwen3-omni-flash \
  -e TTS_MODEL=qwen3-tts-instruct-flash \
  voice-bridge \
  -- npx -y @himd/voice-bridge
```

## Install (alternative)

If you prefer a global install:

```bash
npm install -g @himd/voice-bridge
claude mcp add -e DASHSCOPE_API_KEY=your-dashscope-key voice-bridge -- himd-voice-bridge
```

## Troubleshooting

- **"Required command not found: ffmpeg"** — Run `brew install ffmpeg`
- **"Required command not found: afplay"** — macOS includes afplay by default. Install Command Line Tools: `xcode-select --install`
- **Missing `DASHSCOPE_API_KEY`** — Set it in your environment; both audio understanding and spoken replies require it
- **Server not appearing in `/mcp`** — Verify registration with `claude mcp list` and restart Claude Code
npm package: @himeka/booru
Description: Search (and do other things) on a bunch of different boorus!
Author: asadahimeka
Latest version: 2.7.7

# booru

![npm](https://img.shields.io/npm/v/@himeka/booru.svg) ![GitHub](https://img.shields.io/github/license/asadahimeka/booru-search.svg) ![Typescript typings](https://img.shields.io/badge/Typings-Typescript-informational.svg)

[English](readme.md) | 中文

> _A node package to search boorus_
>
> _Booru 站点图片搜索 API_
>
> Forked from [AtoraSuunva/booru](https://github.com/AtoraSuunva/booru)

## 特性

- 搜索 20 个不同的 booru 站点（见 [sites.json](./src/sites.json)）
- 将所有接收到的数据标准化为一致的 `Post` 对象
- 也可以访问从 booru 接收的原始数据（从 XML 转换为 JSON，如果适用）
- 对 boorus 的别名支持（`sb` -> `safebooru.org`）
- Promises
- 类型（使用 Typescript）
- 选择要获取的图像数量
- 支持随机作品，在支持它的站点上使用 `order:random`，在不支持它的站点上使用自定义代码
- 支持 Node.js 与浏览器（在不跨域的情况下）

---

## 安装

```sh
npm i @himeka/booru
# 或
yarn add @himeka/booru
```

---

## 使用

```js
const Booru = require('@himeka/booru')

Booru.search('safebooru', ['glaceon'], { limit: 3, random: true }).then(
  posts => {
    for (let post of posts) console.log(post.fileUrl, post.postView)
  },
)

// or (using alias support and creating boorus)
const sb = Booru.forSite('sb')

sb.search(['cat', 'dog'], { limit: 2 })
```

详见 [example.js](./example.js)

---

## 文档

点击查看: [docs](https://asadahimeka.github.io/booru-search)

## 浏览器支持

booru 主要是为 Node.js 构建的，浏览器支持可能有限。
可以使用 webpack（或类似工具）在 web 上使用 booru，尽管体验可能会有所不同。
某些网站没有正确的 CORS 标头，这意味着从浏览器对这些网站的 API 请求将失败，需要自行解决跨域问题。

对于不支持 CORS 的站点，有如下两种方式解决

- 定义全局方法 `BOORU_FETCH_PROXY` 来处理请求 URL，注意代码要放到调用 `Booru.search` 之前。

```js
// 替换成你自己的 CORS 代理
globalThis.BOORU_FETCH_PROXY = u => `https://cors.example.com/${u}`
```

- 或者可以按如下代码 hack 一下，注意这段代码要放到引用 `@himeka/booru` 之前。

下面例子的 CORS 代理需要支持 `https://cors.example.com/https://konachan.net/post.json` 形式的调用。

```js
const _fetch = window.fetch
const proxy = 'https://cors.example.com/' // 替换成你自己的 CORS 代理
window.fetch = (input, init) => {
  let url = input.toString()
  if (url.startsWith('https')) { // 自行处理条件
    url = proxy + url // 自行处理为代理所需要的格式
  }
  return _fetch(url, init)
}
```

## FAQ

### `Post` 有什么属性？

`Post` 的基本结构如下:

```js
Post {
  _data: {/*...*/},                       // 站点 API 返回的原始数据
  fileUrl: 'https://aaaa.com/img.jpg',    // 作品的原文件（大图）链接
  id: '124125',                           // 作品 ID
  tags: ['cat', 'cute'],                  // 作品标签，以数组表示
  score: 5,                               // 作品的评分
  source: 'https://ex.com/aaa.png',       // 作品的来源链接（Pixiv、Twitter 等，如果有的话）
  rating: 's',                            // 作品的分级（R18、存疑、安全）
  createdAt: Date,                        // 作品创建日期
  postView: 'https://booru.ex/show/12345' // 作品的站点详情页面
}
```

`s`: 'Safe'
`q`: 'Questionable'
`e`: 'Explicit'
`u`: 'Unrated'

Derpibooru 会有 `Safe, Suggestive, Questionable, Explicit`,  `Suggestive` 会在 `<Post>.rating` 显示为`q`

### Why?

Why not?

### License?

[It's MIT](https://choosealicense.com/licenses/mit/)
npm package: @himenon/argo-rollouts-typescript-openapi
Description: Implementation of TypeScript generated from argo-rollouts OpenAPI
Author: Himenon
Latest version: 1.1.3

# @himenon/argo-rollouts-typescript-openapi

```bash
npm  i   @himenon/argo-rollouts-typescript-openapi
pnpm i   @himenon/argo-rollouts-typescript-openapi
yarn add @himenon/argo-rollouts-typescript-openapi
```

## Usage

```ts
import * as fs from "fs";
import * as yaml from "js-yaml"; // pnpm i -D js-yaml @types/js-yaml
import type { Schemas } from "@himenon/argo-rollouts-typescript-openapi/v1.22.3";
```

## Build

```ts
pnpm run build
```

## Update Schemas

```bash
# Fetch and Build
pnpm run build:all

# Fetch schemas
pnpm run fetch:schemas

# Generate source code
pnpm run generate:code
```

## OpenAPI Source for argo-rollouts

- <https://github.com/argoproj/argo-rollouts/blob/master/pkg/apiclient/rollout/rollout.swagger.json>

## OpenAPI TypeScript Code Generator

- [@himenon/openapi-typescript-code-generator](https://github.com/Himenon/openapi-typescript-code-generator)

You can also just use the type definition

## Use Another Version

Edit [config.ts](./scripts/config.ts)

## LICENCE

[@Himenon/argo-rollouts-typescript-openapi](https://github.com/Himenon/argo-rollouts-typescript-openapi)・MIT
npm package: @himenon/argocd-typescript-openapi
Description: Implementation of TypeScript generated from argocd OpenAPI
Author: Himenon
Latest version: 1.2.2

# @himenon/argocd-typescript-openapi

```bash
npm  i   @himenon/argocd-typescript-openapi
pnpm i   @himenon/argocd-typescript-openapi
yarn add @himenon/argocd-typescript-openapi
```

## Usage

```ts
import * as fs from "fs";
import * as yaml from "js-yaml"; // pnpm i -D js-yaml @types/js-yaml
import type { Schemas } from "@himenon/argocd-typescript-openapi/dist/v2.9.6";
```

## Build

```ts
pnpm run build
```

## Update Schemas

```bash
# Fetch and Build
pnpm run build:all

# Fetch schemas
pnpm run fetch:schemas

# Generate source code
pnpm run generate:code
```

## OpenAPI Source for ArgoCD

- <https://github.com/argoproj/argo-cd/blob/master/assets/swagger.json>

## OpenAPI TypeScript Code Generator

- [@himenon/openapi-typescript-code-generator](https://github.com/Himenon/openapi-typescript-code-generator)

You can also just use the type definition

## Use Another Version

Edit [config.ts](./scripts/config.ts)

## LICENCE

[@Himenon/argocd-typescript-openapi](https://github.com/Himenon/argocd-typescript-openapi)・MIT
npm package: @himenon/atlassian-jira-typescript-openapi
Description: Implementation of TypeScript generated from argocd OpenAPI
Author: Himenon
Latest version: 1.1.1

# @himenon/atlassian-jira-typescript-openapi

```bash
yarn add -D @himenon/atlassian-jira-typescript-openapi
```

## Usage

```ts
import * as fs from "fs";
import type { Schemas, Client } from "@himenon/atlassian-jira-typescript-openapi/v3";
```

## Build

```ts
yarn run build
```

## Update Schemas

```bash
# Fetch and Build
yarn run build:all

# Fetch schemas
yarn run fetch:schemas

# Generate source code
yarn run generate:code
```

## OpenAPI Source for ArgoCD

- <https://developer.atlassian.com/cloud/jira/platform/swagger-v3.v3.json>

## OpenAPI TypeScript Code Generator

- [@himenon/openapi-typescript-code-generator](https://github.com/Himenon/openapi-typescript-code-generator)

You can also just use the type definition

## Use Another Version

Edit [config.ts](./scripts/config.ts)

## LICENCE

[@Himenon/atlassian-jira-typescript-openapi](https://github.com/Himenon/atlassian-jira-typescript-openapi)・MIT
npm package: @himenon/claude-commit-msg-gen
Description: Claude API を使って git diff から Conventional Commits 形式のコミットメッセージを自動生成する CLI ツール
Author: K.Himeno
Latest version: 0.1.6

# claude-commit-msg-gen

[Claude API](https://www.anthropic.com/) と [Lefthook](https://lefthook.dev/) を組み合わせ、`git commit` 時に Conventional Commits 形式のコミットメッセージを自動生成するツールです。

構造・設計の詳細は [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) を参照してください。

## セットアップ

```sh
# 1. 本ライブラリのインストール
# Without Node.js. バージョン更新の際もこのスクリプトを一度実行する
curl -fsSL https://raw.githubusercontent.com/Himenon/claude-commit-msg-gen/main/scripts/install.sh | sh
# With Node.js
pnpm install -g @himenon/claude-commit-msg-gen

# Installできているか確認する
claude-commit-msg-gen --version

## 2. lefthookのインストール
brew install lefthook
# または
pnpm add -g lefthook

# 3. Anthropic API キーを設定
# .bashrc, .zshrc, .fish/config.fish
export ANTHROPIC_API_KEY="sk-ant-..."
```

## lefthookのセットアップ

`lefthook.yml`に以下の内容を記述し、`lefthook install`を実行する。

```yaml
prepare-commit-msg:
  jobs:
    - name: auto-commit-message
      run: claude-commit-msg-gen {1} {2}
      env:
        CLAUDE_MODEL: claude-haiku-4-5-20251001
        CLAUDE_MAX_TOKENS: "150"
```

`COMMIT_PROMPT` は省略可能です。省略した場合、Conventional Commits 形式のコミットメッセージを生成するデフォルトプロンプトが使用されます。

`COMMIT_LANGUAGE` でコミットメッセージの言語を切り替えられます。

| 値 | 言語 |
| -- | ---- |
| `ja`（デフォルト） | 日本語（subject は50文字以内） |
| `en` | 英語（subject は72文字以内） |

```yaml
      env:
        CLAUDE_MODEL: claude-haiku-4-5-20251001
        CLAUDE_MAX_TOKENS: "150"
        COMMIT_LANGUAGE: en  # 英語で生成する場合
```

プロジェクト固有のルールを追加したい場合は `COMMIT_PROMPT` で上書きできます。`COMMIT_PROMPT` を指定した場合、`COMMIT_LANGUAGE` は無視されます。

```yaml
      env:
        COMMIT_PROMPT: >
          以下のgit diffを分析し、Conventional Commits形式のコミットメッセージを1行だけ生成してください。
          （プロジェクト独自のルールをここに追加）
```


### lefthookをプロジェクトに含めたくない場合もしくは、プロジェクトのlefthookを汚染したくない場合

1. `.gitignore`に`lefthook-local.yml`を追加する
2. **lefthook-local.yml**に[lefthookのセットアップ](#lefthookのセットアップ)の内容を記述する
3. `lefthook install`を実行する。
npm package: @himenon/commit-message-parser
Description: commit message parser
Author: Himenon
Latest version: 1.0.1

# @himenon/commit-message-parser

commit message parser

## Usage

**Install**

```bash
npm  install @himenon/commit-message-parser
yarn add     @himenon/commit-message-parser
pnpm install @himenon/commit-message-parser
```

**API**

```ts
import { parseCommitMessage } from "@himenon/commit-message-parser";

parseCommitMessage("feat: new features");
{
  type: "feat",
  shortSummary: "new features",
  firstLineFullMessage: "feat: new features",
  parsed: ["type", "short-summary", "first-line"],
}

const tooLengthCommitMessage = `feat: abcdefg

body text
next body text`

parseCommitMessage(tooLengthCommitMessage);
{
  type: "feat",
  shortSummary: "abcdefg",
  firstLineFullMessage: "feat: abcdefg",
  parsed: ["type", "short-summary", "first-line", "body"],
  body: `body text
next body text`,
}
```

## Release

- Automatic version updates are performed when merged into the `main` branch.

## LICENCE

[@Himenon/commit-message-parser](https://github.com/Himenon/commit-message-parser)・MIT
npm package: @himenon/css-library-design-pattern
Description: Design patterns for the css/scss npm library.
Latest version: 0.0.2

# @himenon/css-library-design-pattern

Design patterns for the css/scss npm library.

## Usage

```bash
yarn add @himenon/css-library-design-pattern
```

### Example

[DEMO](https://codesandbox.io/s/css-library-design-pattern-196fp)

```scss
@import "~@himenon/css-library-design-pattern/A-Style";
```

or

```scss
@import "~@himenon/css-library-design-pattern/B-Style";
```

### Development

```bash
git clone https://github.com/Himenon/css-library-design-pattern.git
cd css-library-design-pattern
```

After navigating to an application that uses this library,

```bash
cd /your/app
yarn link @himenon/css-library-design-pattern
```

All you have to do is change the code in this library while you watch build your application.

### Release

release version

```bash
yarn run lerna version --yes
```

### Revert release (before execute GitHub Actions)

reset version

```bash
git tag -d [tag]
git push origin :[tag]
```

## LICENSE

@himenon/css-library-design-pattern is [MIT licensed](./LICENSE).
npm package: @himenon/datadog-typescript-openapi
Description: Implementation of TypeScript generated from DataDog OpenAPI
Author: Himenon
Latest version: 1.1.0

# @himenon/datadog-typescript-openapi

```bash
# yarn
yarn add -D @himenon/datadog-typescript-openapi

# pnpm
pnpm add -D @himenon/datadog-typescript-openapi
```

## Usage

```ts
import { Client } from "@himenon/datadog-typescript-openapi/v1.22.3";
```

## Build

```ts
pnpm build
```

## OpenAPI Source for DataDog

- <https://github.com/DataDog/datadog-api-client-typescript/tree/master/.generator/schemas/v2>

## OpenAPI TypeScript Code Generator

- [@himenon/openapi-typescript-code-generator](https://github.com/Himenon/openapi-typescript-code-generator)

You can also just use the type definition

## Use Another Version

Edit [config.ts](./scripts/config.ts)

## LICENCE

[@Himenon/datadog-typescript-openapi](https://github.com/Himenon/datadog-typescript-openapi)・MIT
npm package: @himenon/directory-proxy-design-pattern
Description: director proxy pattern
Latest version: 0.0.1

# @himenon/directory-proxy-design-pattern


An example where the library supports cjs and esm, but provides a single module format for the user.

|Registry|Status|
|:-------|:-----|
|GitHub|[![GitHub version](https://badge.fury.io/gh/Himenon%2Fdirectory-proxy-design-pattern.svg)](https://badge.fury.io/gh/Himenon%2Fdirectory-proxy-design-pattern)|
|npm|[![npm version](https://badge.fury.io/js/%40himenon%2Fdirectory-proxy-design-pattern.svg)](https://badge.fury.io/js/%40himenon%2Fdirectory-proxy-design-pattern)|

## Usage

```bash
yarn add @himenon/directory-proxy-design-pattern
```

### All import

```ts
import * as Lib from "@himenon/directory-proxy-design-pattern";

Lib.PackageA.exec();
Lib.PackageB.exec();
```

### Individual import

```ts
import * as PackageA from "@himenon/directory-proxy-design-pattern/PackageA";
import * as PackageB from "@himenon/directory-proxy-design-pattern/PackageB";

PackageA.exec();
PackageB.exec();
```

## Development

### Release

release version

```bash
yarn run lerna version --yes
```

### Revert release (before execute GitHub Actions)

reset version

```bash
git tag -d [tag]
git push origin :[tag]
```

## Reference

* https://www.npmjs.com/package/cherry-pick
* https://developers.livechat.com/updates/how-to-create-javascript-libraries-in-2018-part-2#proxy-directories

## LICENSE

@himenon/directory-proxy-design-pattern is [MIT licensed](./LICENSE).
npm package: @himenon/divide-package-namespace
Description: |Registry|Status| |:-------|:-----| |GitHub|[![GitHub version](https://badge.fury.io/gh/Himenon%2Fdivide-package-namespace.svg)](https://badge.fury.io/gh/Himenon%2Fdivide-package-namespace)| |npm|[![npm version](https://badge.fury.io/js/%40himenon%2Fdivid
Latest version: 0.1.2

# @himenon/divide-package-namespace

|Registry|Status|
|:-------|:-----|
|GitHub|[![GitHub version](https://badge.fury.io/gh/Himenon%2Fdivide-package-namespace.svg)](https://badge.fury.io/gh/Himenon%2Fdivide-package-namespace)|
|npm|[![npm version](https://badge.fury.io/js/%40himenon%2Fdivide-package-namespace.svg)](https://badge.fury.io/js/%40himenon%2Fdivide-package-namespace)|

## Development

### Release

release version

```bash
yarn run lerna version --yes
```

### Revert release (before execute GitHub Actions)

reset version

```bash
git tag -d [tag]
git push origin :[tag]
```

## LICENSE

@himenon/divide-package-namespace is [MIT licensed](./LICENSE).
npm package: @himenon/exectime
Description: Tool to measure execution time of CLI and JavaScript
Author: Himenon
Latest version: 0.2.1

# @himenon/exectime

Tool to measure execution time of CLI and JavaScript.
It supports both the browser and NodeJS environments.

## Install

```bash
yarn global add @himenon/exectime
```

## CLI

```ts
export EXECTIME_OUTPUT_PATH="performance.json"
export EXECTIME_NAME="my"

// Use environment settings
exectime -c "sleep 2"

// Use argument settings
exectime -n "sleepCommand" -o "exectime.json" -c "sleep 5"
```

### Show current settings

```bash
$ exectime -n "sleepCommand" -o "exectime.json" -c "sleep 5" --show info,command,settings
output file path : exectime.json
name             : sleepCommand
command          : sleep 5
Show message type: info, command, settings
```

## API

```ts
import * as Exectime from "@himenon/exectime";

const wait = async ms => new Promise(resolve => setTimeout(resolve, ms));
const perfWait = Exectime.wrapAsync(wait, { name: "wait", label: "timer" });
await Promise.all([perfWait(1000), perfWait(500), perfWait(1200), perfWait(1300)]);
await Exectime.getResult();
```

## Development

| scripts                   | description                                 |
| :------------------------ | :------------------------------------------ |
| `build`                   | typescript build and create proxy directory |
| `clean`                   | clean up                                    |
| `format:code`             | prettier                                    |
| `format:yarn:lock`        | yarn.lock deduplicate                       |
| `lerna:version:up`        | lerna version up                            |
| `test`                    | execute test:depcruise, test:jest           |
| `test:depcruise`          | dependency-cruiser's test                   |
| `test:jest`               | jest test                                   |
| `ts`                      | execute ts-node                             |
| `release:github:registry` | publish GitHub registry                     |
| `release:npm:registry`    | publish npm registry                        |

## Features

- [Proxy Directory](https://himenon.github.io/docs/javascript/proxy-directory-design-pattern/)

## Release

- Automatic version updates are performed when merged into the `main` branch.

## LICENCE

[@himenon/exectime](https://github.com/Himenon/exectime-js)・MIT
npm package: @himenon/generator-node-lib
Description: Node library template generator.
Author: Himenon
Latest version: 0.1.0

# generator-node-lib

[![npm version](https://badgen.net/npm/v/@himenon/generator-node-lib)](https://npm.im/@himenon/generator-node-lib)
[![Build Status](https://travis-ci.com/himenon/generator-node-lib.svg?branch=master)](https://travis-ci.com/himenon/generator-node-lib)
[![codecov](https://codecov.io/gh/himenon/generator-node-lib/branch/master/graph/badge.svg)](https://codecov.io/gh/himenon/generator-node-lib)
[![dependencies Status](https://david-dm.org/himenon/generator-node-lib/status.svg)](https://david-dm.org/himenon/generator-node-lib)
[![devDependencies Status](https://david-dm.org/himenon/generator-node-lib/dev-status.svg)](https://david-dm.org/himenon/generator-node-lib?type=dev)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)

Node library template generator.

## Features

- typescript
- jest
- prettier
- husky
- eslint

## Usage

```sh
npm i -g yo @himenon/generator-node-lib
```

```sh
yo @himenon/node-lib
```

## Development

```sh
git clone https://github.com/Himenon/generator-node-lib.git
yarn
yarn run build
yarn link
```

## License

MIT &copy; [Himenon](https://github.com/Himenon)
npm package: @himenon/generator-react-app
Description: React Application bootstrap.
Author: Himenon
Latest version: 0.3.0

# generator-react-app

[![npm version](https://badgen.net/npm/v/@himenon/generator-react-app)](https://npm.im/@himenon/generator-react-app)
[![Build Status](https://travis-ci.com/himenon/generator-react-app.svg?branch=master)](https://travis-ci.com/himenon/generator-react-app)
[![codecov](https://codecov.io/gh/himenon/generator-react-app/branch/master/graph/badge.svg)](https://codecov.io/gh/himenon/generator-react-app)
[![dependencies Status](https://david-dm.org/himenon/generator-react-app/status.svg)](https://david-dm.org/himenon/generator-react-app)
[![devDependencies Status](https://david-dm.org/himenon/generator-react-app/dev-status.svg)](https://david-dm.org/himenon/generator-react-app?type=dev)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)

Create React App for TypeScript Version.

## Features

[create-react-app](https://github.com/facebook/create-react-app) base yeoman generator.

* TypeScript + webpack
* Build system.

## Usage

```sh
npm i -g yo @himenon/generator-react-app

# yarn
yarn global add yo @himenon/generator-react-app
```

```sh
yo @himenon/react-app
```

## Development

```sh
git clone https://github.com/himenon/generator-react-app.git
yarn
yarn run build
yarn link
```

Check

```
yo @himenon/react-app
```

## License

MIT &copy; [Himenon](https://github.com/Himenon)
npm package: @himenon/generator-tiny-react-app
Description: Tiny React Application bootstrap.
Author: Himenon
Latest version: 0.3.1

# @himenon/generator-tiny-react-app

[![npm version](https://badgen.net/npm/v/@himenon/generator-tiny-react-app)](https://npm.im/@himenon/generator-tiny-react-app)
[![Build Status](https://travis-ci.com/Himenon/generator-tiny-react-app.svg?branch=master)](https://travis-ci.com/Himenon/generator-tiny-react-app)
[![codecov](https://codecov.io/gh/Himenon/generator-tiny-react-app/branch/master/graph/badge.svg)](https://codecov.io/gh/himenon/generator-tiny-react-app)
[![dependencies Status](https://david-dm.org/Himenon/generator-tiny-react-app/status.svg)](https://david-dm.org/Himenon/generator-tiny-react-app)
[![devDependencies Status](https://david-dm.org/Himenon/generator-tiny-react-app/dev-status.svg)](https://david-dm.org/Himenon/generator-tiny-react-app?type=dev)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)

## Usage

```sh
npm i -g yo @himenon/generator-tiny-react-app

# yarn
yarn global add yo @himenon/generator-tiny-react-app
```

```sh
yo @himenon/tiny-react-app
```

## Development

```sh
git clone https://github.com/Himenon/generator-tiny-react-app.git
yarn
yarn run build
yarn link
```

Check

```
yo @himenon/tiny-react-app
```

## License

MIT &copy; [Himenon](https://github.com/Himenon)
npm package: @himenon/git-control-js
Description: GitHub control JS
Author: Himenon
Latest version: 0.6.1

# @himenon/git-control-js

## Install

```
yarn add @himenon/git-control-js
```

## Development

| scripts                   | description                                 |
| :------------------------ | :------------------------------------------ |
| `build`                   | typescript build and create proxy directory |
| `clean`                   | clean up                                    |
| `format:code`             | prettier                                    |
| `format:yarn:lock`        | yarn.lock deduplicate                       |
| `lerna:version:up`        | lerna version up                            |
| `test`                    | execute test:depcruise, test:jest           |
| `test:depcruise`          | dependency-cruiser's test                   |
| `test:jest`               | jest test                                   |
| `ts`                      | execute ts-node                             |
| `release:github:registry` | publish github registry                     |
| `release:npm:registry`    | publish npm registry                        |

## Features

- [Proxy Directory](https://himenon.github.io/docs/javascript/proxy-directory-design-pattern/)

## Release

- Automatic version updates are performed when merged into the `main` branch.

## LICENCE

[@himenon-git-control-js](https://github.com/Himenon/git-control-js)・MIT
npm package: @himenon/github-api-create-commit
Description: Create a Commit to GitHub via WebAPI
Author: Himenon
Latest version: 2.1.3

# @himenon/github-api-create-commit

Create a Commit to GitHub via WebAPI.

## Install

```bash
yarn add @himenon/github-api-create-commit

pnpm add @himenon/github-api-create-commit
```

## Usage

```ts
import * as GitHubApiCreateCommit from "@himenon/github-api-create-commit";

const github = GitHubApiCreateCommit.create({
  owner: "Himenon",
  repo: "github-api-create-commit",
  accessToken: "",
});

await github.createGitCommit({
  baseBranchName: "master",
  headBranchName: "develop",
  commitMessage: "feat: add markdown file",
  files: [
    {
      path: "hello-world.md",
      content: "# Hello world",
    },
  ],
});
```

**Shell scripts with the same meaning**

```bash
git checkout -b develop origin/master
echo "# Hello world" > hello-world.md
git add hello-world.md
git commit -m "feat: add markdown file"
git push develop
```

## LICENCE

[@Himenon/github-api-create-commit](https://github.com/Himenon/github-api-create-commit)・MIT
npm package: @himenon/github-storage-js
Description: GitHub Storage JS
Author: Himenon
Latest version: 0.0.4

# @himenon/github-storage-js

## Install

```
yarn add @himenon/github-storage-js
```

## Development

| scripts                   | description                                 |
| :------------------------ | :------------------------------------------ |
| `build`                   | typescript build and create proxy directory |
| `clean`                   | clean up                                    |
| `format:code`             | prettier                                    |
| `format:yarn:lock`        | yarn.lock deduplicate                       |
| `lerna:version:up`        | lerna version up                            |
| `test`                    | execute test:depcruise, test:jest           |
| `test:depcruise`          | dependency-cruiser's test                   |
| `test:jest`               | jest test                                   |
| `ts`                      | execute ts-node                             |
| `release:github:registry` | publish github registry                     |
| `release:npm:registry`    | publish npm registry                        |

## Features

- [Proxy Directory](https://himenon.github.io/docs/javascript/proxy-directory-design-pattern/)

## Release

- Automatic version updates are performed when merged into the `default` branch.

## LICENCE

[@himenon-github-storage-js](https://github.com/Himenon/github-storage-js)・MIT
npm package: @himenon/jsonschema2ts
Description: TypeScript type definition generator from JSON Schema.
Author: Himenon
Latest version: 0.1.1

# @himenon/jsonschema2ts

Output TypeScript type definition from jsonschema.

## Usage

### `generateFromJsonSchema`

```ts
import { generateFromJsonSchema } from "@himenon/jsonschema2ts";

const jsonSchema = {}; // your json schema
const code = generateFromJsonSchema(jsonSchema); // or yaml
```

### `generateFromFile`

```ts
import { generateFromJsonSchema } from "@himenon/jsonschema2ts";

const code = generateFromJsonSchema("your/file/path.json"); // or yaml
```

## Example

### Only local reference

[JSON Input](./test/schema/only-local-ref-root.json)

**Output**

```ts
export type LocalReferenceString = string;
export type StringType = string;
export type StringHasEnumType = "a" | "A" | "b" | "B" | "あ" | "ア" | "い" | "イ" | "漢" | "字";
export type NumberType = number;
export type BooleanType = boolean;
export type ArrayType = string[];
export type OneOfType = string | number | boolean;
export type AllOfType = string & number & boolean;
export interface ObjectType {
  stringType: string;
  numberType?: number;
  booleanType: boolean;
  arrayType?: string[];
}
export type RefToDefinitionString = LocalReferenceString;
export type RefToPropertyString = StringType;
```

### Use Remote reference

[JSON Input](./test/schema/remote-ref-root.json)

```ts
export interface Book {
  title?: string;
}
export type Books = Book[];
export namespace Params {
  export type B = string;
  export interface A {
    B?: B;
  }
}
export type A = Params.A;
```

## LICENCE

[@himenon-node-lib-template](https://github.com/Himenon/jsonschema2ts)・MIT
npm package: @himenon/kubernetes-typescript-openapi
Description: Implementation of TypeScript generated from Kubernetes OpenAPI
Author: Himenon
Latest version: 2.1.1

# @himenon/kubernetes-typescript-openapi

```bash
npm  i   @himenon/kubernetes-typescript-openapi
# or
pnpm i   @himenon/kubernetes-typescript-openapi
# or
yarn add @himenon/kubernetes-typescript-openapi
```

## Usage

```ts
import * as fs from "fs";
import * as yaml from "js-yaml"; // yarn add js-yaml @types/js-yaml
import type { Schemas } from "@himenon/kubernetes-typescript-openapi/dist/v1.29.1";

const podTemplateSpec: Schemas.io$k8s$api$core$v1$PodTemplateSpec = {
  metadata: {
    labels: {
      app: "nginx",
    },
  },
  spec: {
    containers: [
      {
        name: "nginx",
        image: "nginx:1.14.2",
        ports: [
          {
            containerPort: 80,
          },
        ],
      },
    ],
  },
};

const deployment: Schemas.io$k8s$api$apps$v1$Deployment = {
  apiVersion: "apps/v1",
  kind: "Deployment",
  metadata: {
    name: "nginx-deployment",
    labels: {
      app: "nginx",
    },
  },
  spec: {
    replicas: 3,
    selector: {
      matchLabels: {
        app: "nginx",
      },
    },
    template: podTemplateSpec,
  },
};

const text = yaml.dump(deployment, { noRefs: true, lineWidth: 144 });
fs.writeFileSync("deployment.yml", text, "utf-8");
```

## Build

```ts
pnpm build
```

## OpenAPI Source for Kubernetes

- <https://github.com/kubernetes/kubernetes/blob/master/api/openapi-spec/swagger.json>

## OpenAPI TypeScript Code Generator

- [@himenon/openapi-typescript-code-generator](https://github.com/Himenon/openapi-typescript-code-generator)

You can also just use the type definition

## Use Another Version

Edit [config.ts](./scripts/config.ts)

## LICENCE

[@Himenon/kubernetes-typescript-openapi](https://github.com/Himenon/kubernetes-typescript-openapi)・MIT
npm package: @himenon/library-proxy-sample
Description: An example where the library supports cjs and esm, but provides a single module format for the user.
Latest version: 0.2.0

# @himenon/library-proxy-sample


An example where the library supports cjs and esm, but provides a single module format for the user.

|Registry|Status|
|:-------|:-----|
|GitHub|[![GitHub version](https://badge.fury.io/gh/Himenon%2Flibrary-proxy-sample.svg)](https://badge.fury.io/gh/Himenon%2Flibrary-proxy-sample)|
|npm|[![npm version](https://badge.fury.io/js/%40himenon%2Flibrary-proxy-sample.svg)](https://badge.fury.io/js/%40himenon%2Flibrary-proxy-sample)|

## Usage

```bash
yarn add @himenon/library-proxy-sample
```

### All import

```ts
import * as Lib from "@himenon/library-proxy-sample";

Lib.PackageA.exec();
Lib.PackageB.exec();
```

### Individual import

```ts
import * as PackageA from "@himenon/library-proxy-sample/PackageA";
import * as PackageB from "@himenon/library-proxy-sample/PackageB";

PackageA.exec();
PackageB.exec();
```

## Development

### Release

release version

```bash
yarn run lerna version --yes
```

### Revert release (before execute GitHub Actions)

reset version

```bash
git tag -d [tag]
git push origin :[tag]
```

## Reference

* https://www.npmjs.com/package/cherry-pick
* https://developers.livechat.com/updates/how-to-create-javascript-libraries-in-2018-part-2#proxy-directories

## LICENSE

@himenon/library-proxy-sample is [MIT licensed](./LICENSE).
npm package: @himenon/md2jira
Description: Convert markdown text to jira format
Author: Himenon
Latest version: 1.0.1

# @himenon/md2jira

Convert markdown text to jira format

## Usage

**Install**

```bash
npm  install @himenon/md2jira
yarn add     @himenon/md2jira
pnpm install @himenon/md2jira
```

**API**

```ts
import Md2jira from "@himenon/md2jira";

const markdownText = `
**[v1.0.0](http://example.com)**

* feat: update new features (#1)
* chore: update linter (#12)
* style: eslint format (#123)
* docs: update readme (#1234)

`;

Md2jira.convert(markdownText);
// *[v1.0.0|http://example.com]*
//
// * feat: update new features (#1)
// * chore: update linter (#12)
// * style: eslint format (#123)
// * docs: update readme (#1234)
```

## Release

- Automatic version updates are performed when merged into the `main` branch.

## LICENCE

[@Himenon/md2jira](https://github.com/Himenon/md2jira)・MIT
npm package: @himenon/message-command-parser
Description: Parse space- and colon-separated messages into parameters
Author: Himenon
Latest version: 2.0.0

# @himenon/message-command-parser

## Install

```bash
# One of:
npm  i   @himenon/message-command-parser
yarn add @himenon/message-command-parser
pnpm add @himenon/message-command-parser
```

## Usage

[Sample Code](./example/sample.ts) (`pnpm run test:sample`)

```ts
import { Parser } from "@himenon/message-command-parser";

const messageParser = new Parser({
  messageItems: [
    {
      command: "ping",
      description: "ping",
    },
    {
      command: "get release tags:string[]",
      description: "Get Release By Tags",
    },
  ],
});

const showParsedValue = (message: string) => {
  const parsedValue = messageParser.parse(message);

  if (parsedValue.kind === "plain") {
    console.log({
      message: parsedValue.message,
    });
  } else if (parsedValue.kind === "command") {
    console.log({
      action: parsedValue.action,
      actionTargets: parsedValue.actionTargets,
      parameters: parsedValue.parameters || {},
    });
  }
};

showParsedValue("get release tags:v1.0.0,v1.1.0");
// {
//   action: 'get',
//   actionTargets: [ 'release' ],
//   parameters: { tags: [ 'v1.0.0', 'v1.1.0' ] }
// }

showParsedValue("ping");
// { action: 'ping', actionTargets: [], parameters: {} }

showParsedValue("unregistered command");
// { message: 'unregistered command' }
```

## Release

- Automatic version updates are performed when merged into the `main` branch.

## LICENCE

[@Himenon/message-command-parser ](https://github.com/Himenon/message-command-parser)・MIT
npm package: @himenon/node-lib-template
Description: node library template
Author: Himenon
Latest version: 0.0.6

# @himenon/node-lib-template

## Usage

| scripts                   | description                                 |
| :------------------------ | :------------------------------------------ |
| `build`                   | typescript build and create proxy directory |
| `clean`                   | clean up                                    |
| `format:code`             | prettier                                    |
| `format:yarn:lock`        | yarn.lock deduplicate                       |
| `lerna:version:up`        | lerna version up                            |
| `test`                    | execute test:depcruise, test:jest           |
| `test:depcruise`          | dependency-cruiser's test                   |
| `test:jest`               | jest test                                   |
| `ts`                      | execute ts-node                             |
| `release:github:registry` | publish github registry                     |
| `release:npm:registry`    | publish npm registry                        |

## Features

- [Proxy Directory](https://himenon.github.io/docs/javascript/proxy-directory-design-pattern/)

## Release

- Automatic version updates are performed when merged into the `main` branch.

## LICENCE

[@himenon-node-lib-template](https://github.com/Himenon/node-lib-template)・MIT
npm package: @himenon/openai-typescript-openapi
Description: Implementation of TypeScript generated from openai OpenAPI
Author: Himenon
Latest version: 1.1.0

# @himenon/openai-typescript-openapi

```bash
npm  i   @himenon/openai-typescript-openapi
# or
pnpm i   @himenon/openai-typescript-openapi
# or
yarn add @himenon/openai-typescript-openapi
```

## Usage

```ts
import * as fs from "node:fs";
import { Client } from "@himenon/openai-typescript-openapi/dist/2.0.0";

const client = new Client(
  {
    request: {}, // your impl
  },
  "your/endpoint"
);

client.listModels();
```

## Build

```ts
pnpm build
```

## OpenAPI Source for openai

- <https://github.com/openai/openai/blob/master/api/openapi-spec/swagger.json>

## OpenAPI TypeScript Code Generator

- [@himenon/openapi-typescript-code-generator](https://github.com/Himenon/openapi-typescript-code-generator)

You can also just use the type definition

## Use Another Version

Edit [config.ts](./scripts/config.ts)

## LICENCE

[@Himenon/openai-typescript-openapi](https://github.com/Himenon/openai-typescript-openapi)・MIT
npm package: @himenon/openapi-parameter-formatter
Description: Serializes OpenAPI parameter objects.
Author: Himenon
Latest version: 2.1.0

# @himenon/openapi-parameter-formatter

A library that serializes OpenAPI parameter objects.
It is implemented according to the following style definition.

- https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#style-examples

## Usage

```ts
import { PathParameter } from "@himenon/openapi-parameter-formatter";

PathParameter.generate("color", {
  value: {
    R: 100,
    G: 200,
    B: 150,
  },
  style: "label",
  explode: true,
});
```

```ts
import { QueryParameter } from "@himenon/openapi-parameter-formatter";

QueryParameter.generate("color", {
  value: {
    R: "#100",
    G: "#200",
    B: "#150",
  },
  style: "form",
  explode: true,
});

// R=%23100&G=%23200&B=%23150
```

```ts
import { QueryParameter } from "@himenon/openapi-parameter-formatter";

QueryParameter.generate("color", {
  value: ["#blue", "#black", "#brown"],
  style: "spaceDelimited",
  explode: false,
});

// color=%23blue%20%23black%20%23brown
```

```ts
import { QueryParameter } from "@himenon/openapi-parameter-formatter";

QueryParameter.generate("color", {
  value: ["#blue", "#black", "#brown"],
  style: "pipeDelimited",
  explode: false,
});

// color=%23blue%7C%23black%7C%23brown
```

```ts
import { QueryParameter } from "@himenon/openapi-parameter-formatter";

QueryParameter.generate("color", {
  value: {
    R: 100,
    G: 200,
    B: 150,
  },
  style: "deepObject",
  explode: true,
});

// color%5BR%5D=100&color%5BG%5D=200&color%5BB%5D=150
```

```ts
import { HeaderParameter } from "@himenon/openapi-parameter-formatter";

HeaderParameter.generate("color", {
  value: ["blue", "black", "brown"],
  style: "simple",
  explode: false,
});
// "blue,black,brown"
```

```ts
import { CookieParameter } from "@himenon/openapi-parameter-formatter";

CookieParameter.generate("color", {
  value: ["blue", "black", "brown"],
  style: "form",
  explode: false,
});
// "color=R,100,G,200,B,150"
```

## LICENCE

[@himenon/openapi-parameter-formatter](https://github.com/Himenon/openapi-parameter-formatter)・MIT
npm package: @himenon/openapi-typescript-practice
Description: OpenAPIを利用したAPI作成と、開発、リリースフローまでの仕組みづくりの練習
Latest version: 0.1.2

# TypeScript のプロジェクトで OpenAPI を利用するための手法の整理

| Registry | Status                                                                                                                                                     |
| :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |
| npm      | [![npm version](https://badge.fury.io/js/%40himenon%2Fopenapi-typescript-practice.svg)](https://badge.fury.io/js/%40himenon%2Fopenapi-typescript-practice) |

## Development

### package.json scripts

```json
{
  "build": "build code and generate docs",
  "cherry-pick": "Create Proxy Directories",
  "clean": "clean up",
  "copy:lib": "copy files to release directory",
  "mock:server": "yarn run mock:server endpoints/Article/index.yml",
  "tsc:build:cjs": "Generate Commonjs",
  "tsc:build:esm": "Generate ES module",
  "tsc:build:types": "Generate Type definition only",
  "release:github:registry": "publish github for registry",
  "release:npm:registry": "publish for npm registry"
}
```

### Release

release version

```bash
yarn run lerna version --yes
```

## Tools

### Preview

#### Realtime

- https://marketplace.visualstudio.com/items?itemName=philosowaffle.openapi-designer

#### Docker

```bash
yarn run swagger:server
```

- https://hub.docker.com/r/swaggerapi/swagger-ui/

### API Mock Server (PORT 4000)

```bash
yarn run prism:server
```

- https://www.npmjs.com/package/@stoplight/prism-cli
- https://github.com/stoplightio/prism

### Static Document Generator

- https://github.com/Redocly/redoc
- https://www.npmjs.com/package/redoc-cli

### Linter

- https://marketplace.visualstudio.com/items?itemName=mermade.openapi-lint

### Formatter

- [prettier](https://www.npmjs.com/package/prettier)

## Development Flow

- `src/`の yml を編集時、OpenApi Preview で確認
- API MockServer を起動して、API の疎通確認

## Build Flow

- `openapi-generator-cli`を利用して、`dist/`以下にコードを自動生成

## Trouble Shooting

### openapi-generator

#### `Cannot find name 'GlobalFetch'.`

```bash
--additional-properties=typescriptThreePlus=true
```

- https://github.com/OpenAPITools/openapi-generator/issues/3869#issuecomment-584152932

## Reference

- [VSCode でリファクタリング・保守する OpenAPI - Qiita](https://qiita.com/tMinami/items/5b1a921e82b4c7979cd1)
- [俺的【OAS】との向き合い方 (爆速で OpenAPI と友達になろう)](https://tech-blog.optim.co.jp/entry/2020/04/13/100000)

#### `WARN i.s.v.p.p.ExternalRefProcessor - A model for class Schema`

- ディレクトリ名に予約語を利用している場合に発生する
  - created
  - updated
  - deleted
  - entity
  - model

#### `[main] WARN o.o.c.ignore.CodegenIgnoreProcessor - Output directory does not exist, or is inaccessible. No file (.openapi-generator-ignore) will be evaluated.`

対応中

## LICENSE

MIT
npm package: @himenon/performance-report
Description: generate file size diff from github
Author: Himenon
Latest version: 0.5.3

# @himenon/performance-report

## Usage

| scripts                   | description                                 |
| :------------------------ | :------------------------------------------ |
| `build`                   | typescript build and create proxy directory |
| `clean`                   | clean up                                    |
| `format:code`             | prettier                                    |
| `format:yarn:lock`        | yarn.lock deduplicate                       |
| `lerna:version:up`        | lerna version up                            |
| `test`                    | execute test:depcruise, test:jest           |
| `test:depcruise`          | dependency-cruiser's test                   |
| `test:jest`               | jest test                                   |
| `ts`                      | execute ts-node                             |
| `release:github:registry` | publish github registry                     |
| `release:npm:registry`    | publish npm registry                        |

## Features

- [Proxy Directory](https://himenon.github.io/docs/javascript/proxy-directory-design-pattern/)

## Release

- Automatic version updates are performed when merged into the `main` branch.

## LICENCE

[@@himenon/performance-report](https://github.com/Himenon/performance-report)・MIT
npm package: @himenon/proxy-directory-design-pattern
Description: proxy directory pattern
Latest version: 0.0.3

# @himenon/proxy-directory-design-pattern


An example where the library supports cjs and esm, but provides a single module format for the user.

|Registry|Status|
|:-------|:-----|
|GitHub|[![GitHub version](https://badge.fury.io/gh/Himenon%2Fproxy-directory-design-pattern.svg)](https://badge.fury.io/gh/Himenon%2Fproxy-directory-design-pattern)|
|npm|[![npm version](https://badge.fury.io/js/%40himenon%2Fproxy-directory-design-pattern.svg)](https://badge.fury.io/js/%40himenon%2Fproxy-directory-design-pattern)|

## Usage

```bash
yarn add @himenon/proxy-directory-design-pattern
```

### All import

```ts
import * as Lib from "@himenon/proxy-directory-design-pattern";

Lib.PackageA.exec();
Lib.PackageB.exec();
```

### Individual import

```ts
import * as PackageA from "@himenon/proxy-directory-design-pattern/PackageA";
import * as PackageB from "@himenon/proxy-directory-design-pattern/PackageB";

PackageA.exec();
PackageB.exec();
```

## Development

### Release

release version

```bash
yarn run lerna version --yes
```

### Revert release (before execute GitHub Actions)

reset version

```bash
git tag -d [tag]
git push origin :[tag]
```

## Reference

* https://www.npmjs.com/package/cherry-pick
* https://developers.livechat.com/updates/how-to-create-javascript-libraries-in-2018-part-2#proxy-directories

## LICENSE

@himenon/proxy-directory-design-pattern is [MIT licensed](./LICENSE).
npm package: @himenon/recursive-add-prefix
Description: Recursively add prefix
Author: Himenon
Latest version: 0.1.16

# [@himenon/recursive-add-prefix](https://github.com/Himenon/recursive-add-prefix)

[![npm version](https://badgen.net/npm/v/@himenon/recursive-add-prefix)](https://npm.im/@himenon/recursive-add-prefix)

## Usage

```bash
yarn add recursive-add-prefix
```

```ts
import { addPrefix } from "@himenon/recursive-add-prefix";

const pathMap = {
  a: "/a/b/c",
  b: {
    c: "/abc",
  },
};

addPrefix("https://example.com", pathMap);
// {
//   a: "https://example.com/a/b/c",
//   b: {
//     c: "https://example.com/abc",
//   },
// }
```

## License

MIT
npm package: @himenon/sharp-to-markdown-link
Description: Replace numbers starting with # with markdown links
Author: Himenon
Latest version: 1.0.1

# @himenon/sharp-to-markdown-link

Replace numbers starting with # with markdown links

## Usage

**Install**

```bash
npm  install @himenon/sharp-to-markdown-link
yarn add     @himenon/sharp-to-markdown-link
pnpm install @himenon/sharp-to-markdown-link
```

**API**

```ts
import { sharpToMdLink } from "@himenon/sharp-to-markdown-link";

sharpToMdLink("https://example.com/pull", "#123");
// => [#123](https://example.com/pull/123)

sharpToMdLink("https://example.com/pull", "#123 #124 #125");
// => [#123](https://example.com/pull/123) [#124](https://example.com/pull/124) [#125](https://example.com/pull/125)
```

## Release

- Automatic version updates are performed when merged into the `main` branch.

## LICENCE

[@Himenon/sharp-to-markdown-link](https://github.com/Himenon/template-esm-js)・MIT
npm package: @himenon/template-esm-js
Description: ESModule Library Template
Author: Himenon
Latest version: 1.2.4

# @himenon/template-esm-js

## Release

- Automatic version updates are performed when merged into the `main` branch.

## LICENCE

[@Himenon/template-esm-js](https://github.com/Himenon/template-esm-js)・MIT