open-index/open-npm huggingface dataset:
npm package: @loudsrl/turf
Description: a JavaScript library for performing geospatial operations with GeoJSON
Author: Turf Authors
Latest version: 6.3.3

# @turf/turf

# turf

Turf is a modular geospatial analysis engine written in JavaScript. It performs geospatial
processing tasks with GeoJSON data and can be run on a server or in a browser.

<!-- This file is automatically generated. Please don't edit it directly:
if you find an error, edit the source file (likely index.js), and re-run
./scripts/generate-readmes in the turf project. -->

---

This module is part of the [Turfjs project](http://turfjs.org/), an open source
module collection dedicated to geographic algorithms. It is maintained in the
[Turfjs/turf](https://github.com/Turfjs/turf) repository, where you can create
PRs and issues.

### Installation

Install this module individually:

```sh
$ npm install @turf/turf
```

Or install the Turf module that includes it as a function:

```sh
$ npm install @turf/turf
```
npm package: @loudsrl/unkink-polygon
Description: turf unkink-polygon module
Author: Turf Authors
Latest version: 6.3.0

# @turf/unkink-polygon

<!-- Generated by documentation.js. Update this documentation by updating the source code. -->

## unkinkPolygon

Takes a kinked polygon and returns a feature collection of polygons that have no kinks.
Uses [simplepolygon][1] internally.

**Parameters**

-   `geojson` **([FeatureCollection][2] \| [Feature][3]&lt;([Polygon][4] \| [MultiPolygon][5])>)** GeoJSON Polygon or MultiPolygon

**Examples**

```javascript
var poly = turf.polygon([[[0, 0], [2, 0], [0, 2], [2, 2], [0, 0]]]);

var result = turf.unkinkPolygon(poly);

//addToMap
var addToMap = [poly, result]
```

Returns **[FeatureCollection][2]&lt;[Polygon][4]>** Unkinked polygons

[1]: https://github.com/mclaeysb/simplepolygon

[2]: https://tools.ietf.org/html/rfc7946#section-3.3

[3]: https://tools.ietf.org/html/rfc7946#section-3.2

[4]: https://tools.ietf.org/html/rfc7946#section-3.1.6

[5]: https://tools.ietf.org/html/rfc7946#section-3.1.7

<!-- This file is automatically generated. Please don't edit it directly:
if you find an error, edit the source file (likely index.js), and re-run
./scripts/generate-readmes in the turf project. -->

---

This module is part of the [Turfjs project](http://turfjs.org/), an open source
module collection dedicated to geographic algorithms. It is maintained in the
[Turfjs/turf](https://github.com/Turfjs/turf) repository, where you can create
PRs and issues.

### Installation

Install this module individually:

```sh
$ npm install @turf/unkink-polygon
```

Or install the Turf module that includes it as a function:

```sh
$ npm install @turf/turf
```
npm package: @lough/build-cli
Description: This is a Build tool docked in lough.
Author: Lough
Latest version: 0.3.2

# @lough/build-cli

> This is a Build tool docked in lough.



## Feature

> `JavaScript` 开发中的代码打包构建及其功能自动化集成脚手架。

1. `lough-build init`: 自动化集成代码打包构建能力。
2. `lough-build`：支持以下类型项目打包构建：
   - `classLib`：类库项目
   - `componentLib`：组件库项目



## Install

```bash
npm i @lough/build-cli -g
```

or

```bash
yarn add @lough/build-cli -g
```



## Usage

我们来看看其有哪些命令：

```bash
> lough-build --help
Usage: index [options] [command]

Build.

Options:
  -V, --version  output the version number
  -h, --help     display help for command

Commands:
  init           init project build function.
```

`lough-build` 命令将会用于打包构建。

执行 `lough-build init` 即可运行我们的初始化程序。



## Plan

- [ ] 脚手架打包支持
- [ ] 生产项目开发及其打包支持
- [ ] 类库以及组件库 dev 模式支持
npm package: @lough/commitlint-config
Description: @lough/commitlint-config
Author: Lough
Latest version: 0.1.3

# @lough/commitlint-config

> Commitlint extends configuration.

## Install

```bash
npm i @lough/commitlint-config -D
```

or

```bash
yarn add @lough/commitlint-config -D
```

## Usage

> 以下为手动安装步骤，自动安装可使用 [Cli](https://github.com/lough-city/lough-lint/tree/main/packages/cli)

- 新建 `.commitlintrc.js` 文件，用于配置 `commitlint` 检测

```js
module.exports = {
  extends: ['@lough/commitlint-config']
}
```

- 安装 `git commit hooks`

```bash
npm install husky@7.0.2 lint-staged@11.1.2 -D
```

- 在 `package.json` 文件，添加 `npm prepare hooks`

```json
{
  "scripts": {
    "prepare": "husky install"
  },
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": ["eslint -c .eslintrc.js --ext .ts,.tsx"],
    "*.{css,less,scss,styl}": ["stylelint --config .stylelintrc.js *.{css,less,scss,styl}"]
  }
}
```

- 初始化 `husky`

```bash
npx husky install
```

- 在 `.husky/pre-commit` 文件，添加 `git pre-commit hooks`

```bash
npx lint-staged
```

- 在 `.husky/commit-msg` 文件，添加 `git commit-msg hooks`

```bash
npx --no-install commitlint --config .commitlintrc.js --edit $1
```
npm package: @lough/eslint-config
Description: @lough/eslint-config
Author: Lough
Latest version: 0.1.6

# @lough/eslint-config

> Eslint extends configuration.

## Install

```bash
npm i @lough/eslint-config -D
```

or

```bash
yarn add @lough/eslint-config -D
```

## Usage

> 以下为手动安装步骤，自动安装可使用 [Cli](https://github.com/lough-city/lough-lint/tree/main/packages/cli)

- 新建 `.eslintrc.js` 文件，用于配置 `eslint` 检测

> 支持: `typescript`, `react`, `node`, `base`

```js
module.exports = {
  extends: ['@lough/eslint-config/react']
}
```

- 新建 `.eslintignore` 文件，用于屏蔽 `eslint` 检测

```ignore
node_modules
build
dist
```

- 打开 `package.json` 文件，添加 `scripts`

```js
{
  "scripts": {
    "lint:es": "eslint -c .eslintrc.js --ext .ts,.tsx ./",
    "lint:es-fix": "eslint --fix -c .eslintrc.js --ext .ts,.tsx ./"
  }
}
```
npm package: @lough/git-changelog
Description: Lough git changelog.
Author: Lough
Latest version: 0.0.6

# @lough/git-changelog

> lough git changelog.



## Usage

```javascript
const gitChangeLog = new GitChangeLog({
  rootPath: options.projectPath,
  repo: options.repo,
  tagFilter: { match: options.tagMatch },
  logFilter: { changedDirOrFile: options.changedDir }
});

// 创建用户日志
gitChangeLog.createUserLog()
// 创建开发日志
gitChangeLog.createDevelopLog()
```



## API

```typescript
/**
 * Git ChangeLog 类参数
 */
export interface IGitChangeLogParameters {
  /**
   * 仓库地址
   * @default 通过 `git remote -v` 获取
   */
  repo?: string;
  /**
   * 项目根路径
   * @default process.cwd()
   */
  rootPath?: string;
  /**
   * 下一个版本
   * @default 'HEAD'
   */
  nextVersion?: string;
  /**
   * 标签筛选项
   * @example '*http*'
   */
  tagFilter?: string;
  /**
   * 日志筛选项（改变的目录或文件）
   * @example 'packages/cli'
   */
  logFilter?: string;
}
```
npm package: @lough/git-cli
Description: This is a Git tool docked in lough.
Author: Lough
Latest version: 0.0.6

# @lough/git-cli

> This is a Git tool docked in lough.

## Feature

> `JavaScript` 开发中的提交日志生成及其功能自动化集成脚手架。

1. `lough-git init`：自动化集成项目日志生成能力。

2. `lough-git changelog`: 支持生成以下代码日志：

   - 用户日志：主要给展现对象为用户，包含用户关心的提交类型如：`feat` `fix` ...

   - 开发日志：主要给展现对象为开发，包含开发关心的提交类型如：`chore` `ci` ...



## Install

```bash
npm i @lough/git-cli -g
```

or

```bash
yarn add @lough/git-cli -g
```



## Usage

我们来看看其有哪些命令：

```bash
> lough-git --help

Usage: index [options] [command]

Options:
  -V, --version        output the version number
  -h, --help           display help for command

Commands:
  init                 init project git log function
  changelog [options]  create git commit change log.
  help [command]       display help for command
```

执行 `lough-git init` 即可运行我们的初始化程序。

接下来看看 `lough-git chnagelog` 命令有哪些选项：

```bash
> lough-git changelog --help

Usage: index changelog [options]

create git commit change log.

Options:
  -o, --outputLogType [string...]  Output Log Type: Array<user | develop> (default: ["user","develop"])
  -p, --projectPath [string]       Project Root Path (default: "E:\\City\\lough\\lough-git")
  -r, --repo [string]              Repository
  -t, --tagMatch [string]          Tag Match
  -c, --changedDir [string]        Commit Changed Dir
  -h, --help                       display help for command
```



## Plan

欢迎大家共建。
npm package: @lough/git-operate
Description: Lough git operate.
Author: Lough
Latest version: 0.0.5

# @lough/git-operate

> lough git operate.



## Usage

`ts` 包就不详述其类型了，其内部都有，简单描述其作用：

```javascript
const git = new GitOperate();

// 获取提交记录
git.log.commit();

// 获取标签记录
git.log.tag();
```



## API

```typescript
/**
 * Git 操作类参数
 */
export interface IGitOperateParameters {
  /**
   * 项目根路径
   * @default process.cwd()
   */
  rootPath?: string;
}
```
npm package: @lough/npm-cli
Description: This is a NPM tool docked in lough.
Author: Lough
Latest version: 0.1.2

# @lough/git-cli

> This is a NPM tool docked in lough.

## Feature

> `JavaScript` 开发中的 `NPM` 自动化集成脚手架。

1. `lough-npm sort`: 自动化 `package.json` 排序功能.

## Install

```bash
npm i @lough/npm-cli --location=global
```

or

```bash
yarn add @lough/npm-cli --location=global
```

## Usage

我们来看看其有哪些命令：

```bash
> lough-npm --help
Usage: index [options] [command]

Options:
  -V, --version   output the version number
  -h, --help      display help for command

Commands:
  sort            Sort NPM package.json.
  help [command]  display help for command
```
npm package: @lough/npm-operate
Description: lough npm operate.
Author: Lough
Latest version: 0.3.2

# @lough/npm-operate

> lough git operate.



## Usage

1. 安装

   ```bash
   npm i @lough/git-operate
   ```

2. 使用

   ```javascript
   import { Package } from "@lough/npm-operate"
   
   const npm = new Package();
   ```



## API

```typescript
/**
 * Package 类参数
 */
export interface IPackageParameters {
  /**
   * 目录名称
   * @default process.cwd()
   */
  dirName?: string;
  /**
   * 配置文件名称
   * @default 'package.json'
   */
  configFileName?: string;
  /**
   * 是否工作空间
   * @description 默认判断 `dirName` 下 `package.json` `workspaces` 属性
   */
  isWorkspaces?: boolean;
  /**
   * 工作空间目录
   * @default `dirName`
   */
  workspacesDir?: string;
  /**
   * 是否工作区
   * @default false
   */
  isWorkspace?: boolean;
  /**
   * 相对工作空间目录
   * @default ''
   */
  relativeWorkspacesDir?: string;
  /**
   * 是否 Lerna 项目
   * @description 默认判断 `dirName` 下 `lerna.json`
   */
  isLerna?: boolean;
  /**
   * 是否 Yarn
   * @description 默认判断 `dirName` 下 `yarn.lock`
   */
  isYarn?: boolean;
}
```
npm package: @lough/stylelint-config
Description: @lough/stylelint-config
Author: Lough
Latest version: 0.1.4

# @lough/stylelint-config

> Stylelint extends configuration.

## Install

```bash
npm i @lough/stylelint-config -D
```

or

```bash
yarn add @lough/stylelint-config -D
```

## Usage

> 以下为手动安装步骤，自动安装可使用 [Cli](https://github.com/lough-city/lough-lint/tree/main/packages/cli)

- 新建 `.stylelintrc.js` 文件，用于配置 `stylelint` 检测

```js
module.exports = {
  extends: ['@lough/stylelint-config/react']
}
```

- 新建 `.stylelintignore` 文件，用于屏蔽 `stylelint` 检测

```ignore
node_modules
build
dist

*.tsx
*.ts
```

- 打开 `package.json` 文件，添加 `scripts`

```js
{
  "scripts": {
    "lint:style": "stylelint --config .stylelintrc.js ./**/*.{css,less,scss,styl}",
    "lint:style-fix": "stylelint --fix --config .stylelintrc.js ./**/*.{css,less,scss,styl}"
  }
}
```
npm package: @lough/tsconfig
Description: This is extends tsconfig in lough.
Author: Lough
Latest version: 0.0.6

# @lough/tsconfig

> This is extends tsconfig in lough.

## Feature

> Provide tsconfig extends.

- `typescript`: `@lough/tsconfig/typescript`

- `react`: `@lough/tsconfig/react`

- `node`: `@lough/tsconfig/node`
npm package: @louhaojie99/pro-components
Description: 基于 Ant Design 打造的高级组件库。
Latest version: 1.0.3

# @louhaojie99/pro-components

[![NPM version](https://img.shields.io/npm/v/@louhaojie99/pro-components.svg?style=flat)](https://npmjs.org/package/@louhaojie99/pro-components)
[![NPM downloads](http://img.shields.io/npm/dm/@louhaojie99/pro-components.svg?style=flat)](https://npmjs.org/package/@louhaojie99/pro-components)

基于 Ant Design 打造的高级组件库。

## 安装使用

准备了一份详细的[教程文档](https://louhaojie99.github.io/pro-components)

```bash
$ pnpm install -S @louhaojie99/pro-components
```

## 启动项目

```bash
$ pnpm install

$ pnpm dev
```

## 更新文档

编译生成 dist 目录

```bash
$ pnpm run docs:build

$ pnpm run deploy
```

## 更新 npm 包

```bash
$ pnpm run build

$ npm login

$ npm publish

```

## 其他

```bash
# build library source code
$ pnpm run build

# build library source code in watch mode
$ pnpm run build:watch

# build docs
$ pnpm run docs:build

# Locally preview the production build.
$ pnpm run docs:preview

# check your project for potential problems
$ pnpm run doctor
```

## LICENSE

MIT
npm package: @louis030195/gptzero-mcp
Description: MCP server for GPTZero AI detection API
Author: Louis Beaumont
Latest version: 0.1.1

# @louis030195/gptzero-mcp

MCP (Model Context Protocol) server for GPTZero AI detection API. Detect AI-generated text directly from Claude, ChatGPT, or any LLM that supports MCP.

## Features

- 🤖 Detect AI-generated text with confidence scores
- 🌍 Multilingual support (French, Spanish)
- 📊 Detailed probability breakdowns (AI/Human/Mixed)
- 🎯 High/medium/low confidence categories

## Installation

### Claude Desktop

Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on Mac or `%APPDATA%\Claude\claude_desktop_config.json` on Windows):

```json
{
  "mcpServers": {
    "gptzero": {
      "command": "npx",
      "args": ["-y", "@louis030195/gptzero-mcp"],
      "env": {
        "GPTZERO_API_KEY": "your-gptzero-api-key"
      }
    }
  }
}
```

### Claude Code

```bash
# Install globally in user scope with API key
claude mcp add -s user gptzero npx -e GPTZERO_API_KEY=your-gptzero-api-key -- -y @louis030195/gptzero-mcp
```

## Get Your GPTZero API Key

1. Go to [GPTZero](https://gptzero.me)
2. Sign up or log in
3. Navigate to API settings
4. Copy your API key

## Usage

Once configured, you can use natural language to detect AI content:

- "Check if this text is AI-generated: [paste text]"
- "Analyze this document for AI detection"
- "What's the probability this was written by AI?"
- "Is this human or AI written?"

## Tools

### `gptzero_detect`

Detect if text was generated by AI.

**Parameters:**
- `document` (string, required): Text to analyze
- `multilingual` (boolean, optional): Enable multilingual detection for French/Spanish (default: false)

**Returns:**
- Predicted class (ai/human/mixed)
- Confidence category (high/medium/low)
- Probability scores for each class
- Detailed sentence-level analysis

### `gptzero_model_versions`

Get available GPTZero model versions.

**Returns:** List of available model versions

## Development

```bash
# Clone the repo
git clone https://github.com/louis030195/gptzero-mcp.git
cd gptzero-mcp

# Install dependencies
npm install

# Build
npm run build

# Run locally
GPTZERO_API_KEY=your-api-key npm start
```

## API Documentation

See [GPTZero API Docs](https://gptzero.stoplight.io/) for full API details.

## License

MIT

## Author

[Louis Beaumont](https://twitter.com/louis030195)
npm package: @louis030195/oura-mcp
Description: Dead simple MCP server for Oura Ring sleep and readiness tracking
Author: Louis Beaumont
Latest version: 0.1.0

# @louis030195/oura-mcp

Dead simple MCP (Model Context Protocol) server for Oura Ring. Get your sleep, readiness, and activity data directly from Claude, ChatGPT, or any LLM that supports MCP.

## Features

- 😴 Sleep data (score, REM, deep, light sleep stages)
- ⚡ Readiness score (HRV, resting HR, body temperature)
- 🏃 Activity data (steps, calories, activity score)
- ❤️ Heart rate monitoring

## Installation

### Claude Desktop

Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "oura": {
      "command": "npx",
      "args": ["-y", "@louis030195/oura-mcp"],
      "env": {
        "OURA_API_KEY": "your-oura-api-key"
      }
    }
  }
}
```

### Claude Code

```bash
# Install globally in user scope with API key
claude mcp add -s user oura npx -e OURA_API_KEY=your-oura-api-key -- -y @louis030195/oura-mcp
```

## Get Your Oura API Key

1. Go to [Oura Personal Access Tokens](https://cloud.ouraring.com/personal-access-tokens)
2. Click "Create New Personal Access Token"
3. Copy your token (starts with something like `4SKHEL...`)

## Usage

Once configured, you can use natural language to access your Oura data:

- "How did I sleep last night?"
- "Show me my sleep data for the past week"
- "What's my readiness score today?"
- "How many steps did I take yesterday?"
- "Show my heart rate data from last week"

## Tools

### `oura_sleep`
Get daily sleep data including sleep score, sleep stages (REM, deep, light), efficiency, and timing.

**Parameters:**
- `start_date` (required): Start date in YYYY-MM-DD format
- `end_date` (optional): End date in YYYY-MM-DD format

### `oura_readiness`
Get daily readiness score, HRV balance, resting heart rate, and body temperature deviation.

**Parameters:**
- `start_date` (required): Start date in YYYY-MM-DD format
- `end_date` (optional): End date in YYYY-MM-DD format

### `oura_activity`
Get daily activity data including steps, calories burned, and activity score.

**Parameters:**
- `start_date` (required): Start date in YYYY-MM-DD format
- `end_date` (optional): End date in YYYY-MM-DD format

### `oura_heartrate`
Get heart rate data over time.

**Parameters:**
- `start_date` (required): Start date in YYYY-MM-DD format
- `end_date` (optional): End date in YYYY-MM-DD format

## Development

```bash
# Clone the repo
git clone https://github.com/louis030195/oura-mcp.git
cd oura-mcp

# Install dependencies
npm install

# Build
npm run build

# Run locally
OURA_API_KEY=your-api-key npm start
```

## License

MIT

## Author

[Louis Beaumont](https://twitter.com/louis030195)
npm package: @louis030195/toggl-mcp
Description: Dead simple MCP server for Toggl time tracking
Author: Louis Beaumont
Latest version: 0.2.1

# @louis030195/toggl-mcp

Dead simple MCP (Model Context Protocol) server for Toggl time tracking. Control your Toggl timer directly from Claude, ChatGPT, or any LLM that supports MCP.

[![Support Development](https://img.shields.io/badge/Support-Development-yellow?style=for-the-badge)](https://buy.stripe.com/14A14n0eZ1wyfix9a8gA802)

## Features

- ⏱️ Start/stop timers
- 📊 View current timer
- 📈 Get today's time entries
- 🗂️ List projects
- 🗑️ Delete time entries

## Installation

### Claude Desktop

Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "toggl": {
      "command": "npx",
      "args": ["-y", "@louis030195/toggl-mcp"],
      "env": {
        "TOGGL_API_KEY": "your-toggl-api-key"
      }
    }
  }
}
```

### Claude Code

```bash
# Install globally in user scope with API key
claude mcp add -s user toggl npx -e TOGGL_API_KEY=your-toggl-api-key -- -y @louis030195/toggl-mcp
```

## Get Your Toggl API Key

1. Go to [Toggl Track Profile](https://track.toggl.com/profile)
2. Scroll down to "API Token"
3. Click "Click to reveal" and copy your token

## Usage

Once configured, you can use natural language to control Toggl:

- "Start tracking work on the MCP server project"
- "Stop the current timer"
- "What am I currently tracking?"
- "Show me today's time entries"
- "List all my projects"

## Tools

### `toggl_start`
Start a new timer with a description and optional project.

### `toggl_stop`
Stop the currently running timer.

### `toggl_current`
Get information about the currently running timer.

### `toggl_today`
Get all time entries for today with total duration.

### `toggl_projects`
List all projects in your workspace.

### `toggl_delete`
Delete a time entry by its ID.

### `toggl_weekly`
Get weekly time tracking summary with total hours and breakdowns.
- Parameters: `week_offset` (optional, number)
  - `0` = current week
  - `-1` = last week
  - `-2` = two weeks ago, etc.

Returns:
- Total hours for the week
- Daily breakdown (hours per day)
- Project breakdown (hours per project)
- Full list of entries

### `toggl_last_week`
Convenience function to get last week's time tracking summary (equivalent to `toggl_weekly` with `week_offset: -1`).

## Development

```bash
# Clone the repo
git clone https://github.com/louis030195/toggl-mcp.git
cd toggl-mcp

# Install dependencies
npm install

# Build
npm run build

# Run locally
TOGGL_API_KEY=your-api-key npm start
```

## License

MIT

## Author

[Louis Beaumont](https://twitter.com/louis030195)
npm package: @louis383/tw-book-search-mcp
Description: MCP Server for searching and comparing ebook prices across TW bookstores
Author: Jui Yuan Liu
Latest version: 0.1.0

# TaiwanEbookSearch MCP

<!-- TODO: 可以加上 npm version / license badge，例如：
[![npm version](https://img.shields.io/npm/v/taiwan-ebook-search-mcp)](https://www.npmjs.com/package/taiwan-ebook-search-mcp)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
-->

讓 AI 透過這個 MCP Server，直接用自然語言查詢各大台灣電子書平台的書籍價格，免開瀏覽器

MCP Server for searching and comparing ebook prices across Taiwan bookstores.

<img width="800px" alt="Preview Image" src="https://github.com/user-attachments/assets/6a2ec289-e5cd-4203-8d36-eec04f1c0f3f" />

## Features

- **`search_ebooks`** — 搜尋書籍並比較各書城價格 (Search for books and compare prices across multiple e-book stores)
- **`list_bookstores`** — 列出所有支援的電子書城及服務狀態 (List all supported e-book stores and their availability)
- **`get_search_result`** — 以 ID 取得過去的搜尋紀錄 (Retrieve past search records by ID)

## Requirements

- Node.js >= 18.0.0

## Setup

### Claude Desktop

編輯 Claude Desktop 設定檔

Edit Claude Desktop configuration file

- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "taiwan-ebook-search": {
      "command": "npx",
      "args": ["-y", "@louis383/tw-book-search-mcp"]
    }
  }
}
```

重新啟動 Claude Desktop 後即可使用。

Restart Claude Desktop after completion

## Tools

### `search_ebooks`

搜尋書籍並比價，回傳各書城結果

Search for books and compare prices, returning results from each store

| 參數 (Parameter) | 類型 (Type) | 必填 (Required) | 說明 (Description) |
|---|---|---|---|
| `keywords` | `string` | ✅ | 搜尋關鍵字 (書名、作者等) (Search keywords, e.g. book title, author, etc.) |
| `bookstores` | `string[]` | ❌ | 指定書城 ID，省略則搜尋全部可以用的書城 (Specify bookstore IDs; if omitted, all available bookstores will be searched) |
| `maxResultsPerBookstore` | `number` | ❌ | 每個書城最多回傳幾筆 (預設 3) (Maximum number of results per bookstore; default is 3) |

### `list_bookstores`

列出所有支援的電子書城及可用狀態，無需參數

List all supported e-book stores and their availability; no parameters required

### `get_search_result`

以 ID 取得過去的搜尋紀錄

Retrieve past search results by ID

| 參數 (Parameter) | 類型 (Type) | 必填 (Required) | 說明 (Description) |
|---|---|---|---|
| `id` | `string` | ✅ | 搜尋紀錄 ID (Search record ID) |
| `maxResultsPerBookstore` | `number` | ❌ | 每個書城最多回傳幾筆 (預設 3) (Maximum number of results per bookstore; default is 3) |

## Environment Variables

| 變數 (Variable) | 說明 (Description) | 預設值 (Default Value) |
|---|---|---|
| `API_BASE_URL` | API 的 base URL (Base URL of the API) | 台灣電子書搜尋網站網址 TW Ebook Search Url |
| `ALLOW_UNSAFE_API_BASE_URL` | 允許使用非預設的 `API_BASE_URL` (僅限本機開發使用) (Allow using a non-default API_BASE_URL; local development only) | `false` |

## Development

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

本機測試方式

Local testing method

```bash
npx @modelcontextprotocol/inspector node ./dist/index.js
```

## License

MIT
npm package: @louis49/nodeopencv
Description: OpenCV for nodejs
Author: @louis49
Latest version: 1.0.1

# nodeopencv

[![npm-version](https://badgen.net/npm/v/@louis49/nodeopencv?icon=npm)](https://www.npmjs.com/package/@louis49/nodeopencv)
[![npm-total-downloads](https://badgen.net/npm/dt/@louis49/nodeopencv?icon=npm)](https://www.npmjs.com/package/@louis49/nodeopencv)

[![Donate](https://badgen.net/badge/paypal/donate?icon=https://simpleicons.now.sh/paypal/fff)](https://www.paypal.com/donate/?hosted_button_id=B8NGNPFGK69BY)
[![Donate](https://badgen.net/badge/buymeacoffee/donate?icon=https://simpleicons.now.sh/buymeacoffee/fff)](https://www.buymeacoffee.com/louis49github)

# Prerequisite

## cmake

* windows :

https://cmake.org/download/

* linux : 
```
sudo apt-get install cmake
```

* MacOs - if not still available with Xcode install : 
```
brew install cmake
```

# Installation

```
npm install nodeopencv
```

# Usage

```
import cv from 'nodeopencv'
```
npm package: @louis_le_cam/talvoudek
Description: A simple yet powerful data validation library for being safe manipulating data from the outside
Author: Louis Le Cam
Latest version: 0.0.19

# Talvoudek

A simple yet powerful data validation library for being safe manipulating data from the outside

## Examples

With `express.js`

```ts
import validate from "@louis_le_cam/talvoudek";

app.post("/user", (req, res) => {
  const user = validate(req.body, {
    name: String,
    email: String,
    role: validate.either("user", "admin"),
  });

  // insert the user in the database ...
});
```

In tests (with `jest` or others)

```ts
import validate from "@louis_le_cam/talvoudek";

test("function should return object with correct format", () => {
  validate(listUsers(), [{
    name: String,
    email: String,
    role: validate.either("user", "admin"),
  }]);
});
```