parse TS interface to TS pinus-protobuf
解析ts的 interface 到ts格式的 pinus-protobuf 。
pinus: https://github.com/node-pinus/pinus
changelog
v1.0.0:
将pinus-parse-interface模块私有化
v1.0.1:
定制项目框架解析需求
v1.0.2:
支持单文件多个路由接口解析
v1.0.3:
修复在handler会生成push路由的问题
add(parse):分为handler和push解析
1、parseHandlerToPinusProtobuf
2、parsePushToPinusProtobuf
3、parseHandlerFile
4、parsePushFile
v1.0.4:
更新README.md
v1.0.5:
add(parse): 修改类型解析机制
1、去掉additionalProperties属性 用format替换
2、新增数组和基础属性统一优先用format表示type
3、number默认 int32
4、需要double的地方需要显示增加注释`/** @format double */`替换
install
npm install hm-pinus-parse-interface
or
yarn add hm-pinus-parse-interface
usage
const main = require('hm-pinus-parse-interface');
const test = main.parseToPinusProtobuf('path_to_you_interface_dir');
console.log('result',JSON.stringify(test,null,4));
interface 结构约定
- 俩层目录结构。
- 第一层服务器名为目录名。
- 第二层Handler或者Push名为目录名。
- 请求和响应文件.req.res结尾。
- 推送文件.push结尾。
- 客户端请求消息接口命名Req结尾。
- 服务器响应消息接口命名Res结尾,其余命名部分要和客户端一致。
- 服务器推送消息接口命名On开头。
例如:
百人牛牛
百人牛牛请求和响应文件名:
brnn.req.res.ts
brnn.req.res.ts文件内容:
export interface DoBetReq {
area: number; // 区域类型
index: number; // 筹码索引
/** @format double */
value?: number; // 筹码值
}
export interface DoBetRes extends BaseRes {
data?: DoBetData;
}
百人牛牛推送文件名:
brnn.push.ts
brnn.push.ts文件内容:
/**
* 推送玩家下注消息
*/
export interface OnBet {
userId: string;
index: number; // 筹码索引
/** @format double */
value: number; // 筹码值
area: number; // 区域类型
/** @format double */
areaTotalValue: number; // 当前区域总值
/** @format double */
totalValue: number; // 所有区域总值
}
auto generate
serverProtos.ts
,clientProtos.ts
,dictionary.ts
,routes.ts
说明:需要自定义生成脚本逻辑,只供内部使用