UNPKG

tsrpc-cli

Version:
89 lines (67 loc) 2.62 kB
/*! * TSRPC Command-line Interface v2.4.5 * ----------------------------------------- * MIT LICENSE * KingWorks (C) Copyright 2022 * https://github.com/k8w/tsrpc-cli */ 'use strict'; 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;