@antmjs/rapper
Version:
rapper, use http api as a function
148 lines (147 loc) • 5.54 kB
JavaScript
;
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;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.findRapperVersion = exports.findChangeFiles = exports.findDeleteFiles = exports.getFiles = void 0;
var fs = __importStar(require("fs"));
var path = __importStar(require("path"));
var path_1 = require("path");
var chalk_1 = __importDefault(require("chalk"));
var utils_1 = require("../utils");
function getFiles(parentPath) {
var fileList = [];
if (parentPath.indexOf('/.') > -1 ||
parentPath.indexOf('node_modules') > -1) {
return fileList;
}
var files = [];
try {
files = fs.readdirSync(parentPath);
}
catch (err) {
throw new Error('文件夹不存在,请检查config配置');
}
files.forEach(function (item) {
item = path.join(parentPath, item);
if (item.indexOf('src') < 0) {
return;
}
var stat = fs.statSync(item);
try {
if (stat.isDirectory()) {
fileList = fileList.concat(getFiles(item));
}
else if (stat.isFile()) {
fileList.push(item);
}
}
catch (error) {
console.log(chalk_1.default.red("rapper: Rap \u63A5\u53E3\u5F15\u7528\u626B\u63CF\u5931\u8D25, ".concat(error)));
}
});
return fileList;
}
exports.getFiles = getFiles;
function isFileChange(contentArr) {
var matchMD5 = contentArr[0].match(/\/\*\smd5:\s(\S*)\s\*\//) || [];
var oldMD5 = matchMD5[1];
if (!oldMD5) {
return false;
}
return oldMD5 !== (0, utils_1.getMd5)(contentArr.slice(1).join('\n'));
}
function scanAllfiles(interfaces, fileList) {
var strReg = /[\'\"]+(GET|POST|PUT|DELETE|OPTIONS|PATCH|HEAD)\/([^\'\"]*)[^(REQUEST)(SUCCESS)(FAILURE)]{1}[\'\"]+/g;
var result = [];
fileList.forEach(function (filePath) {
var extName = path.extname(filePath);
if (!['.ts', '.js', '.vue', '.es'].includes(extName)) {
return;
}
var content = fs.readFileSync(filePath, 'utf-8') || '';
content.split('\n').forEach(function (rowText, i) {
var regResult = rowText.match(strReg);
if (regResult && regResult.length > 0) {
regResult.forEach(function (item) {
item = item.replace(/\'|\"/gi, '');
var isExist = !!interfaces.find(function (_a) {
var modelName = _a.modelName;
return modelName === item;
});
if (!isExist) {
result.push({
key: item,
filePath: (0, path_1.resolve)(process.cwd(), filePath),
start: rowText.indexOf(item),
line: i + 1,
});
}
});
}
});
return false;
});
return result;
}
function findDeleteFiles(interfaces, excludePaths) {
var fileList = getFiles('./');
fileList = fileList.filter(function (file) {
file = (0, path_1.resolve)(process.cwd(), file);
return !excludePaths.find(function (exclude) { return file.indexOf((0, path_1.resolve)(process.cwd(), exclude)) > -1; });
});
return scanAllfiles(interfaces, fileList);
}
exports.findDeleteFiles = findDeleteFiles;
function findChangeFiles(rapperPath) {
var fileList = getFiles(rapperPath);
var changeList = [];
fileList.forEach(function (filePath) {
var content = fs.readFileSync(filePath, 'utf-8') || '';
if (isFileChange(content.split(/\r|\n|\r\n/))) {
changeList.push((0, path_1.resolve)(process.cwd(), filePath));
}
});
return changeList;
}
exports.findChangeFiles = findChangeFiles;
function findRapperVersion(rapperPath) {
var version = '';
try {
var content = fs.readFileSync("".concat(rapperPath, "/index.ts"), 'utf-8') || '';
var contentArr = content.split(/\r|\n|\r\n/);
if (contentArr.length) {
var matchMD5 = contentArr
.slice(0, 6)
.join('\n')
.match(/\/\*\sRapper版本:\s(\S*)\s\*\//) || [];
version = matchMD5[1];
}
}
catch (err) { }
return version;
}
exports.findRapperVersion = findRapperVersion;