Yapi接口数据一键复制
目前為
// ==UserScript==
// @name YapiCopy
// @namespace http://tampermonkey.net/
// @version 0.1.5
// @description Yapi接口数据一键复制
// @author Enjoy
// @icon https://foruda.gitee.com/avatar/1671100286067517749/4867929_enjoy_li_1671100285.png!avatar60
// @match *://yapi.*.com/project/*/interface/api/*
// @grant GM_addElement
// @grant GM_addStyle
// @grant GM_setClipboard
// @license GPL License
// ==/UserScript==
run(document);
function run(document) {
createBtn();
return;
function cellecteData() {
var _values$, _values$2;
var dataInnerText = document.querySelectorAll('table tbody')[1].innerText || '';
var dataStr = formatParamsStr(dataInnerText);
var desc = document.querySelector('.colName').innerText || '';
var pageUrl = location.href;
var values = document.querySelectorAll('.colValue');
var method = ((_values$ = values[3]) === null || _values$ === void 0 ? void 0 : _values$.innerText.toLocaleLowerCase()) || '';
var apiUrl = ((_values$2 = values[4]) === null || _values$2 === void 0 ? void 0 : _values$2.innerText) || '';
var template = "\n /* // \u53C2\u6570\u8BF4\u660E\n let data = { ".concat(dataStr, "\n }\n */\n\n /**\n * @description ").concat(desc, "\n * @see ").concat(pageUrl, "\n * @param { data } data\n */\n export function ").concat(apiUrl.replace(/^.*\//, ''), " (data) {\n return http.").concat(method, "('").concat(apiUrl, "',data)\n }");
return template;
}
function formatParamsStr(dataStr) {
;
['\n', '非必须', '必须', 'format: int32', '\t'].forEach(function (item) {
dataStr = dataStr.replace(new RegExp(item, 'g'), '');
});
['integer', 'string'].forEach(function (item) {
dataStr = dataStr.replace(new RegExp(item, 'g'), ":'".concat(item, "',// "));
});
dataStr = dataStr.replace(/([a-zA-Z]+:['a-zA-Z]+,\/\/)/g, '\n $1');
return dataStr;
}
function createBtn() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$selector = options.selector,
selector = _options$selector === void 0 ? 'yapiShuctCopy' : _options$selector;
var btnDom = document.querySelector("#".concat(selector));
if (btnDom) return btnDom;
btnDom = document.createElement('div');
btnDom.innerHTML = "\n \uF0C5\n <style>\n #yapiShuctCopy {\n width: 20px;\n height: 35px;\n opacity: 0.2;\n background: #0b7d1e;\n font-weight: 800;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 35px 0 0 35px;\n cursor: pointer;\n color: #fff;\n transition: all 0.2s;\n font-size: 18px;\n position: fixed;\n right: 0;\n top: 50vh;\n }\n\n #yapiShuctCopy:hover {\n opacity: 0.5;\n width: 35px;\n }\n ";
btnDom.setAttribute('id', selector);
btnDom.setAttribute('title', '一键复制');
// btnDom.style.cssText = ''
document.body.appendChild(btnDom);
btnDom.addEventListener('click', function () {
doCopy(cellecteData());
});
}
function doCopy(newValue) {
var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'textarea';
var textarea = document.querySelector("#".concat(selector));
if (!textarea) {
textarea = document.createElement('textarea');
textarea.style.cssText = 'position: absolute;left: -500px;top: -500px;max-width: 50px;opacity: 0;';
document.body.appendChild(textarea);
}
textarea.value = newValue;
textarea.select();
setTimeout(function () {
document.execCommand('Copy');
}, 200);
}
}