UNPKG

rapplus

Version:
109 lines (108 loc) 5.86 kB
"use strict"; 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;