open-index/open-npm huggingface dataset:
npm package: @ironche/node-bash
Description: bash-like commands in nodejs
Author: Milos Manojlovic
Latest version: 1.2.0

# Node BASH

This project aims to provide NodeJS implementation of frequently used BASH commands and extend their functionality even further.

![AppVeyor](https://img.shields.io/appveyor/build/ironche/node-bash?logo=appveyor)
![AppVeyor tests](https://img.shields.io/appveyor/tests/ironche/node-bash?logo=appveyor)
![npm](https://img.shields.io/npm/dm/@ironche/node-bash?logo=npm)

## Installation

```shell
npm install @ironche/node-bash
```

## Contents

- **find** - search for files and folders in a folder hierarchy
- **grep** - find files containing patterns

# Function find()

Traverse file system and search for files and folders recursively.

## Syntax

**Note**: All arguments are optional.

| Argument | Description |
| -------- | ----------- |
| path  | Folder from where the search begins. If omitted, the default value is the current folder, which is identical to './' |
| descriptor | Pass 'f' to search only for files, 'd' to search only for folders/directories, or null (anything else) if the search applies to both. |
| namePatterns | Regular expression (or array of regular expressions) to match names of files and folders and return them as result. Matches all names if omitted. |
| excludeFolders | Regular expression (or array of regular expressions) to exclude folders and their contents from search results. |
| depth | Used to limit the depth while traversing file system. Set to 0 to search only current level without entering any folders, 1 to go down one level, and so on. If omitted, traverses whole folder tree. |

**Return value**: array of objects found.

```js
import { find } from '@ironche/node-bash';
let args, results;

// find-example-1.js
args = ['.', 'f', null, /node_modules/];
results = find(...args).map((f) => f.path);
console.log(results);

/* example output
[
  './.gitignore',
  './index.js',
  './package-lock.json',
  './package.json'
]
*/

// find-example-2.js
args = ['.', 'f', /\.json$/, /node_modules/];
results = find(...args).map((f) => f.path);
console.log(results);

/* example output
[
  './package-lock.json',
  './package.json'
]
*/
```

# Function grep()

Read files and return those containing matched patterns.

## Syntax

**Note**: All arguments are optional.

| Argument | Description |
| -------- | ----------- |
| patterns  | Regular expression (or array of regular expressions) to match content of files and return files as result. Doesn't match any file if omitted. |
| files | Array of files found by using **find** function. |

**Return value**: array of files that contain given patterns.

```js
import { find, grep } from '@ironche/node-bash';

// find all files having extension "css"
const files = find('.', 'f', /\.css$/, /node_modules/);
// among supplied files, return only those containing text "white"
const results = grep(/white/, files);
console.log(results);

/* example output
[
  './theme-light.css',
  './button.css',
]
*/
```
npm package: @ironclads/caddy-mcp
Description: Caddy proxy management via MCP stdio protocol for Claude Code
Author: ironclads
Latest version: 1.0.0

# Caddy MCP Server (TypeScript)

Caddy 웹서버 프록시 관리를 위한 MCP(Model Context Protocol) 서버 - TypeScript 버전

## 🚀 주요 기능

- **프록시 관리**: Caddy 리버스 프록시 추가/삭제/목록 조회
- **설정 내보내기**: Caddyfile 형식으로 현재 설정 내보내기
- **헬스 체크**: Caddy 서버 상태 모니터링
- **타입 안전성**: TypeScript로 완전히 재작성
- **강화된 보안**: 입력 검증 및 오류 처리 개선

## 📋 요구사항

- Node.js 18+
- TypeScript 5.0+
- Caddy 서버 (Admin API 활성화)

## 🛠️ 설치 및 빌드

```bash
# 의존성 설치
npm install

# TypeScript 빌드
npm run build

# 개발 모드 (TypeScript 직접 실행)
npm run dev

# 프로덕션 모드
npm start
```

## 🧪 테스트

```bash
# Mock 테스트
npm test

# 실제 Caddy API 테스트
npm run test:real

# 타입 체크
npm run type-check

# 린팅
npm run lint
```

## ⚙️ 환경 설정

### 필수 환경 변수

```bash
export CADDY_ADMIN_URL="http://localhost:2019"
export DEBUG="false"  # 디버그 로깅 활성화
```

### Claude Desktop 설정

`claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "caddy-mcp": {
      "command": "node",
      "args": ["/path/to/caddy-mcp/dist/server.js"],
      "env": {
        "CADDY_ADMIN_URL": "http://localhost:2019",
        "DEBUG": "false"
      }
    }
  }
}
```

## 🔧 사용 가능한 도구

### 1. `list_proxies`
현재 설정된 모든 프록시 목록을 조회합니다.

### 2. `add_proxy`
새로운 프록시를 추가합니다.
- `domain`: 프록시할 도메인
- `targetUrl`: 대상 서버 (host:port 형식)

### 3. `delete_proxy`
지정된 도메인의 프록시를 삭제합니다.
- `domain`: 삭제할 도메인

### 4. `export_caddyfile`
현재 Caddy 설정을 Caddyfile 형식으로 내보냅니다.

### 5. `check_caddy_health`
Caddy 서버의 상태를 확인합니다.

## 📁 프로젝트 구조

```
caddy-mcp/
├── src/                    # TypeScript 소스 코드
│   ├── server.ts          # 메인 서버 클래스
│   ├── types.ts           # 타입 정의
│   ├── test.ts            # Mock 테스트
│   └── real-test.ts       # 실제 API 테스트
├── dist/                  # 컴파일된 JavaScript
├── tsconfig.json          # TypeScript 설정
├── .eslintrc.json         # ESLint 설정
└── package.json           # 프로젝트 설정
```

## 🎯 TypeScript 변환의 장점

### 1. **타입 안전성**
- 컴파일 타임 오류 검출
- IDE 자동완성 및 IntelliSense
- 런타임 오류 감소

### 2. **코드 품질**
- 명확한 인터페이스 정의
- 엄격한 타입 체크
- 더 나은 리팩토링 지원

### 3. **개발 경험**
- 더 나은 개발자 도구 지원
- 명확한 API 문서화
- 유지보수성 향상

## 🔒 보안 강화

- 환경변수 필수 검증
- 입력값 타입 및 형식 검증
- API 요청 타임아웃 설정
- 구조화된 오류 처리

## 📊 성능 개선

- 재귀적 프록시 추출 로직
- 중복 코드 제거
- 효율적인 오류 처리
- 구조화된 로깅 시스템

## 🤝 기여하기

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests
5. Submit a pull request

## 📄 라이선스

MIT License

---

🎉 JavaScript에서 TypeScript로 성공적으로 변환 완료!