npm package: @micl/server-express-middlewares
Description: Provides express middlewares.
Author: alexgogoing@sina.com
Latest version: 0.0.4

# @micl/server-express-middlewares

![npm version](https://img.shields.io/npm/v/@micl/server-express-middlewares)
![npm downloads](https://img.shields.io/npm/dm/@micl/server-express-middlewares)
![license](https://img.shields.io/npm/l/@micl/server-express-middlewares)

Micl 项目的 Express 中间件集合，提供 JWT 认证、SSE (Server-Sent Events) 和任务中心注册等实用功能。

## 📦 安装

```bash
npm install @micl/server-express-middlewares
# or
pnpm add @micl/server-express-middlewares
# or
yarn add @micl/server-express-middlewares
```

## 📚 模块导出

| 函数 | 描述 |
|------|------|
| `createAuthMiddleware` | 创建 JWT 认证中间件 |
| `createSSEMiddleware` | 创建 SSE (Server-Sent Events) 中间件 |
| `registerTaskCenter` | 任务中心注册功能 |

## 🎯 使用示例

### 1. JWT 认证中间件

```javascript
const express = require('express');
const { createAuthMiddleware } = require('@micl/server-express-middlewares');

const app = express();

// 创建认证中间件
const authMiddleware = createAuthMiddleware({
  secret: 'your-secret-key',  // JWT 密钥
  getToken: (req) => {
    // 自定义 token 获取逻辑
    const auth = req.headers.authorization || '';
    return auth.replace('Bearer ', '');
  },
  userCenter: {
    host: 'user-center',  // 用户中心主机
    port: 3000,           // 用户中心端口
  }
});

// 应用中间件
app.use('/api', authMiddleware, (req, res) => {
  // req.user 包含解码后的用户信息
  res.json({
    message: 'Authenticated',
    user: req.user
  });
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});
```

### 2. SSE (Server-Sent Events) 中间件

```javascript
const express = require('express');
const { createSSEMiddleware } = require('@micl/server-express-middlewares');

const app = express();

// 创建 SSE 中间件
const sseMiddleware = createSSEMiddleware();

// 应用 SSE 中间件
app.get('/events', sseMiddleware, (req, res) => {
  // 使用 res.sse 发送 SSE 消息
  setInterval(() => {
    res.sse({ time: new Date().toISOString() }, 'time-update');
  }, 1000);

  // 连接关闭时清理
  req.on('close', () => {
    console.log('SSE connection closed');
  });
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});
```

### 3. 任务中心注册

```javascript
const { registerTaskCenter } = require('@micl/server-express-middlewares');

// 注册任务到任务中心
registerTaskCenter(
  {
    host: 'task-center',  // 任务中心主机
    port: 3000,           // 任务中心端口
    api: '/api/tasks/register'  // 注册 API 路径
  },
  {
    taskId: 'task-123',
    taskName: 'Sample Task',
    status: 'pending',
    priority: 'high'
  },
  console  // 可选的日志器
);
```

## 🛠 配置选项

### createAuthMiddleware 配置

| 选项 | 类型 | 默认值 | 描述 |
|------|------|-------|------|
| `secret` | string | 'default-secret' | JWT 签名密钥 |
| `getToken` | function | 从 Authorization header 获取 | 自定义 token 获取函数 |
| `userCenter` | object | { host: 'user-center', port: 3000 } | 用户中心配置 |

### createSSEMiddleware 配置

| 选项 | 类型 | 默认值 | 描述 |
|------|------|-------|------|
| `options` | object | {} | 自定义配置选项 |

### registerTaskCenter 参数

| 参数 | 类型 | 描述 |
|------|------|------|
| `config` | object | 任务中心配置（host, port, api） |
| `data` | object | 任务数据 |
| `logger` | object | 可选的日志器，默认为 console |

## 📁 项目结构

```
express-middlewares/
├── src/
│   └── core.js        # 核心中间件实现
├── index.js           # 模块导出
├── package.json       # 包配置
├── build.js           # 构建脚本
├── publish.sh         # 发布脚本
└── README.md          # 文档
```

## 🛠 开发

### 构建

```bash
# 进入 express-middlewares 目录
cd server-side/express-middlewares

# 构建项目
node build.js
```

### 发布

```bash
# 发布到 npm
./publish.sh
```

## 🤝 贡献

欢迎提交 Issue 和 Pull Request 来完善这个模块。

## 📄 许可证

本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。

## 📞 支持

如有问题或建议，请提交 [Issue](../../issues) 或联系维护者。

---

**@micl/server-express-middlewares** - 实用的 Express 中间件集合 🚀