// ==UserScript==
// @name YapiCopy
// @namespace http://tampermonkey.net/
// @version 0.4.10
// @description Yapi接口数据一键复制
// @author Enjoy
// @icon https://foruda.gitee.com/avatar/1698283059572409586/4867929_enjoy_li_1698283059.png!avatar200
// @match *://yapi.*.com/project/*/interface/api/*
// @exclude *localhost*
// @grant GM_addElement
// @grant GM_addStyle
// @grant GM_setClipboard
// @license GPL License
// @ES6+ =>ES5 https://babel.docschina.org/repl/
// ==/UserScript==
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 61:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var _typeof = (__webpack_require__(698)["default"]);
function _regeneratorRuntime() {
"use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
return e;
}, module.exports.__esModule = true, module.exports["default"] = module.exports;
var t,
e = {},
r = Object.prototype,
n = r.hasOwnProperty,
o = Object.defineProperty || function (t, e, r) {
t[e] = r.value;
},
i = "function" == typeof Symbol ? Symbol : {},
a = i.iterator || "@@iterator",
c = i.asyncIterator || "@@asyncIterator",
u = i.toStringTag || "@@toStringTag";
function define(t, e, r) {
return Object.defineProperty(t, e, {
value: r,
enumerable: !0,
configurable: !0,
writable: !0
}), t[e];
}
try {
define({}, "");
} catch (t) {
define = function define(t, e, r) {
return t[e] = r;
};
}
function wrap(t, e, r, n) {
var i = e && e.prototype instanceof Generator ? e : Generator,
a = Object.create(i.prototype),
c = new Context(n || []);
return o(a, "_invoke", {
value: makeInvokeMethod(t, r, c)
}), a;
}
function tryCatch(t, e, r) {
try {
return {
type: "normal",
arg: t.call(e, r)
};
} catch (t) {
return {
type: "throw",
arg: t
};
}
}
e.wrap = wrap;
var h = "suspendedStart",
l = "suspendedYield",
f = "executing",
s = "completed",
y = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
var p = {};
define(p, a, function () {
return this;
});
var d = Object.getPrototypeOf,
v = d && d(d(values([])));
v && v !== r && n.call(v, a) && (p = v);
var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
function defineIteratorMethods(t) {
["next", "throw", "return"].forEach(function (e) {
define(t, e, function (t) {
return this._invoke(e, t);
});
});
}
function AsyncIterator(t, e) {
function invoke(r, o, i, a) {
var c = tryCatch(t[r], t, o);
if ("throw" !== c.type) {
var u = c.arg,
h = u.value;
return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
invoke("next", t, i, a);
}, function (t) {
invoke("throw", t, i, a);
}) : e.resolve(h).then(function (t) {
u.value = t, i(u);
}, function (t) {
return invoke("throw", t, i, a);
});
}
a(c.arg);
}
var r;
o(this, "_invoke", {
value: function value(t, n) {
function callInvokeWithMethodAndArg() {
return new e(function (e, r) {
invoke(t, n, e, r);
});
}
return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
}
});
}
function makeInvokeMethod(e, r, n) {
var o = h;
return function (i, a) {
if (o === f) throw new Error("Generator is already running");
if (o === s) {
if ("throw" === i) throw a;
return {
value: t,
done: !0
};
}
for (n.method = i, n.arg = a;;) {
var c = n.delegate;
if (c) {
var u = maybeInvokeDelegate(c, n);
if (u) {
if (u === y) continue;
return u;
}
}
if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
if (o === h) throw o = s, n.arg;
n.dispatchException(n.arg);
} else "return" === n.method && n.abrupt("return", n.arg);
o = f;
var p = tryCatch(e, r, n);
if ("normal" === p.type) {
if (o = n.done ? s : l, p.arg === y) continue;
return {
value: p.arg,
done: n.done
};
}
"throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
}
};
}
function maybeInvokeDelegate(e, r) {
var n = r.method,
o = e.iterator[n];
if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
var i = tryCatch(o, e.iterator, r.arg);
if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
var a = i.arg;
return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
}
function pushTryEntry(t) {
var e = {
tryLoc: t[0]
};
1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
}
function resetTryEntry(t) {
var e = t.completion || {};
e.type = "normal", delete e.arg, t.completion = e;
}
function Context(t) {
this.tryEntries = [{
tryLoc: "root"
}], t.forEach(pushTryEntry, this), this.reset(!0);
}
function values(e) {
if (e || "" === e) {
var r = e[a];
if (r) return r.call(e);
if ("function" == typeof e.next) return e;
if (!isNaN(e.length)) {
var o = -1,
i = function next() {
for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
return next.value = t, next.done = !0, next;
};
return i.next = i;
}
}
throw new TypeError(_typeof(e) + " is not iterable");
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
value: GeneratorFunctionPrototype,
configurable: !0
}), o(GeneratorFunctionPrototype, "constructor", {
value: GeneratorFunction,
configurable: !0
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
var e = "function" == typeof t && t.constructor;
return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
}, e.mark = function (t) {
return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
}, e.awrap = function (t) {
return {
__await: t
};
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
return this;
}), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
void 0 === i && (i = Promise);
var a = new AsyncIterator(wrap(t, r, n, o), i);
return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
return t.done ? t.value : a.next();
});
}, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
return this;
}), define(g, "toString", function () {
return "[object Generator]";
}), e.keys = function (t) {
var e = Object(t),
r = [];
for (var n in e) r.push(n);
return r.reverse(), function next() {
for (; r.length;) {
var t = r.pop();
if (t in e) return next.value = t, next.done = !1, next;
}
return next.done = !0, next;
};
}, e.values = values, Context.prototype = {
constructor: Context,
reset: function reset(e) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
},
stop: function stop() {
this.done = !0;
var t = this.tryEntries[0].completion;
if ("throw" === t.type) throw t.arg;
return this.rval;
},
dispatchException: function dispatchException(e) {
if (this.done) throw e;
var r = this;
function handle(n, o) {
return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
}
for (var o = this.tryEntries.length - 1; o >= 0; --o) {
var i = this.tryEntries[o],
a = i.completion;
if ("root" === i.tryLoc) return handle("end");
if (i.tryLoc <= this.prev) {
var c = n.call(i, "catchLoc"),
u = n.call(i, "finallyLoc");
if (c && u) {
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
} else if (c) {
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
} else {
if (!u) throw new Error("try statement without catch or finally");
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
}
}
}
},
abrupt: function abrupt(t, e) {
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
var o = this.tryEntries[r];
if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
var i = o;
break;
}
}
i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
var a = i ? i.completion : {};
return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
},
complete: function complete(t, e) {
if ("throw" === t.type) throw t.arg;
return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
},
finish: function finish(t) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var r = this.tryEntries[e];
if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
}
},
"catch": function _catch(t) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var r = this.tryEntries[e];
if (r.tryLoc === t) {
var n = r.completion;
if ("throw" === n.type) {
var o = n.arg;
resetTryEntry(r);
}
return o;
}
}
throw new Error("illegal catch attempt");
},
delegateYield: function delegateYield(e, r, n) {
return this.delegate = {
iterator: values(e),
resultName: r,
nextLoc: n
}, "next" === this.method && (this.arg = t), y;
}
}, e;
}
module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 698:
/***/ ((module) => {
function _typeof(o) {
"@babel/helpers - typeof";
return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
}
module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 687:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// TODO(Babel 8): Remove this file.
var runtime = __webpack_require__(61)();
module.exports = runtime;
// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
try {
regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
if (typeof globalThis === "object") {
globalThis.regeneratorRuntime = runtime;
} else {
Function("r", "regeneratorRuntime = r")(runtime);
}
}
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
(() => {
"use strict";
;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function () {
var self = this,
args = arguments;
return new Promise(function (resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
// EXTERNAL MODULE: ./node_modules/@babel/runtime/regenerator/index.js
var regenerator = __webpack_require__(687);
var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator);
;// CONCATENATED MODULE: ./tools/GM.js
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
/** @描述 函数文档 https://www.tampermonkey.net/documentation.php#api:GM_addElement */
/**
* @description 创建element
* @export
* @param {*} tag
* @param {*} [options={}]
* @param {*} [win=window]
* @returns {*}
*/
function createElement(tag) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var win = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : window;
if (!win.GM_createElement) {
win.GM_createElement = GM_createElement;
}
return GM_createElement(tag, options);
/**
* @param {*} tag
* @param {*} options {
* idPrefix = `enjoy_${ENV_CRX}_${tag}`,
* el = 'html',
* autoInsert = true,
* randomType = 'single',
* id = '',
* addPrefix = true,
* insertType = tag === 'style' ? 'appendChild' : 'prepend',
* }
* @returns {*} dom
*/
function GM_createElement(tag, options) {
var _options$idPrefix = options.idPrefix,
idPrefix = _options$idPrefix === void 0 ? "enjoy_".concat("YapiCopy", "_").concat(tag, "_") : _options$idPrefix,
_options$el = options.el,
el = _options$el === void 0 ? 'html' : _options$el,
_options$autoInsert = options.autoInsert,
autoInsert = _options$autoInsert === void 0 ? true : _options$autoInsert,
_options$randomType = options.randomType,
randomType = _options$randomType === void 0 ? 'single' : _options$randomType,
_options$id = options.id,
id = _options$id === void 0 ? '' : _options$id,
_options$addPrefix = options.addPrefix,
addPrefix = _options$addPrefix === void 0 ? true : _options$addPrefix,
_options$insertType = options.insertType,
insertType = _options$insertType === void 0 ? tag === 'style' ? 'appendChild' : 'prepend' : _options$insertType;
if (addPrefix) {
id = "".concat(idPrefix).concat(id);
}
if (randomType !== 'single') {
id = "".concat(id, "_").concat(Math.floor(Math.random() * 1000));
}
options.id = id;
var dom = document.querySelector("#".concat(id));
if (!dom) {
dom = document.createElement(tag);
}
for (var key in options) {
if (Object.hasOwnProperty.call(options, key) && key !== 'el') {
dom[key] = options[key];
}
}
if (autoInsert) {
if (typeof el === 'string') {
el = document.querySelector(el);
}
//insertType prepend | appendChild
el[insertType](dom);
}
return dom;
}
}
/** @描述 是否匹配到目标url */
function isMatched() {
var urls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var currentUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : location.href;
if (typeof urls === 'string') {
urls = [urls];
}
return !!urls.find(function (regUrl) {
return new RegExp(regUrl).test(currentUrl);
});
}
function prependMetaUF8() {
return document.querySelector('meta[charset="UTF-8"]') || createElement('meta', {
charset: 'utf-8'
});
}
/**
* @description doCopy 复制文本到剪贴板
* @export
* @param {*} newValue
* @param {string} [selector='textarea']
*/
function doCopy(newValue) {
var _navigator;
var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'textarea';
if (document.hasFocus() && (_navigator = navigator) !== null && _navigator !== void 0 && (_navigator = _navigator.clipboard) !== null && _navigator !== void 0 && _navigator.writeText) {
// 读取剪贴板
// navigator.clipboard.readText().then((clipText) => {console.log('clipText=',clipText)})
// 写入剪贴板
navigator.clipboard.writeText(newValue)["catch"](function (err) {
return console.error("clipboard.writeText\uFF1A".concat(err));
});
return;
}
var textarea = createElement('textarea', {
el: 'body',
id: selector,
style: 'position: absolute;left: -500px;top: -500px;max-width: 50px;opacity: 0;'
});
textarea.value = newValue;
textarea.select();
setTimeout(function () {
document.execCommand('Copy');
}, 200);
}
/**
* 检测element元素的可见性,即 非display:none
* @param {*} element
* @returns {*} {Boolean}
*/
function checkVisibility(element) {
if (element.checkVisibility) {
return element.checkVisibility();
}
return !!element.offsetParent;
}
/**
* @description 创建element的提示
* @export
* @param {*} [options={}]
* @returns {*}
*/
function createElementTipFn() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$setTimeoutSt = options.setTimeoutStep,
setTimeoutStep = _options$setTimeoutSt === void 0 ? 1000 : _options$setTimeoutSt,
_options$backgroundCo = options.backgroundColors,
backgroundColors = _options$backgroundCo === void 0 ? {
warn: 'rgb(181 156 51 / 60%)',
success: 'rgb(3 113 3 / 60%)',
error: 'rgb(165 2 2 / 60%)',
info: 'rgb(67 62 62 / 60%)'
} : _options$backgroundCo,
_options$color = options.color,
color = _options$color === void 0 ? '#ffffff' : _options$color,
_options$opacity = options.opacity,
opacity = _options$opacity === void 0 ? 1 : _options$opacity;
var setTimeoutStamp = 0;
return function createElementTip() {
var configs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var content = configs.content,
e = configs.e,
_configs$type = configs.type,
type = _configs$type === void 0 ? 'info' : _configs$type,
_configs$tagType = configs.tagType,
tagType = _configs$tagType === void 0 ? 'span' : _configs$tagType;
if (!content) return;
console.log("content => %O ", content);
clearTimeout(setTimeoutStamp);
var contentDom = createElement(tagType, {
id: 'createElementTip',
innerText: content,
style: "\n font-size:14px;\n font-weight:600;\n color:".concat(color, ";\n position: fixed;\n left: ").concat(numbericalInterval(e.clientX - 46), "px;\n top: ").concat(numbericalInterval(e.clientY - 30, [5, window.innerHeight - 35]), "px;\n background-color:").concat(backgroundColors[type], ";\n opacity: ").concat(opacity, ";\n border-radius: 4px;\n padding: 4px 8px;\n box-shadow:0 0 5px 0 rgb(255 255 255 / 60%) inset;\n pointer-event:none;\n z-index:").concat((Math.floor(Date.now() / 1000) + '').slice(-5), ";\n ")
});
setTimeoutStamp = setTimeout(function () {
contentDom.remove();
}, setTimeoutStep);
};
}
/**
* @description dom是否可编辑
* @param {*} [dom=document.activeElement]
* @returns {*} {boolean}
*/
function isContentEditableOfDOM() {
var dom = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.activeElement;
var activeElement = dom;
if (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA' || activeElement.contenEditable === 'true') return true;
return false;
}
/**
* @description 数字区间
* @param {*} val
* @param {*} [interval=[10, window.innerWidth]]
* @returns {*}
*/
function numbericalInterval(val) {
var interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [5, window.innerWidth - 130];
var indexStart = interval[0];
var indexEnd = interval[1];
if (val < indexStart) return indexStart;
if (val > indexEnd) return indexEnd;
return val;
}
/**
* @description 可滚动的dom
* @param {*} dom
* @returns {*}
*/
function findHasScrollbarDom(dom) {
if (!(dom instanceof HTMLElement)) {
console.warn("\u53EF\u6EDA\u52A8\u7684dom\u51FD\u6570 findHasScrollbarDom:\u53C2\u6570dom\u5FC5\u987B\u4E3Aelement\u5143\u7D20 ");
return void 0;
}
while (dom) {
if (dom.offsetHeight < dom.scrollHeight && window.getComputedStyle(dom).overflowY !== 'visible') {
break;
}
dom = dom.parentElement;
}
if (!dom || dom === document.body) {
// 始终是 documentElement等同于window
dom = document.documentElement;
}
console.warn("\u9875\u9762\u6EDA\u52A8\u5143\u7D20\u7684tagName: ", dom.tagName.toLocaleLowerCase());
return dom;
}
/**
* @description 获取方法配置
* @param {string} [key='']
* @param {*} [defaultOpt={ includedUrls: [] }]
* @returns {*} {Object}
**/
function getSettingFromLocalStorage() {
var _localStorage, _localStorage2;
var fileName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var defaultOpt = arguments.length > 1 ? arguments[1] : undefined;
var mergedSettingOpt = _objectSpread({
runType: '0',
includedUrls: [],
excludeUrls: []
}, defaultOpt);
var fullSettingKey = "\uD83C\uDF1F_enjoy_setting";
var fullSettings = (_localStorage = localStorage) !== null && _localStorage !== void 0 && _localStorage[fullSettingKey] ? JSON.parse((_localStorage2 = localStorage) === null || _localStorage2 === void 0 ? void 0 : _localStorage2[fullSettingKey]) : {};
var SETTING = _objectSpread(_objectSpread({}, mergedSettingOpt), fullSettings === null || fullSettings === void 0 ? void 0 : fullSettings[fileName]);
fullSettings[fileName] = SETTING;
fullSettings.runTypeDest = undefined;
fullSettings.instructions = "\n\u4E00\u3001\u5339\u914D\u89C4\u5219\u4F18\u5148\u7EA7\uFF1Aruntype > * > excludedUrls > includedUrls\n\u4E8C\u3001runType\u662F\u9488\u5BF9\u5728\u5F53\u524D\u57DF\u540D\u89C4\u5219\uFF1A0(\u9ED8\u8BA4\u6267\u884C\u5339\u914D\u89C4\u5219)\uFF1B1(\u5F3A\u5236\u6267\u884C,\u5373\u8DF3\u8FC7\u5339\u914D\u89C4\u5219)\uFF1B2(\u4E0D\u6267\u884C)\n";
localStorage[fullSettingKey] = JSON.stringify(fullSettings || {});
return SETTING;
}
/**
* @description 是否执行该方法
* @param {*} [settingOpt={}]
* @returns {*} {Boolean}
*/
function isExcutableBySetting() {
var settingOpt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var runType = settingOpt.runType,
_settingOpt$excludeUr = settingOpt.excludeUrls,
excludeUrls = _settingOpt$excludeUr === void 0 ? [] : _settingOpt$excludeUr,
_settingOpt$includedU = settingOpt.includedUrls,
includedUrls = _settingOpt$includedU === void 0 ? [] : _settingOpt$includedU;
if (runType == '1') return true;
if (runType == '2') return false;
var HREF = location.href;
if (excludeUrls !== null && excludeUrls !== void 0 && excludeUrls.length && isMatched(excludeUrls, HREF)) {
return false;
}
if ((includedUrls === null || includedUrls === void 0 ? void 0 : includedUrls.length) === 0) return true;
var findOne = isMatched(includedUrls, HREF);
return !!findOne;
}
/**
* @description 是否不执行
* @param {*} fileName
* @param {*} settingOpt
* @returns {*} {Boolean}
*/
function codeIsNotExcutable(fileName, settingOpt) {
logSettingOptWithColor();
return !isExcutableBySetting(getSettingFromLocalStorage(fileName, settingOpt));
}
/**
* @description 彩色打印
* @param {string} [key='🌟_enjoy_setting']
*/
function logSettingOptWithColor(key) {
var dataKey = 'is-log-of-enjoy';
if (document.body.getAttribute(dataKey)) return;
document.body.setAttribute(dataKey, '1');
setTimeout(function () {
var _key;
(_key = key) !== null && _key !== void 0 ? _key : key = '🌟_enjoy_setting';
var SETTINGS = JSON.parse(localStorage[key] || '{}');
console.log("%c\uD83D\uDC47 ".concat(key, " \u8BBE\u7F6E\u53C2\u6570\uFF1A"), 'background:#4e0ab780;color:#fff;', '\n', SETTINGS, "\n\nkeyNameList:", Object.keys(SETTINGS));
console.log("%c\uD83D\uDC47\u81EA\u5B9A\u4E49\u914D\u7F6E\uFF0C\u4EE3\u7801\u5982\u4E0B\uFF1A", 'background:#4e0ab747;color:#fff;', "\n\u5F53\u524D\u57DF\u540D\u4E0B\u662F\u5426\u8FD0\u884C\u76F8\u5E94\u51FD\u6570,", "\n\u8BBE\u7F6ErunType(1\u3001\u5F3A\u5236\u8FD0\u884C\uFF1B2\u3001\u4E0D\u8FD0\u884C)\u3002", '\n\n', modifyRuntype.toString(), "\nmodifyRuntype('keyName',2)");
}, 3 * 1000);
}
/**
* @description 修改运行机制
* @export
* @param {*} keyName
* @param {*} runType
*/
function modifyRuntype(keyName, runType) {
var keyOfSETTINGS = '🌟_enjoy_setting';
var SETTINGS = JSON.parse(localStorage[keyOfSETTINGS] || '{}');
if (!SETTINGS[keyName]) return;
SETTINGS[keyName].runType = runType || 2;
localStorage[keyOfSETTINGS] = JSON.stringify(SETTINGS);
}
/**
* @description 查找特定条件的父级元素
* @param {*} dom
* @returns {*}
*/
function findParentElement(dom, callback) {
var defaultVal = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document.documentElement;
if (!(dom instanceof HTMLElement)) {
console.warn("\u67E5\u627E\u7279\u5B9A\u6761\u4EF6\u7684\u7236\u7EA7\u5143\u7D20\u51FD\u6570 findParentElement:\u53C2\u6570dom\u5FC5\u987B\u4E3Aelement\u5143\u7D20 ");
return void 0;
}
while (dom) {
if (callback(dom)) {
break;
}
dom = dom.parentElement;
}
if (!dom || dom === document.body) {
// 始终是 documentElement等同于window
dom = defaultVal;
}
return dom;
}
;// CONCATENATED MODULE: ./src/YapiCopy.js
run();
function run() {
createBtn();
window.cellecteParamsTxt = cellecteParamsTxt;
function createBtn() {
var btnDom = createElement('div', {
el: 'body',
insertType: 'appendChild',
innerHTML: "\n <div title='api \u4E00\u952E\u590D\u5236'>\uD83D\uDC26</div>\n <div title='params \u4E00\u952E\u590D\u5236'>\uD83D\uDC18</div>\n <div title='response \u4E00\u952E\u590D\u5236'>\uD83D\uDC1F</div>\n <style>\n #enjoy_YapiCopy_div_ {\n width: 24px;\n height: 105px;\n opacity: 0.4;\n background: #9bab9e;\n font-weight: 800;\n border-radius:0 5px 5px 0;\n cursor: pointer;\n color: #fff;\n transition: all 0.2s;\n font-size: 18px;\n position: fixed;\n left: 0;\n top: 50vh;\n font-size:12px;\n z-index: 1;\n }\n\n #enjoy_YapiCopy_div_:hover {\n opacity: 0.5;\n width: 35px;\n height: 105px;\n font-size:16px;\n }\n\n #enjoy_YapiCopy_div_>div {\n height: 35px;\n line-height: 35px;\n text-align: center;\n border-radius:0 5px 5px 0;\n transition: all 0.1s;\n }\n\n #enjoy_YapiCopy_div_>div:hover {\n background-color: #333333;\n font-size: 25px;\n }\n .caseContainer .ant-table-thead th{\n color:#333;\n font-weight:600;\n }\n body,\n .ant-table{\n color:#333;\n }\n </style>\n "
});
btnDom.addEventListener('click', /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/regenerator_default().mark(function _callee(e) {
return regenerator_default().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (!(e.target.title === 'api 一键复制')) {
_context.next = 4;
break;
}
doCopy(cellecteApiTxt());
_context.next = 17;
break;
case 4:
if (!(e.target.title === 'params 一键复制')) {
_context.next = 12;
break;
}
_context.t0 = doCopy;
_context.next = 8;
return cellecteParamsTxt('请求参数结构', 1);
case 8:
_context.t1 = _context.sent;
(0, _context.t0)(_context.t1);
_context.next = 17;
break;
case 12:
_context.t2 = doCopy;
_context.next = 15;
return cellecteParamsTxt('返回数据结构', 2);
case 15:
_context.t3 = _context.sent;
(0, _context.t2)(_context.t3);
case 17:
case "end":
return _context.stop();
}
}, _callee);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}());
}
function cellecteApiTxt() {
var _values$, _values$2;
var desc = document.querySelector('.colName').innerText || '';
var dirName = document.querySelector('.remark>.colValue').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 templateDesc = "\n * @param {Object} params";
var templateParams = "params, ";
var templateParams2 = "{ params, ...config }";
if (method === 'post') {
templateDesc = "\n * @param {Object} data";
templateParams = "data, ";
templateParams2 = "data, { ...config }";
}
var template = "\n/**\n * ".concat(dirName, " / ").concat(desc).concat(templateDesc, "\n * @param {Object} config\n * @returns {Promise<ResponseData>}\n * @see ").concat(decodeURIComponent(pageUrl), "\n */\nexport function ").concat(apiUrl.replace(/^.*\//, ''), "(").concat(templateParams, "config) {\n return http.").concat(method, "('").concat(apiUrl, "',").concat(templateParams2, ")\n}\n");
console.log(template);
return template;
}
function expandCell(_x2) {
return _expandCell.apply(this, arguments);
}
function _expandCell() {
_expandCell = _asyncToGenerator( /*#__PURE__*/regenerator_default().mark(function _callee2(tableDom) {
var collapsed;
return regenerator_default().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
collapsed = _toConsumableArray(tableDom.querySelectorAll('.ant-table-row-collapsed'));
collapsed.forEach(function (item) {
item.click();
});
_context2.next = 4;
return new Promise(function (resolve) {
setTimeout(resolve, 200);
});
case 4:
return _context2.abrupt("return", _context2.sent);
case 5:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return _expandCell.apply(this, arguments);
}
function cellecteParamsTxt() {
return _cellecteParamsTxt.apply(this, arguments);
}
/**
* @description 获取某列所有单元格的内容
* @param {*} tableDom
* @param {*} selectorIndex
* @returns {*}
*/
function _cellecteParamsTxt() {
_cellecteParamsTxt = _asyncToGenerator( /*#__PURE__*/regenerator_default().mark(function _callee3() {
var _document$querySelect;
var desc,
index,
tableDom,
keys,
values,
remarks,
maps,
temp,
tagStack,
template,
_args3 = arguments;
return regenerator_default().wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
desc = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : '参数说明';
index = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : 1;
tableDom = (_document$querySelect = document.querySelectorAll('table')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect[index];
if (tableDom) {
_context3.next = 5;
break;
}
return _context3.abrupt("return", '');
case 5:
_context3.next = 7;
return expandCell(tableDom);
case 7:
keys = getCellContent(tableDom, 1);
values = getCellContent(tableDom, 2);
remarks = getCellContent(tableDom, 5);
maps = {
integer: '0',
string: "''",
"boolean": 'true',
object: '{}',
'integer []': '[]',
'string []': '[]',
'object []': '[{}]'
};
temp = '\n';
tagStack = [];
keys.forEach(function (item, idx) {
if (!item) return;
var valStart = '';
var flag = maps[values[idx]];
if (item.includes('<<')) {
valStart = flag.slice(0, flag.length / 2);
tagStack.push(flag.slice(-1 * flag.length / 2) + ',\n');
flag = valStart ? valStart : flag + ',';
item = "".concat(getRemarkWithoutExtraSpan(remarks[idx], true)).concat(item.replace('<<', ''));
remarks[idx] = '';
} else if (item.includes('>>')) {
item = "".concat(tagStack.pop()).concat(getRemarkWithoutExtraSpan(remarks[idx], true)).concat(item.replace('>>', ''));
remarks[idx] = '';
flag = flag + ',';
} else {
flag = flag + ',';
}
temp += "".concat(item, ": ").concat(flag, " ").concat(getRemarkWithoutExtraSpan(remarks[idx], false), "\n");
});
while (tagStack.length) {
temp += tagStack.pop();
}
template = "// ".concat(desc, "\nconst ").concat(desc.includes('参数') ? 'data' : 'res', " = {").concat(temp, "}");
console.log(template);
return _context3.abrupt("return", template);
case 18:
case "end":
return _context3.stop();
}
}, _callee3);
}));
return _cellecteParamsTxt.apply(this, arguments);
}
function getCellContent(tableDom, selectorIndex) {
var levelStack = [];
var classPrefix = 'ant-table-row-indent indent-level-';
var res = _toConsumableArray(tableDom.querySelectorAll("tbody td:nth-child(".concat(selectorIndex, ")"))).map(function (item) {
var text = item.innerText || '';
var childNodes = item.childNodes;
var extraStrStart = '';
if (selectorIndex === 1) {
var _childNodes$, _childNodes$2;
if ((_childNodes$ = childNodes[1]) !== null && _childNodes$ !== void 0 && (_childNodes$ = _childNodes$.classList) !== null && _childNodes$ !== void 0 && (_childNodes$ = _childNodes$.value) !== null && _childNodes$ !== void 0 && _childNodes$.includes('ant-table-row-expanded')) {
extraStrStart = '<<';
levelStack.push(childNodes[0].classList.value.replace(new RegExp("".concat(classPrefix, "(\\d+)"), 'g'), '$1'));
} else if (levelStack.length && (_childNodes$2 = childNodes[0]) !== null && _childNodes$2 !== void 0 && (_childNodes$2 = _childNodes$2.classList) !== null && _childNodes$2 !== void 0 && _childNodes$2.value.includes(levelStack.at(-1))) {
extraStrStart = '>>';
levelStack.pop();
}
}
return extraStrStart + text || '';
});
return res;
}
/**
* @description 获取备注,并去除不必要的空格
* @param {*} remark
* @param {boolean} [endWithWrap=false]
* @returns {*}
*/
function getRemarkWithoutExtraSpan(remark) {
var endWithWrap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var str = '';
if (remark) {
var _remark, _remark2;
remark = (_remark = remark) === null || _remark === void 0 ? void 0 : _remark.replace(/[ \t\v\r\f]+/g, ' ');
if ((_remark2 = remark) !== null && _remark2 !== void 0 && _remark2.includes('\n') && remark.length > 120) {
str = "/* ".concat(remark, " */");
} else {
str = "// ".concat(remark.replace(/\s+/g, ' '));
}
if (endWithWrap) {
str = "".concat(str, "\n");
}
}
return str;
}
}
})();
/******/ })()
;