@antmjs/rapper
Version:
rapper, use http api as a function
133 lines (132 loc) • 6.7 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);
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var path = __importStar(require("path"));
var utils_1 = require("./../utils");
function completionOptions(options) {
if (options === void 0) { options = { download: {}, upload: {} }; }
var defaultOptions = {
download: {
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 = "".concat(fnName.charAt(0).toUpperCase()).concat(fnName.slice(1));
var reqTypeName = "IReq".concat(camelCaseName);
var resTypeName = "IRes".concat(camelCaseName);
return {
reqTypeName: reqTypeName,
resTypeName: resTypeName,
funcMain: "\n /**\n * \u63A5\u53E3\u540D\uFF1A".concat(params.funcDescription, "\n * Rap \u5730\u5740: ").concat(params.rapUrl, "?id=").concat(params.repositoryId, "&mod=").concat(params.moduleId, "&itf=").concat(params.interfaceId, "\n */\n export const ").concat(fnName, " = createFetch<").concat(reqTypeName, ", ").concat(resTypeName, ">('").concat(params.requestUrl, "', '").concat(params.requestMethod, "')\n "),
};
},
requestModule: function (params) {
return {
fileName: params.moduleDescription,
moduleHeader: "\n/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n\nimport instance from '@/utils/request'\n\nfunction 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",
};
},
},
rapper: {
apiUrl: 'http://rap2api.taobao.org/repository/get?id=284428&token=TTDNJ7gvXgy9R-9axC-7_mbi4ZxEPlp6',
rapUrl: 'http://rap2.taobao.org',
rapperPath: './src/actions',
tokenCookie: 'aliyungf_tc=f3a5915db08fc3b6de3ec5df0d0b3a5dc07c0b701e44cf4bf98a855799570bfe; koa.sid=2I353u8TTwtrHSdPXdJ9t8Mx5lTOeQFV; koa.sid.sig=D4vYLNcryQ8vcU4GkJJknTi_Fm8',
repositoryId: 284428,
},
upload: {
mode: 'type',
fileRegex: './src/actions/types/.*(js|jsx|ts|tsx)',
formatFunc: function (params) {
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,
interfaceId: matchInterfaceId ? Number(matchInterfaceId[1]) : null,
reqUrl: reqUrl,
reqMethod: reqMethod,
};
},
alias: {
'@': './src',
},
},
isUpload: true,
};
var _options = {};
_options.download = __assign(__assign({}, defaultOptions.download), (options.download || {}));
_options.upload = __assign(__assign({}, defaultOptions.upload), (options.upload || {}));
_options.isUpload =
typeof _options.isUpload === 'boolean'
? _options.isUpload
: defaultOptions.isUpload;
_options.rapper = __assign(__assign({}, defaultOptions.rapper), (options.rapper || {}));
_options.__completion = true;
var rootPath = (0, utils_1.searchRootPath)();
if (!rootPath) {
process.exit(1);
}
_options.rapper.rapperPath = path.resolve(rootPath, _options.rapper.rapperPath);
_options.upload.fileRegex = path.resolve(rootPath, _options.upload.fileRegex);
var alias = _options.upload.alias;
for (var v in alias) {
_options.upload.alias[v] = path.resolve(rootPath, alias[v]);
}
return _options;
}
function defineConfig(options, completion) {
if (completion === void 0) { completion = true; }
if (completion && options.__completion) {
return options;
}
return completionOptions(options);
}
exports.default = defineConfig;