open-index/open-npm huggingface dataset:
npm package: @mrsongzj/whistle.gy-host
Description: 方便同步光宇 host
Latest version: 0.0.7

# whistle.gy-host
## 简介

方便同步光宇的 host

## 安装

```javascript
$ w2 install @mrsongzj/whistle.gy-host
```

## 使用

### 同步光宇 host

在 Plugins 中，点击 gy-host 插件的 Sync 按钮

![image](https://github.com/user-attachments/assets/f2c8f138-9733-4f26-83ac-2605f62c9ad1)

在弹窗中选择 Sync Rules

![image](https://github.com/user-attachments/assets/e901e9d1-7085-4e1d-b763-5bd8c2ccb49a)

等待一会，在新弹窗中点击 Add to Rules

![image](https://github.com/user-attachments/assets/b1f21335-9fc1-4385-99bf-88f948579aaa)

如果有冲突，会继续弹确认弹窗，选择 Confirm 即可

![image](https://github.com/user-attachments/assets/82210ffb-200c-4eb1-998a-59cd333b0ef1)

完成后，第一次会在 Rules 中生成`光宇host-IP分类`，`光宇host-内网`，`光宇host-外网`这三个文件。之后再做同步操作时会覆盖这三个文件的内容。

![image](https://github.com/user-attachments/assets/a855b6e4-5be5-47e1-8aed-585c2726c474)

### 内网/外网切换

`光宇host-内网`包含光宇所有域名映射到公司内网的规则

`光宇host-外网`包含光宇所有域名映射到公司外网的规则

双击勾选或取消勾选来进行内网/外网的切换

### IP分类

`光宇host-IP分类`包含光宇所有域名对应的内网和外网信息，用于在抓包页面中的 IP+ 这一列显示当前请求属于什么网络环境（本地，内网，外网，正式，-）

![image](https://github.com/user-attachments/assets/ac227746-e6fa-4dc1-95f3-11896dd737a1)
npm package: @mrsongzj/whistle.mock
Description: value 文件的类型支持 json 和 js. The type of the value file supports json and js.
Author: mrsong
Latest version: 0.0.6

# whistle.mock
## 简介

方便构建静态和动态的 mock 数据， value 文件的类型支持 json 和 js。

## 安装

```javascript
$ w2 install @mrsongzj/whistle.mock
```

## 使用

### mock 静态数据

在 value 中创建 json 文件作为响应体，然后再 Rules 中和 url 绑定

```javascript
*/xxx/yyy mock://{xxx.json}
```

### mock 动态数据

在 value 中创建 js 脚本（.js 后缀不可省略，这是区别静态数据和动态数据的标志），生成响应体，然后再 Rules 中和 url 绑定

```javascript
*/xxx/yyy mock://{xxx.js}
```

js 文件支持 eval 函数可以执行的 js 语法和一些特殊用户的函数(delay，out，change)

*   delay(d: number): 响应体确定后延迟 d 毫秒返回给客户端
*   out(d: object): 定义完整的响应体, 不会发出真实请求
*   change(cb: function): 修改真实请求的响应体

案例1：动态生成日期，延迟 2 秒返回

```javascript
// 延迟 2 秒后返回
delay(2000)
// 当前日期加 1 天
const date = new Date()
date.setDate(date.getDate() + 1);
// 输出响应体
out({
    "success": true,
    "data": {
        "date": date.getTime()
    }    
})
```

案例2：修改响应体中某些字段的值

```javascript
change(res => {
    res.success = false
    res.message = '网络异常，请重试'
    res.data.list = ['1', '2', '3']
})
```

### mock 请求失败

修改响应报文中的状态码

规则语法：mock://error.fail.statusNo

```javascript
*/xxx/yyy mock://fail // 默认状态码为 500
*/xxx/yyy mock://fail.501 // 自定义状态码为 501
```

### mock 业务错误

请求成功，但是业务不成功，修改错误码和错误描述

创建错误模版，在 Values 中创建一个固定名称为 template\_mock\_error.json 的文件，里面定义好响应体的格式，使用 xxx 代替错误码，yyy 代替错误描述，比如：

```json
{
  "success": false,
  "error": "xxx",
  "data": null,
  "message": "yyy"
}
```

规则语法：mock://error.xxx.yyy

```javascript
*/xxx/yyy mock://error.server_error // 自定义错误码为 server_error, 默认错误描述为出错了
*/xxx/yyy mock://error.server_error.网络异常，请重试 // 自定义错误码为 server_error, 自定义错误描述为网络异常，请重试
```