rapplus
Version:
rapper, use http api as a function
109 lines (108 loc) • 5.86 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
exports.__esModule = true;
var path = require("path");
var utils_1 = require("./../utils");
function completionOptions(options) {
if (options === void 0) { options = { download: {}, upload: {} }; }
var defaultOptions = {
download: {
//请求 function 模板
requestFunc: function (params) {
function getFnName(url) {
var fnName = url.match(/\/([.a-z0-9_-]+)\/([a-z0-9_-]+$)/i);
if (fnName && fnName.length === 3) {
if (/^\d+\.\d+$/.test(fnName[1])) {
return fnName[2];
}
return fnName[1] + fnName[2].charAt(0).toUpperCase() + fnName[2].slice(1);
}
return null;
}
var fnName = getFnName(params.requestUrl);
if (!fnName) {
throw new TypeError('接口路径不对,请修改合规');
}
var camelCaseName = "" + fnName.charAt(0).toUpperCase() + fnName.slice(1);
var reqTypeName = "IReq" + camelCaseName;
var resTypeName = "IRes" + camelCaseName;
return {
reqTypeName: reqTypeName,
resTypeName: resTypeName,
funcMain: "\n /**\n * \u63A5\u53E3\u540D\uFF1A" + params.funcDescription + "\n * Rap \u5730\u5740: " + params.rapUrl + "?id=" + params.repositoryId + "&mod=" + params.moduleId + "&itf=" + params.interfaceId + "\n */\n export const " + fnName + " = createFetch<" + reqTypeName + ", " + resTypeName + ">('" + params.requestUrl + "', '" + params.requestMethod + "')\n "
};
},
//请求 函数共工头(用于引入函数
requestModule: function (params) {
return {
fileName: params.moduleDescription,
moduleHeader: "\n // @ts-ignore\n import instance from '@/utils/request'\n \n function createFetch<REQ extends Record<string, unknown>, RES extends {data: any}> (url: string, method: string) {\n return <T extends boolean = false>(\n data: REQ,\n options?: {\n proxy?: T\n pageError?: boolean\n }\n ): Promise<T extends true ? RES['data'] : RES> => {\n return instance(\n {\n url,\n method,\n data,\n },\n options\n )\n }\n }\n \n "
};
}
},
rapper: {
// 拉取接口地址
apiUrl: 'http://rap2api.taobao.org/repository/get?id=284428&token=TTDNJ7gvXgy9R-9axC-7_mbi4ZxEPlp6',
/** rap 前端地址,默认是 http://rap2.taobao.org */
rapUrl: 'http://rap2.taobao.org',
matchDir: './src/actions',
tokenCookie: 'aliyungf_tc=f3a5915db08fc3b6de3ec5df0d0b3a5dc07c0b701e44cf4bf98a855799570bfe; koa.sid=ybwqSKr_-P1aSkmEH35jsRLO_8gruqcu; koa.sid.sig=SIL-kHUX7sz4pDh-ZiJFCixKdE0',
repositoryId: 284428
},
upload: {
formatFunc: function (params) {
// createFetch<IReqGoodsQbf, IResGoodsQbf>('/c/api/1.0/approve/goods/qbf', 'GET')
var _a = params.body.match(/createFetch<(\w+),\s+(\w+)>\(['|"]([\s|\S]+)['|"], ['|"]([a-zA-Z]+)['|"]\)/), _ = _a[0], reqTypeName = _a[1], resTypeName = _a[2], reqUrl = _a[3], reqMethod = _a[4];
if (!reqTypeName || !resTypeName) {
return null;
}
var matchInterfaceId = params.comment.match(/http:\/\/rap2\.tao[\s\S]+&itf=(\d+)/);
return {
resTypeName: resTypeName,
reqTypeName: reqTypeName,
// 如果返回 null '' undefined 0 等 就会被认为是新的接口,会触发上rap操作
interfaceId: matchInterfaceId ? Number(matchInterfaceId[1]) : null,
reqUrl: reqUrl,
reqMethod: reqMethod
};
},
// webpack 别名 alias 绝对路径
alias: {
'@': './src'
}
}
};
var _options = {};
_options.download = __assign(__assign({}, (options.download || {})), defaultOptions.download);
_options.upload = __assign(__assign({}, (options.upload || {})), defaultOptions.upload);
_options.rapper = __assign(__assign({}, (options.upload || {})), defaultOptions.rapper);
_options.__completion = true;
var rootPath = utils_1.searchRootPath();
if (!rootPath) {
process.exit(1);
}
// _options.upload.matchDir = path.resolve(rootPath, _options.upload.matchDir)
_options.rapper.matchDir = path.resolve(rootPath, _options.rapper.matchDir);
var alias = _options.upload.alias;
for (var v in alias) {
_options.upload.alias.v = path.resolve(rootPath, alias[v]);
}
return _options;
}
function defineConfig(options) {
if (options.__completion) {
return options;
}
return completionOptions(options);
}
exports["default"] = defineConfig;