tsrpc-cli
Version:
TSRPC CLI Tools
89 lines (67 loc) • 2.62 kB
JavaScript
/*!
* TSRPC Command-line Interface v2.4.5
* -----------------------------------------
* MIT LICENSE
* KingWorks (C) Copyright 2022
* https://github.com/k8w/tsrpc-cli
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var path = require('path');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
/**
* 用于 `tsrpc.config.ts` 的代码模板
* @public
*/
class CodeTemplate {
/**
* 自公共基类继承的 Ptl
*/
static getExtendedPtl(baseFile = 'src/shared/protocols/base.ts', baseReq = 'BaseRequest', baseRes = 'BaseResponse', baseConf = 'BaseConf') {
return (ptlBaseName, ptlPath, ptlDir) => {
const importPath = path__default["default"].relative(path__default["default"].dirname(ptlPath), path__default["default"].resolve(baseFile.replace(/\.ts$/, ''))).replace(/\\/g, '/');
return `import { ${baseReq}, ${baseRes}, ${baseConf} } from "${importPath.startsWith('.') ? importPath : `./${importPath}`}";
export interface Req${ptlBaseName} extends ${baseReq} {
}
export interface Res${ptlBaseName} extends ${baseRes} {
}
export const conf: ${baseConf} = {
}`;
};
}
/**
* 自公共基类继承的 Msg
*/
static getExtendedMsg(baseFile = 'src/shared/protocols/base.ts', baseMsg = 'BaseMessage', baseConf = 'BaseConf') {
return (msgBaseName, msgPath, msgDir) => `import { ${baseMsg}, ${baseConf} } from "./${path__default["default"].relative(path__default["default"].dirname(msgPath), path__default["default"].resolve(baseFile.replace(/\.ts$/, ''))).replace(/\\/g, '/')}";
export interface Msg${msgBaseName} extends ${baseMsg} {
}
export const conf: ${baseConf} = {
}`;
}
}
/**
* 默认 Ptl
*/
CodeTemplate.defaultPtl = ptlBaseName => `export interface Req${ptlBaseName} {
}
export interface Res${ptlBaseName} {
}
`;
/**
* 默认 Msg
*/
CodeTemplate.defaultMsg = msgBaseName => `export interface Msg${msgBaseName} {
}
`;
/**
* 默认 Api
*/
CodeTemplate.defaultApi = (apiBaseName, apiFileDir, ptlFileDir) => `import { ApiCall } from "tsrpc";
import { Req${apiBaseName}, Res${apiBaseName} } from "${path__default["default"].relative(apiFileDir, ptlFileDir).replace(/\\/g, '/')}/Ptl${apiBaseName}";
export default async function (call: ApiCall<Req${apiBaseName}, Res${apiBaseName}>) {
// TODO
call.error('API Not Implemented');
}`;
exports.CodeTemplate = CodeTemplate;